From 71fe122d365d21cbc3b2dcaa303265acb9d3c7e4 Mon Sep 17 00:00:00 2001 From: noiach Date: Tue, 27 Oct 2020 09:57:32 +1100 Subject: [PATCH 01/13] feat: added DarknodeRewards.sol draft --- .../DarknodePaymentMigration.sol | 3 + contracts/DarknodeRewards/DarknodeRewards.sol | 428 ++++++++++++++++++ 2 files changed, 431 insertions(+) create mode 100644 contracts/DarknodeRewards/DarknodePaymentMigration.sol create mode 100644 contracts/DarknodeRewards/DarknodeRewards.sol diff --git a/contracts/DarknodeRewards/DarknodePaymentMigration.sol b/contracts/DarknodeRewards/DarknodePaymentMigration.sol new file mode 100644 index 00000000..6a18656c --- /dev/null +++ b/contracts/DarknodeRewards/DarknodePaymentMigration.sol @@ -0,0 +1,3 @@ +pragma solidity 0.5.16; + +contract DarknodePaymentMigration {} diff --git a/contracts/DarknodeRewards/DarknodeRewards.sol b/contracts/DarknodeRewards/DarknodeRewards.sol new file mode 100644 index 00000000..26a03915 --- /dev/null +++ b/contracts/DarknodeRewards/DarknodeRewards.sol @@ -0,0 +1,428 @@ +pragma solidity 0.5.16; + +import "@openzeppelin/upgrades/contracts/Initializable.sol"; +import "@openzeppelin/contracts-ethereum-package/contracts/math/SafeMath.sol"; +import "@openzeppelin/upgrades/contracts/upgradeability/InitializableAdminUpgradeabilityProxy.sol"; + +import "../Governance/Claimable.sol"; +import "../libraries/String.sol"; +import "../libraries/CanReclaimTokens.sol"; +import "../DarknodeRegistry/DarknodeRegistry.sol"; + +contract DarknodeRewardsStateV1 { + /// @notice The special address for Ether. + address + public constant ETHEREUM = 0xEeeeeEeeeEeEeeEeEeEeeEEEeeeeEeeeeeeeEEeE; + + DarknodeRegistryLogicV1 public darknodeRegistry; // Passed in as a constructor parameter. + + /// @notice The address that can call changeCycle() + // This defaults to the owner but should be changed to the DarknodeRegistry. + address public cycleChanger; + + /// @notice Mapping from token -> amount. + /// The amount of rewards allocated for all darknodes to claim into + /// their account. + mapping(address => uint256) public unclaimedRewards; + + /// @notice Mapping from token -> amount. + /// The total amount of tokens allocated for each darknode in the + /// previous cycle. + mapping(address => uint256) public tokenLastRewardShare; + + /// @notice Mapping from token -> amount. + /// The total amount of tokens allocated for each darknode. + mapping(address => uint256) public tokenRewardShareSum; + + /// @notice Mapping of token -> lockedAmount. + mapping(address => uint256) public lockedBalances; + + /// @notice Mapping from darknode -> token -> amount. + /// The last snapshot the darknode + mapping(address => mapping(address => uint256)) public darknodeLastClaimed; + + /// @notice The list of tokens that will be registered next cycle. + /// We only update the shareCount at the change of cycle to + /// prevent the number of shares from changing. + address[] public pendingTokens; + + /// @notice The list of tokens which are already registered and rewards can + /// be claimed for. + address[] public registeredTokens; + + /// @notice Mapping from token -> index. Index starts from 1. 0 means not in + /// list. + mapping(address => uint256) public registeredTokenIndex; + + /// @notice The current cycle payout percentage to the darknodes. + uint256 public currentCyclePayoutPercent; + + /// @notice The staged payout percentage to the darknodes per cycle. + uint256 public nextCyclePayoutPercent; +} + +contract DarknodeRewardsLogicV1_TokenRegistry is + Ownable, + DarknodeRewardsStateV1 +{ + using SafeMath for uint256; + + /// @notice Emitted when a new token is registered. + /// @param _token The token that was registered. + event LogTokenRegistered(address indexed _token); + + /// @notice Emitted when a token is deregistered. + /// @param _token The token that was deregistered. + event LogTokenDeregistered(address indexed _token); + + /// @notice Adds tokens to be payable. Registration is pending until next + /// cycle. + /// + /// @param _token The address of the token to be registered. + function registerToken(address _token) external onlyOwner { + require( + registeredTokenIndex[_token] == 0, + "DarknodePayment: token already registered" + ); + require( + !tokenPendingRegistration(_token), + "DarknodePayment: token already pending registration" + ); + pendingTokens.push(_token); + } + + function tokenPendingRegistration(address _token) + public + view + returns (bool) + { + uint256 arrayLength = pendingTokens.length; + for (uint256 i = 0; i < arrayLength; i++) { + if (pendingTokens[i] == _token) { + return true; + } + } + return false; + } + + /// @notice Removes a token from the list of supported tokens. + /// Deregistration is pending until next cycle. + /// + /// @param _token The address of the token to be deregistered. + function deregisterToken(address _token) external onlyOwner { + require( + registeredTokenIndex[_token] > 0, + "DarknodePayment: token not registered" + ); + _deregisterToken(_token); + } + + /// @notice Updates the list of registeredTokens adding tokens that are to be registered. + /// The list of tokens that are pending registration are emptied afterwards. + function _updateTokenList() internal { + // Register tokens + uint256 arrayLength = pendingTokens.length; + for (uint256 i = 0; i < arrayLength; i++) { + address token = pendingTokens[i]; + registeredTokens.push(token); + registeredTokenIndex[token] = registeredTokens.length; + emit LogTokenRegistered(token); + } + pendingTokens.length = 0; + } + + /// @notice Deregisters a token, removing it from the list of + /// registeredTokens. + /// + /// @param _token The address of the token to deregister. + function _deregisterToken(address _token) private { + address lastToken = registeredTokens[registeredTokens.length.sub( + 1, + "DarknodePayment: no tokens registered" + )]; + uint256 deletedTokenIndex = registeredTokenIndex[_token].sub(1); + // Move the last token to _token's position and update it's index + registeredTokens[deletedTokenIndex] = lastToken; + registeredTokenIndex[lastToken] = registeredTokenIndex[_token]; + // Decreasing the length will clean up the storage for us + // So we don't need to manually delete the element + registeredTokens.pop(); + registeredTokenIndex[_token] = 0; + + emit LogTokenDeregistered(_token); + } +} + +contract DarknodeRewardsLogicV1_CycleTracker is + Ownable, + DarknodeRewardsStateV1, + DarknodeRewardsLogicV1_TokenRegistry +{ + using SafeMath for uint256; + + /// @notice Emitted when the CycleChanger address changes. + /// @param _newCycleChanger The new CycleChanger. + /// @param _oldCycleChanger The old CycleChanger. + event LogCycleChangerChanged( + address indexed _newCycleChanger, + address indexed _oldCycleChanger + ); + + /// @notice Restrict a function to be called by cycleChanger. + modifier onlyCycleChanger { + require( + msg.sender == cycleChanger, + "DarknodePayment: not cycle changer" + ); + _; + } + + /// @notice Updates the CycleChanger contract address. + /// + /// @param _addr The new CycleChanger contract address. + function updateCycleChanger(address _addr) external onlyOwner { + require( + _addr != address(0), + "DarknodePayment: invalid contract address" + ); + emit LogCycleChangerChanged(_addr, cycleChanger); + cycleChanger = _addr; + } + + /// @notice Get the total balance of the contract for a particular token. + /// + /// @param _token The token to check balance of. + /// @return The total balance of the contract. + function totalBalance(address _token) public view returns (uint256) { + if (_token == ETHEREUM) { + return address(this).balance; + } else { + return ERC20(_token).balanceOf(address(this)); + } + } + + /// @notice Get the available balance of the contract for a particular token + /// This is the free amount which has not yet been allocated to + /// darknodes. + /// + /// @param _token The token to check balance of. + /// @return The available balance of the contract. + function availableBalance(address _token) public view returns (uint256) { + return + totalBalance(_token).sub( + lockedBalances[_token], + "DarknodeRewards: locked balance exceed total balance" + ); + } + + /// @notice Changes the current cycle. + function changeCycle() external onlyCycleChanger returns (uint256) { + // Snapshot balances for the past cycle. + uint256 arrayLength = registeredTokens.length; + for (uint256 i = 0; i < arrayLength; i++) { + _snapshotBalance(registeredTokens[i]); + } + + currentCyclePayoutPercent = nextCyclePayoutPercent; + + // Update the list of registeredTokens. + DarknodeRewardsLogicV1_TokenRegistry._updateTokenList(); + } + + /// @notice Snapshots the current balance of the tokens, for all registered + /// tokens. + /// + /// @param _token The address the token to snapshot. + function _snapshotBalance(address _token) private { + uint256 shareCount = darknodeRegistry.numDarknodesPreviousEpoch(); + if (shareCount == 0) { + unclaimedRewards[_token] = 0; + tokenLastRewardShare[_token] = 0; + } else { + // Lock up the current balance for darknode reward allocation + uint256 total = availableBalance(_token); + unclaimedRewards[_token] = total.div(100).mul( + currentCyclePayoutPercent + ); + tokenLastRewardShare[_token] = unclaimedRewards[_token].div( + shareCount + ); + } + } +} + +contract DarknodeRewardsLogicV1_Withdraws is Ownable, DarknodeRewardsStateV1 { + using SafeMath for uint256; + using SafeERC20 for ERC20; + + /// @notice Emitted when the DarknodeRegistry is updated. + /// @param _previousDarknodeRegistry The address of the old registry. + /// @param _nextDarknodeRegistry The address of the new registry. + event LogDarknodeRegistryUpdated( + DarknodeRegistryLogicV1 indexed _previousDarknodeRegistry, + DarknodeRegistryLogicV1 indexed _nextDarknodeRegistry + ); + + /// @notice Emitted when a darknode claims their share of reward. + /// @param _darknode The darknode which claimed. + /// @param _cycle The cycle that the darknode claimed for. + event LogDarknodeClaim(address indexed _darknode, uint256 _cycle); + + /// @notice Emitted when a darknode calls withdraw. + /// @param _darknodeOperator The address of the darknode's operator. + /// @param _darknodeID The address of the darknode which withdrew. + /// @param _value The amount of DAI withdrawn. + /// @param _token The address of the token that was withdrawn. + event LogDarknodeWithdrew( + address indexed _darknodeOperator, + address indexed _darknodeID, + address indexed _token, + uint256 _value + ); + + /// @notice Allows the contract owner to update the address of the + /// darknode registry contract. + /// @param _darknodeRegistry The address of the Darknode Registry + /// contract. + function updateDarknodeRegistry(DarknodeRegistryLogicV1 _darknodeRegistry) + external + onlyOwner + { + require( + address(_darknodeRegistry) != address(0x0), + "DarknodePayment: invalid Darknode Registry address" + ); + DarknodeRegistryLogicV1 previousDarknodeRegistry = darknodeRegistry; + darknodeRegistry = _darknodeRegistry; + emit LogDarknodeRegistryUpdated( + previousDarknodeRegistry, + darknodeRegistry + ); + } + + /// @notice Transfers an amount out of balance to a specified address. + /// + /// @param _token Which token to transfer. + /// @param _amount The amount to transfer. + /// @param _recipient The address to withdraw it to. + function transfer( + address _token, + uint256 _amount, + address payable _recipient + ) internal { + if (_token == ETHEREUM) { + _recipient.transfer(_amount); + } else { + ERC20(_token).safeTransfer(_recipient, _amount); + } + } + + /// @notice Transfers the funds allocated to the darknode to the darknode + /// owner. + /// + /// @param _darknode The address of the darknode. + /// @param _token Which token to transfer. + function withdraw(address _darknode, address _token) public { + address payable darknodeOperator = darknodeRegistry.getDarknodeOperator( + _darknode + ); + require( + darknodeOperator != address(0x0), + "DarknodePayment: invalid darknode owner" + ); + + // + if (darknodeLastClaimed[_darknode][_token] == 0) { + darknodeLastClaimed[_darknode][_token] = tokenRewardShareSum[_token]; + } + + uint256 amount = tokenRewardShareSum[_token].sub( + darknodeLastClaimed[_darknode][_token] + ); + + darknodeLastClaimed[_darknode][_token] = tokenRewardShareSum[_token]; + + // Skip if amount is zero. + if (amount > 0) { + lockedBalances[_token] = lockedBalances[_token].sub( + amount, + "DarknodeRewards: insufficient token balance for transfer" + ); + + transfer(_token, amount, darknodeOperator); + emit LogDarknodeWithdrew( + darknodeOperator, + _darknode, + _token, + amount + ); + } + } + + function withdrawMultiple( + address[] calldata _darknodes, + address[] calldata _tokens + ) external { + for (uint256 i = 0; i < _darknodes.length; i++) { + for (uint256 j = 0; j < _tokens.length; j++) { + withdraw(_darknodes[i], _tokens[j]); + } + } + } +} + +/// @notice Gateway handles verifying mint and burn requests. A mintAuthority +/// approves new assets to be minted by providing a digital signature. An owner +/// of an asset can request for it to be burnt. +contract DarknodeRewardsLogicV1 is + Initializable, + Claimable, + DarknodeRewardsStateV1, + DarknodeRewardsLogicV1_TokenRegistry, + DarknodeRewardsLogicV1_CycleTracker, + DarknodeRewardsLogicV1_Withdraws +{ + using SafeMath for uint256; + using SafeERC20 for ERC20; + + /// @notice Emitted when someone pays the DarknodePayment contract. + /// @param _payer The darknode which claimed. + /// @param _amount The cycle that the darknode claimed for. + /// @param _token The address of the token that was transferred. + event LogPaymentReceived( + address indexed _payer, + address indexed _token, + uint256 _amount + ); + + /// @notice Emitted when the payout percent changes. + /// @param _newPercent The new percent. + /// @param _oldPercent The old percent. + event LogPayoutPercentChanged(uint256 _newPercent, uint256 _oldPercent); + + function initialize( + DarknodeRegistryLogicV1 _darknodeRegistry, + uint256 _cyclePayoutPercent + ) public initializer { + Claimable.initialize(msg.sender); + darknodeRegistry = _darknodeRegistry; + + nextCyclePayoutPercent = _cyclePayoutPercent; + cycleChanger = msg.sender; + currentCyclePayoutPercent = nextCyclePayoutPercent; + } + + /// @notice Forward all payments to the DarknodePaymentStore. + function() external payable { + require( + registeredTokenIndex[ETHEREUM] > 0, + "DarknodePayment: token not registered" + ); + emit LogPaymentReceived(msg.sender, ETHEREUM, msg.value); + } +} + +/* solium-disable-next-line no-empty-blocks */ +contract DarknodeRewardsProxy is InitializableAdminUpgradeabilityProxy { + +} From 2d10aae4416001f4024662942f48057027b4fa4f Mon Sep 17 00:00:00 2001 From: noiach Date: Wed, 17 Mar 2021 21:46:46 +1100 Subject: [PATCH 02/13] feat: removed darknode payment contract --- .../DarknodePaymentMigration.sol | 3 - contracts/DarknodeRewards/DarknodeRewards.sol | 428 ------------------ 2 files changed, 431 deletions(-) delete mode 100644 contracts/DarknodeRewards/DarknodePaymentMigration.sol delete mode 100644 contracts/DarknodeRewards/DarknodeRewards.sol diff --git a/contracts/DarknodeRewards/DarknodePaymentMigration.sol b/contracts/DarknodeRewards/DarknodePaymentMigration.sol deleted file mode 100644 index 6a18656c..00000000 --- a/contracts/DarknodeRewards/DarknodePaymentMigration.sol +++ /dev/null @@ -1,3 +0,0 @@ -pragma solidity 0.5.16; - -contract DarknodePaymentMigration {} diff --git a/contracts/DarknodeRewards/DarknodeRewards.sol b/contracts/DarknodeRewards/DarknodeRewards.sol deleted file mode 100644 index 26a03915..00000000 --- a/contracts/DarknodeRewards/DarknodeRewards.sol +++ /dev/null @@ -1,428 +0,0 @@ -pragma solidity 0.5.16; - -import "@openzeppelin/upgrades/contracts/Initializable.sol"; -import "@openzeppelin/contracts-ethereum-package/contracts/math/SafeMath.sol"; -import "@openzeppelin/upgrades/contracts/upgradeability/InitializableAdminUpgradeabilityProxy.sol"; - -import "../Governance/Claimable.sol"; -import "../libraries/String.sol"; -import "../libraries/CanReclaimTokens.sol"; -import "../DarknodeRegistry/DarknodeRegistry.sol"; - -contract DarknodeRewardsStateV1 { - /// @notice The special address for Ether. - address - public constant ETHEREUM = 0xEeeeeEeeeEeEeeEeEeEeeEEEeeeeEeeeeeeeEEeE; - - DarknodeRegistryLogicV1 public darknodeRegistry; // Passed in as a constructor parameter. - - /// @notice The address that can call changeCycle() - // This defaults to the owner but should be changed to the DarknodeRegistry. - address public cycleChanger; - - /// @notice Mapping from token -> amount. - /// The amount of rewards allocated for all darknodes to claim into - /// their account. - mapping(address => uint256) public unclaimedRewards; - - /// @notice Mapping from token -> amount. - /// The total amount of tokens allocated for each darknode in the - /// previous cycle. - mapping(address => uint256) public tokenLastRewardShare; - - /// @notice Mapping from token -> amount. - /// The total amount of tokens allocated for each darknode. - mapping(address => uint256) public tokenRewardShareSum; - - /// @notice Mapping of token -> lockedAmount. - mapping(address => uint256) public lockedBalances; - - /// @notice Mapping from darknode -> token -> amount. - /// The last snapshot the darknode - mapping(address => mapping(address => uint256)) public darknodeLastClaimed; - - /// @notice The list of tokens that will be registered next cycle. - /// We only update the shareCount at the change of cycle to - /// prevent the number of shares from changing. - address[] public pendingTokens; - - /// @notice The list of tokens which are already registered and rewards can - /// be claimed for. - address[] public registeredTokens; - - /// @notice Mapping from token -> index. Index starts from 1. 0 means not in - /// list. - mapping(address => uint256) public registeredTokenIndex; - - /// @notice The current cycle payout percentage to the darknodes. - uint256 public currentCyclePayoutPercent; - - /// @notice The staged payout percentage to the darknodes per cycle. - uint256 public nextCyclePayoutPercent; -} - -contract DarknodeRewardsLogicV1_TokenRegistry is - Ownable, - DarknodeRewardsStateV1 -{ - using SafeMath for uint256; - - /// @notice Emitted when a new token is registered. - /// @param _token The token that was registered. - event LogTokenRegistered(address indexed _token); - - /// @notice Emitted when a token is deregistered. - /// @param _token The token that was deregistered. - event LogTokenDeregistered(address indexed _token); - - /// @notice Adds tokens to be payable. Registration is pending until next - /// cycle. - /// - /// @param _token The address of the token to be registered. - function registerToken(address _token) external onlyOwner { - require( - registeredTokenIndex[_token] == 0, - "DarknodePayment: token already registered" - ); - require( - !tokenPendingRegistration(_token), - "DarknodePayment: token already pending registration" - ); - pendingTokens.push(_token); - } - - function tokenPendingRegistration(address _token) - public - view - returns (bool) - { - uint256 arrayLength = pendingTokens.length; - for (uint256 i = 0; i < arrayLength; i++) { - if (pendingTokens[i] == _token) { - return true; - } - } - return false; - } - - /// @notice Removes a token from the list of supported tokens. - /// Deregistration is pending until next cycle. - /// - /// @param _token The address of the token to be deregistered. - function deregisterToken(address _token) external onlyOwner { - require( - registeredTokenIndex[_token] > 0, - "DarknodePayment: token not registered" - ); - _deregisterToken(_token); - } - - /// @notice Updates the list of registeredTokens adding tokens that are to be registered. - /// The list of tokens that are pending registration are emptied afterwards. - function _updateTokenList() internal { - // Register tokens - uint256 arrayLength = pendingTokens.length; - for (uint256 i = 0; i < arrayLength; i++) { - address token = pendingTokens[i]; - registeredTokens.push(token); - registeredTokenIndex[token] = registeredTokens.length; - emit LogTokenRegistered(token); - } - pendingTokens.length = 0; - } - - /// @notice Deregisters a token, removing it from the list of - /// registeredTokens. - /// - /// @param _token The address of the token to deregister. - function _deregisterToken(address _token) private { - address lastToken = registeredTokens[registeredTokens.length.sub( - 1, - "DarknodePayment: no tokens registered" - )]; - uint256 deletedTokenIndex = registeredTokenIndex[_token].sub(1); - // Move the last token to _token's position and update it's index - registeredTokens[deletedTokenIndex] = lastToken; - registeredTokenIndex[lastToken] = registeredTokenIndex[_token]; - // Decreasing the length will clean up the storage for us - // So we don't need to manually delete the element - registeredTokens.pop(); - registeredTokenIndex[_token] = 0; - - emit LogTokenDeregistered(_token); - } -} - -contract DarknodeRewardsLogicV1_CycleTracker is - Ownable, - DarknodeRewardsStateV1, - DarknodeRewardsLogicV1_TokenRegistry -{ - using SafeMath for uint256; - - /// @notice Emitted when the CycleChanger address changes. - /// @param _newCycleChanger The new CycleChanger. - /// @param _oldCycleChanger The old CycleChanger. - event LogCycleChangerChanged( - address indexed _newCycleChanger, - address indexed _oldCycleChanger - ); - - /// @notice Restrict a function to be called by cycleChanger. - modifier onlyCycleChanger { - require( - msg.sender == cycleChanger, - "DarknodePayment: not cycle changer" - ); - _; - } - - /// @notice Updates the CycleChanger contract address. - /// - /// @param _addr The new CycleChanger contract address. - function updateCycleChanger(address _addr) external onlyOwner { - require( - _addr != address(0), - "DarknodePayment: invalid contract address" - ); - emit LogCycleChangerChanged(_addr, cycleChanger); - cycleChanger = _addr; - } - - /// @notice Get the total balance of the contract for a particular token. - /// - /// @param _token The token to check balance of. - /// @return The total balance of the contract. - function totalBalance(address _token) public view returns (uint256) { - if (_token == ETHEREUM) { - return address(this).balance; - } else { - return ERC20(_token).balanceOf(address(this)); - } - } - - /// @notice Get the available balance of the contract for a particular token - /// This is the free amount which has not yet been allocated to - /// darknodes. - /// - /// @param _token The token to check balance of. - /// @return The available balance of the contract. - function availableBalance(address _token) public view returns (uint256) { - return - totalBalance(_token).sub( - lockedBalances[_token], - "DarknodeRewards: locked balance exceed total balance" - ); - } - - /// @notice Changes the current cycle. - function changeCycle() external onlyCycleChanger returns (uint256) { - // Snapshot balances for the past cycle. - uint256 arrayLength = registeredTokens.length; - for (uint256 i = 0; i < arrayLength; i++) { - _snapshotBalance(registeredTokens[i]); - } - - currentCyclePayoutPercent = nextCyclePayoutPercent; - - // Update the list of registeredTokens. - DarknodeRewardsLogicV1_TokenRegistry._updateTokenList(); - } - - /// @notice Snapshots the current balance of the tokens, for all registered - /// tokens. - /// - /// @param _token The address the token to snapshot. - function _snapshotBalance(address _token) private { - uint256 shareCount = darknodeRegistry.numDarknodesPreviousEpoch(); - if (shareCount == 0) { - unclaimedRewards[_token] = 0; - tokenLastRewardShare[_token] = 0; - } else { - // Lock up the current balance for darknode reward allocation - uint256 total = availableBalance(_token); - unclaimedRewards[_token] = total.div(100).mul( - currentCyclePayoutPercent - ); - tokenLastRewardShare[_token] = unclaimedRewards[_token].div( - shareCount - ); - } - } -} - -contract DarknodeRewardsLogicV1_Withdraws is Ownable, DarknodeRewardsStateV1 { - using SafeMath for uint256; - using SafeERC20 for ERC20; - - /// @notice Emitted when the DarknodeRegistry is updated. - /// @param _previousDarknodeRegistry The address of the old registry. - /// @param _nextDarknodeRegistry The address of the new registry. - event LogDarknodeRegistryUpdated( - DarknodeRegistryLogicV1 indexed _previousDarknodeRegistry, - DarknodeRegistryLogicV1 indexed _nextDarknodeRegistry - ); - - /// @notice Emitted when a darknode claims their share of reward. - /// @param _darknode The darknode which claimed. - /// @param _cycle The cycle that the darknode claimed for. - event LogDarknodeClaim(address indexed _darknode, uint256 _cycle); - - /// @notice Emitted when a darknode calls withdraw. - /// @param _darknodeOperator The address of the darknode's operator. - /// @param _darknodeID The address of the darknode which withdrew. - /// @param _value The amount of DAI withdrawn. - /// @param _token The address of the token that was withdrawn. - event LogDarknodeWithdrew( - address indexed _darknodeOperator, - address indexed _darknodeID, - address indexed _token, - uint256 _value - ); - - /// @notice Allows the contract owner to update the address of the - /// darknode registry contract. - /// @param _darknodeRegistry The address of the Darknode Registry - /// contract. - function updateDarknodeRegistry(DarknodeRegistryLogicV1 _darknodeRegistry) - external - onlyOwner - { - require( - address(_darknodeRegistry) != address(0x0), - "DarknodePayment: invalid Darknode Registry address" - ); - DarknodeRegistryLogicV1 previousDarknodeRegistry = darknodeRegistry; - darknodeRegistry = _darknodeRegistry; - emit LogDarknodeRegistryUpdated( - previousDarknodeRegistry, - darknodeRegistry - ); - } - - /// @notice Transfers an amount out of balance to a specified address. - /// - /// @param _token Which token to transfer. - /// @param _amount The amount to transfer. - /// @param _recipient The address to withdraw it to. - function transfer( - address _token, - uint256 _amount, - address payable _recipient - ) internal { - if (_token == ETHEREUM) { - _recipient.transfer(_amount); - } else { - ERC20(_token).safeTransfer(_recipient, _amount); - } - } - - /// @notice Transfers the funds allocated to the darknode to the darknode - /// owner. - /// - /// @param _darknode The address of the darknode. - /// @param _token Which token to transfer. - function withdraw(address _darknode, address _token) public { - address payable darknodeOperator = darknodeRegistry.getDarknodeOperator( - _darknode - ); - require( - darknodeOperator != address(0x0), - "DarknodePayment: invalid darknode owner" - ); - - // - if (darknodeLastClaimed[_darknode][_token] == 0) { - darknodeLastClaimed[_darknode][_token] = tokenRewardShareSum[_token]; - } - - uint256 amount = tokenRewardShareSum[_token].sub( - darknodeLastClaimed[_darknode][_token] - ); - - darknodeLastClaimed[_darknode][_token] = tokenRewardShareSum[_token]; - - // Skip if amount is zero. - if (amount > 0) { - lockedBalances[_token] = lockedBalances[_token].sub( - amount, - "DarknodeRewards: insufficient token balance for transfer" - ); - - transfer(_token, amount, darknodeOperator); - emit LogDarknodeWithdrew( - darknodeOperator, - _darknode, - _token, - amount - ); - } - } - - function withdrawMultiple( - address[] calldata _darknodes, - address[] calldata _tokens - ) external { - for (uint256 i = 0; i < _darknodes.length; i++) { - for (uint256 j = 0; j < _tokens.length; j++) { - withdraw(_darknodes[i], _tokens[j]); - } - } - } -} - -/// @notice Gateway handles verifying mint and burn requests. A mintAuthority -/// approves new assets to be minted by providing a digital signature. An owner -/// of an asset can request for it to be burnt. -contract DarknodeRewardsLogicV1 is - Initializable, - Claimable, - DarknodeRewardsStateV1, - DarknodeRewardsLogicV1_TokenRegistry, - DarknodeRewardsLogicV1_CycleTracker, - DarknodeRewardsLogicV1_Withdraws -{ - using SafeMath for uint256; - using SafeERC20 for ERC20; - - /// @notice Emitted when someone pays the DarknodePayment contract. - /// @param _payer The darknode which claimed. - /// @param _amount The cycle that the darknode claimed for. - /// @param _token The address of the token that was transferred. - event LogPaymentReceived( - address indexed _payer, - address indexed _token, - uint256 _amount - ); - - /// @notice Emitted when the payout percent changes. - /// @param _newPercent The new percent. - /// @param _oldPercent The old percent. - event LogPayoutPercentChanged(uint256 _newPercent, uint256 _oldPercent); - - function initialize( - DarknodeRegistryLogicV1 _darknodeRegistry, - uint256 _cyclePayoutPercent - ) public initializer { - Claimable.initialize(msg.sender); - darknodeRegistry = _darknodeRegistry; - - nextCyclePayoutPercent = _cyclePayoutPercent; - cycleChanger = msg.sender; - currentCyclePayoutPercent = nextCyclePayoutPercent; - } - - /// @notice Forward all payments to the DarknodePaymentStore. - function() external payable { - require( - registeredTokenIndex[ETHEREUM] > 0, - "DarknodePayment: token not registered" - ); - emit LogPaymentReceived(msg.sender, ETHEREUM, msg.value); - } -} - -/* solium-disable-next-line no-empty-blocks */ -contract DarknodeRewardsProxy is InitializableAdminUpgradeabilityProxy { - -} From baad8c4a2f3c4649617d603c834e4aed28d8a464 Mon Sep 17 00:00:00 2001 From: noiach Date: Thu, 18 Mar 2021 13:29:25 +1100 Subject: [PATCH 03/13] feat: added ClaimlessRewards.sol ClaimlessRewards.sol will replace DarknodePayment.sol, removing the requirement for darknodes to claim each epoch and introducing the option to pay a proportion of rewards to a community fund --- .../DarknodePayment/ClaimlessRewards.sol | 708 ++++++++++ .../DarknodeRegistry/DarknodeRegistry.sol | 21 +- migrations/1_darknodes.js | 15 + migrations/networks.js | 2 +- package.json | 2 + test/ClaimlessRewards/ClaimlessRewards.ts | 1221 +++++++++++++++++ test/ClaimlessRewards/steps.ts | 494 +++++++ test/DarknodePayment.ts | 6 +- test/ERC20WithPermit.ts | 4 +- test/helper/testUtils.ts | 85 +- yarn.lock | 10 + 11 files changed, 2553 insertions(+), 15 deletions(-) create mode 100644 contracts/DarknodePayment/ClaimlessRewards.sol create mode 100644 test/ClaimlessRewards/ClaimlessRewards.ts create mode 100644 test/ClaimlessRewards/steps.ts diff --git a/contracts/DarknodePayment/ClaimlessRewards.sol b/contracts/DarknodePayment/ClaimlessRewards.sol new file mode 100644 index 00000000..ccc97d94 --- /dev/null +++ b/contracts/DarknodePayment/ClaimlessRewards.sol @@ -0,0 +1,708 @@ +pragma solidity ^0.5.17; + +import "@openzeppelin/contracts-ethereum-package/contracts/math/SafeMath.sol"; +import "@openzeppelin/contracts-ethereum-package/contracts/token/ERC20/ERC20.sol"; +import "@openzeppelin/contracts-ethereum-package/contracts/token/ERC20/SafeERC20.sol"; + +import "../DarknodeRegistry/DarknodeRegistry.sol"; +import "./DarknodePaymentStore.sol"; +import "../libraries/LinkedList.sol"; +import "../Governance/Claimable.sol"; + +contract ClaimlessRewardsEvents { + /// @notice Emitted when a node calls withdraw + /// @param _payee The address of the node which withdrew + /// @param _value The amount of DAI withdrawn + /// @param _token The address of the token that was withdrawn + event LogDarknodeWithdrew( + address indexed _payee, + uint256 _value, + address indexed _token + ); + + /// @notice Emitted when the cycle is changed. + /// @param _newTimestamp The start timestamp of the new cycle. + /// @param _previousTimestamp The start timestamp of the previous cycle. + /// @param _shareCount The number of darknodes at the end of the previous + /// cycle. + event LogCycleChanged( + uint256 _newTimestamp, + uint256 _previousTimestamp, + uint256 _shareCount + ); + + /// @notice Emitted when the node payout percent changes. + /// @param _newNumerator The new numerator. + /// @param _oldNumerator The old numerator. + event LogHourlyPayoutChanged(uint256 _newNumerator, uint256 _oldNumerator); + + /// @notice Emitted when the community fund percent changes. + /// @param _newNumerator The new numerator. + /// @param _oldNumerator The old numerator. + event LogCommunityFundNumeratorChanged( + uint256 _newNumerator, + uint256 _oldNumerator + ); + + /// @notice Emitted when a new token is registered. + /// @param _token The token that was registered. + event LogTokenRegistered(address indexed _token); + + /// @notice Emitted when a token is deregistered. + /// @param _token The token that was deregistered. + event LogTokenDeregistered(address indexed _token); + + /// @notice Emitted when the DarknodeRegistry is updated. + /// @param _previousDarknodeRegistry The address of the old registry. + /// @param _nextDarknodeRegistry The address of the new registry. + event LogDarknodeRegistryUpdated( + DarknodeRegistryLogicV1 indexed _previousDarknodeRegistry, + DarknodeRegistryLogicV1 indexed _nextDarknodeRegistry + ); + + /// @notice Emitted when the community fund recipient is updated. + /// @param _previousCommunityFund The address of the old community fund. + /// @param _nextCommunityFund The address of the new community fund. + event LogCommunityFundUpdated( + address indexed _previousCommunityFund, + address indexed _nextCommunityFund + ); +} + +contract ClaimlessRewardsState { + using LinkedList for LinkedList.List; + + /// @notice The special address for the collective funds that haven't been + /// withdrawn yet. + address public constant POOLED_REWARDS = address(0); + + /// @notice The address of the Darknode Registry, used to look up the + /// operators of nodes and the number of registered nodes. + /// Passed in as a constructor parameter. + DarknodeRegistryLogicV1 public darknodeRegistry; + + /// @notice DarknodePaymentStore stores the rewards until they are paid out. + DarknodePaymentStore public store; // Passed in as a constructor parameter. + + /// @notice Mapping from token -> amount. + /// The amount of rewards allocated for each node. + mapping(uint256 => mapping(address => uint256)) + public cycleCumulativeTokenShares; + + /// @notice Mapping of node -> token -> last claimed timestamp + /// Used to keep track of which nodes have already claimed their rewards. + mapping(address => mapping(address => uint256)) public rewardsLastClaimed; + + uint256 public latestCycleTimestamp; + uint256[] public epochTimestamps; + + /// @notice The list of tokens which are already registered and rewards can + /// be claimed for. + LinkedList.List internal registeredTokens; + + /// @notice The list of deregistered tokens, tracked to ensure that users + /// can still withdraw rewards for tokens that have been deregistered. + LinkedList.List internal deregisteredTokens; + + /// @notice The recipient of a proportion of rewards. The proportion can be + /// updated, allowing this to be governed by a DAO. + address public communityFund; + + /// @notice The denominator used by `hourlyPayoutWithheldNumerator` and + /// `communityFundNumerator`. + uint256 public constant HOURLY_PAYOUT_WITHHELD_DENOMINATOR = 1000000; + + /// @notice The proportion of the payout that is withheld each hour to be + /// paid out over future cycles. + /// The target payout is 50% over 28 days, so the following was calculated + /// as `0.5 ** (1 / (28 * 24))`. + /// Rounding is done in favor of the current cycle payout instead of the + /// rewards withheld for future cycles. + uint256 public hourlyPayoutWithheldNumerator = 998969; + + /// @notice The proportion of the reward pool that goes to the community + /// fund. `communityFundNumerator` can be set to 0 to disable rewards going + /// to the fund. + uint256 public communityFundNumerator; +} + +contract ClaimlessRewardsTokenHandler is + Ownable, + ClaimlessRewardsEvents, + ClaimlessRewardsState +{ + using SafeERC20 for ERC20; + + /// @notice Adds tokens to be payable. Registration is pending until next + /// cycle. + /// + /// @param _token The address of the token to be registered. + function registerToken(address _token) external onlyOwner { + require( + !registeredTokens.isInList(_token), + "ClaimlessRewards: token already registered" + ); + registeredTokens.append(_token); + + // Remove from deregistered tokens. + if (deregisteredTokens.isInList(_token)) { + deregisteredTokens.remove(_token); + } + } + + /// @notice Removes a token from the list of supported tokens. + /// Deregistration is pending until next cycle. + /// + /// @param _token The address of the token to be deregistered. + function deregisterToken(address _token) external onlyOwner { + require( + registeredTokens.isInList(_token), + "ClaimlessRewards: token not registered" + ); + registeredTokens.remove(_token); + + // Add to deregistered tokens. This check should always be true. + if (!deregisteredTokens.isInList(_token)) { + deregisteredTokens.append(_token); + } + } + + /// @notice (external view) Returns the full list of registered tokens. + function getRegisteredTokens() external view returns (address[] memory) { + address[] memory tokens = new address[](registeredTokens.length); + address nextToken = registeredTokens.begin(); + for (uint256 i = 0; i < tokens.length; i++) { + tokens[i] = nextToken; + + // Take next token. + nextToken = registeredTokens.next(nextToken); + } + return tokens; + } + + /// @notice (external view) Returns whether a token is registered. + function isRegistered(address _token) external view returns (bool) { + return registeredTokens.isInList(_token); + } + + /// @notice Forwards any balance held by this contract on to the store. + /// + /// @param _token The token to forward. For ETH, this is 0xeeee... . + function forward(address _token) external { + // If no token has been provided, forward ETH. + if (_token == address(0x0)) { + address(store).transfer(address(this).balance); + } else { + ERC20(_token).safeTransfer( + address(store), + ERC20(_token).balanceOf(address(this)) + ); + } + } +} + +contract ClaimlessRewardsAdminHandler is + Ownable, + ClaimlessRewardsEvents, + ClaimlessRewardsState +{ + /// @notice Allows the contract owner to update the address of the + /// Darknode Registry contract. + /// @param _darknodeRegistry The address of the new Darknode Registry + /// contract. + function updateDarknodeRegistry(DarknodeRegistryLogicV1 _darknodeRegistry) + external + onlyOwner + { + _updateDarknodeRegistry(_darknodeRegistry); + } + + /// @notice Allows the contract owner to update the address of the new dev + /// fund. + /// @param _communityFund The address of new community fund address. + function updateCommunityFund(address _communityFund) external onlyOwner { + _updateCommunityFund(_communityFund); + } + + /// @notice Updates the proportion of the rewards that are withheld to be + /// paid out over future cycles. + /// + /// @param _numerator The numerator of payout for darknodes. + function updateHourlyPayoutWithheld(uint256 _numerator) external onlyOwner { + require( + _numerator <= HOURLY_PAYOUT_WITHHELD_DENOMINATOR, + "ClaimlessRewards: invalid numerator" + ); + + // Emit before updating so that the old payout can be logged. + emit LogHourlyPayoutChanged(_numerator, hourlyPayoutWithheldNumerator); + hourlyPayoutWithheldNumerator = _numerator; + } + + /// @notice Updates the proportion of the rewards that are withheld to be + /// sent to the community fund. + /// + /// @param _numerator The numerator of payout for darknodes. + function updateCommunityFundNumerator(uint256 _numerator) + external + onlyOwner + { + _updateCommunityFundNumerator(_numerator); + } + + /// @notice Allows the contract owner to initiate an ownership transfer of + /// the DarknodePaymentStore. + /// + /// @param _newOwner The address to transfer the ownership to. + function transferStoreOwnership(ClaimlessRewardsAdminHandler _newOwner) + external + onlyOwner + { + store.transferOwnership(address(_newOwner)); + _newOwner.claimStoreOwnership(); + } + + /// @notice Claims ownership of the store passed in to the constructor. + /// `transferStoreOwnership` must have previously been called when + /// transferring from another DarknodePaymentStore. + function claimStoreOwnership() external { + store.claimOwnership(); + } + + /// @notice See `updateDarknodeRegistry`. + function _updateDarknodeRegistry(DarknodeRegistryLogicV1 _darknodeRegistry) + internal + { + require( + address(_darknodeRegistry) != address(0x0), + "ClaimlessRewards: invalid Darknode Registry address" + ); + + // Emit before updating so that the old registry can be logged. + emit LogDarknodeRegistryUpdated(_darknodeRegistry, darknodeRegistry); + darknodeRegistry = _darknodeRegistry; + } + + /// @notice See `updateCommunityFund`. + function _updateCommunityFund(address _communityFund) internal { + // Ensure that the community fund is set properly, and that it's not the + // POOLED_REWARDS address, which would allow the darknode rewards to + // be withdrawn to the community fund. + require( + address(_communityFund) != address(0x0), + "ClaimlessRewards: invalid community fund address" + ); + + // Ensure that the community fund isn't a registered node (this would + // allow anyone to withdraw the node's legacy rewards to the node's + // address - not a big issue, but disallowed nonetheless). + require( + darknodeRegistry.getDarknodeOperator(_communityFund) == + address(0x0), + "ClaimlessRewards: community fund must not be a registered darknode" + ); + + // Emit before updating so that the old registry can be logged. + emit LogCommunityFundUpdated(_communityFund, communityFund); + communityFund = _communityFund; + } + + /// @notice See `_updateCommunityFundNumerator`. + function _updateCommunityFundNumerator(uint256 _numerator) internal { + require( + _numerator <= HOURLY_PAYOUT_WITHHELD_DENOMINATOR, + "ClaimlessRewards: invalid numerator" + ); + + // Emit before updating so that the old payout can be logged. + emit LogCommunityFundNumeratorChanged( + _numerator, + communityFundNumerator + ); + communityFundNumerator = _numerator; + } +} + +contract ClaimlessRewardsCycleHandler is + ClaimlessRewardsEvents, + ClaimlessRewardsState +{ + using SafeMath for uint256; + + /// @notice (external view) Return the length of the array of cycle + /// timestamps. This makes it easier for clients to loop through them. + function epochTimestampsLength() external view returns (uint256) { + return epochTimestamps.length; + } + + /// @notice (external view) Returns the full array of timestamps. If this + /// grows too large to return, they should be fetched one-by-one or by + /// fetching tx logs. + function getEpochTimestamps() external view returns (uint256[] memory) { + return epochTimestamps; + } + + /// @notice Changes the current cycle. + /// Callable by anyone. + function changeCycle() external returns (uint256) { + uint256 numerator = hourlyPayoutWithheldNumerator; + uint256 denominator = HOURLY_PAYOUT_WITHHELD_DENOMINATOR; + + uint256 newCycleTimestamp; + uint256 rewardsWithheldNumerator = denominator; + uint256 cycleTimestamp = latestCycleTimestamp; + uint256 currentCommunityFundNumerator = communityFundNumerator; + + for ( + uint256 hour = cycleTimestamp; + hour <= block.timestamp; + hour += 1 hours + ) { + rewardsWithheldNumerator = rewardsWithheldNumerator + .mul(numerator) + .div(denominator); + newCycleTimestamp = hour; + } + + // If the caller is the Darknode Registry, set the cycle timestamp to be + // the current timestamp so that the cycle and epoch are in sync + // (instead of rounding down by up to an hour). This ensures that any + // newly registered darknodes don't lose the fees until the next cycle. + // The difference in time won't get counted in the rewards paiout + // schedule. + // Also, if the caller is the darknode registry, use the number of + // darknodes in the previous epoch instead of the new once, since the + // implementation calls `changeCycle` at the end of the epoch update, + // not the start. + uint256 shareCount; + if (msg.sender == address(darknodeRegistry)) { + newCycleTimestamp = block.timestamp; + shareCount = darknodeRegistry.numDarknodesPreviousEpoch(); + epochTimestamps.push(newCycleTimestamp); + } else { + shareCount = darknodeRegistry.numDarknodes(); + } + + // Require that at least an hour has passed since the last cycle, or, + // if being called from the epoch function, that cycle wasn't called + // previously in the same block. + require( + newCycleTimestamp > cycleTimestamp, + "ClaimlessRewards: previous cycle too recent" + ); + + // Snapshot balances for the past cycle + address nextToken = registeredTokens.begin(); + while (nextToken != address(0x0)) { + { + uint256 total = store.availableBalance(nextToken); + uint256 totalWithheld = + (total.mul(rewardsWithheldNumerator)).div(denominator); + + // The amount being paid out to the darknodes and the community + // fund. + uint256 totalPayout = total.sub(totalWithheld); + + // The amount being paid out to the community fund. + uint256 communityFundPayout = + totalPayout.mul(currentCommunityFundNumerator).div( + denominator + ); + + // The amount being paid out to the darknodes. + uint256 nodePayout = totalPayout.sub(communityFundPayout); + + // The amount being paid out to each indidivual darknode. + uint256 share = + shareCount == 0 ? 0 : nodePayout.div(shareCount); + + // The amount being paid out to the darknodes after ignoring + // the amount left-over from dividing. + uint256 nodePayoutAdjusted = share.mul(shareCount); + + // Store funds that can now be withdrawn by darknodes. + if (nodePayoutAdjusted > 0) { + store.incrementDarknodeBalance( + POOLED_REWARDS, + nextToken, + nodePayoutAdjusted + ); + } + + // Store funds that can be withdrawn to the community fund. + if (communityFundPayout > 0) { + store.incrementDarknodeBalance( + communityFund, + nextToken, + communityFundPayout + ); + } + + cycleCumulativeTokenShares[newCycleTimestamp][ + nextToken + ] = cycleCumulativeTokenShares[cycleTimestamp][nextToken].add( + share + ); + } + + // Take next token. + nextToken = registeredTokens.next(nextToken); + } + + // Keep track of deregistered token amounts. + address nextDeregisteredToken = deregisteredTokens.begin(); + while (nextDeregisteredToken != address(0x0)) { + { + cycleCumulativeTokenShares[newCycleTimestamp][ + nextDeregisteredToken + ] = cycleCumulativeTokenShares[cycleTimestamp][ + nextDeregisteredToken + ]; + } + + // Take next token. + nextDeregisteredToken = deregisteredTokens.next( + nextDeregisteredToken + ); + } + + // Start a new cycle + latestCycleTimestamp = newCycleTimestamp; + + emit LogCycleChanged(newCycleTimestamp, cycleTimestamp, shareCount); + + return newCycleTimestamp; + } +} + +contract ClaimlessRewardsWithdrawHandler is + ClaimlessRewardsEvents, + ClaimlessRewardsState, + ClaimlessRewardsCycleHandler +{ + using SafeMath for uint256; + using SafeERC20 for ERC20; + + // Return the next cycle with a timestamp greater than or equal to the + // passed in timestamp. + function getNextEpochFromTimestamp(uint256 _target) + public + view + returns (uint256) + { + uint256 start = 0; + uint256 end = epochTimestamps.length.sub(1); + + // Iterate while start not meets end + while (start <= end) { + // Find the mid index + uint256 mid = (start + end) / 2; + + // If element is present at mid, return True + if ( + epochTimestamps[mid] >= _target && + (mid == 0 || epochTimestamps[mid - 1] < _target) + ) { + return epochTimestamps[mid]; + } + // Else look in left or right half accordingly + else if (epochTimestamps[mid] < _target) { + start = mid + 1; + } else { + end = mid.sub(1); + } + } + return 0; + } + + function darknodeBalances(address _node, address _token) + external + view + returns (uint256) + { + uint256 nodeRegistered = darknodeRegistry.darknodeRegisteredAt(_node); + + uint256 newWithdrawable = 0; + if (nodeRegistered > 0) { + (newWithdrawable, ) = _calculateNewWithdrawable(_node, _token); + } + uint256 legacyWithdrawable = store.darknodeBalances(_node, _token); + + return newWithdrawable.add(legacyWithdrawable); + } + + /// @notice Withdraw the provided asset for each node in the list. + function withdrawToken(address[] memory _nodes, address _token) public { + uint256 withdrawTotal = 0; + + for (uint256 i = 0; i < _nodes.length; i++) { + address _node = _nodes[i]; + + // The Darknode Registry already prevents IDs from being 0x0, but a + // user could attempt to register the communityFund address as a + // darknode and then withdraw the pending community fund rewards. + require( + _node != POOLED_REWARDS && _node != communityFund, + "ClaimlessRewards: invalid node ID" + ); + + require( + darknodeRegistry.getDarknodeOperator(_node) == msg.sender, + "ClaimlessRewards: not operator" + ); + + (uint256 newRewards, uint256 claimUntil) = + _calculateNewWithdrawable(_node, _token); + + withdrawTotal = withdrawTotal.add(newRewards); + rewardsLastClaimed[_node][_token] = claimUntil; + emit LogDarknodeWithdrew(_node, newRewards, _token); + + // Check if there's a legacy amount to withdraw. This only has + // to be withdrawn once. + uint256 legacyAmount = store.darknodeBalances(_node, _token); + if (legacyAmount > 0) { + store.transfer(_node, _token, legacyAmount, msg.sender); + emit LogDarknodeWithdrew(_node, legacyAmount, _token); + } + } + + store.transfer(POOLED_REWARDS, _token, withdrawTotal, msg.sender); + } + + /// @notice Withdraw multiple assets for each darknode in the list. + /// The interface has been kept the same as the DarknodePayment contract + /// for backward-compatibility. + function withdrawMultiple(address[] memory _nodes, address[] memory _tokens) + public + { + for (uint256 i = 0; i < _tokens.length; i++) { + withdrawToken(_nodes, _tokens[i]); + } + } + + /// @notice Withdraw the provided asset for the given darknode. + /// The interface has been kept the same as the DarknodePayment contract + /// for backward-compatibility. + function withdraw(address _node, address _token) public { + address[] memory nodes = new address[](1); + nodes[0] = _node; + return withdrawToken(nodes, _token); + } + + function withdrawToCommunityFund(address[] memory _tokens) public { + // Access storage outside of loop. + address memoryCommunityFund = communityFund; + address payable communityFundPayable = + address(uint160(address(memoryCommunityFund))); + + for (uint256 i = 0; i < _tokens.length; i++) { + address _token = _tokens[i]; + uint256 amount = + store.darknodeBalances(memoryCommunityFund, _token); + + if (amount > 0) { + store.transfer( + memoryCommunityFund, + _token, + amount, + communityFundPayable + ); + } + } + } + + function _calculateNewWithdrawable(address _node, address _token) + internal + view + returns (uint256, uint256) + { + uint256 nodeRegistered = darknodeRegistry.darknodeRegisteredAt(_node); + + require(nodeRegistered > 0, "ClaimlessRewards: not registered"); + + uint256 nodeDeregistered = + darknodeRegistry.darknodeDeregisteredAt(_node); + + uint256 claimFrom = rewardsLastClaimed[_node][_token]; + if (claimFrom < nodeRegistered) { + claimFrom = getNextEpochFromTimestamp(nodeRegistered); + + // A node can start claiming from the first epoch after (or at) its + // registration time. If this is 0, then the node is still in the + // pending-registration state. + require(claimFrom > 0, "ClaimlessRewards: registration pending"); + } + + uint256 claimUntil = latestCycleTimestamp; + if (nodeDeregistered != 0) { + uint256 deregisteredCycle = + getNextEpochFromTimestamp(nodeDeregistered); + + // A node can only claim up until the next epoch after (or at) its + // deregistration time. If this is 0, then the node is still + // in the pending-deregistration state. + if (deregisteredCycle != 0) { + claimUntil = deregisteredCycle; + } + } + + uint256 lastCumulativeShare = + cycleCumulativeTokenShares[claimFrom][_token]; + uint256 currentCumulativeShare = + cycleCumulativeTokenShares[claimUntil][_token]; + + return ( + currentCumulativeShare.sub( + lastCumulativeShare, + "ClaimlessRewards: error calculating withdrawable balance" + ), + claimUntil + ); + } +} + +/// @notice ClaimlessRewards is intended to replace the DarknodePayment +/// contract. It's to main improvements are: +/// 1) no longer requiring nodes to call `claim` each epoch, and +/// 2) allowing for a community fund to earn a proportion of the rewards. +contract ClaimlessRewards is + Claimable, + ClaimlessRewardsEvents, + ClaimlessRewardsState, + ClaimlessRewardsTokenHandler, + ClaimlessRewardsAdminHandler, + ClaimlessRewardsCycleHandler, + ClaimlessRewardsWithdrawHandler +{ + /// @notice The contract constructor. Starts the current cycle using the + /// latest epoch. + /// + /// @dev The DarknodeRegistry should be set to point to the + /// ClaimlessRewards contract before the next epoch is called. + /// + /// @param _darknodeRegistry The address of the DarknodeRegistry contract + /// @param _darknodePaymentStore The address of the DarknodePaymentStore + /// contract. Can be updated by the contract owner. + /// @param _communityFund The address to which the community fund balances + /// can be withdrawn to. Can be updated by the contract owner. + /// @param _communityFundNumerator The portion of the rewards that are paid + /// to the community fund. Can be updated by the contract owner. + constructor( + DarknodeRegistryLogicV1 _darknodeRegistry, + DarknodePaymentStore _darknodePaymentStore, + address _communityFund, + uint256 _communityFundNumerator + ) public Claimable() { + Claimable.initialize(msg.sender); + + store = _darknodePaymentStore; + _updateDarknodeRegistry(_darknodeRegistry); + _updateCommunityFund(_communityFund); + _updateCommunityFundNumerator(_communityFundNumerator); + + // Initialize the current cycle to the start of the Registry's epoch. + (, latestCycleTimestamp) = darknodeRegistry.currentEpoch(); + epochTimestamps.push(latestCycleTimestamp); + } +} diff --git a/contracts/DarknodeRegistry/DarknodeRegistry.sol b/contracts/DarknodeRegistry/DarknodeRegistry.sol index 714278ba..35898db9 100644 --- a/contracts/DarknodeRegistry/DarknodeRegistry.sol +++ b/contracts/DarknodeRegistry/DarknodeRegistry.sol @@ -282,8 +282,7 @@ contract DarknodeRegistryLogicV1 is /// until the end of the epoch. After another epoch, the bond can be /// refunded by calling the refund method. /// @param _darknodeID The darknode ID that will be deregistered. The caller - /// of this method store.darknodeRegisteredAt(_darknodeID) must be - // the owner of this darknode. + /// of this method must be the owner of this darknode. function deregister(address _darknodeID) external onlyDeregisterable(_darknodeID) @@ -633,6 +632,24 @@ contract DarknodeRegistryLogicV1 is (previousEpoch.blocktime - deregistrationInterval); } + /// @notice Returns the registration time of a given darknode. + function darknodeRegisteredAt(address darknodeID) + external + view + returns (uint256) + { + return store.darknodeRegisteredAt(darknodeID); + } + + /// @notice Returns the deregistration time of a given darknode. + function darknodeDeregisteredAt(address darknodeID) + external + view + returns (uint256) + { + return store.darknodeDeregisteredAt(darknodeID); + } + /// @notice Returns if a darknode is in the registered state. function isRegistered(address _darknodeID) public view returns (bool) { return isRegisteredInEpoch(_darknodeID, currentEpoch); diff --git a/migrations/1_darknodes.js b/migrations/1_darknodes.js index 8d04abff..ac08307d 100644 --- a/migrations/1_darknodes.js +++ b/migrations/1_darknodes.js @@ -6,6 +6,7 @@ const { execSync } = require("child_process"); const RenToken = artifacts.require("RenToken"); const DarknodePayment = artifacts.require("DarknodePayment"); const DarknodePaymentStore = artifacts.require("DarknodePaymentStore"); +const ClaimlessRewards = artifacts.require("ClaimlessRewards"); const DarknodeRegistryStore = artifacts.require("DarknodeRegistryStore"); const DarknodeRegistryProxy = artifacts.require("DarknodeRegistryProxy"); const DarknodeRegistryLogicV1 = artifacts.require("DarknodeRegistryLogicV1"); @@ -62,6 +63,7 @@ module.exports = async function(deployer, network) { DarknodeRegistryStore.address = addresses.DarknodeRegistryStore || ""; DarknodePaymentStore.address = addresses.DarknodePaymentStore || ""; DarknodePayment.address = addresses.DarknodePayment || ""; + ClaimlessRewards.address = addresses.ClaimlessRewards || ""; ProtocolProxy.address = addresses.ProtocolProxy || ""; ProtocolLogicV1.address = addresses.ProtocolLogicV1 || ""; RenProxyAdmin.address = addresses.RenProxyAdmin || ""; @@ -385,6 +387,19 @@ module.exports = async function(deployer, network) { actionCount++; } + if (!ClaimlessRewards.address) { + // Deploy Darknode Payment + deployer.logger.log("Deploying ClaimlessRewards"); + await deployer.deploy( + ClaimlessRewards, + darknodeRegistry.address, + DarknodePaymentStore.address, + config.communityFund || contractOwner, + config.communityFundNumerator || 50000 + ); + actionCount++; + } + // Update darknode payment address if ( Ox(await darknodeRegistry.darknodePayment()) !== diff --git a/migrations/networks.js b/migrations/networks.js index 70a813f9..74c144b0 100644 --- a/migrations/networks.js +++ b/migrations/networks.js @@ -57,7 +57,7 @@ module.exports = { config: { ...config, mintAuthority: "0x7f64e4e4b2d7589eb0ac8439c0e639856aeceee7", - // devFund: "", + // communityFund: "", tokenPrefix: "ren" } diff --git a/package.json b/package.json index 0f28a910..9b6cf9f2 100644 --- a/package.json +++ b/package.json @@ -29,6 +29,7 @@ "@types/ethereumjs-abi": "^0.6.3", "@types/mocha": "^7.0.2", "@types/node": "^13.9.1", + "@types/seedrandom": "^3.0.0", "bignumber.js": "^9.0.0", "bn.js": "^5.1.1", "chai": "^4.2.0", @@ -44,6 +45,7 @@ "moment": "^2.29.1", "npmignore": "^0.2.0", "patch-package": "^6.2.1", + "seedrandom": "^3.0.5", "solc": "^0.5.17", "solidity-coverage": "^0.7.2", "truffle": "^5.2.4", diff --git a/test/ClaimlessRewards/ClaimlessRewards.ts b/test/ClaimlessRewards/ClaimlessRewards.ts new file mode 100644 index 00000000..0b689549 --- /dev/null +++ b/test/ClaimlessRewards/ClaimlessRewards.ts @@ -0,0 +1,1221 @@ +import BigNumber from "bignumber.js"; +import BN from "bn.js"; +import seedrandom from "seedrandom"; + +import { + ClaimlessRewardsInstance, + DarknodePaymentInstance, + DarknodePaymentStoreInstance, + DarknodeRegistryLogicV1Instance, + DarknodeSlasherInstance, + ERC20Instance, + RenTokenInstance +} from "../../types/truffle-contracts"; +import { + DAYS, + ETHEREUM, + getDecimals, + HOURS, + ID, + increaseTime, + MINIMUM_BOND, + NULL, + PUBK, + range, + toBN, + waitForEpoch +} from "../helper/testUtils"; +import { STEPS } from "./steps"; + +const RenToken = artifacts.require("RenToken"); +const ERC20 = artifacts.require("PaymentToken"); +const DarknodePaymentStore = artifacts.require("DarknodePaymentStore"); +const ClaimlessRewards = artifacts.require("ClaimlessRewards"); +const DarknodePayment = artifacts.require("DarknodePayment"); +const DarknodeRegistryProxy = artifacts.require("DarknodeRegistryProxy"); +const DarknodeRegistryLogicV1 = artifacts.require("DarknodeRegistryLogicV1"); +const SelfDestructingToken = artifacts.require("SelfDestructingToken"); +const DarknodeSlasher = artifacts.require("DarknodeSlasher"); + +contract("ClaimlessRewards", (accounts: string[]) => { + let store: DarknodePaymentStoreInstance; + let dai: ERC20Instance; + let erc20Token: ERC20Instance; + let dnr: DarknodeRegistryLogicV1Instance; + let rewards: ClaimlessRewardsInstance; + let ren: RenTokenInstance; + let slasher: DarknodeSlasherInstance; + let dnp: DarknodePaymentInstance; + + const owner = accounts[0]; + const operator1 = accounts[1]; + const operator2 = accounts[2]; + + before(async () => { + ren = await RenToken.deployed(); + dai = await ERC20.new("DAI"); + erc20Token = await ERC20.new("ERC20"); + const dnrProxy = await DarknodeRegistryProxy.deployed(); + dnr = await DarknodeRegistryLogicV1.at(dnrProxy.address); + store = await DarknodePaymentStore.deployed(); + rewards = await ClaimlessRewards.deployed(); + dnp = await DarknodePayment.deployed(); + slasher = await DarknodeSlasher.deployed(); + await dnr.updateSlasher(slasher.address); + + await dnp.transferStoreOwnership(rewards.address); + await dnr.updateDarknodePayment(rewards.address); + await dnr.updateMinimumEpochInterval(60 * 60); + await STEPS.waitForEpoch(rewards); + + new BN(await dnr.numDarknodes.call()).should.bignumber.equal(new BN(0)); + }); + + after(async () => { + await rewards.transferStoreOwnership(dnp.address); + await dnr.updateDarknodePayment(dnp.address); + await dnr.updateMinimumEpochInterval(30); + }); + + afterEach(async () => { + // Deregister tokens. + const tokens = await rewards.getRegisteredTokens.call(); + for (const token of tokens) { + await rewards.deregisterToken(token); + } + + await STEPS.waitForEpoch(rewards); + + // Deregister darknodes. + const darknodes = await dnr.getDarknodes.call(NULL, 0); + if (darknodes.length) { + for (const darknode of darknodes) { + await dnr.deregister(darknode, { + from: await dnr.getDarknodeOperator.call(darknode) + }); + } + + await STEPS.waitForEpoch(rewards); + + await STEPS.waitForEpoch(rewards); + + for (const darknode of darknodes) { + await dnr.refund(darknode, { + from: await dnr.getDarknodeOperator.call(darknode) + }); + } + } + }); + + describe("Token registration", async () => { + it("cannot register token if not owner", async () => { + await rewards + .registerToken(dai.address, { from: accounts[1] }) + .should.be.rejectedWith(/Ownable: caller is not the owner/); + }); + + it("can register token", async () => { + // No tokens should be registered. + (await rewards.getRegisteredTokens.call()).length.should.equal(0); + + await STEPS.registerToken(rewards, dai.address); + await STEPS.registerToken(rewards, erc20Token.address); + await STEPS.registerToken(rewards, ETHEREUM); + + (await rewards.getRegisteredTokens.call()).length.should.equal(3); + }); + + it("cannot register already registered tokens", async () => { + await STEPS.registerToken(rewards, dai.address); + await rewards + .registerToken(dai.address) + .should.be.rejectedWith( + /ClaimlessRewards: token already registered/ + ); + }); + + it("cannot deregister token if not owner", async () => { + await STEPS.registerToken(rewards, ETHEREUM); + await rewards + .deregisterToken(ETHEREUM, { from: accounts[1] }) + .should.be.rejectedWith(/Ownable: caller is not the owner/); + }); + + it("can deregister tokens", async () => { + await STEPS.registerToken(rewards, dai.address); + await STEPS.registerToken(rewards, erc20Token.address); + await STEPS.registerToken(rewards, ETHEREUM); + + await STEPS.deregisterToken(rewards, ETHEREUM); + await rewards + .deregisterToken(ETHEREUM) + .should.be.rejectedWith( + /ClaimlessRewards: token not registered/ + ); + await STEPS.deregisterToken(rewards, erc20Token.address); + await STEPS.deregisterToken(rewards, dai.address); + + await STEPS.registerToken(rewards, ETHEREUM); + await STEPS.deregisterToken(rewards, ETHEREUM); + }); + + it("can deregister a destroyed token", async () => { + await registerNode(6); + await STEPS.waitForEpoch(rewards); + await STEPS.waitForEpoch(rewards); + + // Register token. + const sdt = await SelfDestructingToken.new(); + await STEPS.registerToken(rewards, sdt.address); + await STEPS.waitForEpoch(rewards); + + // Self destruct token. + await sdt.destruct(); + await STEPS.deregisterToken(rewards, sdt.address); + + await deregisterNode(6); + await STEPS.waitForEpoch(rewards); + await STEPS.waitForEpoch(rewards); + await refundNode(6); + await STEPS.waitForEpoch(rewards); + }); + + it("cannot deregister unregistered tokens", async () => { + await rewards + .deregisterToken(ETHEREUM) + .should.be.rejectedWith( + /ClaimlessRewards: token not registered/ + ); + }); + }); + + describe("Token deposits", async () => { + it("can deposit ETH via direct payment to DarknodePaymentStore contract", async () => { + // deposit using direct deposit to store + const oldETHBalance = new BN( + await store.totalBalance.call(ETHEREUM) + ); + const oldFreeBalance = new BN( + await store.availableBalance.call(ETHEREUM) + ); + const amount = new BN(1).mul(new BN(10).pow(new BN(18))); + await web3.eth.sendTransaction({ + to: store.address, + from: owner, + value: amount.toString() + }); + // Total balance has increased. + new BN( + await store.totalBalance.call(ETHEREUM) + ).should.bignumber.equal(oldETHBalance.add(amount)); + // Reward pool has increased. + new BN( + await store.availableBalance.call(ETHEREUM) + ).should.bignumber.equal(oldFreeBalance.add(amount)); + }); + }); + + describe("Claiming rewards", async () => { + it("nodes can earn ETH", async () => { + // register ETH token and two darknodes + await registerNode([1, 2]); + await STEPS.registerToken(rewards, ETHEREUM); + await STEPS.waitForEpoch(rewards); + + // Add 1 ETH to rewards. + await STEPS.addRewards( + rewards, + ETHEREUM, + new BN(1).mul(new BN(10).pow(new BN(18))) + ); + + // We should have zero claimed balance before ticking + ( + await rewards.darknodeBalances.call(ID(1), ETHEREUM) + ).should.bignumber.equal(0); + + // Change cycle after 1 month. + await STEPS.changeCycle(rewards, 28 * DAYS); + + const node1Amount1 = await STEPS.withdraw( + rewards, + ID(1), + ETHEREUM, + operator1 + ); + + await STEPS.changeCycle(rewards, 28 * DAYS); + + const node1Amount2 = await STEPS.withdraw( + rewards, + ID(1), + ETHEREUM, + operator1 + ); + + const node2Amount1 = await STEPS.withdraw( + rewards, + ID(2), + ETHEREUM, + operator2 + ); + + node2Amount1.should.bignumber.equal( + node1Amount1.plus(node1Amount2) + ); + + await STEPS.changeCycle(rewards, 1 * HOURS); + + await STEPS.deregisterToken(rewards, ETHEREUM); + + await STEPS.changeCycle(rewards, 1 * HOURS); + + // Can still withdraw owed ETH rewards after deregistration. + ( + await STEPS.withdraw(rewards, ID(1), ETHEREUM, operator1) + ).should.bignumber.greaterThan(0); + await STEPS.withdraw(rewards, ID(2), ETHEREUM, operator2); + + await STEPS.changeCycle(rewards, 1 * HOURS); + + // No more ETH rewards to withdraw. + ( + await STEPS.withdraw(rewards, ID(1), ETHEREUM, operator1) + ).should.bignumber.equal(0); + + await deregisterNode([1, 2]); + await STEPS.waitForEpoch(rewards); + await STEPS.waitForEpoch(rewards); + await refundNode([1, 2]); + await STEPS.waitForEpoch(rewards); + }); + + it("nodes can earn DAI", async () => { + // register ETH token and two nodes + await registerNode([1, 2]); + await STEPS.registerToken(rewards, [ETHEREUM, dai.address]); + await STEPS.waitForEpoch(rewards); + + // Add 101.00...01 DAI to rewards. + await STEPS.addRewards( + rewards, + dai.address, + new BN(101).mul(new BN(10).pow(new BN(18))).add(new BN(1)) + ); + + await STEPS.changeCycle(rewards, 1 * HOURS); + + await STEPS.withdraw(rewards, ID(1), dai.address, operator1); + + await STEPS.changeCycle(rewards, 28 * DAYS); + + await STEPS.withdraw(rewards, ID(1), dai.address, operator1); + + await STEPS.changeCycle(rewards, 28 * DAYS); + + await STEPS.withdraw(rewards, ID(1), dai.address, operator1); + await STEPS.withdraw(rewards, ID(2), dai.address, operator2); + + await STEPS.deregisterToken(rewards, ETHEREUM); + await STEPS.deregisterToken(rewards, dai.address); + await deregisterNode([1, 2]); + await STEPS.waitForEpoch(rewards); + await STEPS.waitForEpoch(rewards); + await refundNode([1, 2]); + await STEPS.waitForEpoch(rewards); + }); + + it("nodes can earn ETH and DAI", async () => { + // register ETH token and two darknodes + await registerNode([1, 2]); + await STEPS.registerToken(rewards, [ETHEREUM, dai.address]); + await STEPS.waitForEpoch(rewards); + + // Add 101.00...01 DAI to rewards. + await STEPS.addRewards( + rewards, + dai.address, + new BN(101).mul(new BN(10).pow(new BN(18))).add(new BN(1)) + ); + + // Add 1 ETH to rewards. + await STEPS.addRewards( + rewards, + ETHEREUM, + new BN(1).mul(new BN(10).pow(new BN(18))) + ); + + await STEPS.changeCycle(rewards, 28 * DAYS); + + await STEPS.withdraw(rewards, ID(1), dai.address, operator1); + await STEPS.withdraw(rewards, ID(1), ETHEREUM, operator1); + + await STEPS.changeCycle(rewards, 28 * DAYS); + + await STEPS.withdraw( + rewards, + ID(1), + [dai.address, ETHEREUM], + operator1 + ); + + await STEPS.deregisterToken(rewards, ETHEREUM); + await STEPS.deregisterToken(rewards, dai.address); + await deregisterNode([1, 2]); + await STEPS.waitForEpoch(rewards); + await STEPS.waitForEpoch(rewards); + await refundNode([1, 2]); + await STEPS.waitForEpoch(rewards); + }); + + it("node can withdraw after deregistering", async () => { + // register ETH token and two darknodes + await registerNode([1, 2]); + await STEPS.registerToken(rewards, ETHEREUM); + await STEPS.waitForEpoch(rewards); + + // Add 1 ETH to rewards. + await STEPS.addRewards( + rewards, + ETHEREUM, + new BN(1).mul(new BN(10).pow(new BN(18))) + ); + + // Change cycle after 1 month. + await STEPS.changeCycle(rewards, 28 * DAYS); + + // Check that deregistering doesn't affect withdrawable balance. + + const node1BalanceBefore = await toBN( + rewards.darknodeBalances.call(ID(1), ETHEREUM) + ); + const node2BalanceBefore = await toBN( + rewards.darknodeBalances.call(ID(2), ETHEREUM) + ); + node1BalanceBefore.should.bignumber.equal(node2BalanceBefore); + + await deregisterNode(1); + + const node1BalanceAfter = await toBN( + rewards.darknodeBalances.call(ID(1), ETHEREUM) + ); + const node2BalanceAfter = await toBN( + rewards.darknodeBalances.call(ID(2), ETHEREUM) + ); + node1BalanceAfter.should.bignumber.equal(node2BalanceAfter); + + ( + await STEPS.withdraw(rewards, ID(1), ETHEREUM, operator1) + ).should.bignumber.greaterThan(0); + + await STEPS.waitForEpoch(rewards); + + // The node can withdraw its rewards from it's last epoch. + ( + await STEPS.withdraw(rewards, ID(1), ETHEREUM, operator1) + ).should.bignumber.greaterThan(0); + + await STEPS.waitForEpoch(rewards); + + // The node should no longer be earning rewards. + ( + await STEPS.withdraw(rewards, ID(1), ETHEREUM, operator1) + ).should.bignumber.equal(0); + await STEPS.waitForEpoch(rewards); + + await refundNode(1); + + await STEPS.withdraw( + rewards, + operator1, + ETHEREUM + ).should.be.rejectedWith(/ClaimlessRewards: not operator/); + + await STEPS.deregisterToken(rewards, ETHEREUM); + await deregisterNode(2); + await STEPS.waitForEpoch(rewards); + await STEPS.waitForEpoch(rewards); + await refundNode(2); + await STEPS.waitForEpoch(rewards); + }); + + it("can withdraw after re-registering", async () => { + // register ETH token and two darknodes + await registerNode(1); + await STEPS.registerToken(rewards, ETHEREUM); + await STEPS.waitForEpoch(rewards); + + // Add 1 ETH to rewards. + await STEPS.addRewards( + rewards, + ETHEREUM, + new BN(1).mul(new BN(10).pow(new BN(18))) + ); + + await deregisterNode(1); + await STEPS.waitForEpoch(rewards); + await STEPS.waitForEpoch(rewards); + + // Ensure all rewards have been withdrawn. + await STEPS.withdraw(rewards, ID(1), ETHEREUM, operator1); + + await refundNode(1); + + await STEPS.changeCycle(rewards, 28 * DAYS); + + await registerNode([1, 2]); + + await STEPS.waitForEpoch(rewards); + + const node1Amount = await STEPS.withdraw( + rewards, + ID(1), + ETHEREUM, + operator1 + ); + const node2Amount = await STEPS.withdraw( + rewards, + ID(2), + ETHEREUM, + operator2 + ); + + // node1 should not be able to withdraw additional rewards, + // since it re-registered at the same time as node2. + node2Amount.should.bignumber.equal(node1Amount); + + await STEPS.deregisterToken(rewards, ETHEREUM); + await deregisterNode([1, 2]); + await STEPS.waitForEpoch(rewards); + await STEPS.waitForEpoch(rewards); + await refundNode([1, 2]); + await STEPS.waitForEpoch(rewards); + }); + + it("calling cycle immediately will not add new timestamp", async () => { + await STEPS.changeCycle(rewards, 1 * HOURS); + await STEPS.changeCycle(rewards, 0 * HOURS).should.be.rejectedWith( + /ClaimlessRewards: previous cycle too recent/ + ); + }); + + it("epoch can progress even if cycle is too recent", async () => { + const timeout = new BN( + (await dnr.minimumEpochInterval.call()).toString() + ).toNumber(); + + await increaseTime(Math.max(timeout, 1 * HOURS)); + + await STEPS.changeCycle(rewards, 0); + await dnr.epoch(); + }); + + it("can withdraw for multiple nodes", async () => { + // register ETH token and two darknodes + await registerNode([1, 2], operator1); + await STEPS.registerToken(rewards, [ETHEREUM, dai.address]); + await STEPS.waitForEpoch(rewards); + + // Add 101.00...01 DAI to rewards. + await STEPS.addRewards( + rewards, + dai.address, + new BN(101).mul(new BN(10).pow(new BN(18))).add(new BN(1)) + ); + + // Add 1 ETH to rewards. + await STEPS.addRewards( + rewards, + ETHEREUM, + new BN(1).mul(new BN(10).pow(new BN(18))) + ); + + await STEPS.changeCycle(rewards, 28 * DAYS); + + // Withdraw DAI for second nodes. + await STEPS.withdraw(rewards, [ID(2)], dai.address, operator1); + + await STEPS.changeCycle(rewards, 28 * DAYS); + + // Withdraw DAI and ETH for both nodes. + await STEPS.withdraw( + rewards, + [ID(1), ID(2)], + [dai.address, ETHEREUM], + operator1 + ); + + await STEPS.deregisterToken(rewards, ETHEREUM); + await STEPS.deregisterToken(rewards, dai.address); + await deregisterNode([1, 2], operator1); + await STEPS.waitForEpoch(rewards); + await STEPS.waitForEpoch(rewards); + await refundNode([1, 2], operator1); + await STEPS.waitForEpoch(rewards); + }); + + it("only operator can withdraw", async () => { + // register ETH token and two darknodes + await registerNode([1, 2]); + await STEPS.registerToken(rewards, [ETHEREUM, dai.address]); + await STEPS.waitForEpoch(rewards); + + // Add 101.00...01 DAI to rewards. + await STEPS.addRewards( + rewards, + dai.address, + new BN(101).mul(new BN(10).pow(new BN(18))).add(new BN(1)) + ); + + await STEPS.changeCycle(rewards, 28 * DAYS); + + await STEPS.withdraw( + rewards, + ID(1), + dai.address, + operator2 + ).should.be.rejectedWith(/ClaimlessRewards: not operator/); + + await STEPS.withdraw(rewards, ID(1), dai.address, operator1); + await STEPS.withdraw(rewards, ID(2), dai.address, operator2); + + await STEPS.deregisterToken(rewards, ETHEREUM); + await STEPS.deregisterToken(rewards, dai.address); + await deregisterNode([1, 2]); + await STEPS.waitForEpoch(rewards); + await STEPS.waitForEpoch(rewards); + await refundNode([1, 2]); + await STEPS.waitForEpoch(rewards); + }); + + it("nodes can withdraw after migrating from DarknodePayment contract", async function() { + // Requires Darknode Registry implementation to be upgraded mid-test. + + this.timeout(100 * 300000); + + const seed = 0.4957910354433912; // 20 + // const seed = 0.12399667580170748; // 4 + // const seed = Math.random(); + console.log(`Starting test with seed ${seed}.`); + const rng = seedrandom(seed.toString()); + + await rewards.transferStoreOwnership(dnp.address); + await dnr.updateDarknodePayment(dnp.address); + + const newToken = await ERC20.new("DAI2"); + await dnp.registerToken(newToken.address); + + ( + await store.darknodeBalances.call(NULL, newToken.address) + ).should.bignumber.equal(0); + + const darknodeIndices = range(20); + + // Register 50 nodes before switching to ClaimlessRewards. + let previousCanClaim = 0; + for (const index of darknodeIndices.slice( + 0, + Math.floor(darknodeIndices.length / 2) + )) { + await registerNode(index); + + if (rng() < 0.5) { + await waitForEpoch(dnr); + + // Claim for any darknode that has been registered for two + // epochs. + for (const indexInner of darknodeIndices.slice( + 0, + previousCanClaim + )) { + await dnp.claim(ID(indexInner)); + } + + previousCanClaim = index; + + // Add random amount of DAI to rewards. + await STEPS.addRewards( + dnp, + newToken.address, + new BigNumber(rng()) + .times(1000) + .times( + new BigNumber(10).exponentiatedBy( + await getDecimals(newToken.address) + ) + ) + ); + } + } + + await waitForEpoch(dnr); + await waitForEpoch(dnr); + for (const index of darknodeIndices.slice( + 0, + Math.floor(darknodeIndices.length / 2) + )) { + await dnp.claim(ID(index)); + } + + // Withdraw legacy rewards for first 25 nodes. + for (const index of darknodeIndices.slice( + 0, + Math.floor(darknodeIndices.length / 2) + )) { + if (rng() < 0.5) { + await dnp.withdraw(ID(index), newToken.address); + } + } + + rewards = await ClaimlessRewards.new( + dnr.address, + store.address, + owner, + 50000 + ); + await dnp.transferStoreOwnership(rewards.address); + await dnr.updateDarknodePayment(rewards.address); + await STEPS.registerToken(rewards, [ETHEREUM, newToken.address]); + + // Register 50 nodes after switching to ClaimlessRewards. + for (const index of darknodeIndices.slice( + Math.floor(darknodeIndices.length / 2) + )) { + await registerNode(index); + + if (rng() < 0.5) { + await STEPS.waitForEpoch(rewards); + + await STEPS.changeCycle(rewards, 28 * DAYS); + + // Add random amount of DAI to rewards. + await STEPS.addRewards( + rewards, + newToken.address, + new BigNumber(rng()) + .times(1000) + .times( + new BigNumber(10).exponentiatedBy( + await getDecimals(newToken.address) + ) + ) + ); + } + } + + // await STEPS.waitForEpoch(rewards); + + // // Deregister random nodes. + // for (const index of darknodeIndices.slice( + // 0, + // darknodeIndices.length + // )) { + // if (rng() < 0.2) { + // await deregisterNode(index); + // } + + // if (rng() < 0.5) { + // await STEPS.waitForEpoch(rewards); + + // // Add random amount of DAI to rewards. + // await STEPS.addRewards( + // dnp, + // newToken.address, + // new BigNumber(rng()) + // .times(1000) + // .times( + // new BigNumber(10).exponentiatedBy( + // await getDecimals(newToken.address) + // ) + // ) + // ); + + // await STEPS.changeCycle(rewards, 1 * HOURS); + // } + // } + + await STEPS.waitForEpoch(rewards); + + for (const index of darknodeIndices) { + await STEPS.withdraw( + rewards, + ID(index), + newToken.address, + accounts[index % accounts.length] + ); + } + + ( + await store.darknodeBalances.call(NULL, newToken.address) + ).should.bignumber.equal(0); + + await STEPS.deregisterToken(rewards, ETHEREUM); + await STEPS.deregisterToken(rewards, newToken.address); + await deregisterNode(darknodeIndices); + await STEPS.waitForEpoch(rewards); + await STEPS.waitForEpoch(rewards); + await refundNode(darknodeIndices); + await STEPS.waitForEpoch(rewards); + }); + + it("balance if pending registration is 0", async () => { + // register ETH token and two darknodes + await registerNode(1); + await STEPS.registerToken(rewards, ETHEREUM); + + await rewards.darknodeBalances + .call(ID(1), ETHEREUM) + .should.be.rejectedWith( + /ClaimlessRewards: registration pending/ + ); + }); + }); + + describe("getNextEpochFromTimestamp", () => { + it("should return the correct timestamp", async () => { + const timestamps = await rewards.getEpochTimestamps.call(); + + for (let i = 0; i < timestamps.length; i++) { + const timestamp = new BigNumber(timestamps[i].toString()); + const nextTimestamp = timestamps[i + 1] + ? new BigNumber(timestamps[i + 1].toString()) + : undefined; + const previousTimestamp = timestamps[i - 1] + ? new BigNumber(timestamps[i - 1].toString()) + : undefined; + + // Check that timestamps are ordered. + if (nextTimestamp) { + nextTimestamp.should.be.bignumber.greaterThan(timestamp); + } + if (previousTimestamp) { + previousTimestamp.should.be.bignumber.lessThan(timestamp); + } + + // Check that getNextEpochFromTimestamp(timestamp - 1) == timestamp + ( + await rewards.getNextEpochFromTimestamp.call( + timestamp.minus(1).toFixed() + ) + ).should.bignumber.equal( + previousTimestamp && + timestamp.minus(1).isEqualTo(previousTimestamp) + ? previousTimestamp + : timestamp + ); + + // Check that getNextEpochFromTimestamp(timestamp) == timestamp + ( + await rewards.getNextEpochFromTimestamp.call( + timestamp.toFixed() + ) + ).should.bignumber.equal(timestamp); + + // Check that getNextEpochFromTimestamp(timestamp + 1) == next timestamp + ( + await rewards.getNextEpochFromTimestamp.call( + timestamp.plus(1).toFixed() + ) + ).should.bignumber.equal(nextTimestamp || new BigNumber(0)); + } + + if (timestamps.length) { + ( + await rewards.getNextEpochFromTimestamp.call(0) + ).should.bignumber.equal(timestamps[0]); + } + }); + }); + + describe("Transferring ownership", () => { + it("should disallow unauthorized transferring of ownership", async () => { + await rewards + .transferStoreOwnership(accounts[1], { from: accounts[1] }) + .should.be.rejectedWith(/Ownable: caller is not the owner/); + await rewards + .claimStoreOwnership({ from: accounts[1] }) + .should.be.rejectedWith( + /Claimable: caller is not the pending owner/ + ); + }); + + it("can transfer ownership of the darknode payment store", async () => { + const newDarknodePayment = await ClaimlessRewards.new( + dnr.address, + store.address, + owner, + 50000 + ); + + // [ACTION] Initiate ownership transfer to wrong account + await rewards.transferStoreOwnership(newDarknodePayment.address, { + from: accounts[0] + }); + + // [CHECK] Owner should be the new rewards contract. + (await store.owner.call()).should.equal(newDarknodePayment.address); + + // [RESET] Initiate ownership transfer back to rewards. + await newDarknodePayment.transferStoreOwnership(rewards.address); + + // [CHECK] Owner should now be the rewards. + (await store.owner.call()).should.equal(rewards.address); + }); + }); + + describe("when forwarding funds", async () => { + it("can forward ETH", async () => { + await rewards.forward(NULL); + }); + + it("can forward funds to the store", async () => { + // rewards should have zero balance + new BN( + await dai.balanceOf.call(rewards.address) + ).should.bignumber.equal(new BN(0)); + + const storeDaiBalance = new BN( + await store.availableBalance.call(dai.address) + ); + const amount = new BN("1000000"); + new BN(await dai.balanceOf.call(owner)).gte(amount).should.be.true; + await dai.transfer(rewards.address, amount); + + ( + await store.availableBalance.call(dai.address) + ).should.bignumber.equal(storeDaiBalance); + // rewards should have some balance + new BN( + await dai.balanceOf.call(rewards.address) + ).should.bignumber.equal(amount); + + // Forward the funds on + await rewards.forward(dai.address); + new BN( + await dai.balanceOf.call(rewards.address) + ).should.bignumber.equal(new BN(0)); + ( + await store.availableBalance.call(dai.address) + ).should.bignumber.equal(storeDaiBalance.add(amount)); + }); + }); + + describe("when changing payout proportion", async () => { + it("cannot change payout proportion to an invalid percent", async () => { + const denominator = await toBN( + rewards.HOURLY_PAYOUT_WITHHELD_DENOMINATOR.call() + ); + await rewards + .updateHourlyPayoutWithheld(denominator.plus(1).toFixed()) + .should.be.rejectedWith(/ClaimlessRewards: invalid numerator/); + }); + + it("can change payout proportion", async () => { + // register ETH token and two darknodes + await registerNode([1, 2]); + await STEPS.registerToken(rewards, [ETHEREUM, dai.address]); + await STEPS.waitForEpoch(rewards); + + // Ensure there are no fees from other tests. + await STEPS.withdraw(rewards, ID(1), dai.address, operator1); + + // Add 101.00...01 DAI to rewards. + await STEPS.addRewards( + rewards, + dai.address, + new BN(101).mul(new BN(10).pow(new BN(18))) + ); + + const oldNumerator = await toBN( + rewards.hourlyPayoutWithheldNumerator.call() + ); + const denominator = await toBN( + rewards.HOURLY_PAYOUT_WITHHELD_DENOMINATOR.call() + ); + await rewards.updateHourlyPayoutWithheld(denominator.toFixed()); + + await STEPS.changeCycle(rewards, 28 * DAYS); + + ( + await STEPS.withdraw(rewards, ID(1), dai.address, operator1) + ).should.bignumber.equal(0); + + await rewards.updateHourlyPayoutWithheld(0); + + await STEPS.changeCycle(rewards, 28 * DAYS); + + // No rewards should have been withheld, except rounded amounts too + // small to be distributed to all darknodes. + const numberOfDarknodes = await toBN(dnr.numDarknodes.call()); + ( + await store.availableBalance.call(dai.address) + ).should.bignumber.lessThan(numberOfDarknodes); + + await STEPS.withdraw(rewards, ID(1), dai.address, operator1); + + await rewards.updateHourlyPayoutWithheld(oldNumerator.toFixed()); + + await STEPS.deregisterToken(rewards, ETHEREUM); + await STEPS.deregisterToken(rewards, dai.address); + await deregisterNode([1, 2]); + await STEPS.waitForEpoch(rewards); + await STEPS.waitForEpoch(rewards); + await refundNode([1, 2]); + await STEPS.waitForEpoch(rewards); + }); + }); + + describe("admin methods", async () => { + it("only admin can update payout proportions", async () => { + await rewards + .updateHourlyPayoutWithheld(new BN(10), { from: accounts[2] }) + .should.be.rejectedWith(/Ownable: caller is not the owner./); + }); + + describe("DarknodeRegistry", () => { + it("only admin can update darknode registry", async () => { + await rewards + .updateDarknodeRegistry(accounts[2], { from: accounts[2] }) + .should.be.rejectedWith( + /Ownable: caller is not the owner./ + ); + }); + + it("can update DarknodeRegistry", async () => { + const darknodeRegistry = await rewards.darknodeRegistry.call(); + await rewards + .updateDarknodeRegistry(NULL) + .should.be.rejectedWith( + /ClaimlessRewards: invalid Darknode Registry address/ + ); + + await rewards.updateDarknodeRegistry(accounts[0]); + await rewards.updateDarknodeRegistry(darknodeRegistry); + }); + }); + + describe("community fund", () => { + it("only admin can update community fund", async () => { + await rewards + .updateCommunityFund(accounts[2], { from: accounts[2] }) + .should.be.rejectedWith( + /Ownable: caller is not the owner./ + ); + }); + + it("only admin can update community fund percent", async () => { + await rewards + .updateCommunityFundNumerator(0, { from: accounts[2] }) + .should.be.rejectedWith( + /Ownable: caller is not the owner./ + ); + }); + + it("can withdraw community fund rewards", async () => { + // register ETH token and two darknodes + await registerNode([1, 2]); + await STEPS.registerToken(rewards, [ETHEREUM, dai.address]); + await STEPS.waitForEpoch(rewards); + + // Add 101.00...01 DAI to rewards. + await STEPS.addRewards( + rewards, + dai.address, + new BN(101).mul(new BN(10).pow(new BN(18))).add(new BN(1)) + ); + + // Add 1 ETH to rewards. + await STEPS.addRewards( + rewards, + ETHEREUM, + new BN(1).mul(new BN(10).pow(new BN(18))) + ); + + await STEPS.changeCycle(rewards, 28 * DAYS); + + ( + await STEPS.withdrawToCommunityFund(rewards, [ + ETHEREUM, + dai.address + ]) + ).should.bignumber.greaterThan(0); + + // Second time - empty values. + ( + await STEPS.withdrawToCommunityFund(rewards, [ + ETHEREUM, + dai.address + ]) + ).should.bignumber.equal(0); + + await STEPS.deregisterToken(rewards, ETHEREUM); + await STEPS.deregisterToken(rewards, dai.address); + await deregisterNode([1, 2]); + await STEPS.waitForEpoch(rewards); + await STEPS.waitForEpoch(rewards); + await refundNode([1, 2]); + await STEPS.waitForEpoch(rewards); + }); + + it("can update community fund", async () => { + const communityFund = await rewards.communityFund.call(); + await rewards.updateCommunityFund(accounts[0]); + await rewards.updateCommunityFund(communityFund); + }); + + it("cannot change community fund percent to an invalid percent", async () => { + const denominator = await toBN( + rewards.HOURLY_PAYOUT_WITHHELD_DENOMINATOR.call() + ); + await rewards + .updateCommunityFundNumerator(denominator.plus(1).toFixed()) + .should.be.rejectedWith( + /ClaimlessRewards: invalid numerator/ + ); + }); + + it("can update community fund percent", async () => { + // register ETH token and two darknodes + await registerNode([1, 2]); + await STEPS.registerToken(rewards, [ETHEREUM, dai.address]); + await STEPS.waitForEpoch(rewards); + + // Ensure there are no community funds from previous tests. + ( + await STEPS.withdrawToCommunityFund(rewards, [ + ETHEREUM, + dai.address + ]) + ).should.bignumber.greaterThan(0); + + // Add 101.00...01 DAI to rewards. + await STEPS.addRewards( + rewards, + dai.address, + new BN(101).mul(new BN(10).pow(new BN(18))).add(new BN(1)) + ); + + // Add 1 ETH to rewards. + await STEPS.addRewards( + rewards, + ETHEREUM, + new BN(1).mul(new BN(10).pow(new BN(18))) + ); + + // Update community fund numerator to 0. + const oldCommunityFundPercent = await toBN( + rewards.communityFundNumerator.call() + ); + await rewards.updateCommunityFundNumerator(0); + + await STEPS.changeCycle(rewards, 28 * DAYS); + + ( + await STEPS.withdrawToCommunityFund(rewards, [ + ETHEREUM, + dai.address + ]) + ).should.bignumber.equal(0); + + // Second time - empty values. + ( + await STEPS.withdrawToCommunityFund(rewards, [ + ETHEREUM, + dai.address + ]) + ).should.bignumber.equal(0); + + await STEPS.deregisterToken(rewards, ETHEREUM); + await STEPS.deregisterToken(rewards, dai.address); + await deregisterNode([1, 2]); + await STEPS.waitForEpoch(rewards); + await STEPS.waitForEpoch(rewards); + await refundNode([1, 2]); + await STEPS.waitForEpoch(rewards); + + // Revert community fund numerator change. + await rewards.updateCommunityFundNumerator( + oldCommunityFundPercent.toFixed() + ); + }); + + it("can't set community fund to 0x0 or registered darknode", async () => { + await rewards + .updateCommunityFund(NULL) + .should.be.rejectedWith( + /ClaimlessRewards: invalid community fund address/ + ); + + await registerNode(1); + await rewards + .updateCommunityFund(ID(1)) + .should.be.rejectedWith( + /ClaimlessRewards: community fund must not be a registered darknode/ + ); + }); + + it("malicious operator can't withdraw community fund", async () => { + const communityFund = await rewards.communityFund.call(); + const malicious = accounts[4]; + await ren.transfer(malicious, MINIMUM_BOND); + await ren.approve(dnr.address, MINIMUM_BOND, { + from: malicious + }); + // Register the darknodes under the account address + await dnr.register(communityFund, PUBK(-1), { + from: malicious + }); + await STEPS.waitForEpoch(rewards); + + // Add 101.00...01 DAI to rewards. + await STEPS.addRewards( + rewards, + dai.address, + new BN(101).mul(new BN(10).pow(new BN(18))) + ); + await STEPS.changeCycle(rewards, 1 * HOURS); + + await STEPS.withdraw( + rewards, + communityFund, + dai.address + ).should.be.rejectedWith(/ClaimlessRewards: invalid node ID/); + }); + }); + }); + + const registerNode = async (array: number | number[], from?: string) => { + array = Array.isArray(array) ? array : [array]; + for (const i of array) { + await ren.transfer( + from || accounts[i % accounts.length], + MINIMUM_BOND + ); + await ren.approve(dnr.address, MINIMUM_BOND, { + from: from || accounts[i % accounts.length] + }); + // Register the darknodes under the account address + await dnr.register(ID(i), PUBK(i), { + from: from || accounts[i % accounts.length] + }); + } + }; + + const deregisterNode = async (array: number | number[], from?: string) => { + array = Array.isArray(array) ? array : [array]; + for (const i of array) { + await dnr.deregister(ID(i), { + from: from || accounts[i % accounts.length] + }); + } + }; + + const refundNode = async (array: number | number[], from?: string) => { + array = Array.isArray(array) ? array : [array]; + for (const i of array) { + await dnr.refund(ID(i), { + from: from || accounts[i % accounts.length] + }); + } + }; +}); diff --git a/test/ClaimlessRewards/steps.ts b/test/ClaimlessRewards/steps.ts new file mode 100644 index 00000000..25438982 --- /dev/null +++ b/test/ClaimlessRewards/steps.ts @@ -0,0 +1,494 @@ +import BigNumber from "bignumber.js"; +import { OrderedMap } from "immutable"; +import moment from "moment"; +import { + ClaimlessRewardsInstance, + DarknodePaymentInstance, + DarknodePaymentStoreContract, + DarknodeRegistryLogicV1Contract +} from "../../types/truffle-contracts"; +import { + ETHEREUM, + getBalance, + getDecimals, + getSymbol, + HOURS, + increaseTime, + NULL, + toBN, + transferToken, + waitForEpoch +} from "../helper/testUtils"; + +const DarknodePaymentStore: DarknodePaymentStoreContract = artifacts.require( + "DarknodePaymentStore" +); +const DarknodeRegistry: DarknodeRegistryLogicV1Contract = artifacts.require( + "DarknodeRegistryLogicV1" +); + +const registerToken = async ( + rewards: ClaimlessRewardsInstance, + tokens: string | string[] +) => { + tokens = Array.isArray(tokens) ? tokens : [tokens]; + + for (const token of tokens) { + // Precondition. The token is not registered. + (await rewards.isRegistered.call(token)).should.equal(false); + const allTokens = await rewards.getRegisteredTokens.call(); + + // Effect. Register the token. + await rewards.registerToken(token); + + // Postcondition. The token is registered. + (await rewards.isRegistered.call(token)).should.equal(true); + (await rewards.getRegisteredTokens.call()).should.deep.equal([ + ...allTokens, + token + ]); + } +}; + +const deregisterToken = async ( + rewards: ClaimlessRewardsInstance, + tokens: string | string[] +) => { + tokens = Array.isArray(tokens) ? tokens : [tokens]; + + for (const token of tokens) { + // Precondition. The token is registered. + (await rewards.isRegistered.call(token)).should.equal(true); + const allTokens = await rewards.getRegisteredTokens.call(); + + // Effect. Deregister the token. + await rewards.deregisterToken(token); + + // Postcondition. The token is not registered. + (await rewards.isRegistered.call(token)).should.equal(false); + (await rewards.getRegisteredTokens.call()).should.deep.equal( + allTokens.filter(x => x !== token) + ); + } +}; + +const changeCycle = async ( + rewards: ClaimlessRewardsInstance, + time: number, + epoch?: boolean +) => { + const latestTimestamp = await toBN(rewards.latestCycleTimestamp.call()); + const storeAddress = await rewards.store.call(); + const store = await DarknodePaymentStore.at(storeAddress); + const dnrAddress = await rewards.darknodeRegistry.call(); + const dnr = await DarknodeRegistry.at(dnrAddress); + const communityFund = await rewards.communityFund.call(); + + const tokens = await rewards.getRegisteredTokens.call(); + let freeBeforeMap = OrderedMap(); + let communityFundBalanceBeforeMap = OrderedMap(); + let darknodePoolBeforeMap = OrderedMap(); + let shareBeforeMap = OrderedMap(); + for (const token of tokens) { + const freeBefore = await toBN(store.availableBalance.call(token)); + freeBeforeMap = freeBeforeMap.set(token, freeBefore); + + const communityFundBalanceBefore = await toBN( + rewards.darknodeBalances.call(communityFund, token) + ); + communityFundBalanceBeforeMap = communityFundBalanceBeforeMap.set( + token, + communityFundBalanceBefore + ); + const darknodePoolBefore = await toBN( + rewards.darknodeBalances.call(NULL, token) + ); + darknodePoolBeforeMap = darknodePoolBeforeMap.set( + token, + darknodePoolBefore + ); + const shareBefore = await toBN( + rewards.cycleCumulativeTokenShares.call( + latestTimestamp.toFixed(), + token + ) + ); + shareBeforeMap = shareBeforeMap.set(token, shareBefore); + } + const shares = await toBN(dnr.numDarknodes.call()); + const epochTimestampCountBefore = await toBN( + rewards.epochTimestampsLength.call() + ); + + // Effect. Change the cycle. + let tx; + if (epoch) { + tx = await waitForEpoch(dnr); + } else { + await increaseTime(time); + tx = await rewards.changeCycle(); + } + + // Postcondition. Check that the cycle's timestamp is stored correctly. + const block = await web3.eth.getBlock(tx.receipt.blockNumber); + const timestamp = new BigNumber(block.timestamp); + const newLatestTimestamp = await toBN(rewards.latestCycleTimestamp.call()); + // Check if the epoch happened too recently to a cycle, so no cycle was + // called. + const expectedTimestamp = epoch + ? timestamp + : latestTimestamp.plus( + timestamp + .minus(latestTimestamp) + .minus(timestamp.minus(latestTimestamp).mod(1 * HOURS)) + ); + newLatestTimestamp.should.not.bignumber.equal(latestTimestamp); + newLatestTimestamp.should.bignumber.equal(expectedTimestamp); + const epochTimestampCountAfter = await toBN( + rewards.epochTimestampsLength.call() + ); + if (epoch) { + epochTimestampCountAfter.should.bignumber.equal( + epochTimestampCountBefore.plus(1) + ); + } + + // Postcondition. Check conditions for each token. + const hours = timestamp + .minus(latestTimestamp) + .dividedToIntegerBy(1 * HOURS) + .toNumber(); + const numerator = await toBN(rewards.hourlyPayoutWithheldNumerator.call()); + const denominator = await toBN( + rewards.HOURLY_PAYOUT_WITHHELD_DENOMINATOR.call() + ); + let numeratorSeries = numerator; + for (let i = 0; i < hours; i++) { + numeratorSeries = numeratorSeries + .times(numerator) + .div(denominator) + .integerValue(BigNumber.ROUND_DOWN); + } + const communityFundNumerator = await toBN( + rewards.communityFundNumerator.call() + ); + + for (const token of tokens) { + const freeBefore = freeBeforeMap.get(token); + const communityFundBalanceBefore = communityFundBalanceBeforeMap.get( + token + ); + const darknodePoolBefore = darknodePoolBeforeMap.get(token); + const shareBefore = shareBeforeMap.get(token); + + const totalWithheld = freeBefore + .times(numeratorSeries) + .div(denominator) + .integerValue(BigNumber.ROUND_DOWN); + + const totalPaidout = freeBefore.minus(totalWithheld); + const communityFundPaidout = totalPaidout + .times(communityFundNumerator) + .div(denominator) + .integerValue(BigNumber.ROUND_DOWN); + + const darknodePaidout = totalPaidout.minus(communityFundPaidout); + const share = shares.isZero() + ? new BigNumber(0) + : darknodePaidout.div(shares).integerValue(BigNumber.ROUND_DOWN); + + const darknodePaidoutAdjusted = share.times(shares); + + // Postcondition. The stored share is the correct amount. + const shareAfter = await toBN( + rewards.cycleCumulativeTokenShares.call( + newLatestTimestamp.toFixed(), + token + ) + ); + + shareAfter.minus(shareBefore).should.bignumber.equal(share); + + // Postcondition. The darknode pool increased by the correct amount. + const darknodePoolAfter = await toBN( + rewards.darknodeBalances.call(NULL, token) + ); + darknodePoolAfter + .minus(darknodePoolBefore) + .should.bignumber.equal(darknodePaidoutAdjusted); + + // Postcondition. The community fund increased by the correct amount. + const communityFundBalanceAfter = await toBN( + rewards.darknodeBalances.call(communityFund, token) + ); + communityFundBalanceAfter + .minus(communityFundBalanceBefore) + .should.bignumber.equal(communityFundPaidout); + + // Postcondition. The free amount decreased by the correct amount. + const freeAfter = await toBN(store.availableBalance.call(token)); + freeBefore + .minus(freeAfter) + .should.bignumber.equal( + communityFundPaidout.plus(darknodePaidoutAdjusted) + ); + } + + console.log( + `New cycle after ${moment + .duration(newLatestTimestamp.minus(latestTimestamp).times(1000)) + .humanize()}.` + ); + + return hours; +}; + +const _waitForEpoch = async (rewards: ClaimlessRewardsInstance) => { + await changeCycle(rewards, 0, true); +}; + +const addRewards = async ( + rewards: ClaimlessRewardsInstance | DarknodePaymentInstance, + token: string, + amount: BigNumber | number | string | BN +) => { + const storeAddress = await rewards.store.call(); + const balanceBefore = await getBalance(token, storeAddress); + const store = await DarknodePaymentStore.at(storeAddress); + const freeBefore = await toBN(store.availableBalance.call(token)); + + // Effect. Transfer token to the store contract. + await transferToken(token, storeAddress, amount); + + // Postcondition. The balance after has increased by the amount added. + const balanceAfter = await getBalance(token, storeAddress); + balanceAfter.minus(balanceBefore).should.bignumber.equal(amount); + const freeAfter = await toBN(store.availableBalance.call(token)); + freeAfter.minus(freeBefore).should.bignumber.equal(amount); + + console.log( + `There are now ${new BigNumber(freeAfter.toString()) + .div(new BigNumber(10).exponentiatedBy(await getDecimals(token))) + .toFixed()} ${await getSymbol(token)} in rewards` + ); +}; + +const withdraw = async ( + rewards: ClaimlessRewardsInstance, + darknodes: string | string[], + tokens: string | string[], + from?: string +) => { + tokens = Array.isArray(tokens) ? tokens : [tokens]; + darknodes = Array.isArray(darknodes) ? darknodes : [darknodes]; + from = from || darknodes[0]; + + // Store the balance for each token, and the withdrawable amount for each + // darknode and token. + let withdrawableMap = OrderedMap>(); + let balanceBeforeMap = OrderedMap(); + // let legacyBalanceMap = OrderedMap>(); + // let shareBeforeMap = OrderedMap>(); + const storeAddress = await rewards.store.call(); + const store = await DarknodePaymentStore.at(storeAddress); + const currentCycle = await toBN(rewards.latestCycleTimestamp.call()); + const dnrAddress = await rewards.darknodeRegistry.call(); + const dnr = await DarknodeRegistry.at(dnrAddress); + for (const token of tokens) { + const balanceBefore = await getBalance(token, from); + balanceBeforeMap = balanceBeforeMap.set(token, balanceBefore); + + for (const darknode of darknodes) { + const withdrawable = await toBN( + rewards.darknodeBalances.call(darknode, token) + ); + withdrawableMap = withdrawableMap.set( + darknode, + ( + withdrawableMap.get(darknode) || + OrderedMap() + ).set(token, withdrawable) + ); + + // Precondition. The withdrawable amount should be the correct + // amount, including any legacy balance left-over. + const nodeRegistered = await toBN( + dnr.darknodeRegisteredAt.call(darknode) + ); + const nodeDeregistered = await toBN( + dnr.darknodeDeregisteredAt.call(darknode) + ); + // Node not registered. + if (nodeRegistered.isZero()) { + continue; + } + const legacyBalance = await toBN( + store.darknodeBalances.call(darknode, token) + ); + let lastWithdrawn = await toBN( + rewards.rewardsLastClaimed.call(darknode, token) + ); + if (lastWithdrawn.lt(nodeRegistered)) { + lastWithdrawn = await toBN( + rewards.getNextEpochFromTimestamp.call( + nodeRegistered.toFixed() + ) + ); + } + let claimableUntil = currentCycle; + if (nodeDeregistered.isGreaterThan(0)) { + const deregisteredCycle = await toBN( + rewards.getNextEpochFromTimestamp.call( + nodeDeregistered.toFixed() + ) + ); + if (deregisteredCycle.isGreaterThan(0)) { + claimableUntil = deregisteredCycle; + } + } + const shareBefore = await toBN( + rewards.cycleCumulativeTokenShares.call( + lastWithdrawn.toFixed(), + token + ) + ); + const shareAfter = await toBN( + rewards.cycleCumulativeTokenShares.call( + claimableUntil.toFixed(), + token + ) + ); + withdrawable + .minus(legacyBalance) + .should.bignumber.equal(shareAfter.minus(shareBefore)); + } + } + + // Effect. + let tx; + if (tokens.length !== 1) { + tx = await rewards.withdrawMultiple(darknodes, tokens, { from }); + } else if (darknodes.length !== 1) { + tx = await rewards.withdrawToken(darknodes, tokens[0], { from }); + } else { + tx = await rewards.withdraw(darknodes[0], tokens[0], { from }); + } + + // Postcondition. Check conditions for each token and darknode. + for (const token of tokens) { + const balanceBefore = balanceBeforeMap.get(token); + + let withdrawableSum = new BigNumber(0); + for (const darknode of darknodes) { + const withdrawable = withdrawableMap.get(darknode).get(token); + withdrawableSum = withdrawableSum.plus(withdrawable); + + const postWithdrawable = await toBN( + rewards.darknodeBalances.call(darknode, token) + ); + postWithdrawable.should.bignumber.equal(0); + + console.log( + `${darknode.slice(0, 8)}... withdrew ${withdrawable + .div( + new BigNumber(10).exponentiatedBy( + await getDecimals(token) + ) + ) + .toFixed()} ${await getSymbol(token)}` + ); + } + + // Postcondition. The token balance of the user withdrawing increased + // by the expected amount. + const transactionDetails = await web3.eth.getTransaction(tx.tx); + let gasFee = new BigNumber(0); + if (token === ETHEREUM) { + const { gasPrice } = transactionDetails; + const { gasUsed } = tx.receipt; + gasFee = new BigNumber(gasUsed).times(gasPrice); + } + (await getBalance(token, from)).should.bignumber.equal( + balanceBefore.plus(withdrawableSum).minus(gasFee) + ); + } + + if (darknodes.length && tokens.length) { + return withdrawableMap.get(darknodes[0]).get(tokens[0]); + } else { + return new BigNumber(0); + } +}; + +const withdrawToCommunityFund = async ( + rewards: ClaimlessRewardsInstance, + tokens: string | string[], + from?: string +) => { + from = from || (await web3.eth.getAccounts())[0]; + tokens = Array.isArray(tokens) ? tokens : [tokens]; + + // Store the balance for each token, and the withdrawable amount for each + // darknode and token. + const communityFund = await rewards.communityFund.call(); + let withdrawableMap = OrderedMap(); + let balanceBeforeMap = OrderedMap(); + for (const token of tokens) { + const balanceBefore = await getBalance(token, communityFund); + balanceBeforeMap = balanceBeforeMap.set(token, balanceBefore); + + const withdrawable = await toBN( + rewards.darknodeBalances.call(communityFund, token) + ); + withdrawableMap = withdrawableMap.set(token, withdrawable); + } + + // Effect. + const tx = await rewards.withdrawToCommunityFund(tokens); + + // Postcondition. Check conditions for each token and darknode. + for (const token of tokens) { + const balanceBefore = balanceBeforeMap.get(token); + const withdrawableBefore = withdrawableMap.get(token); + + console.log( + `Withdrew ${withdrawableBefore + .div( + new BigNumber(10).exponentiatedBy(await getDecimals(token)) + ) + .toFixed()} ${await getSymbol(token)} to the community fund.` + ); + + // Postcondition. The token balance of the user withdrawing increased + // by the expected amount. + const transactionDetails = await web3.eth.getTransaction(tx.tx); + let gasFee = new BigNumber(0); + if (token === ETHEREUM && from === communityFund) { + const { gasPrice } = transactionDetails; + const { gasUsed } = tx.receipt; + gasFee = new BigNumber(gasUsed).times(gasPrice); + } + (await getBalance(token, communityFund)).should.bignumber.equal( + balanceBefore.plus(withdrawableBefore).minus(gasFee) + ); + ( + await toBN(rewards.darknodeBalances.call(communityFund, token)) + ).should.bignumber.equal(0); + } + + if (tokens.length) { + return withdrawableMap.get(tokens[0]); + } else { + return new BigNumber(0); + } +}; + +export const STEPS = { + registerToken, + deregisterToken, + changeCycle, + addRewards, + withdraw, + withdrawToCommunityFund, + waitForEpoch: _waitForEpoch +}; diff --git a/test/DarknodePayment.ts b/test/DarknodePayment.ts index be82b42d..61a43209 100644 --- a/test/DarknodePayment.ts +++ b/test/DarknodePayment.ts @@ -234,9 +234,9 @@ contract("DarknodePayment", (accounts: string[]) => { }); it("properly sets index", async () => { - const token1 = await ERC20.new(); - const token2 = await ERC20.new(); - const token3 = await ERC20.new(); + const token1 = await ERC20.new("TOKEN1"); + const token2 = await ERC20.new("TOKEN2"); + const token3 = await ERC20.new("TOKEN3"); const one = token1.address; const two = token2.address; const three = token3.address; diff --git a/test/ERC20WithPermit.ts b/test/ERC20WithPermit.ts index cfa6e00f..7bcecd3f 100644 --- a/test/ERC20WithPermit.ts +++ b/test/ERC20WithPermit.ts @@ -20,9 +20,7 @@ import { increaseTime, NULL, NULL32, - Ox, - randomID, - sleep + Ox } from "./helper/testUtils"; const RenERC20LogicV1 = artifacts.require("RenERC20LogicV1"); diff --git a/test/helper/testUtils.ts b/test/helper/testUtils.ts index 991606a4..5348f7aa 100644 --- a/test/helper/testUtils.ts +++ b/test/helper/testUtils.ts @@ -128,8 +128,7 @@ export async function waitForEpoch(dnr: DarknodeRegistryLogicV1Instance) { while (true) { // Must be an on-chain call, or the time won't be updated try { - await dnr.epoch(); - return; + return await dnr.epoch(); } catch (err) { // epoch reverted, epoch interval hasn't passed } @@ -139,10 +138,6 @@ export async function waitForEpoch(dnr: DarknodeRegistryLogicV1Instance) { } } -export const randomID = () => { - return keccak256(Math.random().toString()); -}; - export const deployProxy = async ( web3: Web3, ProxyContract: Truffle.Contract, @@ -176,3 +171,81 @@ export const sigToString = (sig: ECDSASignature) => { export const sleep = (ms: number) => new Promise(resolve => setTimeout(resolve, ms)); + +export const HOURS = 60 * 60; +export const DAYS = 24 * HOURS; + +export const getBalance = async ( + token: string, + address: string +): Promise => { + if (token === ETHEREUM) { + return new BigNumber((await web3.eth.getBalance(address)).toString()); + } else { + const tokenContract = await ERC20.at(token); + return new BigNumber( + (await tokenContract.balanceOf.call(address)).toString() + ); + } +}; + +export const getSymbol = async (token: string): Promise => { + if (token === ETHEREUM) { + return "ETH"; + } else { + const tokenContract = await ERC20.at(token); + return await tokenContract.symbol.call(); + } +}; + +export const getDecimals = async (token: string): Promise => { + if (token === ETHEREUM) { + return 18; + } else { + const tokenContract = await ERC20.at(token); + return parseInt((await tokenContract.decimals.call()).toString(), 10); + } +}; + +export const transferToken = async ( + token: string, + to: string, + amount: BigNumber | string | number | BN +): Promise => { + if (token === ETHEREUM) { + const from = (await web3.eth.getAccounts())[0]; + return ((await web3.eth.sendTransaction({ + to, + value: amount.toString(), + from + })) as unknown) as TransactionReceipt; + } else { + const tokenContract = await ERC20.at(token); + return (await tokenContract.transfer(to, amount.toString())).receipt; + } +}; + +export const isPromise = (x: any): x is Promise => { + return !!x.then; +}; + +export const toBN = < + X extends (string | number | BN) | Promise +>( + inp: X +): X extends string | number | BN ? BigNumber : Promise => { + if (isPromise(inp)) { + return inp.then(x => new BigNumber(x.toString())) as X extends + | string + | number + | BN + ? BigNumber + : Promise; + } else { + return new BigNumber(inp.toString()) as X extends string | number | BN + ? BigNumber + : Promise; + } +}; + +export const range = (n: number) => Array.from(new Array(n)).map((_, i) => i); diff --git a/yarn.lock b/yarn.lock index 3b0ecae0..aedfb448 100644 --- a/yarn.lock +++ b/yarn.lock @@ -1741,6 +1741,11 @@ dependencies: "@types/node" "*" +"@types/seedrandom@^3.0.0": + version "3.0.0" + resolved "https://registry.yarnpkg.com/@types/seedrandom/-/seedrandom-3.0.0.tgz#13f4d71aa58cf6068a2e75261a4580fb71dc84e6" + integrity sha512-Jr03BtXs7v6M/wtTum2VOMLBq7R8zpjdZLynhA/IOJq83czXrnVo8iSUI05gcq8Ecq0Swt+nuoK3y2ji/TWyMA== + "@types/serve-static@*": version "1.13.9" resolved "https://registry.yarnpkg.com/@types/serve-static/-/serve-static-1.13.9.tgz#aacf28a85a05ee29a11fb7c3ead935ac56f33e4e" @@ -9689,6 +9694,11 @@ secp256k1@^4.0.1: node-addon-api "^2.0.0" node-gyp-build "^4.2.0" +seedrandom@^3.0.5: + version "3.0.5" + resolved "https://registry.yarnpkg.com/seedrandom/-/seedrandom-3.0.5.tgz#54edc85c95222525b0c7a6f6b3543d8e0b3aa0a7" + integrity sha512-8OwmbklUNzwezjGInmZ+2clQmExQPvomqjL7LFqOYqtmuxRgQYqOD3mHaU+MvZn5FLUeVxVfQjwLZW/n/JFuqg== + seek-bzip@^1.0.5: version "1.0.5" resolved "https://registry.yarnpkg.com/seek-bzip/-/seek-bzip-1.0.5.tgz#cfe917cb3d274bcffac792758af53173eb1fabdc" From 02c3c5b63142d7a8ef7681ef62c26da7e71b545a Mon Sep 17 00:00:00 2001 From: noiach Date: Thu, 18 Mar 2021 15:36:26 +1100 Subject: [PATCH 04/13] feat: updated 'getNextEpochFromTimestamp' comments --- contracts/DarknodePayment/ClaimlessRewards.sol | 8 +++----- 1 file changed, 3 insertions(+), 5 deletions(-) diff --git a/contracts/DarknodePayment/ClaimlessRewards.sol b/contracts/DarknodePayment/ClaimlessRewards.sol index ccc97d94..21d9049a 100644 --- a/contracts/DarknodePayment/ClaimlessRewards.sol +++ b/contracts/DarknodePayment/ClaimlessRewards.sol @@ -493,19 +493,17 @@ contract ClaimlessRewardsWithdrawHandler is uint256 start = 0; uint256 end = epochTimestamps.length.sub(1); - // Iterate while start not meets end + // Binary search. Relies on `epochTimestamps` being sorted. while (start <= end) { - // Find the mid index + // Check if the middle element satisfies the conditions. uint256 mid = (start + end) / 2; - - // If element is present at mid, return True if ( epochTimestamps[mid] >= _target && (mid == 0 || epochTimestamps[mid - 1] < _target) ) { return epochTimestamps[mid]; } - // Else look in left or right half accordingly + // Restrict the search space. else if (epochTimestamps[mid] < _target) { start = mid + 1; } else { From 0e78732852766826bed6ed55480067191dfc3071 Mon Sep 17 00:00:00 2001 From: noiach Date: Mon, 21 Jun 2021 22:29:37 +1000 Subject: [PATCH 05/13] feat: added DarknodePaymentMigrator and DarknodeRegistryForwarder --- .../DarknodePaymentMigrator.sol | 63 +++++++++++++++++++ .../DarknodeRegistryForwarder.sol | 45 +++++++++++++ 2 files changed, 108 insertions(+) create mode 100644 contracts/DarknodePayment/DarknodePaymentMigrator.sol create mode 100644 contracts/DarknodePayment/DarknodeRegistryForwarder.sol diff --git a/contracts/DarknodePayment/DarknodePaymentMigrator.sol b/contracts/DarknodePayment/DarknodePaymentMigrator.sol new file mode 100644 index 00000000..1df937f4 --- /dev/null +++ b/contracts/DarknodePayment/DarknodePaymentMigrator.sol @@ -0,0 +1,63 @@ +pragma solidity 0.5.17; + +import "@openzeppelin/contracts-ethereum-package/contracts/math/SafeMath.sol"; +import "@openzeppelin/contracts-ethereum-package/contracts/token/ERC20/ERC20.sol"; +import "@openzeppelin/contracts-ethereum-package/contracts/token/ERC20/SafeERC20.sol"; + +import "../Governance/Claimable.sol"; +import "./DarknodePaymentStore.sol"; +import "./DarknodePayment.sol"; + +/// @notice The DarknodePaymentMigrator migrates unclaimed funds from the +/// DarknodePayment contract. In a single transaction, it claims the store +/// ownership from the DNP contract, migrates unclaimed fees and then returns +/// the store ownership back to the DNP. +contract DarknodePaymentMigrator is Claimable { + DarknodePayment public dnp; + address[] public tokens; + + constructor(DarknodePayment _dnp, address[] memory _tokens) public { + Claimable.initialize(msg.sender); + dnp = _dnp; + tokens = _tokens; + } + + function claimStoreOwnership() external { + require(msg.sender == address(dnp), "Not darknode payment contract"); + DarknodePaymentStore store = dnp.store(); + + store.claimOwnership(); + + for (uint256 i = 0; i < tokens.length; i++) { + address token = tokens[i]; + + uint256 unclaimed = store.availableBalance(token); + + store.incrementDarknodeBalance(address(0x0), token, unclaimed); + + store.transfer( + address(0x0), + token, + unclaimed, + _payableAddress(owner()) + ); + } + + store.transferOwnership(address(dnp)); + dnp.claimStoreOwnership(); + + require( + store.owner() == address(dnp), + "Store ownership not transferred back." + ); + } + + // Cast an address to a payable address + function _payableAddress(address a) + internal + pure + returns (address payable) + { + return address(uint160(address(a))); + } +} diff --git a/contracts/DarknodePayment/DarknodeRegistryForwarder.sol b/contracts/DarknodePayment/DarknodeRegistryForwarder.sol new file mode 100644 index 00000000..55af44cf --- /dev/null +++ b/contracts/DarknodePayment/DarknodeRegistryForwarder.sol @@ -0,0 +1,45 @@ +pragma solidity 0.5.17; + +import "../DarknodeRegistry/DarknodeRegistry.sol"; + +/// @notice DarknodeRegistryForwarder implements the DNR's methods that are used +/// by the DNP, and it forwards them all to the DNR except +/// `isRegisteredInPreviousEpoch`, for which it returns false in order to make +/// calls to `claim` revert. +contract DarknodeRegistryForwarder { + DarknodeRegistryLogicV1 dnr; + + constructor(DarknodeRegistryLogicV1 _dnr) public { + dnr = _dnr; + } + + /// @notice Returns if a darknode is in the registered state. + function isRegistered(address _darknodeID) public view returns (bool) { + return dnr.isRegistered(_darknodeID); + } + + function currentEpoch() public view returns (uint256, uint256) { + return dnr.currentEpoch(); + } + + function getDarknodeOperator(address _darknodeID) + public + view + returns (address payable) + { + return dnr.getDarknodeOperator(_darknodeID); + } + + function isRegisteredInPreviousEpoch(address _darknodeID) + public + view + returns (bool) + { + // return dnr.isRegisteredInPreviousEpoch(_darknodeID); + return false; + } + + function numDarknodesPreviousEpoch() public view returns (uint256) { + return dnr.numDarknodesPreviousEpoch(); + } +} From ae5fa14bff294830713fbcb63d6d9ca2d140e5f4 Mon Sep 17 00:00:00 2001 From: noiach Date: Thu, 19 Aug 2021 16:16:18 +1000 Subject: [PATCH 06/13] feat: removedd gateway contracts, added darknode helper contracts --- build/chaosnet/BCHGateway.json | 214 --- build/chaosnet/BTCGateway.json | 214 --- build/chaosnet/BasicAdapter.json | 295 ---- build/chaosnet/DarknodePayment.json | 1052 ------------- build/chaosnet/DarknodePaymentStore.json | 341 ---- build/chaosnet/DarknodeRegistryLogicV1.json | 1387 ---------------- build/chaosnet/DarknodeRegistryProxy.json | 214 --- build/chaosnet/DarknodeRegistryStore.json | 464 ------ build/chaosnet/DarknodeSlasher.json | 608 -------- build/chaosnet/GatewayLogicV1.json | 720 --------- build/chaosnet/GatewayRegistry.json | 557 ------- build/chaosnet/ProtocolLogicV1.json | 574 ------- build/chaosnet/ProtocolProxy.json | 213 --- build/chaosnet/RenBCH.json | 214 --- build/chaosnet/RenBTC.json | 214 --- build/chaosnet/RenERC20LogicV1.json | 938 ----------- build/chaosnet/RenProxyAdmin.json | 218 --- build/chaosnet/RenToken.json | 758 --------- build/chaosnet/RenZEC.json | 214 --- build/chaosnet/ZECGateway.json | 214 --- build/clean.js | 55 - build/devnet/BCHGateway.json | 214 --- build/devnet/BTCGateway.json | 214 --- build/devnet/BasicAdapter.json | 295 ---- build/devnet/DarknodePayment.json | 1052 ------------- build/devnet/DarknodePaymentStore.json | 342 ---- build/devnet/DarknodeRegistryLogicV1.json | 1388 ----------------- build/devnet/DarknodeRegistryProxy.json | 214 --- build/devnet/DarknodeRegistryStore.json | 464 ------ build/devnet/DarknodeSlasher.json | 609 -------- build/devnet/GatewayLogicV1.json | 720 --------- build/devnet/GatewayRegistry.json | 557 ------- build/devnet/ProtocolLogicV1.json | 575 ------- build/devnet/ProtocolProxy.json | 214 --- build/devnet/RenBCH.json | 214 --- build/devnet/RenBTC.json | 214 --- build/devnet/RenERC20LogicV1.json | 938 ----------- build/devnet/RenProxyAdmin.json | 219 --- build/devnet/RenToken.json | 758 --------- build/devnet/RenZEC.json | 214 --- build/devnet/ZECGateway.json | 214 --- build/erc/ERC20.json | 211 --- build/localnet/BCHGateway.json | 214 --- build/localnet/BTCGateway.json | 213 --- build/localnet/BasicAdapter.json | 294 ---- build/localnet/DarknodePayment.json | 1052 ------------- build/localnet/DarknodePaymentStore.json | 342 ---- build/localnet/DarknodeRegistryLogicV1.json | 1388 ----------------- build/localnet/DarknodeRegistryProxy.json | 214 --- build/localnet/DarknodeRegistryStore.json | 464 ------ build/localnet/DarknodeSlasher.json | 609 -------- build/localnet/GatewayLogicV1.json | 719 --------- build/localnet/GatewayRegistry.json | 556 ------- build/localnet/ProtocolLogicV1.json | 575 ------- build/localnet/ProtocolProxy.json | 214 --- build/localnet/RenBCH.json | 214 --- build/localnet/RenBTC.json | 213 --- build/localnet/RenERC20LogicV1.json | 937 ----------- build/localnet/RenProxyAdmin.json | 219 --- build/localnet/RenToken.json | 757 --------- build/localnet/RenZEC.json | 214 --- build/localnet/ZECGateway.json | 214 --- build/mainnet/BCHGateway.json | 213 --- build/mainnet/BTCGateway.json | 213 --- build/mainnet/BasicAdapter.json | 294 ---- build/mainnet/DarknodePayment.json | 1051 ------------- build/mainnet/DarknodePaymentStore.json | 341 ---- build/mainnet/DarknodeRegistryLogicV1.json | 1387 ---------------- build/mainnet/DarknodeRegistryProxy.json | 213 --- build/mainnet/DarknodeRegistryStore.json | 463 ------ build/mainnet/DarknodeSlasher.json | 608 -------- build/mainnet/GatewayLogicV1.json | 719 --------- build/mainnet/GatewayRegistry.json | 556 ------- build/mainnet/ProtocolLogicV1.json | 574 ------- build/mainnet/ProtocolProxy.json | 213 --- build/mainnet/RenBCH.json | 213 --- build/mainnet/RenBTC.json | 213 --- build/mainnet/RenERC20LogicV1.json | 937 ----------- build/mainnet/RenProxyAdmin.json | 218 --- build/mainnet/RenToken.json | 757 --------- build/mainnet/RenZEC.json | 213 --- build/mainnet/ZECGateway.json | 213 --- build/testnet/BCHGateway.json | 214 --- build/testnet/BTCGateway.json | 213 --- build/testnet/BasicAdapter.json | 294 ---- build/testnet/DarknodePayment.json | 1052 ------------- build/testnet/DarknodePaymentStore.json | 342 ---- build/testnet/DarknodeRegistryLogicV1.json | 1388 ----------------- build/testnet/DarknodeRegistryProxy.json | 214 --- build/testnet/DarknodeRegistryStore.json | 464 ------ build/testnet/DarknodeSlasher.json | 609 -------- build/testnet/GatewayLogicV1.json | 719 --------- build/testnet/GatewayRegistry.json | 556 ------- build/testnet/ProtocolLogicV1.json | 575 ------- build/testnet/ProtocolProxy.json | 214 --- build/testnet/RenBCH.json | 213 --- build/testnet/RenBTC.json | 213 --- build/testnet/RenERC20LogicV1.json | 937 ----------- build/testnet/RenProxyAdmin.json | 219 --- build/testnet/RenToken.json | 757 --------- build/testnet/RenZEC.json | 213 --- build/testnet/ZECGateway.json | 213 --- contracts/Bindings.sol | 4 +- contracts/DarknodePayment/ClaimRewards.sol | 145 ++ .../DarknodePaymentMigrator.sol | 20 +- contracts/DarknodePayment/ValidString.sol | 23 + .../DarknodeRegistry/GetOperatorDarknodes.sol | 42 + contracts/Gateway/ERC20WithPermit.sol | 90 -- contracts/Gateway/ERC20WithRate.sol | 62 - contracts/Gateway/Gateway.sol | 329 ---- contracts/Gateway/GatewayRegistry.sol | 232 --- contracts/Gateway/RenERC20.sol | 106 -- contracts/Gateway/adapters/BasicAdapter.sol | 77 - contracts/Gateway/examples/README.md | 9 - contracts/Gateway/examples/Vesting.sol | 144 -- contracts/Gateway/interfaces/IGateway.sol | 40 - .../Gateway/interfaces/IGatewayRegistry.sol | 68 - contracts/Protocol/Protocol.sol | 178 +-- migrations/1_darknodes.js | 100 +- migrations/2_shifter.js | 284 ---- package.json | 1 + templates/contract.hbs | 121 ++ templates/helpers.js | 13 + templates/prelude.sample.hbs | 3 + test/DarknodePayment.ts | 20 +- test/DarknodeRegistry.ts | 39 +- truffle.js | 23 +- 127 files changed, 506 insertions(+), 50035 deletions(-) delete mode 100644 build/chaosnet/BCHGateway.json delete mode 100644 build/chaosnet/BTCGateway.json delete mode 100644 build/chaosnet/BasicAdapter.json delete mode 100644 build/chaosnet/DarknodePayment.json delete mode 100644 build/chaosnet/DarknodePaymentStore.json delete mode 100644 build/chaosnet/DarknodeRegistryLogicV1.json delete mode 100644 build/chaosnet/DarknodeRegistryProxy.json delete mode 100644 build/chaosnet/DarknodeRegistryStore.json delete mode 100644 build/chaosnet/DarknodeSlasher.json delete mode 100644 build/chaosnet/GatewayLogicV1.json delete mode 100644 build/chaosnet/GatewayRegistry.json delete mode 100644 build/chaosnet/ProtocolLogicV1.json delete mode 100644 build/chaosnet/ProtocolProxy.json delete mode 100644 build/chaosnet/RenBCH.json delete mode 100644 build/chaosnet/RenBTC.json delete mode 100644 build/chaosnet/RenERC20LogicV1.json delete mode 100644 build/chaosnet/RenProxyAdmin.json delete mode 100644 build/chaosnet/RenToken.json delete mode 100644 build/chaosnet/RenZEC.json delete mode 100644 build/chaosnet/ZECGateway.json delete mode 100644 build/clean.js delete mode 100644 build/devnet/BCHGateway.json delete mode 100644 build/devnet/BTCGateway.json delete mode 100644 build/devnet/BasicAdapter.json delete mode 100644 build/devnet/DarknodePayment.json delete mode 100644 build/devnet/DarknodePaymentStore.json delete mode 100644 build/devnet/DarknodeRegistryLogicV1.json delete mode 100644 build/devnet/DarknodeRegistryProxy.json delete mode 100644 build/devnet/DarknodeRegistryStore.json delete mode 100644 build/devnet/DarknodeSlasher.json delete mode 100644 build/devnet/GatewayLogicV1.json delete mode 100644 build/devnet/GatewayRegistry.json delete mode 100644 build/devnet/ProtocolLogicV1.json delete mode 100644 build/devnet/ProtocolProxy.json delete mode 100644 build/devnet/RenBCH.json delete mode 100644 build/devnet/RenBTC.json delete mode 100644 build/devnet/RenERC20LogicV1.json delete mode 100644 build/devnet/RenProxyAdmin.json delete mode 100644 build/devnet/RenToken.json delete mode 100644 build/devnet/RenZEC.json delete mode 100644 build/devnet/ZECGateway.json delete mode 100644 build/erc/ERC20.json delete mode 100644 build/localnet/BCHGateway.json delete mode 100644 build/localnet/BTCGateway.json delete mode 100644 build/localnet/BasicAdapter.json delete mode 100644 build/localnet/DarknodePayment.json delete mode 100644 build/localnet/DarknodePaymentStore.json delete mode 100644 build/localnet/DarknodeRegistryLogicV1.json delete mode 100644 build/localnet/DarknodeRegistryProxy.json delete mode 100644 build/localnet/DarknodeRegistryStore.json delete mode 100644 build/localnet/DarknodeSlasher.json delete mode 100644 build/localnet/GatewayLogicV1.json delete mode 100644 build/localnet/GatewayRegistry.json delete mode 100644 build/localnet/ProtocolLogicV1.json delete mode 100644 build/localnet/ProtocolProxy.json delete mode 100644 build/localnet/RenBCH.json delete mode 100644 build/localnet/RenBTC.json delete mode 100644 build/localnet/RenERC20LogicV1.json delete mode 100644 build/localnet/RenProxyAdmin.json delete mode 100644 build/localnet/RenToken.json delete mode 100644 build/localnet/RenZEC.json delete mode 100644 build/localnet/ZECGateway.json delete mode 100644 build/mainnet/BCHGateway.json delete mode 100644 build/mainnet/BTCGateway.json delete mode 100644 build/mainnet/BasicAdapter.json delete mode 100644 build/mainnet/DarknodePayment.json delete mode 100644 build/mainnet/DarknodePaymentStore.json delete mode 100644 build/mainnet/DarknodeRegistryLogicV1.json delete mode 100644 build/mainnet/DarknodeRegistryProxy.json delete mode 100644 build/mainnet/DarknodeRegistryStore.json delete mode 100644 build/mainnet/DarknodeSlasher.json delete mode 100644 build/mainnet/GatewayLogicV1.json delete mode 100644 build/mainnet/GatewayRegistry.json delete mode 100644 build/mainnet/ProtocolLogicV1.json delete mode 100644 build/mainnet/ProtocolProxy.json delete mode 100644 build/mainnet/RenBCH.json delete mode 100644 build/mainnet/RenBTC.json delete mode 100644 build/mainnet/RenERC20LogicV1.json delete mode 100644 build/mainnet/RenProxyAdmin.json delete mode 100644 build/mainnet/RenToken.json delete mode 100644 build/mainnet/RenZEC.json delete mode 100644 build/mainnet/ZECGateway.json delete mode 100644 build/testnet/BCHGateway.json delete mode 100644 build/testnet/BTCGateway.json delete mode 100644 build/testnet/BasicAdapter.json delete mode 100644 build/testnet/DarknodePayment.json delete mode 100644 build/testnet/DarknodePaymentStore.json delete mode 100644 build/testnet/DarknodeRegistryLogicV1.json delete mode 100644 build/testnet/DarknodeRegistryProxy.json delete mode 100644 build/testnet/DarknodeRegistryStore.json delete mode 100644 build/testnet/DarknodeSlasher.json delete mode 100644 build/testnet/GatewayLogicV1.json delete mode 100644 build/testnet/GatewayRegistry.json delete mode 100644 build/testnet/ProtocolLogicV1.json delete mode 100644 build/testnet/ProtocolProxy.json delete mode 100644 build/testnet/RenBCH.json delete mode 100644 build/testnet/RenBTC.json delete mode 100644 build/testnet/RenERC20LogicV1.json delete mode 100644 build/testnet/RenProxyAdmin.json delete mode 100644 build/testnet/RenToken.json delete mode 100644 build/testnet/RenZEC.json delete mode 100644 build/testnet/ZECGateway.json create mode 100644 contracts/DarknodePayment/ClaimRewards.sol create mode 100644 contracts/DarknodePayment/ValidString.sol create mode 100644 contracts/DarknodeRegistry/GetOperatorDarknodes.sol delete mode 100644 contracts/Gateway/ERC20WithPermit.sol delete mode 100644 contracts/Gateway/ERC20WithRate.sol delete mode 100644 contracts/Gateway/Gateway.sol delete mode 100644 contracts/Gateway/GatewayRegistry.sol delete mode 100644 contracts/Gateway/RenERC20.sol delete mode 100644 contracts/Gateway/adapters/BasicAdapter.sol delete mode 100644 contracts/Gateway/examples/README.md delete mode 100644 contracts/Gateway/examples/Vesting.sol delete mode 100644 contracts/Gateway/interfaces/IGateway.sol delete mode 100644 contracts/Gateway/interfaces/IGatewayRegistry.sol delete mode 100644 migrations/2_shifter.js create mode 100644 templates/contract.hbs create mode 100644 templates/helpers.js create mode 100644 templates/prelude.sample.hbs diff --git a/build/chaosnet/BCHGateway.json b/build/chaosnet/BCHGateway.json deleted file mode 100644 index 2d18f561..00000000 --- a/build/chaosnet/BCHGateway.json +++ /dev/null @@ -1,214 +0,0 @@ -{ - "contractName": "BCHGateway", - "abi": [ - { - "anonymous": false, - "inputs": [ - { - "indexed": false, - "internalType": "address", - "name": "previousAdmin", - "type": "address" - }, - { - "indexed": false, - "internalType": "address", - "name": "newAdmin", - "type": "address" - } - ], - "name": "AdminChanged", - "type": "event" - }, - { - "anonymous": false, - "inputs": [ - { - "indexed": true, - "internalType": "address", - "name": "implementation", - "type": "address" - } - ], - "name": "Upgraded", - "type": "event" - }, - { - "payable": true, - "stateMutability": "payable", - "type": "fallback" - }, - { - "constant": false, - "inputs": [], - "name": "admin", - "outputs": [ - { - "internalType": "address", - "name": "", - "type": "address" - } - ], - "payable": false, - "stateMutability": "nonpayable", - "type": "function" - }, - { - "constant": false, - "inputs": [ - { - "internalType": "address", - "name": "newAdmin", - "type": "address" - } - ], - "name": "changeAdmin", - "outputs": [], - "payable": false, - "stateMutability": "nonpayable", - "type": "function" - }, - { - "constant": false, - "inputs": [], - "name": "implementation", - "outputs": [ - { - "internalType": "address", - "name": "", - "type": "address" - } - ], - "payable": false, - "stateMutability": "nonpayable", - "type": "function" - }, - { - "constant": false, - "inputs": [ - { - "internalType": "address", - "name": "_logic", - "type": "address" - }, - { - "internalType": "address", - "name": "_admin", - "type": "address" - }, - { - "internalType": "bytes", - "name": "_data", - "type": "bytes" - } - ], - "name": "initialize", - "outputs": [], - "payable": true, - "stateMutability": "payable", - "type": "function" - }, - { - "constant": false, - "inputs": [ - { - "internalType": "address", - "name": "_logic", - "type": "address" - }, - { - "internalType": "bytes", - "name": "_data", - "type": "bytes" - } - ], - "name": "initialize", - "outputs": [], - "payable": true, - "stateMutability": "payable", - "type": "function" - }, - { - "constant": false, - "inputs": [ - { - "internalType": "address", - "name": "newImplementation", - "type": "address" - } - ], - "name": "upgradeTo", - "outputs": [], - "payable": false, - "stateMutability": "nonpayable", - "type": "function" - }, - { - "constant": false, - "inputs": [ - { - "internalType": "address", - "name": "newImplementation", - "type": "address" - }, - { - "internalType": "bytes", - "name": "data", - "type": "bytes" - } - ], - "name": "upgradeToAndCall", - "outputs": [], - "payable": true, - "stateMutability": "payable", - "type": "function" - } - ], - "sourcePath": "~/github/renproject/ren-sol/contracts/Gateway/Gateway.sol", - "compiler": { - "name": "solc", - "version": "0.5.16+commit.9c3226ce.Emscripten.clang" - }, - "networks": { - "1": { - "events": { - "0x7e644d79422f17c01e4894b5f4f588d331ebfa28653d42ae832dc59e38c9798f": { - "anonymous": false, - "inputs": [ - { - "indexed": false, - "internalType": "address", - "name": "previousAdmin", - "type": "address" - }, - { - "indexed": false, - "internalType": "address", - "name": "newAdmin", - "type": "address" - } - ], - "name": "AdminChanged", - "type": "event" - }, - "0xbc7cd75a20ee27fd9adebab32041f755214dbc6bffa90cc0225b39da2e5c2d3b": { - "anonymous": false, - "inputs": [ - { - "indexed": true, - "internalType": "address", - "name": "implementation", - "type": "address" - } - ], - "name": "Upgraded", - "type": "event" - } - }, - "links": {}, - "address": "0xc3AC15BEc6dA89e8DC5c4d1b4d0C785547676e3a", - "transactionHash": "0x216aceeb99702118eb1ed0dc12244419ef3454d24ed01fae58a9c0a7c2f985fb" - } - }, - "schemaVersion": "3.0.23" -} \ No newline at end of file diff --git a/build/chaosnet/BTCGateway.json b/build/chaosnet/BTCGateway.json deleted file mode 100644 index 4bab422a..00000000 --- a/build/chaosnet/BTCGateway.json +++ /dev/null @@ -1,214 +0,0 @@ -{ - "contractName": "BTCGateway", - "abi": [ - { - "anonymous": false, - "inputs": [ - { - "indexed": false, - "internalType": "address", - "name": "previousAdmin", - "type": "address" - }, - { - "indexed": false, - "internalType": "address", - "name": "newAdmin", - "type": "address" - } - ], - "name": "AdminChanged", - "type": "event" - }, - { - "anonymous": false, - "inputs": [ - { - "indexed": true, - "internalType": "address", - "name": "implementation", - "type": "address" - } - ], - "name": "Upgraded", - "type": "event" - }, - { - "payable": true, - "stateMutability": "payable", - "type": "fallback" - }, - { - "constant": false, - "inputs": [], - "name": "admin", - "outputs": [ - { - "internalType": "address", - "name": "", - "type": "address" - } - ], - "payable": false, - "stateMutability": "nonpayable", - "type": "function" - }, - { - "constant": false, - "inputs": [ - { - "internalType": "address", - "name": "newAdmin", - "type": "address" - } - ], - "name": "changeAdmin", - "outputs": [], - "payable": false, - "stateMutability": "nonpayable", - "type": "function" - }, - { - "constant": false, - "inputs": [], - "name": "implementation", - "outputs": [ - { - "internalType": "address", - "name": "", - "type": "address" - } - ], - "payable": false, - "stateMutability": "nonpayable", - "type": "function" - }, - { - "constant": false, - "inputs": [ - { - "internalType": "address", - "name": "_logic", - "type": "address" - }, - { - "internalType": "address", - "name": "_admin", - "type": "address" - }, - { - "internalType": "bytes", - "name": "_data", - "type": "bytes" - } - ], - "name": "initialize", - "outputs": [], - "payable": true, - "stateMutability": "payable", - "type": "function" - }, - { - "constant": false, - "inputs": [ - { - "internalType": "address", - "name": "_logic", - "type": "address" - }, - { - "internalType": "bytes", - "name": "_data", - "type": "bytes" - } - ], - "name": "initialize", - "outputs": [], - "payable": true, - "stateMutability": "payable", - "type": "function" - }, - { - "constant": false, - "inputs": [ - { - "internalType": "address", - "name": "newImplementation", - "type": "address" - } - ], - "name": "upgradeTo", - "outputs": [], - "payable": false, - "stateMutability": "nonpayable", - "type": "function" - }, - { - "constant": false, - "inputs": [ - { - "internalType": "address", - "name": "newImplementation", - "type": "address" - }, - { - "internalType": "bytes", - "name": "data", - "type": "bytes" - } - ], - "name": "upgradeToAndCall", - "outputs": [], - "payable": true, - "stateMutability": "payable", - "type": "function" - } - ], - "sourcePath": "~/github/renproject/ren-sol/contracts/Gateway/Gateway.sol", - "compiler": { - "name": "solc", - "version": "0.5.16+commit.9c3226ce.Emscripten.clang" - }, - "networks": { - "1": { - "events": { - "0x7e644d79422f17c01e4894b5f4f588d331ebfa28653d42ae832dc59e38c9798f": { - "anonymous": false, - "inputs": [ - { - "indexed": false, - "internalType": "address", - "name": "previousAdmin", - "type": "address" - }, - { - "indexed": false, - "internalType": "address", - "name": "newAdmin", - "type": "address" - } - ], - "name": "AdminChanged", - "type": "event" - }, - "0xbc7cd75a20ee27fd9adebab32041f755214dbc6bffa90cc0225b39da2e5c2d3b": { - "anonymous": false, - "inputs": [ - { - "indexed": true, - "internalType": "address", - "name": "implementation", - "type": "address" - } - ], - "name": "Upgraded", - "type": "event" - } - }, - "links": {}, - "address": "0xD4d496632b9aF3122FB5DdbF0614aA82effa9F99", - "transactionHash": "0x5fa2ba681f2f29d212765bd64a5fb4284c7218ca54a4469f96d11ba4e6d32b96" - } - }, - "schemaVersion": "3.0.23" -} \ No newline at end of file diff --git a/build/chaosnet/BasicAdapter.json b/build/chaosnet/BasicAdapter.json deleted file mode 100644 index ae146332..00000000 --- a/build/chaosnet/BasicAdapter.json +++ /dev/null @@ -1,295 +0,0 @@ -{ - "contractName": "BasicAdapter", - "abi": [ - { - "inputs": [ - { - "internalType": "contract IGatewayRegistry", - "name": "_registry", - "type": "address" - } - ], - "payable": false, - "stateMutability": "nonpayable", - "type": "constructor" - }, - { - "anonymous": false, - "inputs": [ - { - "indexed": true, - "internalType": "address", - "name": "oldRelayHub", - "type": "address" - }, - { - "indexed": true, - "internalType": "address", - "name": "newRelayHub", - "type": "address" - } - ], - "name": "RelayHubChanged", - "type": "event" - }, - { - "constant": true, - "inputs": [ - { - "internalType": "address", - "name": "relay", - "type": "address" - }, - { - "internalType": "address", - "name": "from", - "type": "address" - }, - { - "internalType": "bytes", - "name": "encodedFunction", - "type": "bytes" - }, - { - "internalType": "uint256", - "name": "transactionFee", - "type": "uint256" - }, - { - "internalType": "uint256", - "name": "gasPrice", - "type": "uint256" - }, - { - "internalType": "uint256", - "name": "gasLimit", - "type": "uint256" - }, - { - "internalType": "uint256", - "name": "nonce", - "type": "uint256" - }, - { - "internalType": "bytes", - "name": "approvalData", - "type": "bytes" - }, - { - "internalType": "uint256", - "name": "maxPossibleCharge", - "type": "uint256" - } - ], - "name": "acceptRelayedCall", - "outputs": [ - { - "internalType": "uint256", - "name": "", - "type": "uint256" - }, - { - "internalType": "bytes", - "name": "", - "type": "bytes" - } - ], - "payable": false, - "stateMutability": "view", - "type": "function" - }, - { - "constant": false, - "inputs": [ - { - "internalType": "string", - "name": "_symbol", - "type": "string" - }, - { - "internalType": "bytes", - "name": "_to", - "type": "bytes" - }, - { - "internalType": "uint256", - "name": "_amount", - "type": "uint256" - } - ], - "name": "burn", - "outputs": [], - "payable": false, - "stateMutability": "nonpayable", - "type": "function" - }, - { - "constant": true, - "inputs": [], - "name": "getHubAddr", - "outputs": [ - { - "internalType": "address", - "name": "", - "type": "address" - } - ], - "payable": false, - "stateMutability": "view", - "type": "function" - }, - { - "constant": false, - "inputs": [], - "name": "initialize", - "outputs": [], - "payable": false, - "stateMutability": "nonpayable", - "type": "function" - }, - { - "constant": false, - "inputs": [ - { - "internalType": "string", - "name": "_symbol", - "type": "string" - }, - { - "internalType": "address", - "name": "_recipient", - "type": "address" - }, - { - "internalType": "uint256", - "name": "_amount", - "type": "uint256" - }, - { - "internalType": "bytes32", - "name": "_nHash", - "type": "bytes32" - }, - { - "internalType": "bytes", - "name": "_sig", - "type": "bytes" - } - ], - "name": "mint", - "outputs": [], - "payable": false, - "stateMutability": "nonpayable", - "type": "function" - }, - { - "constant": false, - "inputs": [ - { - "internalType": "bytes", - "name": "context", - "type": "bytes" - }, - { - "internalType": "bool", - "name": "success", - "type": "bool" - }, - { - "internalType": "uint256", - "name": "actualCharge", - "type": "uint256" - }, - { - "internalType": "bytes32", - "name": "preRetVal", - "type": "bytes32" - } - ], - "name": "postRelayedCall", - "outputs": [], - "payable": false, - "stateMutability": "nonpayable", - "type": "function" - }, - { - "constant": false, - "inputs": [ - { - "internalType": "bytes", - "name": "context", - "type": "bytes" - } - ], - "name": "preRelayedCall", - "outputs": [ - { - "internalType": "bytes32", - "name": "", - "type": "bytes32" - } - ], - "payable": false, - "stateMutability": "nonpayable", - "type": "function" - }, - { - "constant": true, - "inputs": [], - "name": "relayHubVersion", - "outputs": [ - { - "internalType": "string", - "name": "", - "type": "string" - } - ], - "payable": false, - "stateMutability": "view", - "type": "function" - }, - { - "constant": false, - "inputs": [], - "name": "setDefaultRelayHub", - "outputs": [], - "payable": false, - "stateMutability": "nonpayable", - "type": "function" - } - ], - "sourcePath": "~/github/renproject/ren-sol/contracts/Gateway/adapters/BasicAdapter.sol", - "compiler": { - "name": "solc", - "version": "0.5.16+commit.9c3226ce.Emscripten.clang" - }, - "networks": { - "1": { - "events": { - "0xb9f84b8e65164b14439ae3620df0a4d8786d896996c0282b683f9d8c08f046e8": { - "anonymous": false, - "inputs": [ - { - "indexed": true, - "internalType": "address", - "name": "oldRelayHub", - "type": "address" - }, - { - "indexed": true, - "internalType": "address", - "name": "newRelayHub", - "type": "address" - } - ], - "name": "RelayHubChanged", - "type": "event" - } - }, - "links": {}, - "address": "0x0807d0810714d85B49E40349a3002F06e841B7c3", - "transactionHash": "0x48a4ebcd8015c35d2a60041ec0dbfe2e417c89bc8ce421d0aef5f3541897b9df" - } - }, - "schemaVersion": "3.0.23" -} \ No newline at end of file diff --git a/build/chaosnet/DarknodePayment.json b/build/chaosnet/DarknodePayment.json deleted file mode 100644 index bd560901..00000000 --- a/build/chaosnet/DarknodePayment.json +++ /dev/null @@ -1,1052 +0,0 @@ -{ - "contractName": "DarknodePayment", - "abi": [ - { - "inputs": [ - { - "internalType": "string", - "name": "_VERSION", - "type": "string" - }, - { - "internalType": "contract DarknodeRegistryLogicV1", - "name": "_darknodeRegistry", - "type": "address" - }, - { - "internalType": "contract DarknodePaymentStore", - "name": "_darknodePaymentStore", - "type": "address" - }, - { - "internalType": "uint256", - "name": "_cyclePayoutPercent", - "type": "uint256" - } - ], - "payable": false, - "stateMutability": "nonpayable", - "type": "constructor" - }, - { - "anonymous": false, - "inputs": [ - { - "indexed": true, - "internalType": "address", - "name": "_newCycleChanger", - "type": "address" - }, - { - "indexed": true, - "internalType": "address", - "name": "_oldCycleChanger", - "type": "address" - } - ], - "name": "LogCycleChangerChanged", - "type": "event" - }, - { - "anonymous": false, - "inputs": [ - { - "indexed": true, - "internalType": "address", - "name": "_darknode", - "type": "address" - }, - { - "indexed": false, - "internalType": "uint256", - "name": "_cycle", - "type": "uint256" - } - ], - "name": "LogDarknodeClaim", - "type": "event" - }, - { - "anonymous": false, - "inputs": [ - { - "indexed": true, - "internalType": "contract DarknodeRegistryLogicV1", - "name": "_previousDarknodeRegistry", - "type": "address" - }, - { - "indexed": true, - "internalType": "contract DarknodeRegistryLogicV1", - "name": "_nextDarknodeRegistry", - "type": "address" - } - ], - "name": "LogDarknodeRegistryUpdated", - "type": "event" - }, - { - "anonymous": false, - "inputs": [ - { - "indexed": true, - "internalType": "address", - "name": "_darknodeOperator", - "type": "address" - }, - { - "indexed": true, - "internalType": "address", - "name": "_darknodeID", - "type": "address" - }, - { - "indexed": true, - "internalType": "address", - "name": "_token", - "type": "address" - }, - { - "indexed": false, - "internalType": "uint256", - "name": "_value", - "type": "uint256" - } - ], - "name": "LogDarknodeWithdrew", - "type": "event" - }, - { - "anonymous": false, - "inputs": [ - { - "indexed": true, - "internalType": "address", - "name": "_payer", - "type": "address" - }, - { - "indexed": true, - "internalType": "address", - "name": "_token", - "type": "address" - }, - { - "indexed": false, - "internalType": "uint256", - "name": "_amount", - "type": "uint256" - } - ], - "name": "LogPaymentReceived", - "type": "event" - }, - { - "anonymous": false, - "inputs": [ - { - "indexed": false, - "internalType": "uint256", - "name": "_newPercent", - "type": "uint256" - }, - { - "indexed": false, - "internalType": "uint256", - "name": "_oldPercent", - "type": "uint256" - } - ], - "name": "LogPayoutPercentChanged", - "type": "event" - }, - { - "anonymous": false, - "inputs": [ - { - "indexed": true, - "internalType": "address", - "name": "_token", - "type": "address" - } - ], - "name": "LogTokenDeregistered", - "type": "event" - }, - { - "anonymous": false, - "inputs": [ - { - "indexed": true, - "internalType": "address", - "name": "_token", - "type": "address" - } - ], - "name": "LogTokenRegistered", - "type": "event" - }, - { - "anonymous": false, - "inputs": [ - { - "indexed": true, - "internalType": "address", - "name": "previousOwner", - "type": "address" - }, - { - "indexed": true, - "internalType": "address", - "name": "newOwner", - "type": "address" - } - ], - "name": "OwnershipTransferred", - "type": "event" - }, - { - "payable": true, - "stateMutability": "payable", - "type": "fallback" - }, - { - "constant": true, - "inputs": [], - "name": "ETHEREUM", - "outputs": [ - { - "internalType": "address", - "name": "", - "type": "address" - } - ], - "payable": false, - "stateMutability": "view", - "type": "function" - }, - { - "constant": true, - "inputs": [], - "name": "VERSION", - "outputs": [ - { - "internalType": "string", - "name": "", - "type": "string" - } - ], - "payable": false, - "stateMutability": "view", - "type": "function" - }, - { - "constant": false, - "inputs": [], - "name": "changeCycle", - "outputs": [ - { - "internalType": "uint256", - "name": "", - "type": "uint256" - } - ], - "payable": false, - "stateMutability": "nonpayable", - "type": "function" - }, - { - "constant": false, - "inputs": [ - { - "internalType": "address", - "name": "_darknode", - "type": "address" - } - ], - "name": "claim", - "outputs": [], - "payable": false, - "stateMutability": "nonpayable", - "type": "function" - }, - { - "constant": false, - "inputs": [], - "name": "claimOwnership", - "outputs": [], - "payable": false, - "stateMutability": "nonpayable", - "type": "function" - }, - { - "constant": false, - "inputs": [], - "name": "claimStoreOwnership", - "outputs": [], - "payable": false, - "stateMutability": "nonpayable", - "type": "function" - }, - { - "constant": true, - "inputs": [], - "name": "currentCycle", - "outputs": [ - { - "internalType": "uint256", - "name": "", - "type": "uint256" - } - ], - "payable": false, - "stateMutability": "view", - "type": "function" - }, - { - "constant": true, - "inputs": [], - "name": "currentCyclePayoutPercent", - "outputs": [ - { - "internalType": "uint256", - "name": "", - "type": "uint256" - } - ], - "payable": false, - "stateMutability": "view", - "type": "function" - }, - { - "constant": true, - "inputs": [ - { - "internalType": "address", - "name": "_token", - "type": "address" - } - ], - "name": "currentCycleRewardPool", - "outputs": [ - { - "internalType": "uint256", - "name": "", - "type": "uint256" - } - ], - "payable": false, - "stateMutability": "view", - "type": "function" - }, - { - "constant": true, - "inputs": [], - "name": "cycleChanger", - "outputs": [ - { - "internalType": "address", - "name": "", - "type": "address" - } - ], - "payable": false, - "stateMutability": "view", - "type": "function" - }, - { - "constant": true, - "inputs": [], - "name": "cycleStartTime", - "outputs": [ - { - "internalType": "uint256", - "name": "", - "type": "uint256" - } - ], - "payable": false, - "stateMutability": "view", - "type": "function" - }, - { - "constant": true, - "inputs": [ - { - "internalType": "address", - "name": "_darknodeID", - "type": "address" - }, - { - "internalType": "address", - "name": "_token", - "type": "address" - } - ], - "name": "darknodeBalances", - "outputs": [ - { - "internalType": "uint256", - "name": "", - "type": "uint256" - } - ], - "payable": false, - "stateMutability": "view", - "type": "function" - }, - { - "constant": true, - "inputs": [], - "name": "darknodeRegistry", - "outputs": [ - { - "internalType": "contract DarknodeRegistryLogicV1", - "name": "", - "type": "address" - } - ], - "payable": false, - "stateMutability": "view", - "type": "function" - }, - { - "constant": false, - "inputs": [ - { - "internalType": "uint256", - "name": "_value", - "type": "uint256" - }, - { - "internalType": "address", - "name": "_token", - "type": "address" - } - ], - "name": "deposit", - "outputs": [], - "payable": true, - "stateMutability": "payable", - "type": "function" - }, - { - "constant": false, - "inputs": [ - { - "internalType": "address", - "name": "_token", - "type": "address" - } - ], - "name": "deregisterToken", - "outputs": [], - "payable": false, - "stateMutability": "nonpayable", - "type": "function" - }, - { - "constant": false, - "inputs": [ - { - "internalType": "address", - "name": "_token", - "type": "address" - } - ], - "name": "forward", - "outputs": [], - "payable": false, - "stateMutability": "nonpayable", - "type": "function" - }, - { - "constant": false, - "inputs": [ - { - "internalType": "address", - "name": "_nextOwner", - "type": "address" - } - ], - "name": "initialize", - "outputs": [], - "payable": false, - "stateMutability": "nonpayable", - "type": "function" - }, - { - "constant": true, - "inputs": [], - "name": "isOwner", - "outputs": [ - { - "internalType": "bool", - "name": "", - "type": "bool" - } - ], - "payable": false, - "stateMutability": "view", - "type": "function" - }, - { - "constant": true, - "inputs": [], - "name": "nextCyclePayoutPercent", - "outputs": [ - { - "internalType": "uint256", - "name": "", - "type": "uint256" - } - ], - "payable": false, - "stateMutability": "view", - "type": "function" - }, - { - "constant": true, - "inputs": [], - "name": "owner", - "outputs": [ - { - "internalType": "address", - "name": "", - "type": "address" - } - ], - "payable": false, - "stateMutability": "view", - "type": "function" - }, - { - "constant": true, - "inputs": [], - "name": "pendingOwner", - "outputs": [ - { - "internalType": "address", - "name": "", - "type": "address" - } - ], - "payable": false, - "stateMutability": "view", - "type": "function" - }, - { - "constant": true, - "inputs": [ - { - "internalType": "uint256", - "name": "", - "type": "uint256" - } - ], - "name": "pendingTokens", - "outputs": [ - { - "internalType": "address", - "name": "", - "type": "address" - } - ], - "payable": false, - "stateMutability": "view", - "type": "function" - }, - { - "constant": true, - "inputs": [], - "name": "previousCycle", - "outputs": [ - { - "internalType": "uint256", - "name": "", - "type": "uint256" - } - ], - "payable": false, - "stateMutability": "view", - "type": "function" - }, - { - "constant": true, - "inputs": [ - { - "internalType": "address", - "name": "", - "type": "address" - } - ], - "name": "previousCycleRewardShare", - "outputs": [ - { - "internalType": "uint256", - "name": "", - "type": "uint256" - } - ], - "payable": false, - "stateMutability": "view", - "type": "function" - }, - { - "constant": false, - "inputs": [ - { - "internalType": "address", - "name": "_token", - "type": "address" - } - ], - "name": "registerToken", - "outputs": [], - "payable": false, - "stateMutability": "nonpayable", - "type": "function" - }, - { - "constant": true, - "inputs": [ - { - "internalType": "address", - "name": "", - "type": "address" - } - ], - "name": "registeredTokenIndex", - "outputs": [ - { - "internalType": "uint256", - "name": "", - "type": "uint256" - } - ], - "payable": false, - "stateMutability": "view", - "type": "function" - }, - { - "constant": true, - "inputs": [ - { - "internalType": "uint256", - "name": "", - "type": "uint256" - } - ], - "name": "registeredTokens", - "outputs": [ - { - "internalType": "address", - "name": "", - "type": "address" - } - ], - "payable": false, - "stateMutability": "view", - "type": "function" - }, - { - "constant": false, - "inputs": [], - "name": "renounceOwnership", - "outputs": [], - "payable": false, - "stateMutability": "nonpayable", - "type": "function" - }, - { - "constant": true, - "inputs": [ - { - "internalType": "address", - "name": "", - "type": "address" - }, - { - "internalType": "uint256", - "name": "", - "type": "uint256" - } - ], - "name": "rewardClaimed", - "outputs": [ - { - "internalType": "bool", - "name": "", - "type": "bool" - } - ], - "payable": false, - "stateMutability": "view", - "type": "function" - }, - { - "constant": true, - "inputs": [], - "name": "store", - "outputs": [ - { - "internalType": "contract DarknodePaymentStore", - "name": "", - "type": "address" - } - ], - "payable": false, - "stateMutability": "view", - "type": "function" - }, - { - "constant": true, - "inputs": [ - { - "internalType": "address", - "name": "_token", - "type": "address" - } - ], - "name": "tokenPendingRegistration", - "outputs": [ - { - "internalType": "bool", - "name": "", - "type": "bool" - } - ], - "payable": false, - "stateMutability": "view", - "type": "function" - }, - { - "constant": false, - "inputs": [ - { - "internalType": "address", - "name": "newOwner", - "type": "address" - } - ], - "name": "transferOwnership", - "outputs": [], - "payable": false, - "stateMutability": "nonpayable", - "type": "function" - }, - { - "constant": false, - "inputs": [ - { - "internalType": "contract DarknodePayment", - "name": "_newOwner", - "type": "address" - } - ], - "name": "transferStoreOwnership", - "outputs": [], - "payable": false, - "stateMutability": "nonpayable", - "type": "function" - }, - { - "constant": true, - "inputs": [ - { - "internalType": "address", - "name": "", - "type": "address" - } - ], - "name": "unclaimedRewards", - "outputs": [ - { - "internalType": "uint256", - "name": "", - "type": "uint256" - } - ], - "payable": false, - "stateMutability": "view", - "type": "function" - }, - { - "constant": false, - "inputs": [ - { - "internalType": "address", - "name": "_addr", - "type": "address" - } - ], - "name": "updateCycleChanger", - "outputs": [], - "payable": false, - "stateMutability": "nonpayable", - "type": "function" - }, - { - "constant": false, - "inputs": [ - { - "internalType": "contract DarknodeRegistryLogicV1", - "name": "_darknodeRegistry", - "type": "address" - } - ], - "name": "updateDarknodeRegistry", - "outputs": [], - "payable": false, - "stateMutability": "nonpayable", - "type": "function" - }, - { - "constant": false, - "inputs": [ - { - "internalType": "uint256", - "name": "_percent", - "type": "uint256" - } - ], - "name": "updatePayoutPercentage", - "outputs": [], - "payable": false, - "stateMutability": "nonpayable", - "type": "function" - }, - { - "constant": false, - "inputs": [ - { - "internalType": "address", - "name": "_darknode", - "type": "address" - }, - { - "internalType": "address", - "name": "_token", - "type": "address" - } - ], - "name": "withdraw", - "outputs": [], - "payable": false, - "stateMutability": "nonpayable", - "type": "function" - }, - { - "constant": false, - "inputs": [ - { - "internalType": "address[]", - "name": "_darknodes", - "type": "address[]" - }, - { - "internalType": "address[]", - "name": "_tokens", - "type": "address[]" - } - ], - "name": "withdrawMultiple", - "outputs": [], - "payable": false, - "stateMutability": "nonpayable", - "type": "function" - } - ], - "sourcePath": "~/github/renproject/ren-sol/contracts/DarknodePayment/DarknodePayment.sol", - "compiler": { - "name": "solc", - "version": "0.5.16+commit.9c3226ce.Emscripten.clang" - }, - "networks": { - "1": { - "events": { - "0x9d549c7da0887b9da28aa4897e17429f78345be76b1918673be3430462a4d130": { - "anonymous": false, - "inputs": [ - { - "indexed": true, - "internalType": "address", - "name": "_newCycleChanger", - "type": "address" - }, - { - "indexed": true, - "internalType": "address", - "name": "_oldCycleChanger", - "type": "address" - } - ], - "name": "LogCycleChangerChanged", - "type": "event" - }, - "0x99c5ad5c5f898b30039b8cc54b8c0e6eb423e49bfc965a5999ebad131984e40d": { - "anonymous": false, - "inputs": [ - { - "indexed": true, - "internalType": "address", - "name": "_darknode", - "type": "address" - }, - { - "indexed": false, - "internalType": "uint256", - "name": "_cycle", - "type": "uint256" - } - ], - "name": "LogDarknodeClaim", - "type": "event" - }, - "0xf9f6dd5c784f63cc27c1079c73574a73485a6c2e7f7e2181c5eb2be8c693cfb7": { - "anonymous": false, - "inputs": [ - { - "indexed": true, - "internalType": "contract DarknodeRegistryLogicV1", - "name": "_previousDarknodeRegistry", - "type": "address" - }, - { - "indexed": true, - "internalType": "contract DarknodeRegistryLogicV1", - "name": "_nextDarknodeRegistry", - "type": "address" - } - ], - "name": "LogDarknodeRegistryUpdated", - "type": "event" - }, - "0xd390ef311a884ffc07fe929afa495d106c89041c9b8a73abd2e4f23d6c9c05c0": { - "anonymous": false, - "inputs": [ - { - "indexed": true, - "internalType": "address", - "name": "_darknodeOperator", - "type": "address" - }, - { - "indexed": true, - "internalType": "address", - "name": "_darknodeID", - "type": "address" - }, - { - "indexed": true, - "internalType": "address", - "name": "_token", - "type": "address" - }, - { - "indexed": false, - "internalType": "uint256", - "name": "_value", - "type": "uint256" - } - ], - "name": "LogDarknodeWithdrew", - "type": "event" - }, - "0x5f5d9f6f8b84a834e704e76b91a16ddc49abe97d37d6e61572febf8f1b56f7ce": { - "anonymous": false, - "inputs": [ - { - "indexed": true, - "internalType": "address", - "name": "_payer", - "type": "address" - }, - { - "indexed": true, - "internalType": "address", - "name": "_token", - "type": "address" - }, - { - "indexed": false, - "internalType": "uint256", - "name": "_amount", - "type": "uint256" - } - ], - "name": "LogPaymentReceived", - "type": "event" - }, - "0x0855549798088e618c4eccab56d3fa69209935ef7bc4ffe7200dff654d975643": { - "anonymous": false, - "inputs": [ - { - "indexed": false, - "internalType": "uint256", - "name": "_newPercent", - "type": "uint256" - }, - { - "indexed": false, - "internalType": "uint256", - "name": "_oldPercent", - "type": "uint256" - } - ], - "name": "LogPayoutPercentChanged", - "type": "event" - }, - "0xe46f21bb6906b7d69a6c06d5662a2b6c1c59d134cd7b1235babdb1a70a4b436a": { - "anonymous": false, - "inputs": [ - { - "indexed": true, - "internalType": "address", - "name": "_token", - "type": "address" - } - ], - "name": "LogTokenDeregistered", - "type": "event" - }, - "0xd780ddbc43f0c4efd61c5ca1bc8eeee3368abfb1f97aa7355da9f8bf8431c8ae": { - "anonymous": false, - "inputs": [ - { - "indexed": true, - "internalType": "address", - "name": "_token", - "type": "address" - } - ], - "name": "LogTokenRegistered", - "type": "event" - }, - "0x8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0": { - "anonymous": false, - "inputs": [ - { - "indexed": true, - "internalType": "address", - "name": "previousOwner", - "type": "address" - }, - { - "indexed": true, - "internalType": "address", - "name": "newOwner", - "type": "address" - } - ], - "name": "OwnershipTransferred", - "type": "event" - } - }, - "links": {}, - "address": "0xdf2a33Bf44F917b85a716aA1e98Af0bBa4085dEc", - "transactionHash": "0x5db580dd48f5d490345c54bf02e43f9d026fa0921e5bc190f06309970cbc11b4" - } - }, - "schemaVersion": "3.0.23" -} \ No newline at end of file diff --git a/build/chaosnet/DarknodePaymentStore.json b/build/chaosnet/DarknodePaymentStore.json deleted file mode 100644 index fe69903b..00000000 --- a/build/chaosnet/DarknodePaymentStore.json +++ /dev/null @@ -1,341 +0,0 @@ -{ - "contractName": "DarknodePaymentStore", - "abi": [ - { - "inputs": [ - { - "internalType": "string", - "name": "_VERSION", - "type": "string" - } - ], - "payable": false, - "stateMutability": "nonpayable", - "type": "constructor" - }, - { - "anonymous": false, - "inputs": [ - { - "indexed": true, - "internalType": "address", - "name": "previousOwner", - "type": "address" - }, - { - "indexed": true, - "internalType": "address", - "name": "newOwner", - "type": "address" - } - ], - "name": "OwnershipTransferred", - "type": "event" - }, - { - "payable": true, - "stateMutability": "payable", - "type": "fallback" - }, - { - "constant": true, - "inputs": [], - "name": "ETHEREUM", - "outputs": [ - { - "internalType": "address", - "name": "", - "type": "address" - } - ], - "payable": false, - "stateMutability": "view", - "type": "function" - }, - { - "constant": true, - "inputs": [], - "name": "VERSION", - "outputs": [ - { - "internalType": "string", - "name": "", - "type": "string" - } - ], - "payable": false, - "stateMutability": "view", - "type": "function" - }, - { - "constant": true, - "inputs": [ - { - "internalType": "address", - "name": "_token", - "type": "address" - } - ], - "name": "availableBalance", - "outputs": [ - { - "internalType": "uint256", - "name": "", - "type": "uint256" - } - ], - "payable": false, - "stateMutability": "view", - "type": "function" - }, - { - "constant": false, - "inputs": [], - "name": "claimOwnership", - "outputs": [], - "payable": false, - "stateMutability": "nonpayable", - "type": "function" - }, - { - "constant": true, - "inputs": [ - { - "internalType": "address", - "name": "", - "type": "address" - }, - { - "internalType": "address", - "name": "", - "type": "address" - } - ], - "name": "darknodeBalances", - "outputs": [ - { - "internalType": "uint256", - "name": "", - "type": "uint256" - } - ], - "payable": false, - "stateMutability": "view", - "type": "function" - }, - { - "constant": false, - "inputs": [ - { - "internalType": "address", - "name": "_darknode", - "type": "address" - }, - { - "internalType": "address", - "name": "_token", - "type": "address" - }, - { - "internalType": "uint256", - "name": "_amount", - "type": "uint256" - } - ], - "name": "incrementDarknodeBalance", - "outputs": [], - "payable": false, - "stateMutability": "nonpayable", - "type": "function" - }, - { - "constant": false, - "inputs": [ - { - "internalType": "address", - "name": "_nextOwner", - "type": "address" - } - ], - "name": "initialize", - "outputs": [], - "payable": false, - "stateMutability": "nonpayable", - "type": "function" - }, - { - "constant": true, - "inputs": [], - "name": "isOwner", - "outputs": [ - { - "internalType": "bool", - "name": "", - "type": "bool" - } - ], - "payable": false, - "stateMutability": "view", - "type": "function" - }, - { - "constant": true, - "inputs": [ - { - "internalType": "address", - "name": "", - "type": "address" - } - ], - "name": "lockedBalances", - "outputs": [ - { - "internalType": "uint256", - "name": "", - "type": "uint256" - } - ], - "payable": false, - "stateMutability": "view", - "type": "function" - }, - { - "constant": true, - "inputs": [], - "name": "owner", - "outputs": [ - { - "internalType": "address", - "name": "", - "type": "address" - } - ], - "payable": false, - "stateMutability": "view", - "type": "function" - }, - { - "constant": true, - "inputs": [], - "name": "pendingOwner", - "outputs": [ - { - "internalType": "address", - "name": "", - "type": "address" - } - ], - "payable": false, - "stateMutability": "view", - "type": "function" - }, - { - "constant": false, - "inputs": [], - "name": "renounceOwnership", - "outputs": [], - "payable": false, - "stateMutability": "nonpayable", - "type": "function" - }, - { - "constant": true, - "inputs": [ - { - "internalType": "address", - "name": "_token", - "type": "address" - } - ], - "name": "totalBalance", - "outputs": [ - { - "internalType": "uint256", - "name": "", - "type": "uint256" - } - ], - "payable": false, - "stateMutability": "view", - "type": "function" - }, - { - "constant": false, - "inputs": [ - { - "internalType": "address", - "name": "_darknode", - "type": "address" - }, - { - "internalType": "address", - "name": "_token", - "type": "address" - }, - { - "internalType": "uint256", - "name": "_amount", - "type": "uint256" - }, - { - "internalType": "address payable", - "name": "_recipient", - "type": "address" - } - ], - "name": "transfer", - "outputs": [], - "payable": false, - "stateMutability": "nonpayable", - "type": "function" - }, - { - "constant": false, - "inputs": [ - { - "internalType": "address", - "name": "newOwner", - "type": "address" - } - ], - "name": "transferOwnership", - "outputs": [], - "payable": false, - "stateMutability": "nonpayable", - "type": "function" - } - ], - "sourcePath": "~/github/renproject/ren-sol/contracts/DarknodePayment/DarknodePaymentStore.sol", - "compiler": { - "name": "solc", - "version": "0.5.16+commit.9c3226ce.Emscripten.clang" - }, - "networks": { - "1": { - "events": { - "0x8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0": { - "anonymous": false, - "inputs": [ - { - "indexed": true, - "internalType": "address", - "name": "previousOwner", - "type": "address" - }, - { - "indexed": true, - "internalType": "address", - "name": "newOwner", - "type": "address" - } - ], - "name": "OwnershipTransferred", - "type": "event" - } - }, - "links": {}, - "address": "0x9C5B076dE6c5c01c9E1ac4cB5b48fB681384742B" - } - }, - "schemaVersion": "3.0.23" -} \ No newline at end of file diff --git a/build/chaosnet/DarknodeRegistryLogicV1.json b/build/chaosnet/DarknodeRegistryLogicV1.json deleted file mode 100644 index 2412a6a6..00000000 --- a/build/chaosnet/DarknodeRegistryLogicV1.json +++ /dev/null @@ -1,1387 +0,0 @@ -{ - "contractName": "DarknodeRegistryLogicV1", - "abi": [ - { - "anonymous": false, - "inputs": [ - { - "indexed": true, - "internalType": "address", - "name": "_darknodeOperator", - "type": "address" - }, - { - "indexed": true, - "internalType": "address", - "name": "_darknodeID", - "type": "address" - } - ], - "name": "LogDarknodeDeregistered", - "type": "event" - }, - { - "anonymous": false, - "inputs": [ - { - "indexed": true, - "internalType": "contract IDarknodePayment", - "name": "_previousDarknodePayment", - "type": "address" - }, - { - "indexed": true, - "internalType": "contract IDarknodePayment", - "name": "_nextDarknodePayment", - "type": "address" - } - ], - "name": "LogDarknodePaymentUpdated", - "type": "event" - }, - { - "anonymous": false, - "inputs": [ - { - "indexed": true, - "internalType": "address", - "name": "_darknodeOperator", - "type": "address" - }, - { - "indexed": true, - "internalType": "address", - "name": "_darknodeID", - "type": "address" - }, - { - "indexed": false, - "internalType": "uint256", - "name": "_amount", - "type": "uint256" - } - ], - "name": "LogDarknodeRefunded", - "type": "event" - }, - { - "anonymous": false, - "inputs": [ - { - "indexed": true, - "internalType": "address", - "name": "_darknodeOperator", - "type": "address" - }, - { - "indexed": true, - "internalType": "address", - "name": "_darknodeID", - "type": "address" - }, - { - "indexed": false, - "internalType": "uint256", - "name": "_bond", - "type": "uint256" - } - ], - "name": "LogDarknodeRegistered", - "type": "event" - }, - { - "anonymous": false, - "inputs": [ - { - "indexed": true, - "internalType": "address", - "name": "_darknodeOperator", - "type": "address" - }, - { - "indexed": true, - "internalType": "address", - "name": "_darknodeID", - "type": "address" - }, - { - "indexed": true, - "internalType": "address", - "name": "_challenger", - "type": "address" - }, - { - "indexed": false, - "internalType": "uint256", - "name": "_percentage", - "type": "uint256" - } - ], - "name": "LogDarknodeSlashed", - "type": "event" - }, - { - "anonymous": false, - "inputs": [ - { - "indexed": false, - "internalType": "uint256", - "name": "_previousMinimumBond", - "type": "uint256" - }, - { - "indexed": false, - "internalType": "uint256", - "name": "_nextMinimumBond", - "type": "uint256" - } - ], - "name": "LogMinimumBondUpdated", - "type": "event" - }, - { - "anonymous": false, - "inputs": [ - { - "indexed": false, - "internalType": "uint256", - "name": "_previousMinimumEpochInterval", - "type": "uint256" - }, - { - "indexed": false, - "internalType": "uint256", - "name": "_nextMinimumEpochInterval", - "type": "uint256" - } - ], - "name": "LogMinimumEpochIntervalUpdated", - "type": "event" - }, - { - "anonymous": false, - "inputs": [ - { - "indexed": false, - "internalType": "uint256", - "name": "_previousMinimumPodSize", - "type": "uint256" - }, - { - "indexed": false, - "internalType": "uint256", - "name": "_nextMinimumPodSize", - "type": "uint256" - } - ], - "name": "LogMinimumPodSizeUpdated", - "type": "event" - }, - { - "anonymous": false, - "inputs": [ - { - "indexed": true, - "internalType": "uint256", - "name": "epochhash", - "type": "uint256" - } - ], - "name": "LogNewEpoch", - "type": "event" - }, - { - "anonymous": false, - "inputs": [ - { - "indexed": true, - "internalType": "address", - "name": "_previousSlasher", - "type": "address" - }, - { - "indexed": true, - "internalType": "address", - "name": "_nextSlasher", - "type": "address" - } - ], - "name": "LogSlasherUpdated", - "type": "event" - }, - { - "anonymous": false, - "inputs": [ - { - "indexed": true, - "internalType": "address", - "name": "previousOwner", - "type": "address" - }, - { - "indexed": true, - "internalType": "address", - "name": "newOwner", - "type": "address" - } - ], - "name": "OwnershipTransferred", - "type": "event" - }, - { - "constant": true, - "inputs": [], - "name": "VERSION", - "outputs": [ - { - "internalType": "string", - "name": "", - "type": "string" - } - ], - "payable": false, - "stateMutability": "view", - "type": "function" - }, - { - "constant": false, - "inputs": [ - { - "internalType": "address", - "name": "_token", - "type": "address" - } - ], - "name": "blacklistRecoverableToken", - "outputs": [], - "payable": false, - "stateMutability": "nonpayable", - "type": "function" - }, - { - "constant": false, - "inputs": [], - "name": "claimOwnership", - "outputs": [], - "payable": false, - "stateMutability": "nonpayable", - "type": "function" - }, - { - "constant": false, - "inputs": [], - "name": "claimStoreOwnership", - "outputs": [], - "payable": false, - "stateMutability": "nonpayable", - "type": "function" - }, - { - "constant": true, - "inputs": [], - "name": "currentEpoch", - "outputs": [ - { - "internalType": "uint256", - "name": "epochhash", - "type": "uint256" - }, - { - "internalType": "uint256", - "name": "blocktime", - "type": "uint256" - } - ], - "payable": false, - "stateMutability": "view", - "type": "function" - }, - { - "constant": true, - "inputs": [], - "name": "darknodePayment", - "outputs": [ - { - "internalType": "contract IDarknodePayment", - "name": "", - "type": "address" - } - ], - "payable": false, - "stateMutability": "view", - "type": "function" - }, - { - "constant": false, - "inputs": [ - { - "internalType": "address", - "name": "_darknodeID", - "type": "address" - } - ], - "name": "deregister", - "outputs": [], - "payable": false, - "stateMutability": "nonpayable", - "type": "function" - }, - { - "constant": true, - "inputs": [], - "name": "deregistrationInterval", - "outputs": [ - { - "internalType": "uint256", - "name": "", - "type": "uint256" - } - ], - "payable": false, - "stateMutability": "view", - "type": "function" - }, - { - "constant": false, - "inputs": [], - "name": "epoch", - "outputs": [], - "payable": false, - "stateMutability": "nonpayable", - "type": "function" - }, - { - "constant": true, - "inputs": [ - { - "internalType": "address", - "name": "_darknodeID", - "type": "address" - } - ], - "name": "getDarknodeBond", - "outputs": [ - { - "internalType": "uint256", - "name": "", - "type": "uint256" - } - ], - "payable": false, - "stateMutability": "view", - "type": "function" - }, - { - "constant": true, - "inputs": [ - { - "internalType": "address", - "name": "_darknodeID", - "type": "address" - } - ], - "name": "getDarknodeOperator", - "outputs": [ - { - "internalType": "address payable", - "name": "", - "type": "address" - } - ], - "payable": false, - "stateMutability": "view", - "type": "function" - }, - { - "constant": true, - "inputs": [ - { - "internalType": "address", - "name": "_darknodeID", - "type": "address" - } - ], - "name": "getDarknodePublicKey", - "outputs": [ - { - "internalType": "bytes", - "name": "", - "type": "bytes" - } - ], - "payable": false, - "stateMutability": "view", - "type": "function" - }, - { - "constant": true, - "inputs": [ - { - "internalType": "address", - "name": "_start", - "type": "address" - }, - { - "internalType": "uint256", - "name": "_count", - "type": "uint256" - } - ], - "name": "getDarknodes", - "outputs": [ - { - "internalType": "address[]", - "name": "", - "type": "address[]" - } - ], - "payable": false, - "stateMutability": "view", - "type": "function" - }, - { - "constant": true, - "inputs": [ - { - "internalType": "address", - "name": "_start", - "type": "address" - }, - { - "internalType": "uint256", - "name": "_count", - "type": "uint256" - } - ], - "name": "getPreviousDarknodes", - "outputs": [ - { - "internalType": "address[]", - "name": "", - "type": "address[]" - } - ], - "payable": false, - "stateMutability": "view", - "type": "function" - }, - { - "constant": false, - "inputs": [ - { - "internalType": "string", - "name": "_VERSION", - "type": "string" - }, - { - "internalType": "contract RenToken", - "name": "_renAddress", - "type": "address" - }, - { - "internalType": "contract DarknodeRegistryStore", - "name": "_storeAddress", - "type": "address" - }, - { - "internalType": "uint256", - "name": "_minimumBond", - "type": "uint256" - }, - { - "internalType": "uint256", - "name": "_minimumPodSize", - "type": "uint256" - }, - { - "internalType": "uint256", - "name": "_minimumEpochIntervalSeconds", - "type": "uint256" - }, - { - "internalType": "uint256", - "name": "_deregistrationIntervalSeconds", - "type": "uint256" - } - ], - "name": "initialize", - "outputs": [], - "payable": false, - "stateMutability": "nonpayable", - "type": "function" - }, - { - "constant": false, - "inputs": [ - { - "internalType": "address", - "name": "_nextOwner", - "type": "address" - } - ], - "name": "initialize", - "outputs": [], - "payable": false, - "stateMutability": "nonpayable", - "type": "function" - }, - { - "constant": true, - "inputs": [ - { - "internalType": "address", - "name": "_darknodeID", - "type": "address" - } - ], - "name": "isDeregisterable", - "outputs": [ - { - "internalType": "bool", - "name": "", - "type": "bool" - } - ], - "payable": false, - "stateMutability": "view", - "type": "function" - }, - { - "constant": true, - "inputs": [ - { - "internalType": "address", - "name": "_darknodeID", - "type": "address" - } - ], - "name": "isDeregistered", - "outputs": [ - { - "internalType": "bool", - "name": "", - "type": "bool" - } - ], - "payable": false, - "stateMutability": "view", - "type": "function" - }, - { - "constant": true, - "inputs": [], - "name": "isOwner", - "outputs": [ - { - "internalType": "bool", - "name": "", - "type": "bool" - } - ], - "payable": false, - "stateMutability": "view", - "type": "function" - }, - { - "constant": true, - "inputs": [ - { - "internalType": "address", - "name": "_darknodeID", - "type": "address" - } - ], - "name": "isPendingDeregistration", - "outputs": [ - { - "internalType": "bool", - "name": "", - "type": "bool" - } - ], - "payable": false, - "stateMutability": "view", - "type": "function" - }, - { - "constant": true, - "inputs": [ - { - "internalType": "address", - "name": "_darknodeID", - "type": "address" - } - ], - "name": "isPendingRegistration", - "outputs": [ - { - "internalType": "bool", - "name": "", - "type": "bool" - } - ], - "payable": false, - "stateMutability": "view", - "type": "function" - }, - { - "constant": true, - "inputs": [ - { - "internalType": "address", - "name": "_darknodeID", - "type": "address" - } - ], - "name": "isRefundable", - "outputs": [ - { - "internalType": "bool", - "name": "", - "type": "bool" - } - ], - "payable": false, - "stateMutability": "view", - "type": "function" - }, - { - "constant": true, - "inputs": [ - { - "internalType": "address", - "name": "_darknodeID", - "type": "address" - } - ], - "name": "isRefunded", - "outputs": [ - { - "internalType": "bool", - "name": "", - "type": "bool" - } - ], - "payable": false, - "stateMutability": "view", - "type": "function" - }, - { - "constant": true, - "inputs": [ - { - "internalType": "address", - "name": "_darknodeID", - "type": "address" - } - ], - "name": "isRegistered", - "outputs": [ - { - "internalType": "bool", - "name": "", - "type": "bool" - } - ], - "payable": false, - "stateMutability": "view", - "type": "function" - }, - { - "constant": true, - "inputs": [ - { - "internalType": "address", - "name": "_darknodeID", - "type": "address" - } - ], - "name": "isRegisteredInPreviousEpoch", - "outputs": [ - { - "internalType": "bool", - "name": "", - "type": "bool" - } - ], - "payable": false, - "stateMutability": "view", - "type": "function" - }, - { - "constant": true, - "inputs": [], - "name": "minimumBond", - "outputs": [ - { - "internalType": "uint256", - "name": "", - "type": "uint256" - } - ], - "payable": false, - "stateMutability": "view", - "type": "function" - }, - { - "constant": true, - "inputs": [], - "name": "minimumEpochInterval", - "outputs": [ - { - "internalType": "uint256", - "name": "", - "type": "uint256" - } - ], - "payable": false, - "stateMutability": "view", - "type": "function" - }, - { - "constant": true, - "inputs": [], - "name": "minimumPodSize", - "outputs": [ - { - "internalType": "uint256", - "name": "", - "type": "uint256" - } - ], - "payable": false, - "stateMutability": "view", - "type": "function" - }, - { - "constant": true, - "inputs": [], - "name": "nextMinimumBond", - "outputs": [ - { - "internalType": "uint256", - "name": "", - "type": "uint256" - } - ], - "payable": false, - "stateMutability": "view", - "type": "function" - }, - { - "constant": true, - "inputs": [], - "name": "nextMinimumEpochInterval", - "outputs": [ - { - "internalType": "uint256", - "name": "", - "type": "uint256" - } - ], - "payable": false, - "stateMutability": "view", - "type": "function" - }, - { - "constant": true, - "inputs": [], - "name": "nextMinimumPodSize", - "outputs": [ - { - "internalType": "uint256", - "name": "", - "type": "uint256" - } - ], - "payable": false, - "stateMutability": "view", - "type": "function" - }, - { - "constant": true, - "inputs": [], - "name": "nextSlasher", - "outputs": [ - { - "internalType": "contract IDarknodeSlasher", - "name": "", - "type": "address" - } - ], - "payable": false, - "stateMutability": "view", - "type": "function" - }, - { - "constant": true, - "inputs": [], - "name": "numDarknodes", - "outputs": [ - { - "internalType": "uint256", - "name": "", - "type": "uint256" - } - ], - "payable": false, - "stateMutability": "view", - "type": "function" - }, - { - "constant": true, - "inputs": [], - "name": "numDarknodesNextEpoch", - "outputs": [ - { - "internalType": "uint256", - "name": "", - "type": "uint256" - } - ], - "payable": false, - "stateMutability": "view", - "type": "function" - }, - { - "constant": true, - "inputs": [], - "name": "numDarknodesPreviousEpoch", - "outputs": [ - { - "internalType": "uint256", - "name": "", - "type": "uint256" - } - ], - "payable": false, - "stateMutability": "view", - "type": "function" - }, - { - "constant": true, - "inputs": [], - "name": "owner", - "outputs": [ - { - "internalType": "address", - "name": "", - "type": "address" - } - ], - "payable": false, - "stateMutability": "view", - "type": "function" - }, - { - "constant": true, - "inputs": [], - "name": "pendingOwner", - "outputs": [ - { - "internalType": "address", - "name": "", - "type": "address" - } - ], - "payable": false, - "stateMutability": "view", - "type": "function" - }, - { - "constant": true, - "inputs": [], - "name": "previousEpoch", - "outputs": [ - { - "internalType": "uint256", - "name": "epochhash", - "type": "uint256" - }, - { - "internalType": "uint256", - "name": "blocktime", - "type": "uint256" - } - ], - "payable": false, - "stateMutability": "view", - "type": "function" - }, - { - "constant": false, - "inputs": [ - { - "internalType": "address", - "name": "_token", - "type": "address" - } - ], - "name": "recoverTokens", - "outputs": [], - "payable": false, - "stateMutability": "nonpayable", - "type": "function" - }, - { - "constant": false, - "inputs": [ - { - "internalType": "address", - "name": "_darknodeID", - "type": "address" - } - ], - "name": "refund", - "outputs": [], - "payable": false, - "stateMutability": "nonpayable", - "type": "function" - }, - { - "constant": false, - "inputs": [ - { - "internalType": "address", - "name": "_darknodeID", - "type": "address" - }, - { - "internalType": "bytes", - "name": "_publicKey", - "type": "bytes" - } - ], - "name": "register", - "outputs": [], - "payable": false, - "stateMutability": "nonpayable", - "type": "function" - }, - { - "constant": true, - "inputs": [], - "name": "ren", - "outputs": [ - { - "internalType": "contract RenToken", - "name": "", - "type": "address" - } - ], - "payable": false, - "stateMutability": "view", - "type": "function" - }, - { - "constant": false, - "inputs": [], - "name": "renounceOwnership", - "outputs": [], - "payable": false, - "stateMutability": "nonpayable", - "type": "function" - }, - { - "constant": false, - "inputs": [ - { - "internalType": "address", - "name": "_guilty", - "type": "address" - }, - { - "internalType": "address", - "name": "_challenger", - "type": "address" - }, - { - "internalType": "uint256", - "name": "_percentage", - "type": "uint256" - } - ], - "name": "slash", - "outputs": [], - "payable": false, - "stateMutability": "nonpayable", - "type": "function" - }, - { - "constant": true, - "inputs": [], - "name": "slasher", - "outputs": [ - { - "internalType": "contract IDarknodeSlasher", - "name": "", - "type": "address" - } - ], - "payable": false, - "stateMutability": "view", - "type": "function" - }, - { - "constant": true, - "inputs": [], - "name": "store", - "outputs": [ - { - "internalType": "contract DarknodeRegistryStore", - "name": "", - "type": "address" - } - ], - "payable": false, - "stateMutability": "view", - "type": "function" - }, - { - "constant": false, - "inputs": [ - { - "internalType": "address", - "name": "newOwner", - "type": "address" - } - ], - "name": "transferOwnership", - "outputs": [], - "payable": false, - "stateMutability": "nonpayable", - "type": "function" - }, - { - "constant": false, - "inputs": [ - { - "internalType": "contract DarknodeRegistryLogicV1", - "name": "_newOwner", - "type": "address" - } - ], - "name": "transferStoreOwnership", - "outputs": [], - "payable": false, - "stateMutability": "nonpayable", - "type": "function" - }, - { - "constant": false, - "inputs": [ - { - "internalType": "contract IDarknodePayment", - "name": "_darknodePayment", - "type": "address" - } - ], - "name": "updateDarknodePayment", - "outputs": [], - "payable": false, - "stateMutability": "nonpayable", - "type": "function" - }, - { - "constant": false, - "inputs": [ - { - "internalType": "uint256", - "name": "_nextMinimumBond", - "type": "uint256" - } - ], - "name": "updateMinimumBond", - "outputs": [], - "payable": false, - "stateMutability": "nonpayable", - "type": "function" - }, - { - "constant": false, - "inputs": [ - { - "internalType": "uint256", - "name": "_nextMinimumEpochInterval", - "type": "uint256" - } - ], - "name": "updateMinimumEpochInterval", - "outputs": [], - "payable": false, - "stateMutability": "nonpayable", - "type": "function" - }, - { - "constant": false, - "inputs": [ - { - "internalType": "uint256", - "name": "_nextMinimumPodSize", - "type": "uint256" - } - ], - "name": "updateMinimumPodSize", - "outputs": [], - "payable": false, - "stateMutability": "nonpayable", - "type": "function" - }, - { - "constant": false, - "inputs": [ - { - "internalType": "contract IDarknodeSlasher", - "name": "_slasher", - "type": "address" - } - ], - "name": "updateSlasher", - "outputs": [], - "payable": false, - "stateMutability": "nonpayable", - "type": "function" - } - ], - "sourcePath": "~/github/renproject/ren-sol/contracts/DarknodeRegistry/DarknodeRegistry.sol", - "compiler": { - "name": "solc", - "version": "0.5.16+commit.9c3226ce.Emscripten.clang" - }, - "networks": { - "1": { - "events": { - "0xf73268ea792d9dbf3e21a95ec9711f0b535c5f6c99f6b4f54f6766838086b842": { - "anonymous": false, - "inputs": [ - { - "indexed": true, - "internalType": "address", - "name": "_darknodeOperator", - "type": "address" - }, - { - "indexed": true, - "internalType": "address", - "name": "_darknodeID", - "type": "address" - } - ], - "name": "LogDarknodeDeregistered", - "type": "event" - }, - "0xe3e25a79a5ba7c894fcc55794b2712e225537e89f777b9b9df307cc5504ba0e9": { - "anonymous": false, - "inputs": [ - { - "indexed": true, - "internalType": "contract IDarknodePayment", - "name": "_previousDarknodePayment", - "type": "address" - }, - { - "indexed": true, - "internalType": "contract IDarknodePayment", - "name": "_nextDarknodePayment", - "type": "address" - } - ], - "name": "LogDarknodePaymentUpdated", - "type": "event" - }, - "0x3eeec3803912dfbf607c8488e8aee15f415e51c9936250a5142642c9e470c128": { - "anonymous": false, - "inputs": [ - { - "indexed": true, - "internalType": "address", - "name": "_darknodeOperator", - "type": "address" - }, - { - "indexed": true, - "internalType": "address", - "name": "_darknodeID", - "type": "address" - }, - { - "indexed": false, - "internalType": "uint256", - "name": "_amount", - "type": "uint256" - } - ], - "name": "LogDarknodeRefunded", - "type": "event" - }, - "0x7c56cb7f63b6922d24414bf7c2b2c40c7ea1ea637c3f400efa766a85ecf2f093": { - "anonymous": false, - "inputs": [ - { - "indexed": true, - "internalType": "address", - "name": "_darknodeOperator", - "type": "address" - }, - { - "indexed": true, - "internalType": "address", - "name": "_darknodeID", - "type": "address" - }, - { - "indexed": false, - "internalType": "uint256", - "name": "_bond", - "type": "uint256" - } - ], - "name": "LogDarknodeRegistered", - "type": "event" - }, - "0xb43e0cc88b4d6ae901c6c99d1b58769cb8c9ded8e6f20a0d3712d09bf9e1ea77": { - "anonymous": false, - "inputs": [ - { - "indexed": true, - "internalType": "address", - "name": "_darknodeOperator", - "type": "address" - }, - { - "indexed": true, - "internalType": "address", - "name": "_darknodeID", - "type": "address" - }, - { - "indexed": true, - "internalType": "address", - "name": "_challenger", - "type": "address" - }, - { - "indexed": false, - "internalType": "uint256", - "name": "_percentage", - "type": "uint256" - } - ], - "name": "LogDarknodeSlashed", - "type": "event" - }, - "0x7c77c94944e9e4e5b0d46f1297127d060020792687cd743401d782346c68f655": { - "anonymous": false, - "inputs": [ - { - "indexed": false, - "internalType": "uint256", - "name": "_previousMinimumBond", - "type": "uint256" - }, - { - "indexed": false, - "internalType": "uint256", - "name": "_nextMinimumBond", - "type": "uint256" - } - ], - "name": "LogMinimumBondUpdated", - "type": "event" - }, - "0xb218cde2730b79a0667ddf869466ee66a12ef56fe65fa4986a590f8a7108c9de": { - "anonymous": false, - "inputs": [ - { - "indexed": false, - "internalType": "uint256", - "name": "_previousMinimumEpochInterval", - "type": "uint256" - }, - { - "indexed": false, - "internalType": "uint256", - "name": "_nextMinimumEpochInterval", - "type": "uint256" - } - ], - "name": "LogMinimumEpochIntervalUpdated", - "type": "event" - }, - "0x6d520e46e5714982ddf8cb6216bcb3e1c1d5b79d337afc305335f819394f5d6a": { - "anonymous": false, - "inputs": [ - { - "indexed": false, - "internalType": "uint256", - "name": "_previousMinimumPodSize", - "type": "uint256" - }, - { - "indexed": false, - "internalType": "uint256", - "name": "_nextMinimumPodSize", - "type": "uint256" - } - ], - "name": "LogMinimumPodSizeUpdated", - "type": "event" - }, - "0xaf2fc4796f2932ce294c3684deffe5098d3ef65dc2dd64efa80ef94eed88b01e": { - "anonymous": false, - "inputs": [ - { - "indexed": true, - "internalType": "uint256", - "name": "epochhash", - "type": "uint256" - } - ], - "name": "LogNewEpoch", - "type": "event" - }, - "0x933228a1c3ba8fadd3ce47a9db5b898be647f89af99ba7c1b9a655f59ea306c8": { - "anonymous": false, - "inputs": [ - { - "indexed": true, - "internalType": "address", - "name": "_previousSlasher", - "type": "address" - }, - { - "indexed": true, - "internalType": "address", - "name": "_nextSlasher", - "type": "address" - } - ], - "name": "LogSlasherUpdated", - "type": "event" - }, - "0x8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0": { - "anonymous": false, - "inputs": [ - { - "indexed": true, - "internalType": "address", - "name": "previousOwner", - "type": "address" - }, - { - "indexed": true, - "internalType": "address", - "name": "newOwner", - "type": "address" - } - ], - "name": "OwnershipTransferred", - "type": "event" - } - }, - "links": {}, - "address": "0x308ecdCEfA3231ad1a8083Bd42510830e749FbB7" - } - }, - "schemaVersion": "3.0.23" -} \ No newline at end of file diff --git a/build/chaosnet/DarknodeRegistryProxy.json b/build/chaosnet/DarknodeRegistryProxy.json deleted file mode 100644 index 31218242..00000000 --- a/build/chaosnet/DarknodeRegistryProxy.json +++ /dev/null @@ -1,214 +0,0 @@ -{ - "contractName": "DarknodeRegistryProxy", - "abi": [ - { - "anonymous": false, - "inputs": [ - { - "indexed": false, - "internalType": "address", - "name": "previousAdmin", - "type": "address" - }, - { - "indexed": false, - "internalType": "address", - "name": "newAdmin", - "type": "address" - } - ], - "name": "AdminChanged", - "type": "event" - }, - { - "anonymous": false, - "inputs": [ - { - "indexed": true, - "internalType": "address", - "name": "implementation", - "type": "address" - } - ], - "name": "Upgraded", - "type": "event" - }, - { - "payable": true, - "stateMutability": "payable", - "type": "fallback" - }, - { - "constant": false, - "inputs": [], - "name": "admin", - "outputs": [ - { - "internalType": "address", - "name": "", - "type": "address" - } - ], - "payable": false, - "stateMutability": "nonpayable", - "type": "function" - }, - { - "constant": false, - "inputs": [ - { - "internalType": "address", - "name": "newAdmin", - "type": "address" - } - ], - "name": "changeAdmin", - "outputs": [], - "payable": false, - "stateMutability": "nonpayable", - "type": "function" - }, - { - "constant": false, - "inputs": [], - "name": "implementation", - "outputs": [ - { - "internalType": "address", - "name": "", - "type": "address" - } - ], - "payable": false, - "stateMutability": "nonpayable", - "type": "function" - }, - { - "constant": false, - "inputs": [ - { - "internalType": "address", - "name": "_logic", - "type": "address" - }, - { - "internalType": "address", - "name": "_admin", - "type": "address" - }, - { - "internalType": "bytes", - "name": "_data", - "type": "bytes" - } - ], - "name": "initialize", - "outputs": [], - "payable": true, - "stateMutability": "payable", - "type": "function" - }, - { - "constant": false, - "inputs": [ - { - "internalType": "address", - "name": "_logic", - "type": "address" - }, - { - "internalType": "bytes", - "name": "_data", - "type": "bytes" - } - ], - "name": "initialize", - "outputs": [], - "payable": true, - "stateMutability": "payable", - "type": "function" - }, - { - "constant": false, - "inputs": [ - { - "internalType": "address", - "name": "newImplementation", - "type": "address" - } - ], - "name": "upgradeTo", - "outputs": [], - "payable": false, - "stateMutability": "nonpayable", - "type": "function" - }, - { - "constant": false, - "inputs": [ - { - "internalType": "address", - "name": "newImplementation", - "type": "address" - }, - { - "internalType": "bytes", - "name": "data", - "type": "bytes" - } - ], - "name": "upgradeToAndCall", - "outputs": [], - "payable": true, - "stateMutability": "payable", - "type": "function" - } - ], - "sourcePath": "~/github/renproject/ren-sol/contracts/DarknodeRegistry/DarknodeRegistry.sol", - "compiler": { - "name": "solc", - "version": "0.5.16+commit.9c3226ce.Emscripten.clang" - }, - "networks": { - "1": { - "events": { - "0x7e644d79422f17c01e4894b5f4f588d331ebfa28653d42ae832dc59e38c9798f": { - "anonymous": false, - "inputs": [ - { - "indexed": false, - "internalType": "address", - "name": "previousAdmin", - "type": "address" - }, - { - "indexed": false, - "internalType": "address", - "name": "newAdmin", - "type": "address" - } - ], - "name": "AdminChanged", - "type": "event" - }, - "0xbc7cd75a20ee27fd9adebab32041f755214dbc6bffa90cc0225b39da2e5c2d3b": { - "anonymous": false, - "inputs": [ - { - "indexed": true, - "internalType": "address", - "name": "implementation", - "type": "address" - } - ], - "name": "Upgraded", - "type": "event" - } - }, - "links": {}, - "address": "0x7C08FF068b7FF6d7d2f431f08B8C2e536ed693DD", - "transactionHash": "0x0bf00f59b952fc0c1febc268ce521d50cbe274da80434acc405d0e0adb7e570a" - } - }, - "schemaVersion": "3.0.23" -} \ No newline at end of file diff --git a/build/chaosnet/DarknodeRegistryStore.json b/build/chaosnet/DarknodeRegistryStore.json deleted file mode 100644 index cd94f0c5..00000000 --- a/build/chaosnet/DarknodeRegistryStore.json +++ /dev/null @@ -1,464 +0,0 @@ -{ - "contractName": "DarknodeRegistryStore", - "abi": [ - { - "inputs": [ - { - "internalType": "string", - "name": "_VERSION", - "type": "string" - }, - { - "internalType": "contract RenToken", - "name": "_ren", - "type": "address" - } - ], - "payable": false, - "stateMutability": "nonpayable", - "type": "constructor" - }, - { - "anonymous": false, - "inputs": [ - { - "indexed": true, - "internalType": "address", - "name": "previousOwner", - "type": "address" - }, - { - "indexed": true, - "internalType": "address", - "name": "newOwner", - "type": "address" - } - ], - "name": "OwnershipTransferred", - "type": "event" - }, - { - "constant": true, - "inputs": [], - "name": "VERSION", - "outputs": [ - { - "internalType": "string", - "name": "", - "type": "string" - } - ], - "payable": false, - "stateMutability": "view", - "type": "function" - }, - { - "constant": false, - "inputs": [ - { - "internalType": "address", - "name": "_darknodeID", - "type": "address" - }, - { - "internalType": "address payable", - "name": "_darknodeOperator", - "type": "address" - }, - { - "internalType": "uint256", - "name": "_bond", - "type": "uint256" - }, - { - "internalType": "bytes", - "name": "_publicKey", - "type": "bytes" - }, - { - "internalType": "uint256", - "name": "_registeredAt", - "type": "uint256" - }, - { - "internalType": "uint256", - "name": "_deregisteredAt", - "type": "uint256" - } - ], - "name": "appendDarknode", - "outputs": [], - "payable": false, - "stateMutability": "nonpayable", - "type": "function" - }, - { - "constant": true, - "inputs": [], - "name": "begin", - "outputs": [ - { - "internalType": "address", - "name": "", - "type": "address" - } - ], - "payable": false, - "stateMutability": "view", - "type": "function" - }, - { - "constant": false, - "inputs": [ - { - "internalType": "address", - "name": "_token", - "type": "address" - } - ], - "name": "blacklistRecoverableToken", - "outputs": [], - "payable": false, - "stateMutability": "nonpayable", - "type": "function" - }, - { - "constant": false, - "inputs": [], - "name": "claimOwnership", - "outputs": [], - "payable": false, - "stateMutability": "nonpayable", - "type": "function" - }, - { - "constant": true, - "inputs": [ - { - "internalType": "address", - "name": "darknodeID", - "type": "address" - } - ], - "name": "darknodeBond", - "outputs": [ - { - "internalType": "uint256", - "name": "", - "type": "uint256" - } - ], - "payable": false, - "stateMutability": "view", - "type": "function" - }, - { - "constant": true, - "inputs": [ - { - "internalType": "address", - "name": "darknodeID", - "type": "address" - } - ], - "name": "darknodeDeregisteredAt", - "outputs": [ - { - "internalType": "uint256", - "name": "", - "type": "uint256" - } - ], - "payable": false, - "stateMutability": "view", - "type": "function" - }, - { - "constant": true, - "inputs": [ - { - "internalType": "address", - "name": "darknodeID", - "type": "address" - } - ], - "name": "darknodeOperator", - "outputs": [ - { - "internalType": "address payable", - "name": "", - "type": "address" - } - ], - "payable": false, - "stateMutability": "view", - "type": "function" - }, - { - "constant": true, - "inputs": [ - { - "internalType": "address", - "name": "darknodeID", - "type": "address" - } - ], - "name": "darknodePublicKey", - "outputs": [ - { - "internalType": "bytes", - "name": "", - "type": "bytes" - } - ], - "payable": false, - "stateMutability": "view", - "type": "function" - }, - { - "constant": true, - "inputs": [ - { - "internalType": "address", - "name": "darknodeID", - "type": "address" - } - ], - "name": "darknodeRegisteredAt", - "outputs": [ - { - "internalType": "uint256", - "name": "", - "type": "uint256" - } - ], - "payable": false, - "stateMutability": "view", - "type": "function" - }, - { - "constant": false, - "inputs": [ - { - "internalType": "address", - "name": "_nextOwner", - "type": "address" - } - ], - "name": "initialize", - "outputs": [], - "payable": false, - "stateMutability": "nonpayable", - "type": "function" - }, - { - "constant": true, - "inputs": [], - "name": "isOwner", - "outputs": [ - { - "internalType": "bool", - "name": "", - "type": "bool" - } - ], - "payable": false, - "stateMutability": "view", - "type": "function" - }, - { - "constant": true, - "inputs": [ - { - "internalType": "address", - "name": "darknodeID", - "type": "address" - } - ], - "name": "next", - "outputs": [ - { - "internalType": "address", - "name": "", - "type": "address" - } - ], - "payable": false, - "stateMutability": "view", - "type": "function" - }, - { - "constant": true, - "inputs": [], - "name": "owner", - "outputs": [ - { - "internalType": "address", - "name": "", - "type": "address" - } - ], - "payable": false, - "stateMutability": "view", - "type": "function" - }, - { - "constant": true, - "inputs": [], - "name": "pendingOwner", - "outputs": [ - { - "internalType": "address", - "name": "", - "type": "address" - } - ], - "payable": false, - "stateMutability": "view", - "type": "function" - }, - { - "constant": false, - "inputs": [ - { - "internalType": "address", - "name": "_token", - "type": "address" - } - ], - "name": "recoverTokens", - "outputs": [], - "payable": false, - "stateMutability": "nonpayable", - "type": "function" - }, - { - "constant": false, - "inputs": [ - { - "internalType": "address", - "name": "darknodeID", - "type": "address" - } - ], - "name": "removeDarknode", - "outputs": [], - "payable": false, - "stateMutability": "nonpayable", - "type": "function" - }, - { - "constant": true, - "inputs": [], - "name": "ren", - "outputs": [ - { - "internalType": "contract RenToken", - "name": "", - "type": "address" - } - ], - "payable": false, - "stateMutability": "view", - "type": "function" - }, - { - "constant": false, - "inputs": [], - "name": "renounceOwnership", - "outputs": [], - "payable": false, - "stateMutability": "nonpayable", - "type": "function" - }, - { - "constant": false, - "inputs": [ - { - "internalType": "address", - "name": "newOwner", - "type": "address" - } - ], - "name": "transferOwnership", - "outputs": [], - "payable": false, - "stateMutability": "nonpayable", - "type": "function" - }, - { - "constant": false, - "inputs": [ - { - "internalType": "address", - "name": "darknodeID", - "type": "address" - }, - { - "internalType": "uint256", - "name": "decreasedBond", - "type": "uint256" - } - ], - "name": "updateDarknodeBond", - "outputs": [], - "payable": false, - "stateMutability": "nonpayable", - "type": "function" - }, - { - "constant": false, - "inputs": [ - { - "internalType": "address", - "name": "darknodeID", - "type": "address" - }, - { - "internalType": "uint256", - "name": "deregisteredAt", - "type": "uint256" - } - ], - "name": "updateDarknodeDeregisteredAt", - "outputs": [], - "payable": false, - "stateMutability": "nonpayable", - "type": "function" - } - ], - "sourcePath": "~/github/renproject/ren-sol/contracts/DarknodeRegistry/DarknodeRegistryStore.sol", - "compiler": { - "name": "solc", - "version": "0.5.16+commit.9c3226ce.Emscripten.clang" - }, - "networks": { - "1": { - "events": { - "0x8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0": { - "anonymous": false, - "inputs": [ - { - "indexed": true, - "internalType": "address", - "name": "previousOwner", - "type": "address" - }, - { - "indexed": true, - "internalType": "address", - "name": "newOwner", - "type": "address" - } - ], - "name": "OwnershipTransferred", - "type": "event" - } - }, - "links": {}, - "address": "0x4C2f0533af3792695e71699Ff221205f7FA47579", - "transactionHash": "0x277bc7b304317abd9d776c3143498f2ef23b102dc7f1ff056ead4d7e8983b7e2" - } - }, - "schemaVersion": "3.0.23" -} \ No newline at end of file diff --git a/build/chaosnet/DarknodeSlasher.json b/build/chaosnet/DarknodeSlasher.json deleted file mode 100644 index ff74734f..00000000 --- a/build/chaosnet/DarknodeSlasher.json +++ /dev/null @@ -1,608 +0,0 @@ -{ - "contractName": "DarknodeSlasher", - "abi": [ - { - "inputs": [ - { - "internalType": "contract DarknodeRegistryLogicV1", - "name": "_darknodeRegistry", - "type": "address" - } - ], - "payable": false, - "stateMutability": "nonpayable", - "type": "constructor" - }, - { - "anonymous": false, - "inputs": [ - { - "indexed": true, - "internalType": "contract DarknodeRegistryLogicV1", - "name": "_previousDarknodeRegistry", - "type": "address" - }, - { - "indexed": true, - "internalType": "contract DarknodeRegistryLogicV1", - "name": "_nextDarknodeRegistry", - "type": "address" - } - ], - "name": "LogDarknodeRegistryUpdated", - "type": "event" - }, - { - "anonymous": false, - "inputs": [ - { - "indexed": true, - "internalType": "address", - "name": "previousOwner", - "type": "address" - }, - { - "indexed": true, - "internalType": "address", - "name": "newOwner", - "type": "address" - } - ], - "name": "OwnershipTransferred", - "type": "event" - }, - { - "constant": false, - "inputs": [ - { - "internalType": "address", - "name": "_guilty", - "type": "address" - } - ], - "name": "blacklist", - "outputs": [], - "payable": false, - "stateMutability": "nonpayable", - "type": "function" - }, - { - "constant": true, - "inputs": [], - "name": "blacklistSlashPercent", - "outputs": [ - { - "internalType": "uint256", - "name": "", - "type": "uint256" - } - ], - "payable": false, - "stateMutability": "view", - "type": "function" - }, - { - "constant": true, - "inputs": [ - { - "internalType": "address", - "name": "", - "type": "address" - } - ], - "name": "blacklisted", - "outputs": [ - { - "internalType": "bool", - "name": "", - "type": "bool" - } - ], - "payable": false, - "stateMutability": "view", - "type": "function" - }, - { - "constant": false, - "inputs": [], - "name": "claimOwnership", - "outputs": [], - "payable": false, - "stateMutability": "nonpayable", - "type": "function" - }, - { - "constant": true, - "inputs": [], - "name": "darknodeRegistry", - "outputs": [ - { - "internalType": "contract DarknodeRegistryLogicV1", - "name": "", - "type": "address" - } - ], - "payable": false, - "stateMutability": "view", - "type": "function" - }, - { - "constant": false, - "inputs": [ - { - "internalType": "address", - "name": "_nextOwner", - "type": "address" - } - ], - "name": "initialize", - "outputs": [], - "payable": false, - "stateMutability": "nonpayable", - "type": "function" - }, - { - "constant": true, - "inputs": [], - "name": "isOwner", - "outputs": [ - { - "internalType": "bool", - "name": "", - "type": "bool" - } - ], - "payable": false, - "stateMutability": "view", - "type": "function" - }, - { - "constant": true, - "inputs": [], - "name": "maliciousSlashPercent", - "outputs": [ - { - "internalType": "uint256", - "name": "", - "type": "uint256" - } - ], - "payable": false, - "stateMutability": "view", - "type": "function" - }, - { - "constant": true, - "inputs": [], - "name": "owner", - "outputs": [ - { - "internalType": "address", - "name": "", - "type": "address" - } - ], - "payable": false, - "stateMutability": "view", - "type": "function" - }, - { - "constant": true, - "inputs": [], - "name": "pendingOwner", - "outputs": [ - { - "internalType": "address", - "name": "", - "type": "address" - } - ], - "payable": false, - "stateMutability": "view", - "type": "function" - }, - { - "constant": false, - "inputs": [], - "name": "renounceOwnership", - "outputs": [], - "payable": false, - "stateMutability": "nonpayable", - "type": "function" - }, - { - "constant": true, - "inputs": [], - "name": "secretRevealSlashPercent", - "outputs": [ - { - "internalType": "uint256", - "name": "", - "type": "uint256" - } - ], - "payable": false, - "stateMutability": "view", - "type": "function" - }, - { - "constant": true, - "inputs": [ - { - "internalType": "address", - "name": "", - "type": "address" - } - ], - "name": "secretRevealed", - "outputs": [ - { - "internalType": "bool", - "name": "", - "type": "bool" - } - ], - "payable": false, - "stateMutability": "view", - "type": "function" - }, - { - "constant": false, - "inputs": [ - { - "internalType": "uint256", - "name": "_percentage", - "type": "uint256" - } - ], - "name": "setBlacklistSlashPercent", - "outputs": [], - "payable": false, - "stateMutability": "nonpayable", - "type": "function" - }, - { - "constant": false, - "inputs": [ - { - "internalType": "uint256", - "name": "_percentage", - "type": "uint256" - } - ], - "name": "setMaliciousSlashPercent", - "outputs": [], - "payable": false, - "stateMutability": "nonpayable", - "type": "function" - }, - { - "constant": false, - "inputs": [ - { - "internalType": "uint256", - "name": "_percentage", - "type": "uint256" - } - ], - "name": "setSecretRevealSlashPercent", - "outputs": [], - "payable": false, - "stateMutability": "nonpayable", - "type": "function" - }, - { - "constant": false, - "inputs": [ - { - "internalType": "address", - "name": "_guilty", - "type": "address" - }, - { - "internalType": "address", - "name": "_challenger", - "type": "address" - }, - { - "internalType": "uint256", - "name": "_percentage", - "type": "uint256" - } - ], - "name": "slash", - "outputs": [], - "payable": false, - "stateMutability": "nonpayable", - "type": "function" - }, - { - "constant": false, - "inputs": [ - { - "internalType": "uint256", - "name": "_height", - "type": "uint256" - }, - { - "internalType": "uint256", - "name": "_round", - "type": "uint256" - }, - { - "internalType": "bytes", - "name": "_blockhash1", - "type": "bytes" - }, - { - "internalType": "bytes", - "name": "_signature1", - "type": "bytes" - }, - { - "internalType": "bytes", - "name": "_blockhash2", - "type": "bytes" - }, - { - "internalType": "bytes", - "name": "_signature2", - "type": "bytes" - } - ], - "name": "slashDuplicatePrecommit", - "outputs": [], - "payable": false, - "stateMutability": "nonpayable", - "type": "function" - }, - { - "constant": false, - "inputs": [ - { - "internalType": "uint256", - "name": "_height", - "type": "uint256" - }, - { - "internalType": "uint256", - "name": "_round", - "type": "uint256" - }, - { - "internalType": "bytes", - "name": "_blockhash1", - "type": "bytes" - }, - { - "internalType": "bytes", - "name": "_signature1", - "type": "bytes" - }, - { - "internalType": "bytes", - "name": "_blockhash2", - "type": "bytes" - }, - { - "internalType": "bytes", - "name": "_signature2", - "type": "bytes" - } - ], - "name": "slashDuplicatePrevote", - "outputs": [], - "payable": false, - "stateMutability": "nonpayable", - "type": "function" - }, - { - "constant": false, - "inputs": [ - { - "internalType": "uint256", - "name": "_height", - "type": "uint256" - }, - { - "internalType": "uint256", - "name": "_round", - "type": "uint256" - }, - { - "internalType": "bytes", - "name": "_blockhash1", - "type": "bytes" - }, - { - "internalType": "uint256", - "name": "_validRound1", - "type": "uint256" - }, - { - "internalType": "bytes", - "name": "_signature1", - "type": "bytes" - }, - { - "internalType": "bytes", - "name": "_blockhash2", - "type": "bytes" - }, - { - "internalType": "uint256", - "name": "_validRound2", - "type": "uint256" - }, - { - "internalType": "bytes", - "name": "_signature2", - "type": "bytes" - } - ], - "name": "slashDuplicatePropose", - "outputs": [], - "payable": false, - "stateMutability": "nonpayable", - "type": "function" - }, - { - "constant": false, - "inputs": [ - { - "internalType": "uint256", - "name": "_a", - "type": "uint256" - }, - { - "internalType": "uint256", - "name": "_b", - "type": "uint256" - }, - { - "internalType": "uint256", - "name": "_c", - "type": "uint256" - }, - { - "internalType": "uint256", - "name": "_d", - "type": "uint256" - }, - { - "internalType": "uint256", - "name": "_e", - "type": "uint256" - }, - { - "internalType": "uint256", - "name": "_f", - "type": "uint256" - }, - { - "internalType": "bytes", - "name": "_signature", - "type": "bytes" - } - ], - "name": "slashSecretReveal", - "outputs": [], - "payable": false, - "stateMutability": "nonpayable", - "type": "function" - }, - { - "constant": true, - "inputs": [ - { - "internalType": "uint256", - "name": "", - "type": "uint256" - }, - { - "internalType": "uint256", - "name": "", - "type": "uint256" - }, - { - "internalType": "address", - "name": "", - "type": "address" - } - ], - "name": "slashed", - "outputs": [ - { - "internalType": "bool", - "name": "", - "type": "bool" - } - ], - "payable": false, - "stateMutability": "view", - "type": "function" - }, - { - "constant": false, - "inputs": [ - { - "internalType": "address", - "name": "newOwner", - "type": "address" - } - ], - "name": "transferOwnership", - "outputs": [], - "payable": false, - "stateMutability": "nonpayable", - "type": "function" - }, - { - "constant": false, - "inputs": [ - { - "internalType": "contract DarknodeRegistryLogicV1", - "name": "_darknodeRegistry", - "type": "address" - } - ], - "name": "updateDarknodeRegistry", - "outputs": [], - "payable": false, - "stateMutability": "nonpayable", - "type": "function" - } - ], - "sourcePath": "~/github/renproject/ren-sol/contracts/DarknodeSlasher/DarknodeSlasher.sol", - "compiler": { - "name": "solc", - "version": "0.5.16+commit.9c3226ce.Emscripten.clang" - }, - "networks": { - "1": { - "events": { - "0xf9f6dd5c784f63cc27c1079c73574a73485a6c2e7f7e2181c5eb2be8c693cfb7": { - "anonymous": false, - "inputs": [ - { - "indexed": true, - "internalType": "contract DarknodeRegistryLogicV1", - "name": "_previousDarknodeRegistry", - "type": "address" - }, - { - "indexed": true, - "internalType": "contract DarknodeRegistryLogicV1", - "name": "_nextDarknodeRegistry", - "type": "address" - } - ], - "name": "LogDarknodeRegistryUpdated", - "type": "event" - }, - "0x8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0": { - "anonymous": false, - "inputs": [ - { - "indexed": true, - "internalType": "address", - "name": "previousOwner", - "type": "address" - }, - { - "indexed": true, - "internalType": "address", - "name": "newOwner", - "type": "address" - } - ], - "name": "OwnershipTransferred", - "type": "event" - } - }, - "links": {}, - "address": "0xD33CfE24e84D3156211CC2eA74192593Ccf559Aa" - } - }, - "schemaVersion": "3.0.23" -} \ No newline at end of file diff --git a/build/chaosnet/GatewayLogicV1.json b/build/chaosnet/GatewayLogicV1.json deleted file mode 100644 index 82f7b58f..00000000 --- a/build/chaosnet/GatewayLogicV1.json +++ /dev/null @@ -1,720 +0,0 @@ -{ - "contractName": "GatewayLogicV1", - "abi": [ - { - "anonymous": false, - "inputs": [ - { - "indexed": false, - "internalType": "bytes", - "name": "_to", - "type": "bytes" - }, - { - "indexed": false, - "internalType": "uint256", - "name": "_amount", - "type": "uint256" - }, - { - "indexed": true, - "internalType": "uint256", - "name": "_n", - "type": "uint256" - }, - { - "indexed": true, - "internalType": "bytes", - "name": "_indexedTo", - "type": "bytes" - } - ], - "name": "LogBurn", - "type": "event" - }, - { - "anonymous": false, - "inputs": [ - { - "indexed": true, - "internalType": "address", - "name": "_to", - "type": "address" - }, - { - "indexed": false, - "internalType": "uint256", - "name": "_amount", - "type": "uint256" - }, - { - "indexed": true, - "internalType": "uint256", - "name": "_n", - "type": "uint256" - }, - { - "indexed": true, - "internalType": "bytes32", - "name": "_signedMessageHash", - "type": "bytes32" - } - ], - "name": "LogMint", - "type": "event" - }, - { - "anonymous": false, - "inputs": [ - { - "indexed": true, - "internalType": "address", - "name": "_newMintAuthority", - "type": "address" - } - ], - "name": "LogMintAuthorityUpdated", - "type": "event" - }, - { - "anonymous": false, - "inputs": [ - { - "indexed": true, - "internalType": "address", - "name": "previousOwner", - "type": "address" - }, - { - "indexed": true, - "internalType": "address", - "name": "newOwner", - "type": "address" - } - ], - "name": "OwnershipTransferred", - "type": "event" - }, - { - "constant": false, - "inputs": [ - { - "internalType": "address", - "name": "_token", - "type": "address" - } - ], - "name": "blacklistRecoverableToken", - "outputs": [], - "payable": false, - "stateMutability": "nonpayable", - "type": "function" - }, - { - "constant": false, - "inputs": [ - { - "internalType": "bytes", - "name": "_to", - "type": "bytes" - }, - { - "internalType": "uint256", - "name": "_amount", - "type": "uint256" - } - ], - "name": "burn", - "outputs": [ - { - "internalType": "uint256", - "name": "", - "type": "uint256" - } - ], - "payable": false, - "stateMutability": "nonpayable", - "type": "function" - }, - { - "constant": true, - "inputs": [], - "name": "burnFee", - "outputs": [ - { - "internalType": "uint16", - "name": "", - "type": "uint16" - } - ], - "payable": false, - "stateMutability": "view", - "type": "function" - }, - { - "constant": false, - "inputs": [], - "name": "claimOwnership", - "outputs": [], - "payable": false, - "stateMutability": "nonpayable", - "type": "function" - }, - { - "constant": false, - "inputs": [], - "name": "claimTokenOwnership", - "outputs": [], - "payable": false, - "stateMutability": "nonpayable", - "type": "function" - }, - { - "constant": true, - "inputs": [], - "name": "feeRecipient", - "outputs": [ - { - "internalType": "address", - "name": "", - "type": "address" - } - ], - "payable": false, - "stateMutability": "view", - "type": "function" - }, - { - "constant": true, - "inputs": [ - { - "internalType": "bytes32", - "name": "_pHash", - "type": "bytes32" - }, - { - "internalType": "uint256", - "name": "_amount", - "type": "uint256" - }, - { - "internalType": "address", - "name": "_to", - "type": "address" - }, - { - "internalType": "bytes32", - "name": "_nHash", - "type": "bytes32" - } - ], - "name": "hashForSignature", - "outputs": [ - { - "internalType": "bytes32", - "name": "", - "type": "bytes32" - } - ], - "payable": false, - "stateMutability": "view", - "type": "function" - }, - { - "constant": false, - "inputs": [ - { - "internalType": "contract RenERC20LogicV1", - "name": "_token", - "type": "address" - }, - { - "internalType": "address", - "name": "_feeRecipient", - "type": "address" - }, - { - "internalType": "address", - "name": "_mintAuthority", - "type": "address" - }, - { - "internalType": "uint16", - "name": "_mintFee", - "type": "uint16" - }, - { - "internalType": "uint16", - "name": "_burnFee", - "type": "uint16" - }, - { - "internalType": "uint256", - "name": "_minimumBurnAmount", - "type": "uint256" - } - ], - "name": "initialize", - "outputs": [], - "payable": false, - "stateMutability": "nonpayable", - "type": "function" - }, - { - "constant": false, - "inputs": [ - { - "internalType": "address", - "name": "_nextOwner", - "type": "address" - } - ], - "name": "initialize", - "outputs": [], - "payable": false, - "stateMutability": "nonpayable", - "type": "function" - }, - { - "constant": true, - "inputs": [], - "name": "isOwner", - "outputs": [ - { - "internalType": "bool", - "name": "", - "type": "bool" - } - ], - "payable": false, - "stateMutability": "view", - "type": "function" - }, - { - "constant": true, - "inputs": [], - "name": "minimumBurnAmount", - "outputs": [ - { - "internalType": "uint256", - "name": "", - "type": "uint256" - } - ], - "payable": false, - "stateMutability": "view", - "type": "function" - }, - { - "constant": false, - "inputs": [ - { - "internalType": "bytes32", - "name": "_pHash", - "type": "bytes32" - }, - { - "internalType": "uint256", - "name": "_amountUnderlying", - "type": "uint256" - }, - { - "internalType": "bytes32", - "name": "_nHash", - "type": "bytes32" - }, - { - "internalType": "bytes", - "name": "_sig", - "type": "bytes" - } - ], - "name": "mint", - "outputs": [ - { - "internalType": "uint256", - "name": "", - "type": "uint256" - } - ], - "payable": false, - "stateMutability": "nonpayable", - "type": "function" - }, - { - "constant": true, - "inputs": [], - "name": "mintAuthority", - "outputs": [ - { - "internalType": "address", - "name": "", - "type": "address" - } - ], - "payable": false, - "stateMutability": "view", - "type": "function" - }, - { - "constant": true, - "inputs": [], - "name": "mintFee", - "outputs": [ - { - "internalType": "uint16", - "name": "", - "type": "uint16" - } - ], - "payable": false, - "stateMutability": "view", - "type": "function" - }, - { - "constant": true, - "inputs": [], - "name": "nextN", - "outputs": [ - { - "internalType": "uint256", - "name": "", - "type": "uint256" - } - ], - "payable": false, - "stateMutability": "view", - "type": "function" - }, - { - "constant": true, - "inputs": [], - "name": "owner", - "outputs": [ - { - "internalType": "address", - "name": "", - "type": "address" - } - ], - "payable": false, - "stateMutability": "view", - "type": "function" - }, - { - "constant": true, - "inputs": [], - "name": "pendingOwner", - "outputs": [ - { - "internalType": "address", - "name": "", - "type": "address" - } - ], - "payable": false, - "stateMutability": "view", - "type": "function" - }, - { - "constant": false, - "inputs": [ - { - "internalType": "address", - "name": "_token", - "type": "address" - } - ], - "name": "recoverTokens", - "outputs": [], - "payable": false, - "stateMutability": "nonpayable", - "type": "function" - }, - { - "constant": false, - "inputs": [], - "name": "renounceOwnership", - "outputs": [], - "payable": false, - "stateMutability": "nonpayable", - "type": "function" - }, - { - "constant": true, - "inputs": [ - { - "internalType": "bytes32", - "name": "", - "type": "bytes32" - } - ], - "name": "status", - "outputs": [ - { - "internalType": "bool", - "name": "", - "type": "bool" - } - ], - "payable": false, - "stateMutability": "view", - "type": "function" - }, - { - "constant": true, - "inputs": [], - "name": "token", - "outputs": [ - { - "internalType": "contract RenERC20LogicV1", - "name": "", - "type": "address" - } - ], - "payable": false, - "stateMutability": "view", - "type": "function" - }, - { - "constant": false, - "inputs": [ - { - "internalType": "address", - "name": "newOwner", - "type": "address" - } - ], - "name": "transferOwnership", - "outputs": [], - "payable": false, - "stateMutability": "nonpayable", - "type": "function" - }, - { - "constant": false, - "inputs": [ - { - "internalType": "contract GatewayLogicV1", - "name": "_nextTokenOwner", - "type": "address" - } - ], - "name": "transferTokenOwnership", - "outputs": [], - "payable": false, - "stateMutability": "nonpayable", - "type": "function" - }, - { - "constant": false, - "inputs": [ - { - "internalType": "uint16", - "name": "_nextBurnFee", - "type": "uint16" - } - ], - "name": "updateBurnFee", - "outputs": [], - "payable": false, - "stateMutability": "nonpayable", - "type": "function" - }, - { - "constant": false, - "inputs": [ - { - "internalType": "address", - "name": "_nextFeeRecipient", - "type": "address" - } - ], - "name": "updateFeeRecipient", - "outputs": [], - "payable": false, - "stateMutability": "nonpayable", - "type": "function" - }, - { - "constant": false, - "inputs": [ - { - "internalType": "uint256", - "name": "_minimumBurnAmount", - "type": "uint256" - } - ], - "name": "updateMinimumBurnAmount", - "outputs": [], - "payable": false, - "stateMutability": "nonpayable", - "type": "function" - }, - { - "constant": false, - "inputs": [ - { - "internalType": "address", - "name": "_nextMintAuthority", - "type": "address" - } - ], - "name": "updateMintAuthority", - "outputs": [], - "payable": false, - "stateMutability": "nonpayable", - "type": "function" - }, - { - "constant": false, - "inputs": [ - { - "internalType": "uint16", - "name": "_nextMintFee", - "type": "uint16" - } - ], - "name": "updateMintFee", - "outputs": [], - "payable": false, - "stateMutability": "nonpayable", - "type": "function" - }, - { - "constant": true, - "inputs": [ - { - "internalType": "bytes32", - "name": "_signedMessageHash", - "type": "bytes32" - }, - { - "internalType": "bytes", - "name": "_sig", - "type": "bytes" - } - ], - "name": "verifySignature", - "outputs": [ - { - "internalType": "bool", - "name": "", - "type": "bool" - } - ], - "payable": false, - "stateMutability": "view", - "type": "function" - } - ], - "sourcePath": "~/github/renproject/ren-sol/contracts/Gateway/Gateway.sol", - "compiler": { - "name": "solc", - "version": "0.5.16+commit.9c3226ce.Emscripten.clang" - }, - "networks": { - "1": { - "events": { - "0x1619fc95050ffb8c94c9077c82b3e1ebbf8d571b6234241c55ba0aaf40da019e": { - "anonymous": false, - "inputs": [ - { - "indexed": false, - "internalType": "bytes", - "name": "_to", - "type": "bytes" - }, - { - "indexed": false, - "internalType": "uint256", - "name": "_amount", - "type": "uint256" - }, - { - "indexed": true, - "internalType": "uint256", - "name": "_n", - "type": "uint256" - }, - { - "indexed": true, - "internalType": "bytes", - "name": "_indexedTo", - "type": "bytes" - } - ], - "name": "LogBurn", - "type": "event" - }, - "0xa58ba939eb08dab7eaf8ad09c16e7405ee88e5153e15da62d5481296a9f727fa": { - "anonymous": false, - "inputs": [ - { - "indexed": true, - "internalType": "address", - "name": "_to", - "type": "address" - }, - { - "indexed": false, - "internalType": "uint256", - "name": "_amount", - "type": "uint256" - }, - { - "indexed": true, - "internalType": "uint256", - "name": "_n", - "type": "uint256" - }, - { - "indexed": true, - "internalType": "bytes32", - "name": "_signedMessageHash", - "type": "bytes32" - } - ], - "name": "LogMint", - "type": "event" - }, - "0xf0f08e606c1dd3a2c220ada53422fd9fe0aa75614b27db0549f649de3ad2072a": { - "anonymous": false, - "inputs": [ - { - "indexed": true, - "internalType": "address", - "name": "_newMintAuthority", - "type": "address" - } - ], - "name": "LogMintAuthorityUpdated", - "type": "event" - }, - "0x8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0": { - "anonymous": false, - "inputs": [ - { - "indexed": true, - "internalType": "address", - "name": "previousOwner", - "type": "address" - }, - { - "indexed": true, - "internalType": "address", - "name": "newOwner", - "type": "address" - } - ], - "name": "OwnershipTransferred", - "type": "event" - } - }, - "links": {}, - "address": "0x85BdE74CA4760587eC9d77f775Cb83d4Cb76e5ae", - "transactionHash": "0x84ed6cda61171132fcb8c1fc0db51781882540cd5ad8da89bf810a39f47e5649" - } - }, - "schemaVersion": "3.0.23" -} \ No newline at end of file diff --git a/build/chaosnet/GatewayRegistry.json b/build/chaosnet/GatewayRegistry.json deleted file mode 100644 index a3ce7f9c..00000000 --- a/build/chaosnet/GatewayRegistry.json +++ /dev/null @@ -1,557 +0,0 @@ -{ - "contractName": "GatewayRegistry", - "abi": [ - { - "inputs": [], - "payable": false, - "stateMutability": "nonpayable", - "type": "constructor" - }, - { - "anonymous": false, - "inputs": [ - { - "indexed": false, - "internalType": "string", - "name": "_symbol", - "type": "string" - }, - { - "indexed": true, - "internalType": "string", - "name": "_indexedSymbol", - "type": "string" - }, - { - "indexed": true, - "internalType": "address", - "name": "_token", - "type": "address" - }, - { - "indexed": true, - "internalType": "address", - "name": "_gatewayContract", - "type": "address" - } - ], - "name": "LogGatewayDeregistered", - "type": "event" - }, - { - "anonymous": false, - "inputs": [ - { - "indexed": false, - "internalType": "string", - "name": "_symbol", - "type": "string" - }, - { - "indexed": true, - "internalType": "string", - "name": "_indexedSymbol", - "type": "string" - }, - { - "indexed": true, - "internalType": "address", - "name": "_token", - "type": "address" - }, - { - "indexed": true, - "internalType": "address", - "name": "_gatewayContract", - "type": "address" - } - ], - "name": "LogGatewayRegistered", - "type": "event" - }, - { - "anonymous": false, - "inputs": [ - { - "indexed": true, - "internalType": "address", - "name": "_token", - "type": "address" - }, - { - "indexed": true, - "internalType": "address", - "name": "_currentGatewayContract", - "type": "address" - }, - { - "indexed": true, - "internalType": "address", - "name": "_newGatewayContract", - "type": "address" - } - ], - "name": "LogGatewayUpdated", - "type": "event" - }, - { - "anonymous": false, - "inputs": [ - { - "indexed": true, - "internalType": "address", - "name": "previousOwner", - "type": "address" - }, - { - "indexed": true, - "internalType": "address", - "name": "newOwner", - "type": "address" - } - ], - "name": "OwnershipTransferred", - "type": "event" - }, - { - "constant": false, - "inputs": [ - { - "internalType": "address", - "name": "_token", - "type": "address" - } - ], - "name": "blacklistRecoverableToken", - "outputs": [], - "payable": false, - "stateMutability": "nonpayable", - "type": "function" - }, - { - "constant": false, - "inputs": [], - "name": "claimOwnership", - "outputs": [], - "payable": false, - "stateMutability": "nonpayable", - "type": "function" - }, - { - "constant": true, - "inputs": [ - { - "internalType": "string", - "name": "_tokenSymbol", - "type": "string" - } - ], - "name": "getGatewayBySymbol", - "outputs": [ - { - "internalType": "contract IGateway", - "name": "", - "type": "address" - } - ], - "payable": false, - "stateMutability": "view", - "type": "function" - }, - { - "constant": true, - "inputs": [ - { - "internalType": "address", - "name": "_token", - "type": "address" - } - ], - "name": "getGatewayByToken", - "outputs": [ - { - "internalType": "contract IGateway", - "name": "", - "type": "address" - } - ], - "payable": false, - "stateMutability": "view", - "type": "function" - }, - { - "constant": true, - "inputs": [ - { - "internalType": "address", - "name": "_start", - "type": "address" - }, - { - "internalType": "uint256", - "name": "_count", - "type": "uint256" - } - ], - "name": "getGateways", - "outputs": [ - { - "internalType": "address[]", - "name": "", - "type": "address[]" - } - ], - "payable": false, - "stateMutability": "view", - "type": "function" - }, - { - "constant": true, - "inputs": [ - { - "internalType": "address", - "name": "_start", - "type": "address" - }, - { - "internalType": "uint256", - "name": "_count", - "type": "uint256" - } - ], - "name": "getRenTokens", - "outputs": [ - { - "internalType": "address[]", - "name": "", - "type": "address[]" - } - ], - "payable": false, - "stateMutability": "view", - "type": "function" - }, - { - "constant": true, - "inputs": [ - { - "internalType": "string", - "name": "_tokenSymbol", - "type": "string" - } - ], - "name": "getTokenBySymbol", - "outputs": [ - { - "internalType": "contract IERC20", - "name": "", - "type": "address" - } - ], - "payable": false, - "stateMutability": "view", - "type": "function" - }, - { - "constant": false, - "inputs": [ - { - "internalType": "address", - "name": "_nextOwner", - "type": "address" - } - ], - "name": "initialize", - "outputs": [], - "payable": false, - "stateMutability": "nonpayable", - "type": "function" - }, - { - "constant": true, - "inputs": [], - "name": "isOwner", - "outputs": [ - { - "internalType": "bool", - "name": "", - "type": "bool" - } - ], - "payable": false, - "stateMutability": "view", - "type": "function" - }, - { - "constant": true, - "inputs": [], - "name": "owner", - "outputs": [ - { - "internalType": "address", - "name": "", - "type": "address" - } - ], - "payable": false, - "stateMutability": "view", - "type": "function" - }, - { - "constant": true, - "inputs": [], - "name": "pendingOwner", - "outputs": [ - { - "internalType": "address", - "name": "", - "type": "address" - } - ], - "payable": false, - "stateMutability": "view", - "type": "function" - }, - { - "constant": false, - "inputs": [ - { - "internalType": "address", - "name": "_token", - "type": "address" - } - ], - "name": "recoverTokens", - "outputs": [], - "payable": false, - "stateMutability": "nonpayable", - "type": "function" - }, - { - "constant": false, - "inputs": [ - { - "internalType": "string", - "name": "_symbol", - "type": "string" - } - ], - "name": "removeGateway", - "outputs": [], - "payable": false, - "stateMutability": "nonpayable", - "type": "function" - }, - { - "constant": false, - "inputs": [], - "name": "renounceOwnership", - "outputs": [], - "payable": false, - "stateMutability": "nonpayable", - "type": "function" - }, - { - "constant": false, - "inputs": [ - { - "internalType": "string", - "name": "_symbol", - "type": "string" - }, - { - "internalType": "address", - "name": "_token", - "type": "address" - }, - { - "internalType": "address", - "name": "_gatewayContract", - "type": "address" - } - ], - "name": "setGateway", - "outputs": [], - "payable": false, - "stateMutability": "nonpayable", - "type": "function" - }, - { - "constant": true, - "inputs": [ - { - "internalType": "string", - "name": "_tokenSymbol", - "type": "string" - } - ], - "name": "symbolIsValid", - "outputs": [ - { - "internalType": "bool", - "name": "", - "type": "bool" - } - ], - "payable": false, - "stateMutability": "pure", - "type": "function" - }, - { - "constant": false, - "inputs": [ - { - "internalType": "address", - "name": "newOwner", - "type": "address" - } - ], - "name": "transferOwnership", - "outputs": [], - "payable": false, - "stateMutability": "nonpayable", - "type": "function" - }, - { - "constant": false, - "inputs": [ - { - "internalType": "address", - "name": "_token", - "type": "address" - }, - { - "internalType": "address", - "name": "_newGatewayContract", - "type": "address" - } - ], - "name": "updateGateway", - "outputs": [], - "payable": false, - "stateMutability": "nonpayable", - "type": "function" - } - ], - "sourcePath": "~/github/renproject/ren-sol/contracts/Gateway/GatewayRegistry.sol", - "compiler": { - "name": "solc", - "version": "0.5.16+commit.9c3226ce.Emscripten.clang" - }, - "networks": { - "1": { - "events": { - "0xea98e49727cf7c3a8c3926a036a6d41047c9b766d9109f22962950f37a2094aa": { - "anonymous": false, - "inputs": [ - { - "indexed": false, - "internalType": "string", - "name": "_symbol", - "type": "string" - }, - { - "indexed": true, - "internalType": "string", - "name": "_indexedSymbol", - "type": "string" - }, - { - "indexed": true, - "internalType": "address", - "name": "_token", - "type": "address" - }, - { - "indexed": true, - "internalType": "address", - "name": "_gatewayContract", - "type": "address" - } - ], - "name": "LogGatewayDeregistered", - "type": "event" - }, - "0xd433aae9ea620c1976ff88f75c629f477dbffe6bf277edad8a31c983117ab32a": { - "anonymous": false, - "inputs": [ - { - "indexed": false, - "internalType": "string", - "name": "_symbol", - "type": "string" - }, - { - "indexed": true, - "internalType": "string", - "name": "_indexedSymbol", - "type": "string" - }, - { - "indexed": true, - "internalType": "address", - "name": "_token", - "type": "address" - }, - { - "indexed": true, - "internalType": "address", - "name": "_gatewayContract", - "type": "address" - } - ], - "name": "LogGatewayRegistered", - "type": "event" - }, - "0x2dc9e208c924a5b14066ecb7121b371da427e696ad69456ed07a52cd2a710d99": { - "anonymous": false, - "inputs": [ - { - "indexed": true, - "internalType": "address", - "name": "_token", - "type": "address" - }, - { - "indexed": true, - "internalType": "address", - "name": "_currentGatewayContract", - "type": "address" - }, - { - "indexed": true, - "internalType": "address", - "name": "_newGatewayContract", - "type": "address" - } - ], - "name": "LogGatewayUpdated", - "type": "event" - }, - "0x8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0": { - "anonymous": false, - "inputs": [ - { - "indexed": true, - "internalType": "address", - "name": "previousOwner", - "type": "address" - }, - { - "indexed": true, - "internalType": "address", - "name": "newOwner", - "type": "address" - } - ], - "name": "OwnershipTransferred", - "type": "event" - } - }, - "links": {}, - "address": "0x817d2E41dABbA7A5e840353c9D73A40674ED3400", - "transactionHash": "0x471dee76d0ddc17e975ab053681c5edd46159ee9b77142a3032734434ec68bbd" - } - }, - "schemaVersion": "3.0.23" -} \ No newline at end of file diff --git a/build/chaosnet/ProtocolLogicV1.json b/build/chaosnet/ProtocolLogicV1.json deleted file mode 100644 index b25dbef5..00000000 --- a/build/chaosnet/ProtocolLogicV1.json +++ /dev/null @@ -1,574 +0,0 @@ -{ - "contractName": "ProtocolLogicV1", - "abi": [ - { - "anonymous": false, - "inputs": [ - { - "indexed": false, - "internalType": "string", - "name": "_symbol", - "type": "string" - }, - { - "indexed": true, - "internalType": "string", - "name": "_indexedSymbol", - "type": "string" - }, - { - "indexed": true, - "internalType": "address", - "name": "_tokenAddress", - "type": "address" - }, - { - "indexed": true, - "internalType": "address", - "name": "_gatewayAddress", - "type": "address" - } - ], - "name": "LogGatewayDeregistered", - "type": "event" - }, - { - "anonymous": false, - "inputs": [ - { - "indexed": false, - "internalType": "string", - "name": "_symbol", - "type": "string" - }, - { - "indexed": true, - "internalType": "string", - "name": "_indexedSymbol", - "type": "string" - }, - { - "indexed": true, - "internalType": "address", - "name": "_tokenAddress", - "type": "address" - }, - { - "indexed": true, - "internalType": "address", - "name": "_gatewayAddress", - "type": "address" - } - ], - "name": "LogGatewayRegistered", - "type": "event" - }, - { - "anonymous": false, - "inputs": [ - { - "indexed": true, - "internalType": "address", - "name": "_tokenAddress", - "type": "address" - }, - { - "indexed": true, - "internalType": "address", - "name": "_currentGatewayAddress", - "type": "address" - }, - { - "indexed": true, - "internalType": "address", - "name": "_newGatewayAddress", - "type": "address" - } - ], - "name": "LogGatewayUpdated", - "type": "event" - }, - { - "anonymous": false, - "inputs": [ - { - "indexed": true, - "internalType": "address", - "name": "previousOwner", - "type": "address" - }, - { - "indexed": true, - "internalType": "address", - "name": "newOwner", - "type": "address" - } - ], - "name": "OwnershipTransferred", - "type": "event" - }, - { - "constant": false, - "inputs": [ - { - "internalType": "contract DarknodeRegistryLogicV1", - "name": "_newDarknodeRegistry", - "type": "address" - } - ], - "name": "_updateDarknodeRegistry", - "outputs": [], - "payable": false, - "stateMutability": "nonpayable", - "type": "function" - }, - { - "constant": false, - "inputs": [ - { - "internalType": "contract GatewayRegistry", - "name": "_newGatewayRegistry", - "type": "address" - } - ], - "name": "_updateGatewayRegistry", - "outputs": [], - "payable": false, - "stateMutability": "nonpayable", - "type": "function" - }, - { - "constant": false, - "inputs": [], - "name": "claimOwnership", - "outputs": [], - "payable": false, - "stateMutability": "nonpayable", - "type": "function" - }, - { - "constant": true, - "inputs": [], - "name": "darknodePayment", - "outputs": [ - { - "internalType": "contract DarknodePayment", - "name": "", - "type": "address" - } - ], - "payable": false, - "stateMutability": "view", - "type": "function" - }, - { - "constant": true, - "inputs": [], - "name": "darknodePaymentStore", - "outputs": [ - { - "internalType": "contract DarknodePaymentStore", - "name": "", - "type": "address" - } - ], - "payable": false, - "stateMutability": "view", - "type": "function" - }, - { - "constant": true, - "inputs": [], - "name": "darknodeRegistry", - "outputs": [ - { - "internalType": "contract DarknodeRegistryLogicV1", - "name": "", - "type": "address" - } - ], - "payable": false, - "stateMutability": "view", - "type": "function" - }, - { - "constant": true, - "inputs": [], - "name": "darknodeRegistryStore", - "outputs": [ - { - "internalType": "contract DarknodeRegistryStore", - "name": "", - "type": "address" - } - ], - "payable": false, - "stateMutability": "view", - "type": "function" - }, - { - "constant": true, - "inputs": [], - "name": "darknodeSlasher", - "outputs": [ - { - "internalType": "contract DarknodeSlasher", - "name": "", - "type": "address" - } - ], - "payable": false, - "stateMutability": "view", - "type": "function" - }, - { - "constant": true, - "inputs": [], - "name": "gatewayRegistry", - "outputs": [ - { - "internalType": "contract GatewayRegistry", - "name": "", - "type": "address" - } - ], - "payable": false, - "stateMutability": "view", - "type": "function" - }, - { - "constant": true, - "inputs": [ - { - "internalType": "string", - "name": "_tokenSymbol", - "type": "string" - } - ], - "name": "getGatewayBySymbol", - "outputs": [ - { - "internalType": "contract IGateway", - "name": "", - "type": "address" - } - ], - "payable": false, - "stateMutability": "view", - "type": "function" - }, - { - "constant": true, - "inputs": [ - { - "internalType": "address", - "name": "_tokenAddress", - "type": "address" - } - ], - "name": "getGatewayByToken", - "outputs": [ - { - "internalType": "contract IGateway", - "name": "", - "type": "address" - } - ], - "payable": false, - "stateMutability": "view", - "type": "function" - }, - { - "constant": true, - "inputs": [ - { - "internalType": "address", - "name": "_start", - "type": "address" - }, - { - "internalType": "uint256", - "name": "_count", - "type": "uint256" - } - ], - "name": "getGateways", - "outputs": [ - { - "internalType": "address[]", - "name": "", - "type": "address[]" - } - ], - "payable": false, - "stateMutability": "view", - "type": "function" - }, - { - "constant": true, - "inputs": [ - { - "internalType": "address", - "name": "_start", - "type": "address" - }, - { - "internalType": "uint256", - "name": "_count", - "type": "uint256" - } - ], - "name": "getRenTokens", - "outputs": [ - { - "internalType": "address[]", - "name": "", - "type": "address[]" - } - ], - "payable": false, - "stateMutability": "view", - "type": "function" - }, - { - "constant": true, - "inputs": [ - { - "internalType": "string", - "name": "_tokenSymbol", - "type": "string" - } - ], - "name": "getTokenBySymbol", - "outputs": [ - { - "internalType": "contract IERC20", - "name": "", - "type": "address" - } - ], - "payable": false, - "stateMutability": "view", - "type": "function" - }, - { - "constant": false, - "inputs": [ - { - "internalType": "address", - "name": "_nextOwner", - "type": "address" - } - ], - "name": "initialize", - "outputs": [], - "payable": false, - "stateMutability": "nonpayable", - "type": "function" - }, - { - "constant": true, - "inputs": [], - "name": "isOwner", - "outputs": [ - { - "internalType": "bool", - "name": "", - "type": "bool" - } - ], - "payable": false, - "stateMutability": "view", - "type": "function" - }, - { - "constant": true, - "inputs": [], - "name": "owner", - "outputs": [ - { - "internalType": "address", - "name": "", - "type": "address" - } - ], - "payable": false, - "stateMutability": "view", - "type": "function" - }, - { - "constant": true, - "inputs": [], - "name": "pendingOwner", - "outputs": [ - { - "internalType": "address", - "name": "", - "type": "address" - } - ], - "payable": false, - "stateMutability": "view", - "type": "function" - }, - { - "constant": true, - "inputs": [], - "name": "renToken", - "outputs": [ - { - "internalType": "contract RenToken", - "name": "", - "type": "address" - } - ], - "payable": false, - "stateMutability": "view", - "type": "function" - }, - { - "constant": false, - "inputs": [], - "name": "renounceOwnership", - "outputs": [], - "payable": false, - "stateMutability": "nonpayable", - "type": "function" - }, - { - "constant": false, - "inputs": [ - { - "internalType": "address", - "name": "newOwner", - "type": "address" - } - ], - "name": "transferOwnership", - "outputs": [], - "payable": false, - "stateMutability": "nonpayable", - "type": "function" - } - ], - "sourcePath": "~/github/renproject/ren-sol/contracts/Protocol/Protocol.sol", - "compiler": { - "name": "solc", - "version": "0.5.16+commit.9c3226ce.Emscripten.clang" - }, - "networks": { - "1": { - "events": { - "0xea98e49727cf7c3a8c3926a036a6d41047c9b766d9109f22962950f37a2094aa": { - "anonymous": false, - "inputs": [ - { - "indexed": false, - "internalType": "string", - "name": "_symbol", - "type": "string" - }, - { - "indexed": true, - "internalType": "string", - "name": "_indexedSymbol", - "type": "string" - }, - { - "indexed": true, - "internalType": "address", - "name": "_tokenAddress", - "type": "address" - }, - { - "indexed": true, - "internalType": "address", - "name": "_gatewayAddress", - "type": "address" - } - ], - "name": "LogGatewayDeregistered", - "type": "event" - }, - "0xd433aae9ea620c1976ff88f75c629f477dbffe6bf277edad8a31c983117ab32a": { - "anonymous": false, - "inputs": [ - { - "indexed": false, - "internalType": "string", - "name": "_symbol", - "type": "string" - }, - { - "indexed": true, - "internalType": "string", - "name": "_indexedSymbol", - "type": "string" - }, - { - "indexed": true, - "internalType": "address", - "name": "_tokenAddress", - "type": "address" - }, - { - "indexed": true, - "internalType": "address", - "name": "_gatewayAddress", - "type": "address" - } - ], - "name": "LogGatewayRegistered", - "type": "event" - }, - "0x2dc9e208c924a5b14066ecb7121b371da427e696ad69456ed07a52cd2a710d99": { - "anonymous": false, - "inputs": [ - { - "indexed": true, - "internalType": "address", - "name": "_tokenAddress", - "type": "address" - }, - { - "indexed": true, - "internalType": "address", - "name": "_currentGatewayAddress", - "type": "address" - }, - { - "indexed": true, - "internalType": "address", - "name": "_newGatewayAddress", - "type": "address" - } - ], - "name": "LogGatewayUpdated", - "type": "event" - }, - "0x8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0": { - "anonymous": false, - "inputs": [ - { - "indexed": true, - "internalType": "address", - "name": "previousOwner", - "type": "address" - }, - { - "indexed": true, - "internalType": "address", - "name": "newOwner", - "type": "address" - } - ], - "name": "OwnershipTransferred", - "type": "event" - } - }, - "links": {}, - "address": "0x637278Bf72127c76d98D9a9BE36D2121fB2447c8" - } - }, - "schemaVersion": "3.0.23" -} \ No newline at end of file diff --git a/build/chaosnet/ProtocolProxy.json b/build/chaosnet/ProtocolProxy.json deleted file mode 100644 index b57e0019..00000000 --- a/build/chaosnet/ProtocolProxy.json +++ /dev/null @@ -1,213 +0,0 @@ -{ - "contractName": "ProtocolProxy", - "abi": [ - { - "anonymous": false, - "inputs": [ - { - "indexed": false, - "internalType": "address", - "name": "previousAdmin", - "type": "address" - }, - { - "indexed": false, - "internalType": "address", - "name": "newAdmin", - "type": "address" - } - ], - "name": "AdminChanged", - "type": "event" - }, - { - "anonymous": false, - "inputs": [ - { - "indexed": true, - "internalType": "address", - "name": "implementation", - "type": "address" - } - ], - "name": "Upgraded", - "type": "event" - }, - { - "payable": true, - "stateMutability": "payable", - "type": "fallback" - }, - { - "constant": false, - "inputs": [], - "name": "admin", - "outputs": [ - { - "internalType": "address", - "name": "", - "type": "address" - } - ], - "payable": false, - "stateMutability": "nonpayable", - "type": "function" - }, - { - "constant": false, - "inputs": [ - { - "internalType": "address", - "name": "newAdmin", - "type": "address" - } - ], - "name": "changeAdmin", - "outputs": [], - "payable": false, - "stateMutability": "nonpayable", - "type": "function" - }, - { - "constant": false, - "inputs": [], - "name": "implementation", - "outputs": [ - { - "internalType": "address", - "name": "", - "type": "address" - } - ], - "payable": false, - "stateMutability": "nonpayable", - "type": "function" - }, - { - "constant": false, - "inputs": [ - { - "internalType": "address", - "name": "_logic", - "type": "address" - }, - { - "internalType": "address", - "name": "_admin", - "type": "address" - }, - { - "internalType": "bytes", - "name": "_data", - "type": "bytes" - } - ], - "name": "initialize", - "outputs": [], - "payable": true, - "stateMutability": "payable", - "type": "function" - }, - { - "constant": false, - "inputs": [ - { - "internalType": "address", - "name": "_logic", - "type": "address" - }, - { - "internalType": "bytes", - "name": "_data", - "type": "bytes" - } - ], - "name": "initialize", - "outputs": [], - "payable": true, - "stateMutability": "payable", - "type": "function" - }, - { - "constant": false, - "inputs": [ - { - "internalType": "address", - "name": "newImplementation", - "type": "address" - } - ], - "name": "upgradeTo", - "outputs": [], - "payable": false, - "stateMutability": "nonpayable", - "type": "function" - }, - { - "constant": false, - "inputs": [ - { - "internalType": "address", - "name": "newImplementation", - "type": "address" - }, - { - "internalType": "bytes", - "name": "data", - "type": "bytes" - } - ], - "name": "upgradeToAndCall", - "outputs": [], - "payable": true, - "stateMutability": "payable", - "type": "function" - } - ], - "sourcePath": "~/github/renproject/ren-sol/contracts/Protocol/Protocol.sol", - "compiler": { - "name": "solc", - "version": "0.5.16+commit.9c3226ce.Emscripten.clang" - }, - "networks": { - "1": { - "events": { - "0x7e644d79422f17c01e4894b5f4f588d331ebfa28653d42ae832dc59e38c9798f": { - "anonymous": false, - "inputs": [ - { - "indexed": false, - "internalType": "address", - "name": "previousAdmin", - "type": "address" - }, - { - "indexed": false, - "internalType": "address", - "name": "newAdmin", - "type": "address" - } - ], - "name": "AdminChanged", - "type": "event" - }, - "0xbc7cd75a20ee27fd9adebab32041f755214dbc6bffa90cc0225b39da2e5c2d3b": { - "anonymous": false, - "inputs": [ - { - "indexed": true, - "internalType": "address", - "name": "implementation", - "type": "address" - } - ], - "name": "Upgraded", - "type": "event" - } - }, - "links": {}, - "address": "0xf61e97c464ec0cf48b33262c3a1ef42114275144" - } - }, - "schemaVersion": "3.0.23" -} \ No newline at end of file diff --git a/build/chaosnet/RenBCH.json b/build/chaosnet/RenBCH.json deleted file mode 100644 index 8eb3ff17..00000000 --- a/build/chaosnet/RenBCH.json +++ /dev/null @@ -1,214 +0,0 @@ -{ - "contractName": "RenBCH", - "abi": [ - { - "anonymous": false, - "inputs": [ - { - "indexed": false, - "internalType": "address", - "name": "previousAdmin", - "type": "address" - }, - { - "indexed": false, - "internalType": "address", - "name": "newAdmin", - "type": "address" - } - ], - "name": "AdminChanged", - "type": "event" - }, - { - "anonymous": false, - "inputs": [ - { - "indexed": true, - "internalType": "address", - "name": "implementation", - "type": "address" - } - ], - "name": "Upgraded", - "type": "event" - }, - { - "payable": true, - "stateMutability": "payable", - "type": "fallback" - }, - { - "constant": false, - "inputs": [], - "name": "admin", - "outputs": [ - { - "internalType": "address", - "name": "", - "type": "address" - } - ], - "payable": false, - "stateMutability": "nonpayable", - "type": "function" - }, - { - "constant": false, - "inputs": [ - { - "internalType": "address", - "name": "newAdmin", - "type": "address" - } - ], - "name": "changeAdmin", - "outputs": [], - "payable": false, - "stateMutability": "nonpayable", - "type": "function" - }, - { - "constant": false, - "inputs": [], - "name": "implementation", - "outputs": [ - { - "internalType": "address", - "name": "", - "type": "address" - } - ], - "payable": false, - "stateMutability": "nonpayable", - "type": "function" - }, - { - "constant": false, - "inputs": [ - { - "internalType": "address", - "name": "_logic", - "type": "address" - }, - { - "internalType": "address", - "name": "_admin", - "type": "address" - }, - { - "internalType": "bytes", - "name": "_data", - "type": "bytes" - } - ], - "name": "initialize", - "outputs": [], - "payable": true, - "stateMutability": "payable", - "type": "function" - }, - { - "constant": false, - "inputs": [ - { - "internalType": "address", - "name": "_logic", - "type": "address" - }, - { - "internalType": "bytes", - "name": "_data", - "type": "bytes" - } - ], - "name": "initialize", - "outputs": [], - "payable": true, - "stateMutability": "payable", - "type": "function" - }, - { - "constant": false, - "inputs": [ - { - "internalType": "address", - "name": "newImplementation", - "type": "address" - } - ], - "name": "upgradeTo", - "outputs": [], - "payable": false, - "stateMutability": "nonpayable", - "type": "function" - }, - { - "constant": false, - "inputs": [ - { - "internalType": "address", - "name": "newImplementation", - "type": "address" - }, - { - "internalType": "bytes", - "name": "data", - "type": "bytes" - } - ], - "name": "upgradeToAndCall", - "outputs": [], - "payable": true, - "stateMutability": "payable", - "type": "function" - } - ], - "sourcePath": "~/github/renproject/ren-sol/contracts/Gateway/RenERC20.sol", - "compiler": { - "name": "solc", - "version": "0.5.16+commit.9c3226ce.Emscripten.clang" - }, - "networks": { - "1": { - "events": { - "0x7e644d79422f17c01e4894b5f4f588d331ebfa28653d42ae832dc59e38c9798f": { - "anonymous": false, - "inputs": [ - { - "indexed": false, - "internalType": "address", - "name": "previousAdmin", - "type": "address" - }, - { - "indexed": false, - "internalType": "address", - "name": "newAdmin", - "type": "address" - } - ], - "name": "AdminChanged", - "type": "event" - }, - "0xbc7cd75a20ee27fd9adebab32041f755214dbc6bffa90cc0225b39da2e5c2d3b": { - "anonymous": false, - "inputs": [ - { - "indexed": true, - "internalType": "address", - "name": "implementation", - "type": "address" - } - ], - "name": "Upgraded", - "type": "event" - } - }, - "links": {}, - "address": "0xa2F0a92396cb245BaD15BA77817E1620c58bf05b", - "transactionHash": "0x9f72ac627fd5a3573c43a07273f4c2cb4623fd318adc12e7162980f237cbc970" - } - }, - "schemaVersion": "3.0.23" -} \ No newline at end of file diff --git a/build/chaosnet/RenBTC.json b/build/chaosnet/RenBTC.json deleted file mode 100644 index 02e90aa1..00000000 --- a/build/chaosnet/RenBTC.json +++ /dev/null @@ -1,214 +0,0 @@ -{ - "contractName": "RenBTC", - "abi": [ - { - "anonymous": false, - "inputs": [ - { - "indexed": false, - "internalType": "address", - "name": "previousAdmin", - "type": "address" - }, - { - "indexed": false, - "internalType": "address", - "name": "newAdmin", - "type": "address" - } - ], - "name": "AdminChanged", - "type": "event" - }, - { - "anonymous": false, - "inputs": [ - { - "indexed": true, - "internalType": "address", - "name": "implementation", - "type": "address" - } - ], - "name": "Upgraded", - "type": "event" - }, - { - "payable": true, - "stateMutability": "payable", - "type": "fallback" - }, - { - "constant": false, - "inputs": [], - "name": "admin", - "outputs": [ - { - "internalType": "address", - "name": "", - "type": "address" - } - ], - "payable": false, - "stateMutability": "nonpayable", - "type": "function" - }, - { - "constant": false, - "inputs": [ - { - "internalType": "address", - "name": "newAdmin", - "type": "address" - } - ], - "name": "changeAdmin", - "outputs": [], - "payable": false, - "stateMutability": "nonpayable", - "type": "function" - }, - { - "constant": false, - "inputs": [], - "name": "implementation", - "outputs": [ - { - "internalType": "address", - "name": "", - "type": "address" - } - ], - "payable": false, - "stateMutability": "nonpayable", - "type": "function" - }, - { - "constant": false, - "inputs": [ - { - "internalType": "address", - "name": "_logic", - "type": "address" - }, - { - "internalType": "address", - "name": "_admin", - "type": "address" - }, - { - "internalType": "bytes", - "name": "_data", - "type": "bytes" - } - ], - "name": "initialize", - "outputs": [], - "payable": true, - "stateMutability": "payable", - "type": "function" - }, - { - "constant": false, - "inputs": [ - { - "internalType": "address", - "name": "_logic", - "type": "address" - }, - { - "internalType": "bytes", - "name": "_data", - "type": "bytes" - } - ], - "name": "initialize", - "outputs": [], - "payable": true, - "stateMutability": "payable", - "type": "function" - }, - { - "constant": false, - "inputs": [ - { - "internalType": "address", - "name": "newImplementation", - "type": "address" - } - ], - "name": "upgradeTo", - "outputs": [], - "payable": false, - "stateMutability": "nonpayable", - "type": "function" - }, - { - "constant": false, - "inputs": [ - { - "internalType": "address", - "name": "newImplementation", - "type": "address" - }, - { - "internalType": "bytes", - "name": "data", - "type": "bytes" - } - ], - "name": "upgradeToAndCall", - "outputs": [], - "payable": true, - "stateMutability": "payable", - "type": "function" - } - ], - "sourcePath": "~/github/renproject/ren-sol/contracts/Gateway/RenERC20.sol", - "compiler": { - "name": "solc", - "version": "0.5.16+commit.9c3226ce.Emscripten.clang" - }, - "networks": { - "1": { - "events": { - "0x7e644d79422f17c01e4894b5f4f588d331ebfa28653d42ae832dc59e38c9798f": { - "anonymous": false, - "inputs": [ - { - "indexed": false, - "internalType": "address", - "name": "previousAdmin", - "type": "address" - }, - { - "indexed": false, - "internalType": "address", - "name": "newAdmin", - "type": "address" - } - ], - "name": "AdminChanged", - "type": "event" - }, - "0xbc7cd75a20ee27fd9adebab32041f755214dbc6bffa90cc0225b39da2e5c2d3b": { - "anonymous": false, - "inputs": [ - { - "indexed": true, - "internalType": "address", - "name": "implementation", - "type": "address" - } - ], - "name": "Upgraded", - "type": "event" - } - }, - "links": {}, - "address": "0x93E47eC9B8cD1a669C7267E20ACF1F6a9c5340Ba", - "transactionHash": "0xa8b463bd512b7b8390cf68ad5802e0186bb47231d621b8db6772ed8e93aa7a75" - } - }, - "schemaVersion": "3.0.23" -} \ No newline at end of file diff --git a/build/chaosnet/RenERC20LogicV1.json b/build/chaosnet/RenERC20LogicV1.json deleted file mode 100644 index 8f7be587..00000000 --- a/build/chaosnet/RenERC20LogicV1.json +++ /dev/null @@ -1,938 +0,0 @@ -{ - "contractName": "RenERC20LogicV1", - "abi": [ - { - "anonymous": false, - "inputs": [ - { - "indexed": true, - "internalType": "address", - "name": "owner", - "type": "address" - }, - { - "indexed": true, - "internalType": "address", - "name": "spender", - "type": "address" - }, - { - "indexed": false, - "internalType": "uint256", - "name": "value", - "type": "uint256" - } - ], - "name": "Approval", - "type": "event" - }, - { - "anonymous": false, - "inputs": [ - { - "indexed": true, - "internalType": "uint256", - "name": "_rate", - "type": "uint256" - } - ], - "name": "LogRateChanged", - "type": "event" - }, - { - "anonymous": false, - "inputs": [ - { - "indexed": true, - "internalType": "address", - "name": "previousOwner", - "type": "address" - }, - { - "indexed": true, - "internalType": "address", - "name": "newOwner", - "type": "address" - } - ], - "name": "OwnershipTransferred", - "type": "event" - }, - { - "anonymous": false, - "inputs": [ - { - "indexed": true, - "internalType": "address", - "name": "from", - "type": "address" - }, - { - "indexed": true, - "internalType": "address", - "name": "to", - "type": "address" - }, - { - "indexed": false, - "internalType": "uint256", - "name": "value", - "type": "uint256" - } - ], - "name": "Transfer", - "type": "event" - }, - { - "constant": true, - "inputs": [], - "name": "DOMAIN_SEPARATOR", - "outputs": [ - { - "internalType": "bytes32", - "name": "", - "type": "bytes32" - } - ], - "payable": false, - "stateMutability": "view", - "type": "function" - }, - { - "constant": true, - "inputs": [], - "name": "PERMIT_TYPEHASH", - "outputs": [ - { - "internalType": "bytes32", - "name": "", - "type": "bytes32" - } - ], - "payable": false, - "stateMutability": "view", - "type": "function" - }, - { - "constant": true, - "inputs": [], - "name": "_rateScale", - "outputs": [ - { - "internalType": "uint256", - "name": "", - "type": "uint256" - } - ], - "payable": false, - "stateMutability": "view", - "type": "function" - }, - { - "constant": true, - "inputs": [ - { - "internalType": "address", - "name": "owner", - "type": "address" - }, - { - "internalType": "address", - "name": "spender", - "type": "address" - } - ], - "name": "allowance", - "outputs": [ - { - "internalType": "uint256", - "name": "", - "type": "uint256" - } - ], - "payable": false, - "stateMutability": "view", - "type": "function" - }, - { - "constant": false, - "inputs": [ - { - "internalType": "address", - "name": "spender", - "type": "address" - }, - { - "internalType": "uint256", - "name": "amount", - "type": "uint256" - } - ], - "name": "approve", - "outputs": [ - { - "internalType": "bool", - "name": "", - "type": "bool" - } - ], - "payable": false, - "stateMutability": "nonpayable", - "type": "function" - }, - { - "constant": true, - "inputs": [ - { - "internalType": "address", - "name": "account", - "type": "address" - } - ], - "name": "balanceOf", - "outputs": [ - { - "internalType": "uint256", - "name": "", - "type": "uint256" - } - ], - "payable": false, - "stateMutability": "view", - "type": "function" - }, - { - "constant": true, - "inputs": [ - { - "internalType": "address", - "name": "_account", - "type": "address" - } - ], - "name": "balanceOfUnderlying", - "outputs": [ - { - "internalType": "uint256", - "name": "", - "type": "uint256" - } - ], - "payable": false, - "stateMutability": "view", - "type": "function" - }, - { - "constant": false, - "inputs": [ - { - "internalType": "address", - "name": "_token", - "type": "address" - } - ], - "name": "blacklistRecoverableToken", - "outputs": [], - "payable": false, - "stateMutability": "nonpayable", - "type": "function" - }, - { - "constant": false, - "inputs": [ - { - "internalType": "address", - "name": "_from", - "type": "address" - }, - { - "internalType": "uint256", - "name": "_amount", - "type": "uint256" - } - ], - "name": "burn", - "outputs": [], - "payable": false, - "stateMutability": "nonpayable", - "type": "function" - }, - { - "constant": false, - "inputs": [], - "name": "claimOwnership", - "outputs": [], - "payable": false, - "stateMutability": "nonpayable", - "type": "function" - }, - { - "constant": true, - "inputs": [], - "name": "decimals", - "outputs": [ - { - "internalType": "uint8", - "name": "", - "type": "uint8" - } - ], - "payable": false, - "stateMutability": "view", - "type": "function" - }, - { - "constant": false, - "inputs": [ - { - "internalType": "address", - "name": "spender", - "type": "address" - }, - { - "internalType": "uint256", - "name": "subtractedValue", - "type": "uint256" - } - ], - "name": "decreaseAllowance", - "outputs": [ - { - "internalType": "bool", - "name": "", - "type": "bool" - } - ], - "payable": false, - "stateMutability": "nonpayable", - "type": "function" - }, - { - "constant": true, - "inputs": [], - "name": "exchangeRateCurrent", - "outputs": [ - { - "internalType": "uint256", - "name": "", - "type": "uint256" - } - ], - "payable": false, - "stateMutability": "view", - "type": "function" - }, - { - "constant": true, - "inputs": [ - { - "internalType": "uint256", - "name": "_amountUnderlying", - "type": "uint256" - } - ], - "name": "fromUnderlying", - "outputs": [ - { - "internalType": "uint256", - "name": "", - "type": "uint256" - } - ], - "payable": false, - "stateMutability": "view", - "type": "function" - }, - { - "constant": false, - "inputs": [ - { - "internalType": "address", - "name": "spender", - "type": "address" - }, - { - "internalType": "uint256", - "name": "addedValue", - "type": "uint256" - } - ], - "name": "increaseAllowance", - "outputs": [ - { - "internalType": "bool", - "name": "", - "type": "bool" - } - ], - "payable": false, - "stateMutability": "nonpayable", - "type": "function" - }, - { - "constant": false, - "inputs": [ - { - "internalType": "string", - "name": "name", - "type": "string" - }, - { - "internalType": "string", - "name": "symbol", - "type": "string" - }, - { - "internalType": "uint8", - "name": "decimals", - "type": "uint8" - } - ], - "name": "initialize", - "outputs": [], - "payable": false, - "stateMutability": "nonpayable", - "type": "function" - }, - { - "constant": false, - "inputs": [ - { - "internalType": "uint256", - "name": "_chainId", - "type": "uint256" - }, - { - "internalType": "address", - "name": "_nextOwner", - "type": "address" - }, - { - "internalType": "uint256", - "name": "_initialRate", - "type": "uint256" - }, - { - "internalType": "string", - "name": "_version", - "type": "string" - }, - { - "internalType": "string", - "name": "_name", - "type": "string" - }, - { - "internalType": "string", - "name": "_symbol", - "type": "string" - }, - { - "internalType": "uint8", - "name": "_decimals", - "type": "uint8" - } - ], - "name": "initialize", - "outputs": [], - "payable": false, - "stateMutability": "nonpayable", - "type": "function" - }, - { - "constant": false, - "inputs": [ - { - "internalType": "uint256", - "name": "_chainId", - "type": "uint256" - }, - { - "internalType": "string", - "name": "_version", - "type": "string" - }, - { - "internalType": "string", - "name": "_name", - "type": "string" - }, - { - "internalType": "string", - "name": "_symbol", - "type": "string" - }, - { - "internalType": "uint8", - "name": "_decimals", - "type": "uint8" - } - ], - "name": "initialize", - "outputs": [], - "payable": false, - "stateMutability": "nonpayable", - "type": "function" - }, - { - "constant": false, - "inputs": [ - { - "internalType": "address", - "name": "_nextOwner", - "type": "address" - } - ], - "name": "initialize", - "outputs": [], - "payable": false, - "stateMutability": "nonpayable", - "type": "function" - }, - { - "constant": false, - "inputs": [ - { - "internalType": "address", - "name": "_nextOwner", - "type": "address" - }, - { - "internalType": "uint256", - "name": "_initialRate", - "type": "uint256" - } - ], - "name": "initialize", - "outputs": [], - "payable": false, - "stateMutability": "nonpayable", - "type": "function" - }, - { - "constant": true, - "inputs": [], - "name": "isOwner", - "outputs": [ - { - "internalType": "bool", - "name": "", - "type": "bool" - } - ], - "payable": false, - "stateMutability": "view", - "type": "function" - }, - { - "constant": false, - "inputs": [ - { - "internalType": "address", - "name": "_to", - "type": "address" - }, - { - "internalType": "uint256", - "name": "_amount", - "type": "uint256" - } - ], - "name": "mint", - "outputs": [], - "payable": false, - "stateMutability": "nonpayable", - "type": "function" - }, - { - "constant": true, - "inputs": [], - "name": "name", - "outputs": [ - { - "internalType": "string", - "name": "", - "type": "string" - } - ], - "payable": false, - "stateMutability": "view", - "type": "function" - }, - { - "constant": true, - "inputs": [ - { - "internalType": "address", - "name": "", - "type": "address" - } - ], - "name": "nonces", - "outputs": [ - { - "internalType": "uint256", - "name": "", - "type": "uint256" - } - ], - "payable": false, - "stateMutability": "view", - "type": "function" - }, - { - "constant": true, - "inputs": [], - "name": "owner", - "outputs": [ - { - "internalType": "address", - "name": "", - "type": "address" - } - ], - "payable": false, - "stateMutability": "view", - "type": "function" - }, - { - "constant": true, - "inputs": [], - "name": "pendingOwner", - "outputs": [ - { - "internalType": "address", - "name": "", - "type": "address" - } - ], - "payable": false, - "stateMutability": "view", - "type": "function" - }, - { - "constant": false, - "inputs": [ - { - "internalType": "address", - "name": "holder", - "type": "address" - }, - { - "internalType": "address", - "name": "spender", - "type": "address" - }, - { - "internalType": "uint256", - "name": "nonce", - "type": "uint256" - }, - { - "internalType": "uint256", - "name": "expiry", - "type": "uint256" - }, - { - "internalType": "bool", - "name": "allowed", - "type": "bool" - }, - { - "internalType": "uint8", - "name": "v", - "type": "uint8" - }, - { - "internalType": "bytes32", - "name": "r", - "type": "bytes32" - }, - { - "internalType": "bytes32", - "name": "s", - "type": "bytes32" - } - ], - "name": "permit", - "outputs": [], - "payable": false, - "stateMutability": "nonpayable", - "type": "function" - }, - { - "constant": false, - "inputs": [ - { - "internalType": "address", - "name": "_token", - "type": "address" - } - ], - "name": "recoverTokens", - "outputs": [], - "payable": false, - "stateMutability": "nonpayable", - "type": "function" - }, - { - "constant": false, - "inputs": [], - "name": "renounceOwnership", - "outputs": [], - "payable": false, - "stateMutability": "nonpayable", - "type": "function" - }, - { - "constant": false, - "inputs": [ - { - "internalType": "uint256", - "name": "_nextRate", - "type": "uint256" - } - ], - "name": "setExchangeRate", - "outputs": [], - "payable": false, - "stateMutability": "nonpayable", - "type": "function" - }, - { - "constant": true, - "inputs": [], - "name": "symbol", - "outputs": [ - { - "internalType": "string", - "name": "", - "type": "string" - } - ], - "payable": false, - "stateMutability": "view", - "type": "function" - }, - { - "constant": true, - "inputs": [ - { - "internalType": "uint256", - "name": "_amount", - "type": "uint256" - } - ], - "name": "toUnderlying", - "outputs": [ - { - "internalType": "uint256", - "name": "", - "type": "uint256" - } - ], - "payable": false, - "stateMutability": "view", - "type": "function" - }, - { - "constant": true, - "inputs": [], - "name": "totalSupply", - "outputs": [ - { - "internalType": "uint256", - "name": "", - "type": "uint256" - } - ], - "payable": false, - "stateMutability": "view", - "type": "function" - }, - { - "constant": false, - "inputs": [ - { - "internalType": "address", - "name": "recipient", - "type": "address" - }, - { - "internalType": "uint256", - "name": "amount", - "type": "uint256" - } - ], - "name": "transfer", - "outputs": [ - { - "internalType": "bool", - "name": "", - "type": "bool" - } - ], - "payable": false, - "stateMutability": "nonpayable", - "type": "function" - }, - { - "constant": false, - "inputs": [ - { - "internalType": "address", - "name": "sender", - "type": "address" - }, - { - "internalType": "address", - "name": "recipient", - "type": "address" - }, - { - "internalType": "uint256", - "name": "amount", - "type": "uint256" - } - ], - "name": "transferFrom", - "outputs": [ - { - "internalType": "bool", - "name": "", - "type": "bool" - } - ], - "payable": false, - "stateMutability": "nonpayable", - "type": "function" - }, - { - "constant": false, - "inputs": [ - { - "internalType": "address", - "name": "newOwner", - "type": "address" - } - ], - "name": "transferOwnership", - "outputs": [], - "payable": false, - "stateMutability": "nonpayable", - "type": "function" - }, - { - "constant": true, - "inputs": [], - "name": "version", - "outputs": [ - { - "internalType": "string", - "name": "", - "type": "string" - } - ], - "payable": false, - "stateMutability": "view", - "type": "function" - } - ], - "sourcePath": "~/github/renproject/ren-sol/contracts/Gateway/RenERC20.sol", - "compiler": { - "name": "solc", - "version": "0.5.16+commit.9c3226ce.Emscripten.clang" - }, - "networks": { - "1": { - "events": { - "0x8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925": { - "anonymous": false, - "inputs": [ - { - "indexed": true, - "internalType": "address", - "name": "owner", - "type": "address" - }, - { - "indexed": true, - "internalType": "address", - "name": "spender", - "type": "address" - }, - { - "indexed": false, - "internalType": "uint256", - "name": "value", - "type": "uint256" - } - ], - "name": "Approval", - "type": "event" - }, - "0x9d6ef0d454e23e234e8c1cf70cee49a44226ffb036017442229a7a5bd1d0957e": { - "anonymous": false, - "inputs": [ - { - "indexed": true, - "internalType": "uint256", - "name": "_rate", - "type": "uint256" - } - ], - "name": "LogRateChanged", - "type": "event" - }, - "0x8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0": { - "anonymous": false, - "inputs": [ - { - "indexed": true, - "internalType": "address", - "name": "previousOwner", - "type": "address" - }, - { - "indexed": true, - "internalType": "address", - "name": "newOwner", - "type": "address" - } - ], - "name": "OwnershipTransferred", - "type": "event" - }, - "0xddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef": { - "anonymous": false, - "inputs": [ - { - "indexed": true, - "internalType": "address", - "name": "from", - "type": "address" - }, - { - "indexed": true, - "internalType": "address", - "name": "to", - "type": "address" - }, - { - "indexed": false, - "internalType": "uint256", - "name": "value", - "type": "uint256" - } - ], - "name": "Transfer", - "type": "event" - } - }, - "links": {}, - "address": "0x0A2d368E4EeCBd515033BA29253909F2978C1Bee", - "transactionHash": "0xffaa91e45cdaeebc921e65b8baf38804bac6170d7e32b202c03b11621b4dd36a" - } - }, - "schemaVersion": "3.0.23" -} \ No newline at end of file diff --git a/build/chaosnet/RenProxyAdmin.json b/build/chaosnet/RenProxyAdmin.json deleted file mode 100644 index 797969d4..00000000 --- a/build/chaosnet/RenProxyAdmin.json +++ /dev/null @@ -1,218 +0,0 @@ -{ - "contractName": "RenProxyAdmin", - "abi": [ - { - "anonymous": false, - "inputs": [ - { - "indexed": true, - "internalType": "address", - "name": "previousOwner", - "type": "address" - }, - { - "indexed": true, - "internalType": "address", - "name": "newOwner", - "type": "address" - } - ], - "name": "OwnershipTransferred", - "type": "event" - }, - { - "constant": false, - "inputs": [ - { - "internalType": "contract AdminUpgradeabilityProxy", - "name": "proxy", - "type": "address" - }, - { - "internalType": "address", - "name": "newAdmin", - "type": "address" - } - ], - "name": "changeProxyAdmin", - "outputs": [], - "payable": false, - "stateMutability": "nonpayable", - "type": "function" - }, - { - "constant": true, - "inputs": [ - { - "internalType": "contract AdminUpgradeabilityProxy", - "name": "proxy", - "type": "address" - } - ], - "name": "getProxyAdmin", - "outputs": [ - { - "internalType": "address", - "name": "", - "type": "address" - } - ], - "payable": false, - "stateMutability": "view", - "type": "function" - }, - { - "constant": true, - "inputs": [ - { - "internalType": "contract AdminUpgradeabilityProxy", - "name": "proxy", - "type": "address" - } - ], - "name": "getProxyImplementation", - "outputs": [ - { - "internalType": "address", - "name": "", - "type": "address" - } - ], - "payable": false, - "stateMutability": "view", - "type": "function" - }, - { - "constant": true, - "inputs": [], - "name": "isOwner", - "outputs": [ - { - "internalType": "bool", - "name": "", - "type": "bool" - } - ], - "payable": false, - "stateMutability": "view", - "type": "function" - }, - { - "constant": true, - "inputs": [], - "name": "owner", - "outputs": [ - { - "internalType": "address", - "name": "", - "type": "address" - } - ], - "payable": false, - "stateMutability": "view", - "type": "function" - }, - { - "constant": false, - "inputs": [], - "name": "renounceOwnership", - "outputs": [], - "payable": false, - "stateMutability": "nonpayable", - "type": "function" - }, - { - "constant": false, - "inputs": [ - { - "internalType": "address", - "name": "newOwner", - "type": "address" - } - ], - "name": "transferOwnership", - "outputs": [], - "payable": false, - "stateMutability": "nonpayable", - "type": "function" - }, - { - "constant": false, - "inputs": [ - { - "internalType": "contract AdminUpgradeabilityProxy", - "name": "proxy", - "type": "address" - }, - { - "internalType": "address", - "name": "implementation", - "type": "address" - } - ], - "name": "upgrade", - "outputs": [], - "payable": false, - "stateMutability": "nonpayable", - "type": "function" - }, - { - "constant": false, - "inputs": [ - { - "internalType": "contract AdminUpgradeabilityProxy", - "name": "proxy", - "type": "address" - }, - { - "internalType": "address", - "name": "implementation", - "type": "address" - }, - { - "internalType": "bytes", - "name": "data", - "type": "bytes" - } - ], - "name": "upgradeAndCall", - "outputs": [], - "payable": true, - "stateMutability": "payable", - "type": "function" - } - ], - "sourcePath": "~/github/renproject/ren-sol/contracts/Governance/RenProxyAdmin.sol", - "compiler": { - "name": "solc", - "version": "0.5.16+commit.9c3226ce.Emscripten.clang" - }, - "networks": { - "1": { - "events": { - "0x8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0": { - "anonymous": false, - "inputs": [ - { - "indexed": true, - "internalType": "address", - "name": "previousOwner", - "type": "address" - }, - { - "indexed": true, - "internalType": "address", - "name": "newOwner", - "type": "address" - } - ], - "name": "OwnershipTransferred", - "type": "event" - } - }, - "links": {}, - "address": "0x3840c01167cf06C3101762f0Fce991BEfA1CdFAF" - } - }, - "schemaVersion": "3.0.23" -} \ No newline at end of file diff --git a/build/chaosnet/RenToken.json b/build/chaosnet/RenToken.json deleted file mode 100644 index 0a63075d..00000000 --- a/build/chaosnet/RenToken.json +++ /dev/null @@ -1,758 +0,0 @@ -{ - "contractName": "RenToken", - "abi": [ - { - "inputs": [], - "payable": false, - "stateMutability": "nonpayable", - "type": "constructor" - }, - { - "anonymous": false, - "inputs": [ - { - "indexed": true, - "internalType": "address", - "name": "owner", - "type": "address" - }, - { - "indexed": true, - "internalType": "address", - "name": "spender", - "type": "address" - }, - { - "indexed": false, - "internalType": "uint256", - "name": "value", - "type": "uint256" - } - ], - "name": "Approval", - "type": "event" - }, - { - "anonymous": false, - "inputs": [ - { - "indexed": true, - "internalType": "address", - "name": "previousOwner", - "type": "address" - }, - { - "indexed": true, - "internalType": "address", - "name": "newOwner", - "type": "address" - } - ], - "name": "OwnershipTransferred", - "type": "event" - }, - { - "anonymous": false, - "inputs": [ - { - "indexed": false, - "internalType": "address", - "name": "account", - "type": "address" - } - ], - "name": "Paused", - "type": "event" - }, - { - "anonymous": false, - "inputs": [ - { - "indexed": true, - "internalType": "address", - "name": "account", - "type": "address" - } - ], - "name": "PauserAdded", - "type": "event" - }, - { - "anonymous": false, - "inputs": [ - { - "indexed": true, - "internalType": "address", - "name": "account", - "type": "address" - } - ], - "name": "PauserRemoved", - "type": "event" - }, - { - "anonymous": false, - "inputs": [ - { - "indexed": true, - "internalType": "address", - "name": "from", - "type": "address" - }, - { - "indexed": true, - "internalType": "address", - "name": "to", - "type": "address" - }, - { - "indexed": false, - "internalType": "uint256", - "name": "value", - "type": "uint256" - } - ], - "name": "Transfer", - "type": "event" - }, - { - "anonymous": false, - "inputs": [ - { - "indexed": false, - "internalType": "address", - "name": "account", - "type": "address" - } - ], - "name": "Unpaused", - "type": "event" - }, - { - "constant": true, - "inputs": [], - "name": "INITIAL_SUPPLY", - "outputs": [ - { - "internalType": "uint256", - "name": "", - "type": "uint256" - } - ], - "payable": false, - "stateMutability": "view", - "type": "function" - }, - { - "constant": false, - "inputs": [ - { - "internalType": "address", - "name": "account", - "type": "address" - } - ], - "name": "addPauser", - "outputs": [], - "payable": false, - "stateMutability": "nonpayable", - "type": "function" - }, - { - "constant": true, - "inputs": [ - { - "internalType": "address", - "name": "owner", - "type": "address" - }, - { - "internalType": "address", - "name": "spender", - "type": "address" - } - ], - "name": "allowance", - "outputs": [ - { - "internalType": "uint256", - "name": "", - "type": "uint256" - } - ], - "payable": false, - "stateMutability": "view", - "type": "function" - }, - { - "constant": false, - "inputs": [ - { - "internalType": "address", - "name": "spender", - "type": "address" - }, - { - "internalType": "uint256", - "name": "value", - "type": "uint256" - } - ], - "name": "approve", - "outputs": [ - { - "internalType": "bool", - "name": "", - "type": "bool" - } - ], - "payable": false, - "stateMutability": "nonpayable", - "type": "function" - }, - { - "constant": true, - "inputs": [ - { - "internalType": "address", - "name": "account", - "type": "address" - } - ], - "name": "balanceOf", - "outputs": [ - { - "internalType": "uint256", - "name": "", - "type": "uint256" - } - ], - "payable": false, - "stateMutability": "view", - "type": "function" - }, - { - "constant": false, - "inputs": [ - { - "internalType": "uint256", - "name": "amount", - "type": "uint256" - } - ], - "name": "burn", - "outputs": [], - "payable": false, - "stateMutability": "nonpayable", - "type": "function" - }, - { - "constant": false, - "inputs": [ - { - "internalType": "address", - "name": "account", - "type": "address" - }, - { - "internalType": "uint256", - "name": "amount", - "type": "uint256" - } - ], - "name": "burnFrom", - "outputs": [], - "payable": false, - "stateMutability": "nonpayable", - "type": "function" - }, - { - "constant": true, - "inputs": [], - "name": "decimals", - "outputs": [ - { - "internalType": "uint8", - "name": "", - "type": "uint8" - } - ], - "payable": false, - "stateMutability": "view", - "type": "function" - }, - { - "constant": false, - "inputs": [ - { - "internalType": "address", - "name": "spender", - "type": "address" - }, - { - "internalType": "uint256", - "name": "subtractedValue", - "type": "uint256" - } - ], - "name": "decreaseAllowance", - "outputs": [ - { - "internalType": "bool", - "name": "", - "type": "bool" - } - ], - "payable": false, - "stateMutability": "nonpayable", - "type": "function" - }, - { - "constant": false, - "inputs": [ - { - "internalType": "address", - "name": "spender", - "type": "address" - }, - { - "internalType": "uint256", - "name": "addedValue", - "type": "uint256" - } - ], - "name": "increaseAllowance", - "outputs": [ - { - "internalType": "bool", - "name": "", - "type": "bool" - } - ], - "payable": false, - "stateMutability": "nonpayable", - "type": "function" - }, - { - "constant": false, - "inputs": [ - { - "internalType": "string", - "name": "name", - "type": "string" - }, - { - "internalType": "string", - "name": "symbol", - "type": "string" - }, - { - "internalType": "uint8", - "name": "decimals", - "type": "uint8" - } - ], - "name": "initialize", - "outputs": [], - "payable": false, - "stateMutability": "nonpayable", - "type": "function" - }, - { - "constant": false, - "inputs": [ - { - "internalType": "address", - "name": "sender", - "type": "address" - } - ], - "name": "initialize", - "outputs": [], - "payable": false, - "stateMutability": "nonpayable", - "type": "function" - }, - { - "constant": true, - "inputs": [], - "name": "isOwner", - "outputs": [ - { - "internalType": "bool", - "name": "", - "type": "bool" - } - ], - "payable": false, - "stateMutability": "view", - "type": "function" - }, - { - "constant": true, - "inputs": [ - { - "internalType": "address", - "name": "account", - "type": "address" - } - ], - "name": "isPauser", - "outputs": [ - { - "internalType": "bool", - "name": "", - "type": "bool" - } - ], - "payable": false, - "stateMutability": "view", - "type": "function" - }, - { - "constant": true, - "inputs": [], - "name": "name", - "outputs": [ - { - "internalType": "string", - "name": "", - "type": "string" - } - ], - "payable": false, - "stateMutability": "view", - "type": "function" - }, - { - "constant": true, - "inputs": [], - "name": "owner", - "outputs": [ - { - "internalType": "address", - "name": "", - "type": "address" - } - ], - "payable": false, - "stateMutability": "view", - "type": "function" - }, - { - "constant": false, - "inputs": [], - "name": "pause", - "outputs": [], - "payable": false, - "stateMutability": "nonpayable", - "type": "function" - }, - { - "constant": true, - "inputs": [], - "name": "paused", - "outputs": [ - { - "internalType": "bool", - "name": "", - "type": "bool" - } - ], - "payable": false, - "stateMutability": "view", - "type": "function" - }, - { - "constant": false, - "inputs": [], - "name": "renounceOwnership", - "outputs": [], - "payable": false, - "stateMutability": "nonpayable", - "type": "function" - }, - { - "constant": false, - "inputs": [], - "name": "renouncePauser", - "outputs": [], - "payable": false, - "stateMutability": "nonpayable", - "type": "function" - }, - { - "constant": true, - "inputs": [], - "name": "symbol", - "outputs": [ - { - "internalType": "string", - "name": "", - "type": "string" - } - ], - "payable": false, - "stateMutability": "view", - "type": "function" - }, - { - "constant": true, - "inputs": [], - "name": "totalSupply", - "outputs": [ - { - "internalType": "uint256", - "name": "", - "type": "uint256" - } - ], - "payable": false, - "stateMutability": "view", - "type": "function" - }, - { - "constant": false, - "inputs": [ - { - "internalType": "address", - "name": "to", - "type": "address" - }, - { - "internalType": "uint256", - "name": "value", - "type": "uint256" - } - ], - "name": "transfer", - "outputs": [ - { - "internalType": "bool", - "name": "", - "type": "bool" - } - ], - "payable": false, - "stateMutability": "nonpayable", - "type": "function" - }, - { - "constant": false, - "inputs": [ - { - "internalType": "address", - "name": "from", - "type": "address" - }, - { - "internalType": "address", - "name": "to", - "type": "address" - }, - { - "internalType": "uint256", - "name": "value", - "type": "uint256" - } - ], - "name": "transferFrom", - "outputs": [ - { - "internalType": "bool", - "name": "", - "type": "bool" - } - ], - "payable": false, - "stateMutability": "nonpayable", - "type": "function" - }, - { - "constant": false, - "inputs": [ - { - "internalType": "address", - "name": "newOwner", - "type": "address" - } - ], - "name": "transferOwnership", - "outputs": [], - "payable": false, - "stateMutability": "nonpayable", - "type": "function" - }, - { - "constant": false, - "inputs": [ - { - "internalType": "address", - "name": "beneficiary", - "type": "address" - }, - { - "internalType": "uint256", - "name": "amount", - "type": "uint256" - } - ], - "name": "transferTokens", - "outputs": [ - { - "internalType": "bool", - "name": "", - "type": "bool" - } - ], - "payable": false, - "stateMutability": "nonpayable", - "type": "function" - }, - { - "constant": false, - "inputs": [], - "name": "unpause", - "outputs": [], - "payable": false, - "stateMutability": "nonpayable", - "type": "function" - } - ], - "sourcePath": "~/github/renproject/ren-sol/contracts/RenToken/RenToken.sol", - "compiler": { - "name": "solc", - "version": "0.5.16+commit.9c3226ce.Emscripten.clang" - }, - "networks": { - "1": { - "events": { - "0x8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925": { - "anonymous": false, - "inputs": [ - { - "indexed": true, - "internalType": "address", - "name": "owner", - "type": "address" - }, - { - "indexed": true, - "internalType": "address", - "name": "spender", - "type": "address" - }, - { - "indexed": false, - "internalType": "uint256", - "name": "value", - "type": "uint256" - } - ], - "name": "Approval", - "type": "event" - }, - "0x8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0": { - "anonymous": false, - "inputs": [ - { - "indexed": true, - "internalType": "address", - "name": "previousOwner", - "type": "address" - }, - { - "indexed": true, - "internalType": "address", - "name": "newOwner", - "type": "address" - } - ], - "name": "OwnershipTransferred", - "type": "event" - }, - "0x62e78cea01bee320cd4e420270b5ea74000d11b0c9f74754ebdbfc544b05a258": { - "anonymous": false, - "inputs": [ - { - "indexed": false, - "internalType": "address", - "name": "account", - "type": "address" - } - ], - "name": "Paused", - "type": "event" - }, - "0x6719d08c1888103bea251a4ed56406bd0c3e69723c8a1686e017e7bbe159b6f8": { - "anonymous": false, - "inputs": [ - { - "indexed": true, - "internalType": "address", - "name": "account", - "type": "address" - } - ], - "name": "PauserAdded", - "type": "event" - }, - "0xcd265ebaf09df2871cc7bd4133404a235ba12eff2041bb89d9c714a2621c7c7e": { - "anonymous": false, - "inputs": [ - { - "indexed": true, - "internalType": "address", - "name": "account", - "type": "address" - } - ], - "name": "PauserRemoved", - "type": "event" - }, - "0xddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef": { - "anonymous": false, - "inputs": [ - { - "indexed": true, - "internalType": "address", - "name": "from", - "type": "address" - }, - { - "indexed": true, - "internalType": "address", - "name": "to", - "type": "address" - }, - { - "indexed": false, - "internalType": "uint256", - "name": "value", - "type": "uint256" - } - ], - "name": "Transfer", - "type": "event" - }, - "0x5db9ee0a495bf2e6ff9c91a7834c1ba4fdd244a5e8aa4e537bd38aeae4b073aa": { - "anonymous": false, - "inputs": [ - { - "indexed": false, - "internalType": "address", - "name": "account", - "type": "address" - } - ], - "name": "Unpaused", - "type": "event" - } - }, - "links": {}, - "address": "0x8E0679d0d4691Ea345fB8C2aEc9bf9c1d3eb40eD", - "transactionHash": "0xedde80f97a54db2ee57dbb80a5a89381fd4174d5c7454b4c4c284ddc726104b8" - } - }, - "schemaVersion": "3.0.23" -} \ No newline at end of file diff --git a/build/chaosnet/RenZEC.json b/build/chaosnet/RenZEC.json deleted file mode 100644 index aee68941..00000000 --- a/build/chaosnet/RenZEC.json +++ /dev/null @@ -1,214 +0,0 @@ -{ - "contractName": "RenZEC", - "abi": [ - { - "anonymous": false, - "inputs": [ - { - "indexed": false, - "internalType": "address", - "name": "previousAdmin", - "type": "address" - }, - { - "indexed": false, - "internalType": "address", - "name": "newAdmin", - "type": "address" - } - ], - "name": "AdminChanged", - "type": "event" - }, - { - "anonymous": false, - "inputs": [ - { - "indexed": true, - "internalType": "address", - "name": "implementation", - "type": "address" - } - ], - "name": "Upgraded", - "type": "event" - }, - { - "payable": true, - "stateMutability": "payable", - "type": "fallback" - }, - { - "constant": false, - "inputs": [], - "name": "admin", - "outputs": [ - { - "internalType": "address", - "name": "", - "type": "address" - } - ], - "payable": false, - "stateMutability": "nonpayable", - "type": "function" - }, - { - "constant": false, - "inputs": [ - { - "internalType": "address", - "name": "newAdmin", - "type": "address" - } - ], - "name": "changeAdmin", - "outputs": [], - "payable": false, - "stateMutability": "nonpayable", - "type": "function" - }, - { - "constant": false, - "inputs": [], - "name": "implementation", - "outputs": [ - { - "internalType": "address", - "name": "", - "type": "address" - } - ], - "payable": false, - "stateMutability": "nonpayable", - "type": "function" - }, - { - "constant": false, - "inputs": [ - { - "internalType": "address", - "name": "_logic", - "type": "address" - }, - { - "internalType": "address", - "name": "_admin", - "type": "address" - }, - { - "internalType": "bytes", - "name": "_data", - "type": "bytes" - } - ], - "name": "initialize", - "outputs": [], - "payable": true, - "stateMutability": "payable", - "type": "function" - }, - { - "constant": false, - "inputs": [ - { - "internalType": "address", - "name": "_logic", - "type": "address" - }, - { - "internalType": "bytes", - "name": "_data", - "type": "bytes" - } - ], - "name": "initialize", - "outputs": [], - "payable": true, - "stateMutability": "payable", - "type": "function" - }, - { - "constant": false, - "inputs": [ - { - "internalType": "address", - "name": "newImplementation", - "type": "address" - } - ], - "name": "upgradeTo", - "outputs": [], - "payable": false, - "stateMutability": "nonpayable", - "type": "function" - }, - { - "constant": false, - "inputs": [ - { - "internalType": "address", - "name": "newImplementation", - "type": "address" - }, - { - "internalType": "bytes", - "name": "data", - "type": "bytes" - } - ], - "name": "upgradeToAndCall", - "outputs": [], - "payable": true, - "stateMutability": "payable", - "type": "function" - } - ], - "sourcePath": "~/github/renproject/ren-sol/contracts/Gateway/RenERC20.sol", - "compiler": { - "name": "solc", - "version": "0.5.16+commit.9c3226ce.Emscripten.clang" - }, - "networks": { - "1": { - "events": { - "0x7e644d79422f17c01e4894b5f4f588d331ebfa28653d42ae832dc59e38c9798f": { - "anonymous": false, - "inputs": [ - { - "indexed": false, - "internalType": "address", - "name": "previousAdmin", - "type": "address" - }, - { - "indexed": false, - "internalType": "address", - "name": "newAdmin", - "type": "address" - } - ], - "name": "AdminChanged", - "type": "event" - }, - "0xbc7cd75a20ee27fd9adebab32041f755214dbc6bffa90cc0225b39da2e5c2d3b": { - "anonymous": false, - "inputs": [ - { - "indexed": true, - "internalType": "address", - "name": "implementation", - "type": "address" - } - ], - "name": "Upgraded", - "type": "event" - } - }, - "links": {}, - "address": "0x82E728594b87318e513931469A30713FEF966c8E", - "transactionHash": "0x6eedbc1b00341d366c670de5faccbb96b0fe7e1df8b6e2b02c0bb7d0cc0ca7f5" - } - }, - "schemaVersion": "3.0.23" -} \ No newline at end of file diff --git a/build/chaosnet/ZECGateway.json b/build/chaosnet/ZECGateway.json deleted file mode 100644 index 880798fb..00000000 --- a/build/chaosnet/ZECGateway.json +++ /dev/null @@ -1,214 +0,0 @@ -{ - "contractName": "ZECGateway", - "abi": [ - { - "anonymous": false, - "inputs": [ - { - "indexed": false, - "internalType": "address", - "name": "previousAdmin", - "type": "address" - }, - { - "indexed": false, - "internalType": "address", - "name": "newAdmin", - "type": "address" - } - ], - "name": "AdminChanged", - "type": "event" - }, - { - "anonymous": false, - "inputs": [ - { - "indexed": true, - "internalType": "address", - "name": "implementation", - "type": "address" - } - ], - "name": "Upgraded", - "type": "event" - }, - { - "payable": true, - "stateMutability": "payable", - "type": "fallback" - }, - { - "constant": false, - "inputs": [], - "name": "admin", - "outputs": [ - { - "internalType": "address", - "name": "", - "type": "address" - } - ], - "payable": false, - "stateMutability": "nonpayable", - "type": "function" - }, - { - "constant": false, - "inputs": [ - { - "internalType": "address", - "name": "newAdmin", - "type": "address" - } - ], - "name": "changeAdmin", - "outputs": [], - "payable": false, - "stateMutability": "nonpayable", - "type": "function" - }, - { - "constant": false, - "inputs": [], - "name": "implementation", - "outputs": [ - { - "internalType": "address", - "name": "", - "type": "address" - } - ], - "payable": false, - "stateMutability": "nonpayable", - "type": "function" - }, - { - "constant": false, - "inputs": [ - { - "internalType": "address", - "name": "_logic", - "type": "address" - }, - { - "internalType": "address", - "name": "_admin", - "type": "address" - }, - { - "internalType": "bytes", - "name": "_data", - "type": "bytes" - } - ], - "name": "initialize", - "outputs": [], - "payable": true, - "stateMutability": "payable", - "type": "function" - }, - { - "constant": false, - "inputs": [ - { - "internalType": "address", - "name": "_logic", - "type": "address" - }, - { - "internalType": "bytes", - "name": "_data", - "type": "bytes" - } - ], - "name": "initialize", - "outputs": [], - "payable": true, - "stateMutability": "payable", - "type": "function" - }, - { - "constant": false, - "inputs": [ - { - "internalType": "address", - "name": "newImplementation", - "type": "address" - } - ], - "name": "upgradeTo", - "outputs": [], - "payable": false, - "stateMutability": "nonpayable", - "type": "function" - }, - { - "constant": false, - "inputs": [ - { - "internalType": "address", - "name": "newImplementation", - "type": "address" - }, - { - "internalType": "bytes", - "name": "data", - "type": "bytes" - } - ], - "name": "upgradeToAndCall", - "outputs": [], - "payable": true, - "stateMutability": "payable", - "type": "function" - } - ], - "sourcePath": "~/github/renproject/ren-sol/contracts/Gateway/Gateway.sol", - "compiler": { - "name": "solc", - "version": "0.5.16+commit.9c3226ce.Emscripten.clang" - }, - "networks": { - "1": { - "events": { - "0x7e644d79422f17c01e4894b5f4f588d331ebfa28653d42ae832dc59e38c9798f": { - "anonymous": false, - "inputs": [ - { - "indexed": false, - "internalType": "address", - "name": "previousAdmin", - "type": "address" - }, - { - "indexed": false, - "internalType": "address", - "name": "newAdmin", - "type": "address" - } - ], - "name": "AdminChanged", - "type": "event" - }, - "0xbc7cd75a20ee27fd9adebab32041f755214dbc6bffa90cc0225b39da2e5c2d3b": { - "anonymous": false, - "inputs": [ - { - "indexed": true, - "internalType": "address", - "name": "implementation", - "type": "address" - } - ], - "name": "Upgraded", - "type": "event" - } - }, - "links": {}, - "address": "0x37A4860728E292E5852B215c46DBE7a18862EF93", - "transactionHash": "0x31be305caf18f8a47665dcdc01030353d4b54315ee0df0a1643b3b2b9afe89d1" - } - }, - "schemaVersion": "3.0.23" -} \ No newline at end of file diff --git a/build/clean.js b/build/clean.js deleted file mode 100644 index c85a9ec9..00000000 --- a/build/clean.js +++ /dev/null @@ -1,55 +0,0 @@ -/** - * Only keeps "contractName", "abi", "sourcePath", "compiler", "networks", - * "schemaVersion" and "updatedAt". - */ - -const glob = require("glob"); -const fs = require("fs"); - -const networks = ["testnet", "devnet", "localnet", "chaosnet", "mainnet", "main"]; - -const path = require('path'); -const dirname = path.dirname(__filename); - -const cmp = (x, y) => x === y ? 0 : x > y ? 1 : -1; -const sortAbi = (l, r) => cmp(l.type, r.type) === 0 ? cmp(l.name, r.name) : cmp(l.type, r.type); - -for (const network of networks) { - const directory = path.join(dirname, `./${network}/*.json`); - glob(directory, function (err, files) { // read the folder or folders if you want: example json/**/*.json - if (err) { - console.error(`error while reading the files in ${directory}`, err); - } - files.forEach(function (file) { - fs.readFile(file, 'utf8', function (err, data) { // Read each file - if (err) { - console.error(`error while reading the contents of ${file}`, err); - } - try { - var obj = JSON.parse(data); - const newObj = { - contractName: obj.contractName, - abi: obj.abi.sort(sortAbi), - sourcePath: obj.sourcePath.replace(/.*\/ren-sol\//g, "~/github/renproject/ren-sol/"), - compiler: obj.compiler, - networks: obj.networks, - schemaVersion: obj.schemaVersion, - - // Included for Etherscan verification - // bytecode: obj.bytecode, - } - const newData = JSON.stringify(newObj, null, " "); - - if (data !== newData) { - fs.writeFile(file, JSON.stringify(newObj, null, " "), function (err) { - if (err) return console.error(err); - console.info(` Updated \x1b[33m${file}\x1b[0m.`); - }); - } - } catch (error) { - console.error(`Error processing ${file}`, error); - } - }); - }); - }); -} diff --git a/build/devnet/BCHGateway.json b/build/devnet/BCHGateway.json deleted file mode 100644 index 98ff7110..00000000 --- a/build/devnet/BCHGateway.json +++ /dev/null @@ -1,214 +0,0 @@ -{ - "contractName": "BCHGateway", - "abi": [ - { - "anonymous": false, - "inputs": [ - { - "indexed": false, - "internalType": "address", - "name": "previousAdmin", - "type": "address" - }, - { - "indexed": false, - "internalType": "address", - "name": "newAdmin", - "type": "address" - } - ], - "name": "AdminChanged", - "type": "event" - }, - { - "anonymous": false, - "inputs": [ - { - "indexed": true, - "internalType": "address", - "name": "implementation", - "type": "address" - } - ], - "name": "Upgraded", - "type": "event" - }, - { - "payable": true, - "stateMutability": "payable", - "type": "fallback" - }, - { - "constant": false, - "inputs": [], - "name": "admin", - "outputs": [ - { - "internalType": "address", - "name": "", - "type": "address" - } - ], - "payable": false, - "stateMutability": "nonpayable", - "type": "function" - }, - { - "constant": false, - "inputs": [ - { - "internalType": "address", - "name": "newAdmin", - "type": "address" - } - ], - "name": "changeAdmin", - "outputs": [], - "payable": false, - "stateMutability": "nonpayable", - "type": "function" - }, - { - "constant": false, - "inputs": [], - "name": "implementation", - "outputs": [ - { - "internalType": "address", - "name": "", - "type": "address" - } - ], - "payable": false, - "stateMutability": "nonpayable", - "type": "function" - }, - { - "constant": false, - "inputs": [ - { - "internalType": "address", - "name": "_logic", - "type": "address" - }, - { - "internalType": "address", - "name": "_admin", - "type": "address" - }, - { - "internalType": "bytes", - "name": "_data", - "type": "bytes" - } - ], - "name": "initialize", - "outputs": [], - "payable": true, - "stateMutability": "payable", - "type": "function" - }, - { - "constant": false, - "inputs": [ - { - "internalType": "address", - "name": "_logic", - "type": "address" - }, - { - "internalType": "bytes", - "name": "_data", - "type": "bytes" - } - ], - "name": "initialize", - "outputs": [], - "payable": true, - "stateMutability": "payable", - "type": "function" - }, - { - "constant": false, - "inputs": [ - { - "internalType": "address", - "name": "newImplementation", - "type": "address" - } - ], - "name": "upgradeTo", - "outputs": [], - "payable": false, - "stateMutability": "nonpayable", - "type": "function" - }, - { - "constant": false, - "inputs": [ - { - "internalType": "address", - "name": "newImplementation", - "type": "address" - }, - { - "internalType": "bytes", - "name": "data", - "type": "bytes" - } - ], - "name": "upgradeToAndCall", - "outputs": [], - "payable": true, - "stateMutability": "payable", - "type": "function" - } - ], - "sourcePath": "~/github/renproject/ren-sol/contracts/Gateway/Gateway.sol", - "compiler": { - "name": "solc", - "version": "0.5.16+commit.9c3226ce.Emscripten.clang" - }, - "networks": { - "42": { - "events": { - "0x7e644d79422f17c01e4894b5f4f588d331ebfa28653d42ae832dc59e38c9798f": { - "anonymous": false, - "inputs": [ - { - "indexed": false, - "internalType": "address", - "name": "previousAdmin", - "type": "address" - }, - { - "indexed": false, - "internalType": "address", - "name": "newAdmin", - "type": "address" - } - ], - "name": "AdminChanged", - "type": "event" - }, - "0xbc7cd75a20ee27fd9adebab32041f755214dbc6bffa90cc0225b39da2e5c2d3b": { - "anonymous": false, - "inputs": [ - { - "indexed": true, - "internalType": "address", - "name": "implementation", - "type": "address" - } - ], - "name": "Upgraded", - "type": "event" - } - }, - "links": {}, - "address": "0x86efB11aF3f2c3E3df525a851e3F28E03F4Dcb17", - "transactionHash": "0x0adcbfb9a79dd7c18dd168e9fe519671b48019889413b687d1e7d08c8da12088" - } - }, - "schemaVersion": "3.0.23" -} \ No newline at end of file diff --git a/build/devnet/BTCGateway.json b/build/devnet/BTCGateway.json deleted file mode 100644 index db540666..00000000 --- a/build/devnet/BTCGateway.json +++ /dev/null @@ -1,214 +0,0 @@ -{ - "contractName": "BTCGateway", - "abi": [ - { - "anonymous": false, - "inputs": [ - { - "indexed": false, - "internalType": "address", - "name": "previousAdmin", - "type": "address" - }, - { - "indexed": false, - "internalType": "address", - "name": "newAdmin", - "type": "address" - } - ], - "name": "AdminChanged", - "type": "event" - }, - { - "anonymous": false, - "inputs": [ - { - "indexed": true, - "internalType": "address", - "name": "implementation", - "type": "address" - } - ], - "name": "Upgraded", - "type": "event" - }, - { - "payable": true, - "stateMutability": "payable", - "type": "fallback" - }, - { - "constant": false, - "inputs": [], - "name": "admin", - "outputs": [ - { - "internalType": "address", - "name": "", - "type": "address" - } - ], - "payable": false, - "stateMutability": "nonpayable", - "type": "function" - }, - { - "constant": false, - "inputs": [ - { - "internalType": "address", - "name": "newAdmin", - "type": "address" - } - ], - "name": "changeAdmin", - "outputs": [], - "payable": false, - "stateMutability": "nonpayable", - "type": "function" - }, - { - "constant": false, - "inputs": [], - "name": "implementation", - "outputs": [ - { - "internalType": "address", - "name": "", - "type": "address" - } - ], - "payable": false, - "stateMutability": "nonpayable", - "type": "function" - }, - { - "constant": false, - "inputs": [ - { - "internalType": "address", - "name": "_logic", - "type": "address" - }, - { - "internalType": "address", - "name": "_admin", - "type": "address" - }, - { - "internalType": "bytes", - "name": "_data", - "type": "bytes" - } - ], - "name": "initialize", - "outputs": [], - "payable": true, - "stateMutability": "payable", - "type": "function" - }, - { - "constant": false, - "inputs": [ - { - "internalType": "address", - "name": "_logic", - "type": "address" - }, - { - "internalType": "bytes", - "name": "_data", - "type": "bytes" - } - ], - "name": "initialize", - "outputs": [], - "payable": true, - "stateMutability": "payable", - "type": "function" - }, - { - "constant": false, - "inputs": [ - { - "internalType": "address", - "name": "newImplementation", - "type": "address" - } - ], - "name": "upgradeTo", - "outputs": [], - "payable": false, - "stateMutability": "nonpayable", - "type": "function" - }, - { - "constant": false, - "inputs": [ - { - "internalType": "address", - "name": "newImplementation", - "type": "address" - }, - { - "internalType": "bytes", - "name": "data", - "type": "bytes" - } - ], - "name": "upgradeToAndCall", - "outputs": [], - "payable": true, - "stateMutability": "payable", - "type": "function" - } - ], - "sourcePath": "~/github/renproject/ren-sol/contracts/Gateway/Gateway.sol", - "compiler": { - "name": "solc", - "version": "0.5.16+commit.9c3226ce.Emscripten.clang" - }, - "networks": { - "42": { - "events": { - "0x7e644d79422f17c01e4894b5f4f588d331ebfa28653d42ae832dc59e38c9798f": { - "anonymous": false, - "inputs": [ - { - "indexed": false, - "internalType": "address", - "name": "previousAdmin", - "type": "address" - }, - { - "indexed": false, - "internalType": "address", - "name": "newAdmin", - "type": "address" - } - ], - "name": "AdminChanged", - "type": "event" - }, - "0xbc7cd75a20ee27fd9adebab32041f755214dbc6bffa90cc0225b39da2e5c2d3b": { - "anonymous": false, - "inputs": [ - { - "indexed": true, - "internalType": "address", - "name": "implementation", - "type": "address" - } - ], - "name": "Upgraded", - "type": "event" - } - }, - "links": {}, - "address": "0xb4fc6D131A44A3b44668E997Ce0CE00A52D4D9ed", - "transactionHash": "0xbb5a7ec492d047e0a75f22e24dcb6017b4237cf2800ee6ebbb7c57cc6e247f15" - } - }, - "schemaVersion": "3.0.23" -} \ No newline at end of file diff --git a/build/devnet/BasicAdapter.json b/build/devnet/BasicAdapter.json deleted file mode 100644 index f4ce85ea..00000000 --- a/build/devnet/BasicAdapter.json +++ /dev/null @@ -1,295 +0,0 @@ -{ - "contractName": "BasicAdapter", - "abi": [ - { - "inputs": [ - { - "internalType": "contract IGatewayRegistry", - "name": "_registry", - "type": "address" - } - ], - "payable": false, - "stateMutability": "nonpayable", - "type": "constructor" - }, - { - "anonymous": false, - "inputs": [ - { - "indexed": true, - "internalType": "address", - "name": "oldRelayHub", - "type": "address" - }, - { - "indexed": true, - "internalType": "address", - "name": "newRelayHub", - "type": "address" - } - ], - "name": "RelayHubChanged", - "type": "event" - }, - { - "constant": true, - "inputs": [ - { - "internalType": "address", - "name": "relay", - "type": "address" - }, - { - "internalType": "address", - "name": "from", - "type": "address" - }, - { - "internalType": "bytes", - "name": "encodedFunction", - "type": "bytes" - }, - { - "internalType": "uint256", - "name": "transactionFee", - "type": "uint256" - }, - { - "internalType": "uint256", - "name": "gasPrice", - "type": "uint256" - }, - { - "internalType": "uint256", - "name": "gasLimit", - "type": "uint256" - }, - { - "internalType": "uint256", - "name": "nonce", - "type": "uint256" - }, - { - "internalType": "bytes", - "name": "approvalData", - "type": "bytes" - }, - { - "internalType": "uint256", - "name": "maxPossibleCharge", - "type": "uint256" - } - ], - "name": "acceptRelayedCall", - "outputs": [ - { - "internalType": "uint256", - "name": "", - "type": "uint256" - }, - { - "internalType": "bytes", - "name": "", - "type": "bytes" - } - ], - "payable": false, - "stateMutability": "view", - "type": "function" - }, - { - "constant": false, - "inputs": [ - { - "internalType": "string", - "name": "_symbol", - "type": "string" - }, - { - "internalType": "bytes", - "name": "_to", - "type": "bytes" - }, - { - "internalType": "uint256", - "name": "_amount", - "type": "uint256" - } - ], - "name": "burn", - "outputs": [], - "payable": false, - "stateMutability": "nonpayable", - "type": "function" - }, - { - "constant": true, - "inputs": [], - "name": "getHubAddr", - "outputs": [ - { - "internalType": "address", - "name": "", - "type": "address" - } - ], - "payable": false, - "stateMutability": "view", - "type": "function" - }, - { - "constant": false, - "inputs": [], - "name": "initialize", - "outputs": [], - "payable": false, - "stateMutability": "nonpayable", - "type": "function" - }, - { - "constant": false, - "inputs": [ - { - "internalType": "string", - "name": "_symbol", - "type": "string" - }, - { - "internalType": "address", - "name": "_recipient", - "type": "address" - }, - { - "internalType": "uint256", - "name": "_amount", - "type": "uint256" - }, - { - "internalType": "bytes32", - "name": "_nHash", - "type": "bytes32" - }, - { - "internalType": "bytes", - "name": "_sig", - "type": "bytes" - } - ], - "name": "mint", - "outputs": [], - "payable": false, - "stateMutability": "nonpayable", - "type": "function" - }, - { - "constant": false, - "inputs": [ - { - "internalType": "bytes", - "name": "context", - "type": "bytes" - }, - { - "internalType": "bool", - "name": "success", - "type": "bool" - }, - { - "internalType": "uint256", - "name": "actualCharge", - "type": "uint256" - }, - { - "internalType": "bytes32", - "name": "preRetVal", - "type": "bytes32" - } - ], - "name": "postRelayedCall", - "outputs": [], - "payable": false, - "stateMutability": "nonpayable", - "type": "function" - }, - { - "constant": false, - "inputs": [ - { - "internalType": "bytes", - "name": "context", - "type": "bytes" - } - ], - "name": "preRelayedCall", - "outputs": [ - { - "internalType": "bytes32", - "name": "", - "type": "bytes32" - } - ], - "payable": false, - "stateMutability": "nonpayable", - "type": "function" - }, - { - "constant": true, - "inputs": [], - "name": "relayHubVersion", - "outputs": [ - { - "internalType": "string", - "name": "", - "type": "string" - } - ], - "payable": false, - "stateMutability": "view", - "type": "function" - }, - { - "constant": false, - "inputs": [], - "name": "setDefaultRelayHub", - "outputs": [], - "payable": false, - "stateMutability": "nonpayable", - "type": "function" - } - ], - "sourcePath": "~/github/renproject/ren-sol/contracts/Gateway/adapters/BasicAdapter.sol", - "compiler": { - "name": "solc", - "version": "0.5.16+commit.9c3226ce.Emscripten.clang" - }, - "networks": { - "42": { - "events": { - "0xb9f84b8e65164b14439ae3620df0a4d8786d896996c0282b683f9d8c08f046e8": { - "anonymous": false, - "inputs": [ - { - "indexed": true, - "internalType": "address", - "name": "oldRelayHub", - "type": "address" - }, - { - "indexed": true, - "internalType": "address", - "name": "newRelayHub", - "type": "address" - } - ], - "name": "RelayHubChanged", - "type": "event" - } - }, - "links": {}, - "address": "0xFABDB1F53Ef8B080332621cBc9F820a39e7A1B83", - "transactionHash": "0xb0507519f82fa89bbee8e4d5c72c1b4ca07a64ba33e2b869ebbcf5bcab4f623c" - } - }, - "schemaVersion": "3.0.23" -} \ No newline at end of file diff --git a/build/devnet/DarknodePayment.json b/build/devnet/DarknodePayment.json deleted file mode 100644 index 820e8999..00000000 --- a/build/devnet/DarknodePayment.json +++ /dev/null @@ -1,1052 +0,0 @@ -{ - "contractName": "DarknodePayment", - "abi": [ - { - "inputs": [ - { - "internalType": "string", - "name": "_VERSION", - "type": "string" - }, - { - "internalType": "contract DarknodeRegistryLogicV1", - "name": "_darknodeRegistry", - "type": "address" - }, - { - "internalType": "contract DarknodePaymentStore", - "name": "_darknodePaymentStore", - "type": "address" - }, - { - "internalType": "uint256", - "name": "_cyclePayoutPercent", - "type": "uint256" - } - ], - "payable": false, - "stateMutability": "nonpayable", - "type": "constructor" - }, - { - "anonymous": false, - "inputs": [ - { - "indexed": true, - "internalType": "address", - "name": "_newCycleChanger", - "type": "address" - }, - { - "indexed": true, - "internalType": "address", - "name": "_oldCycleChanger", - "type": "address" - } - ], - "name": "LogCycleChangerChanged", - "type": "event" - }, - { - "anonymous": false, - "inputs": [ - { - "indexed": true, - "internalType": "address", - "name": "_darknode", - "type": "address" - }, - { - "indexed": false, - "internalType": "uint256", - "name": "_cycle", - "type": "uint256" - } - ], - "name": "LogDarknodeClaim", - "type": "event" - }, - { - "anonymous": false, - "inputs": [ - { - "indexed": true, - "internalType": "contract DarknodeRegistryLogicV1", - "name": "_previousDarknodeRegistry", - "type": "address" - }, - { - "indexed": true, - "internalType": "contract DarknodeRegistryLogicV1", - "name": "_nextDarknodeRegistry", - "type": "address" - } - ], - "name": "LogDarknodeRegistryUpdated", - "type": "event" - }, - { - "anonymous": false, - "inputs": [ - { - "indexed": true, - "internalType": "address", - "name": "_darknodeOperator", - "type": "address" - }, - { - "indexed": true, - "internalType": "address", - "name": "_darknodeID", - "type": "address" - }, - { - "indexed": true, - "internalType": "address", - "name": "_token", - "type": "address" - }, - { - "indexed": false, - "internalType": "uint256", - "name": "_value", - "type": "uint256" - } - ], - "name": "LogDarknodeWithdrew", - "type": "event" - }, - { - "anonymous": false, - "inputs": [ - { - "indexed": true, - "internalType": "address", - "name": "_payer", - "type": "address" - }, - { - "indexed": true, - "internalType": "address", - "name": "_token", - "type": "address" - }, - { - "indexed": false, - "internalType": "uint256", - "name": "_amount", - "type": "uint256" - } - ], - "name": "LogPaymentReceived", - "type": "event" - }, - { - "anonymous": false, - "inputs": [ - { - "indexed": false, - "internalType": "uint256", - "name": "_newPercent", - "type": "uint256" - }, - { - "indexed": false, - "internalType": "uint256", - "name": "_oldPercent", - "type": "uint256" - } - ], - "name": "LogPayoutPercentChanged", - "type": "event" - }, - { - "anonymous": false, - "inputs": [ - { - "indexed": true, - "internalType": "address", - "name": "_token", - "type": "address" - } - ], - "name": "LogTokenDeregistered", - "type": "event" - }, - { - "anonymous": false, - "inputs": [ - { - "indexed": true, - "internalType": "address", - "name": "_token", - "type": "address" - } - ], - "name": "LogTokenRegistered", - "type": "event" - }, - { - "anonymous": false, - "inputs": [ - { - "indexed": true, - "internalType": "address", - "name": "previousOwner", - "type": "address" - }, - { - "indexed": true, - "internalType": "address", - "name": "newOwner", - "type": "address" - } - ], - "name": "OwnershipTransferred", - "type": "event" - }, - { - "payable": true, - "stateMutability": "payable", - "type": "fallback" - }, - { - "constant": true, - "inputs": [], - "name": "ETHEREUM", - "outputs": [ - { - "internalType": "address", - "name": "", - "type": "address" - } - ], - "payable": false, - "stateMutability": "view", - "type": "function" - }, - { - "constant": true, - "inputs": [], - "name": "VERSION", - "outputs": [ - { - "internalType": "string", - "name": "", - "type": "string" - } - ], - "payable": false, - "stateMutability": "view", - "type": "function" - }, - { - "constant": false, - "inputs": [], - "name": "changeCycle", - "outputs": [ - { - "internalType": "uint256", - "name": "", - "type": "uint256" - } - ], - "payable": false, - "stateMutability": "nonpayable", - "type": "function" - }, - { - "constant": false, - "inputs": [ - { - "internalType": "address", - "name": "_darknode", - "type": "address" - } - ], - "name": "claim", - "outputs": [], - "payable": false, - "stateMutability": "nonpayable", - "type": "function" - }, - { - "constant": false, - "inputs": [], - "name": "claimOwnership", - "outputs": [], - "payable": false, - "stateMutability": "nonpayable", - "type": "function" - }, - { - "constant": false, - "inputs": [], - "name": "claimStoreOwnership", - "outputs": [], - "payable": false, - "stateMutability": "nonpayable", - "type": "function" - }, - { - "constant": true, - "inputs": [], - "name": "currentCycle", - "outputs": [ - { - "internalType": "uint256", - "name": "", - "type": "uint256" - } - ], - "payable": false, - "stateMutability": "view", - "type": "function" - }, - { - "constant": true, - "inputs": [], - "name": "currentCyclePayoutPercent", - "outputs": [ - { - "internalType": "uint256", - "name": "", - "type": "uint256" - } - ], - "payable": false, - "stateMutability": "view", - "type": "function" - }, - { - "constant": true, - "inputs": [ - { - "internalType": "address", - "name": "_token", - "type": "address" - } - ], - "name": "currentCycleRewardPool", - "outputs": [ - { - "internalType": "uint256", - "name": "", - "type": "uint256" - } - ], - "payable": false, - "stateMutability": "view", - "type": "function" - }, - { - "constant": true, - "inputs": [], - "name": "cycleChanger", - "outputs": [ - { - "internalType": "address", - "name": "", - "type": "address" - } - ], - "payable": false, - "stateMutability": "view", - "type": "function" - }, - { - "constant": true, - "inputs": [], - "name": "cycleStartTime", - "outputs": [ - { - "internalType": "uint256", - "name": "", - "type": "uint256" - } - ], - "payable": false, - "stateMutability": "view", - "type": "function" - }, - { - "constant": true, - "inputs": [ - { - "internalType": "address", - "name": "_darknodeID", - "type": "address" - }, - { - "internalType": "address", - "name": "_token", - "type": "address" - } - ], - "name": "darknodeBalances", - "outputs": [ - { - "internalType": "uint256", - "name": "", - "type": "uint256" - } - ], - "payable": false, - "stateMutability": "view", - "type": "function" - }, - { - "constant": true, - "inputs": [], - "name": "darknodeRegistry", - "outputs": [ - { - "internalType": "contract DarknodeRegistryLogicV1", - "name": "", - "type": "address" - } - ], - "payable": false, - "stateMutability": "view", - "type": "function" - }, - { - "constant": false, - "inputs": [ - { - "internalType": "uint256", - "name": "_value", - "type": "uint256" - }, - { - "internalType": "address", - "name": "_token", - "type": "address" - } - ], - "name": "deposit", - "outputs": [], - "payable": true, - "stateMutability": "payable", - "type": "function" - }, - { - "constant": false, - "inputs": [ - { - "internalType": "address", - "name": "_token", - "type": "address" - } - ], - "name": "deregisterToken", - "outputs": [], - "payable": false, - "stateMutability": "nonpayable", - "type": "function" - }, - { - "constant": false, - "inputs": [ - { - "internalType": "address", - "name": "_token", - "type": "address" - } - ], - "name": "forward", - "outputs": [], - "payable": false, - "stateMutability": "nonpayable", - "type": "function" - }, - { - "constant": false, - "inputs": [ - { - "internalType": "address", - "name": "_nextOwner", - "type": "address" - } - ], - "name": "initialize", - "outputs": [], - "payable": false, - "stateMutability": "nonpayable", - "type": "function" - }, - { - "constant": true, - "inputs": [], - "name": "isOwner", - "outputs": [ - { - "internalType": "bool", - "name": "", - "type": "bool" - } - ], - "payable": false, - "stateMutability": "view", - "type": "function" - }, - { - "constant": true, - "inputs": [], - "name": "nextCyclePayoutPercent", - "outputs": [ - { - "internalType": "uint256", - "name": "", - "type": "uint256" - } - ], - "payable": false, - "stateMutability": "view", - "type": "function" - }, - { - "constant": true, - "inputs": [], - "name": "owner", - "outputs": [ - { - "internalType": "address", - "name": "", - "type": "address" - } - ], - "payable": false, - "stateMutability": "view", - "type": "function" - }, - { - "constant": true, - "inputs": [], - "name": "pendingOwner", - "outputs": [ - { - "internalType": "address", - "name": "", - "type": "address" - } - ], - "payable": false, - "stateMutability": "view", - "type": "function" - }, - { - "constant": true, - "inputs": [ - { - "internalType": "uint256", - "name": "", - "type": "uint256" - } - ], - "name": "pendingTokens", - "outputs": [ - { - "internalType": "address", - "name": "", - "type": "address" - } - ], - "payable": false, - "stateMutability": "view", - "type": "function" - }, - { - "constant": true, - "inputs": [], - "name": "previousCycle", - "outputs": [ - { - "internalType": "uint256", - "name": "", - "type": "uint256" - } - ], - "payable": false, - "stateMutability": "view", - "type": "function" - }, - { - "constant": true, - "inputs": [ - { - "internalType": "address", - "name": "", - "type": "address" - } - ], - "name": "previousCycleRewardShare", - "outputs": [ - { - "internalType": "uint256", - "name": "", - "type": "uint256" - } - ], - "payable": false, - "stateMutability": "view", - "type": "function" - }, - { - "constant": false, - "inputs": [ - { - "internalType": "address", - "name": "_token", - "type": "address" - } - ], - "name": "registerToken", - "outputs": [], - "payable": false, - "stateMutability": "nonpayable", - "type": "function" - }, - { - "constant": true, - "inputs": [ - { - "internalType": "address", - "name": "", - "type": "address" - } - ], - "name": "registeredTokenIndex", - "outputs": [ - { - "internalType": "uint256", - "name": "", - "type": "uint256" - } - ], - "payable": false, - "stateMutability": "view", - "type": "function" - }, - { - "constant": true, - "inputs": [ - { - "internalType": "uint256", - "name": "", - "type": "uint256" - } - ], - "name": "registeredTokens", - "outputs": [ - { - "internalType": "address", - "name": "", - "type": "address" - } - ], - "payable": false, - "stateMutability": "view", - "type": "function" - }, - { - "constant": false, - "inputs": [], - "name": "renounceOwnership", - "outputs": [], - "payable": false, - "stateMutability": "nonpayable", - "type": "function" - }, - { - "constant": true, - "inputs": [ - { - "internalType": "address", - "name": "", - "type": "address" - }, - { - "internalType": "uint256", - "name": "", - "type": "uint256" - } - ], - "name": "rewardClaimed", - "outputs": [ - { - "internalType": "bool", - "name": "", - "type": "bool" - } - ], - "payable": false, - "stateMutability": "view", - "type": "function" - }, - { - "constant": true, - "inputs": [], - "name": "store", - "outputs": [ - { - "internalType": "contract DarknodePaymentStore", - "name": "", - "type": "address" - } - ], - "payable": false, - "stateMutability": "view", - "type": "function" - }, - { - "constant": true, - "inputs": [ - { - "internalType": "address", - "name": "_token", - "type": "address" - } - ], - "name": "tokenPendingRegistration", - "outputs": [ - { - "internalType": "bool", - "name": "", - "type": "bool" - } - ], - "payable": false, - "stateMutability": "view", - "type": "function" - }, - { - "constant": false, - "inputs": [ - { - "internalType": "address", - "name": "newOwner", - "type": "address" - } - ], - "name": "transferOwnership", - "outputs": [], - "payable": false, - "stateMutability": "nonpayable", - "type": "function" - }, - { - "constant": false, - "inputs": [ - { - "internalType": "contract DarknodePayment", - "name": "_newOwner", - "type": "address" - } - ], - "name": "transferStoreOwnership", - "outputs": [], - "payable": false, - "stateMutability": "nonpayable", - "type": "function" - }, - { - "constant": true, - "inputs": [ - { - "internalType": "address", - "name": "", - "type": "address" - } - ], - "name": "unclaimedRewards", - "outputs": [ - { - "internalType": "uint256", - "name": "", - "type": "uint256" - } - ], - "payable": false, - "stateMutability": "view", - "type": "function" - }, - { - "constant": false, - "inputs": [ - { - "internalType": "address", - "name": "_addr", - "type": "address" - } - ], - "name": "updateCycleChanger", - "outputs": [], - "payable": false, - "stateMutability": "nonpayable", - "type": "function" - }, - { - "constant": false, - "inputs": [ - { - "internalType": "contract DarknodeRegistryLogicV1", - "name": "_darknodeRegistry", - "type": "address" - } - ], - "name": "updateDarknodeRegistry", - "outputs": [], - "payable": false, - "stateMutability": "nonpayable", - "type": "function" - }, - { - "constant": false, - "inputs": [ - { - "internalType": "uint256", - "name": "_percent", - "type": "uint256" - } - ], - "name": "updatePayoutPercentage", - "outputs": [], - "payable": false, - "stateMutability": "nonpayable", - "type": "function" - }, - { - "constant": false, - "inputs": [ - { - "internalType": "address", - "name": "_darknode", - "type": "address" - }, - { - "internalType": "address", - "name": "_token", - "type": "address" - } - ], - "name": "withdraw", - "outputs": [], - "payable": false, - "stateMutability": "nonpayable", - "type": "function" - }, - { - "constant": false, - "inputs": [ - { - "internalType": "address[]", - "name": "_darknodes", - "type": "address[]" - }, - { - "internalType": "address[]", - "name": "_tokens", - "type": "address[]" - } - ], - "name": "withdrawMultiple", - "outputs": [], - "payable": false, - "stateMutability": "nonpayable", - "type": "function" - } - ], - "sourcePath": "~/github/renproject/ren-sol/contracts/DarknodePayment/DarknodePayment.sol", - "compiler": { - "name": "solc", - "version": "0.5.16+commit.9c3226ce.Emscripten.clang" - }, - "networks": { - "42": { - "events": { - "0x9d549c7da0887b9da28aa4897e17429f78345be76b1918673be3430462a4d130": { - "anonymous": false, - "inputs": [ - { - "indexed": true, - "internalType": "address", - "name": "_newCycleChanger", - "type": "address" - }, - { - "indexed": true, - "internalType": "address", - "name": "_oldCycleChanger", - "type": "address" - } - ], - "name": "LogCycleChangerChanged", - "type": "event" - }, - "0x99c5ad5c5f898b30039b8cc54b8c0e6eb423e49bfc965a5999ebad131984e40d": { - "anonymous": false, - "inputs": [ - { - "indexed": true, - "internalType": "address", - "name": "_darknode", - "type": "address" - }, - { - "indexed": false, - "internalType": "uint256", - "name": "_cycle", - "type": "uint256" - } - ], - "name": "LogDarknodeClaim", - "type": "event" - }, - "0xf9f6dd5c784f63cc27c1079c73574a73485a6c2e7f7e2181c5eb2be8c693cfb7": { - "anonymous": false, - "inputs": [ - { - "indexed": true, - "internalType": "contract DarknodeRegistryLogicV1", - "name": "_previousDarknodeRegistry", - "type": "address" - }, - { - "indexed": true, - "internalType": "contract DarknodeRegistryLogicV1", - "name": "_nextDarknodeRegistry", - "type": "address" - } - ], - "name": "LogDarknodeRegistryUpdated", - "type": "event" - }, - "0xd390ef311a884ffc07fe929afa495d106c89041c9b8a73abd2e4f23d6c9c05c0": { - "anonymous": false, - "inputs": [ - { - "indexed": true, - "internalType": "address", - "name": "_darknodeOperator", - "type": "address" - }, - { - "indexed": true, - "internalType": "address", - "name": "_darknodeID", - "type": "address" - }, - { - "indexed": true, - "internalType": "address", - "name": "_token", - "type": "address" - }, - { - "indexed": false, - "internalType": "uint256", - "name": "_value", - "type": "uint256" - } - ], - "name": "LogDarknodeWithdrew", - "type": "event" - }, - "0x5f5d9f6f8b84a834e704e76b91a16ddc49abe97d37d6e61572febf8f1b56f7ce": { - "anonymous": false, - "inputs": [ - { - "indexed": true, - "internalType": "address", - "name": "_payer", - "type": "address" - }, - { - "indexed": true, - "internalType": "address", - "name": "_token", - "type": "address" - }, - { - "indexed": false, - "internalType": "uint256", - "name": "_amount", - "type": "uint256" - } - ], - "name": "LogPaymentReceived", - "type": "event" - }, - "0x0855549798088e618c4eccab56d3fa69209935ef7bc4ffe7200dff654d975643": { - "anonymous": false, - "inputs": [ - { - "indexed": false, - "internalType": "uint256", - "name": "_newPercent", - "type": "uint256" - }, - { - "indexed": false, - "internalType": "uint256", - "name": "_oldPercent", - "type": "uint256" - } - ], - "name": "LogPayoutPercentChanged", - "type": "event" - }, - "0xe46f21bb6906b7d69a6c06d5662a2b6c1c59d134cd7b1235babdb1a70a4b436a": { - "anonymous": false, - "inputs": [ - { - "indexed": true, - "internalType": "address", - "name": "_token", - "type": "address" - } - ], - "name": "LogTokenDeregistered", - "type": "event" - }, - "0xd780ddbc43f0c4efd61c5ca1bc8eeee3368abfb1f97aa7355da9f8bf8431c8ae": { - "anonymous": false, - "inputs": [ - { - "indexed": true, - "internalType": "address", - "name": "_token", - "type": "address" - } - ], - "name": "LogTokenRegistered", - "type": "event" - }, - "0x8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0": { - "anonymous": false, - "inputs": [ - { - "indexed": true, - "internalType": "address", - "name": "previousOwner", - "type": "address" - }, - { - "indexed": true, - "internalType": "address", - "name": "newOwner", - "type": "address" - } - ], - "name": "OwnershipTransferred", - "type": "event" - } - }, - "links": {}, - "address": "0xC7F24fEDfbbAA5248E1F5a160cC30Dcbff9F1176", - "transactionHash": "0x19c24c967209fc26027daa8dd512b46bed25b003456e5c19cee310aca3f4efec" - } - }, - "schemaVersion": "3.0.23" -} \ No newline at end of file diff --git a/build/devnet/DarknodePaymentStore.json b/build/devnet/DarknodePaymentStore.json deleted file mode 100644 index 5cb4c35c..00000000 --- a/build/devnet/DarknodePaymentStore.json +++ /dev/null @@ -1,342 +0,0 @@ -{ - "contractName": "DarknodePaymentStore", - "abi": [ - { - "inputs": [ - { - "internalType": "string", - "name": "_VERSION", - "type": "string" - } - ], - "payable": false, - "stateMutability": "nonpayable", - "type": "constructor" - }, - { - "anonymous": false, - "inputs": [ - { - "indexed": true, - "internalType": "address", - "name": "previousOwner", - "type": "address" - }, - { - "indexed": true, - "internalType": "address", - "name": "newOwner", - "type": "address" - } - ], - "name": "OwnershipTransferred", - "type": "event" - }, - { - "payable": true, - "stateMutability": "payable", - "type": "fallback" - }, - { - "constant": true, - "inputs": [], - "name": "ETHEREUM", - "outputs": [ - { - "internalType": "address", - "name": "", - "type": "address" - } - ], - "payable": false, - "stateMutability": "view", - "type": "function" - }, - { - "constant": true, - "inputs": [], - "name": "VERSION", - "outputs": [ - { - "internalType": "string", - "name": "", - "type": "string" - } - ], - "payable": false, - "stateMutability": "view", - "type": "function" - }, - { - "constant": true, - "inputs": [ - { - "internalType": "address", - "name": "_token", - "type": "address" - } - ], - "name": "availableBalance", - "outputs": [ - { - "internalType": "uint256", - "name": "", - "type": "uint256" - } - ], - "payable": false, - "stateMutability": "view", - "type": "function" - }, - { - "constant": false, - "inputs": [], - "name": "claimOwnership", - "outputs": [], - "payable": false, - "stateMutability": "nonpayable", - "type": "function" - }, - { - "constant": true, - "inputs": [ - { - "internalType": "address", - "name": "", - "type": "address" - }, - { - "internalType": "address", - "name": "", - "type": "address" - } - ], - "name": "darknodeBalances", - "outputs": [ - { - "internalType": "uint256", - "name": "", - "type": "uint256" - } - ], - "payable": false, - "stateMutability": "view", - "type": "function" - }, - { - "constant": false, - "inputs": [ - { - "internalType": "address", - "name": "_darknode", - "type": "address" - }, - { - "internalType": "address", - "name": "_token", - "type": "address" - }, - { - "internalType": "uint256", - "name": "_amount", - "type": "uint256" - } - ], - "name": "incrementDarknodeBalance", - "outputs": [], - "payable": false, - "stateMutability": "nonpayable", - "type": "function" - }, - { - "constant": false, - "inputs": [ - { - "internalType": "address", - "name": "_nextOwner", - "type": "address" - } - ], - "name": "initialize", - "outputs": [], - "payable": false, - "stateMutability": "nonpayable", - "type": "function" - }, - { - "constant": true, - "inputs": [], - "name": "isOwner", - "outputs": [ - { - "internalType": "bool", - "name": "", - "type": "bool" - } - ], - "payable": false, - "stateMutability": "view", - "type": "function" - }, - { - "constant": true, - "inputs": [ - { - "internalType": "address", - "name": "", - "type": "address" - } - ], - "name": "lockedBalances", - "outputs": [ - { - "internalType": "uint256", - "name": "", - "type": "uint256" - } - ], - "payable": false, - "stateMutability": "view", - "type": "function" - }, - { - "constant": true, - "inputs": [], - "name": "owner", - "outputs": [ - { - "internalType": "address", - "name": "", - "type": "address" - } - ], - "payable": false, - "stateMutability": "view", - "type": "function" - }, - { - "constant": true, - "inputs": [], - "name": "pendingOwner", - "outputs": [ - { - "internalType": "address", - "name": "", - "type": "address" - } - ], - "payable": false, - "stateMutability": "view", - "type": "function" - }, - { - "constant": false, - "inputs": [], - "name": "renounceOwnership", - "outputs": [], - "payable": false, - "stateMutability": "nonpayable", - "type": "function" - }, - { - "constant": true, - "inputs": [ - { - "internalType": "address", - "name": "_token", - "type": "address" - } - ], - "name": "totalBalance", - "outputs": [ - { - "internalType": "uint256", - "name": "", - "type": "uint256" - } - ], - "payable": false, - "stateMutability": "view", - "type": "function" - }, - { - "constant": false, - "inputs": [ - { - "internalType": "address", - "name": "_darknode", - "type": "address" - }, - { - "internalType": "address", - "name": "_token", - "type": "address" - }, - { - "internalType": "uint256", - "name": "_amount", - "type": "uint256" - }, - { - "internalType": "address payable", - "name": "_recipient", - "type": "address" - } - ], - "name": "transfer", - "outputs": [], - "payable": false, - "stateMutability": "nonpayable", - "type": "function" - }, - { - "constant": false, - "inputs": [ - { - "internalType": "address", - "name": "newOwner", - "type": "address" - } - ], - "name": "transferOwnership", - "outputs": [], - "payable": false, - "stateMutability": "nonpayable", - "type": "function" - } - ], - "sourcePath": "~/github/renproject/ren-sol/contracts/DarknodePayment/DarknodePaymentStore.sol", - "compiler": { - "name": "solc", - "version": "0.5.16+commit.9c3226ce.Emscripten.clang" - }, - "networks": { - "42": { - "events": { - "0x8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0": { - "anonymous": false, - "inputs": [ - { - "indexed": true, - "internalType": "address", - "name": "previousOwner", - "type": "address" - }, - { - "indexed": true, - "internalType": "address", - "name": "newOwner", - "type": "address" - } - ], - "name": "OwnershipTransferred", - "type": "event" - } - }, - "links": {}, - "address": "0xfb98D6900330844CeAce6Ae4ae966D272bE1aeC3", - "transactionHash": "0xc56b2b45da6f0d52553f317d15f08c3d302cb1651ab07f54afe66987ca09919b" - } - }, - "schemaVersion": "3.0.23" -} \ No newline at end of file diff --git a/build/devnet/DarknodeRegistryLogicV1.json b/build/devnet/DarknodeRegistryLogicV1.json deleted file mode 100644 index 027981d7..00000000 --- a/build/devnet/DarknodeRegistryLogicV1.json +++ /dev/null @@ -1,1388 +0,0 @@ -{ - "contractName": "DarknodeRegistryLogicV1", - "abi": [ - { - "anonymous": false, - "inputs": [ - { - "indexed": true, - "internalType": "address", - "name": "_darknodeOperator", - "type": "address" - }, - { - "indexed": true, - "internalType": "address", - "name": "_darknodeID", - "type": "address" - } - ], - "name": "LogDarknodeDeregistered", - "type": "event" - }, - { - "anonymous": false, - "inputs": [ - { - "indexed": true, - "internalType": "contract IDarknodePayment", - "name": "_previousDarknodePayment", - "type": "address" - }, - { - "indexed": true, - "internalType": "contract IDarknodePayment", - "name": "_nextDarknodePayment", - "type": "address" - } - ], - "name": "LogDarknodePaymentUpdated", - "type": "event" - }, - { - "anonymous": false, - "inputs": [ - { - "indexed": true, - "internalType": "address", - "name": "_darknodeOperator", - "type": "address" - }, - { - "indexed": true, - "internalType": "address", - "name": "_darknodeID", - "type": "address" - }, - { - "indexed": false, - "internalType": "uint256", - "name": "_amount", - "type": "uint256" - } - ], - "name": "LogDarknodeRefunded", - "type": "event" - }, - { - "anonymous": false, - "inputs": [ - { - "indexed": true, - "internalType": "address", - "name": "_darknodeOperator", - "type": "address" - }, - { - "indexed": true, - "internalType": "address", - "name": "_darknodeID", - "type": "address" - }, - { - "indexed": false, - "internalType": "uint256", - "name": "_bond", - "type": "uint256" - } - ], - "name": "LogDarknodeRegistered", - "type": "event" - }, - { - "anonymous": false, - "inputs": [ - { - "indexed": true, - "internalType": "address", - "name": "_darknodeOperator", - "type": "address" - }, - { - "indexed": true, - "internalType": "address", - "name": "_darknodeID", - "type": "address" - }, - { - "indexed": true, - "internalType": "address", - "name": "_challenger", - "type": "address" - }, - { - "indexed": false, - "internalType": "uint256", - "name": "_percentage", - "type": "uint256" - } - ], - "name": "LogDarknodeSlashed", - "type": "event" - }, - { - "anonymous": false, - "inputs": [ - { - "indexed": false, - "internalType": "uint256", - "name": "_previousMinimumBond", - "type": "uint256" - }, - { - "indexed": false, - "internalType": "uint256", - "name": "_nextMinimumBond", - "type": "uint256" - } - ], - "name": "LogMinimumBondUpdated", - "type": "event" - }, - { - "anonymous": false, - "inputs": [ - { - "indexed": false, - "internalType": "uint256", - "name": "_previousMinimumEpochInterval", - "type": "uint256" - }, - { - "indexed": false, - "internalType": "uint256", - "name": "_nextMinimumEpochInterval", - "type": "uint256" - } - ], - "name": "LogMinimumEpochIntervalUpdated", - "type": "event" - }, - { - "anonymous": false, - "inputs": [ - { - "indexed": false, - "internalType": "uint256", - "name": "_previousMinimumPodSize", - "type": "uint256" - }, - { - "indexed": false, - "internalType": "uint256", - "name": "_nextMinimumPodSize", - "type": "uint256" - } - ], - "name": "LogMinimumPodSizeUpdated", - "type": "event" - }, - { - "anonymous": false, - "inputs": [ - { - "indexed": true, - "internalType": "uint256", - "name": "epochhash", - "type": "uint256" - } - ], - "name": "LogNewEpoch", - "type": "event" - }, - { - "anonymous": false, - "inputs": [ - { - "indexed": true, - "internalType": "address", - "name": "_previousSlasher", - "type": "address" - }, - { - "indexed": true, - "internalType": "address", - "name": "_nextSlasher", - "type": "address" - } - ], - "name": "LogSlasherUpdated", - "type": "event" - }, - { - "anonymous": false, - "inputs": [ - { - "indexed": true, - "internalType": "address", - "name": "previousOwner", - "type": "address" - }, - { - "indexed": true, - "internalType": "address", - "name": "newOwner", - "type": "address" - } - ], - "name": "OwnershipTransferred", - "type": "event" - }, - { - "constant": true, - "inputs": [], - "name": "VERSION", - "outputs": [ - { - "internalType": "string", - "name": "", - "type": "string" - } - ], - "payable": false, - "stateMutability": "view", - "type": "function" - }, - { - "constant": false, - "inputs": [ - { - "internalType": "address", - "name": "_token", - "type": "address" - } - ], - "name": "blacklistRecoverableToken", - "outputs": [], - "payable": false, - "stateMutability": "nonpayable", - "type": "function" - }, - { - "constant": false, - "inputs": [], - "name": "claimOwnership", - "outputs": [], - "payable": false, - "stateMutability": "nonpayable", - "type": "function" - }, - { - "constant": false, - "inputs": [], - "name": "claimStoreOwnership", - "outputs": [], - "payable": false, - "stateMutability": "nonpayable", - "type": "function" - }, - { - "constant": true, - "inputs": [], - "name": "currentEpoch", - "outputs": [ - { - "internalType": "uint256", - "name": "epochhash", - "type": "uint256" - }, - { - "internalType": "uint256", - "name": "blocktime", - "type": "uint256" - } - ], - "payable": false, - "stateMutability": "view", - "type": "function" - }, - { - "constant": true, - "inputs": [], - "name": "darknodePayment", - "outputs": [ - { - "internalType": "contract IDarknodePayment", - "name": "", - "type": "address" - } - ], - "payable": false, - "stateMutability": "view", - "type": "function" - }, - { - "constant": false, - "inputs": [ - { - "internalType": "address", - "name": "_darknodeID", - "type": "address" - } - ], - "name": "deregister", - "outputs": [], - "payable": false, - "stateMutability": "nonpayable", - "type": "function" - }, - { - "constant": true, - "inputs": [], - "name": "deregistrationInterval", - "outputs": [ - { - "internalType": "uint256", - "name": "", - "type": "uint256" - } - ], - "payable": false, - "stateMutability": "view", - "type": "function" - }, - { - "constant": false, - "inputs": [], - "name": "epoch", - "outputs": [], - "payable": false, - "stateMutability": "nonpayable", - "type": "function" - }, - { - "constant": true, - "inputs": [ - { - "internalType": "address", - "name": "_darknodeID", - "type": "address" - } - ], - "name": "getDarknodeBond", - "outputs": [ - { - "internalType": "uint256", - "name": "", - "type": "uint256" - } - ], - "payable": false, - "stateMutability": "view", - "type": "function" - }, - { - "constant": true, - "inputs": [ - { - "internalType": "address", - "name": "_darknodeID", - "type": "address" - } - ], - "name": "getDarknodeOperator", - "outputs": [ - { - "internalType": "address payable", - "name": "", - "type": "address" - } - ], - "payable": false, - "stateMutability": "view", - "type": "function" - }, - { - "constant": true, - "inputs": [ - { - "internalType": "address", - "name": "_darknodeID", - "type": "address" - } - ], - "name": "getDarknodePublicKey", - "outputs": [ - { - "internalType": "bytes", - "name": "", - "type": "bytes" - } - ], - "payable": false, - "stateMutability": "view", - "type": "function" - }, - { - "constant": true, - "inputs": [ - { - "internalType": "address", - "name": "_start", - "type": "address" - }, - { - "internalType": "uint256", - "name": "_count", - "type": "uint256" - } - ], - "name": "getDarknodes", - "outputs": [ - { - "internalType": "address[]", - "name": "", - "type": "address[]" - } - ], - "payable": false, - "stateMutability": "view", - "type": "function" - }, - { - "constant": true, - "inputs": [ - { - "internalType": "address", - "name": "_start", - "type": "address" - }, - { - "internalType": "uint256", - "name": "_count", - "type": "uint256" - } - ], - "name": "getPreviousDarknodes", - "outputs": [ - { - "internalType": "address[]", - "name": "", - "type": "address[]" - } - ], - "payable": false, - "stateMutability": "view", - "type": "function" - }, - { - "constant": false, - "inputs": [ - { - "internalType": "string", - "name": "_VERSION", - "type": "string" - }, - { - "internalType": "contract RenToken", - "name": "_renAddress", - "type": "address" - }, - { - "internalType": "contract DarknodeRegistryStore", - "name": "_storeAddress", - "type": "address" - }, - { - "internalType": "uint256", - "name": "_minimumBond", - "type": "uint256" - }, - { - "internalType": "uint256", - "name": "_minimumPodSize", - "type": "uint256" - }, - { - "internalType": "uint256", - "name": "_minimumEpochIntervalSeconds", - "type": "uint256" - }, - { - "internalType": "uint256", - "name": "_deregistrationIntervalSeconds", - "type": "uint256" - } - ], - "name": "initialize", - "outputs": [], - "payable": false, - "stateMutability": "nonpayable", - "type": "function" - }, - { - "constant": false, - "inputs": [ - { - "internalType": "address", - "name": "_nextOwner", - "type": "address" - } - ], - "name": "initialize", - "outputs": [], - "payable": false, - "stateMutability": "nonpayable", - "type": "function" - }, - { - "constant": true, - "inputs": [ - { - "internalType": "address", - "name": "_darknodeID", - "type": "address" - } - ], - "name": "isDeregisterable", - "outputs": [ - { - "internalType": "bool", - "name": "", - "type": "bool" - } - ], - "payable": false, - "stateMutability": "view", - "type": "function" - }, - { - "constant": true, - "inputs": [ - { - "internalType": "address", - "name": "_darknodeID", - "type": "address" - } - ], - "name": "isDeregistered", - "outputs": [ - { - "internalType": "bool", - "name": "", - "type": "bool" - } - ], - "payable": false, - "stateMutability": "view", - "type": "function" - }, - { - "constant": true, - "inputs": [], - "name": "isOwner", - "outputs": [ - { - "internalType": "bool", - "name": "", - "type": "bool" - } - ], - "payable": false, - "stateMutability": "view", - "type": "function" - }, - { - "constant": true, - "inputs": [ - { - "internalType": "address", - "name": "_darknodeID", - "type": "address" - } - ], - "name": "isPendingDeregistration", - "outputs": [ - { - "internalType": "bool", - "name": "", - "type": "bool" - } - ], - "payable": false, - "stateMutability": "view", - "type": "function" - }, - { - "constant": true, - "inputs": [ - { - "internalType": "address", - "name": "_darknodeID", - "type": "address" - } - ], - "name": "isPendingRegistration", - "outputs": [ - { - "internalType": "bool", - "name": "", - "type": "bool" - } - ], - "payable": false, - "stateMutability": "view", - "type": "function" - }, - { - "constant": true, - "inputs": [ - { - "internalType": "address", - "name": "_darknodeID", - "type": "address" - } - ], - "name": "isRefundable", - "outputs": [ - { - "internalType": "bool", - "name": "", - "type": "bool" - } - ], - "payable": false, - "stateMutability": "view", - "type": "function" - }, - { - "constant": true, - "inputs": [ - { - "internalType": "address", - "name": "_darknodeID", - "type": "address" - } - ], - "name": "isRefunded", - "outputs": [ - { - "internalType": "bool", - "name": "", - "type": "bool" - } - ], - "payable": false, - "stateMutability": "view", - "type": "function" - }, - { - "constant": true, - "inputs": [ - { - "internalType": "address", - "name": "_darknodeID", - "type": "address" - } - ], - "name": "isRegistered", - "outputs": [ - { - "internalType": "bool", - "name": "", - "type": "bool" - } - ], - "payable": false, - "stateMutability": "view", - "type": "function" - }, - { - "constant": true, - "inputs": [ - { - "internalType": "address", - "name": "_darknodeID", - "type": "address" - } - ], - "name": "isRegisteredInPreviousEpoch", - "outputs": [ - { - "internalType": "bool", - "name": "", - "type": "bool" - } - ], - "payable": false, - "stateMutability": "view", - "type": "function" - }, - { - "constant": true, - "inputs": [], - "name": "minimumBond", - "outputs": [ - { - "internalType": "uint256", - "name": "", - "type": "uint256" - } - ], - "payable": false, - "stateMutability": "view", - "type": "function" - }, - { - "constant": true, - "inputs": [], - "name": "minimumEpochInterval", - "outputs": [ - { - "internalType": "uint256", - "name": "", - "type": "uint256" - } - ], - "payable": false, - "stateMutability": "view", - "type": "function" - }, - { - "constant": true, - "inputs": [], - "name": "minimumPodSize", - "outputs": [ - { - "internalType": "uint256", - "name": "", - "type": "uint256" - } - ], - "payable": false, - "stateMutability": "view", - "type": "function" - }, - { - "constant": true, - "inputs": [], - "name": "nextMinimumBond", - "outputs": [ - { - "internalType": "uint256", - "name": "", - "type": "uint256" - } - ], - "payable": false, - "stateMutability": "view", - "type": "function" - }, - { - "constant": true, - "inputs": [], - "name": "nextMinimumEpochInterval", - "outputs": [ - { - "internalType": "uint256", - "name": "", - "type": "uint256" - } - ], - "payable": false, - "stateMutability": "view", - "type": "function" - }, - { - "constant": true, - "inputs": [], - "name": "nextMinimumPodSize", - "outputs": [ - { - "internalType": "uint256", - "name": "", - "type": "uint256" - } - ], - "payable": false, - "stateMutability": "view", - "type": "function" - }, - { - "constant": true, - "inputs": [], - "name": "nextSlasher", - "outputs": [ - { - "internalType": "contract IDarknodeSlasher", - "name": "", - "type": "address" - } - ], - "payable": false, - "stateMutability": "view", - "type": "function" - }, - { - "constant": true, - "inputs": [], - "name": "numDarknodes", - "outputs": [ - { - "internalType": "uint256", - "name": "", - "type": "uint256" - } - ], - "payable": false, - "stateMutability": "view", - "type": "function" - }, - { - "constant": true, - "inputs": [], - "name": "numDarknodesNextEpoch", - "outputs": [ - { - "internalType": "uint256", - "name": "", - "type": "uint256" - } - ], - "payable": false, - "stateMutability": "view", - "type": "function" - }, - { - "constant": true, - "inputs": [], - "name": "numDarknodesPreviousEpoch", - "outputs": [ - { - "internalType": "uint256", - "name": "", - "type": "uint256" - } - ], - "payable": false, - "stateMutability": "view", - "type": "function" - }, - { - "constant": true, - "inputs": [], - "name": "owner", - "outputs": [ - { - "internalType": "address", - "name": "", - "type": "address" - } - ], - "payable": false, - "stateMutability": "view", - "type": "function" - }, - { - "constant": true, - "inputs": [], - "name": "pendingOwner", - "outputs": [ - { - "internalType": "address", - "name": "", - "type": "address" - } - ], - "payable": false, - "stateMutability": "view", - "type": "function" - }, - { - "constant": true, - "inputs": [], - "name": "previousEpoch", - "outputs": [ - { - "internalType": "uint256", - "name": "epochhash", - "type": "uint256" - }, - { - "internalType": "uint256", - "name": "blocktime", - "type": "uint256" - } - ], - "payable": false, - "stateMutability": "view", - "type": "function" - }, - { - "constant": false, - "inputs": [ - { - "internalType": "address", - "name": "_token", - "type": "address" - } - ], - "name": "recoverTokens", - "outputs": [], - "payable": false, - "stateMutability": "nonpayable", - "type": "function" - }, - { - "constant": false, - "inputs": [ - { - "internalType": "address", - "name": "_darknodeID", - "type": "address" - } - ], - "name": "refund", - "outputs": [], - "payable": false, - "stateMutability": "nonpayable", - "type": "function" - }, - { - "constant": false, - "inputs": [ - { - "internalType": "address", - "name": "_darknodeID", - "type": "address" - }, - { - "internalType": "bytes", - "name": "_publicKey", - "type": "bytes" - } - ], - "name": "register", - "outputs": [], - "payable": false, - "stateMutability": "nonpayable", - "type": "function" - }, - { - "constant": true, - "inputs": [], - "name": "ren", - "outputs": [ - { - "internalType": "contract RenToken", - "name": "", - "type": "address" - } - ], - "payable": false, - "stateMutability": "view", - "type": "function" - }, - { - "constant": false, - "inputs": [], - "name": "renounceOwnership", - "outputs": [], - "payable": false, - "stateMutability": "nonpayable", - "type": "function" - }, - { - "constant": false, - "inputs": [ - { - "internalType": "address", - "name": "_guilty", - "type": "address" - }, - { - "internalType": "address", - "name": "_challenger", - "type": "address" - }, - { - "internalType": "uint256", - "name": "_percentage", - "type": "uint256" - } - ], - "name": "slash", - "outputs": [], - "payable": false, - "stateMutability": "nonpayable", - "type": "function" - }, - { - "constant": true, - "inputs": [], - "name": "slasher", - "outputs": [ - { - "internalType": "contract IDarknodeSlasher", - "name": "", - "type": "address" - } - ], - "payable": false, - "stateMutability": "view", - "type": "function" - }, - { - "constant": true, - "inputs": [], - "name": "store", - "outputs": [ - { - "internalType": "contract DarknodeRegistryStore", - "name": "", - "type": "address" - } - ], - "payable": false, - "stateMutability": "view", - "type": "function" - }, - { - "constant": false, - "inputs": [ - { - "internalType": "address", - "name": "newOwner", - "type": "address" - } - ], - "name": "transferOwnership", - "outputs": [], - "payable": false, - "stateMutability": "nonpayable", - "type": "function" - }, - { - "constant": false, - "inputs": [ - { - "internalType": "contract DarknodeRegistryLogicV1", - "name": "_newOwner", - "type": "address" - } - ], - "name": "transferStoreOwnership", - "outputs": [], - "payable": false, - "stateMutability": "nonpayable", - "type": "function" - }, - { - "constant": false, - "inputs": [ - { - "internalType": "contract IDarknodePayment", - "name": "_darknodePayment", - "type": "address" - } - ], - "name": "updateDarknodePayment", - "outputs": [], - "payable": false, - "stateMutability": "nonpayable", - "type": "function" - }, - { - "constant": false, - "inputs": [ - { - "internalType": "uint256", - "name": "_nextMinimumBond", - "type": "uint256" - } - ], - "name": "updateMinimumBond", - "outputs": [], - "payable": false, - "stateMutability": "nonpayable", - "type": "function" - }, - { - "constant": false, - "inputs": [ - { - "internalType": "uint256", - "name": "_nextMinimumEpochInterval", - "type": "uint256" - } - ], - "name": "updateMinimumEpochInterval", - "outputs": [], - "payable": false, - "stateMutability": "nonpayable", - "type": "function" - }, - { - "constant": false, - "inputs": [ - { - "internalType": "uint256", - "name": "_nextMinimumPodSize", - "type": "uint256" - } - ], - "name": "updateMinimumPodSize", - "outputs": [], - "payable": false, - "stateMutability": "nonpayable", - "type": "function" - }, - { - "constant": false, - "inputs": [ - { - "internalType": "contract IDarknodeSlasher", - "name": "_slasher", - "type": "address" - } - ], - "name": "updateSlasher", - "outputs": [], - "payable": false, - "stateMutability": "nonpayable", - "type": "function" - } - ], - "sourcePath": "~/github/renproject/ren-sol/contracts/DarknodeRegistry/DarknodeRegistry.sol", - "compiler": { - "name": "solc", - "version": "0.5.16+commit.9c3226ce.Emscripten.clang" - }, - "networks": { - "42": { - "events": { - "0xf73268ea792d9dbf3e21a95ec9711f0b535c5f6c99f6b4f54f6766838086b842": { - "anonymous": false, - "inputs": [ - { - "indexed": true, - "internalType": "address", - "name": "_darknodeOperator", - "type": "address" - }, - { - "indexed": true, - "internalType": "address", - "name": "_darknodeID", - "type": "address" - } - ], - "name": "LogDarknodeDeregistered", - "type": "event" - }, - "0xe3e25a79a5ba7c894fcc55794b2712e225537e89f777b9b9df307cc5504ba0e9": { - "anonymous": false, - "inputs": [ - { - "indexed": true, - "internalType": "contract IDarknodePayment", - "name": "_previousDarknodePayment", - "type": "address" - }, - { - "indexed": true, - "internalType": "contract IDarknodePayment", - "name": "_nextDarknodePayment", - "type": "address" - } - ], - "name": "LogDarknodePaymentUpdated", - "type": "event" - }, - "0x3eeec3803912dfbf607c8488e8aee15f415e51c9936250a5142642c9e470c128": { - "anonymous": false, - "inputs": [ - { - "indexed": true, - "internalType": "address", - "name": "_darknodeOperator", - "type": "address" - }, - { - "indexed": true, - "internalType": "address", - "name": "_darknodeID", - "type": "address" - }, - { - "indexed": false, - "internalType": "uint256", - "name": "_amount", - "type": "uint256" - } - ], - "name": "LogDarknodeRefunded", - "type": "event" - }, - "0x7c56cb7f63b6922d24414bf7c2b2c40c7ea1ea637c3f400efa766a85ecf2f093": { - "anonymous": false, - "inputs": [ - { - "indexed": true, - "internalType": "address", - "name": "_darknodeOperator", - "type": "address" - }, - { - "indexed": true, - "internalType": "address", - "name": "_darknodeID", - "type": "address" - }, - { - "indexed": false, - "internalType": "uint256", - "name": "_bond", - "type": "uint256" - } - ], - "name": "LogDarknodeRegistered", - "type": "event" - }, - "0xb43e0cc88b4d6ae901c6c99d1b58769cb8c9ded8e6f20a0d3712d09bf9e1ea77": { - "anonymous": false, - "inputs": [ - { - "indexed": true, - "internalType": "address", - "name": "_darknodeOperator", - "type": "address" - }, - { - "indexed": true, - "internalType": "address", - "name": "_darknodeID", - "type": "address" - }, - { - "indexed": true, - "internalType": "address", - "name": "_challenger", - "type": "address" - }, - { - "indexed": false, - "internalType": "uint256", - "name": "_percentage", - "type": "uint256" - } - ], - "name": "LogDarknodeSlashed", - "type": "event" - }, - "0x7c77c94944e9e4e5b0d46f1297127d060020792687cd743401d782346c68f655": { - "anonymous": false, - "inputs": [ - { - "indexed": false, - "internalType": "uint256", - "name": "_previousMinimumBond", - "type": "uint256" - }, - { - "indexed": false, - "internalType": "uint256", - "name": "_nextMinimumBond", - "type": "uint256" - } - ], - "name": "LogMinimumBondUpdated", - "type": "event" - }, - "0xb218cde2730b79a0667ddf869466ee66a12ef56fe65fa4986a590f8a7108c9de": { - "anonymous": false, - "inputs": [ - { - "indexed": false, - "internalType": "uint256", - "name": "_previousMinimumEpochInterval", - "type": "uint256" - }, - { - "indexed": false, - "internalType": "uint256", - "name": "_nextMinimumEpochInterval", - "type": "uint256" - } - ], - "name": "LogMinimumEpochIntervalUpdated", - "type": "event" - }, - "0x6d520e46e5714982ddf8cb6216bcb3e1c1d5b79d337afc305335f819394f5d6a": { - "anonymous": false, - "inputs": [ - { - "indexed": false, - "internalType": "uint256", - "name": "_previousMinimumPodSize", - "type": "uint256" - }, - { - "indexed": false, - "internalType": "uint256", - "name": "_nextMinimumPodSize", - "type": "uint256" - } - ], - "name": "LogMinimumPodSizeUpdated", - "type": "event" - }, - "0xaf2fc4796f2932ce294c3684deffe5098d3ef65dc2dd64efa80ef94eed88b01e": { - "anonymous": false, - "inputs": [ - { - "indexed": true, - "internalType": "uint256", - "name": "epochhash", - "type": "uint256" - } - ], - "name": "LogNewEpoch", - "type": "event" - }, - "0x933228a1c3ba8fadd3ce47a9db5b898be647f89af99ba7c1b9a655f59ea306c8": { - "anonymous": false, - "inputs": [ - { - "indexed": true, - "internalType": "address", - "name": "_previousSlasher", - "type": "address" - }, - { - "indexed": true, - "internalType": "address", - "name": "_nextSlasher", - "type": "address" - } - ], - "name": "LogSlasherUpdated", - "type": "event" - }, - "0x8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0": { - "anonymous": false, - "inputs": [ - { - "indexed": true, - "internalType": "address", - "name": "previousOwner", - "type": "address" - }, - { - "indexed": true, - "internalType": "address", - "name": "newOwner", - "type": "address" - } - ], - "name": "OwnershipTransferred", - "type": "event" - } - }, - "links": {}, - "address": "0x26D6fEC1C904EB5b86ACed6BB804b4ed35208704", - "transactionHash": "0x79c509141b37ec0fbb3517871eae046e530a6fc7355194e0e46d87b1d17533a2" - } - }, - "schemaVersion": "3.0.23" -} \ No newline at end of file diff --git a/build/devnet/DarknodeRegistryProxy.json b/build/devnet/DarknodeRegistryProxy.json deleted file mode 100644 index 26e77c24..00000000 --- a/build/devnet/DarknodeRegistryProxy.json +++ /dev/null @@ -1,214 +0,0 @@ -{ - "contractName": "DarknodeRegistryProxy", - "abi": [ - { - "anonymous": false, - "inputs": [ - { - "indexed": false, - "internalType": "address", - "name": "previousAdmin", - "type": "address" - }, - { - "indexed": false, - "internalType": "address", - "name": "newAdmin", - "type": "address" - } - ], - "name": "AdminChanged", - "type": "event" - }, - { - "anonymous": false, - "inputs": [ - { - "indexed": true, - "internalType": "address", - "name": "implementation", - "type": "address" - } - ], - "name": "Upgraded", - "type": "event" - }, - { - "payable": true, - "stateMutability": "payable", - "type": "fallback" - }, - { - "constant": false, - "inputs": [], - "name": "admin", - "outputs": [ - { - "internalType": "address", - "name": "", - "type": "address" - } - ], - "payable": false, - "stateMutability": "nonpayable", - "type": "function" - }, - { - "constant": false, - "inputs": [ - { - "internalType": "address", - "name": "newAdmin", - "type": "address" - } - ], - "name": "changeAdmin", - "outputs": [], - "payable": false, - "stateMutability": "nonpayable", - "type": "function" - }, - { - "constant": false, - "inputs": [], - "name": "implementation", - "outputs": [ - { - "internalType": "address", - "name": "", - "type": "address" - } - ], - "payable": false, - "stateMutability": "nonpayable", - "type": "function" - }, - { - "constant": false, - "inputs": [ - { - "internalType": "address", - "name": "_logic", - "type": "address" - }, - { - "internalType": "address", - "name": "_admin", - "type": "address" - }, - { - "internalType": "bytes", - "name": "_data", - "type": "bytes" - } - ], - "name": "initialize", - "outputs": [], - "payable": true, - "stateMutability": "payable", - "type": "function" - }, - { - "constant": false, - "inputs": [ - { - "internalType": "address", - "name": "_logic", - "type": "address" - }, - { - "internalType": "bytes", - "name": "_data", - "type": "bytes" - } - ], - "name": "initialize", - "outputs": [], - "payable": true, - "stateMutability": "payable", - "type": "function" - }, - { - "constant": false, - "inputs": [ - { - "internalType": "address", - "name": "newImplementation", - "type": "address" - } - ], - "name": "upgradeTo", - "outputs": [], - "payable": false, - "stateMutability": "nonpayable", - "type": "function" - }, - { - "constant": false, - "inputs": [ - { - "internalType": "address", - "name": "newImplementation", - "type": "address" - }, - { - "internalType": "bytes", - "name": "data", - "type": "bytes" - } - ], - "name": "upgradeToAndCall", - "outputs": [], - "payable": true, - "stateMutability": "payable", - "type": "function" - } - ], - "sourcePath": "~/github/renproject/ren-sol/contracts/DarknodeRegistry/DarknodeRegistry.sol", - "compiler": { - "name": "solc", - "version": "0.5.16+commit.9c3226ce.Emscripten.clang" - }, - "networks": { - "42": { - "events": { - "0x7e644d79422f17c01e4894b5f4f588d331ebfa28653d42ae832dc59e38c9798f": { - "anonymous": false, - "inputs": [ - { - "indexed": false, - "internalType": "address", - "name": "previousAdmin", - "type": "address" - }, - { - "indexed": false, - "internalType": "address", - "name": "newAdmin", - "type": "address" - } - ], - "name": "AdminChanged", - "type": "event" - }, - "0xbc7cd75a20ee27fd9adebab32041f755214dbc6bffa90cc0225b39da2e5c2d3b": { - "anonymous": false, - "inputs": [ - { - "indexed": true, - "internalType": "address", - "name": "implementation", - "type": "address" - } - ], - "name": "Upgraded", - "type": "event" - } - }, - "links": {}, - "address": "0x7B69e5e15D4c24c353Fea56f72E4C0c5B93dCb71", - "transactionHash": "0x5fa75b34033f1bec6c361f9993652ac38838afdc5109af8ff9ed78cd2411b59f" - } - }, - "schemaVersion": "3.0.23" -} \ No newline at end of file diff --git a/build/devnet/DarknodeRegistryStore.json b/build/devnet/DarknodeRegistryStore.json deleted file mode 100644 index 109a5d15..00000000 --- a/build/devnet/DarknodeRegistryStore.json +++ /dev/null @@ -1,464 +0,0 @@ -{ - "contractName": "DarknodeRegistryStore", - "abi": [ - { - "inputs": [ - { - "internalType": "string", - "name": "_VERSION", - "type": "string" - }, - { - "internalType": "contract RenToken", - "name": "_ren", - "type": "address" - } - ], - "payable": false, - "stateMutability": "nonpayable", - "type": "constructor" - }, - { - "anonymous": false, - "inputs": [ - { - "indexed": true, - "internalType": "address", - "name": "previousOwner", - "type": "address" - }, - { - "indexed": true, - "internalType": "address", - "name": "newOwner", - "type": "address" - } - ], - "name": "OwnershipTransferred", - "type": "event" - }, - { - "constant": true, - "inputs": [], - "name": "VERSION", - "outputs": [ - { - "internalType": "string", - "name": "", - "type": "string" - } - ], - "payable": false, - "stateMutability": "view", - "type": "function" - }, - { - "constant": false, - "inputs": [ - { - "internalType": "address", - "name": "_darknodeID", - "type": "address" - }, - { - "internalType": "address payable", - "name": "_darknodeOperator", - "type": "address" - }, - { - "internalType": "uint256", - "name": "_bond", - "type": "uint256" - }, - { - "internalType": "bytes", - "name": "_publicKey", - "type": "bytes" - }, - { - "internalType": "uint256", - "name": "_registeredAt", - "type": "uint256" - }, - { - "internalType": "uint256", - "name": "_deregisteredAt", - "type": "uint256" - } - ], - "name": "appendDarknode", - "outputs": [], - "payable": false, - "stateMutability": "nonpayable", - "type": "function" - }, - { - "constant": true, - "inputs": [], - "name": "begin", - "outputs": [ - { - "internalType": "address", - "name": "", - "type": "address" - } - ], - "payable": false, - "stateMutability": "view", - "type": "function" - }, - { - "constant": false, - "inputs": [ - { - "internalType": "address", - "name": "_token", - "type": "address" - } - ], - "name": "blacklistRecoverableToken", - "outputs": [], - "payable": false, - "stateMutability": "nonpayable", - "type": "function" - }, - { - "constant": false, - "inputs": [], - "name": "claimOwnership", - "outputs": [], - "payable": false, - "stateMutability": "nonpayable", - "type": "function" - }, - { - "constant": true, - "inputs": [ - { - "internalType": "address", - "name": "darknodeID", - "type": "address" - } - ], - "name": "darknodeBond", - "outputs": [ - { - "internalType": "uint256", - "name": "", - "type": "uint256" - } - ], - "payable": false, - "stateMutability": "view", - "type": "function" - }, - { - "constant": true, - "inputs": [ - { - "internalType": "address", - "name": "darknodeID", - "type": "address" - } - ], - "name": "darknodeDeregisteredAt", - "outputs": [ - { - "internalType": "uint256", - "name": "", - "type": "uint256" - } - ], - "payable": false, - "stateMutability": "view", - "type": "function" - }, - { - "constant": true, - "inputs": [ - { - "internalType": "address", - "name": "darknodeID", - "type": "address" - } - ], - "name": "darknodeOperator", - "outputs": [ - { - "internalType": "address payable", - "name": "", - "type": "address" - } - ], - "payable": false, - "stateMutability": "view", - "type": "function" - }, - { - "constant": true, - "inputs": [ - { - "internalType": "address", - "name": "darknodeID", - "type": "address" - } - ], - "name": "darknodePublicKey", - "outputs": [ - { - "internalType": "bytes", - "name": "", - "type": "bytes" - } - ], - "payable": false, - "stateMutability": "view", - "type": "function" - }, - { - "constant": true, - "inputs": [ - { - "internalType": "address", - "name": "darknodeID", - "type": "address" - } - ], - "name": "darknodeRegisteredAt", - "outputs": [ - { - "internalType": "uint256", - "name": "", - "type": "uint256" - } - ], - "payable": false, - "stateMutability": "view", - "type": "function" - }, - { - "constant": false, - "inputs": [ - { - "internalType": "address", - "name": "_nextOwner", - "type": "address" - } - ], - "name": "initialize", - "outputs": [], - "payable": false, - "stateMutability": "nonpayable", - "type": "function" - }, - { - "constant": true, - "inputs": [], - "name": "isOwner", - "outputs": [ - { - "internalType": "bool", - "name": "", - "type": "bool" - } - ], - "payable": false, - "stateMutability": "view", - "type": "function" - }, - { - "constant": true, - "inputs": [ - { - "internalType": "address", - "name": "darknodeID", - "type": "address" - } - ], - "name": "next", - "outputs": [ - { - "internalType": "address", - "name": "", - "type": "address" - } - ], - "payable": false, - "stateMutability": "view", - "type": "function" - }, - { - "constant": true, - "inputs": [], - "name": "owner", - "outputs": [ - { - "internalType": "address", - "name": "", - "type": "address" - } - ], - "payable": false, - "stateMutability": "view", - "type": "function" - }, - { - "constant": true, - "inputs": [], - "name": "pendingOwner", - "outputs": [ - { - "internalType": "address", - "name": "", - "type": "address" - } - ], - "payable": false, - "stateMutability": "view", - "type": "function" - }, - { - "constant": false, - "inputs": [ - { - "internalType": "address", - "name": "_token", - "type": "address" - } - ], - "name": "recoverTokens", - "outputs": [], - "payable": false, - "stateMutability": "nonpayable", - "type": "function" - }, - { - "constant": false, - "inputs": [ - { - "internalType": "address", - "name": "darknodeID", - "type": "address" - } - ], - "name": "removeDarknode", - "outputs": [], - "payable": false, - "stateMutability": "nonpayable", - "type": "function" - }, - { - "constant": true, - "inputs": [], - "name": "ren", - "outputs": [ - { - "internalType": "contract RenToken", - "name": "", - "type": "address" - } - ], - "payable": false, - "stateMutability": "view", - "type": "function" - }, - { - "constant": false, - "inputs": [], - "name": "renounceOwnership", - "outputs": [], - "payable": false, - "stateMutability": "nonpayable", - "type": "function" - }, - { - "constant": false, - "inputs": [ - { - "internalType": "address", - "name": "newOwner", - "type": "address" - } - ], - "name": "transferOwnership", - "outputs": [], - "payable": false, - "stateMutability": "nonpayable", - "type": "function" - }, - { - "constant": false, - "inputs": [ - { - "internalType": "address", - "name": "darknodeID", - "type": "address" - }, - { - "internalType": "uint256", - "name": "decreasedBond", - "type": "uint256" - } - ], - "name": "updateDarknodeBond", - "outputs": [], - "payable": false, - "stateMutability": "nonpayable", - "type": "function" - }, - { - "constant": false, - "inputs": [ - { - "internalType": "address", - "name": "darknodeID", - "type": "address" - }, - { - "internalType": "uint256", - "name": "deregisteredAt", - "type": "uint256" - } - ], - "name": "updateDarknodeDeregisteredAt", - "outputs": [], - "payable": false, - "stateMutability": "nonpayable", - "type": "function" - } - ], - "sourcePath": "~/github/renproject/ren-sol/contracts/DarknodeRegistry/DarknodeRegistryStore.sol", - "compiler": { - "name": "solc", - "version": "0.5.16+commit.9c3226ce.Emscripten.clang" - }, - "networks": { - "42": { - "events": { - "0x8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0": { - "anonymous": false, - "inputs": [ - { - "indexed": true, - "internalType": "address", - "name": "previousOwner", - "type": "address" - }, - { - "indexed": true, - "internalType": "address", - "name": "newOwner", - "type": "address" - } - ], - "name": "OwnershipTransferred", - "type": "event" - } - }, - "links": {}, - "address": "0x3ccF0cd02ff15b59Ce2B152CdDE78551eFd34a62", - "transactionHash": "0xcfff9860ac1589c3c0611ac9846ca556412f93f057724906194deff7501d77ca" - } - }, - "schemaVersion": "3.0.23" -} \ No newline at end of file diff --git a/build/devnet/DarknodeSlasher.json b/build/devnet/DarknodeSlasher.json deleted file mode 100644 index d5942253..00000000 --- a/build/devnet/DarknodeSlasher.json +++ /dev/null @@ -1,609 +0,0 @@ -{ - "contractName": "DarknodeSlasher", - "abi": [ - { - "inputs": [ - { - "internalType": "contract DarknodeRegistryLogicV1", - "name": "_darknodeRegistry", - "type": "address" - } - ], - "payable": false, - "stateMutability": "nonpayable", - "type": "constructor" - }, - { - "anonymous": false, - "inputs": [ - { - "indexed": true, - "internalType": "contract DarknodeRegistryLogicV1", - "name": "_previousDarknodeRegistry", - "type": "address" - }, - { - "indexed": true, - "internalType": "contract DarknodeRegistryLogicV1", - "name": "_nextDarknodeRegistry", - "type": "address" - } - ], - "name": "LogDarknodeRegistryUpdated", - "type": "event" - }, - { - "anonymous": false, - "inputs": [ - { - "indexed": true, - "internalType": "address", - "name": "previousOwner", - "type": "address" - }, - { - "indexed": true, - "internalType": "address", - "name": "newOwner", - "type": "address" - } - ], - "name": "OwnershipTransferred", - "type": "event" - }, - { - "constant": false, - "inputs": [ - { - "internalType": "address", - "name": "_guilty", - "type": "address" - } - ], - "name": "blacklist", - "outputs": [], - "payable": false, - "stateMutability": "nonpayable", - "type": "function" - }, - { - "constant": true, - "inputs": [], - "name": "blacklistSlashPercent", - "outputs": [ - { - "internalType": "uint256", - "name": "", - "type": "uint256" - } - ], - "payable": false, - "stateMutability": "view", - "type": "function" - }, - { - "constant": true, - "inputs": [ - { - "internalType": "address", - "name": "", - "type": "address" - } - ], - "name": "blacklisted", - "outputs": [ - { - "internalType": "bool", - "name": "", - "type": "bool" - } - ], - "payable": false, - "stateMutability": "view", - "type": "function" - }, - { - "constant": false, - "inputs": [], - "name": "claimOwnership", - "outputs": [], - "payable": false, - "stateMutability": "nonpayable", - "type": "function" - }, - { - "constant": true, - "inputs": [], - "name": "darknodeRegistry", - "outputs": [ - { - "internalType": "contract DarknodeRegistryLogicV1", - "name": "", - "type": "address" - } - ], - "payable": false, - "stateMutability": "view", - "type": "function" - }, - { - "constant": false, - "inputs": [ - { - "internalType": "address", - "name": "_nextOwner", - "type": "address" - } - ], - "name": "initialize", - "outputs": [], - "payable": false, - "stateMutability": "nonpayable", - "type": "function" - }, - { - "constant": true, - "inputs": [], - "name": "isOwner", - "outputs": [ - { - "internalType": "bool", - "name": "", - "type": "bool" - } - ], - "payable": false, - "stateMutability": "view", - "type": "function" - }, - { - "constant": true, - "inputs": [], - "name": "maliciousSlashPercent", - "outputs": [ - { - "internalType": "uint256", - "name": "", - "type": "uint256" - } - ], - "payable": false, - "stateMutability": "view", - "type": "function" - }, - { - "constant": true, - "inputs": [], - "name": "owner", - "outputs": [ - { - "internalType": "address", - "name": "", - "type": "address" - } - ], - "payable": false, - "stateMutability": "view", - "type": "function" - }, - { - "constant": true, - "inputs": [], - "name": "pendingOwner", - "outputs": [ - { - "internalType": "address", - "name": "", - "type": "address" - } - ], - "payable": false, - "stateMutability": "view", - "type": "function" - }, - { - "constant": false, - "inputs": [], - "name": "renounceOwnership", - "outputs": [], - "payable": false, - "stateMutability": "nonpayable", - "type": "function" - }, - { - "constant": true, - "inputs": [], - "name": "secretRevealSlashPercent", - "outputs": [ - { - "internalType": "uint256", - "name": "", - "type": "uint256" - } - ], - "payable": false, - "stateMutability": "view", - "type": "function" - }, - { - "constant": true, - "inputs": [ - { - "internalType": "address", - "name": "", - "type": "address" - } - ], - "name": "secretRevealed", - "outputs": [ - { - "internalType": "bool", - "name": "", - "type": "bool" - } - ], - "payable": false, - "stateMutability": "view", - "type": "function" - }, - { - "constant": false, - "inputs": [ - { - "internalType": "uint256", - "name": "_percentage", - "type": "uint256" - } - ], - "name": "setBlacklistSlashPercent", - "outputs": [], - "payable": false, - "stateMutability": "nonpayable", - "type": "function" - }, - { - "constant": false, - "inputs": [ - { - "internalType": "uint256", - "name": "_percentage", - "type": "uint256" - } - ], - "name": "setMaliciousSlashPercent", - "outputs": [], - "payable": false, - "stateMutability": "nonpayable", - "type": "function" - }, - { - "constant": false, - "inputs": [ - { - "internalType": "uint256", - "name": "_percentage", - "type": "uint256" - } - ], - "name": "setSecretRevealSlashPercent", - "outputs": [], - "payable": false, - "stateMutability": "nonpayable", - "type": "function" - }, - { - "constant": false, - "inputs": [ - { - "internalType": "address", - "name": "_guilty", - "type": "address" - }, - { - "internalType": "address", - "name": "_challenger", - "type": "address" - }, - { - "internalType": "uint256", - "name": "_percentage", - "type": "uint256" - } - ], - "name": "slash", - "outputs": [], - "payable": false, - "stateMutability": "nonpayable", - "type": "function" - }, - { - "constant": false, - "inputs": [ - { - "internalType": "uint256", - "name": "_height", - "type": "uint256" - }, - { - "internalType": "uint256", - "name": "_round", - "type": "uint256" - }, - { - "internalType": "bytes", - "name": "_blockhash1", - "type": "bytes" - }, - { - "internalType": "bytes", - "name": "_signature1", - "type": "bytes" - }, - { - "internalType": "bytes", - "name": "_blockhash2", - "type": "bytes" - }, - { - "internalType": "bytes", - "name": "_signature2", - "type": "bytes" - } - ], - "name": "slashDuplicatePrecommit", - "outputs": [], - "payable": false, - "stateMutability": "nonpayable", - "type": "function" - }, - { - "constant": false, - "inputs": [ - { - "internalType": "uint256", - "name": "_height", - "type": "uint256" - }, - { - "internalType": "uint256", - "name": "_round", - "type": "uint256" - }, - { - "internalType": "bytes", - "name": "_blockhash1", - "type": "bytes" - }, - { - "internalType": "bytes", - "name": "_signature1", - "type": "bytes" - }, - { - "internalType": "bytes", - "name": "_blockhash2", - "type": "bytes" - }, - { - "internalType": "bytes", - "name": "_signature2", - "type": "bytes" - } - ], - "name": "slashDuplicatePrevote", - "outputs": [], - "payable": false, - "stateMutability": "nonpayable", - "type": "function" - }, - { - "constant": false, - "inputs": [ - { - "internalType": "uint256", - "name": "_height", - "type": "uint256" - }, - { - "internalType": "uint256", - "name": "_round", - "type": "uint256" - }, - { - "internalType": "bytes", - "name": "_blockhash1", - "type": "bytes" - }, - { - "internalType": "uint256", - "name": "_validRound1", - "type": "uint256" - }, - { - "internalType": "bytes", - "name": "_signature1", - "type": "bytes" - }, - { - "internalType": "bytes", - "name": "_blockhash2", - "type": "bytes" - }, - { - "internalType": "uint256", - "name": "_validRound2", - "type": "uint256" - }, - { - "internalType": "bytes", - "name": "_signature2", - "type": "bytes" - } - ], - "name": "slashDuplicatePropose", - "outputs": [], - "payable": false, - "stateMutability": "nonpayable", - "type": "function" - }, - { - "constant": false, - "inputs": [ - { - "internalType": "uint256", - "name": "_a", - "type": "uint256" - }, - { - "internalType": "uint256", - "name": "_b", - "type": "uint256" - }, - { - "internalType": "uint256", - "name": "_c", - "type": "uint256" - }, - { - "internalType": "uint256", - "name": "_d", - "type": "uint256" - }, - { - "internalType": "uint256", - "name": "_e", - "type": "uint256" - }, - { - "internalType": "uint256", - "name": "_f", - "type": "uint256" - }, - { - "internalType": "bytes", - "name": "_signature", - "type": "bytes" - } - ], - "name": "slashSecretReveal", - "outputs": [], - "payable": false, - "stateMutability": "nonpayable", - "type": "function" - }, - { - "constant": true, - "inputs": [ - { - "internalType": "uint256", - "name": "", - "type": "uint256" - }, - { - "internalType": "uint256", - "name": "", - "type": "uint256" - }, - { - "internalType": "address", - "name": "", - "type": "address" - } - ], - "name": "slashed", - "outputs": [ - { - "internalType": "bool", - "name": "", - "type": "bool" - } - ], - "payable": false, - "stateMutability": "view", - "type": "function" - }, - { - "constant": false, - "inputs": [ - { - "internalType": "address", - "name": "newOwner", - "type": "address" - } - ], - "name": "transferOwnership", - "outputs": [], - "payable": false, - "stateMutability": "nonpayable", - "type": "function" - }, - { - "constant": false, - "inputs": [ - { - "internalType": "contract DarknodeRegistryLogicV1", - "name": "_darknodeRegistry", - "type": "address" - } - ], - "name": "updateDarknodeRegistry", - "outputs": [], - "payable": false, - "stateMutability": "nonpayable", - "type": "function" - } - ], - "sourcePath": "~/github/renproject/ren-sol/contracts/DarknodeSlasher/DarknodeSlasher.sol", - "compiler": { - "name": "solc", - "version": "0.5.16+commit.9c3226ce.Emscripten.clang" - }, - "networks": { - "42": { - "events": { - "0xf9f6dd5c784f63cc27c1079c73574a73485a6c2e7f7e2181c5eb2be8c693cfb7": { - "anonymous": false, - "inputs": [ - { - "indexed": true, - "internalType": "contract DarknodeRegistryLogicV1", - "name": "_previousDarknodeRegistry", - "type": "address" - }, - { - "indexed": true, - "internalType": "contract DarknodeRegistryLogicV1", - "name": "_nextDarknodeRegistry", - "type": "address" - } - ], - "name": "LogDarknodeRegistryUpdated", - "type": "event" - }, - "0x8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0": { - "anonymous": false, - "inputs": [ - { - "indexed": true, - "internalType": "address", - "name": "previousOwner", - "type": "address" - }, - { - "indexed": true, - "internalType": "address", - "name": "newOwner", - "type": "address" - } - ], - "name": "OwnershipTransferred", - "type": "event" - } - }, - "links": {}, - "address": "0xf4E4AdbDDfd6EBc9457ad7ab9249f63701942BE3", - "transactionHash": "0x90d5073a4b448075a93399bdc7352d2feff1b39c4a10b95659a3db4a8acf78df" - } - }, - "schemaVersion": "3.0.23" -} \ No newline at end of file diff --git a/build/devnet/GatewayLogicV1.json b/build/devnet/GatewayLogicV1.json deleted file mode 100644 index ae80397e..00000000 --- a/build/devnet/GatewayLogicV1.json +++ /dev/null @@ -1,720 +0,0 @@ -{ - "contractName": "GatewayLogicV1", - "abi": [ - { - "anonymous": false, - "inputs": [ - { - "indexed": false, - "internalType": "bytes", - "name": "_to", - "type": "bytes" - }, - { - "indexed": false, - "internalType": "uint256", - "name": "_amount", - "type": "uint256" - }, - { - "indexed": true, - "internalType": "uint256", - "name": "_n", - "type": "uint256" - }, - { - "indexed": true, - "internalType": "bytes", - "name": "_indexedTo", - "type": "bytes" - } - ], - "name": "LogBurn", - "type": "event" - }, - { - "anonymous": false, - "inputs": [ - { - "indexed": true, - "internalType": "address", - "name": "_to", - "type": "address" - }, - { - "indexed": false, - "internalType": "uint256", - "name": "_amount", - "type": "uint256" - }, - { - "indexed": true, - "internalType": "uint256", - "name": "_n", - "type": "uint256" - }, - { - "indexed": true, - "internalType": "bytes32", - "name": "_signedMessageHash", - "type": "bytes32" - } - ], - "name": "LogMint", - "type": "event" - }, - { - "anonymous": false, - "inputs": [ - { - "indexed": true, - "internalType": "address", - "name": "_newMintAuthority", - "type": "address" - } - ], - "name": "LogMintAuthorityUpdated", - "type": "event" - }, - { - "anonymous": false, - "inputs": [ - { - "indexed": true, - "internalType": "address", - "name": "previousOwner", - "type": "address" - }, - { - "indexed": true, - "internalType": "address", - "name": "newOwner", - "type": "address" - } - ], - "name": "OwnershipTransferred", - "type": "event" - }, - { - "constant": false, - "inputs": [ - { - "internalType": "address", - "name": "_token", - "type": "address" - } - ], - "name": "blacklistRecoverableToken", - "outputs": [], - "payable": false, - "stateMutability": "nonpayable", - "type": "function" - }, - { - "constant": false, - "inputs": [ - { - "internalType": "bytes", - "name": "_to", - "type": "bytes" - }, - { - "internalType": "uint256", - "name": "_amount", - "type": "uint256" - } - ], - "name": "burn", - "outputs": [ - { - "internalType": "uint256", - "name": "", - "type": "uint256" - } - ], - "payable": false, - "stateMutability": "nonpayable", - "type": "function" - }, - { - "constant": true, - "inputs": [], - "name": "burnFee", - "outputs": [ - { - "internalType": "uint16", - "name": "", - "type": "uint16" - } - ], - "payable": false, - "stateMutability": "view", - "type": "function" - }, - { - "constant": false, - "inputs": [], - "name": "claimOwnership", - "outputs": [], - "payable": false, - "stateMutability": "nonpayable", - "type": "function" - }, - { - "constant": false, - "inputs": [], - "name": "claimTokenOwnership", - "outputs": [], - "payable": false, - "stateMutability": "nonpayable", - "type": "function" - }, - { - "constant": true, - "inputs": [], - "name": "feeRecipient", - "outputs": [ - { - "internalType": "address", - "name": "", - "type": "address" - } - ], - "payable": false, - "stateMutability": "view", - "type": "function" - }, - { - "constant": true, - "inputs": [ - { - "internalType": "bytes32", - "name": "_pHash", - "type": "bytes32" - }, - { - "internalType": "uint256", - "name": "_amount", - "type": "uint256" - }, - { - "internalType": "address", - "name": "_to", - "type": "address" - }, - { - "internalType": "bytes32", - "name": "_nHash", - "type": "bytes32" - } - ], - "name": "hashForSignature", - "outputs": [ - { - "internalType": "bytes32", - "name": "", - "type": "bytes32" - } - ], - "payable": false, - "stateMutability": "view", - "type": "function" - }, - { - "constant": false, - "inputs": [ - { - "internalType": "contract RenERC20LogicV1", - "name": "_token", - "type": "address" - }, - { - "internalType": "address", - "name": "_feeRecipient", - "type": "address" - }, - { - "internalType": "address", - "name": "_mintAuthority", - "type": "address" - }, - { - "internalType": "uint16", - "name": "_mintFee", - "type": "uint16" - }, - { - "internalType": "uint16", - "name": "_burnFee", - "type": "uint16" - }, - { - "internalType": "uint256", - "name": "_minimumBurnAmount", - "type": "uint256" - } - ], - "name": "initialize", - "outputs": [], - "payable": false, - "stateMutability": "nonpayable", - "type": "function" - }, - { - "constant": false, - "inputs": [ - { - "internalType": "address", - "name": "_nextOwner", - "type": "address" - } - ], - "name": "initialize", - "outputs": [], - "payable": false, - "stateMutability": "nonpayable", - "type": "function" - }, - { - "constant": true, - "inputs": [], - "name": "isOwner", - "outputs": [ - { - "internalType": "bool", - "name": "", - "type": "bool" - } - ], - "payable": false, - "stateMutability": "view", - "type": "function" - }, - { - "constant": true, - "inputs": [], - "name": "minimumBurnAmount", - "outputs": [ - { - "internalType": "uint256", - "name": "", - "type": "uint256" - } - ], - "payable": false, - "stateMutability": "view", - "type": "function" - }, - { - "constant": false, - "inputs": [ - { - "internalType": "bytes32", - "name": "_pHash", - "type": "bytes32" - }, - { - "internalType": "uint256", - "name": "_amountUnderlying", - "type": "uint256" - }, - { - "internalType": "bytes32", - "name": "_nHash", - "type": "bytes32" - }, - { - "internalType": "bytes", - "name": "_sig", - "type": "bytes" - } - ], - "name": "mint", - "outputs": [ - { - "internalType": "uint256", - "name": "", - "type": "uint256" - } - ], - "payable": false, - "stateMutability": "nonpayable", - "type": "function" - }, - { - "constant": true, - "inputs": [], - "name": "mintAuthority", - "outputs": [ - { - "internalType": "address", - "name": "", - "type": "address" - } - ], - "payable": false, - "stateMutability": "view", - "type": "function" - }, - { - "constant": true, - "inputs": [], - "name": "mintFee", - "outputs": [ - { - "internalType": "uint16", - "name": "", - "type": "uint16" - } - ], - "payable": false, - "stateMutability": "view", - "type": "function" - }, - { - "constant": true, - "inputs": [], - "name": "nextN", - "outputs": [ - { - "internalType": "uint256", - "name": "", - "type": "uint256" - } - ], - "payable": false, - "stateMutability": "view", - "type": "function" - }, - { - "constant": true, - "inputs": [], - "name": "owner", - "outputs": [ - { - "internalType": "address", - "name": "", - "type": "address" - } - ], - "payable": false, - "stateMutability": "view", - "type": "function" - }, - { - "constant": true, - "inputs": [], - "name": "pendingOwner", - "outputs": [ - { - "internalType": "address", - "name": "", - "type": "address" - } - ], - "payable": false, - "stateMutability": "view", - "type": "function" - }, - { - "constant": false, - "inputs": [ - { - "internalType": "address", - "name": "_token", - "type": "address" - } - ], - "name": "recoverTokens", - "outputs": [], - "payable": false, - "stateMutability": "nonpayable", - "type": "function" - }, - { - "constant": false, - "inputs": [], - "name": "renounceOwnership", - "outputs": [], - "payable": false, - "stateMutability": "nonpayable", - "type": "function" - }, - { - "constant": true, - "inputs": [ - { - "internalType": "bytes32", - "name": "", - "type": "bytes32" - } - ], - "name": "status", - "outputs": [ - { - "internalType": "bool", - "name": "", - "type": "bool" - } - ], - "payable": false, - "stateMutability": "view", - "type": "function" - }, - { - "constant": true, - "inputs": [], - "name": "token", - "outputs": [ - { - "internalType": "contract RenERC20LogicV1", - "name": "", - "type": "address" - } - ], - "payable": false, - "stateMutability": "view", - "type": "function" - }, - { - "constant": false, - "inputs": [ - { - "internalType": "address", - "name": "newOwner", - "type": "address" - } - ], - "name": "transferOwnership", - "outputs": [], - "payable": false, - "stateMutability": "nonpayable", - "type": "function" - }, - { - "constant": false, - "inputs": [ - { - "internalType": "contract GatewayLogicV1", - "name": "_nextTokenOwner", - "type": "address" - } - ], - "name": "transferTokenOwnership", - "outputs": [], - "payable": false, - "stateMutability": "nonpayable", - "type": "function" - }, - { - "constant": false, - "inputs": [ - { - "internalType": "uint16", - "name": "_nextBurnFee", - "type": "uint16" - } - ], - "name": "updateBurnFee", - "outputs": [], - "payable": false, - "stateMutability": "nonpayable", - "type": "function" - }, - { - "constant": false, - "inputs": [ - { - "internalType": "address", - "name": "_nextFeeRecipient", - "type": "address" - } - ], - "name": "updateFeeRecipient", - "outputs": [], - "payable": false, - "stateMutability": "nonpayable", - "type": "function" - }, - { - "constant": false, - "inputs": [ - { - "internalType": "uint256", - "name": "_minimumBurnAmount", - "type": "uint256" - } - ], - "name": "updateMinimumBurnAmount", - "outputs": [], - "payable": false, - "stateMutability": "nonpayable", - "type": "function" - }, - { - "constant": false, - "inputs": [ - { - "internalType": "address", - "name": "_nextMintAuthority", - "type": "address" - } - ], - "name": "updateMintAuthority", - "outputs": [], - "payable": false, - "stateMutability": "nonpayable", - "type": "function" - }, - { - "constant": false, - "inputs": [ - { - "internalType": "uint16", - "name": "_nextMintFee", - "type": "uint16" - } - ], - "name": "updateMintFee", - "outputs": [], - "payable": false, - "stateMutability": "nonpayable", - "type": "function" - }, - { - "constant": true, - "inputs": [ - { - "internalType": "bytes32", - "name": "_signedMessageHash", - "type": "bytes32" - }, - { - "internalType": "bytes", - "name": "_sig", - "type": "bytes" - } - ], - "name": "verifySignature", - "outputs": [ - { - "internalType": "bool", - "name": "", - "type": "bool" - } - ], - "payable": false, - "stateMutability": "view", - "type": "function" - } - ], - "sourcePath": "~/github/renproject/ren-sol/contracts/Gateway/Gateway.sol", - "compiler": { - "name": "solc", - "version": "0.5.16+commit.9c3226ce.Emscripten.clang" - }, - "networks": { - "42": { - "events": { - "0x1619fc95050ffb8c94c9077c82b3e1ebbf8d571b6234241c55ba0aaf40da019e": { - "anonymous": false, - "inputs": [ - { - "indexed": false, - "internalType": "bytes", - "name": "_to", - "type": "bytes" - }, - { - "indexed": false, - "internalType": "uint256", - "name": "_amount", - "type": "uint256" - }, - { - "indexed": true, - "internalType": "uint256", - "name": "_n", - "type": "uint256" - }, - { - "indexed": true, - "internalType": "bytes", - "name": "_indexedTo", - "type": "bytes" - } - ], - "name": "LogBurn", - "type": "event" - }, - "0xa58ba939eb08dab7eaf8ad09c16e7405ee88e5153e15da62d5481296a9f727fa": { - "anonymous": false, - "inputs": [ - { - "indexed": true, - "internalType": "address", - "name": "_to", - "type": "address" - }, - { - "indexed": false, - "internalType": "uint256", - "name": "_amount", - "type": "uint256" - }, - { - "indexed": true, - "internalType": "uint256", - "name": "_n", - "type": "uint256" - }, - { - "indexed": true, - "internalType": "bytes32", - "name": "_signedMessageHash", - "type": "bytes32" - } - ], - "name": "LogMint", - "type": "event" - }, - "0x8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0": { - "anonymous": false, - "inputs": [ - { - "indexed": true, - "internalType": "address", - "name": "previousOwner", - "type": "address" - }, - { - "indexed": true, - "internalType": "address", - "name": "newOwner", - "type": "address" - } - ], - "name": "OwnershipTransferred", - "type": "event" - }, - "0xf0f08e606c1dd3a2c220ada53422fd9fe0aa75614b27db0549f649de3ad2072a": { - "anonymous": false, - "inputs": [ - { - "indexed": true, - "internalType": "address", - "name": "_newMintAuthority", - "type": "address" - } - ], - "name": "LogMintAuthorityUpdated", - "type": "event" - } - }, - "links": {}, - "address": "0xcADcCC772991d8c49c6242604d334f8a0B07A039", - "transactionHash": "0xa43a8cfe4915ad5d5eb1da76e3d3a1112ffd98e23368bd06971ceba2f4e8a7de" - } - }, - "schemaVersion": "3.0.23" -} \ No newline at end of file diff --git a/build/devnet/GatewayRegistry.json b/build/devnet/GatewayRegistry.json deleted file mode 100644 index 9868a2bc..00000000 --- a/build/devnet/GatewayRegistry.json +++ /dev/null @@ -1,557 +0,0 @@ -{ - "contractName": "GatewayRegistry", - "abi": [ - { - "inputs": [], - "payable": false, - "stateMutability": "nonpayable", - "type": "constructor" - }, - { - "anonymous": false, - "inputs": [ - { - "indexed": false, - "internalType": "string", - "name": "_symbol", - "type": "string" - }, - { - "indexed": true, - "internalType": "string", - "name": "_indexedSymbol", - "type": "string" - }, - { - "indexed": true, - "internalType": "address", - "name": "_token", - "type": "address" - }, - { - "indexed": true, - "internalType": "address", - "name": "_gatewayContract", - "type": "address" - } - ], - "name": "LogGatewayDeregistered", - "type": "event" - }, - { - "anonymous": false, - "inputs": [ - { - "indexed": false, - "internalType": "string", - "name": "_symbol", - "type": "string" - }, - { - "indexed": true, - "internalType": "string", - "name": "_indexedSymbol", - "type": "string" - }, - { - "indexed": true, - "internalType": "address", - "name": "_token", - "type": "address" - }, - { - "indexed": true, - "internalType": "address", - "name": "_gatewayContract", - "type": "address" - } - ], - "name": "LogGatewayRegistered", - "type": "event" - }, - { - "anonymous": false, - "inputs": [ - { - "indexed": true, - "internalType": "address", - "name": "_token", - "type": "address" - }, - { - "indexed": true, - "internalType": "address", - "name": "_currentGatewayContract", - "type": "address" - }, - { - "indexed": true, - "internalType": "address", - "name": "_newGatewayContract", - "type": "address" - } - ], - "name": "LogGatewayUpdated", - "type": "event" - }, - { - "anonymous": false, - "inputs": [ - { - "indexed": true, - "internalType": "address", - "name": "previousOwner", - "type": "address" - }, - { - "indexed": true, - "internalType": "address", - "name": "newOwner", - "type": "address" - } - ], - "name": "OwnershipTransferred", - "type": "event" - }, - { - "constant": false, - "inputs": [ - { - "internalType": "address", - "name": "_token", - "type": "address" - } - ], - "name": "blacklistRecoverableToken", - "outputs": [], - "payable": false, - "stateMutability": "nonpayable", - "type": "function" - }, - { - "constant": false, - "inputs": [], - "name": "claimOwnership", - "outputs": [], - "payable": false, - "stateMutability": "nonpayable", - "type": "function" - }, - { - "constant": true, - "inputs": [ - { - "internalType": "string", - "name": "_tokenSymbol", - "type": "string" - } - ], - "name": "getGatewayBySymbol", - "outputs": [ - { - "internalType": "contract IGateway", - "name": "", - "type": "address" - } - ], - "payable": false, - "stateMutability": "view", - "type": "function" - }, - { - "constant": true, - "inputs": [ - { - "internalType": "address", - "name": "_token", - "type": "address" - } - ], - "name": "getGatewayByToken", - "outputs": [ - { - "internalType": "contract IGateway", - "name": "", - "type": "address" - } - ], - "payable": false, - "stateMutability": "view", - "type": "function" - }, - { - "constant": true, - "inputs": [ - { - "internalType": "address", - "name": "_start", - "type": "address" - }, - { - "internalType": "uint256", - "name": "_count", - "type": "uint256" - } - ], - "name": "getGateways", - "outputs": [ - { - "internalType": "address[]", - "name": "", - "type": "address[]" - } - ], - "payable": false, - "stateMutability": "view", - "type": "function" - }, - { - "constant": true, - "inputs": [ - { - "internalType": "address", - "name": "_start", - "type": "address" - }, - { - "internalType": "uint256", - "name": "_count", - "type": "uint256" - } - ], - "name": "getRenTokens", - "outputs": [ - { - "internalType": "address[]", - "name": "", - "type": "address[]" - } - ], - "payable": false, - "stateMutability": "view", - "type": "function" - }, - { - "constant": true, - "inputs": [ - { - "internalType": "string", - "name": "_tokenSymbol", - "type": "string" - } - ], - "name": "getTokenBySymbol", - "outputs": [ - { - "internalType": "contract IERC20", - "name": "", - "type": "address" - } - ], - "payable": false, - "stateMutability": "view", - "type": "function" - }, - { - "constant": false, - "inputs": [ - { - "internalType": "address", - "name": "_nextOwner", - "type": "address" - } - ], - "name": "initialize", - "outputs": [], - "payable": false, - "stateMutability": "nonpayable", - "type": "function" - }, - { - "constant": true, - "inputs": [], - "name": "isOwner", - "outputs": [ - { - "internalType": "bool", - "name": "", - "type": "bool" - } - ], - "payable": false, - "stateMutability": "view", - "type": "function" - }, - { - "constant": true, - "inputs": [], - "name": "owner", - "outputs": [ - { - "internalType": "address", - "name": "", - "type": "address" - } - ], - "payable": false, - "stateMutability": "view", - "type": "function" - }, - { - "constant": true, - "inputs": [], - "name": "pendingOwner", - "outputs": [ - { - "internalType": "address", - "name": "", - "type": "address" - } - ], - "payable": false, - "stateMutability": "view", - "type": "function" - }, - { - "constant": false, - "inputs": [ - { - "internalType": "address", - "name": "_token", - "type": "address" - } - ], - "name": "recoverTokens", - "outputs": [], - "payable": false, - "stateMutability": "nonpayable", - "type": "function" - }, - { - "constant": false, - "inputs": [ - { - "internalType": "string", - "name": "_symbol", - "type": "string" - } - ], - "name": "removeGateway", - "outputs": [], - "payable": false, - "stateMutability": "nonpayable", - "type": "function" - }, - { - "constant": false, - "inputs": [], - "name": "renounceOwnership", - "outputs": [], - "payable": false, - "stateMutability": "nonpayable", - "type": "function" - }, - { - "constant": false, - "inputs": [ - { - "internalType": "string", - "name": "_symbol", - "type": "string" - }, - { - "internalType": "address", - "name": "_token", - "type": "address" - }, - { - "internalType": "address", - "name": "_gatewayContract", - "type": "address" - } - ], - "name": "setGateway", - "outputs": [], - "payable": false, - "stateMutability": "nonpayable", - "type": "function" - }, - { - "constant": true, - "inputs": [ - { - "internalType": "string", - "name": "_tokenSymbol", - "type": "string" - } - ], - "name": "symbolIsValid", - "outputs": [ - { - "internalType": "bool", - "name": "", - "type": "bool" - } - ], - "payable": false, - "stateMutability": "pure", - "type": "function" - }, - { - "constant": false, - "inputs": [ - { - "internalType": "address", - "name": "newOwner", - "type": "address" - } - ], - "name": "transferOwnership", - "outputs": [], - "payable": false, - "stateMutability": "nonpayable", - "type": "function" - }, - { - "constant": false, - "inputs": [ - { - "internalType": "address", - "name": "_token", - "type": "address" - }, - { - "internalType": "address", - "name": "_newGatewayContract", - "type": "address" - } - ], - "name": "updateGateway", - "outputs": [], - "payable": false, - "stateMutability": "nonpayable", - "type": "function" - } - ], - "sourcePath": "~/github/renproject/ren-sol/contracts/Gateway/GatewayRegistry.sol", - "compiler": { - "name": "solc", - "version": "0.5.16+commit.9c3226ce.Emscripten.clang" - }, - "networks": { - "42": { - "events": { - "0xea98e49727cf7c3a8c3926a036a6d41047c9b766d9109f22962950f37a2094aa": { - "anonymous": false, - "inputs": [ - { - "indexed": false, - "internalType": "string", - "name": "_symbol", - "type": "string" - }, - { - "indexed": true, - "internalType": "string", - "name": "_indexedSymbol", - "type": "string" - }, - { - "indexed": true, - "internalType": "address", - "name": "_token", - "type": "address" - }, - { - "indexed": true, - "internalType": "address", - "name": "_gatewayContract", - "type": "address" - } - ], - "name": "LogGatewayDeregistered", - "type": "event" - }, - "0xd433aae9ea620c1976ff88f75c629f477dbffe6bf277edad8a31c983117ab32a": { - "anonymous": false, - "inputs": [ - { - "indexed": false, - "internalType": "string", - "name": "_symbol", - "type": "string" - }, - { - "indexed": true, - "internalType": "string", - "name": "_indexedSymbol", - "type": "string" - }, - { - "indexed": true, - "internalType": "address", - "name": "_token", - "type": "address" - }, - { - "indexed": true, - "internalType": "address", - "name": "_gatewayContract", - "type": "address" - } - ], - "name": "LogGatewayRegistered", - "type": "event" - }, - "0x2dc9e208c924a5b14066ecb7121b371da427e696ad69456ed07a52cd2a710d99": { - "anonymous": false, - "inputs": [ - { - "indexed": true, - "internalType": "address", - "name": "_token", - "type": "address" - }, - { - "indexed": true, - "internalType": "address", - "name": "_currentGatewayContract", - "type": "address" - }, - { - "indexed": true, - "internalType": "address", - "name": "_newGatewayContract", - "type": "address" - } - ], - "name": "LogGatewayUpdated", - "type": "event" - }, - "0x8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0": { - "anonymous": false, - "inputs": [ - { - "indexed": true, - "internalType": "address", - "name": "previousOwner", - "type": "address" - }, - { - "indexed": true, - "internalType": "address", - "name": "newOwner", - "type": "address" - } - ], - "name": "OwnershipTransferred", - "type": "event" - } - }, - "links": {}, - "address": "0x5F051E588f39D95bc6c1742f6FA98B103aa0E5c8", - "transactionHash": "0x4bfcb638efe6e5fffa5faff18aee30bcf024dc16631fe3aa8f54507156ab53c8" - } - }, - "schemaVersion": "3.0.23" -} \ No newline at end of file diff --git a/build/devnet/ProtocolLogicV1.json b/build/devnet/ProtocolLogicV1.json deleted file mode 100644 index c0d283dc..00000000 --- a/build/devnet/ProtocolLogicV1.json +++ /dev/null @@ -1,575 +0,0 @@ -{ - "contractName": "ProtocolLogicV1", - "abi": [ - { - "anonymous": false, - "inputs": [ - { - "indexed": false, - "internalType": "string", - "name": "_symbol", - "type": "string" - }, - { - "indexed": true, - "internalType": "string", - "name": "_indexedSymbol", - "type": "string" - }, - { - "indexed": true, - "internalType": "address", - "name": "_tokenAddress", - "type": "address" - }, - { - "indexed": true, - "internalType": "address", - "name": "_gatewayAddress", - "type": "address" - } - ], - "name": "LogGatewayDeregistered", - "type": "event" - }, - { - "anonymous": false, - "inputs": [ - { - "indexed": false, - "internalType": "string", - "name": "_symbol", - "type": "string" - }, - { - "indexed": true, - "internalType": "string", - "name": "_indexedSymbol", - "type": "string" - }, - { - "indexed": true, - "internalType": "address", - "name": "_tokenAddress", - "type": "address" - }, - { - "indexed": true, - "internalType": "address", - "name": "_gatewayAddress", - "type": "address" - } - ], - "name": "LogGatewayRegistered", - "type": "event" - }, - { - "anonymous": false, - "inputs": [ - { - "indexed": true, - "internalType": "address", - "name": "_tokenAddress", - "type": "address" - }, - { - "indexed": true, - "internalType": "address", - "name": "_currentGatewayAddress", - "type": "address" - }, - { - "indexed": true, - "internalType": "address", - "name": "_newGatewayAddress", - "type": "address" - } - ], - "name": "LogGatewayUpdated", - "type": "event" - }, - { - "anonymous": false, - "inputs": [ - { - "indexed": true, - "internalType": "address", - "name": "previousOwner", - "type": "address" - }, - { - "indexed": true, - "internalType": "address", - "name": "newOwner", - "type": "address" - } - ], - "name": "OwnershipTransferred", - "type": "event" - }, - { - "constant": false, - "inputs": [ - { - "internalType": "contract DarknodeRegistryLogicV1", - "name": "_newDarknodeRegistry", - "type": "address" - } - ], - "name": "_updateDarknodeRegistry", - "outputs": [], - "payable": false, - "stateMutability": "nonpayable", - "type": "function" - }, - { - "constant": false, - "inputs": [ - { - "internalType": "contract GatewayRegistry", - "name": "_newGatewayRegistry", - "type": "address" - } - ], - "name": "_updateGatewayRegistry", - "outputs": [], - "payable": false, - "stateMutability": "nonpayable", - "type": "function" - }, - { - "constant": false, - "inputs": [], - "name": "claimOwnership", - "outputs": [], - "payable": false, - "stateMutability": "nonpayable", - "type": "function" - }, - { - "constant": true, - "inputs": [], - "name": "darknodePayment", - "outputs": [ - { - "internalType": "contract DarknodePayment", - "name": "", - "type": "address" - } - ], - "payable": false, - "stateMutability": "view", - "type": "function" - }, - { - "constant": true, - "inputs": [], - "name": "darknodePaymentStore", - "outputs": [ - { - "internalType": "contract DarknodePaymentStore", - "name": "", - "type": "address" - } - ], - "payable": false, - "stateMutability": "view", - "type": "function" - }, - { - "constant": true, - "inputs": [], - "name": "darknodeRegistry", - "outputs": [ - { - "internalType": "contract DarknodeRegistryLogicV1", - "name": "", - "type": "address" - } - ], - "payable": false, - "stateMutability": "view", - "type": "function" - }, - { - "constant": true, - "inputs": [], - "name": "darknodeRegistryStore", - "outputs": [ - { - "internalType": "contract DarknodeRegistryStore", - "name": "", - "type": "address" - } - ], - "payable": false, - "stateMutability": "view", - "type": "function" - }, - { - "constant": true, - "inputs": [], - "name": "darknodeSlasher", - "outputs": [ - { - "internalType": "contract DarknodeSlasher", - "name": "", - "type": "address" - } - ], - "payable": false, - "stateMutability": "view", - "type": "function" - }, - { - "constant": true, - "inputs": [], - "name": "gatewayRegistry", - "outputs": [ - { - "internalType": "contract GatewayRegistry", - "name": "", - "type": "address" - } - ], - "payable": false, - "stateMutability": "view", - "type": "function" - }, - { - "constant": true, - "inputs": [ - { - "internalType": "string", - "name": "_tokenSymbol", - "type": "string" - } - ], - "name": "getGatewayBySymbol", - "outputs": [ - { - "internalType": "contract IGateway", - "name": "", - "type": "address" - } - ], - "payable": false, - "stateMutability": "view", - "type": "function" - }, - { - "constant": true, - "inputs": [ - { - "internalType": "address", - "name": "_tokenAddress", - "type": "address" - } - ], - "name": "getGatewayByToken", - "outputs": [ - { - "internalType": "contract IGateway", - "name": "", - "type": "address" - } - ], - "payable": false, - "stateMutability": "view", - "type": "function" - }, - { - "constant": true, - "inputs": [ - { - "internalType": "address", - "name": "_start", - "type": "address" - }, - { - "internalType": "uint256", - "name": "_count", - "type": "uint256" - } - ], - "name": "getGateways", - "outputs": [ - { - "internalType": "address[]", - "name": "", - "type": "address[]" - } - ], - "payable": false, - "stateMutability": "view", - "type": "function" - }, - { - "constant": true, - "inputs": [ - { - "internalType": "address", - "name": "_start", - "type": "address" - }, - { - "internalType": "uint256", - "name": "_count", - "type": "uint256" - } - ], - "name": "getRenTokens", - "outputs": [ - { - "internalType": "address[]", - "name": "", - "type": "address[]" - } - ], - "payable": false, - "stateMutability": "view", - "type": "function" - }, - { - "constant": true, - "inputs": [ - { - "internalType": "string", - "name": "_tokenSymbol", - "type": "string" - } - ], - "name": "getTokenBySymbol", - "outputs": [ - { - "internalType": "contract IERC20", - "name": "", - "type": "address" - } - ], - "payable": false, - "stateMutability": "view", - "type": "function" - }, - { - "constant": false, - "inputs": [ - { - "internalType": "address", - "name": "_nextOwner", - "type": "address" - } - ], - "name": "initialize", - "outputs": [], - "payable": false, - "stateMutability": "nonpayable", - "type": "function" - }, - { - "constant": true, - "inputs": [], - "name": "isOwner", - "outputs": [ - { - "internalType": "bool", - "name": "", - "type": "bool" - } - ], - "payable": false, - "stateMutability": "view", - "type": "function" - }, - { - "constant": true, - "inputs": [], - "name": "owner", - "outputs": [ - { - "internalType": "address", - "name": "", - "type": "address" - } - ], - "payable": false, - "stateMutability": "view", - "type": "function" - }, - { - "constant": true, - "inputs": [], - "name": "pendingOwner", - "outputs": [ - { - "internalType": "address", - "name": "", - "type": "address" - } - ], - "payable": false, - "stateMutability": "view", - "type": "function" - }, - { - "constant": true, - "inputs": [], - "name": "renToken", - "outputs": [ - { - "internalType": "contract RenToken", - "name": "", - "type": "address" - } - ], - "payable": false, - "stateMutability": "view", - "type": "function" - }, - { - "constant": false, - "inputs": [], - "name": "renounceOwnership", - "outputs": [], - "payable": false, - "stateMutability": "nonpayable", - "type": "function" - }, - { - "constant": false, - "inputs": [ - { - "internalType": "address", - "name": "newOwner", - "type": "address" - } - ], - "name": "transferOwnership", - "outputs": [], - "payable": false, - "stateMutability": "nonpayable", - "type": "function" - } - ], - "sourcePath": "~/github/renproject/ren-sol/contracts/Protocol/Protocol.sol", - "compiler": { - "name": "solc", - "version": "0.5.16+commit.9c3226ce.Emscripten.clang" - }, - "networks": { - "42": { - "events": { - "0xea98e49727cf7c3a8c3926a036a6d41047c9b766d9109f22962950f37a2094aa": { - "anonymous": false, - "inputs": [ - { - "indexed": false, - "internalType": "string", - "name": "_symbol", - "type": "string" - }, - { - "indexed": true, - "internalType": "string", - "name": "_indexedSymbol", - "type": "string" - }, - { - "indexed": true, - "internalType": "address", - "name": "_tokenAddress", - "type": "address" - }, - { - "indexed": true, - "internalType": "address", - "name": "_gatewayAddress", - "type": "address" - } - ], - "name": "LogGatewayDeregistered", - "type": "event" - }, - "0xd433aae9ea620c1976ff88f75c629f477dbffe6bf277edad8a31c983117ab32a": { - "anonymous": false, - "inputs": [ - { - "indexed": false, - "internalType": "string", - "name": "_symbol", - "type": "string" - }, - { - "indexed": true, - "internalType": "string", - "name": "_indexedSymbol", - "type": "string" - }, - { - "indexed": true, - "internalType": "address", - "name": "_tokenAddress", - "type": "address" - }, - { - "indexed": true, - "internalType": "address", - "name": "_gatewayAddress", - "type": "address" - } - ], - "name": "LogGatewayRegistered", - "type": "event" - }, - "0x2dc9e208c924a5b14066ecb7121b371da427e696ad69456ed07a52cd2a710d99": { - "anonymous": false, - "inputs": [ - { - "indexed": true, - "internalType": "address", - "name": "_tokenAddress", - "type": "address" - }, - { - "indexed": true, - "internalType": "address", - "name": "_currentGatewayAddress", - "type": "address" - }, - { - "indexed": true, - "internalType": "address", - "name": "_newGatewayAddress", - "type": "address" - } - ], - "name": "LogGatewayUpdated", - "type": "event" - }, - "0x8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0": { - "anonymous": false, - "inputs": [ - { - "indexed": true, - "internalType": "address", - "name": "previousOwner", - "type": "address" - }, - { - "indexed": true, - "internalType": "address", - "name": "newOwner", - "type": "address" - } - ], - "name": "OwnershipTransferred", - "type": "event" - } - }, - "links": {}, - "address": "0x4535CB2f0697e797C534cb0853F25470A9f59037", - "transactionHash": "0xad78c7cd9b195134a1dca017f1a49dbcd02c841adccf9685951897195d69f250" - } - }, - "schemaVersion": "3.0.23" -} \ No newline at end of file diff --git a/build/devnet/ProtocolProxy.json b/build/devnet/ProtocolProxy.json deleted file mode 100644 index c896aa49..00000000 --- a/build/devnet/ProtocolProxy.json +++ /dev/null @@ -1,214 +0,0 @@ -{ - "contractName": "ProtocolProxy", - "abi": [ - { - "anonymous": false, - "inputs": [ - { - "indexed": false, - "internalType": "address", - "name": "previousAdmin", - "type": "address" - }, - { - "indexed": false, - "internalType": "address", - "name": "newAdmin", - "type": "address" - } - ], - "name": "AdminChanged", - "type": "event" - }, - { - "anonymous": false, - "inputs": [ - { - "indexed": true, - "internalType": "address", - "name": "implementation", - "type": "address" - } - ], - "name": "Upgraded", - "type": "event" - }, - { - "payable": true, - "stateMutability": "payable", - "type": "fallback" - }, - { - "constant": false, - "inputs": [], - "name": "admin", - "outputs": [ - { - "internalType": "address", - "name": "", - "type": "address" - } - ], - "payable": false, - "stateMutability": "nonpayable", - "type": "function" - }, - { - "constant": false, - "inputs": [ - { - "internalType": "address", - "name": "newAdmin", - "type": "address" - } - ], - "name": "changeAdmin", - "outputs": [], - "payable": false, - "stateMutability": "nonpayable", - "type": "function" - }, - { - "constant": false, - "inputs": [], - "name": "implementation", - "outputs": [ - { - "internalType": "address", - "name": "", - "type": "address" - } - ], - "payable": false, - "stateMutability": "nonpayable", - "type": "function" - }, - { - "constant": false, - "inputs": [ - { - "internalType": "address", - "name": "_logic", - "type": "address" - }, - { - "internalType": "address", - "name": "_admin", - "type": "address" - }, - { - "internalType": "bytes", - "name": "_data", - "type": "bytes" - } - ], - "name": "initialize", - "outputs": [], - "payable": true, - "stateMutability": "payable", - "type": "function" - }, - { - "constant": false, - "inputs": [ - { - "internalType": "address", - "name": "_logic", - "type": "address" - }, - { - "internalType": "bytes", - "name": "_data", - "type": "bytes" - } - ], - "name": "initialize", - "outputs": [], - "payable": true, - "stateMutability": "payable", - "type": "function" - }, - { - "constant": false, - "inputs": [ - { - "internalType": "address", - "name": "newImplementation", - "type": "address" - } - ], - "name": "upgradeTo", - "outputs": [], - "payable": false, - "stateMutability": "nonpayable", - "type": "function" - }, - { - "constant": false, - "inputs": [ - { - "internalType": "address", - "name": "newImplementation", - "type": "address" - }, - { - "internalType": "bytes", - "name": "data", - "type": "bytes" - } - ], - "name": "upgradeToAndCall", - "outputs": [], - "payable": true, - "stateMutability": "payable", - "type": "function" - } - ], - "sourcePath": "~/github/renproject/ren-sol/contracts/Protocol/Protocol.sol", - "compiler": { - "name": "solc", - "version": "0.5.16+commit.9c3226ce.Emscripten.clang" - }, - "networks": { - "42": { - "events": { - "0x7e644d79422f17c01e4894b5f4f588d331ebfa28653d42ae832dc59e38c9798f": { - "anonymous": false, - "inputs": [ - { - "indexed": false, - "internalType": "address", - "name": "previousAdmin", - "type": "address" - }, - { - "indexed": false, - "internalType": "address", - "name": "newAdmin", - "type": "address" - } - ], - "name": "AdminChanged", - "type": "event" - }, - "0xbc7cd75a20ee27fd9adebab32041f755214dbc6bffa90cc0225b39da2e5c2d3b": { - "anonymous": false, - "inputs": [ - { - "indexed": true, - "internalType": "address", - "name": "implementation", - "type": "address" - } - ], - "name": "Upgraded", - "type": "event" - } - }, - "links": {}, - "address": "0x5045E727D9D9AcDe1F6DCae52B078EC30dC95455", - "transactionHash": "0x93560fb1c6044ec7969a4c13484b4dbc8df3d83e7ef08dff744325a95ed0300e" - } - }, - "schemaVersion": "3.0.23" -} \ No newline at end of file diff --git a/build/devnet/RenBCH.json b/build/devnet/RenBCH.json deleted file mode 100644 index deb81b3f..00000000 --- a/build/devnet/RenBCH.json +++ /dev/null @@ -1,214 +0,0 @@ -{ - "contractName": "RenBCH", - "abi": [ - { - "anonymous": false, - "inputs": [ - { - "indexed": false, - "internalType": "address", - "name": "previousAdmin", - "type": "address" - }, - { - "indexed": false, - "internalType": "address", - "name": "newAdmin", - "type": "address" - } - ], - "name": "AdminChanged", - "type": "event" - }, - { - "anonymous": false, - "inputs": [ - { - "indexed": true, - "internalType": "address", - "name": "implementation", - "type": "address" - } - ], - "name": "Upgraded", - "type": "event" - }, - { - "payable": true, - "stateMutability": "payable", - "type": "fallback" - }, - { - "constant": false, - "inputs": [], - "name": "admin", - "outputs": [ - { - "internalType": "address", - "name": "", - "type": "address" - } - ], - "payable": false, - "stateMutability": "nonpayable", - "type": "function" - }, - { - "constant": false, - "inputs": [ - { - "internalType": "address", - "name": "newAdmin", - "type": "address" - } - ], - "name": "changeAdmin", - "outputs": [], - "payable": false, - "stateMutability": "nonpayable", - "type": "function" - }, - { - "constant": false, - "inputs": [], - "name": "implementation", - "outputs": [ - { - "internalType": "address", - "name": "", - "type": "address" - } - ], - "payable": false, - "stateMutability": "nonpayable", - "type": "function" - }, - { - "constant": false, - "inputs": [ - { - "internalType": "address", - "name": "_logic", - "type": "address" - }, - { - "internalType": "address", - "name": "_admin", - "type": "address" - }, - { - "internalType": "bytes", - "name": "_data", - "type": "bytes" - } - ], - "name": "initialize", - "outputs": [], - "payable": true, - "stateMutability": "payable", - "type": "function" - }, - { - "constant": false, - "inputs": [ - { - "internalType": "address", - "name": "_logic", - "type": "address" - }, - { - "internalType": "bytes", - "name": "_data", - "type": "bytes" - } - ], - "name": "initialize", - "outputs": [], - "payable": true, - "stateMutability": "payable", - "type": "function" - }, - { - "constant": false, - "inputs": [ - { - "internalType": "address", - "name": "newImplementation", - "type": "address" - } - ], - "name": "upgradeTo", - "outputs": [], - "payable": false, - "stateMutability": "nonpayable", - "type": "function" - }, - { - "constant": false, - "inputs": [ - { - "internalType": "address", - "name": "newImplementation", - "type": "address" - }, - { - "internalType": "bytes", - "name": "data", - "type": "bytes" - } - ], - "name": "upgradeToAndCall", - "outputs": [], - "payable": true, - "stateMutability": "payable", - "type": "function" - } - ], - "sourcePath": "~/github/renproject/ren-sol/contracts/Gateway/RenERC20.sol", - "compiler": { - "name": "solc", - "version": "0.5.16+commit.9c3226ce.Emscripten.clang" - }, - "networks": { - "42": { - "events": { - "0x7e644d79422f17c01e4894b5f4f588d331ebfa28653d42ae832dc59e38c9798f": { - "anonymous": false, - "inputs": [ - { - "indexed": false, - "internalType": "address", - "name": "previousAdmin", - "type": "address" - }, - { - "indexed": false, - "internalType": "address", - "name": "newAdmin", - "type": "address" - } - ], - "name": "AdminChanged", - "type": "event" - }, - "0xbc7cd75a20ee27fd9adebab32041f755214dbc6bffa90cc0225b39da2e5c2d3b": { - "anonymous": false, - "inputs": [ - { - "indexed": true, - "internalType": "address", - "name": "implementation", - "type": "address" - } - ], - "name": "Upgraded", - "type": "event" - } - }, - "links": {}, - "address": "0x148234809A551c131951bD01640494eecB905b08", - "transactionHash": "0xba4134edc00f6b7a4bf5a470fa96dcde4ca93907b90205d6bc749adddbbe9f43" - } - }, - "schemaVersion": "3.0.23" -} \ No newline at end of file diff --git a/build/devnet/RenBTC.json b/build/devnet/RenBTC.json deleted file mode 100644 index eec520fb..00000000 --- a/build/devnet/RenBTC.json +++ /dev/null @@ -1,214 +0,0 @@ -{ - "contractName": "RenBTC", - "abi": [ - { - "anonymous": false, - "inputs": [ - { - "indexed": false, - "internalType": "address", - "name": "previousAdmin", - "type": "address" - }, - { - "indexed": false, - "internalType": "address", - "name": "newAdmin", - "type": "address" - } - ], - "name": "AdminChanged", - "type": "event" - }, - { - "anonymous": false, - "inputs": [ - { - "indexed": true, - "internalType": "address", - "name": "implementation", - "type": "address" - } - ], - "name": "Upgraded", - "type": "event" - }, - { - "payable": true, - "stateMutability": "payable", - "type": "fallback" - }, - { - "constant": false, - "inputs": [], - "name": "admin", - "outputs": [ - { - "internalType": "address", - "name": "", - "type": "address" - } - ], - "payable": false, - "stateMutability": "nonpayable", - "type": "function" - }, - { - "constant": false, - "inputs": [ - { - "internalType": "address", - "name": "newAdmin", - "type": "address" - } - ], - "name": "changeAdmin", - "outputs": [], - "payable": false, - "stateMutability": "nonpayable", - "type": "function" - }, - { - "constant": false, - "inputs": [], - "name": "implementation", - "outputs": [ - { - "internalType": "address", - "name": "", - "type": "address" - } - ], - "payable": false, - "stateMutability": "nonpayable", - "type": "function" - }, - { - "constant": false, - "inputs": [ - { - "internalType": "address", - "name": "_logic", - "type": "address" - }, - { - "internalType": "address", - "name": "_admin", - "type": "address" - }, - { - "internalType": "bytes", - "name": "_data", - "type": "bytes" - } - ], - "name": "initialize", - "outputs": [], - "payable": true, - "stateMutability": "payable", - "type": "function" - }, - { - "constant": false, - "inputs": [ - { - "internalType": "address", - "name": "_logic", - "type": "address" - }, - { - "internalType": "bytes", - "name": "_data", - "type": "bytes" - } - ], - "name": "initialize", - "outputs": [], - "payable": true, - "stateMutability": "payable", - "type": "function" - }, - { - "constant": false, - "inputs": [ - { - "internalType": "address", - "name": "newImplementation", - "type": "address" - } - ], - "name": "upgradeTo", - "outputs": [], - "payable": false, - "stateMutability": "nonpayable", - "type": "function" - }, - { - "constant": false, - "inputs": [ - { - "internalType": "address", - "name": "newImplementation", - "type": "address" - }, - { - "internalType": "bytes", - "name": "data", - "type": "bytes" - } - ], - "name": "upgradeToAndCall", - "outputs": [], - "payable": true, - "stateMutability": "payable", - "type": "function" - } - ], - "sourcePath": "~/github/renproject/ren-sol/contracts/Gateway/RenERC20.sol", - "compiler": { - "name": "solc", - "version": "0.5.16+commit.9c3226ce.Emscripten.clang" - }, - "networks": { - "42": { - "events": { - "0x7e644d79422f17c01e4894b5f4f588d331ebfa28653d42ae832dc59e38c9798f": { - "anonymous": false, - "inputs": [ - { - "indexed": false, - "internalType": "address", - "name": "previousAdmin", - "type": "address" - }, - { - "indexed": false, - "internalType": "address", - "name": "newAdmin", - "type": "address" - } - ], - "name": "AdminChanged", - "type": "event" - }, - "0xbc7cd75a20ee27fd9adebab32041f755214dbc6bffa90cc0225b39da2e5c2d3b": { - "anonymous": false, - "inputs": [ - { - "indexed": true, - "internalType": "address", - "name": "implementation", - "type": "address" - } - ], - "name": "Upgraded", - "type": "event" - } - }, - "links": {}, - "address": "0x581347fc652f9FCdbCA8372A4f65404C4154e93b", - "transactionHash": "0xa4f04cfe5ea6c61c3cf9bf0d940fe03f8e68bbb2ba06a0bd0aa1541de7e95054" - } - }, - "schemaVersion": "3.0.23" -} \ No newline at end of file diff --git a/build/devnet/RenERC20LogicV1.json b/build/devnet/RenERC20LogicV1.json deleted file mode 100644 index 1bae8943..00000000 --- a/build/devnet/RenERC20LogicV1.json +++ /dev/null @@ -1,938 +0,0 @@ -{ - "contractName": "RenERC20LogicV1", - "abi": [ - { - "anonymous": false, - "inputs": [ - { - "indexed": true, - "internalType": "address", - "name": "owner", - "type": "address" - }, - { - "indexed": true, - "internalType": "address", - "name": "spender", - "type": "address" - }, - { - "indexed": false, - "internalType": "uint256", - "name": "value", - "type": "uint256" - } - ], - "name": "Approval", - "type": "event" - }, - { - "anonymous": false, - "inputs": [ - { - "indexed": true, - "internalType": "uint256", - "name": "_rate", - "type": "uint256" - } - ], - "name": "LogRateChanged", - "type": "event" - }, - { - "anonymous": false, - "inputs": [ - { - "indexed": true, - "internalType": "address", - "name": "previousOwner", - "type": "address" - }, - { - "indexed": true, - "internalType": "address", - "name": "newOwner", - "type": "address" - } - ], - "name": "OwnershipTransferred", - "type": "event" - }, - { - "anonymous": false, - "inputs": [ - { - "indexed": true, - "internalType": "address", - "name": "from", - "type": "address" - }, - { - "indexed": true, - "internalType": "address", - "name": "to", - "type": "address" - }, - { - "indexed": false, - "internalType": "uint256", - "name": "value", - "type": "uint256" - } - ], - "name": "Transfer", - "type": "event" - }, - { - "constant": true, - "inputs": [], - "name": "DOMAIN_SEPARATOR", - "outputs": [ - { - "internalType": "bytes32", - "name": "", - "type": "bytes32" - } - ], - "payable": false, - "stateMutability": "view", - "type": "function" - }, - { - "constant": true, - "inputs": [], - "name": "PERMIT_TYPEHASH", - "outputs": [ - { - "internalType": "bytes32", - "name": "", - "type": "bytes32" - } - ], - "payable": false, - "stateMutability": "view", - "type": "function" - }, - { - "constant": true, - "inputs": [], - "name": "_rateScale", - "outputs": [ - { - "internalType": "uint256", - "name": "", - "type": "uint256" - } - ], - "payable": false, - "stateMutability": "view", - "type": "function" - }, - { - "constant": true, - "inputs": [ - { - "internalType": "address", - "name": "owner", - "type": "address" - }, - { - "internalType": "address", - "name": "spender", - "type": "address" - } - ], - "name": "allowance", - "outputs": [ - { - "internalType": "uint256", - "name": "", - "type": "uint256" - } - ], - "payable": false, - "stateMutability": "view", - "type": "function" - }, - { - "constant": false, - "inputs": [ - { - "internalType": "address", - "name": "spender", - "type": "address" - }, - { - "internalType": "uint256", - "name": "amount", - "type": "uint256" - } - ], - "name": "approve", - "outputs": [ - { - "internalType": "bool", - "name": "", - "type": "bool" - } - ], - "payable": false, - "stateMutability": "nonpayable", - "type": "function" - }, - { - "constant": true, - "inputs": [ - { - "internalType": "address", - "name": "account", - "type": "address" - } - ], - "name": "balanceOf", - "outputs": [ - { - "internalType": "uint256", - "name": "", - "type": "uint256" - } - ], - "payable": false, - "stateMutability": "view", - "type": "function" - }, - { - "constant": true, - "inputs": [ - { - "internalType": "address", - "name": "_account", - "type": "address" - } - ], - "name": "balanceOfUnderlying", - "outputs": [ - { - "internalType": "uint256", - "name": "", - "type": "uint256" - } - ], - "payable": false, - "stateMutability": "view", - "type": "function" - }, - { - "constant": false, - "inputs": [ - { - "internalType": "address", - "name": "_token", - "type": "address" - } - ], - "name": "blacklistRecoverableToken", - "outputs": [], - "payable": false, - "stateMutability": "nonpayable", - "type": "function" - }, - { - "constant": false, - "inputs": [ - { - "internalType": "address", - "name": "_from", - "type": "address" - }, - { - "internalType": "uint256", - "name": "_amount", - "type": "uint256" - } - ], - "name": "burn", - "outputs": [], - "payable": false, - "stateMutability": "nonpayable", - "type": "function" - }, - { - "constant": false, - "inputs": [], - "name": "claimOwnership", - "outputs": [], - "payable": false, - "stateMutability": "nonpayable", - "type": "function" - }, - { - "constant": true, - "inputs": [], - "name": "decimals", - "outputs": [ - { - "internalType": "uint8", - "name": "", - "type": "uint8" - } - ], - "payable": false, - "stateMutability": "view", - "type": "function" - }, - { - "constant": false, - "inputs": [ - { - "internalType": "address", - "name": "spender", - "type": "address" - }, - { - "internalType": "uint256", - "name": "subtractedValue", - "type": "uint256" - } - ], - "name": "decreaseAllowance", - "outputs": [ - { - "internalType": "bool", - "name": "", - "type": "bool" - } - ], - "payable": false, - "stateMutability": "nonpayable", - "type": "function" - }, - { - "constant": true, - "inputs": [], - "name": "exchangeRateCurrent", - "outputs": [ - { - "internalType": "uint256", - "name": "", - "type": "uint256" - } - ], - "payable": false, - "stateMutability": "view", - "type": "function" - }, - { - "constant": true, - "inputs": [ - { - "internalType": "uint256", - "name": "_amountUnderlying", - "type": "uint256" - } - ], - "name": "fromUnderlying", - "outputs": [ - { - "internalType": "uint256", - "name": "", - "type": "uint256" - } - ], - "payable": false, - "stateMutability": "view", - "type": "function" - }, - { - "constant": false, - "inputs": [ - { - "internalType": "address", - "name": "spender", - "type": "address" - }, - { - "internalType": "uint256", - "name": "addedValue", - "type": "uint256" - } - ], - "name": "increaseAllowance", - "outputs": [ - { - "internalType": "bool", - "name": "", - "type": "bool" - } - ], - "payable": false, - "stateMutability": "nonpayable", - "type": "function" - }, - { - "constant": false, - "inputs": [ - { - "internalType": "string", - "name": "name", - "type": "string" - }, - { - "internalType": "string", - "name": "symbol", - "type": "string" - }, - { - "internalType": "uint8", - "name": "decimals", - "type": "uint8" - } - ], - "name": "initialize", - "outputs": [], - "payable": false, - "stateMutability": "nonpayable", - "type": "function" - }, - { - "constant": false, - "inputs": [ - { - "internalType": "uint256", - "name": "_chainId", - "type": "uint256" - }, - { - "internalType": "address", - "name": "_nextOwner", - "type": "address" - }, - { - "internalType": "uint256", - "name": "_initialRate", - "type": "uint256" - }, - { - "internalType": "string", - "name": "_version", - "type": "string" - }, - { - "internalType": "string", - "name": "_name", - "type": "string" - }, - { - "internalType": "string", - "name": "_symbol", - "type": "string" - }, - { - "internalType": "uint8", - "name": "_decimals", - "type": "uint8" - } - ], - "name": "initialize", - "outputs": [], - "payable": false, - "stateMutability": "nonpayable", - "type": "function" - }, - { - "constant": false, - "inputs": [ - { - "internalType": "uint256", - "name": "_chainId", - "type": "uint256" - }, - { - "internalType": "string", - "name": "_version", - "type": "string" - }, - { - "internalType": "string", - "name": "_name", - "type": "string" - }, - { - "internalType": "string", - "name": "_symbol", - "type": "string" - }, - { - "internalType": "uint8", - "name": "_decimals", - "type": "uint8" - } - ], - "name": "initialize", - "outputs": [], - "payable": false, - "stateMutability": "nonpayable", - "type": "function" - }, - { - "constant": false, - "inputs": [ - { - "internalType": "address", - "name": "_nextOwner", - "type": "address" - } - ], - "name": "initialize", - "outputs": [], - "payable": false, - "stateMutability": "nonpayable", - "type": "function" - }, - { - "constant": false, - "inputs": [ - { - "internalType": "address", - "name": "_nextOwner", - "type": "address" - }, - { - "internalType": "uint256", - "name": "_initialRate", - "type": "uint256" - } - ], - "name": "initialize", - "outputs": [], - "payable": false, - "stateMutability": "nonpayable", - "type": "function" - }, - { - "constant": true, - "inputs": [], - "name": "isOwner", - "outputs": [ - { - "internalType": "bool", - "name": "", - "type": "bool" - } - ], - "payable": false, - "stateMutability": "view", - "type": "function" - }, - { - "constant": false, - "inputs": [ - { - "internalType": "address", - "name": "_to", - "type": "address" - }, - { - "internalType": "uint256", - "name": "_amount", - "type": "uint256" - } - ], - "name": "mint", - "outputs": [], - "payable": false, - "stateMutability": "nonpayable", - "type": "function" - }, - { - "constant": true, - "inputs": [], - "name": "name", - "outputs": [ - { - "internalType": "string", - "name": "", - "type": "string" - } - ], - "payable": false, - "stateMutability": "view", - "type": "function" - }, - { - "constant": true, - "inputs": [ - { - "internalType": "address", - "name": "", - "type": "address" - } - ], - "name": "nonces", - "outputs": [ - { - "internalType": "uint256", - "name": "", - "type": "uint256" - } - ], - "payable": false, - "stateMutability": "view", - "type": "function" - }, - { - "constant": true, - "inputs": [], - "name": "owner", - "outputs": [ - { - "internalType": "address", - "name": "", - "type": "address" - } - ], - "payable": false, - "stateMutability": "view", - "type": "function" - }, - { - "constant": true, - "inputs": [], - "name": "pendingOwner", - "outputs": [ - { - "internalType": "address", - "name": "", - "type": "address" - } - ], - "payable": false, - "stateMutability": "view", - "type": "function" - }, - { - "constant": false, - "inputs": [ - { - "internalType": "address", - "name": "holder", - "type": "address" - }, - { - "internalType": "address", - "name": "spender", - "type": "address" - }, - { - "internalType": "uint256", - "name": "nonce", - "type": "uint256" - }, - { - "internalType": "uint256", - "name": "expiry", - "type": "uint256" - }, - { - "internalType": "bool", - "name": "allowed", - "type": "bool" - }, - { - "internalType": "uint8", - "name": "v", - "type": "uint8" - }, - { - "internalType": "bytes32", - "name": "r", - "type": "bytes32" - }, - { - "internalType": "bytes32", - "name": "s", - "type": "bytes32" - } - ], - "name": "permit", - "outputs": [], - "payable": false, - "stateMutability": "nonpayable", - "type": "function" - }, - { - "constant": false, - "inputs": [ - { - "internalType": "address", - "name": "_token", - "type": "address" - } - ], - "name": "recoverTokens", - "outputs": [], - "payable": false, - "stateMutability": "nonpayable", - "type": "function" - }, - { - "constant": false, - "inputs": [], - "name": "renounceOwnership", - "outputs": [], - "payable": false, - "stateMutability": "nonpayable", - "type": "function" - }, - { - "constant": false, - "inputs": [ - { - "internalType": "uint256", - "name": "_nextRate", - "type": "uint256" - } - ], - "name": "setExchangeRate", - "outputs": [], - "payable": false, - "stateMutability": "nonpayable", - "type": "function" - }, - { - "constant": true, - "inputs": [], - "name": "symbol", - "outputs": [ - { - "internalType": "string", - "name": "", - "type": "string" - } - ], - "payable": false, - "stateMutability": "view", - "type": "function" - }, - { - "constant": true, - "inputs": [ - { - "internalType": "uint256", - "name": "_amount", - "type": "uint256" - } - ], - "name": "toUnderlying", - "outputs": [ - { - "internalType": "uint256", - "name": "", - "type": "uint256" - } - ], - "payable": false, - "stateMutability": "view", - "type": "function" - }, - { - "constant": true, - "inputs": [], - "name": "totalSupply", - "outputs": [ - { - "internalType": "uint256", - "name": "", - "type": "uint256" - } - ], - "payable": false, - "stateMutability": "view", - "type": "function" - }, - { - "constant": false, - "inputs": [ - { - "internalType": "address", - "name": "recipient", - "type": "address" - }, - { - "internalType": "uint256", - "name": "amount", - "type": "uint256" - } - ], - "name": "transfer", - "outputs": [ - { - "internalType": "bool", - "name": "", - "type": "bool" - } - ], - "payable": false, - "stateMutability": "nonpayable", - "type": "function" - }, - { - "constant": false, - "inputs": [ - { - "internalType": "address", - "name": "sender", - "type": "address" - }, - { - "internalType": "address", - "name": "recipient", - "type": "address" - }, - { - "internalType": "uint256", - "name": "amount", - "type": "uint256" - } - ], - "name": "transferFrom", - "outputs": [ - { - "internalType": "bool", - "name": "", - "type": "bool" - } - ], - "payable": false, - "stateMutability": "nonpayable", - "type": "function" - }, - { - "constant": false, - "inputs": [ - { - "internalType": "address", - "name": "newOwner", - "type": "address" - } - ], - "name": "transferOwnership", - "outputs": [], - "payable": false, - "stateMutability": "nonpayable", - "type": "function" - }, - { - "constant": true, - "inputs": [], - "name": "version", - "outputs": [ - { - "internalType": "string", - "name": "", - "type": "string" - } - ], - "payable": false, - "stateMutability": "view", - "type": "function" - } - ], - "sourcePath": "~/github/renproject/ren-sol/contracts/Gateway/RenERC20.sol", - "compiler": { - "name": "solc", - "version": "0.5.16+commit.9c3226ce.Emscripten.clang" - }, - "networks": { - "42": { - "events": { - "0x8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925": { - "anonymous": false, - "inputs": [ - { - "indexed": true, - "internalType": "address", - "name": "owner", - "type": "address" - }, - { - "indexed": true, - "internalType": "address", - "name": "spender", - "type": "address" - }, - { - "indexed": false, - "internalType": "uint256", - "name": "value", - "type": "uint256" - } - ], - "name": "Approval", - "type": "event" - }, - "0x9d6ef0d454e23e234e8c1cf70cee49a44226ffb036017442229a7a5bd1d0957e": { - "anonymous": false, - "inputs": [ - { - "indexed": true, - "internalType": "uint256", - "name": "_rate", - "type": "uint256" - } - ], - "name": "LogRateChanged", - "type": "event" - }, - "0x8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0": { - "anonymous": false, - "inputs": [ - { - "indexed": true, - "internalType": "address", - "name": "previousOwner", - "type": "address" - }, - { - "indexed": true, - "internalType": "address", - "name": "newOwner", - "type": "address" - } - ], - "name": "OwnershipTransferred", - "type": "event" - }, - "0xddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef": { - "anonymous": false, - "inputs": [ - { - "indexed": true, - "internalType": "address", - "name": "from", - "type": "address" - }, - { - "indexed": true, - "internalType": "address", - "name": "to", - "type": "address" - }, - { - "indexed": false, - "internalType": "uint256", - "name": "value", - "type": "uint256" - } - ], - "name": "Transfer", - "type": "event" - } - }, - "links": {}, - "address": "0xE121991B5DAB075E33C30E5C36EB5FFa9B2Af1A4", - "transactionHash": "0xf4ac3792c93d8e22850cb380e2e40201d65fd45daf277e67043e613f52015fe7" - } - }, - "schemaVersion": "3.0.23" -} \ No newline at end of file diff --git a/build/devnet/RenProxyAdmin.json b/build/devnet/RenProxyAdmin.json deleted file mode 100644 index bd2ca149..00000000 --- a/build/devnet/RenProxyAdmin.json +++ /dev/null @@ -1,219 +0,0 @@ -{ - "contractName": "RenProxyAdmin", - "abi": [ - { - "anonymous": false, - "inputs": [ - { - "indexed": true, - "internalType": "address", - "name": "previousOwner", - "type": "address" - }, - { - "indexed": true, - "internalType": "address", - "name": "newOwner", - "type": "address" - } - ], - "name": "OwnershipTransferred", - "type": "event" - }, - { - "constant": false, - "inputs": [ - { - "internalType": "contract AdminUpgradeabilityProxy", - "name": "proxy", - "type": "address" - }, - { - "internalType": "address", - "name": "newAdmin", - "type": "address" - } - ], - "name": "changeProxyAdmin", - "outputs": [], - "payable": false, - "stateMutability": "nonpayable", - "type": "function" - }, - { - "constant": true, - "inputs": [ - { - "internalType": "contract AdminUpgradeabilityProxy", - "name": "proxy", - "type": "address" - } - ], - "name": "getProxyAdmin", - "outputs": [ - { - "internalType": "address", - "name": "", - "type": "address" - } - ], - "payable": false, - "stateMutability": "view", - "type": "function" - }, - { - "constant": true, - "inputs": [ - { - "internalType": "contract AdminUpgradeabilityProxy", - "name": "proxy", - "type": "address" - } - ], - "name": "getProxyImplementation", - "outputs": [ - { - "internalType": "address", - "name": "", - "type": "address" - } - ], - "payable": false, - "stateMutability": "view", - "type": "function" - }, - { - "constant": true, - "inputs": [], - "name": "isOwner", - "outputs": [ - { - "internalType": "bool", - "name": "", - "type": "bool" - } - ], - "payable": false, - "stateMutability": "view", - "type": "function" - }, - { - "constant": true, - "inputs": [], - "name": "owner", - "outputs": [ - { - "internalType": "address", - "name": "", - "type": "address" - } - ], - "payable": false, - "stateMutability": "view", - "type": "function" - }, - { - "constant": false, - "inputs": [], - "name": "renounceOwnership", - "outputs": [], - "payable": false, - "stateMutability": "nonpayable", - "type": "function" - }, - { - "constant": false, - "inputs": [ - { - "internalType": "address", - "name": "newOwner", - "type": "address" - } - ], - "name": "transferOwnership", - "outputs": [], - "payable": false, - "stateMutability": "nonpayable", - "type": "function" - }, - { - "constant": false, - "inputs": [ - { - "internalType": "contract AdminUpgradeabilityProxy", - "name": "proxy", - "type": "address" - }, - { - "internalType": "address", - "name": "implementation", - "type": "address" - } - ], - "name": "upgrade", - "outputs": [], - "payable": false, - "stateMutability": "nonpayable", - "type": "function" - }, - { - "constant": false, - "inputs": [ - { - "internalType": "contract AdminUpgradeabilityProxy", - "name": "proxy", - "type": "address" - }, - { - "internalType": "address", - "name": "implementation", - "type": "address" - }, - { - "internalType": "bytes", - "name": "data", - "type": "bytes" - } - ], - "name": "upgradeAndCall", - "outputs": [], - "payable": true, - "stateMutability": "payable", - "type": "function" - } - ], - "sourcePath": "~/github/renproject/ren-sol/contracts/Governance/RenProxyAdmin.sol", - "compiler": { - "name": "solc", - "version": "0.5.16+commit.9c3226ce.Emscripten.clang" - }, - "networks": { - "42": { - "events": { - "0x8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0": { - "anonymous": false, - "inputs": [ - { - "indexed": true, - "internalType": "address", - "name": "previousOwner", - "type": "address" - }, - { - "indexed": true, - "internalType": "address", - "name": "newOwner", - "type": "address" - } - ], - "name": "OwnershipTransferred", - "type": "event" - } - }, - "links": {}, - "address": "0xA2C9D593bC096FbB3Cf5b869270645C470E5416B", - "transactionHash": "0xb0eab061fc819274b472ce5a30c012bbbdfc2ddbe019e091a0e480bda659149d" - } - }, - "schemaVersion": "3.0.23" -} \ No newline at end of file diff --git a/build/devnet/RenToken.json b/build/devnet/RenToken.json deleted file mode 100644 index f1fe63ba..00000000 --- a/build/devnet/RenToken.json +++ /dev/null @@ -1,758 +0,0 @@ -{ - "contractName": "RenToken", - "abi": [ - { - "inputs": [], - "payable": false, - "stateMutability": "nonpayable", - "type": "constructor" - }, - { - "anonymous": false, - "inputs": [ - { - "indexed": true, - "internalType": "address", - "name": "owner", - "type": "address" - }, - { - "indexed": true, - "internalType": "address", - "name": "spender", - "type": "address" - }, - { - "indexed": false, - "internalType": "uint256", - "name": "value", - "type": "uint256" - } - ], - "name": "Approval", - "type": "event" - }, - { - "anonymous": false, - "inputs": [ - { - "indexed": true, - "internalType": "address", - "name": "previousOwner", - "type": "address" - }, - { - "indexed": true, - "internalType": "address", - "name": "newOwner", - "type": "address" - } - ], - "name": "OwnershipTransferred", - "type": "event" - }, - { - "anonymous": false, - "inputs": [ - { - "indexed": false, - "internalType": "address", - "name": "account", - "type": "address" - } - ], - "name": "Paused", - "type": "event" - }, - { - "anonymous": false, - "inputs": [ - { - "indexed": true, - "internalType": "address", - "name": "account", - "type": "address" - } - ], - "name": "PauserAdded", - "type": "event" - }, - { - "anonymous": false, - "inputs": [ - { - "indexed": true, - "internalType": "address", - "name": "account", - "type": "address" - } - ], - "name": "PauserRemoved", - "type": "event" - }, - { - "anonymous": false, - "inputs": [ - { - "indexed": true, - "internalType": "address", - "name": "from", - "type": "address" - }, - { - "indexed": true, - "internalType": "address", - "name": "to", - "type": "address" - }, - { - "indexed": false, - "internalType": "uint256", - "name": "value", - "type": "uint256" - } - ], - "name": "Transfer", - "type": "event" - }, - { - "anonymous": false, - "inputs": [ - { - "indexed": false, - "internalType": "address", - "name": "account", - "type": "address" - } - ], - "name": "Unpaused", - "type": "event" - }, - { - "constant": true, - "inputs": [], - "name": "INITIAL_SUPPLY", - "outputs": [ - { - "internalType": "uint256", - "name": "", - "type": "uint256" - } - ], - "payable": false, - "stateMutability": "view", - "type": "function" - }, - { - "constant": false, - "inputs": [ - { - "internalType": "address", - "name": "account", - "type": "address" - } - ], - "name": "addPauser", - "outputs": [], - "payable": false, - "stateMutability": "nonpayable", - "type": "function" - }, - { - "constant": true, - "inputs": [ - { - "internalType": "address", - "name": "owner", - "type": "address" - }, - { - "internalType": "address", - "name": "spender", - "type": "address" - } - ], - "name": "allowance", - "outputs": [ - { - "internalType": "uint256", - "name": "", - "type": "uint256" - } - ], - "payable": false, - "stateMutability": "view", - "type": "function" - }, - { - "constant": false, - "inputs": [ - { - "internalType": "address", - "name": "spender", - "type": "address" - }, - { - "internalType": "uint256", - "name": "value", - "type": "uint256" - } - ], - "name": "approve", - "outputs": [ - { - "internalType": "bool", - "name": "", - "type": "bool" - } - ], - "payable": false, - "stateMutability": "nonpayable", - "type": "function" - }, - { - "constant": true, - "inputs": [ - { - "internalType": "address", - "name": "account", - "type": "address" - } - ], - "name": "balanceOf", - "outputs": [ - { - "internalType": "uint256", - "name": "", - "type": "uint256" - } - ], - "payable": false, - "stateMutability": "view", - "type": "function" - }, - { - "constant": false, - "inputs": [ - { - "internalType": "uint256", - "name": "amount", - "type": "uint256" - } - ], - "name": "burn", - "outputs": [], - "payable": false, - "stateMutability": "nonpayable", - "type": "function" - }, - { - "constant": false, - "inputs": [ - { - "internalType": "address", - "name": "account", - "type": "address" - }, - { - "internalType": "uint256", - "name": "amount", - "type": "uint256" - } - ], - "name": "burnFrom", - "outputs": [], - "payable": false, - "stateMutability": "nonpayable", - "type": "function" - }, - { - "constant": true, - "inputs": [], - "name": "decimals", - "outputs": [ - { - "internalType": "uint8", - "name": "", - "type": "uint8" - } - ], - "payable": false, - "stateMutability": "view", - "type": "function" - }, - { - "constant": false, - "inputs": [ - { - "internalType": "address", - "name": "spender", - "type": "address" - }, - { - "internalType": "uint256", - "name": "subtractedValue", - "type": "uint256" - } - ], - "name": "decreaseAllowance", - "outputs": [ - { - "internalType": "bool", - "name": "", - "type": "bool" - } - ], - "payable": false, - "stateMutability": "nonpayable", - "type": "function" - }, - { - "constant": false, - "inputs": [ - { - "internalType": "address", - "name": "spender", - "type": "address" - }, - { - "internalType": "uint256", - "name": "addedValue", - "type": "uint256" - } - ], - "name": "increaseAllowance", - "outputs": [ - { - "internalType": "bool", - "name": "", - "type": "bool" - } - ], - "payable": false, - "stateMutability": "nonpayable", - "type": "function" - }, - { - "constant": false, - "inputs": [ - { - "internalType": "string", - "name": "name", - "type": "string" - }, - { - "internalType": "string", - "name": "symbol", - "type": "string" - }, - { - "internalType": "uint8", - "name": "decimals", - "type": "uint8" - } - ], - "name": "initialize", - "outputs": [], - "payable": false, - "stateMutability": "nonpayable", - "type": "function" - }, - { - "constant": false, - "inputs": [ - { - "internalType": "address", - "name": "sender", - "type": "address" - } - ], - "name": "initialize", - "outputs": [], - "payable": false, - "stateMutability": "nonpayable", - "type": "function" - }, - { - "constant": true, - "inputs": [], - "name": "isOwner", - "outputs": [ - { - "internalType": "bool", - "name": "", - "type": "bool" - } - ], - "payable": false, - "stateMutability": "view", - "type": "function" - }, - { - "constant": true, - "inputs": [ - { - "internalType": "address", - "name": "account", - "type": "address" - } - ], - "name": "isPauser", - "outputs": [ - { - "internalType": "bool", - "name": "", - "type": "bool" - } - ], - "payable": false, - "stateMutability": "view", - "type": "function" - }, - { - "constant": true, - "inputs": [], - "name": "name", - "outputs": [ - { - "internalType": "string", - "name": "", - "type": "string" - } - ], - "payable": false, - "stateMutability": "view", - "type": "function" - }, - { - "constant": true, - "inputs": [], - "name": "owner", - "outputs": [ - { - "internalType": "address", - "name": "", - "type": "address" - } - ], - "payable": false, - "stateMutability": "view", - "type": "function" - }, - { - "constant": false, - "inputs": [], - "name": "pause", - "outputs": [], - "payable": false, - "stateMutability": "nonpayable", - "type": "function" - }, - { - "constant": true, - "inputs": [], - "name": "paused", - "outputs": [ - { - "internalType": "bool", - "name": "", - "type": "bool" - } - ], - "payable": false, - "stateMutability": "view", - "type": "function" - }, - { - "constant": false, - "inputs": [], - "name": "renounceOwnership", - "outputs": [], - "payable": false, - "stateMutability": "nonpayable", - "type": "function" - }, - { - "constant": false, - "inputs": [], - "name": "renouncePauser", - "outputs": [], - "payable": false, - "stateMutability": "nonpayable", - "type": "function" - }, - { - "constant": true, - "inputs": [], - "name": "symbol", - "outputs": [ - { - "internalType": "string", - "name": "", - "type": "string" - } - ], - "payable": false, - "stateMutability": "view", - "type": "function" - }, - { - "constant": true, - "inputs": [], - "name": "totalSupply", - "outputs": [ - { - "internalType": "uint256", - "name": "", - "type": "uint256" - } - ], - "payable": false, - "stateMutability": "view", - "type": "function" - }, - { - "constant": false, - "inputs": [ - { - "internalType": "address", - "name": "to", - "type": "address" - }, - { - "internalType": "uint256", - "name": "value", - "type": "uint256" - } - ], - "name": "transfer", - "outputs": [ - { - "internalType": "bool", - "name": "", - "type": "bool" - } - ], - "payable": false, - "stateMutability": "nonpayable", - "type": "function" - }, - { - "constant": false, - "inputs": [ - { - "internalType": "address", - "name": "from", - "type": "address" - }, - { - "internalType": "address", - "name": "to", - "type": "address" - }, - { - "internalType": "uint256", - "name": "value", - "type": "uint256" - } - ], - "name": "transferFrom", - "outputs": [ - { - "internalType": "bool", - "name": "", - "type": "bool" - } - ], - "payable": false, - "stateMutability": "nonpayable", - "type": "function" - }, - { - "constant": false, - "inputs": [ - { - "internalType": "address", - "name": "newOwner", - "type": "address" - } - ], - "name": "transferOwnership", - "outputs": [], - "payable": false, - "stateMutability": "nonpayable", - "type": "function" - }, - { - "constant": false, - "inputs": [ - { - "internalType": "address", - "name": "beneficiary", - "type": "address" - }, - { - "internalType": "uint256", - "name": "amount", - "type": "uint256" - } - ], - "name": "transferTokens", - "outputs": [ - { - "internalType": "bool", - "name": "", - "type": "bool" - } - ], - "payable": false, - "stateMutability": "nonpayable", - "type": "function" - }, - { - "constant": false, - "inputs": [], - "name": "unpause", - "outputs": [], - "payable": false, - "stateMutability": "nonpayable", - "type": "function" - } - ], - "sourcePath": "~/github/renproject/ren-sol/contracts/RenToken/RenToken.sol", - "compiler": { - "name": "solc", - "version": "0.5.16+commit.9c3226ce.Emscripten.clang" - }, - "networks": { - "42": { - "events": { - "0x8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925": { - "anonymous": false, - "inputs": [ - { - "indexed": true, - "internalType": "address", - "name": "owner", - "type": "address" - }, - { - "indexed": true, - "internalType": "address", - "name": "spender", - "type": "address" - }, - { - "indexed": false, - "internalType": "uint256", - "name": "value", - "type": "uint256" - } - ], - "name": "Approval", - "type": "event" - }, - "0x8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0": { - "anonymous": false, - "inputs": [ - { - "indexed": true, - "internalType": "address", - "name": "previousOwner", - "type": "address" - }, - { - "indexed": true, - "internalType": "address", - "name": "newOwner", - "type": "address" - } - ], - "name": "OwnershipTransferred", - "type": "event" - }, - "0x62e78cea01bee320cd4e420270b5ea74000d11b0c9f74754ebdbfc544b05a258": { - "anonymous": false, - "inputs": [ - { - "indexed": false, - "internalType": "address", - "name": "account", - "type": "address" - } - ], - "name": "Paused", - "type": "event" - }, - "0x6719d08c1888103bea251a4ed56406bd0c3e69723c8a1686e017e7bbe159b6f8": { - "anonymous": false, - "inputs": [ - { - "indexed": true, - "internalType": "address", - "name": "account", - "type": "address" - } - ], - "name": "PauserAdded", - "type": "event" - }, - "0xcd265ebaf09df2871cc7bd4133404a235ba12eff2041bb89d9c714a2621c7c7e": { - "anonymous": false, - "inputs": [ - { - "indexed": true, - "internalType": "address", - "name": "account", - "type": "address" - } - ], - "name": "PauserRemoved", - "type": "event" - }, - "0xddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef": { - "anonymous": false, - "inputs": [ - { - "indexed": true, - "internalType": "address", - "name": "from", - "type": "address" - }, - { - "indexed": true, - "internalType": "address", - "name": "to", - "type": "address" - }, - { - "indexed": false, - "internalType": "uint256", - "name": "value", - "type": "uint256" - } - ], - "name": "Transfer", - "type": "event" - }, - "0x5db9ee0a495bf2e6ff9c91a7834c1ba4fdd244a5e8aa4e537bd38aeae4b073aa": { - "anonymous": false, - "inputs": [ - { - "indexed": false, - "internalType": "address", - "name": "account", - "type": "address" - } - ], - "name": "Unpaused", - "type": "event" - } - }, - "links": {}, - "address": "0x2cd647668494c1b15743ab283a0f980d90a87394", - "transactionHash": "0xc0240fedd500768ccfdba93ab039d8a3585e8551b66eaa2c5c0e4c31004fc410" - } - }, - "schemaVersion": "3.0.23" -} \ No newline at end of file diff --git a/build/devnet/RenZEC.json b/build/devnet/RenZEC.json deleted file mode 100644 index f0b92cd6..00000000 --- a/build/devnet/RenZEC.json +++ /dev/null @@ -1,214 +0,0 @@ -{ - "contractName": "RenZEC", - "abi": [ - { - "anonymous": false, - "inputs": [ - { - "indexed": false, - "internalType": "address", - "name": "previousAdmin", - "type": "address" - }, - { - "indexed": false, - "internalType": "address", - "name": "newAdmin", - "type": "address" - } - ], - "name": "AdminChanged", - "type": "event" - }, - { - "anonymous": false, - "inputs": [ - { - "indexed": true, - "internalType": "address", - "name": "implementation", - "type": "address" - } - ], - "name": "Upgraded", - "type": "event" - }, - { - "payable": true, - "stateMutability": "payable", - "type": "fallback" - }, - { - "constant": false, - "inputs": [], - "name": "admin", - "outputs": [ - { - "internalType": "address", - "name": "", - "type": "address" - } - ], - "payable": false, - "stateMutability": "nonpayable", - "type": "function" - }, - { - "constant": false, - "inputs": [ - { - "internalType": "address", - "name": "newAdmin", - "type": "address" - } - ], - "name": "changeAdmin", - "outputs": [], - "payable": false, - "stateMutability": "nonpayable", - "type": "function" - }, - { - "constant": false, - "inputs": [], - "name": "implementation", - "outputs": [ - { - "internalType": "address", - "name": "", - "type": "address" - } - ], - "payable": false, - "stateMutability": "nonpayable", - "type": "function" - }, - { - "constant": false, - "inputs": [ - { - "internalType": "address", - "name": "_logic", - "type": "address" - }, - { - "internalType": "address", - "name": "_admin", - "type": "address" - }, - { - "internalType": "bytes", - "name": "_data", - "type": "bytes" - } - ], - "name": "initialize", - "outputs": [], - "payable": true, - "stateMutability": "payable", - "type": "function" - }, - { - "constant": false, - "inputs": [ - { - "internalType": "address", - "name": "_logic", - "type": "address" - }, - { - "internalType": "bytes", - "name": "_data", - "type": "bytes" - } - ], - "name": "initialize", - "outputs": [], - "payable": true, - "stateMutability": "payable", - "type": "function" - }, - { - "constant": false, - "inputs": [ - { - "internalType": "address", - "name": "newImplementation", - "type": "address" - } - ], - "name": "upgradeTo", - "outputs": [], - "payable": false, - "stateMutability": "nonpayable", - "type": "function" - }, - { - "constant": false, - "inputs": [ - { - "internalType": "address", - "name": "newImplementation", - "type": "address" - }, - { - "internalType": "bytes", - "name": "data", - "type": "bytes" - } - ], - "name": "upgradeToAndCall", - "outputs": [], - "payable": true, - "stateMutability": "payable", - "type": "function" - } - ], - "sourcePath": "~/github/renproject/ren-sol/contracts/Gateway/RenERC20.sol", - "compiler": { - "name": "solc", - "version": "0.5.16+commit.9c3226ce.Emscripten.clang" - }, - "networks": { - "42": { - "events": { - "0x7e644d79422f17c01e4894b5f4f588d331ebfa28653d42ae832dc59e38c9798f": { - "anonymous": false, - "inputs": [ - { - "indexed": false, - "internalType": "address", - "name": "previousAdmin", - "type": "address" - }, - { - "indexed": false, - "internalType": "address", - "name": "newAdmin", - "type": "address" - } - ], - "name": "AdminChanged", - "type": "event" - }, - "0xbc7cd75a20ee27fd9adebab32041f755214dbc6bffa90cc0225b39da2e5c2d3b": { - "anonymous": false, - "inputs": [ - { - "indexed": true, - "internalType": "address", - "name": "implementation", - "type": "address" - } - ], - "name": "Upgraded", - "type": "event" - } - }, - "links": {}, - "address": "0x6f35D542f3E0886281fb6152010fb52aC6B931F6", - "transactionHash": "0x3bdcd0f94ece64cf1be4c611b266bda1983c833f072f92b70f9a9280b6208e47" - } - }, - "schemaVersion": "3.0.23" -} \ No newline at end of file diff --git a/build/devnet/ZECGateway.json b/build/devnet/ZECGateway.json deleted file mode 100644 index 43e735f1..00000000 --- a/build/devnet/ZECGateway.json +++ /dev/null @@ -1,214 +0,0 @@ -{ - "contractName": "ZECGateway", - "abi": [ - { - "anonymous": false, - "inputs": [ - { - "indexed": false, - "internalType": "address", - "name": "previousAdmin", - "type": "address" - }, - { - "indexed": false, - "internalType": "address", - "name": "newAdmin", - "type": "address" - } - ], - "name": "AdminChanged", - "type": "event" - }, - { - "anonymous": false, - "inputs": [ - { - "indexed": true, - "internalType": "address", - "name": "implementation", - "type": "address" - } - ], - "name": "Upgraded", - "type": "event" - }, - { - "payable": true, - "stateMutability": "payable", - "type": "fallback" - }, - { - "constant": false, - "inputs": [], - "name": "admin", - "outputs": [ - { - "internalType": "address", - "name": "", - "type": "address" - } - ], - "payable": false, - "stateMutability": "nonpayable", - "type": "function" - }, - { - "constant": false, - "inputs": [ - { - "internalType": "address", - "name": "newAdmin", - "type": "address" - } - ], - "name": "changeAdmin", - "outputs": [], - "payable": false, - "stateMutability": "nonpayable", - "type": "function" - }, - { - "constant": false, - "inputs": [], - "name": "implementation", - "outputs": [ - { - "internalType": "address", - "name": "", - "type": "address" - } - ], - "payable": false, - "stateMutability": "nonpayable", - "type": "function" - }, - { - "constant": false, - "inputs": [ - { - "internalType": "address", - "name": "_logic", - "type": "address" - }, - { - "internalType": "address", - "name": "_admin", - "type": "address" - }, - { - "internalType": "bytes", - "name": "_data", - "type": "bytes" - } - ], - "name": "initialize", - "outputs": [], - "payable": true, - "stateMutability": "payable", - "type": "function" - }, - { - "constant": false, - "inputs": [ - { - "internalType": "address", - "name": "_logic", - "type": "address" - }, - { - "internalType": "bytes", - "name": "_data", - "type": "bytes" - } - ], - "name": "initialize", - "outputs": [], - "payable": true, - "stateMutability": "payable", - "type": "function" - }, - { - "constant": false, - "inputs": [ - { - "internalType": "address", - "name": "newImplementation", - "type": "address" - } - ], - "name": "upgradeTo", - "outputs": [], - "payable": false, - "stateMutability": "nonpayable", - "type": "function" - }, - { - "constant": false, - "inputs": [ - { - "internalType": "address", - "name": "newImplementation", - "type": "address" - }, - { - "internalType": "bytes", - "name": "data", - "type": "bytes" - } - ], - "name": "upgradeToAndCall", - "outputs": [], - "payable": true, - "stateMutability": "payable", - "type": "function" - } - ], - "sourcePath": "~/github/renproject/ren-sol/contracts/Gateway/Gateway.sol", - "compiler": { - "name": "solc", - "version": "0.5.16+commit.9c3226ce.Emscripten.clang" - }, - "networks": { - "42": { - "events": { - "0x7e644d79422f17c01e4894b5f4f588d331ebfa28653d42ae832dc59e38c9798f": { - "anonymous": false, - "inputs": [ - { - "indexed": false, - "internalType": "address", - "name": "previousAdmin", - "type": "address" - }, - { - "indexed": false, - "internalType": "address", - "name": "newAdmin", - "type": "address" - } - ], - "name": "AdminChanged", - "type": "event" - }, - "0xbc7cd75a20ee27fd9adebab32041f755214dbc6bffa90cc0225b39da2e5c2d3b": { - "anonymous": false, - "inputs": [ - { - "indexed": true, - "internalType": "address", - "name": "implementation", - "type": "address" - } - ], - "name": "Upgraded", - "type": "event" - } - }, - "links": {}, - "address": "0x3E31c6E07Eb4C471A6443e90E304E9C68dcdEd7d", - "transactionHash": "0xa958a4280f650a60b8aa9c9048b78a7defc6e54ae16f9e3cb384a84f08e3405a" - } - }, - "schemaVersion": "3.0.23" -} \ No newline at end of file diff --git a/build/erc/ERC20.json b/build/erc/ERC20.json deleted file mode 100644 index 4daffd64..00000000 --- a/build/erc/ERC20.json +++ /dev/null @@ -1,211 +0,0 @@ -{ - "contractName": "ERC20", - "abi": [{ - "constant": false, - "inputs": [{ - "name": "spender", - "type": "address" - }, - { - "name": "amount", - "type": "uint256" - } - ], - "name": "approve", - "outputs": [{ - "name": "", - "type": "bool" - }], - "payable": false, - "stateMutability": "nonpayable", - "type": "function" - }, - { - "constant": true, - "inputs": [], - "name": "totalSupply", - "outputs": [{ - "name": "", - "type": "uint256" - }], - "payable": false, - "stateMutability": "view", - "type": "function" - }, - { - "constant": false, - "inputs": [{ - "name": "sender", - "type": "address" - }, - { - "name": "recipient", - "type": "address" - }, - { - "name": "amount", - "type": "uint256" - } - ], - "name": "transferFrom", - "outputs": [{ - "name": "", - "type": "bool" - }], - "payable": false, - "stateMutability": "nonpayable", - "type": "function" - }, - { - "constant": true, - "inputs": [{ - "name": "account", - "type": "address" - }], - "name": "balanceOf", - "outputs": [{ - "name": "", - "type": "uint256" - }], - "payable": false, - "stateMutability": "view", - "type": "function" - }, - { - "constant": false, - "inputs": [{ - "name": "recipient", - "type": "address" - }, - { - "name": "amount", - "type": "uint256" - } - ], - "name": "transfer", - "outputs": [{ - "name": "", - "type": "bool" - }], - "payable": false, - "stateMutability": "nonpayable", - "type": "function" - }, - { - "constant": true, - "inputs": [{ - "name": "owner", - "type": "address" - }, - { - "name": "spender", - "type": "address" - } - ], - "name": "allowance", - "outputs": [{ - "name": "", - "type": "uint256" - }], - "payable": false, - "stateMutability": "view", - "type": "function" - }, - { - "inputs": [{ - "name": "name", - "type": "string" - }, - { - "name": "symbol", - "type": "string" - }, - { - "name": "decimals", - "type": "uint8" - } - ], - "payable": false, - "stateMutability": "nonpayable", - "type": "constructor" - }, - { - "anonymous": false, - "inputs": [{ - "indexed": true, - "name": "from", - "type": "address" - }, - { - "indexed": true, - "name": "to", - "type": "address" - }, - { - "indexed": false, - "name": "value", - "type": "uint256" - } - ], - "name": "Transfer", - "type": "event" - }, - { - "anonymous": false, - "inputs": [{ - "indexed": true, - "name": "owner", - "type": "address" - }, - { - "indexed": true, - "name": "spender", - "type": "address" - }, - { - "indexed": false, - "name": "value", - "type": "uint256" - } - ], - "name": "Approval", - "type": "event" - }, - { - "constant": true, - "inputs": [], - "name": "name", - "outputs": [{ - "name": "", - "type": "string" - }], - "payable": false, - "stateMutability": "view", - "type": "function" - }, - { - "constant": true, - "inputs": [], - "name": "symbol", - "outputs": [{ - "name": "", - "type": "string" - }], - "payable": false, - "stateMutability": "view", - "type": "function" - }, - { - "constant": true, - "inputs": [], - "name": "decimals", - "outputs": [{ - "name": "", - "type": "uint8" - }], - "payable": false, - "stateMutability": "view", - "type": "function" - } - ] -} \ No newline at end of file diff --git a/build/localnet/BCHGateway.json b/build/localnet/BCHGateway.json deleted file mode 100644 index da2f4e40..00000000 --- a/build/localnet/BCHGateway.json +++ /dev/null @@ -1,214 +0,0 @@ -{ - "contractName": "BCHGateway", - "abi": [ - { - "anonymous": false, - "inputs": [ - { - "indexed": false, - "internalType": "address", - "name": "previousAdmin", - "type": "address" - }, - { - "indexed": false, - "internalType": "address", - "name": "newAdmin", - "type": "address" - } - ], - "name": "AdminChanged", - "type": "event" - }, - { - "anonymous": false, - "inputs": [ - { - "indexed": true, - "internalType": "address", - "name": "implementation", - "type": "address" - } - ], - "name": "Upgraded", - "type": "event" - }, - { - "payable": true, - "stateMutability": "payable", - "type": "fallback" - }, - { - "constant": false, - "inputs": [], - "name": "admin", - "outputs": [ - { - "internalType": "address", - "name": "", - "type": "address" - } - ], - "payable": false, - "stateMutability": "nonpayable", - "type": "function" - }, - { - "constant": false, - "inputs": [ - { - "internalType": "address", - "name": "newAdmin", - "type": "address" - } - ], - "name": "changeAdmin", - "outputs": [], - "payable": false, - "stateMutability": "nonpayable", - "type": "function" - }, - { - "constant": false, - "inputs": [], - "name": "implementation", - "outputs": [ - { - "internalType": "address", - "name": "", - "type": "address" - } - ], - "payable": false, - "stateMutability": "nonpayable", - "type": "function" - }, - { - "constant": false, - "inputs": [ - { - "internalType": "address", - "name": "_logic", - "type": "address" - }, - { - "internalType": "address", - "name": "_admin", - "type": "address" - }, - { - "internalType": "bytes", - "name": "_data", - "type": "bytes" - } - ], - "name": "initialize", - "outputs": [], - "payable": true, - "stateMutability": "payable", - "type": "function" - }, - { - "constant": false, - "inputs": [ - { - "internalType": "address", - "name": "_logic", - "type": "address" - }, - { - "internalType": "bytes", - "name": "_data", - "type": "bytes" - } - ], - "name": "initialize", - "outputs": [], - "payable": true, - "stateMutability": "payable", - "type": "function" - }, - { - "constant": false, - "inputs": [ - { - "internalType": "address", - "name": "newImplementation", - "type": "address" - } - ], - "name": "upgradeTo", - "outputs": [], - "payable": false, - "stateMutability": "nonpayable", - "type": "function" - }, - { - "constant": false, - "inputs": [ - { - "internalType": "address", - "name": "newImplementation", - "type": "address" - }, - { - "internalType": "bytes", - "name": "data", - "type": "bytes" - } - ], - "name": "upgradeToAndCall", - "outputs": [], - "payable": true, - "stateMutability": "payable", - "type": "function" - } - ], - "sourcePath": "~/github/renproject/ren-sol/contracts/Gateway/Gateway.sol", - "compiler": { - "name": "solc", - "version": "0.5.16+commit.9c3226ce.Emscripten.clang" - }, - "networks": { - "42": { - "events": { - "0x7e644d79422f17c01e4894b5f4f588d331ebfa28653d42ae832dc59e38c9798f": { - "anonymous": false, - "inputs": [ - { - "indexed": false, - "internalType": "address", - "name": "previousAdmin", - "type": "address" - }, - { - "indexed": false, - "internalType": "address", - "name": "newAdmin", - "type": "address" - } - ], - "name": "AdminChanged", - "type": "event" - }, - "0xbc7cd75a20ee27fd9adebab32041f755214dbc6bffa90cc0225b39da2e5c2d3b": { - "anonymous": false, - "inputs": [ - { - "indexed": true, - "internalType": "address", - "name": "implementation", - "type": "address" - } - ], - "name": "Upgraded", - "type": "event" - } - }, - "links": {}, - "address": "0xEA96469Cd32D00b2EA1B00d9796e70b71134eD3f", - "transactionHash": "0x5413ac3c2e5474df163a43f361171eb70c9b850fb547cc72a671a1140a02433e" - } - }, - "schemaVersion": "3.0.23" -} \ No newline at end of file diff --git a/build/localnet/BTCGateway.json b/build/localnet/BTCGateway.json deleted file mode 100644 index 5c3b1d29..00000000 --- a/build/localnet/BTCGateway.json +++ /dev/null @@ -1,213 +0,0 @@ -{ - "contractName": "BTCGateway", - "abi": [ - { - "anonymous": false, - "inputs": [ - { - "indexed": false, - "internalType": "address", - "name": "previousAdmin", - "type": "address" - }, - { - "indexed": false, - "internalType": "address", - "name": "newAdmin", - "type": "address" - } - ], - "name": "AdminChanged", - "type": "event" - }, - { - "anonymous": false, - "inputs": [ - { - "indexed": true, - "internalType": "address", - "name": "implementation", - "type": "address" - } - ], - "name": "Upgraded", - "type": "event" - }, - { - "payable": true, - "stateMutability": "payable", - "type": "fallback" - }, - { - "constant": false, - "inputs": [], - "name": "admin", - "outputs": [ - { - "internalType": "address", - "name": "", - "type": "address" - } - ], - "payable": false, - "stateMutability": "nonpayable", - "type": "function" - }, - { - "constant": false, - "inputs": [ - { - "internalType": "address", - "name": "newAdmin", - "type": "address" - } - ], - "name": "changeAdmin", - "outputs": [], - "payable": false, - "stateMutability": "nonpayable", - "type": "function" - }, - { - "constant": false, - "inputs": [], - "name": "implementation", - "outputs": [ - { - "internalType": "address", - "name": "", - "type": "address" - } - ], - "payable": false, - "stateMutability": "nonpayable", - "type": "function" - }, - { - "constant": false, - "inputs": [ - { - "internalType": "address", - "name": "_logic", - "type": "address" - }, - { - "internalType": "address", - "name": "_admin", - "type": "address" - }, - { - "internalType": "bytes", - "name": "_data", - "type": "bytes" - } - ], - "name": "initialize", - "outputs": [], - "payable": true, - "stateMutability": "payable", - "type": "function" - }, - { - "constant": false, - "inputs": [ - { - "internalType": "address", - "name": "_logic", - "type": "address" - }, - { - "internalType": "bytes", - "name": "_data", - "type": "bytes" - } - ], - "name": "initialize", - "outputs": [], - "payable": true, - "stateMutability": "payable", - "type": "function" - }, - { - "constant": false, - "inputs": [ - { - "internalType": "address", - "name": "newImplementation", - "type": "address" - } - ], - "name": "upgradeTo", - "outputs": [], - "payable": false, - "stateMutability": "nonpayable", - "type": "function" - }, - { - "constant": false, - "inputs": [ - { - "internalType": "address", - "name": "newImplementation", - "type": "address" - }, - { - "internalType": "bytes", - "name": "data", - "type": "bytes" - } - ], - "name": "upgradeToAndCall", - "outputs": [], - "payable": true, - "stateMutability": "payable", - "type": "function" - } - ], - "sourcePath": "~/github/renproject/ren-sol/contracts/Gateway/Gateway.sol", - "compiler": { - "name": "solc", - "version": "0.5.16+commit.9c3226ce.Emscripten.clang" - }, - "networks": { - "42": { - "events": { - "0x7e644d79422f17c01e4894b5f4f588d331ebfa28653d42ae832dc59e38c9798f": { - "anonymous": false, - "inputs": [ - { - "indexed": false, - "internalType": "address", - "name": "previousAdmin", - "type": "address" - }, - { - "indexed": false, - "internalType": "address", - "name": "newAdmin", - "type": "address" - } - ], - "name": "AdminChanged", - "type": "event" - }, - "0xbc7cd75a20ee27fd9adebab32041f755214dbc6bffa90cc0225b39da2e5c2d3b": { - "anonymous": false, - "inputs": [ - { - "indexed": true, - "internalType": "address", - "name": "implementation", - "type": "address" - } - ], - "name": "Upgraded", - "type": "event" - } - }, - "links": {}, - "address": "0xA86B7E2C8f45334EE63A379c6C84EAC539d98acA" - } - }, - "schemaVersion": "3.0.23" -} \ No newline at end of file diff --git a/build/localnet/BasicAdapter.json b/build/localnet/BasicAdapter.json deleted file mode 100644 index 04cfe7a4..00000000 --- a/build/localnet/BasicAdapter.json +++ /dev/null @@ -1,294 +0,0 @@ -{ - "contractName": "BasicAdapter", - "abi": [ - { - "inputs": [ - { - "internalType": "contract IGatewayRegistry", - "name": "_registry", - "type": "address" - } - ], - "payable": false, - "stateMutability": "nonpayable", - "type": "constructor" - }, - { - "anonymous": false, - "inputs": [ - { - "indexed": true, - "internalType": "address", - "name": "oldRelayHub", - "type": "address" - }, - { - "indexed": true, - "internalType": "address", - "name": "newRelayHub", - "type": "address" - } - ], - "name": "RelayHubChanged", - "type": "event" - }, - { - "constant": true, - "inputs": [ - { - "internalType": "address", - "name": "relay", - "type": "address" - }, - { - "internalType": "address", - "name": "from", - "type": "address" - }, - { - "internalType": "bytes", - "name": "encodedFunction", - "type": "bytes" - }, - { - "internalType": "uint256", - "name": "transactionFee", - "type": "uint256" - }, - { - "internalType": "uint256", - "name": "gasPrice", - "type": "uint256" - }, - { - "internalType": "uint256", - "name": "gasLimit", - "type": "uint256" - }, - { - "internalType": "uint256", - "name": "nonce", - "type": "uint256" - }, - { - "internalType": "bytes", - "name": "approvalData", - "type": "bytes" - }, - { - "internalType": "uint256", - "name": "maxPossibleCharge", - "type": "uint256" - } - ], - "name": "acceptRelayedCall", - "outputs": [ - { - "internalType": "uint256", - "name": "", - "type": "uint256" - }, - { - "internalType": "bytes", - "name": "", - "type": "bytes" - } - ], - "payable": false, - "stateMutability": "view", - "type": "function" - }, - { - "constant": false, - "inputs": [ - { - "internalType": "string", - "name": "_symbol", - "type": "string" - }, - { - "internalType": "bytes", - "name": "_to", - "type": "bytes" - }, - { - "internalType": "uint256", - "name": "_amount", - "type": "uint256" - } - ], - "name": "burn", - "outputs": [], - "payable": false, - "stateMutability": "nonpayable", - "type": "function" - }, - { - "constant": true, - "inputs": [], - "name": "getHubAddr", - "outputs": [ - { - "internalType": "address", - "name": "", - "type": "address" - } - ], - "payable": false, - "stateMutability": "view", - "type": "function" - }, - { - "constant": false, - "inputs": [], - "name": "initialize", - "outputs": [], - "payable": false, - "stateMutability": "nonpayable", - "type": "function" - }, - { - "constant": false, - "inputs": [ - { - "internalType": "string", - "name": "_symbol", - "type": "string" - }, - { - "internalType": "address", - "name": "_recipient", - "type": "address" - }, - { - "internalType": "uint256", - "name": "_amount", - "type": "uint256" - }, - { - "internalType": "bytes32", - "name": "_nHash", - "type": "bytes32" - }, - { - "internalType": "bytes", - "name": "_sig", - "type": "bytes" - } - ], - "name": "mint", - "outputs": [], - "payable": false, - "stateMutability": "nonpayable", - "type": "function" - }, - { - "constant": false, - "inputs": [ - { - "internalType": "bytes", - "name": "context", - "type": "bytes" - }, - { - "internalType": "bool", - "name": "success", - "type": "bool" - }, - { - "internalType": "uint256", - "name": "actualCharge", - "type": "uint256" - }, - { - "internalType": "bytes32", - "name": "preRetVal", - "type": "bytes32" - } - ], - "name": "postRelayedCall", - "outputs": [], - "payable": false, - "stateMutability": "nonpayable", - "type": "function" - }, - { - "constant": false, - "inputs": [ - { - "internalType": "bytes", - "name": "context", - "type": "bytes" - } - ], - "name": "preRelayedCall", - "outputs": [ - { - "internalType": "bytes32", - "name": "", - "type": "bytes32" - } - ], - "payable": false, - "stateMutability": "nonpayable", - "type": "function" - }, - { - "constant": true, - "inputs": [], - "name": "relayHubVersion", - "outputs": [ - { - "internalType": "string", - "name": "", - "type": "string" - } - ], - "payable": false, - "stateMutability": "view", - "type": "function" - }, - { - "constant": false, - "inputs": [], - "name": "setDefaultRelayHub", - "outputs": [], - "payable": false, - "stateMutability": "nonpayable", - "type": "function" - } - ], - "sourcePath": "~/github/renproject/ren-sol/contracts/Gateway/adapters/BasicAdapter.sol", - "compiler": { - "name": "solc", - "version": "0.5.16+commit.9c3226ce.Emscripten.clang" - }, - "networks": { - "42": { - "events": { - "0xb9f84b8e65164b14439ae3620df0a4d8786d896996c0282b683f9d8c08f046e8": { - "anonymous": false, - "inputs": [ - { - "indexed": true, - "internalType": "address", - "name": "oldRelayHub", - "type": "address" - }, - { - "indexed": true, - "internalType": "address", - "name": "newRelayHub", - "type": "address" - } - ], - "name": "RelayHubChanged", - "type": "event" - } - }, - "links": {}, - "address": "0xD98d8EFF683129d040357439AbA49577452ECcaA" - } - }, - "schemaVersion": "3.0.23" -} \ No newline at end of file diff --git a/build/localnet/DarknodePayment.json b/build/localnet/DarknodePayment.json deleted file mode 100644 index 8dd09735..00000000 --- a/build/localnet/DarknodePayment.json +++ /dev/null @@ -1,1052 +0,0 @@ -{ - "contractName": "DarknodePayment", - "abi": [ - { - "inputs": [ - { - "internalType": "string", - "name": "_VERSION", - "type": "string" - }, - { - "internalType": "contract DarknodeRegistryLogicV1", - "name": "_darknodeRegistry", - "type": "address" - }, - { - "internalType": "contract DarknodePaymentStore", - "name": "_darknodePaymentStore", - "type": "address" - }, - { - "internalType": "uint256", - "name": "_cyclePayoutPercent", - "type": "uint256" - } - ], - "payable": false, - "stateMutability": "nonpayable", - "type": "constructor" - }, - { - "anonymous": false, - "inputs": [ - { - "indexed": true, - "internalType": "address", - "name": "_newCycleChanger", - "type": "address" - }, - { - "indexed": true, - "internalType": "address", - "name": "_oldCycleChanger", - "type": "address" - } - ], - "name": "LogCycleChangerChanged", - "type": "event" - }, - { - "anonymous": false, - "inputs": [ - { - "indexed": true, - "internalType": "address", - "name": "_darknode", - "type": "address" - }, - { - "indexed": false, - "internalType": "uint256", - "name": "_cycle", - "type": "uint256" - } - ], - "name": "LogDarknodeClaim", - "type": "event" - }, - { - "anonymous": false, - "inputs": [ - { - "indexed": true, - "internalType": "contract DarknodeRegistryLogicV1", - "name": "_previousDarknodeRegistry", - "type": "address" - }, - { - "indexed": true, - "internalType": "contract DarknodeRegistryLogicV1", - "name": "_nextDarknodeRegistry", - "type": "address" - } - ], - "name": "LogDarknodeRegistryUpdated", - "type": "event" - }, - { - "anonymous": false, - "inputs": [ - { - "indexed": true, - "internalType": "address", - "name": "_darknodeOperator", - "type": "address" - }, - { - "indexed": true, - "internalType": "address", - "name": "_darknodeID", - "type": "address" - }, - { - "indexed": true, - "internalType": "address", - "name": "_token", - "type": "address" - }, - { - "indexed": false, - "internalType": "uint256", - "name": "_value", - "type": "uint256" - } - ], - "name": "LogDarknodeWithdrew", - "type": "event" - }, - { - "anonymous": false, - "inputs": [ - { - "indexed": true, - "internalType": "address", - "name": "_payer", - "type": "address" - }, - { - "indexed": true, - "internalType": "address", - "name": "_token", - "type": "address" - }, - { - "indexed": false, - "internalType": "uint256", - "name": "_amount", - "type": "uint256" - } - ], - "name": "LogPaymentReceived", - "type": "event" - }, - { - "anonymous": false, - "inputs": [ - { - "indexed": false, - "internalType": "uint256", - "name": "_newPercent", - "type": "uint256" - }, - { - "indexed": false, - "internalType": "uint256", - "name": "_oldPercent", - "type": "uint256" - } - ], - "name": "LogPayoutPercentChanged", - "type": "event" - }, - { - "anonymous": false, - "inputs": [ - { - "indexed": true, - "internalType": "address", - "name": "_token", - "type": "address" - } - ], - "name": "LogTokenDeregistered", - "type": "event" - }, - { - "anonymous": false, - "inputs": [ - { - "indexed": true, - "internalType": "address", - "name": "_token", - "type": "address" - } - ], - "name": "LogTokenRegistered", - "type": "event" - }, - { - "anonymous": false, - "inputs": [ - { - "indexed": true, - "internalType": "address", - "name": "previousOwner", - "type": "address" - }, - { - "indexed": true, - "internalType": "address", - "name": "newOwner", - "type": "address" - } - ], - "name": "OwnershipTransferred", - "type": "event" - }, - { - "payable": true, - "stateMutability": "payable", - "type": "fallback" - }, - { - "constant": true, - "inputs": [], - "name": "ETHEREUM", - "outputs": [ - { - "internalType": "address", - "name": "", - "type": "address" - } - ], - "payable": false, - "stateMutability": "view", - "type": "function" - }, - { - "constant": true, - "inputs": [], - "name": "VERSION", - "outputs": [ - { - "internalType": "string", - "name": "", - "type": "string" - } - ], - "payable": false, - "stateMutability": "view", - "type": "function" - }, - { - "constant": false, - "inputs": [], - "name": "changeCycle", - "outputs": [ - { - "internalType": "uint256", - "name": "", - "type": "uint256" - } - ], - "payable": false, - "stateMutability": "nonpayable", - "type": "function" - }, - { - "constant": false, - "inputs": [ - { - "internalType": "address", - "name": "_darknode", - "type": "address" - } - ], - "name": "claim", - "outputs": [], - "payable": false, - "stateMutability": "nonpayable", - "type": "function" - }, - { - "constant": false, - "inputs": [], - "name": "claimOwnership", - "outputs": [], - "payable": false, - "stateMutability": "nonpayable", - "type": "function" - }, - { - "constant": false, - "inputs": [], - "name": "claimStoreOwnership", - "outputs": [], - "payable": false, - "stateMutability": "nonpayable", - "type": "function" - }, - { - "constant": true, - "inputs": [], - "name": "currentCycle", - "outputs": [ - { - "internalType": "uint256", - "name": "", - "type": "uint256" - } - ], - "payable": false, - "stateMutability": "view", - "type": "function" - }, - { - "constant": true, - "inputs": [], - "name": "currentCyclePayoutPercent", - "outputs": [ - { - "internalType": "uint256", - "name": "", - "type": "uint256" - } - ], - "payable": false, - "stateMutability": "view", - "type": "function" - }, - { - "constant": true, - "inputs": [ - { - "internalType": "address", - "name": "_token", - "type": "address" - } - ], - "name": "currentCycleRewardPool", - "outputs": [ - { - "internalType": "uint256", - "name": "", - "type": "uint256" - } - ], - "payable": false, - "stateMutability": "view", - "type": "function" - }, - { - "constant": true, - "inputs": [], - "name": "cycleChanger", - "outputs": [ - { - "internalType": "address", - "name": "", - "type": "address" - } - ], - "payable": false, - "stateMutability": "view", - "type": "function" - }, - { - "constant": true, - "inputs": [], - "name": "cycleStartTime", - "outputs": [ - { - "internalType": "uint256", - "name": "", - "type": "uint256" - } - ], - "payable": false, - "stateMutability": "view", - "type": "function" - }, - { - "constant": true, - "inputs": [ - { - "internalType": "address", - "name": "_darknodeID", - "type": "address" - }, - { - "internalType": "address", - "name": "_token", - "type": "address" - } - ], - "name": "darknodeBalances", - "outputs": [ - { - "internalType": "uint256", - "name": "", - "type": "uint256" - } - ], - "payable": false, - "stateMutability": "view", - "type": "function" - }, - { - "constant": true, - "inputs": [], - "name": "darknodeRegistry", - "outputs": [ - { - "internalType": "contract DarknodeRegistryLogicV1", - "name": "", - "type": "address" - } - ], - "payable": false, - "stateMutability": "view", - "type": "function" - }, - { - "constant": false, - "inputs": [ - { - "internalType": "uint256", - "name": "_value", - "type": "uint256" - }, - { - "internalType": "address", - "name": "_token", - "type": "address" - } - ], - "name": "deposit", - "outputs": [], - "payable": true, - "stateMutability": "payable", - "type": "function" - }, - { - "constant": false, - "inputs": [ - { - "internalType": "address", - "name": "_token", - "type": "address" - } - ], - "name": "deregisterToken", - "outputs": [], - "payable": false, - "stateMutability": "nonpayable", - "type": "function" - }, - { - "constant": false, - "inputs": [ - { - "internalType": "address", - "name": "_token", - "type": "address" - } - ], - "name": "forward", - "outputs": [], - "payable": false, - "stateMutability": "nonpayable", - "type": "function" - }, - { - "constant": false, - "inputs": [ - { - "internalType": "address", - "name": "_nextOwner", - "type": "address" - } - ], - "name": "initialize", - "outputs": [], - "payable": false, - "stateMutability": "nonpayable", - "type": "function" - }, - { - "constant": true, - "inputs": [], - "name": "isOwner", - "outputs": [ - { - "internalType": "bool", - "name": "", - "type": "bool" - } - ], - "payable": false, - "stateMutability": "view", - "type": "function" - }, - { - "constant": true, - "inputs": [], - "name": "nextCyclePayoutPercent", - "outputs": [ - { - "internalType": "uint256", - "name": "", - "type": "uint256" - } - ], - "payable": false, - "stateMutability": "view", - "type": "function" - }, - { - "constant": true, - "inputs": [], - "name": "owner", - "outputs": [ - { - "internalType": "address", - "name": "", - "type": "address" - } - ], - "payable": false, - "stateMutability": "view", - "type": "function" - }, - { - "constant": true, - "inputs": [], - "name": "pendingOwner", - "outputs": [ - { - "internalType": "address", - "name": "", - "type": "address" - } - ], - "payable": false, - "stateMutability": "view", - "type": "function" - }, - { - "constant": true, - "inputs": [ - { - "internalType": "uint256", - "name": "", - "type": "uint256" - } - ], - "name": "pendingTokens", - "outputs": [ - { - "internalType": "address", - "name": "", - "type": "address" - } - ], - "payable": false, - "stateMutability": "view", - "type": "function" - }, - { - "constant": true, - "inputs": [], - "name": "previousCycle", - "outputs": [ - { - "internalType": "uint256", - "name": "", - "type": "uint256" - } - ], - "payable": false, - "stateMutability": "view", - "type": "function" - }, - { - "constant": true, - "inputs": [ - { - "internalType": "address", - "name": "", - "type": "address" - } - ], - "name": "previousCycleRewardShare", - "outputs": [ - { - "internalType": "uint256", - "name": "", - "type": "uint256" - } - ], - "payable": false, - "stateMutability": "view", - "type": "function" - }, - { - "constant": false, - "inputs": [ - { - "internalType": "address", - "name": "_token", - "type": "address" - } - ], - "name": "registerToken", - "outputs": [], - "payable": false, - "stateMutability": "nonpayable", - "type": "function" - }, - { - "constant": true, - "inputs": [ - { - "internalType": "address", - "name": "", - "type": "address" - } - ], - "name": "registeredTokenIndex", - "outputs": [ - { - "internalType": "uint256", - "name": "", - "type": "uint256" - } - ], - "payable": false, - "stateMutability": "view", - "type": "function" - }, - { - "constant": true, - "inputs": [ - { - "internalType": "uint256", - "name": "", - "type": "uint256" - } - ], - "name": "registeredTokens", - "outputs": [ - { - "internalType": "address", - "name": "", - "type": "address" - } - ], - "payable": false, - "stateMutability": "view", - "type": "function" - }, - { - "constant": false, - "inputs": [], - "name": "renounceOwnership", - "outputs": [], - "payable": false, - "stateMutability": "nonpayable", - "type": "function" - }, - { - "constant": true, - "inputs": [ - { - "internalType": "address", - "name": "", - "type": "address" - }, - { - "internalType": "uint256", - "name": "", - "type": "uint256" - } - ], - "name": "rewardClaimed", - "outputs": [ - { - "internalType": "bool", - "name": "", - "type": "bool" - } - ], - "payable": false, - "stateMutability": "view", - "type": "function" - }, - { - "constant": true, - "inputs": [], - "name": "store", - "outputs": [ - { - "internalType": "contract DarknodePaymentStore", - "name": "", - "type": "address" - } - ], - "payable": false, - "stateMutability": "view", - "type": "function" - }, - { - "constant": true, - "inputs": [ - { - "internalType": "address", - "name": "_token", - "type": "address" - } - ], - "name": "tokenPendingRegistration", - "outputs": [ - { - "internalType": "bool", - "name": "", - "type": "bool" - } - ], - "payable": false, - "stateMutability": "view", - "type": "function" - }, - { - "constant": false, - "inputs": [ - { - "internalType": "address", - "name": "newOwner", - "type": "address" - } - ], - "name": "transferOwnership", - "outputs": [], - "payable": false, - "stateMutability": "nonpayable", - "type": "function" - }, - { - "constant": false, - "inputs": [ - { - "internalType": "contract DarknodePayment", - "name": "_newOwner", - "type": "address" - } - ], - "name": "transferStoreOwnership", - "outputs": [], - "payable": false, - "stateMutability": "nonpayable", - "type": "function" - }, - { - "constant": true, - "inputs": [ - { - "internalType": "address", - "name": "", - "type": "address" - } - ], - "name": "unclaimedRewards", - "outputs": [ - { - "internalType": "uint256", - "name": "", - "type": "uint256" - } - ], - "payable": false, - "stateMutability": "view", - "type": "function" - }, - { - "constant": false, - "inputs": [ - { - "internalType": "address", - "name": "_addr", - "type": "address" - } - ], - "name": "updateCycleChanger", - "outputs": [], - "payable": false, - "stateMutability": "nonpayable", - "type": "function" - }, - { - "constant": false, - "inputs": [ - { - "internalType": "contract DarknodeRegistryLogicV1", - "name": "_darknodeRegistry", - "type": "address" - } - ], - "name": "updateDarknodeRegistry", - "outputs": [], - "payable": false, - "stateMutability": "nonpayable", - "type": "function" - }, - { - "constant": false, - "inputs": [ - { - "internalType": "uint256", - "name": "_percent", - "type": "uint256" - } - ], - "name": "updatePayoutPercentage", - "outputs": [], - "payable": false, - "stateMutability": "nonpayable", - "type": "function" - }, - { - "constant": false, - "inputs": [ - { - "internalType": "address", - "name": "_darknode", - "type": "address" - }, - { - "internalType": "address", - "name": "_token", - "type": "address" - } - ], - "name": "withdraw", - "outputs": [], - "payable": false, - "stateMutability": "nonpayable", - "type": "function" - }, - { - "constant": false, - "inputs": [ - { - "internalType": "address[]", - "name": "_darknodes", - "type": "address[]" - }, - { - "internalType": "address[]", - "name": "_tokens", - "type": "address[]" - } - ], - "name": "withdrawMultiple", - "outputs": [], - "payable": false, - "stateMutability": "nonpayable", - "type": "function" - } - ], - "sourcePath": "~/github/renproject/ren-sol/contracts/DarknodePayment/DarknodePayment.sol", - "compiler": { - "name": "solc", - "version": "0.5.16+commit.9c3226ce.Emscripten.clang" - }, - "networks": { - "42": { - "events": { - "0x9d549c7da0887b9da28aa4897e17429f78345be76b1918673be3430462a4d130": { - "anonymous": false, - "inputs": [ - { - "indexed": true, - "internalType": "address", - "name": "_newCycleChanger", - "type": "address" - }, - { - "indexed": true, - "internalType": "address", - "name": "_oldCycleChanger", - "type": "address" - } - ], - "name": "LogCycleChangerChanged", - "type": "event" - }, - "0x99c5ad5c5f898b30039b8cc54b8c0e6eb423e49bfc965a5999ebad131984e40d": { - "anonymous": false, - "inputs": [ - { - "indexed": true, - "internalType": "address", - "name": "_darknode", - "type": "address" - }, - { - "indexed": false, - "internalType": "uint256", - "name": "_cycle", - "type": "uint256" - } - ], - "name": "LogDarknodeClaim", - "type": "event" - }, - "0xf9f6dd5c784f63cc27c1079c73574a73485a6c2e7f7e2181c5eb2be8c693cfb7": { - "anonymous": false, - "inputs": [ - { - "indexed": true, - "internalType": "contract DarknodeRegistryLogicV1", - "name": "_previousDarknodeRegistry", - "type": "address" - }, - { - "indexed": true, - "internalType": "contract DarknodeRegistryLogicV1", - "name": "_nextDarknodeRegistry", - "type": "address" - } - ], - "name": "LogDarknodeRegistryUpdated", - "type": "event" - }, - "0xd390ef311a884ffc07fe929afa495d106c89041c9b8a73abd2e4f23d6c9c05c0": { - "anonymous": false, - "inputs": [ - { - "indexed": true, - "internalType": "address", - "name": "_darknodeOperator", - "type": "address" - }, - { - "indexed": true, - "internalType": "address", - "name": "_darknodeID", - "type": "address" - }, - { - "indexed": true, - "internalType": "address", - "name": "_token", - "type": "address" - }, - { - "indexed": false, - "internalType": "uint256", - "name": "_value", - "type": "uint256" - } - ], - "name": "LogDarknodeWithdrew", - "type": "event" - }, - "0x5f5d9f6f8b84a834e704e76b91a16ddc49abe97d37d6e61572febf8f1b56f7ce": { - "anonymous": false, - "inputs": [ - { - "indexed": true, - "internalType": "address", - "name": "_payer", - "type": "address" - }, - { - "indexed": true, - "internalType": "address", - "name": "_token", - "type": "address" - }, - { - "indexed": false, - "internalType": "uint256", - "name": "_amount", - "type": "uint256" - } - ], - "name": "LogPaymentReceived", - "type": "event" - }, - "0x0855549798088e618c4eccab56d3fa69209935ef7bc4ffe7200dff654d975643": { - "anonymous": false, - "inputs": [ - { - "indexed": false, - "internalType": "uint256", - "name": "_newPercent", - "type": "uint256" - }, - { - "indexed": false, - "internalType": "uint256", - "name": "_oldPercent", - "type": "uint256" - } - ], - "name": "LogPayoutPercentChanged", - "type": "event" - }, - "0xe46f21bb6906b7d69a6c06d5662a2b6c1c59d134cd7b1235babdb1a70a4b436a": { - "anonymous": false, - "inputs": [ - { - "indexed": true, - "internalType": "address", - "name": "_token", - "type": "address" - } - ], - "name": "LogTokenDeregistered", - "type": "event" - }, - "0xd780ddbc43f0c4efd61c5ca1bc8eeee3368abfb1f97aa7355da9f8bf8431c8ae": { - "anonymous": false, - "inputs": [ - { - "indexed": true, - "internalType": "address", - "name": "_token", - "type": "address" - } - ], - "name": "LogTokenRegistered", - "type": "event" - }, - "0x8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0": { - "anonymous": false, - "inputs": [ - { - "indexed": true, - "internalType": "address", - "name": "previousOwner", - "type": "address" - }, - { - "indexed": true, - "internalType": "address", - "name": "newOwner", - "type": "address" - } - ], - "name": "OwnershipTransferred", - "type": "event" - } - }, - "links": {}, - "address": "0x6C71C070e99a2585A72Ae3C8199d9326Ad9E898F", - "transactionHash": "0xb7d6c6a1e736df6d1ec3277b68d87b94fbf479a024d3d59451704175d4efc97e" - } - }, - "schemaVersion": "3.0.23" -} \ No newline at end of file diff --git a/build/localnet/DarknodePaymentStore.json b/build/localnet/DarknodePaymentStore.json deleted file mode 100644 index 6d083600..00000000 --- a/build/localnet/DarknodePaymentStore.json +++ /dev/null @@ -1,342 +0,0 @@ -{ - "contractName": "DarknodePaymentStore", - "abi": [ - { - "inputs": [ - { - "internalType": "string", - "name": "_VERSION", - "type": "string" - } - ], - "payable": false, - "stateMutability": "nonpayable", - "type": "constructor" - }, - { - "anonymous": false, - "inputs": [ - { - "indexed": true, - "internalType": "address", - "name": "previousOwner", - "type": "address" - }, - { - "indexed": true, - "internalType": "address", - "name": "newOwner", - "type": "address" - } - ], - "name": "OwnershipTransferred", - "type": "event" - }, - { - "payable": true, - "stateMutability": "payable", - "type": "fallback" - }, - { - "constant": true, - "inputs": [], - "name": "ETHEREUM", - "outputs": [ - { - "internalType": "address", - "name": "", - "type": "address" - } - ], - "payable": false, - "stateMutability": "view", - "type": "function" - }, - { - "constant": true, - "inputs": [], - "name": "VERSION", - "outputs": [ - { - "internalType": "string", - "name": "", - "type": "string" - } - ], - "payable": false, - "stateMutability": "view", - "type": "function" - }, - { - "constant": true, - "inputs": [ - { - "internalType": "address", - "name": "_token", - "type": "address" - } - ], - "name": "availableBalance", - "outputs": [ - { - "internalType": "uint256", - "name": "", - "type": "uint256" - } - ], - "payable": false, - "stateMutability": "view", - "type": "function" - }, - { - "constant": false, - "inputs": [], - "name": "claimOwnership", - "outputs": [], - "payable": false, - "stateMutability": "nonpayable", - "type": "function" - }, - { - "constant": true, - "inputs": [ - { - "internalType": "address", - "name": "", - "type": "address" - }, - { - "internalType": "address", - "name": "", - "type": "address" - } - ], - "name": "darknodeBalances", - "outputs": [ - { - "internalType": "uint256", - "name": "", - "type": "uint256" - } - ], - "payable": false, - "stateMutability": "view", - "type": "function" - }, - { - "constant": false, - "inputs": [ - { - "internalType": "address", - "name": "_darknode", - "type": "address" - }, - { - "internalType": "address", - "name": "_token", - "type": "address" - }, - { - "internalType": "uint256", - "name": "_amount", - "type": "uint256" - } - ], - "name": "incrementDarknodeBalance", - "outputs": [], - "payable": false, - "stateMutability": "nonpayable", - "type": "function" - }, - { - "constant": false, - "inputs": [ - { - "internalType": "address", - "name": "_nextOwner", - "type": "address" - } - ], - "name": "initialize", - "outputs": [], - "payable": false, - "stateMutability": "nonpayable", - "type": "function" - }, - { - "constant": true, - "inputs": [], - "name": "isOwner", - "outputs": [ - { - "internalType": "bool", - "name": "", - "type": "bool" - } - ], - "payable": false, - "stateMutability": "view", - "type": "function" - }, - { - "constant": true, - "inputs": [ - { - "internalType": "address", - "name": "", - "type": "address" - } - ], - "name": "lockedBalances", - "outputs": [ - { - "internalType": "uint256", - "name": "", - "type": "uint256" - } - ], - "payable": false, - "stateMutability": "view", - "type": "function" - }, - { - "constant": true, - "inputs": [], - "name": "owner", - "outputs": [ - { - "internalType": "address", - "name": "", - "type": "address" - } - ], - "payable": false, - "stateMutability": "view", - "type": "function" - }, - { - "constant": true, - "inputs": [], - "name": "pendingOwner", - "outputs": [ - { - "internalType": "address", - "name": "", - "type": "address" - } - ], - "payable": false, - "stateMutability": "view", - "type": "function" - }, - { - "constant": false, - "inputs": [], - "name": "renounceOwnership", - "outputs": [], - "payable": false, - "stateMutability": "nonpayable", - "type": "function" - }, - { - "constant": true, - "inputs": [ - { - "internalType": "address", - "name": "_token", - "type": "address" - } - ], - "name": "totalBalance", - "outputs": [ - { - "internalType": "uint256", - "name": "", - "type": "uint256" - } - ], - "payable": false, - "stateMutability": "view", - "type": "function" - }, - { - "constant": false, - "inputs": [ - { - "internalType": "address", - "name": "_darknode", - "type": "address" - }, - { - "internalType": "address", - "name": "_token", - "type": "address" - }, - { - "internalType": "uint256", - "name": "_amount", - "type": "uint256" - }, - { - "internalType": "address payable", - "name": "_recipient", - "type": "address" - } - ], - "name": "transfer", - "outputs": [], - "payable": false, - "stateMutability": "nonpayable", - "type": "function" - }, - { - "constant": false, - "inputs": [ - { - "internalType": "address", - "name": "newOwner", - "type": "address" - } - ], - "name": "transferOwnership", - "outputs": [], - "payable": false, - "stateMutability": "nonpayable", - "type": "function" - } - ], - "sourcePath": "~/github/renproject/ren-sol/contracts/DarknodePayment/DarknodePaymentStore.sol", - "compiler": { - "name": "solc", - "version": "0.5.16+commit.9c3226ce.Emscripten.clang" - }, - "networks": { - "42": { - "events": { - "0x8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0": { - "anonymous": false, - "inputs": [ - { - "indexed": true, - "internalType": "address", - "name": "previousOwner", - "type": "address" - }, - { - "indexed": true, - "internalType": "address", - "name": "newOwner", - "type": "address" - } - ], - "name": "OwnershipTransferred", - "type": "event" - } - }, - "links": {}, - "address": "0x45378fF097d385a342557D291dE59f44f4250982", - "transactionHash": "0x811eb4f3d6ff20255dcdf167993327c6289e4d7a8a8cbdeaa0dc52480f707bda" - } - }, - "schemaVersion": "3.0.23" -} \ No newline at end of file diff --git a/build/localnet/DarknodeRegistryLogicV1.json b/build/localnet/DarknodeRegistryLogicV1.json deleted file mode 100644 index ef8160c1..00000000 --- a/build/localnet/DarknodeRegistryLogicV1.json +++ /dev/null @@ -1,1388 +0,0 @@ -{ - "contractName": "DarknodeRegistryLogicV1", - "abi": [ - { - "anonymous": false, - "inputs": [ - { - "indexed": true, - "internalType": "address", - "name": "_darknodeOperator", - "type": "address" - }, - { - "indexed": true, - "internalType": "address", - "name": "_darknodeID", - "type": "address" - } - ], - "name": "LogDarknodeDeregistered", - "type": "event" - }, - { - "anonymous": false, - "inputs": [ - { - "indexed": true, - "internalType": "contract IDarknodePayment", - "name": "_previousDarknodePayment", - "type": "address" - }, - { - "indexed": true, - "internalType": "contract IDarknodePayment", - "name": "_nextDarknodePayment", - "type": "address" - } - ], - "name": "LogDarknodePaymentUpdated", - "type": "event" - }, - { - "anonymous": false, - "inputs": [ - { - "indexed": true, - "internalType": "address", - "name": "_darknodeOperator", - "type": "address" - }, - { - "indexed": true, - "internalType": "address", - "name": "_darknodeID", - "type": "address" - }, - { - "indexed": false, - "internalType": "uint256", - "name": "_amount", - "type": "uint256" - } - ], - "name": "LogDarknodeRefunded", - "type": "event" - }, - { - "anonymous": false, - "inputs": [ - { - "indexed": true, - "internalType": "address", - "name": "_darknodeOperator", - "type": "address" - }, - { - "indexed": true, - "internalType": "address", - "name": "_darknodeID", - "type": "address" - }, - { - "indexed": false, - "internalType": "uint256", - "name": "_bond", - "type": "uint256" - } - ], - "name": "LogDarknodeRegistered", - "type": "event" - }, - { - "anonymous": false, - "inputs": [ - { - "indexed": true, - "internalType": "address", - "name": "_darknodeOperator", - "type": "address" - }, - { - "indexed": true, - "internalType": "address", - "name": "_darknodeID", - "type": "address" - }, - { - "indexed": true, - "internalType": "address", - "name": "_challenger", - "type": "address" - }, - { - "indexed": false, - "internalType": "uint256", - "name": "_percentage", - "type": "uint256" - } - ], - "name": "LogDarknodeSlashed", - "type": "event" - }, - { - "anonymous": false, - "inputs": [ - { - "indexed": false, - "internalType": "uint256", - "name": "_previousMinimumBond", - "type": "uint256" - }, - { - "indexed": false, - "internalType": "uint256", - "name": "_nextMinimumBond", - "type": "uint256" - } - ], - "name": "LogMinimumBondUpdated", - "type": "event" - }, - { - "anonymous": false, - "inputs": [ - { - "indexed": false, - "internalType": "uint256", - "name": "_previousMinimumEpochInterval", - "type": "uint256" - }, - { - "indexed": false, - "internalType": "uint256", - "name": "_nextMinimumEpochInterval", - "type": "uint256" - } - ], - "name": "LogMinimumEpochIntervalUpdated", - "type": "event" - }, - { - "anonymous": false, - "inputs": [ - { - "indexed": false, - "internalType": "uint256", - "name": "_previousMinimumPodSize", - "type": "uint256" - }, - { - "indexed": false, - "internalType": "uint256", - "name": "_nextMinimumPodSize", - "type": "uint256" - } - ], - "name": "LogMinimumPodSizeUpdated", - "type": "event" - }, - { - "anonymous": false, - "inputs": [ - { - "indexed": true, - "internalType": "uint256", - "name": "epochhash", - "type": "uint256" - } - ], - "name": "LogNewEpoch", - "type": "event" - }, - { - "anonymous": false, - "inputs": [ - { - "indexed": true, - "internalType": "address", - "name": "_previousSlasher", - "type": "address" - }, - { - "indexed": true, - "internalType": "address", - "name": "_nextSlasher", - "type": "address" - } - ], - "name": "LogSlasherUpdated", - "type": "event" - }, - { - "anonymous": false, - "inputs": [ - { - "indexed": true, - "internalType": "address", - "name": "previousOwner", - "type": "address" - }, - { - "indexed": true, - "internalType": "address", - "name": "newOwner", - "type": "address" - } - ], - "name": "OwnershipTransferred", - "type": "event" - }, - { - "constant": true, - "inputs": [], - "name": "VERSION", - "outputs": [ - { - "internalType": "string", - "name": "", - "type": "string" - } - ], - "payable": false, - "stateMutability": "view", - "type": "function" - }, - { - "constant": false, - "inputs": [ - { - "internalType": "address", - "name": "_token", - "type": "address" - } - ], - "name": "blacklistRecoverableToken", - "outputs": [], - "payable": false, - "stateMutability": "nonpayable", - "type": "function" - }, - { - "constant": false, - "inputs": [], - "name": "claimOwnership", - "outputs": [], - "payable": false, - "stateMutability": "nonpayable", - "type": "function" - }, - { - "constant": false, - "inputs": [], - "name": "claimStoreOwnership", - "outputs": [], - "payable": false, - "stateMutability": "nonpayable", - "type": "function" - }, - { - "constant": true, - "inputs": [], - "name": "currentEpoch", - "outputs": [ - { - "internalType": "uint256", - "name": "epochhash", - "type": "uint256" - }, - { - "internalType": "uint256", - "name": "blocktime", - "type": "uint256" - } - ], - "payable": false, - "stateMutability": "view", - "type": "function" - }, - { - "constant": true, - "inputs": [], - "name": "darknodePayment", - "outputs": [ - { - "internalType": "contract IDarknodePayment", - "name": "", - "type": "address" - } - ], - "payable": false, - "stateMutability": "view", - "type": "function" - }, - { - "constant": false, - "inputs": [ - { - "internalType": "address", - "name": "_darknodeID", - "type": "address" - } - ], - "name": "deregister", - "outputs": [], - "payable": false, - "stateMutability": "nonpayable", - "type": "function" - }, - { - "constant": true, - "inputs": [], - "name": "deregistrationInterval", - "outputs": [ - { - "internalType": "uint256", - "name": "", - "type": "uint256" - } - ], - "payable": false, - "stateMutability": "view", - "type": "function" - }, - { - "constant": false, - "inputs": [], - "name": "epoch", - "outputs": [], - "payable": false, - "stateMutability": "nonpayable", - "type": "function" - }, - { - "constant": true, - "inputs": [ - { - "internalType": "address", - "name": "_darknodeID", - "type": "address" - } - ], - "name": "getDarknodeBond", - "outputs": [ - { - "internalType": "uint256", - "name": "", - "type": "uint256" - } - ], - "payable": false, - "stateMutability": "view", - "type": "function" - }, - { - "constant": true, - "inputs": [ - { - "internalType": "address", - "name": "_darknodeID", - "type": "address" - } - ], - "name": "getDarknodeOperator", - "outputs": [ - { - "internalType": "address payable", - "name": "", - "type": "address" - } - ], - "payable": false, - "stateMutability": "view", - "type": "function" - }, - { - "constant": true, - "inputs": [ - { - "internalType": "address", - "name": "_darknodeID", - "type": "address" - } - ], - "name": "getDarknodePublicKey", - "outputs": [ - { - "internalType": "bytes", - "name": "", - "type": "bytes" - } - ], - "payable": false, - "stateMutability": "view", - "type": "function" - }, - { - "constant": true, - "inputs": [ - { - "internalType": "address", - "name": "_start", - "type": "address" - }, - { - "internalType": "uint256", - "name": "_count", - "type": "uint256" - } - ], - "name": "getDarknodes", - "outputs": [ - { - "internalType": "address[]", - "name": "", - "type": "address[]" - } - ], - "payable": false, - "stateMutability": "view", - "type": "function" - }, - { - "constant": true, - "inputs": [ - { - "internalType": "address", - "name": "_start", - "type": "address" - }, - { - "internalType": "uint256", - "name": "_count", - "type": "uint256" - } - ], - "name": "getPreviousDarknodes", - "outputs": [ - { - "internalType": "address[]", - "name": "", - "type": "address[]" - } - ], - "payable": false, - "stateMutability": "view", - "type": "function" - }, - { - "constant": false, - "inputs": [ - { - "internalType": "string", - "name": "_VERSION", - "type": "string" - }, - { - "internalType": "contract RenToken", - "name": "_renAddress", - "type": "address" - }, - { - "internalType": "contract DarknodeRegistryStore", - "name": "_storeAddress", - "type": "address" - }, - { - "internalType": "uint256", - "name": "_minimumBond", - "type": "uint256" - }, - { - "internalType": "uint256", - "name": "_minimumPodSize", - "type": "uint256" - }, - { - "internalType": "uint256", - "name": "_minimumEpochIntervalSeconds", - "type": "uint256" - }, - { - "internalType": "uint256", - "name": "_deregistrationIntervalSeconds", - "type": "uint256" - } - ], - "name": "initialize", - "outputs": [], - "payable": false, - "stateMutability": "nonpayable", - "type": "function" - }, - { - "constant": false, - "inputs": [ - { - "internalType": "address", - "name": "_nextOwner", - "type": "address" - } - ], - "name": "initialize", - "outputs": [], - "payable": false, - "stateMutability": "nonpayable", - "type": "function" - }, - { - "constant": true, - "inputs": [ - { - "internalType": "address", - "name": "_darknodeID", - "type": "address" - } - ], - "name": "isDeregisterable", - "outputs": [ - { - "internalType": "bool", - "name": "", - "type": "bool" - } - ], - "payable": false, - "stateMutability": "view", - "type": "function" - }, - { - "constant": true, - "inputs": [ - { - "internalType": "address", - "name": "_darknodeID", - "type": "address" - } - ], - "name": "isDeregistered", - "outputs": [ - { - "internalType": "bool", - "name": "", - "type": "bool" - } - ], - "payable": false, - "stateMutability": "view", - "type": "function" - }, - { - "constant": true, - "inputs": [], - "name": "isOwner", - "outputs": [ - { - "internalType": "bool", - "name": "", - "type": "bool" - } - ], - "payable": false, - "stateMutability": "view", - "type": "function" - }, - { - "constant": true, - "inputs": [ - { - "internalType": "address", - "name": "_darknodeID", - "type": "address" - } - ], - "name": "isPendingDeregistration", - "outputs": [ - { - "internalType": "bool", - "name": "", - "type": "bool" - } - ], - "payable": false, - "stateMutability": "view", - "type": "function" - }, - { - "constant": true, - "inputs": [ - { - "internalType": "address", - "name": "_darknodeID", - "type": "address" - } - ], - "name": "isPendingRegistration", - "outputs": [ - { - "internalType": "bool", - "name": "", - "type": "bool" - } - ], - "payable": false, - "stateMutability": "view", - "type": "function" - }, - { - "constant": true, - "inputs": [ - { - "internalType": "address", - "name": "_darknodeID", - "type": "address" - } - ], - "name": "isRefundable", - "outputs": [ - { - "internalType": "bool", - "name": "", - "type": "bool" - } - ], - "payable": false, - "stateMutability": "view", - "type": "function" - }, - { - "constant": true, - "inputs": [ - { - "internalType": "address", - "name": "_darknodeID", - "type": "address" - } - ], - "name": "isRefunded", - "outputs": [ - { - "internalType": "bool", - "name": "", - "type": "bool" - } - ], - "payable": false, - "stateMutability": "view", - "type": "function" - }, - { - "constant": true, - "inputs": [ - { - "internalType": "address", - "name": "_darknodeID", - "type": "address" - } - ], - "name": "isRegistered", - "outputs": [ - { - "internalType": "bool", - "name": "", - "type": "bool" - } - ], - "payable": false, - "stateMutability": "view", - "type": "function" - }, - { - "constant": true, - "inputs": [ - { - "internalType": "address", - "name": "_darknodeID", - "type": "address" - } - ], - "name": "isRegisteredInPreviousEpoch", - "outputs": [ - { - "internalType": "bool", - "name": "", - "type": "bool" - } - ], - "payable": false, - "stateMutability": "view", - "type": "function" - }, - { - "constant": true, - "inputs": [], - "name": "minimumBond", - "outputs": [ - { - "internalType": "uint256", - "name": "", - "type": "uint256" - } - ], - "payable": false, - "stateMutability": "view", - "type": "function" - }, - { - "constant": true, - "inputs": [], - "name": "minimumEpochInterval", - "outputs": [ - { - "internalType": "uint256", - "name": "", - "type": "uint256" - } - ], - "payable": false, - "stateMutability": "view", - "type": "function" - }, - { - "constant": true, - "inputs": [], - "name": "minimumPodSize", - "outputs": [ - { - "internalType": "uint256", - "name": "", - "type": "uint256" - } - ], - "payable": false, - "stateMutability": "view", - "type": "function" - }, - { - "constant": true, - "inputs": [], - "name": "nextMinimumBond", - "outputs": [ - { - "internalType": "uint256", - "name": "", - "type": "uint256" - } - ], - "payable": false, - "stateMutability": "view", - "type": "function" - }, - { - "constant": true, - "inputs": [], - "name": "nextMinimumEpochInterval", - "outputs": [ - { - "internalType": "uint256", - "name": "", - "type": "uint256" - } - ], - "payable": false, - "stateMutability": "view", - "type": "function" - }, - { - "constant": true, - "inputs": [], - "name": "nextMinimumPodSize", - "outputs": [ - { - "internalType": "uint256", - "name": "", - "type": "uint256" - } - ], - "payable": false, - "stateMutability": "view", - "type": "function" - }, - { - "constant": true, - "inputs": [], - "name": "nextSlasher", - "outputs": [ - { - "internalType": "contract IDarknodeSlasher", - "name": "", - "type": "address" - } - ], - "payable": false, - "stateMutability": "view", - "type": "function" - }, - { - "constant": true, - "inputs": [], - "name": "numDarknodes", - "outputs": [ - { - "internalType": "uint256", - "name": "", - "type": "uint256" - } - ], - "payable": false, - "stateMutability": "view", - "type": "function" - }, - { - "constant": true, - "inputs": [], - "name": "numDarknodesNextEpoch", - "outputs": [ - { - "internalType": "uint256", - "name": "", - "type": "uint256" - } - ], - "payable": false, - "stateMutability": "view", - "type": "function" - }, - { - "constant": true, - "inputs": [], - "name": "numDarknodesPreviousEpoch", - "outputs": [ - { - "internalType": "uint256", - "name": "", - "type": "uint256" - } - ], - "payable": false, - "stateMutability": "view", - "type": "function" - }, - { - "constant": true, - "inputs": [], - "name": "owner", - "outputs": [ - { - "internalType": "address", - "name": "", - "type": "address" - } - ], - "payable": false, - "stateMutability": "view", - "type": "function" - }, - { - "constant": true, - "inputs": [], - "name": "pendingOwner", - "outputs": [ - { - "internalType": "address", - "name": "", - "type": "address" - } - ], - "payable": false, - "stateMutability": "view", - "type": "function" - }, - { - "constant": true, - "inputs": [], - "name": "previousEpoch", - "outputs": [ - { - "internalType": "uint256", - "name": "epochhash", - "type": "uint256" - }, - { - "internalType": "uint256", - "name": "blocktime", - "type": "uint256" - } - ], - "payable": false, - "stateMutability": "view", - "type": "function" - }, - { - "constant": false, - "inputs": [ - { - "internalType": "address", - "name": "_token", - "type": "address" - } - ], - "name": "recoverTokens", - "outputs": [], - "payable": false, - "stateMutability": "nonpayable", - "type": "function" - }, - { - "constant": false, - "inputs": [ - { - "internalType": "address", - "name": "_darknodeID", - "type": "address" - } - ], - "name": "refund", - "outputs": [], - "payable": false, - "stateMutability": "nonpayable", - "type": "function" - }, - { - "constant": false, - "inputs": [ - { - "internalType": "address", - "name": "_darknodeID", - "type": "address" - }, - { - "internalType": "bytes", - "name": "_publicKey", - "type": "bytes" - } - ], - "name": "register", - "outputs": [], - "payable": false, - "stateMutability": "nonpayable", - "type": "function" - }, - { - "constant": true, - "inputs": [], - "name": "ren", - "outputs": [ - { - "internalType": "contract RenToken", - "name": "", - "type": "address" - } - ], - "payable": false, - "stateMutability": "view", - "type": "function" - }, - { - "constant": false, - "inputs": [], - "name": "renounceOwnership", - "outputs": [], - "payable": false, - "stateMutability": "nonpayable", - "type": "function" - }, - { - "constant": false, - "inputs": [ - { - "internalType": "address", - "name": "_guilty", - "type": "address" - }, - { - "internalType": "address", - "name": "_challenger", - "type": "address" - }, - { - "internalType": "uint256", - "name": "_percentage", - "type": "uint256" - } - ], - "name": "slash", - "outputs": [], - "payable": false, - "stateMutability": "nonpayable", - "type": "function" - }, - { - "constant": true, - "inputs": [], - "name": "slasher", - "outputs": [ - { - "internalType": "contract IDarknodeSlasher", - "name": "", - "type": "address" - } - ], - "payable": false, - "stateMutability": "view", - "type": "function" - }, - { - "constant": true, - "inputs": [], - "name": "store", - "outputs": [ - { - "internalType": "contract DarknodeRegistryStore", - "name": "", - "type": "address" - } - ], - "payable": false, - "stateMutability": "view", - "type": "function" - }, - { - "constant": false, - "inputs": [ - { - "internalType": "address", - "name": "newOwner", - "type": "address" - } - ], - "name": "transferOwnership", - "outputs": [], - "payable": false, - "stateMutability": "nonpayable", - "type": "function" - }, - { - "constant": false, - "inputs": [ - { - "internalType": "contract DarknodeRegistryLogicV1", - "name": "_newOwner", - "type": "address" - } - ], - "name": "transferStoreOwnership", - "outputs": [], - "payable": false, - "stateMutability": "nonpayable", - "type": "function" - }, - { - "constant": false, - "inputs": [ - { - "internalType": "contract IDarknodePayment", - "name": "_darknodePayment", - "type": "address" - } - ], - "name": "updateDarknodePayment", - "outputs": [], - "payable": false, - "stateMutability": "nonpayable", - "type": "function" - }, - { - "constant": false, - "inputs": [ - { - "internalType": "uint256", - "name": "_nextMinimumBond", - "type": "uint256" - } - ], - "name": "updateMinimumBond", - "outputs": [], - "payable": false, - "stateMutability": "nonpayable", - "type": "function" - }, - { - "constant": false, - "inputs": [ - { - "internalType": "uint256", - "name": "_nextMinimumEpochInterval", - "type": "uint256" - } - ], - "name": "updateMinimumEpochInterval", - "outputs": [], - "payable": false, - "stateMutability": "nonpayable", - "type": "function" - }, - { - "constant": false, - "inputs": [ - { - "internalType": "uint256", - "name": "_nextMinimumPodSize", - "type": "uint256" - } - ], - "name": "updateMinimumPodSize", - "outputs": [], - "payable": false, - "stateMutability": "nonpayable", - "type": "function" - }, - { - "constant": false, - "inputs": [ - { - "internalType": "contract IDarknodeSlasher", - "name": "_slasher", - "type": "address" - } - ], - "name": "updateSlasher", - "outputs": [], - "payable": false, - "stateMutability": "nonpayable", - "type": "function" - } - ], - "sourcePath": "~/github/renproject/ren-sol/contracts/DarknodeRegistry/DarknodeRegistry.sol", - "compiler": { - "name": "solc", - "version": "0.5.16+commit.9c3226ce.Emscripten.clang" - }, - "networks": { - "42": { - "events": { - "0xf73268ea792d9dbf3e21a95ec9711f0b535c5f6c99f6b4f54f6766838086b842": { - "anonymous": false, - "inputs": [ - { - "indexed": true, - "internalType": "address", - "name": "_darknodeOperator", - "type": "address" - }, - { - "indexed": true, - "internalType": "address", - "name": "_darknodeID", - "type": "address" - } - ], - "name": "LogDarknodeDeregistered", - "type": "event" - }, - "0xe3e25a79a5ba7c894fcc55794b2712e225537e89f777b9b9df307cc5504ba0e9": { - "anonymous": false, - "inputs": [ - { - "indexed": true, - "internalType": "contract IDarknodePayment", - "name": "_previousDarknodePayment", - "type": "address" - }, - { - "indexed": true, - "internalType": "contract IDarknodePayment", - "name": "_nextDarknodePayment", - "type": "address" - } - ], - "name": "LogDarknodePaymentUpdated", - "type": "event" - }, - "0x3eeec3803912dfbf607c8488e8aee15f415e51c9936250a5142642c9e470c128": { - "anonymous": false, - "inputs": [ - { - "indexed": true, - "internalType": "address", - "name": "_darknodeOperator", - "type": "address" - }, - { - "indexed": true, - "internalType": "address", - "name": "_darknodeID", - "type": "address" - }, - { - "indexed": false, - "internalType": "uint256", - "name": "_amount", - "type": "uint256" - } - ], - "name": "LogDarknodeRefunded", - "type": "event" - }, - "0x7c56cb7f63b6922d24414bf7c2b2c40c7ea1ea637c3f400efa766a85ecf2f093": { - "anonymous": false, - "inputs": [ - { - "indexed": true, - "internalType": "address", - "name": "_darknodeOperator", - "type": "address" - }, - { - "indexed": true, - "internalType": "address", - "name": "_darknodeID", - "type": "address" - }, - { - "indexed": false, - "internalType": "uint256", - "name": "_bond", - "type": "uint256" - } - ], - "name": "LogDarknodeRegistered", - "type": "event" - }, - "0xb43e0cc88b4d6ae901c6c99d1b58769cb8c9ded8e6f20a0d3712d09bf9e1ea77": { - "anonymous": false, - "inputs": [ - { - "indexed": true, - "internalType": "address", - "name": "_darknodeOperator", - "type": "address" - }, - { - "indexed": true, - "internalType": "address", - "name": "_darknodeID", - "type": "address" - }, - { - "indexed": true, - "internalType": "address", - "name": "_challenger", - "type": "address" - }, - { - "indexed": false, - "internalType": "uint256", - "name": "_percentage", - "type": "uint256" - } - ], - "name": "LogDarknodeSlashed", - "type": "event" - }, - "0x7c77c94944e9e4e5b0d46f1297127d060020792687cd743401d782346c68f655": { - "anonymous": false, - "inputs": [ - { - "indexed": false, - "internalType": "uint256", - "name": "_previousMinimumBond", - "type": "uint256" - }, - { - "indexed": false, - "internalType": "uint256", - "name": "_nextMinimumBond", - "type": "uint256" - } - ], - "name": "LogMinimumBondUpdated", - "type": "event" - }, - "0xb218cde2730b79a0667ddf869466ee66a12ef56fe65fa4986a590f8a7108c9de": { - "anonymous": false, - "inputs": [ - { - "indexed": false, - "internalType": "uint256", - "name": "_previousMinimumEpochInterval", - "type": "uint256" - }, - { - "indexed": false, - "internalType": "uint256", - "name": "_nextMinimumEpochInterval", - "type": "uint256" - } - ], - "name": "LogMinimumEpochIntervalUpdated", - "type": "event" - }, - "0x6d520e46e5714982ddf8cb6216bcb3e1c1d5b79d337afc305335f819394f5d6a": { - "anonymous": false, - "inputs": [ - { - "indexed": false, - "internalType": "uint256", - "name": "_previousMinimumPodSize", - "type": "uint256" - }, - { - "indexed": false, - "internalType": "uint256", - "name": "_nextMinimumPodSize", - "type": "uint256" - } - ], - "name": "LogMinimumPodSizeUpdated", - "type": "event" - }, - "0xaf2fc4796f2932ce294c3684deffe5098d3ef65dc2dd64efa80ef94eed88b01e": { - "anonymous": false, - "inputs": [ - { - "indexed": true, - "internalType": "uint256", - "name": "epochhash", - "type": "uint256" - } - ], - "name": "LogNewEpoch", - "type": "event" - }, - "0x933228a1c3ba8fadd3ce47a9db5b898be647f89af99ba7c1b9a655f59ea306c8": { - "anonymous": false, - "inputs": [ - { - "indexed": true, - "internalType": "address", - "name": "_previousSlasher", - "type": "address" - }, - { - "indexed": true, - "internalType": "address", - "name": "_nextSlasher", - "type": "address" - } - ], - "name": "LogSlasherUpdated", - "type": "event" - }, - "0x8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0": { - "anonymous": false, - "inputs": [ - { - "indexed": true, - "internalType": "address", - "name": "previousOwner", - "type": "address" - }, - { - "indexed": true, - "internalType": "address", - "name": "newOwner", - "type": "address" - } - ], - "name": "OwnershipTransferred", - "type": "event" - } - }, - "links": {}, - "address": "0xCd5e48F6F48abAFA46266395AD1C1B7b2219d0aE", - "transactionHash": "0x603d635eea04b40d9178934b6bf008c3e8928802168c8ac172f49d81acc0b988" - } - }, - "schemaVersion": "3.0.23" -} \ No newline at end of file diff --git a/build/localnet/DarknodeRegistryProxy.json b/build/localnet/DarknodeRegistryProxy.json deleted file mode 100644 index 1e51112f..00000000 --- a/build/localnet/DarknodeRegistryProxy.json +++ /dev/null @@ -1,214 +0,0 @@ -{ - "contractName": "DarknodeRegistryProxy", - "abi": [ - { - "anonymous": false, - "inputs": [ - { - "indexed": false, - "internalType": "address", - "name": "previousAdmin", - "type": "address" - }, - { - "indexed": false, - "internalType": "address", - "name": "newAdmin", - "type": "address" - } - ], - "name": "AdminChanged", - "type": "event" - }, - { - "anonymous": false, - "inputs": [ - { - "indexed": true, - "internalType": "address", - "name": "implementation", - "type": "address" - } - ], - "name": "Upgraded", - "type": "event" - }, - { - "payable": true, - "stateMutability": "payable", - "type": "fallback" - }, - { - "constant": false, - "inputs": [], - "name": "admin", - "outputs": [ - { - "internalType": "address", - "name": "", - "type": "address" - } - ], - "payable": false, - "stateMutability": "nonpayable", - "type": "function" - }, - { - "constant": false, - "inputs": [ - { - "internalType": "address", - "name": "newAdmin", - "type": "address" - } - ], - "name": "changeAdmin", - "outputs": [], - "payable": false, - "stateMutability": "nonpayable", - "type": "function" - }, - { - "constant": false, - "inputs": [], - "name": "implementation", - "outputs": [ - { - "internalType": "address", - "name": "", - "type": "address" - } - ], - "payable": false, - "stateMutability": "nonpayable", - "type": "function" - }, - { - "constant": false, - "inputs": [ - { - "internalType": "address", - "name": "_logic", - "type": "address" - }, - { - "internalType": "address", - "name": "_admin", - "type": "address" - }, - { - "internalType": "bytes", - "name": "_data", - "type": "bytes" - } - ], - "name": "initialize", - "outputs": [], - "payable": true, - "stateMutability": "payable", - "type": "function" - }, - { - "constant": false, - "inputs": [ - { - "internalType": "address", - "name": "_logic", - "type": "address" - }, - { - "internalType": "bytes", - "name": "_data", - "type": "bytes" - } - ], - "name": "initialize", - "outputs": [], - "payable": true, - "stateMutability": "payable", - "type": "function" - }, - { - "constant": false, - "inputs": [ - { - "internalType": "address", - "name": "newImplementation", - "type": "address" - } - ], - "name": "upgradeTo", - "outputs": [], - "payable": false, - "stateMutability": "nonpayable", - "type": "function" - }, - { - "constant": false, - "inputs": [ - { - "internalType": "address", - "name": "newImplementation", - "type": "address" - }, - { - "internalType": "bytes", - "name": "data", - "type": "bytes" - } - ], - "name": "upgradeToAndCall", - "outputs": [], - "payable": true, - "stateMutability": "payable", - "type": "function" - } - ], - "sourcePath": "~/github/renproject/ren-sol/contracts/DarknodeRegistry/DarknodeRegistry.sol", - "compiler": { - "name": "solc", - "version": "0.5.16+commit.9c3226ce.Emscripten.clang" - }, - "networks": { - "42": { - "events": { - "0x7e644d79422f17c01e4894b5f4f588d331ebfa28653d42ae832dc59e38c9798f": { - "anonymous": false, - "inputs": [ - { - "indexed": false, - "internalType": "address", - "name": "previousAdmin", - "type": "address" - }, - { - "indexed": false, - "internalType": "address", - "name": "newAdmin", - "type": "address" - } - ], - "name": "AdminChanged", - "type": "event" - }, - "0xbc7cd75a20ee27fd9adebab32041f755214dbc6bffa90cc0225b39da2e5c2d3b": { - "anonymous": false, - "inputs": [ - { - "indexed": true, - "internalType": "address", - "name": "implementation", - "type": "address" - } - ], - "name": "Upgraded", - "type": "event" - } - }, - "links": {}, - "address": "0x6adCF5Ba6e299Cf18D839795997A3c6844f37175", - "transactionHash": "0x44339433387ee17c64f394212ea4158b26046a091b990725a4adcb517abfe2d9" - } - }, - "schemaVersion": "3.0.23" -} \ No newline at end of file diff --git a/build/localnet/DarknodeRegistryStore.json b/build/localnet/DarknodeRegistryStore.json deleted file mode 100644 index ff34641f..00000000 --- a/build/localnet/DarknodeRegistryStore.json +++ /dev/null @@ -1,464 +0,0 @@ -{ - "contractName": "DarknodeRegistryStore", - "abi": [ - { - "inputs": [ - { - "internalType": "string", - "name": "_VERSION", - "type": "string" - }, - { - "internalType": "contract RenToken", - "name": "_ren", - "type": "address" - } - ], - "payable": false, - "stateMutability": "nonpayable", - "type": "constructor" - }, - { - "anonymous": false, - "inputs": [ - { - "indexed": true, - "internalType": "address", - "name": "previousOwner", - "type": "address" - }, - { - "indexed": true, - "internalType": "address", - "name": "newOwner", - "type": "address" - } - ], - "name": "OwnershipTransferred", - "type": "event" - }, - { - "constant": true, - "inputs": [], - "name": "VERSION", - "outputs": [ - { - "internalType": "string", - "name": "", - "type": "string" - } - ], - "payable": false, - "stateMutability": "view", - "type": "function" - }, - { - "constant": false, - "inputs": [ - { - "internalType": "address", - "name": "_darknodeID", - "type": "address" - }, - { - "internalType": "address payable", - "name": "_darknodeOperator", - "type": "address" - }, - { - "internalType": "uint256", - "name": "_bond", - "type": "uint256" - }, - { - "internalType": "bytes", - "name": "_publicKey", - "type": "bytes" - }, - { - "internalType": "uint256", - "name": "_registeredAt", - "type": "uint256" - }, - { - "internalType": "uint256", - "name": "_deregisteredAt", - "type": "uint256" - } - ], - "name": "appendDarknode", - "outputs": [], - "payable": false, - "stateMutability": "nonpayable", - "type": "function" - }, - { - "constant": true, - "inputs": [], - "name": "begin", - "outputs": [ - { - "internalType": "address", - "name": "", - "type": "address" - } - ], - "payable": false, - "stateMutability": "view", - "type": "function" - }, - { - "constant": false, - "inputs": [ - { - "internalType": "address", - "name": "_token", - "type": "address" - } - ], - "name": "blacklistRecoverableToken", - "outputs": [], - "payable": false, - "stateMutability": "nonpayable", - "type": "function" - }, - { - "constant": false, - "inputs": [], - "name": "claimOwnership", - "outputs": [], - "payable": false, - "stateMutability": "nonpayable", - "type": "function" - }, - { - "constant": true, - "inputs": [ - { - "internalType": "address", - "name": "darknodeID", - "type": "address" - } - ], - "name": "darknodeBond", - "outputs": [ - { - "internalType": "uint256", - "name": "", - "type": "uint256" - } - ], - "payable": false, - "stateMutability": "view", - "type": "function" - }, - { - "constant": true, - "inputs": [ - { - "internalType": "address", - "name": "darknodeID", - "type": "address" - } - ], - "name": "darknodeDeregisteredAt", - "outputs": [ - { - "internalType": "uint256", - "name": "", - "type": "uint256" - } - ], - "payable": false, - "stateMutability": "view", - "type": "function" - }, - { - "constant": true, - "inputs": [ - { - "internalType": "address", - "name": "darknodeID", - "type": "address" - } - ], - "name": "darknodeOperator", - "outputs": [ - { - "internalType": "address payable", - "name": "", - "type": "address" - } - ], - "payable": false, - "stateMutability": "view", - "type": "function" - }, - { - "constant": true, - "inputs": [ - { - "internalType": "address", - "name": "darknodeID", - "type": "address" - } - ], - "name": "darknodePublicKey", - "outputs": [ - { - "internalType": "bytes", - "name": "", - "type": "bytes" - } - ], - "payable": false, - "stateMutability": "view", - "type": "function" - }, - { - "constant": true, - "inputs": [ - { - "internalType": "address", - "name": "darknodeID", - "type": "address" - } - ], - "name": "darknodeRegisteredAt", - "outputs": [ - { - "internalType": "uint256", - "name": "", - "type": "uint256" - } - ], - "payable": false, - "stateMutability": "view", - "type": "function" - }, - { - "constant": false, - "inputs": [ - { - "internalType": "address", - "name": "_nextOwner", - "type": "address" - } - ], - "name": "initialize", - "outputs": [], - "payable": false, - "stateMutability": "nonpayable", - "type": "function" - }, - { - "constant": true, - "inputs": [], - "name": "isOwner", - "outputs": [ - { - "internalType": "bool", - "name": "", - "type": "bool" - } - ], - "payable": false, - "stateMutability": "view", - "type": "function" - }, - { - "constant": true, - "inputs": [ - { - "internalType": "address", - "name": "darknodeID", - "type": "address" - } - ], - "name": "next", - "outputs": [ - { - "internalType": "address", - "name": "", - "type": "address" - } - ], - "payable": false, - "stateMutability": "view", - "type": "function" - }, - { - "constant": true, - "inputs": [], - "name": "owner", - "outputs": [ - { - "internalType": "address", - "name": "", - "type": "address" - } - ], - "payable": false, - "stateMutability": "view", - "type": "function" - }, - { - "constant": true, - "inputs": [], - "name": "pendingOwner", - "outputs": [ - { - "internalType": "address", - "name": "", - "type": "address" - } - ], - "payable": false, - "stateMutability": "view", - "type": "function" - }, - { - "constant": false, - "inputs": [ - { - "internalType": "address", - "name": "_token", - "type": "address" - } - ], - "name": "recoverTokens", - "outputs": [], - "payable": false, - "stateMutability": "nonpayable", - "type": "function" - }, - { - "constant": false, - "inputs": [ - { - "internalType": "address", - "name": "darknodeID", - "type": "address" - } - ], - "name": "removeDarknode", - "outputs": [], - "payable": false, - "stateMutability": "nonpayable", - "type": "function" - }, - { - "constant": true, - "inputs": [], - "name": "ren", - "outputs": [ - { - "internalType": "contract RenToken", - "name": "", - "type": "address" - } - ], - "payable": false, - "stateMutability": "view", - "type": "function" - }, - { - "constant": false, - "inputs": [], - "name": "renounceOwnership", - "outputs": [], - "payable": false, - "stateMutability": "nonpayable", - "type": "function" - }, - { - "constant": false, - "inputs": [ - { - "internalType": "address", - "name": "newOwner", - "type": "address" - } - ], - "name": "transferOwnership", - "outputs": [], - "payable": false, - "stateMutability": "nonpayable", - "type": "function" - }, - { - "constant": false, - "inputs": [ - { - "internalType": "address", - "name": "darknodeID", - "type": "address" - }, - { - "internalType": "uint256", - "name": "decreasedBond", - "type": "uint256" - } - ], - "name": "updateDarknodeBond", - "outputs": [], - "payable": false, - "stateMutability": "nonpayable", - "type": "function" - }, - { - "constant": false, - "inputs": [ - { - "internalType": "address", - "name": "darknodeID", - "type": "address" - }, - { - "internalType": "uint256", - "name": "deregisteredAt", - "type": "uint256" - } - ], - "name": "updateDarknodeDeregisteredAt", - "outputs": [], - "payable": false, - "stateMutability": "nonpayable", - "type": "function" - } - ], - "sourcePath": "~/github/renproject/ren-sol/contracts/DarknodeRegistry/DarknodeRegistryStore.sol", - "compiler": { - "name": "solc", - "version": "0.5.16+commit.9c3226ce.Emscripten.clang" - }, - "networks": { - "42": { - "events": { - "0x8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0": { - "anonymous": false, - "inputs": [ - { - "indexed": true, - "internalType": "address", - "name": "previousOwner", - "type": "address" - }, - { - "indexed": true, - "internalType": "address", - "name": "newOwner", - "type": "address" - } - ], - "name": "OwnershipTransferred", - "type": "event" - } - }, - "links": {}, - "address": "0xB38e11c615e14aE44173170763753733410D7432", - "transactionHash": "0x1f75d42e5f83f84ae798e4daef8e1e509dff7e28f2ea45449ce485f335910f9d" - } - }, - "schemaVersion": "3.0.23" -} \ No newline at end of file diff --git a/build/localnet/DarknodeSlasher.json b/build/localnet/DarknodeSlasher.json deleted file mode 100644 index ec6e1b8e..00000000 --- a/build/localnet/DarknodeSlasher.json +++ /dev/null @@ -1,609 +0,0 @@ -{ - "contractName": "DarknodeSlasher", - "abi": [ - { - "inputs": [ - { - "internalType": "contract DarknodeRegistryLogicV1", - "name": "_darknodeRegistry", - "type": "address" - } - ], - "payable": false, - "stateMutability": "nonpayable", - "type": "constructor" - }, - { - "anonymous": false, - "inputs": [ - { - "indexed": true, - "internalType": "contract DarknodeRegistryLogicV1", - "name": "_previousDarknodeRegistry", - "type": "address" - }, - { - "indexed": true, - "internalType": "contract DarknodeRegistryLogicV1", - "name": "_nextDarknodeRegistry", - "type": "address" - } - ], - "name": "LogDarknodeRegistryUpdated", - "type": "event" - }, - { - "anonymous": false, - "inputs": [ - { - "indexed": true, - "internalType": "address", - "name": "previousOwner", - "type": "address" - }, - { - "indexed": true, - "internalType": "address", - "name": "newOwner", - "type": "address" - } - ], - "name": "OwnershipTransferred", - "type": "event" - }, - { - "constant": false, - "inputs": [ - { - "internalType": "address", - "name": "_guilty", - "type": "address" - } - ], - "name": "blacklist", - "outputs": [], - "payable": false, - "stateMutability": "nonpayable", - "type": "function" - }, - { - "constant": true, - "inputs": [], - "name": "blacklistSlashPercent", - "outputs": [ - { - "internalType": "uint256", - "name": "", - "type": "uint256" - } - ], - "payable": false, - "stateMutability": "view", - "type": "function" - }, - { - "constant": true, - "inputs": [ - { - "internalType": "address", - "name": "", - "type": "address" - } - ], - "name": "blacklisted", - "outputs": [ - { - "internalType": "bool", - "name": "", - "type": "bool" - } - ], - "payable": false, - "stateMutability": "view", - "type": "function" - }, - { - "constant": false, - "inputs": [], - "name": "claimOwnership", - "outputs": [], - "payable": false, - "stateMutability": "nonpayable", - "type": "function" - }, - { - "constant": true, - "inputs": [], - "name": "darknodeRegistry", - "outputs": [ - { - "internalType": "contract DarknodeRegistryLogicV1", - "name": "", - "type": "address" - } - ], - "payable": false, - "stateMutability": "view", - "type": "function" - }, - { - "constant": false, - "inputs": [ - { - "internalType": "address", - "name": "_nextOwner", - "type": "address" - } - ], - "name": "initialize", - "outputs": [], - "payable": false, - "stateMutability": "nonpayable", - "type": "function" - }, - { - "constant": true, - "inputs": [], - "name": "isOwner", - "outputs": [ - { - "internalType": "bool", - "name": "", - "type": "bool" - } - ], - "payable": false, - "stateMutability": "view", - "type": "function" - }, - { - "constant": true, - "inputs": [], - "name": "maliciousSlashPercent", - "outputs": [ - { - "internalType": "uint256", - "name": "", - "type": "uint256" - } - ], - "payable": false, - "stateMutability": "view", - "type": "function" - }, - { - "constant": true, - "inputs": [], - "name": "owner", - "outputs": [ - { - "internalType": "address", - "name": "", - "type": "address" - } - ], - "payable": false, - "stateMutability": "view", - "type": "function" - }, - { - "constant": true, - "inputs": [], - "name": "pendingOwner", - "outputs": [ - { - "internalType": "address", - "name": "", - "type": "address" - } - ], - "payable": false, - "stateMutability": "view", - "type": "function" - }, - { - "constant": false, - "inputs": [], - "name": "renounceOwnership", - "outputs": [], - "payable": false, - "stateMutability": "nonpayable", - "type": "function" - }, - { - "constant": true, - "inputs": [], - "name": "secretRevealSlashPercent", - "outputs": [ - { - "internalType": "uint256", - "name": "", - "type": "uint256" - } - ], - "payable": false, - "stateMutability": "view", - "type": "function" - }, - { - "constant": true, - "inputs": [ - { - "internalType": "address", - "name": "", - "type": "address" - } - ], - "name": "secretRevealed", - "outputs": [ - { - "internalType": "bool", - "name": "", - "type": "bool" - } - ], - "payable": false, - "stateMutability": "view", - "type": "function" - }, - { - "constant": false, - "inputs": [ - { - "internalType": "uint256", - "name": "_percentage", - "type": "uint256" - } - ], - "name": "setBlacklistSlashPercent", - "outputs": [], - "payable": false, - "stateMutability": "nonpayable", - "type": "function" - }, - { - "constant": false, - "inputs": [ - { - "internalType": "uint256", - "name": "_percentage", - "type": "uint256" - } - ], - "name": "setMaliciousSlashPercent", - "outputs": [], - "payable": false, - "stateMutability": "nonpayable", - "type": "function" - }, - { - "constant": false, - "inputs": [ - { - "internalType": "uint256", - "name": "_percentage", - "type": "uint256" - } - ], - "name": "setSecretRevealSlashPercent", - "outputs": [], - "payable": false, - "stateMutability": "nonpayable", - "type": "function" - }, - { - "constant": false, - "inputs": [ - { - "internalType": "address", - "name": "_guilty", - "type": "address" - }, - { - "internalType": "address", - "name": "_challenger", - "type": "address" - }, - { - "internalType": "uint256", - "name": "_percentage", - "type": "uint256" - } - ], - "name": "slash", - "outputs": [], - "payable": false, - "stateMutability": "nonpayable", - "type": "function" - }, - { - "constant": false, - "inputs": [ - { - "internalType": "uint256", - "name": "_height", - "type": "uint256" - }, - { - "internalType": "uint256", - "name": "_round", - "type": "uint256" - }, - { - "internalType": "bytes", - "name": "_blockhash1", - "type": "bytes" - }, - { - "internalType": "bytes", - "name": "_signature1", - "type": "bytes" - }, - { - "internalType": "bytes", - "name": "_blockhash2", - "type": "bytes" - }, - { - "internalType": "bytes", - "name": "_signature2", - "type": "bytes" - } - ], - "name": "slashDuplicatePrecommit", - "outputs": [], - "payable": false, - "stateMutability": "nonpayable", - "type": "function" - }, - { - "constant": false, - "inputs": [ - { - "internalType": "uint256", - "name": "_height", - "type": "uint256" - }, - { - "internalType": "uint256", - "name": "_round", - "type": "uint256" - }, - { - "internalType": "bytes", - "name": "_blockhash1", - "type": "bytes" - }, - { - "internalType": "bytes", - "name": "_signature1", - "type": "bytes" - }, - { - "internalType": "bytes", - "name": "_blockhash2", - "type": "bytes" - }, - { - "internalType": "bytes", - "name": "_signature2", - "type": "bytes" - } - ], - "name": "slashDuplicatePrevote", - "outputs": [], - "payable": false, - "stateMutability": "nonpayable", - "type": "function" - }, - { - "constant": false, - "inputs": [ - { - "internalType": "uint256", - "name": "_height", - "type": "uint256" - }, - { - "internalType": "uint256", - "name": "_round", - "type": "uint256" - }, - { - "internalType": "bytes", - "name": "_blockhash1", - "type": "bytes" - }, - { - "internalType": "uint256", - "name": "_validRound1", - "type": "uint256" - }, - { - "internalType": "bytes", - "name": "_signature1", - "type": "bytes" - }, - { - "internalType": "bytes", - "name": "_blockhash2", - "type": "bytes" - }, - { - "internalType": "uint256", - "name": "_validRound2", - "type": "uint256" - }, - { - "internalType": "bytes", - "name": "_signature2", - "type": "bytes" - } - ], - "name": "slashDuplicatePropose", - "outputs": [], - "payable": false, - "stateMutability": "nonpayable", - "type": "function" - }, - { - "constant": false, - "inputs": [ - { - "internalType": "uint256", - "name": "_a", - "type": "uint256" - }, - { - "internalType": "uint256", - "name": "_b", - "type": "uint256" - }, - { - "internalType": "uint256", - "name": "_c", - "type": "uint256" - }, - { - "internalType": "uint256", - "name": "_d", - "type": "uint256" - }, - { - "internalType": "uint256", - "name": "_e", - "type": "uint256" - }, - { - "internalType": "uint256", - "name": "_f", - "type": "uint256" - }, - { - "internalType": "bytes", - "name": "_signature", - "type": "bytes" - } - ], - "name": "slashSecretReveal", - "outputs": [], - "payable": false, - "stateMutability": "nonpayable", - "type": "function" - }, - { - "constant": true, - "inputs": [ - { - "internalType": "uint256", - "name": "", - "type": "uint256" - }, - { - "internalType": "uint256", - "name": "", - "type": "uint256" - }, - { - "internalType": "address", - "name": "", - "type": "address" - } - ], - "name": "slashed", - "outputs": [ - { - "internalType": "bool", - "name": "", - "type": "bool" - } - ], - "payable": false, - "stateMutability": "view", - "type": "function" - }, - { - "constant": false, - "inputs": [ - { - "internalType": "address", - "name": "newOwner", - "type": "address" - } - ], - "name": "transferOwnership", - "outputs": [], - "payable": false, - "stateMutability": "nonpayable", - "type": "function" - }, - { - "constant": false, - "inputs": [ - { - "internalType": "contract DarknodeRegistryLogicV1", - "name": "_darknodeRegistry", - "type": "address" - } - ], - "name": "updateDarknodeRegistry", - "outputs": [], - "payable": false, - "stateMutability": "nonpayable", - "type": "function" - } - ], - "sourcePath": "~/github/renproject/ren-sol/contracts/DarknodeSlasher/DarknodeSlasher.sol", - "compiler": { - "name": "solc", - "version": "0.5.16+commit.9c3226ce.Emscripten.clang" - }, - "networks": { - "42": { - "events": { - "0xf9f6dd5c784f63cc27c1079c73574a73485a6c2e7f7e2181c5eb2be8c693cfb7": { - "anonymous": false, - "inputs": [ - { - "indexed": true, - "internalType": "contract DarknodeRegistryLogicV1", - "name": "_previousDarknodeRegistry", - "type": "address" - }, - { - "indexed": true, - "internalType": "contract DarknodeRegistryLogicV1", - "name": "_nextDarknodeRegistry", - "type": "address" - } - ], - "name": "LogDarknodeRegistryUpdated", - "type": "event" - }, - "0x8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0": { - "anonymous": false, - "inputs": [ - { - "indexed": true, - "internalType": "address", - "name": "previousOwner", - "type": "address" - }, - { - "indexed": true, - "internalType": "address", - "name": "newOwner", - "type": "address" - } - ], - "name": "OwnershipTransferred", - "type": "event" - } - }, - "links": {}, - "address": "0x65852e7ECC0eC12dC7e4b198D72e0D590029cDa9", - "transactionHash": "0x045f390f10365720f48d581bbb71ac4201ac98bef7f6631e998438af008e4c12" - } - }, - "schemaVersion": "3.0.23" -} \ No newline at end of file diff --git a/build/localnet/GatewayLogicV1.json b/build/localnet/GatewayLogicV1.json deleted file mode 100644 index adff0502..00000000 --- a/build/localnet/GatewayLogicV1.json +++ /dev/null @@ -1,719 +0,0 @@ -{ - "contractName": "GatewayLogicV1", - "abi": [ - { - "anonymous": false, - "inputs": [ - { - "indexed": false, - "internalType": "bytes", - "name": "_to", - "type": "bytes" - }, - { - "indexed": false, - "internalType": "uint256", - "name": "_amount", - "type": "uint256" - }, - { - "indexed": true, - "internalType": "uint256", - "name": "_n", - "type": "uint256" - }, - { - "indexed": true, - "internalType": "bytes", - "name": "_indexedTo", - "type": "bytes" - } - ], - "name": "LogBurn", - "type": "event" - }, - { - "anonymous": false, - "inputs": [ - { - "indexed": true, - "internalType": "address", - "name": "_to", - "type": "address" - }, - { - "indexed": false, - "internalType": "uint256", - "name": "_amount", - "type": "uint256" - }, - { - "indexed": true, - "internalType": "uint256", - "name": "_n", - "type": "uint256" - }, - { - "indexed": true, - "internalType": "bytes32", - "name": "_signedMessageHash", - "type": "bytes32" - } - ], - "name": "LogMint", - "type": "event" - }, - { - "anonymous": false, - "inputs": [ - { - "indexed": true, - "internalType": "address", - "name": "_newMintAuthority", - "type": "address" - } - ], - "name": "LogMintAuthorityUpdated", - "type": "event" - }, - { - "anonymous": false, - "inputs": [ - { - "indexed": true, - "internalType": "address", - "name": "previousOwner", - "type": "address" - }, - { - "indexed": true, - "internalType": "address", - "name": "newOwner", - "type": "address" - } - ], - "name": "OwnershipTransferred", - "type": "event" - }, - { - "constant": false, - "inputs": [ - { - "internalType": "address", - "name": "_token", - "type": "address" - } - ], - "name": "blacklistRecoverableToken", - "outputs": [], - "payable": false, - "stateMutability": "nonpayable", - "type": "function" - }, - { - "constant": false, - "inputs": [ - { - "internalType": "bytes", - "name": "_to", - "type": "bytes" - }, - { - "internalType": "uint256", - "name": "_amount", - "type": "uint256" - } - ], - "name": "burn", - "outputs": [ - { - "internalType": "uint256", - "name": "", - "type": "uint256" - } - ], - "payable": false, - "stateMutability": "nonpayable", - "type": "function" - }, - { - "constant": true, - "inputs": [], - "name": "burnFee", - "outputs": [ - { - "internalType": "uint16", - "name": "", - "type": "uint16" - } - ], - "payable": false, - "stateMutability": "view", - "type": "function" - }, - { - "constant": false, - "inputs": [], - "name": "claimOwnership", - "outputs": [], - "payable": false, - "stateMutability": "nonpayable", - "type": "function" - }, - { - "constant": false, - "inputs": [], - "name": "claimTokenOwnership", - "outputs": [], - "payable": false, - "stateMutability": "nonpayable", - "type": "function" - }, - { - "constant": true, - "inputs": [], - "name": "feeRecipient", - "outputs": [ - { - "internalType": "address", - "name": "", - "type": "address" - } - ], - "payable": false, - "stateMutability": "view", - "type": "function" - }, - { - "constant": true, - "inputs": [ - { - "internalType": "bytes32", - "name": "_pHash", - "type": "bytes32" - }, - { - "internalType": "uint256", - "name": "_amount", - "type": "uint256" - }, - { - "internalType": "address", - "name": "_to", - "type": "address" - }, - { - "internalType": "bytes32", - "name": "_nHash", - "type": "bytes32" - } - ], - "name": "hashForSignature", - "outputs": [ - { - "internalType": "bytes32", - "name": "", - "type": "bytes32" - } - ], - "payable": false, - "stateMutability": "view", - "type": "function" - }, - { - "constant": false, - "inputs": [ - { - "internalType": "contract RenERC20LogicV1", - "name": "_token", - "type": "address" - }, - { - "internalType": "address", - "name": "_feeRecipient", - "type": "address" - }, - { - "internalType": "address", - "name": "_mintAuthority", - "type": "address" - }, - { - "internalType": "uint16", - "name": "_mintFee", - "type": "uint16" - }, - { - "internalType": "uint16", - "name": "_burnFee", - "type": "uint16" - }, - { - "internalType": "uint256", - "name": "_minimumBurnAmount", - "type": "uint256" - } - ], - "name": "initialize", - "outputs": [], - "payable": false, - "stateMutability": "nonpayable", - "type": "function" - }, - { - "constant": false, - "inputs": [ - { - "internalType": "address", - "name": "_nextOwner", - "type": "address" - } - ], - "name": "initialize", - "outputs": [], - "payable": false, - "stateMutability": "nonpayable", - "type": "function" - }, - { - "constant": true, - "inputs": [], - "name": "isOwner", - "outputs": [ - { - "internalType": "bool", - "name": "", - "type": "bool" - } - ], - "payable": false, - "stateMutability": "view", - "type": "function" - }, - { - "constant": true, - "inputs": [], - "name": "minimumBurnAmount", - "outputs": [ - { - "internalType": "uint256", - "name": "", - "type": "uint256" - } - ], - "payable": false, - "stateMutability": "view", - "type": "function" - }, - { - "constant": false, - "inputs": [ - { - "internalType": "bytes32", - "name": "_pHash", - "type": "bytes32" - }, - { - "internalType": "uint256", - "name": "_amountUnderlying", - "type": "uint256" - }, - { - "internalType": "bytes32", - "name": "_nHash", - "type": "bytes32" - }, - { - "internalType": "bytes", - "name": "_sig", - "type": "bytes" - } - ], - "name": "mint", - "outputs": [ - { - "internalType": "uint256", - "name": "", - "type": "uint256" - } - ], - "payable": false, - "stateMutability": "nonpayable", - "type": "function" - }, - { - "constant": true, - "inputs": [], - "name": "mintAuthority", - "outputs": [ - { - "internalType": "address", - "name": "", - "type": "address" - } - ], - "payable": false, - "stateMutability": "view", - "type": "function" - }, - { - "constant": true, - "inputs": [], - "name": "mintFee", - "outputs": [ - { - "internalType": "uint16", - "name": "", - "type": "uint16" - } - ], - "payable": false, - "stateMutability": "view", - "type": "function" - }, - { - "constant": true, - "inputs": [], - "name": "nextN", - "outputs": [ - { - "internalType": "uint256", - "name": "", - "type": "uint256" - } - ], - "payable": false, - "stateMutability": "view", - "type": "function" - }, - { - "constant": true, - "inputs": [], - "name": "owner", - "outputs": [ - { - "internalType": "address", - "name": "", - "type": "address" - } - ], - "payable": false, - "stateMutability": "view", - "type": "function" - }, - { - "constant": true, - "inputs": [], - "name": "pendingOwner", - "outputs": [ - { - "internalType": "address", - "name": "", - "type": "address" - } - ], - "payable": false, - "stateMutability": "view", - "type": "function" - }, - { - "constant": false, - "inputs": [ - { - "internalType": "address", - "name": "_token", - "type": "address" - } - ], - "name": "recoverTokens", - "outputs": [], - "payable": false, - "stateMutability": "nonpayable", - "type": "function" - }, - { - "constant": false, - "inputs": [], - "name": "renounceOwnership", - "outputs": [], - "payable": false, - "stateMutability": "nonpayable", - "type": "function" - }, - { - "constant": true, - "inputs": [ - { - "internalType": "bytes32", - "name": "", - "type": "bytes32" - } - ], - "name": "status", - "outputs": [ - { - "internalType": "bool", - "name": "", - "type": "bool" - } - ], - "payable": false, - "stateMutability": "view", - "type": "function" - }, - { - "constant": true, - "inputs": [], - "name": "token", - "outputs": [ - { - "internalType": "contract RenERC20LogicV1", - "name": "", - "type": "address" - } - ], - "payable": false, - "stateMutability": "view", - "type": "function" - }, - { - "constant": false, - "inputs": [ - { - "internalType": "address", - "name": "newOwner", - "type": "address" - } - ], - "name": "transferOwnership", - "outputs": [], - "payable": false, - "stateMutability": "nonpayable", - "type": "function" - }, - { - "constant": false, - "inputs": [ - { - "internalType": "contract GatewayLogicV1", - "name": "_nextTokenOwner", - "type": "address" - } - ], - "name": "transferTokenOwnership", - "outputs": [], - "payable": false, - "stateMutability": "nonpayable", - "type": "function" - }, - { - "constant": false, - "inputs": [ - { - "internalType": "uint16", - "name": "_nextBurnFee", - "type": "uint16" - } - ], - "name": "updateBurnFee", - "outputs": [], - "payable": false, - "stateMutability": "nonpayable", - "type": "function" - }, - { - "constant": false, - "inputs": [ - { - "internalType": "address", - "name": "_nextFeeRecipient", - "type": "address" - } - ], - "name": "updateFeeRecipient", - "outputs": [], - "payable": false, - "stateMutability": "nonpayable", - "type": "function" - }, - { - "constant": false, - "inputs": [ - { - "internalType": "uint256", - "name": "_minimumBurnAmount", - "type": "uint256" - } - ], - "name": "updateMinimumBurnAmount", - "outputs": [], - "payable": false, - "stateMutability": "nonpayable", - "type": "function" - }, - { - "constant": false, - "inputs": [ - { - "internalType": "address", - "name": "_nextMintAuthority", - "type": "address" - } - ], - "name": "updateMintAuthority", - "outputs": [], - "payable": false, - "stateMutability": "nonpayable", - "type": "function" - }, - { - "constant": false, - "inputs": [ - { - "internalType": "uint16", - "name": "_nextMintFee", - "type": "uint16" - } - ], - "name": "updateMintFee", - "outputs": [], - "payable": false, - "stateMutability": "nonpayable", - "type": "function" - }, - { - "constant": true, - "inputs": [ - { - "internalType": "bytes32", - "name": "_signedMessageHash", - "type": "bytes32" - }, - { - "internalType": "bytes", - "name": "_sig", - "type": "bytes" - } - ], - "name": "verifySignature", - "outputs": [ - { - "internalType": "bool", - "name": "", - "type": "bool" - } - ], - "payable": false, - "stateMutability": "view", - "type": "function" - } - ], - "sourcePath": "~/github/renproject/ren-sol/contracts/Gateway/Gateway.sol", - "compiler": { - "name": "solc", - "version": "0.5.16+commit.9c3226ce.Emscripten.clang" - }, - "networks": { - "42": { - "events": { - "0x1619fc95050ffb8c94c9077c82b3e1ebbf8d571b6234241c55ba0aaf40da019e": { - "anonymous": false, - "inputs": [ - { - "indexed": false, - "internalType": "bytes", - "name": "_to", - "type": "bytes" - }, - { - "indexed": false, - "internalType": "uint256", - "name": "_amount", - "type": "uint256" - }, - { - "indexed": true, - "internalType": "uint256", - "name": "_n", - "type": "uint256" - }, - { - "indexed": true, - "internalType": "bytes", - "name": "_indexedTo", - "type": "bytes" - } - ], - "name": "LogBurn", - "type": "event" - }, - "0xa58ba939eb08dab7eaf8ad09c16e7405ee88e5153e15da62d5481296a9f727fa": { - "anonymous": false, - "inputs": [ - { - "indexed": true, - "internalType": "address", - "name": "_to", - "type": "address" - }, - { - "indexed": false, - "internalType": "uint256", - "name": "_amount", - "type": "uint256" - }, - { - "indexed": true, - "internalType": "uint256", - "name": "_n", - "type": "uint256" - }, - { - "indexed": true, - "internalType": "bytes32", - "name": "_signedMessageHash", - "type": "bytes32" - } - ], - "name": "LogMint", - "type": "event" - }, - "0xf0f08e606c1dd3a2c220ada53422fd9fe0aa75614b27db0549f649de3ad2072a": { - "anonymous": false, - "inputs": [ - { - "indexed": true, - "internalType": "address", - "name": "_newMintAuthority", - "type": "address" - } - ], - "name": "LogMintAuthorityUpdated", - "type": "event" - }, - "0x8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0": { - "anonymous": false, - "inputs": [ - { - "indexed": true, - "internalType": "address", - "name": "previousOwner", - "type": "address" - }, - { - "indexed": true, - "internalType": "address", - "name": "newOwner", - "type": "address" - } - ], - "name": "OwnershipTransferred", - "type": "event" - } - }, - "links": {}, - "address": "0xb862cE796ac356E4F26507Fa297D5D07Ee4EC8EB" - } - }, - "schemaVersion": "3.0.23" -} \ No newline at end of file diff --git a/build/localnet/GatewayRegistry.json b/build/localnet/GatewayRegistry.json deleted file mode 100644 index a3dd942d..00000000 --- a/build/localnet/GatewayRegistry.json +++ /dev/null @@ -1,556 +0,0 @@ -{ - "contractName": "GatewayRegistry", - "abi": [ - { - "inputs": [], - "payable": false, - "stateMutability": "nonpayable", - "type": "constructor" - }, - { - "anonymous": false, - "inputs": [ - { - "indexed": false, - "internalType": "string", - "name": "_symbol", - "type": "string" - }, - { - "indexed": true, - "internalType": "string", - "name": "_indexedSymbol", - "type": "string" - }, - { - "indexed": true, - "internalType": "address", - "name": "_token", - "type": "address" - }, - { - "indexed": true, - "internalType": "address", - "name": "_gatewayContract", - "type": "address" - } - ], - "name": "LogGatewayDeregistered", - "type": "event" - }, - { - "anonymous": false, - "inputs": [ - { - "indexed": false, - "internalType": "string", - "name": "_symbol", - "type": "string" - }, - { - "indexed": true, - "internalType": "string", - "name": "_indexedSymbol", - "type": "string" - }, - { - "indexed": true, - "internalType": "address", - "name": "_token", - "type": "address" - }, - { - "indexed": true, - "internalType": "address", - "name": "_gatewayContract", - "type": "address" - } - ], - "name": "LogGatewayRegistered", - "type": "event" - }, - { - "anonymous": false, - "inputs": [ - { - "indexed": true, - "internalType": "address", - "name": "_token", - "type": "address" - }, - { - "indexed": true, - "internalType": "address", - "name": "_currentGatewayContract", - "type": "address" - }, - { - "indexed": true, - "internalType": "address", - "name": "_newGatewayContract", - "type": "address" - } - ], - "name": "LogGatewayUpdated", - "type": "event" - }, - { - "anonymous": false, - "inputs": [ - { - "indexed": true, - "internalType": "address", - "name": "previousOwner", - "type": "address" - }, - { - "indexed": true, - "internalType": "address", - "name": "newOwner", - "type": "address" - } - ], - "name": "OwnershipTransferred", - "type": "event" - }, - { - "constant": false, - "inputs": [ - { - "internalType": "address", - "name": "_token", - "type": "address" - } - ], - "name": "blacklistRecoverableToken", - "outputs": [], - "payable": false, - "stateMutability": "nonpayable", - "type": "function" - }, - { - "constant": false, - "inputs": [], - "name": "claimOwnership", - "outputs": [], - "payable": false, - "stateMutability": "nonpayable", - "type": "function" - }, - { - "constant": true, - "inputs": [ - { - "internalType": "string", - "name": "_tokenSymbol", - "type": "string" - } - ], - "name": "getGatewayBySymbol", - "outputs": [ - { - "internalType": "contract IGateway", - "name": "", - "type": "address" - } - ], - "payable": false, - "stateMutability": "view", - "type": "function" - }, - { - "constant": true, - "inputs": [ - { - "internalType": "address", - "name": "_token", - "type": "address" - } - ], - "name": "getGatewayByToken", - "outputs": [ - { - "internalType": "contract IGateway", - "name": "", - "type": "address" - } - ], - "payable": false, - "stateMutability": "view", - "type": "function" - }, - { - "constant": true, - "inputs": [ - { - "internalType": "address", - "name": "_start", - "type": "address" - }, - { - "internalType": "uint256", - "name": "_count", - "type": "uint256" - } - ], - "name": "getGateways", - "outputs": [ - { - "internalType": "address[]", - "name": "", - "type": "address[]" - } - ], - "payable": false, - "stateMutability": "view", - "type": "function" - }, - { - "constant": true, - "inputs": [ - { - "internalType": "address", - "name": "_start", - "type": "address" - }, - { - "internalType": "uint256", - "name": "_count", - "type": "uint256" - } - ], - "name": "getRenTokens", - "outputs": [ - { - "internalType": "address[]", - "name": "", - "type": "address[]" - } - ], - "payable": false, - "stateMutability": "view", - "type": "function" - }, - { - "constant": true, - "inputs": [ - { - "internalType": "string", - "name": "_tokenSymbol", - "type": "string" - } - ], - "name": "getTokenBySymbol", - "outputs": [ - { - "internalType": "contract IERC20", - "name": "", - "type": "address" - } - ], - "payable": false, - "stateMutability": "view", - "type": "function" - }, - { - "constant": false, - "inputs": [ - { - "internalType": "address", - "name": "_nextOwner", - "type": "address" - } - ], - "name": "initialize", - "outputs": [], - "payable": false, - "stateMutability": "nonpayable", - "type": "function" - }, - { - "constant": true, - "inputs": [], - "name": "isOwner", - "outputs": [ - { - "internalType": "bool", - "name": "", - "type": "bool" - } - ], - "payable": false, - "stateMutability": "view", - "type": "function" - }, - { - "constant": true, - "inputs": [], - "name": "owner", - "outputs": [ - { - "internalType": "address", - "name": "", - "type": "address" - } - ], - "payable": false, - "stateMutability": "view", - "type": "function" - }, - { - "constant": true, - "inputs": [], - "name": "pendingOwner", - "outputs": [ - { - "internalType": "address", - "name": "", - "type": "address" - } - ], - "payable": false, - "stateMutability": "view", - "type": "function" - }, - { - "constant": false, - "inputs": [ - { - "internalType": "address", - "name": "_token", - "type": "address" - } - ], - "name": "recoverTokens", - "outputs": [], - "payable": false, - "stateMutability": "nonpayable", - "type": "function" - }, - { - "constant": false, - "inputs": [ - { - "internalType": "string", - "name": "_symbol", - "type": "string" - } - ], - "name": "removeGateway", - "outputs": [], - "payable": false, - "stateMutability": "nonpayable", - "type": "function" - }, - { - "constant": false, - "inputs": [], - "name": "renounceOwnership", - "outputs": [], - "payable": false, - "stateMutability": "nonpayable", - "type": "function" - }, - { - "constant": false, - "inputs": [ - { - "internalType": "string", - "name": "_symbol", - "type": "string" - }, - { - "internalType": "address", - "name": "_token", - "type": "address" - }, - { - "internalType": "address", - "name": "_gatewayContract", - "type": "address" - } - ], - "name": "setGateway", - "outputs": [], - "payable": false, - "stateMutability": "nonpayable", - "type": "function" - }, - { - "constant": true, - "inputs": [ - { - "internalType": "string", - "name": "_tokenSymbol", - "type": "string" - } - ], - "name": "symbolIsValid", - "outputs": [ - { - "internalType": "bool", - "name": "", - "type": "bool" - } - ], - "payable": false, - "stateMutability": "pure", - "type": "function" - }, - { - "constant": false, - "inputs": [ - { - "internalType": "address", - "name": "newOwner", - "type": "address" - } - ], - "name": "transferOwnership", - "outputs": [], - "payable": false, - "stateMutability": "nonpayable", - "type": "function" - }, - { - "constant": false, - "inputs": [ - { - "internalType": "address", - "name": "_token", - "type": "address" - }, - { - "internalType": "address", - "name": "_newGatewayContract", - "type": "address" - } - ], - "name": "updateGateway", - "outputs": [], - "payable": false, - "stateMutability": "nonpayable", - "type": "function" - } - ], - "sourcePath": "~/github/renproject/ren-sol/contracts/Gateway/GatewayRegistry.sol", - "compiler": { - "name": "solc", - "version": "0.5.16+commit.9c3226ce.Emscripten.clang" - }, - "networks": { - "42": { - "events": { - "0xea98e49727cf7c3a8c3926a036a6d41047c9b766d9109f22962950f37a2094aa": { - "anonymous": false, - "inputs": [ - { - "indexed": false, - "internalType": "string", - "name": "_symbol", - "type": "string" - }, - { - "indexed": true, - "internalType": "string", - "name": "_indexedSymbol", - "type": "string" - }, - { - "indexed": true, - "internalType": "address", - "name": "_token", - "type": "address" - }, - { - "indexed": true, - "internalType": "address", - "name": "_gatewayContract", - "type": "address" - } - ], - "name": "LogGatewayDeregistered", - "type": "event" - }, - "0xd433aae9ea620c1976ff88f75c629f477dbffe6bf277edad8a31c983117ab32a": { - "anonymous": false, - "inputs": [ - { - "indexed": false, - "internalType": "string", - "name": "_symbol", - "type": "string" - }, - { - "indexed": true, - "internalType": "string", - "name": "_indexedSymbol", - "type": "string" - }, - { - "indexed": true, - "internalType": "address", - "name": "_token", - "type": "address" - }, - { - "indexed": true, - "internalType": "address", - "name": "_gatewayContract", - "type": "address" - } - ], - "name": "LogGatewayRegistered", - "type": "event" - }, - "0x2dc9e208c924a5b14066ecb7121b371da427e696ad69456ed07a52cd2a710d99": { - "anonymous": false, - "inputs": [ - { - "indexed": true, - "internalType": "address", - "name": "_token", - "type": "address" - }, - { - "indexed": true, - "internalType": "address", - "name": "_currentGatewayContract", - "type": "address" - }, - { - "indexed": true, - "internalType": "address", - "name": "_newGatewayContract", - "type": "address" - } - ], - "name": "LogGatewayUpdated", - "type": "event" - }, - "0x8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0": { - "anonymous": false, - "inputs": [ - { - "indexed": true, - "internalType": "address", - "name": "previousOwner", - "type": "address" - }, - { - "indexed": true, - "internalType": "address", - "name": "newOwner", - "type": "address" - } - ], - "name": "OwnershipTransferred", - "type": "event" - } - }, - "links": {}, - "address": "0x1832eb340d558a3c05C48247C6dF862Fde863ebB" - } - }, - "schemaVersion": "3.0.23" -} \ No newline at end of file diff --git a/build/localnet/ProtocolLogicV1.json b/build/localnet/ProtocolLogicV1.json deleted file mode 100644 index 759b8733..00000000 --- a/build/localnet/ProtocolLogicV1.json +++ /dev/null @@ -1,575 +0,0 @@ -{ - "contractName": "ProtocolLogicV1", - "abi": [ - { - "anonymous": false, - "inputs": [ - { - "indexed": false, - "internalType": "string", - "name": "_symbol", - "type": "string" - }, - { - "indexed": true, - "internalType": "string", - "name": "_indexedSymbol", - "type": "string" - }, - { - "indexed": true, - "internalType": "address", - "name": "_tokenAddress", - "type": "address" - }, - { - "indexed": true, - "internalType": "address", - "name": "_gatewayAddress", - "type": "address" - } - ], - "name": "LogGatewayDeregistered", - "type": "event" - }, - { - "anonymous": false, - "inputs": [ - { - "indexed": false, - "internalType": "string", - "name": "_symbol", - "type": "string" - }, - { - "indexed": true, - "internalType": "string", - "name": "_indexedSymbol", - "type": "string" - }, - { - "indexed": true, - "internalType": "address", - "name": "_tokenAddress", - "type": "address" - }, - { - "indexed": true, - "internalType": "address", - "name": "_gatewayAddress", - "type": "address" - } - ], - "name": "LogGatewayRegistered", - "type": "event" - }, - { - "anonymous": false, - "inputs": [ - { - "indexed": true, - "internalType": "address", - "name": "_tokenAddress", - "type": "address" - }, - { - "indexed": true, - "internalType": "address", - "name": "_currentGatewayAddress", - "type": "address" - }, - { - "indexed": true, - "internalType": "address", - "name": "_newGatewayAddress", - "type": "address" - } - ], - "name": "LogGatewayUpdated", - "type": "event" - }, - { - "anonymous": false, - "inputs": [ - { - "indexed": true, - "internalType": "address", - "name": "previousOwner", - "type": "address" - }, - { - "indexed": true, - "internalType": "address", - "name": "newOwner", - "type": "address" - } - ], - "name": "OwnershipTransferred", - "type": "event" - }, - { - "constant": false, - "inputs": [ - { - "internalType": "contract DarknodeRegistryLogicV1", - "name": "_newDarknodeRegistry", - "type": "address" - } - ], - "name": "_updateDarknodeRegistry", - "outputs": [], - "payable": false, - "stateMutability": "nonpayable", - "type": "function" - }, - { - "constant": false, - "inputs": [ - { - "internalType": "contract GatewayRegistry", - "name": "_newGatewayRegistry", - "type": "address" - } - ], - "name": "_updateGatewayRegistry", - "outputs": [], - "payable": false, - "stateMutability": "nonpayable", - "type": "function" - }, - { - "constant": false, - "inputs": [], - "name": "claimOwnership", - "outputs": [], - "payable": false, - "stateMutability": "nonpayable", - "type": "function" - }, - { - "constant": true, - "inputs": [], - "name": "darknodePayment", - "outputs": [ - { - "internalType": "contract DarknodePayment", - "name": "", - "type": "address" - } - ], - "payable": false, - "stateMutability": "view", - "type": "function" - }, - { - "constant": true, - "inputs": [], - "name": "darknodePaymentStore", - "outputs": [ - { - "internalType": "contract DarknodePaymentStore", - "name": "", - "type": "address" - } - ], - "payable": false, - "stateMutability": "view", - "type": "function" - }, - { - "constant": true, - "inputs": [], - "name": "darknodeRegistry", - "outputs": [ - { - "internalType": "contract DarknodeRegistryLogicV1", - "name": "", - "type": "address" - } - ], - "payable": false, - "stateMutability": "view", - "type": "function" - }, - { - "constant": true, - "inputs": [], - "name": "darknodeRegistryStore", - "outputs": [ - { - "internalType": "contract DarknodeRegistryStore", - "name": "", - "type": "address" - } - ], - "payable": false, - "stateMutability": "view", - "type": "function" - }, - { - "constant": true, - "inputs": [], - "name": "darknodeSlasher", - "outputs": [ - { - "internalType": "contract DarknodeSlasher", - "name": "", - "type": "address" - } - ], - "payable": false, - "stateMutability": "view", - "type": "function" - }, - { - "constant": true, - "inputs": [], - "name": "gatewayRegistry", - "outputs": [ - { - "internalType": "contract GatewayRegistry", - "name": "", - "type": "address" - } - ], - "payable": false, - "stateMutability": "view", - "type": "function" - }, - { - "constant": true, - "inputs": [ - { - "internalType": "string", - "name": "_tokenSymbol", - "type": "string" - } - ], - "name": "getGatewayBySymbol", - "outputs": [ - { - "internalType": "contract IGateway", - "name": "", - "type": "address" - } - ], - "payable": false, - "stateMutability": "view", - "type": "function" - }, - { - "constant": true, - "inputs": [ - { - "internalType": "address", - "name": "_tokenAddress", - "type": "address" - } - ], - "name": "getGatewayByToken", - "outputs": [ - { - "internalType": "contract IGateway", - "name": "", - "type": "address" - } - ], - "payable": false, - "stateMutability": "view", - "type": "function" - }, - { - "constant": true, - "inputs": [ - { - "internalType": "address", - "name": "_start", - "type": "address" - }, - { - "internalType": "uint256", - "name": "_count", - "type": "uint256" - } - ], - "name": "getGateways", - "outputs": [ - { - "internalType": "address[]", - "name": "", - "type": "address[]" - } - ], - "payable": false, - "stateMutability": "view", - "type": "function" - }, - { - "constant": true, - "inputs": [ - { - "internalType": "address", - "name": "_start", - "type": "address" - }, - { - "internalType": "uint256", - "name": "_count", - "type": "uint256" - } - ], - "name": "getRenTokens", - "outputs": [ - { - "internalType": "address[]", - "name": "", - "type": "address[]" - } - ], - "payable": false, - "stateMutability": "view", - "type": "function" - }, - { - "constant": true, - "inputs": [ - { - "internalType": "string", - "name": "_tokenSymbol", - "type": "string" - } - ], - "name": "getTokenBySymbol", - "outputs": [ - { - "internalType": "contract IERC20", - "name": "", - "type": "address" - } - ], - "payable": false, - "stateMutability": "view", - "type": "function" - }, - { - "constant": false, - "inputs": [ - { - "internalType": "address", - "name": "_nextOwner", - "type": "address" - } - ], - "name": "initialize", - "outputs": [], - "payable": false, - "stateMutability": "nonpayable", - "type": "function" - }, - { - "constant": true, - "inputs": [], - "name": "isOwner", - "outputs": [ - { - "internalType": "bool", - "name": "", - "type": "bool" - } - ], - "payable": false, - "stateMutability": "view", - "type": "function" - }, - { - "constant": true, - "inputs": [], - "name": "owner", - "outputs": [ - { - "internalType": "address", - "name": "", - "type": "address" - } - ], - "payable": false, - "stateMutability": "view", - "type": "function" - }, - { - "constant": true, - "inputs": [], - "name": "pendingOwner", - "outputs": [ - { - "internalType": "address", - "name": "", - "type": "address" - } - ], - "payable": false, - "stateMutability": "view", - "type": "function" - }, - { - "constant": true, - "inputs": [], - "name": "renToken", - "outputs": [ - { - "internalType": "contract RenToken", - "name": "", - "type": "address" - } - ], - "payable": false, - "stateMutability": "view", - "type": "function" - }, - { - "constant": false, - "inputs": [], - "name": "renounceOwnership", - "outputs": [], - "payable": false, - "stateMutability": "nonpayable", - "type": "function" - }, - { - "constant": false, - "inputs": [ - { - "internalType": "address", - "name": "newOwner", - "type": "address" - } - ], - "name": "transferOwnership", - "outputs": [], - "payable": false, - "stateMutability": "nonpayable", - "type": "function" - } - ], - "sourcePath": "~/github/renproject/ren-sol/contracts/Protocol/Protocol.sol", - "compiler": { - "name": "solc", - "version": "0.5.16+commit.9c3226ce.Emscripten.clang" - }, - "networks": { - "42": { - "events": { - "0xea98e49727cf7c3a8c3926a036a6d41047c9b766d9109f22962950f37a2094aa": { - "anonymous": false, - "inputs": [ - { - "indexed": false, - "internalType": "string", - "name": "_symbol", - "type": "string" - }, - { - "indexed": true, - "internalType": "string", - "name": "_indexedSymbol", - "type": "string" - }, - { - "indexed": true, - "internalType": "address", - "name": "_tokenAddress", - "type": "address" - }, - { - "indexed": true, - "internalType": "address", - "name": "_gatewayAddress", - "type": "address" - } - ], - "name": "LogGatewayDeregistered", - "type": "event" - }, - "0xd433aae9ea620c1976ff88f75c629f477dbffe6bf277edad8a31c983117ab32a": { - "anonymous": false, - "inputs": [ - { - "indexed": false, - "internalType": "string", - "name": "_symbol", - "type": "string" - }, - { - "indexed": true, - "internalType": "string", - "name": "_indexedSymbol", - "type": "string" - }, - { - "indexed": true, - "internalType": "address", - "name": "_tokenAddress", - "type": "address" - }, - { - "indexed": true, - "internalType": "address", - "name": "_gatewayAddress", - "type": "address" - } - ], - "name": "LogGatewayRegistered", - "type": "event" - }, - "0x2dc9e208c924a5b14066ecb7121b371da427e696ad69456ed07a52cd2a710d99": { - "anonymous": false, - "inputs": [ - { - "indexed": true, - "internalType": "address", - "name": "_tokenAddress", - "type": "address" - }, - { - "indexed": true, - "internalType": "address", - "name": "_currentGatewayAddress", - "type": "address" - }, - { - "indexed": true, - "internalType": "address", - "name": "_newGatewayAddress", - "type": "address" - } - ], - "name": "LogGatewayUpdated", - "type": "event" - }, - "0x8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0": { - "anonymous": false, - "inputs": [ - { - "indexed": true, - "internalType": "address", - "name": "previousOwner", - "type": "address" - }, - { - "indexed": true, - "internalType": "address", - "name": "newOwner", - "type": "address" - } - ], - "name": "OwnershipTransferred", - "type": "event" - } - }, - "links": {}, - "address": "0xbD276BBAba798339007546392DAEF201EaFA780C", - "transactionHash": "0x2cde7c0185edffacb251626f7c3e28c6a0250d6777f03613ab1ce772b67254ce" - } - }, - "schemaVersion": "3.0.23" -} \ No newline at end of file diff --git a/build/localnet/ProtocolProxy.json b/build/localnet/ProtocolProxy.json deleted file mode 100644 index 6df0b2df..00000000 --- a/build/localnet/ProtocolProxy.json +++ /dev/null @@ -1,214 +0,0 @@ -{ - "contractName": "ProtocolProxy", - "abi": [ - { - "anonymous": false, - "inputs": [ - { - "indexed": false, - "internalType": "address", - "name": "previousAdmin", - "type": "address" - }, - { - "indexed": false, - "internalType": "address", - "name": "newAdmin", - "type": "address" - } - ], - "name": "AdminChanged", - "type": "event" - }, - { - "anonymous": false, - "inputs": [ - { - "indexed": true, - "internalType": "address", - "name": "implementation", - "type": "address" - } - ], - "name": "Upgraded", - "type": "event" - }, - { - "payable": true, - "stateMutability": "payable", - "type": "fallback" - }, - { - "constant": false, - "inputs": [], - "name": "admin", - "outputs": [ - { - "internalType": "address", - "name": "", - "type": "address" - } - ], - "payable": false, - "stateMutability": "nonpayable", - "type": "function" - }, - { - "constant": false, - "inputs": [ - { - "internalType": "address", - "name": "newAdmin", - "type": "address" - } - ], - "name": "changeAdmin", - "outputs": [], - "payable": false, - "stateMutability": "nonpayable", - "type": "function" - }, - { - "constant": false, - "inputs": [], - "name": "implementation", - "outputs": [ - { - "internalType": "address", - "name": "", - "type": "address" - } - ], - "payable": false, - "stateMutability": "nonpayable", - "type": "function" - }, - { - "constant": false, - "inputs": [ - { - "internalType": "address", - "name": "_logic", - "type": "address" - }, - { - "internalType": "address", - "name": "_admin", - "type": "address" - }, - { - "internalType": "bytes", - "name": "_data", - "type": "bytes" - } - ], - "name": "initialize", - "outputs": [], - "payable": true, - "stateMutability": "payable", - "type": "function" - }, - { - "constant": false, - "inputs": [ - { - "internalType": "address", - "name": "_logic", - "type": "address" - }, - { - "internalType": "bytes", - "name": "_data", - "type": "bytes" - } - ], - "name": "initialize", - "outputs": [], - "payable": true, - "stateMutability": "payable", - "type": "function" - }, - { - "constant": false, - "inputs": [ - { - "internalType": "address", - "name": "newImplementation", - "type": "address" - } - ], - "name": "upgradeTo", - "outputs": [], - "payable": false, - "stateMutability": "nonpayable", - "type": "function" - }, - { - "constant": false, - "inputs": [ - { - "internalType": "address", - "name": "newImplementation", - "type": "address" - }, - { - "internalType": "bytes", - "name": "data", - "type": "bytes" - } - ], - "name": "upgradeToAndCall", - "outputs": [], - "payable": true, - "stateMutability": "payable", - "type": "function" - } - ], - "sourcePath": "~/github/renproject/ren-sol/contracts/Protocol/Protocol.sol", - "compiler": { - "name": "solc", - "version": "0.5.16+commit.9c3226ce.Emscripten.clang" - }, - "networks": { - "42": { - "events": { - "0x7e644d79422f17c01e4894b5f4f588d331ebfa28653d42ae832dc59e38c9798f": { - "anonymous": false, - "inputs": [ - { - "indexed": false, - "internalType": "address", - "name": "previousAdmin", - "type": "address" - }, - { - "indexed": false, - "internalType": "address", - "name": "newAdmin", - "type": "address" - } - ], - "name": "AdminChanged", - "type": "event" - }, - "0xbc7cd75a20ee27fd9adebab32041f755214dbc6bffa90cc0225b39da2e5c2d3b": { - "anonymous": false, - "inputs": [ - { - "indexed": true, - "internalType": "address", - "name": "implementation", - "type": "address" - } - ], - "name": "Upgraded", - "type": "event" - } - }, - "links": {}, - "address": "0xE773eDEb42c56aD10456595b8e03C26BC6cde468", - "transactionHash": "0x9be6c5117be49a63dece2365ebb528e53d15c39ba75e81486a130135111450bd" - } - }, - "schemaVersion": "3.0.23" -} \ No newline at end of file diff --git a/build/localnet/RenBCH.json b/build/localnet/RenBCH.json deleted file mode 100644 index 8806b08e..00000000 --- a/build/localnet/RenBCH.json +++ /dev/null @@ -1,214 +0,0 @@ -{ - "contractName": "RenBCH", - "abi": [ - { - "anonymous": false, - "inputs": [ - { - "indexed": false, - "internalType": "address", - "name": "previousAdmin", - "type": "address" - }, - { - "indexed": false, - "internalType": "address", - "name": "newAdmin", - "type": "address" - } - ], - "name": "AdminChanged", - "type": "event" - }, - { - "anonymous": false, - "inputs": [ - { - "indexed": true, - "internalType": "address", - "name": "implementation", - "type": "address" - } - ], - "name": "Upgraded", - "type": "event" - }, - { - "payable": true, - "stateMutability": "payable", - "type": "fallback" - }, - { - "constant": false, - "inputs": [], - "name": "admin", - "outputs": [ - { - "internalType": "address", - "name": "", - "type": "address" - } - ], - "payable": false, - "stateMutability": "nonpayable", - "type": "function" - }, - { - "constant": false, - "inputs": [ - { - "internalType": "address", - "name": "newAdmin", - "type": "address" - } - ], - "name": "changeAdmin", - "outputs": [], - "payable": false, - "stateMutability": "nonpayable", - "type": "function" - }, - { - "constant": false, - "inputs": [], - "name": "implementation", - "outputs": [ - { - "internalType": "address", - "name": "", - "type": "address" - } - ], - "payable": false, - "stateMutability": "nonpayable", - "type": "function" - }, - { - "constant": false, - "inputs": [ - { - "internalType": "address", - "name": "_logic", - "type": "address" - }, - { - "internalType": "address", - "name": "_admin", - "type": "address" - }, - { - "internalType": "bytes", - "name": "_data", - "type": "bytes" - } - ], - "name": "initialize", - "outputs": [], - "payable": true, - "stateMutability": "payable", - "type": "function" - }, - { - "constant": false, - "inputs": [ - { - "internalType": "address", - "name": "_logic", - "type": "address" - }, - { - "internalType": "bytes", - "name": "_data", - "type": "bytes" - } - ], - "name": "initialize", - "outputs": [], - "payable": true, - "stateMutability": "payable", - "type": "function" - }, - { - "constant": false, - "inputs": [ - { - "internalType": "address", - "name": "newImplementation", - "type": "address" - } - ], - "name": "upgradeTo", - "outputs": [], - "payable": false, - "stateMutability": "nonpayable", - "type": "function" - }, - { - "constant": false, - "inputs": [ - { - "internalType": "address", - "name": "newImplementation", - "type": "address" - }, - { - "internalType": "bytes", - "name": "data", - "type": "bytes" - } - ], - "name": "upgradeToAndCall", - "outputs": [], - "payable": true, - "stateMutability": "payable", - "type": "function" - } - ], - "sourcePath": "~/github/renproject/ren-sol/contracts/Gateway/RenERC20.sol", - "compiler": { - "name": "solc", - "version": "0.5.16+commit.9c3226ce.Emscripten.clang" - }, - "networks": { - "42": { - "events": { - "0x7e644d79422f17c01e4894b5f4f588d331ebfa28653d42ae832dc59e38c9798f": { - "anonymous": false, - "inputs": [ - { - "indexed": false, - "internalType": "address", - "name": "previousAdmin", - "type": "address" - }, - { - "indexed": false, - "internalType": "address", - "name": "newAdmin", - "type": "address" - } - ], - "name": "AdminChanged", - "type": "event" - }, - "0xbc7cd75a20ee27fd9adebab32041f755214dbc6bffa90cc0225b39da2e5c2d3b": { - "anonymous": false, - "inputs": [ - { - "indexed": true, - "internalType": "address", - "name": "implementation", - "type": "address" - } - ], - "name": "Upgraded", - "type": "event" - } - }, - "links": {}, - "address": "0xDF75fb289007DEedcd60f34a069D2941D3448E22", - "transactionHash": "0xf71e7a60db32cbd5aee0f4cacda2584cc2005a899bed24b72769ff7aba791061" - } - }, - "schemaVersion": "3.0.23" -} \ No newline at end of file diff --git a/build/localnet/RenBTC.json b/build/localnet/RenBTC.json deleted file mode 100644 index 0dd41c01..00000000 --- a/build/localnet/RenBTC.json +++ /dev/null @@ -1,213 +0,0 @@ -{ - "contractName": "RenBTC", - "abi": [ - { - "anonymous": false, - "inputs": [ - { - "indexed": false, - "internalType": "address", - "name": "previousAdmin", - "type": "address" - }, - { - "indexed": false, - "internalType": "address", - "name": "newAdmin", - "type": "address" - } - ], - "name": "AdminChanged", - "type": "event" - }, - { - "anonymous": false, - "inputs": [ - { - "indexed": true, - "internalType": "address", - "name": "implementation", - "type": "address" - } - ], - "name": "Upgraded", - "type": "event" - }, - { - "payable": true, - "stateMutability": "payable", - "type": "fallback" - }, - { - "constant": false, - "inputs": [], - "name": "admin", - "outputs": [ - { - "internalType": "address", - "name": "", - "type": "address" - } - ], - "payable": false, - "stateMutability": "nonpayable", - "type": "function" - }, - { - "constant": false, - "inputs": [ - { - "internalType": "address", - "name": "newAdmin", - "type": "address" - } - ], - "name": "changeAdmin", - "outputs": [], - "payable": false, - "stateMutability": "nonpayable", - "type": "function" - }, - { - "constant": false, - "inputs": [], - "name": "implementation", - "outputs": [ - { - "internalType": "address", - "name": "", - "type": "address" - } - ], - "payable": false, - "stateMutability": "nonpayable", - "type": "function" - }, - { - "constant": false, - "inputs": [ - { - "internalType": "address", - "name": "_logic", - "type": "address" - }, - { - "internalType": "address", - "name": "_admin", - "type": "address" - }, - { - "internalType": "bytes", - "name": "_data", - "type": "bytes" - } - ], - "name": "initialize", - "outputs": [], - "payable": true, - "stateMutability": "payable", - "type": "function" - }, - { - "constant": false, - "inputs": [ - { - "internalType": "address", - "name": "_logic", - "type": "address" - }, - { - "internalType": "bytes", - "name": "_data", - "type": "bytes" - } - ], - "name": "initialize", - "outputs": [], - "payable": true, - "stateMutability": "payable", - "type": "function" - }, - { - "constant": false, - "inputs": [ - { - "internalType": "address", - "name": "newImplementation", - "type": "address" - } - ], - "name": "upgradeTo", - "outputs": [], - "payable": false, - "stateMutability": "nonpayable", - "type": "function" - }, - { - "constant": false, - "inputs": [ - { - "internalType": "address", - "name": "newImplementation", - "type": "address" - }, - { - "internalType": "bytes", - "name": "data", - "type": "bytes" - } - ], - "name": "upgradeToAndCall", - "outputs": [], - "payable": true, - "stateMutability": "payable", - "type": "function" - } - ], - "sourcePath": "~/github/renproject/ren-sol/contracts/Gateway/RenERC20.sol", - "compiler": { - "name": "solc", - "version": "0.5.16+commit.9c3226ce.Emscripten.clang" - }, - "networks": { - "42": { - "events": { - "0x7e644d79422f17c01e4894b5f4f588d331ebfa28653d42ae832dc59e38c9798f": { - "anonymous": false, - "inputs": [ - { - "indexed": false, - "internalType": "address", - "name": "previousAdmin", - "type": "address" - }, - { - "indexed": false, - "internalType": "address", - "name": "newAdmin", - "type": "address" - } - ], - "name": "AdminChanged", - "type": "event" - }, - "0xbc7cd75a20ee27fd9adebab32041f755214dbc6bffa90cc0225b39da2e5c2d3b": { - "anonymous": false, - "inputs": [ - { - "indexed": true, - "internalType": "address", - "name": "implementation", - "type": "address" - } - ], - "name": "Upgraded", - "type": "event" - } - }, - "links": {}, - "address": "0x74D4d4528E948bCebAE54810F2100B9278cb8dEc" - } - }, - "schemaVersion": "3.0.23" -} \ No newline at end of file diff --git a/build/localnet/RenERC20LogicV1.json b/build/localnet/RenERC20LogicV1.json deleted file mode 100644 index 455cbbfc..00000000 --- a/build/localnet/RenERC20LogicV1.json +++ /dev/null @@ -1,937 +0,0 @@ -{ - "contractName": "RenERC20LogicV1", - "abi": [ - { - "anonymous": false, - "inputs": [ - { - "indexed": true, - "internalType": "address", - "name": "owner", - "type": "address" - }, - { - "indexed": true, - "internalType": "address", - "name": "spender", - "type": "address" - }, - { - "indexed": false, - "internalType": "uint256", - "name": "value", - "type": "uint256" - } - ], - "name": "Approval", - "type": "event" - }, - { - "anonymous": false, - "inputs": [ - { - "indexed": true, - "internalType": "uint256", - "name": "_rate", - "type": "uint256" - } - ], - "name": "LogRateChanged", - "type": "event" - }, - { - "anonymous": false, - "inputs": [ - { - "indexed": true, - "internalType": "address", - "name": "previousOwner", - "type": "address" - }, - { - "indexed": true, - "internalType": "address", - "name": "newOwner", - "type": "address" - } - ], - "name": "OwnershipTransferred", - "type": "event" - }, - { - "anonymous": false, - "inputs": [ - { - "indexed": true, - "internalType": "address", - "name": "from", - "type": "address" - }, - { - "indexed": true, - "internalType": "address", - "name": "to", - "type": "address" - }, - { - "indexed": false, - "internalType": "uint256", - "name": "value", - "type": "uint256" - } - ], - "name": "Transfer", - "type": "event" - }, - { - "constant": true, - "inputs": [], - "name": "DOMAIN_SEPARATOR", - "outputs": [ - { - "internalType": "bytes32", - "name": "", - "type": "bytes32" - } - ], - "payable": false, - "stateMutability": "view", - "type": "function" - }, - { - "constant": true, - "inputs": [], - "name": "PERMIT_TYPEHASH", - "outputs": [ - { - "internalType": "bytes32", - "name": "", - "type": "bytes32" - } - ], - "payable": false, - "stateMutability": "view", - "type": "function" - }, - { - "constant": true, - "inputs": [], - "name": "_rateScale", - "outputs": [ - { - "internalType": "uint256", - "name": "", - "type": "uint256" - } - ], - "payable": false, - "stateMutability": "view", - "type": "function" - }, - { - "constant": true, - "inputs": [ - { - "internalType": "address", - "name": "owner", - "type": "address" - }, - { - "internalType": "address", - "name": "spender", - "type": "address" - } - ], - "name": "allowance", - "outputs": [ - { - "internalType": "uint256", - "name": "", - "type": "uint256" - } - ], - "payable": false, - "stateMutability": "view", - "type": "function" - }, - { - "constant": false, - "inputs": [ - { - "internalType": "address", - "name": "spender", - "type": "address" - }, - { - "internalType": "uint256", - "name": "amount", - "type": "uint256" - } - ], - "name": "approve", - "outputs": [ - { - "internalType": "bool", - "name": "", - "type": "bool" - } - ], - "payable": false, - "stateMutability": "nonpayable", - "type": "function" - }, - { - "constant": true, - "inputs": [ - { - "internalType": "address", - "name": "account", - "type": "address" - } - ], - "name": "balanceOf", - "outputs": [ - { - "internalType": "uint256", - "name": "", - "type": "uint256" - } - ], - "payable": false, - "stateMutability": "view", - "type": "function" - }, - { - "constant": true, - "inputs": [ - { - "internalType": "address", - "name": "_account", - "type": "address" - } - ], - "name": "balanceOfUnderlying", - "outputs": [ - { - "internalType": "uint256", - "name": "", - "type": "uint256" - } - ], - "payable": false, - "stateMutability": "view", - "type": "function" - }, - { - "constant": false, - "inputs": [ - { - "internalType": "address", - "name": "_token", - "type": "address" - } - ], - "name": "blacklistRecoverableToken", - "outputs": [], - "payable": false, - "stateMutability": "nonpayable", - "type": "function" - }, - { - "constant": false, - "inputs": [ - { - "internalType": "address", - "name": "_from", - "type": "address" - }, - { - "internalType": "uint256", - "name": "_amount", - "type": "uint256" - } - ], - "name": "burn", - "outputs": [], - "payable": false, - "stateMutability": "nonpayable", - "type": "function" - }, - { - "constant": false, - "inputs": [], - "name": "claimOwnership", - "outputs": [], - "payable": false, - "stateMutability": "nonpayable", - "type": "function" - }, - { - "constant": true, - "inputs": [], - "name": "decimals", - "outputs": [ - { - "internalType": "uint8", - "name": "", - "type": "uint8" - } - ], - "payable": false, - "stateMutability": "view", - "type": "function" - }, - { - "constant": false, - "inputs": [ - { - "internalType": "address", - "name": "spender", - "type": "address" - }, - { - "internalType": "uint256", - "name": "subtractedValue", - "type": "uint256" - } - ], - "name": "decreaseAllowance", - "outputs": [ - { - "internalType": "bool", - "name": "", - "type": "bool" - } - ], - "payable": false, - "stateMutability": "nonpayable", - "type": "function" - }, - { - "constant": true, - "inputs": [], - "name": "exchangeRateCurrent", - "outputs": [ - { - "internalType": "uint256", - "name": "", - "type": "uint256" - } - ], - "payable": false, - "stateMutability": "view", - "type": "function" - }, - { - "constant": true, - "inputs": [ - { - "internalType": "uint256", - "name": "_amountUnderlying", - "type": "uint256" - } - ], - "name": "fromUnderlying", - "outputs": [ - { - "internalType": "uint256", - "name": "", - "type": "uint256" - } - ], - "payable": false, - "stateMutability": "view", - "type": "function" - }, - { - "constant": false, - "inputs": [ - { - "internalType": "address", - "name": "spender", - "type": "address" - }, - { - "internalType": "uint256", - "name": "addedValue", - "type": "uint256" - } - ], - "name": "increaseAllowance", - "outputs": [ - { - "internalType": "bool", - "name": "", - "type": "bool" - } - ], - "payable": false, - "stateMutability": "nonpayable", - "type": "function" - }, - { - "constant": false, - "inputs": [ - { - "internalType": "string", - "name": "name", - "type": "string" - }, - { - "internalType": "string", - "name": "symbol", - "type": "string" - }, - { - "internalType": "uint8", - "name": "decimals", - "type": "uint8" - } - ], - "name": "initialize", - "outputs": [], - "payable": false, - "stateMutability": "nonpayable", - "type": "function" - }, - { - "constant": false, - "inputs": [ - { - "internalType": "uint256", - "name": "_chainId", - "type": "uint256" - }, - { - "internalType": "address", - "name": "_nextOwner", - "type": "address" - }, - { - "internalType": "uint256", - "name": "_initialRate", - "type": "uint256" - }, - { - "internalType": "string", - "name": "_version", - "type": "string" - }, - { - "internalType": "string", - "name": "_name", - "type": "string" - }, - { - "internalType": "string", - "name": "_symbol", - "type": "string" - }, - { - "internalType": "uint8", - "name": "_decimals", - "type": "uint8" - } - ], - "name": "initialize", - "outputs": [], - "payable": false, - "stateMutability": "nonpayable", - "type": "function" - }, - { - "constant": false, - "inputs": [ - { - "internalType": "uint256", - "name": "_chainId", - "type": "uint256" - }, - { - "internalType": "string", - "name": "_version", - "type": "string" - }, - { - "internalType": "string", - "name": "_name", - "type": "string" - }, - { - "internalType": "string", - "name": "_symbol", - "type": "string" - }, - { - "internalType": "uint8", - "name": "_decimals", - "type": "uint8" - } - ], - "name": "initialize", - "outputs": [], - "payable": false, - "stateMutability": "nonpayable", - "type": "function" - }, - { - "constant": false, - "inputs": [ - { - "internalType": "address", - "name": "_nextOwner", - "type": "address" - } - ], - "name": "initialize", - "outputs": [], - "payable": false, - "stateMutability": "nonpayable", - "type": "function" - }, - { - "constant": false, - "inputs": [ - { - "internalType": "address", - "name": "_nextOwner", - "type": "address" - }, - { - "internalType": "uint256", - "name": "_initialRate", - "type": "uint256" - } - ], - "name": "initialize", - "outputs": [], - "payable": false, - "stateMutability": "nonpayable", - "type": "function" - }, - { - "constant": true, - "inputs": [], - "name": "isOwner", - "outputs": [ - { - "internalType": "bool", - "name": "", - "type": "bool" - } - ], - "payable": false, - "stateMutability": "view", - "type": "function" - }, - { - "constant": false, - "inputs": [ - { - "internalType": "address", - "name": "_to", - "type": "address" - }, - { - "internalType": "uint256", - "name": "_amount", - "type": "uint256" - } - ], - "name": "mint", - "outputs": [], - "payable": false, - "stateMutability": "nonpayable", - "type": "function" - }, - { - "constant": true, - "inputs": [], - "name": "name", - "outputs": [ - { - "internalType": "string", - "name": "", - "type": "string" - } - ], - "payable": false, - "stateMutability": "view", - "type": "function" - }, - { - "constant": true, - "inputs": [ - { - "internalType": "address", - "name": "", - "type": "address" - } - ], - "name": "nonces", - "outputs": [ - { - "internalType": "uint256", - "name": "", - "type": "uint256" - } - ], - "payable": false, - "stateMutability": "view", - "type": "function" - }, - { - "constant": true, - "inputs": [], - "name": "owner", - "outputs": [ - { - "internalType": "address", - "name": "", - "type": "address" - } - ], - "payable": false, - "stateMutability": "view", - "type": "function" - }, - { - "constant": true, - "inputs": [], - "name": "pendingOwner", - "outputs": [ - { - "internalType": "address", - "name": "", - "type": "address" - } - ], - "payable": false, - "stateMutability": "view", - "type": "function" - }, - { - "constant": false, - "inputs": [ - { - "internalType": "address", - "name": "holder", - "type": "address" - }, - { - "internalType": "address", - "name": "spender", - "type": "address" - }, - { - "internalType": "uint256", - "name": "nonce", - "type": "uint256" - }, - { - "internalType": "uint256", - "name": "expiry", - "type": "uint256" - }, - { - "internalType": "bool", - "name": "allowed", - "type": "bool" - }, - { - "internalType": "uint8", - "name": "v", - "type": "uint8" - }, - { - "internalType": "bytes32", - "name": "r", - "type": "bytes32" - }, - { - "internalType": "bytes32", - "name": "s", - "type": "bytes32" - } - ], - "name": "permit", - "outputs": [], - "payable": false, - "stateMutability": "nonpayable", - "type": "function" - }, - { - "constant": false, - "inputs": [ - { - "internalType": "address", - "name": "_token", - "type": "address" - } - ], - "name": "recoverTokens", - "outputs": [], - "payable": false, - "stateMutability": "nonpayable", - "type": "function" - }, - { - "constant": false, - "inputs": [], - "name": "renounceOwnership", - "outputs": [], - "payable": false, - "stateMutability": "nonpayable", - "type": "function" - }, - { - "constant": false, - "inputs": [ - { - "internalType": "uint256", - "name": "_nextRate", - "type": "uint256" - } - ], - "name": "setExchangeRate", - "outputs": [], - "payable": false, - "stateMutability": "nonpayable", - "type": "function" - }, - { - "constant": true, - "inputs": [], - "name": "symbol", - "outputs": [ - { - "internalType": "string", - "name": "", - "type": "string" - } - ], - "payable": false, - "stateMutability": "view", - "type": "function" - }, - { - "constant": true, - "inputs": [ - { - "internalType": "uint256", - "name": "_amount", - "type": "uint256" - } - ], - "name": "toUnderlying", - "outputs": [ - { - "internalType": "uint256", - "name": "", - "type": "uint256" - } - ], - "payable": false, - "stateMutability": "view", - "type": "function" - }, - { - "constant": true, - "inputs": [], - "name": "totalSupply", - "outputs": [ - { - "internalType": "uint256", - "name": "", - "type": "uint256" - } - ], - "payable": false, - "stateMutability": "view", - "type": "function" - }, - { - "constant": false, - "inputs": [ - { - "internalType": "address", - "name": "recipient", - "type": "address" - }, - { - "internalType": "uint256", - "name": "amount", - "type": "uint256" - } - ], - "name": "transfer", - "outputs": [ - { - "internalType": "bool", - "name": "", - "type": "bool" - } - ], - "payable": false, - "stateMutability": "nonpayable", - "type": "function" - }, - { - "constant": false, - "inputs": [ - { - "internalType": "address", - "name": "sender", - "type": "address" - }, - { - "internalType": "address", - "name": "recipient", - "type": "address" - }, - { - "internalType": "uint256", - "name": "amount", - "type": "uint256" - } - ], - "name": "transferFrom", - "outputs": [ - { - "internalType": "bool", - "name": "", - "type": "bool" - } - ], - "payable": false, - "stateMutability": "nonpayable", - "type": "function" - }, - { - "constant": false, - "inputs": [ - { - "internalType": "address", - "name": "newOwner", - "type": "address" - } - ], - "name": "transferOwnership", - "outputs": [], - "payable": false, - "stateMutability": "nonpayable", - "type": "function" - }, - { - "constant": true, - "inputs": [], - "name": "version", - "outputs": [ - { - "internalType": "string", - "name": "", - "type": "string" - } - ], - "payable": false, - "stateMutability": "view", - "type": "function" - } - ], - "sourcePath": "~/github/renproject/ren-sol/contracts/Gateway/RenERC20.sol", - "compiler": { - "name": "solc", - "version": "0.5.16+commit.9c3226ce.Emscripten.clang" - }, - "networks": { - "42": { - "events": { - "0x8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925": { - "anonymous": false, - "inputs": [ - { - "indexed": true, - "internalType": "address", - "name": "owner", - "type": "address" - }, - { - "indexed": true, - "internalType": "address", - "name": "spender", - "type": "address" - }, - { - "indexed": false, - "internalType": "uint256", - "name": "value", - "type": "uint256" - } - ], - "name": "Approval", - "type": "event" - }, - "0x9d6ef0d454e23e234e8c1cf70cee49a44226ffb036017442229a7a5bd1d0957e": { - "anonymous": false, - "inputs": [ - { - "indexed": true, - "internalType": "uint256", - "name": "_rate", - "type": "uint256" - } - ], - "name": "LogRateChanged", - "type": "event" - }, - "0x8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0": { - "anonymous": false, - "inputs": [ - { - "indexed": true, - "internalType": "address", - "name": "previousOwner", - "type": "address" - }, - { - "indexed": true, - "internalType": "address", - "name": "newOwner", - "type": "address" - } - ], - "name": "OwnershipTransferred", - "type": "event" - }, - "0xddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef": { - "anonymous": false, - "inputs": [ - { - "indexed": true, - "internalType": "address", - "name": "from", - "type": "address" - }, - { - "indexed": true, - "internalType": "address", - "name": "to", - "type": "address" - }, - { - "indexed": false, - "internalType": "uint256", - "name": "value", - "type": "uint256" - } - ], - "name": "Transfer", - "type": "event" - } - }, - "links": {}, - "address": "0x4337DBfAC0348cd81c167CdB382d0c0B43e60187" - } - }, - "schemaVersion": "3.0.23" -} \ No newline at end of file diff --git a/build/localnet/RenProxyAdmin.json b/build/localnet/RenProxyAdmin.json deleted file mode 100644 index 0f1456a7..00000000 --- a/build/localnet/RenProxyAdmin.json +++ /dev/null @@ -1,219 +0,0 @@ -{ - "contractName": "RenProxyAdmin", - "abi": [ - { - "anonymous": false, - "inputs": [ - { - "indexed": true, - "internalType": "address", - "name": "previousOwner", - "type": "address" - }, - { - "indexed": true, - "internalType": "address", - "name": "newOwner", - "type": "address" - } - ], - "name": "OwnershipTransferred", - "type": "event" - }, - { - "constant": false, - "inputs": [ - { - "internalType": "contract AdminUpgradeabilityProxy", - "name": "proxy", - "type": "address" - }, - { - "internalType": "address", - "name": "newAdmin", - "type": "address" - } - ], - "name": "changeProxyAdmin", - "outputs": [], - "payable": false, - "stateMutability": "nonpayable", - "type": "function" - }, - { - "constant": true, - "inputs": [ - { - "internalType": "contract AdminUpgradeabilityProxy", - "name": "proxy", - "type": "address" - } - ], - "name": "getProxyAdmin", - "outputs": [ - { - "internalType": "address", - "name": "", - "type": "address" - } - ], - "payable": false, - "stateMutability": "view", - "type": "function" - }, - { - "constant": true, - "inputs": [ - { - "internalType": "contract AdminUpgradeabilityProxy", - "name": "proxy", - "type": "address" - } - ], - "name": "getProxyImplementation", - "outputs": [ - { - "internalType": "address", - "name": "", - "type": "address" - } - ], - "payable": false, - "stateMutability": "view", - "type": "function" - }, - { - "constant": true, - "inputs": [], - "name": "isOwner", - "outputs": [ - { - "internalType": "bool", - "name": "", - "type": "bool" - } - ], - "payable": false, - "stateMutability": "view", - "type": "function" - }, - { - "constant": true, - "inputs": [], - "name": "owner", - "outputs": [ - { - "internalType": "address", - "name": "", - "type": "address" - } - ], - "payable": false, - "stateMutability": "view", - "type": "function" - }, - { - "constant": false, - "inputs": [], - "name": "renounceOwnership", - "outputs": [], - "payable": false, - "stateMutability": "nonpayable", - "type": "function" - }, - { - "constant": false, - "inputs": [ - { - "internalType": "address", - "name": "newOwner", - "type": "address" - } - ], - "name": "transferOwnership", - "outputs": [], - "payable": false, - "stateMutability": "nonpayable", - "type": "function" - }, - { - "constant": false, - "inputs": [ - { - "internalType": "contract AdminUpgradeabilityProxy", - "name": "proxy", - "type": "address" - }, - { - "internalType": "address", - "name": "implementation", - "type": "address" - } - ], - "name": "upgrade", - "outputs": [], - "payable": false, - "stateMutability": "nonpayable", - "type": "function" - }, - { - "constant": false, - "inputs": [ - { - "internalType": "contract AdminUpgradeabilityProxy", - "name": "proxy", - "type": "address" - }, - { - "internalType": "address", - "name": "implementation", - "type": "address" - }, - { - "internalType": "bytes", - "name": "data", - "type": "bytes" - } - ], - "name": "upgradeAndCall", - "outputs": [], - "payable": true, - "stateMutability": "payable", - "type": "function" - } - ], - "sourcePath": "~/github/renproject/ren-sol/contracts/Governance/RenProxyAdmin.sol", - "compiler": { - "name": "solc", - "version": "0.5.16+commit.9c3226ce.Emscripten.clang" - }, - "networks": { - "42": { - "events": { - "0x8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0": { - "anonymous": false, - "inputs": [ - { - "indexed": true, - "internalType": "address", - "name": "previousOwner", - "type": "address" - }, - { - "indexed": true, - "internalType": "address", - "name": "newOwner", - "type": "address" - } - ], - "name": "OwnershipTransferred", - "type": "event" - } - }, - "links": {}, - "address": "0xC822a36df55b8f88E48417A4765C7Fe27170D8eC", - "transactionHash": "0x309f35f0c734badf1a9c201a65b371e65d29547a0fff32ab10388b1da5c57378" - } - }, - "schemaVersion": "3.0.23" -} \ No newline at end of file diff --git a/build/localnet/RenToken.json b/build/localnet/RenToken.json deleted file mode 100644 index 3d4e470c..00000000 --- a/build/localnet/RenToken.json +++ /dev/null @@ -1,757 +0,0 @@ -{ - "contractName": "RenToken", - "abi": [ - { - "inputs": [], - "payable": false, - "stateMutability": "nonpayable", - "type": "constructor" - }, - { - "anonymous": false, - "inputs": [ - { - "indexed": true, - "internalType": "address", - "name": "owner", - "type": "address" - }, - { - "indexed": true, - "internalType": "address", - "name": "spender", - "type": "address" - }, - { - "indexed": false, - "internalType": "uint256", - "name": "value", - "type": "uint256" - } - ], - "name": "Approval", - "type": "event" - }, - { - "anonymous": false, - "inputs": [ - { - "indexed": true, - "internalType": "address", - "name": "previousOwner", - "type": "address" - }, - { - "indexed": true, - "internalType": "address", - "name": "newOwner", - "type": "address" - } - ], - "name": "OwnershipTransferred", - "type": "event" - }, - { - "anonymous": false, - "inputs": [ - { - "indexed": false, - "internalType": "address", - "name": "account", - "type": "address" - } - ], - "name": "Paused", - "type": "event" - }, - { - "anonymous": false, - "inputs": [ - { - "indexed": true, - "internalType": "address", - "name": "account", - "type": "address" - } - ], - "name": "PauserAdded", - "type": "event" - }, - { - "anonymous": false, - "inputs": [ - { - "indexed": true, - "internalType": "address", - "name": "account", - "type": "address" - } - ], - "name": "PauserRemoved", - "type": "event" - }, - { - "anonymous": false, - "inputs": [ - { - "indexed": true, - "internalType": "address", - "name": "from", - "type": "address" - }, - { - "indexed": true, - "internalType": "address", - "name": "to", - "type": "address" - }, - { - "indexed": false, - "internalType": "uint256", - "name": "value", - "type": "uint256" - } - ], - "name": "Transfer", - "type": "event" - }, - { - "anonymous": false, - "inputs": [ - { - "indexed": false, - "internalType": "address", - "name": "account", - "type": "address" - } - ], - "name": "Unpaused", - "type": "event" - }, - { - "constant": true, - "inputs": [], - "name": "INITIAL_SUPPLY", - "outputs": [ - { - "internalType": "uint256", - "name": "", - "type": "uint256" - } - ], - "payable": false, - "stateMutability": "view", - "type": "function" - }, - { - "constant": false, - "inputs": [ - { - "internalType": "address", - "name": "account", - "type": "address" - } - ], - "name": "addPauser", - "outputs": [], - "payable": false, - "stateMutability": "nonpayable", - "type": "function" - }, - { - "constant": true, - "inputs": [ - { - "internalType": "address", - "name": "owner", - "type": "address" - }, - { - "internalType": "address", - "name": "spender", - "type": "address" - } - ], - "name": "allowance", - "outputs": [ - { - "internalType": "uint256", - "name": "", - "type": "uint256" - } - ], - "payable": false, - "stateMutability": "view", - "type": "function" - }, - { - "constant": false, - "inputs": [ - { - "internalType": "address", - "name": "spender", - "type": "address" - }, - { - "internalType": "uint256", - "name": "value", - "type": "uint256" - } - ], - "name": "approve", - "outputs": [ - { - "internalType": "bool", - "name": "", - "type": "bool" - } - ], - "payable": false, - "stateMutability": "nonpayable", - "type": "function" - }, - { - "constant": true, - "inputs": [ - { - "internalType": "address", - "name": "account", - "type": "address" - } - ], - "name": "balanceOf", - "outputs": [ - { - "internalType": "uint256", - "name": "", - "type": "uint256" - } - ], - "payable": false, - "stateMutability": "view", - "type": "function" - }, - { - "constant": false, - "inputs": [ - { - "internalType": "uint256", - "name": "amount", - "type": "uint256" - } - ], - "name": "burn", - "outputs": [], - "payable": false, - "stateMutability": "nonpayable", - "type": "function" - }, - { - "constant": false, - "inputs": [ - { - "internalType": "address", - "name": "account", - "type": "address" - }, - { - "internalType": "uint256", - "name": "amount", - "type": "uint256" - } - ], - "name": "burnFrom", - "outputs": [], - "payable": false, - "stateMutability": "nonpayable", - "type": "function" - }, - { - "constant": true, - "inputs": [], - "name": "decimals", - "outputs": [ - { - "internalType": "uint8", - "name": "", - "type": "uint8" - } - ], - "payable": false, - "stateMutability": "view", - "type": "function" - }, - { - "constant": false, - "inputs": [ - { - "internalType": "address", - "name": "spender", - "type": "address" - }, - { - "internalType": "uint256", - "name": "subtractedValue", - "type": "uint256" - } - ], - "name": "decreaseAllowance", - "outputs": [ - { - "internalType": "bool", - "name": "", - "type": "bool" - } - ], - "payable": false, - "stateMutability": "nonpayable", - "type": "function" - }, - { - "constant": false, - "inputs": [ - { - "internalType": "address", - "name": "spender", - "type": "address" - }, - { - "internalType": "uint256", - "name": "addedValue", - "type": "uint256" - } - ], - "name": "increaseAllowance", - "outputs": [ - { - "internalType": "bool", - "name": "", - "type": "bool" - } - ], - "payable": false, - "stateMutability": "nonpayable", - "type": "function" - }, - { - "constant": false, - "inputs": [ - { - "internalType": "string", - "name": "name", - "type": "string" - }, - { - "internalType": "string", - "name": "symbol", - "type": "string" - }, - { - "internalType": "uint8", - "name": "decimals", - "type": "uint8" - } - ], - "name": "initialize", - "outputs": [], - "payable": false, - "stateMutability": "nonpayable", - "type": "function" - }, - { - "constant": false, - "inputs": [ - { - "internalType": "address", - "name": "sender", - "type": "address" - } - ], - "name": "initialize", - "outputs": [], - "payable": false, - "stateMutability": "nonpayable", - "type": "function" - }, - { - "constant": true, - "inputs": [], - "name": "isOwner", - "outputs": [ - { - "internalType": "bool", - "name": "", - "type": "bool" - } - ], - "payable": false, - "stateMutability": "view", - "type": "function" - }, - { - "constant": true, - "inputs": [ - { - "internalType": "address", - "name": "account", - "type": "address" - } - ], - "name": "isPauser", - "outputs": [ - { - "internalType": "bool", - "name": "", - "type": "bool" - } - ], - "payable": false, - "stateMutability": "view", - "type": "function" - }, - { - "constant": true, - "inputs": [], - "name": "name", - "outputs": [ - { - "internalType": "string", - "name": "", - "type": "string" - } - ], - "payable": false, - "stateMutability": "view", - "type": "function" - }, - { - "constant": true, - "inputs": [], - "name": "owner", - "outputs": [ - { - "internalType": "address", - "name": "", - "type": "address" - } - ], - "payable": false, - "stateMutability": "view", - "type": "function" - }, - { - "constant": false, - "inputs": [], - "name": "pause", - "outputs": [], - "payable": false, - "stateMutability": "nonpayable", - "type": "function" - }, - { - "constant": true, - "inputs": [], - "name": "paused", - "outputs": [ - { - "internalType": "bool", - "name": "", - "type": "bool" - } - ], - "payable": false, - "stateMutability": "view", - "type": "function" - }, - { - "constant": false, - "inputs": [], - "name": "renounceOwnership", - "outputs": [], - "payable": false, - "stateMutability": "nonpayable", - "type": "function" - }, - { - "constant": false, - "inputs": [], - "name": "renouncePauser", - "outputs": [], - "payable": false, - "stateMutability": "nonpayable", - "type": "function" - }, - { - "constant": true, - "inputs": [], - "name": "symbol", - "outputs": [ - { - "internalType": "string", - "name": "", - "type": "string" - } - ], - "payable": false, - "stateMutability": "view", - "type": "function" - }, - { - "constant": true, - "inputs": [], - "name": "totalSupply", - "outputs": [ - { - "internalType": "uint256", - "name": "", - "type": "uint256" - } - ], - "payable": false, - "stateMutability": "view", - "type": "function" - }, - { - "constant": false, - "inputs": [ - { - "internalType": "address", - "name": "to", - "type": "address" - }, - { - "internalType": "uint256", - "name": "value", - "type": "uint256" - } - ], - "name": "transfer", - "outputs": [ - { - "internalType": "bool", - "name": "", - "type": "bool" - } - ], - "payable": false, - "stateMutability": "nonpayable", - "type": "function" - }, - { - "constant": false, - "inputs": [ - { - "internalType": "address", - "name": "from", - "type": "address" - }, - { - "internalType": "address", - "name": "to", - "type": "address" - }, - { - "internalType": "uint256", - "name": "value", - "type": "uint256" - } - ], - "name": "transferFrom", - "outputs": [ - { - "internalType": "bool", - "name": "", - "type": "bool" - } - ], - "payable": false, - "stateMutability": "nonpayable", - "type": "function" - }, - { - "constant": false, - "inputs": [ - { - "internalType": "address", - "name": "newOwner", - "type": "address" - } - ], - "name": "transferOwnership", - "outputs": [], - "payable": false, - "stateMutability": "nonpayable", - "type": "function" - }, - { - "constant": false, - "inputs": [ - { - "internalType": "address", - "name": "beneficiary", - "type": "address" - }, - { - "internalType": "uint256", - "name": "amount", - "type": "uint256" - } - ], - "name": "transferTokens", - "outputs": [ - { - "internalType": "bool", - "name": "", - "type": "bool" - } - ], - "payable": false, - "stateMutability": "nonpayable", - "type": "function" - }, - { - "constant": false, - "inputs": [], - "name": "unpause", - "outputs": [], - "payable": false, - "stateMutability": "nonpayable", - "type": "function" - } - ], - "sourcePath": "~/github/renproject/ren-sol/contracts/RenToken/RenToken.sol", - "compiler": { - "name": "solc", - "version": "0.5.16+commit.9c3226ce.Emscripten.clang" - }, - "networks": { - "42": { - "events": { - "0x8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925": { - "anonymous": false, - "inputs": [ - { - "indexed": true, - "internalType": "address", - "name": "owner", - "type": "address" - }, - { - "indexed": true, - "internalType": "address", - "name": "spender", - "type": "address" - }, - { - "indexed": false, - "internalType": "uint256", - "name": "value", - "type": "uint256" - } - ], - "name": "Approval", - "type": "event" - }, - "0x8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0": { - "anonymous": false, - "inputs": [ - { - "indexed": true, - "internalType": "address", - "name": "previousOwner", - "type": "address" - }, - { - "indexed": true, - "internalType": "address", - "name": "newOwner", - "type": "address" - } - ], - "name": "OwnershipTransferred", - "type": "event" - }, - "0x62e78cea01bee320cd4e420270b5ea74000d11b0c9f74754ebdbfc544b05a258": { - "anonymous": false, - "inputs": [ - { - "indexed": false, - "internalType": "address", - "name": "account", - "type": "address" - } - ], - "name": "Paused", - "type": "event" - }, - "0x6719d08c1888103bea251a4ed56406bd0c3e69723c8a1686e017e7bbe159b6f8": { - "anonymous": false, - "inputs": [ - { - "indexed": true, - "internalType": "address", - "name": "account", - "type": "address" - } - ], - "name": "PauserAdded", - "type": "event" - }, - "0xcd265ebaf09df2871cc7bd4133404a235ba12eff2041bb89d9c714a2621c7c7e": { - "anonymous": false, - "inputs": [ - { - "indexed": true, - "internalType": "address", - "name": "account", - "type": "address" - } - ], - "name": "PauserRemoved", - "type": "event" - }, - "0xddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef": { - "anonymous": false, - "inputs": [ - { - "indexed": true, - "internalType": "address", - "name": "from", - "type": "address" - }, - { - "indexed": true, - "internalType": "address", - "name": "to", - "type": "address" - }, - { - "indexed": false, - "internalType": "uint256", - "name": "value", - "type": "uint256" - } - ], - "name": "Transfer", - "type": "event" - }, - "0x5db9ee0a495bf2e6ff9c91a7834c1ba4fdd244a5e8aa4e537bd38aeae4b073aa": { - "anonymous": false, - "inputs": [ - { - "indexed": false, - "internalType": "address", - "name": "account", - "type": "address" - } - ], - "name": "Unpaused", - "type": "event" - } - }, - "links": {}, - "address": "0x2cd647668494c1b15743ab283a0f980d90a87394" - } - }, - "schemaVersion": "3.0.23" -} \ No newline at end of file diff --git a/build/localnet/RenZEC.json b/build/localnet/RenZEC.json deleted file mode 100644 index e1105c11..00000000 --- a/build/localnet/RenZEC.json +++ /dev/null @@ -1,214 +0,0 @@ -{ - "contractName": "RenZEC", - "abi": [ - { - "anonymous": false, - "inputs": [ - { - "indexed": false, - "internalType": "address", - "name": "previousAdmin", - "type": "address" - }, - { - "indexed": false, - "internalType": "address", - "name": "newAdmin", - "type": "address" - } - ], - "name": "AdminChanged", - "type": "event" - }, - { - "anonymous": false, - "inputs": [ - { - "indexed": true, - "internalType": "address", - "name": "implementation", - "type": "address" - } - ], - "name": "Upgraded", - "type": "event" - }, - { - "payable": true, - "stateMutability": "payable", - "type": "fallback" - }, - { - "constant": false, - "inputs": [], - "name": "admin", - "outputs": [ - { - "internalType": "address", - "name": "", - "type": "address" - } - ], - "payable": false, - "stateMutability": "nonpayable", - "type": "function" - }, - { - "constant": false, - "inputs": [ - { - "internalType": "address", - "name": "newAdmin", - "type": "address" - } - ], - "name": "changeAdmin", - "outputs": [], - "payable": false, - "stateMutability": "nonpayable", - "type": "function" - }, - { - "constant": false, - "inputs": [], - "name": "implementation", - "outputs": [ - { - "internalType": "address", - "name": "", - "type": "address" - } - ], - "payable": false, - "stateMutability": "nonpayable", - "type": "function" - }, - { - "constant": false, - "inputs": [ - { - "internalType": "address", - "name": "_logic", - "type": "address" - }, - { - "internalType": "address", - "name": "_admin", - "type": "address" - }, - { - "internalType": "bytes", - "name": "_data", - "type": "bytes" - } - ], - "name": "initialize", - "outputs": [], - "payable": true, - "stateMutability": "payable", - "type": "function" - }, - { - "constant": false, - "inputs": [ - { - "internalType": "address", - "name": "_logic", - "type": "address" - }, - { - "internalType": "bytes", - "name": "_data", - "type": "bytes" - } - ], - "name": "initialize", - "outputs": [], - "payable": true, - "stateMutability": "payable", - "type": "function" - }, - { - "constant": false, - "inputs": [ - { - "internalType": "address", - "name": "newImplementation", - "type": "address" - } - ], - "name": "upgradeTo", - "outputs": [], - "payable": false, - "stateMutability": "nonpayable", - "type": "function" - }, - { - "constant": false, - "inputs": [ - { - "internalType": "address", - "name": "newImplementation", - "type": "address" - }, - { - "internalType": "bytes", - "name": "data", - "type": "bytes" - } - ], - "name": "upgradeToAndCall", - "outputs": [], - "payable": true, - "stateMutability": "payable", - "type": "function" - } - ], - "sourcePath": "~/github/renproject/ren-sol/contracts/Gateway/RenERC20.sol", - "compiler": { - "name": "solc", - "version": "0.5.16+commit.9c3226ce.Emscripten.clang" - }, - "networks": { - "42": { - "events": { - "0x7e644d79422f17c01e4894b5f4f588d331ebfa28653d42ae832dc59e38c9798f": { - "anonymous": false, - "inputs": [ - { - "indexed": false, - "internalType": "address", - "name": "previousAdmin", - "type": "address" - }, - { - "indexed": false, - "internalType": "address", - "name": "newAdmin", - "type": "address" - } - ], - "name": "AdminChanged", - "type": "event" - }, - "0xbc7cd75a20ee27fd9adebab32041f755214dbc6bffa90cc0225b39da2e5c2d3b": { - "anonymous": false, - "inputs": [ - { - "indexed": true, - "internalType": "address", - "name": "implementation", - "type": "address" - } - ], - "name": "Upgraded", - "type": "event" - } - }, - "links": {}, - "address": "0x1c2B80b7444FC6235DE9ABdf68900E4EDb2b2617", - "transactionHash": "0xb2baa3e66912c4c8caa839ab86137032ddfd1f97c2e165eb8f4da4f44248b496" - } - }, - "schemaVersion": "3.0.23" -} \ No newline at end of file diff --git a/build/localnet/ZECGateway.json b/build/localnet/ZECGateway.json deleted file mode 100644 index 5b4ab597..00000000 --- a/build/localnet/ZECGateway.json +++ /dev/null @@ -1,214 +0,0 @@ -{ - "contractName": "ZECGateway", - "abi": [ - { - "anonymous": false, - "inputs": [ - { - "indexed": false, - "internalType": "address", - "name": "previousAdmin", - "type": "address" - }, - { - "indexed": false, - "internalType": "address", - "name": "newAdmin", - "type": "address" - } - ], - "name": "AdminChanged", - "type": "event" - }, - { - "anonymous": false, - "inputs": [ - { - "indexed": true, - "internalType": "address", - "name": "implementation", - "type": "address" - } - ], - "name": "Upgraded", - "type": "event" - }, - { - "payable": true, - "stateMutability": "payable", - "type": "fallback" - }, - { - "constant": false, - "inputs": [], - "name": "admin", - "outputs": [ - { - "internalType": "address", - "name": "", - "type": "address" - } - ], - "payable": false, - "stateMutability": "nonpayable", - "type": "function" - }, - { - "constant": false, - "inputs": [ - { - "internalType": "address", - "name": "newAdmin", - "type": "address" - } - ], - "name": "changeAdmin", - "outputs": [], - "payable": false, - "stateMutability": "nonpayable", - "type": "function" - }, - { - "constant": false, - "inputs": [], - "name": "implementation", - "outputs": [ - { - "internalType": "address", - "name": "", - "type": "address" - } - ], - "payable": false, - "stateMutability": "nonpayable", - "type": "function" - }, - { - "constant": false, - "inputs": [ - { - "internalType": "address", - "name": "_logic", - "type": "address" - }, - { - "internalType": "address", - "name": "_admin", - "type": "address" - }, - { - "internalType": "bytes", - "name": "_data", - "type": "bytes" - } - ], - "name": "initialize", - "outputs": [], - "payable": true, - "stateMutability": "payable", - "type": "function" - }, - { - "constant": false, - "inputs": [ - { - "internalType": "address", - "name": "_logic", - "type": "address" - }, - { - "internalType": "bytes", - "name": "_data", - "type": "bytes" - } - ], - "name": "initialize", - "outputs": [], - "payable": true, - "stateMutability": "payable", - "type": "function" - }, - { - "constant": false, - "inputs": [ - { - "internalType": "address", - "name": "newImplementation", - "type": "address" - } - ], - "name": "upgradeTo", - "outputs": [], - "payable": false, - "stateMutability": "nonpayable", - "type": "function" - }, - { - "constant": false, - "inputs": [ - { - "internalType": "address", - "name": "newImplementation", - "type": "address" - }, - { - "internalType": "bytes", - "name": "data", - "type": "bytes" - } - ], - "name": "upgradeToAndCall", - "outputs": [], - "payable": true, - "stateMutability": "payable", - "type": "function" - } - ], - "sourcePath": "~/github/renproject/ren-sol/contracts/Gateway/Gateway.sol", - "compiler": { - "name": "solc", - "version": "0.5.16+commit.9c3226ce.Emscripten.clang" - }, - "networks": { - "42": { - "events": { - "0x7e644d79422f17c01e4894b5f4f588d331ebfa28653d42ae832dc59e38c9798f": { - "anonymous": false, - "inputs": [ - { - "indexed": false, - "internalType": "address", - "name": "previousAdmin", - "type": "address" - }, - { - "indexed": false, - "internalType": "address", - "name": "newAdmin", - "type": "address" - } - ], - "name": "AdminChanged", - "type": "event" - }, - "0xbc7cd75a20ee27fd9adebab32041f755214dbc6bffa90cc0225b39da2e5c2d3b": { - "anonymous": false, - "inputs": [ - { - "indexed": true, - "internalType": "address", - "name": "implementation", - "type": "address" - } - ], - "name": "Upgraded", - "type": "event" - } - }, - "links": {}, - "address": "0x36e668b46DF1b4DfFb843FF8dbb6DBf7200AEAC9", - "transactionHash": "0x7aba944c8ad6738f34ac8c9156927c9e14c1811ed6446a5aa245c9e12ad39373" - } - }, - "schemaVersion": "3.0.23" -} \ No newline at end of file diff --git a/build/mainnet/BCHGateway.json b/build/mainnet/BCHGateway.json deleted file mode 100644 index 40accd3a..00000000 --- a/build/mainnet/BCHGateway.json +++ /dev/null @@ -1,213 +0,0 @@ -{ - "contractName": "BCHGateway", - "abi": [ - { - "anonymous": false, - "inputs": [ - { - "indexed": false, - "internalType": "address", - "name": "previousAdmin", - "type": "address" - }, - { - "indexed": false, - "internalType": "address", - "name": "newAdmin", - "type": "address" - } - ], - "name": "AdminChanged", - "type": "event" - }, - { - "anonymous": false, - "inputs": [ - { - "indexed": true, - "internalType": "address", - "name": "implementation", - "type": "address" - } - ], - "name": "Upgraded", - "type": "event" - }, - { - "payable": true, - "stateMutability": "payable", - "type": "fallback" - }, - { - "constant": false, - "inputs": [], - "name": "admin", - "outputs": [ - { - "internalType": "address", - "name": "", - "type": "address" - } - ], - "payable": false, - "stateMutability": "nonpayable", - "type": "function" - }, - { - "constant": false, - "inputs": [ - { - "internalType": "address", - "name": "newAdmin", - "type": "address" - } - ], - "name": "changeAdmin", - "outputs": [], - "payable": false, - "stateMutability": "nonpayable", - "type": "function" - }, - { - "constant": false, - "inputs": [], - "name": "implementation", - "outputs": [ - { - "internalType": "address", - "name": "", - "type": "address" - } - ], - "payable": false, - "stateMutability": "nonpayable", - "type": "function" - }, - { - "constant": false, - "inputs": [ - { - "internalType": "address", - "name": "_logic", - "type": "address" - }, - { - "internalType": "address", - "name": "_admin", - "type": "address" - }, - { - "internalType": "bytes", - "name": "_data", - "type": "bytes" - } - ], - "name": "initialize", - "outputs": [], - "payable": true, - "stateMutability": "payable", - "type": "function" - }, - { - "constant": false, - "inputs": [ - { - "internalType": "address", - "name": "_logic", - "type": "address" - }, - { - "internalType": "bytes", - "name": "_data", - "type": "bytes" - } - ], - "name": "initialize", - "outputs": [], - "payable": true, - "stateMutability": "payable", - "type": "function" - }, - { - "constant": false, - "inputs": [ - { - "internalType": "address", - "name": "newImplementation", - "type": "address" - } - ], - "name": "upgradeTo", - "outputs": [], - "payable": false, - "stateMutability": "nonpayable", - "type": "function" - }, - { - "constant": false, - "inputs": [ - { - "internalType": "address", - "name": "newImplementation", - "type": "address" - }, - { - "internalType": "bytes", - "name": "data", - "type": "bytes" - } - ], - "name": "upgradeToAndCall", - "outputs": [], - "payable": true, - "stateMutability": "payable", - "type": "function" - } - ], - "sourcePath": "~/github/renproject/ren-sol/contracts/Gateway/Gateway.sol", - "compiler": { - "name": "solc", - "version": "0.5.16+commit.9c3226ce.Emscripten.clang" - }, - "networks": { - "1": { - "events": { - "0x7e644d79422f17c01e4894b5f4f588d331ebfa28653d42ae832dc59e38c9798f": { - "anonymous": false, - "inputs": [ - { - "indexed": false, - "internalType": "address", - "name": "previousAdmin", - "type": "address" - }, - { - "indexed": false, - "internalType": "address", - "name": "newAdmin", - "type": "address" - } - ], - "name": "AdminChanged", - "type": "event" - }, - "0xbc7cd75a20ee27fd9adebab32041f755214dbc6bffa90cc0225b39da2e5c2d3b": { - "anonymous": false, - "inputs": [ - { - "indexed": true, - "internalType": "address", - "name": "implementation", - "type": "address" - } - ], - "name": "Upgraded", - "type": "event" - } - }, - "links": {}, - "address": "0xCc4FF5b8A4A7adb35F00ff0CBf53784e07c3C52F" - } - }, - "schemaVersion": "3.0.23" -} \ No newline at end of file diff --git a/build/mainnet/BTCGateway.json b/build/mainnet/BTCGateway.json deleted file mode 100644 index 9037454c..00000000 --- a/build/mainnet/BTCGateway.json +++ /dev/null @@ -1,213 +0,0 @@ -{ - "contractName": "BTCGateway", - "abi": [ - { - "anonymous": false, - "inputs": [ - { - "indexed": false, - "internalType": "address", - "name": "previousAdmin", - "type": "address" - }, - { - "indexed": false, - "internalType": "address", - "name": "newAdmin", - "type": "address" - } - ], - "name": "AdminChanged", - "type": "event" - }, - { - "anonymous": false, - "inputs": [ - { - "indexed": true, - "internalType": "address", - "name": "implementation", - "type": "address" - } - ], - "name": "Upgraded", - "type": "event" - }, - { - "payable": true, - "stateMutability": "payable", - "type": "fallback" - }, - { - "constant": false, - "inputs": [], - "name": "admin", - "outputs": [ - { - "internalType": "address", - "name": "", - "type": "address" - } - ], - "payable": false, - "stateMutability": "nonpayable", - "type": "function" - }, - { - "constant": false, - "inputs": [ - { - "internalType": "address", - "name": "newAdmin", - "type": "address" - } - ], - "name": "changeAdmin", - "outputs": [], - "payable": false, - "stateMutability": "nonpayable", - "type": "function" - }, - { - "constant": false, - "inputs": [], - "name": "implementation", - "outputs": [ - { - "internalType": "address", - "name": "", - "type": "address" - } - ], - "payable": false, - "stateMutability": "nonpayable", - "type": "function" - }, - { - "constant": false, - "inputs": [ - { - "internalType": "address", - "name": "_logic", - "type": "address" - }, - { - "internalType": "address", - "name": "_admin", - "type": "address" - }, - { - "internalType": "bytes", - "name": "_data", - "type": "bytes" - } - ], - "name": "initialize", - "outputs": [], - "payable": true, - "stateMutability": "payable", - "type": "function" - }, - { - "constant": false, - "inputs": [ - { - "internalType": "address", - "name": "_logic", - "type": "address" - }, - { - "internalType": "bytes", - "name": "_data", - "type": "bytes" - } - ], - "name": "initialize", - "outputs": [], - "payable": true, - "stateMutability": "payable", - "type": "function" - }, - { - "constant": false, - "inputs": [ - { - "internalType": "address", - "name": "newImplementation", - "type": "address" - } - ], - "name": "upgradeTo", - "outputs": [], - "payable": false, - "stateMutability": "nonpayable", - "type": "function" - }, - { - "constant": false, - "inputs": [ - { - "internalType": "address", - "name": "newImplementation", - "type": "address" - }, - { - "internalType": "bytes", - "name": "data", - "type": "bytes" - } - ], - "name": "upgradeToAndCall", - "outputs": [], - "payable": true, - "stateMutability": "payable", - "type": "function" - } - ], - "sourcePath": "~/github/renproject/ren-sol/contracts/Gateway/Gateway.sol", - "compiler": { - "name": "solc", - "version": "0.5.16+commit.9c3226ce.Emscripten.clang" - }, - "networks": { - "1": { - "events": { - "0x7e644d79422f17c01e4894b5f4f588d331ebfa28653d42ae832dc59e38c9798f": { - "anonymous": false, - "inputs": [ - { - "indexed": false, - "internalType": "address", - "name": "previousAdmin", - "type": "address" - }, - { - "indexed": false, - "internalType": "address", - "name": "newAdmin", - "type": "address" - } - ], - "name": "AdminChanged", - "type": "event" - }, - "0xbc7cd75a20ee27fd9adebab32041f755214dbc6bffa90cc0225b39da2e5c2d3b": { - "anonymous": false, - "inputs": [ - { - "indexed": true, - "internalType": "address", - "name": "implementation", - "type": "address" - } - ], - "name": "Upgraded", - "type": "event" - } - }, - "links": {}, - "address": "0xe4b679400F0f267212D5D812B95f58C83243EE71" - } - }, - "schemaVersion": "3.0.23" -} \ No newline at end of file diff --git a/build/mainnet/BasicAdapter.json b/build/mainnet/BasicAdapter.json deleted file mode 100644 index 2fa822e5..00000000 --- a/build/mainnet/BasicAdapter.json +++ /dev/null @@ -1,294 +0,0 @@ -{ - "contractName": "BasicAdapter", - "abi": [ - { - "inputs": [ - { - "internalType": "contract IGatewayRegistry", - "name": "_registry", - "type": "address" - } - ], - "payable": false, - "stateMutability": "nonpayable", - "type": "constructor" - }, - { - "anonymous": false, - "inputs": [ - { - "indexed": true, - "internalType": "address", - "name": "oldRelayHub", - "type": "address" - }, - { - "indexed": true, - "internalType": "address", - "name": "newRelayHub", - "type": "address" - } - ], - "name": "RelayHubChanged", - "type": "event" - }, - { - "constant": true, - "inputs": [ - { - "internalType": "address", - "name": "relay", - "type": "address" - }, - { - "internalType": "address", - "name": "from", - "type": "address" - }, - { - "internalType": "bytes", - "name": "encodedFunction", - "type": "bytes" - }, - { - "internalType": "uint256", - "name": "transactionFee", - "type": "uint256" - }, - { - "internalType": "uint256", - "name": "gasPrice", - "type": "uint256" - }, - { - "internalType": "uint256", - "name": "gasLimit", - "type": "uint256" - }, - { - "internalType": "uint256", - "name": "nonce", - "type": "uint256" - }, - { - "internalType": "bytes", - "name": "approvalData", - "type": "bytes" - }, - { - "internalType": "uint256", - "name": "maxPossibleCharge", - "type": "uint256" - } - ], - "name": "acceptRelayedCall", - "outputs": [ - { - "internalType": "uint256", - "name": "", - "type": "uint256" - }, - { - "internalType": "bytes", - "name": "", - "type": "bytes" - } - ], - "payable": false, - "stateMutability": "view", - "type": "function" - }, - { - "constant": false, - "inputs": [ - { - "internalType": "string", - "name": "_symbol", - "type": "string" - }, - { - "internalType": "bytes", - "name": "_to", - "type": "bytes" - }, - { - "internalType": "uint256", - "name": "_amount", - "type": "uint256" - } - ], - "name": "burn", - "outputs": [], - "payable": false, - "stateMutability": "nonpayable", - "type": "function" - }, - { - "constant": true, - "inputs": [], - "name": "getHubAddr", - "outputs": [ - { - "internalType": "address", - "name": "", - "type": "address" - } - ], - "payable": false, - "stateMutability": "view", - "type": "function" - }, - { - "constant": false, - "inputs": [], - "name": "initialize", - "outputs": [], - "payable": false, - "stateMutability": "nonpayable", - "type": "function" - }, - { - "constant": false, - "inputs": [ - { - "internalType": "string", - "name": "_symbol", - "type": "string" - }, - { - "internalType": "address", - "name": "_recipient", - "type": "address" - }, - { - "internalType": "uint256", - "name": "_amount", - "type": "uint256" - }, - { - "internalType": "bytes32", - "name": "_nHash", - "type": "bytes32" - }, - { - "internalType": "bytes", - "name": "_sig", - "type": "bytes" - } - ], - "name": "mint", - "outputs": [], - "payable": false, - "stateMutability": "nonpayable", - "type": "function" - }, - { - "constant": false, - "inputs": [ - { - "internalType": "bytes", - "name": "context", - "type": "bytes" - }, - { - "internalType": "bool", - "name": "success", - "type": "bool" - }, - { - "internalType": "uint256", - "name": "actualCharge", - "type": "uint256" - }, - { - "internalType": "bytes32", - "name": "preRetVal", - "type": "bytes32" - } - ], - "name": "postRelayedCall", - "outputs": [], - "payable": false, - "stateMutability": "nonpayable", - "type": "function" - }, - { - "constant": false, - "inputs": [ - { - "internalType": "bytes", - "name": "context", - "type": "bytes" - } - ], - "name": "preRelayedCall", - "outputs": [ - { - "internalType": "bytes32", - "name": "", - "type": "bytes32" - } - ], - "payable": false, - "stateMutability": "nonpayable", - "type": "function" - }, - { - "constant": true, - "inputs": [], - "name": "relayHubVersion", - "outputs": [ - { - "internalType": "string", - "name": "", - "type": "string" - } - ], - "payable": false, - "stateMutability": "view", - "type": "function" - }, - { - "constant": false, - "inputs": [], - "name": "setDefaultRelayHub", - "outputs": [], - "payable": false, - "stateMutability": "nonpayable", - "type": "function" - } - ], - "sourcePath": "~/github/renproject/ren-sol/contracts/Gateway/adapters/BasicAdapter.sol", - "compiler": { - "name": "solc", - "version": "0.5.16+commit.9c3226ce.Emscripten.clang" - }, - "networks": { - "1": { - "events": { - "0xb9f84b8e65164b14439ae3620df0a4d8786d896996c0282b683f9d8c08f046e8": { - "anonymous": false, - "inputs": [ - { - "indexed": true, - "internalType": "address", - "name": "oldRelayHub", - "type": "address" - }, - { - "indexed": true, - "internalType": "address", - "name": "newRelayHub", - "type": "address" - } - ], - "name": "RelayHubChanged", - "type": "event" - } - }, - "links": {}, - "address": "0x32666B64e9fD0F44916E1378Efb2CFa3B3B96e80" - } - }, - "schemaVersion": "3.0.23" -} \ No newline at end of file diff --git a/build/mainnet/DarknodePayment.json b/build/mainnet/DarknodePayment.json deleted file mode 100644 index 95677f59..00000000 --- a/build/mainnet/DarknodePayment.json +++ /dev/null @@ -1,1051 +0,0 @@ -{ - "contractName": "DarknodePayment", - "abi": [ - { - "inputs": [ - { - "internalType": "string", - "name": "_VERSION", - "type": "string" - }, - { - "internalType": "contract DarknodeRegistryLogicV1", - "name": "_darknodeRegistry", - "type": "address" - }, - { - "internalType": "contract DarknodePaymentStore", - "name": "_darknodePaymentStore", - "type": "address" - }, - { - "internalType": "uint256", - "name": "_cyclePayoutPercent", - "type": "uint256" - } - ], - "payable": false, - "stateMutability": "nonpayable", - "type": "constructor" - }, - { - "anonymous": false, - "inputs": [ - { - "indexed": true, - "internalType": "address", - "name": "_newCycleChanger", - "type": "address" - }, - { - "indexed": true, - "internalType": "address", - "name": "_oldCycleChanger", - "type": "address" - } - ], - "name": "LogCycleChangerChanged", - "type": "event" - }, - { - "anonymous": false, - "inputs": [ - { - "indexed": true, - "internalType": "address", - "name": "_darknode", - "type": "address" - }, - { - "indexed": false, - "internalType": "uint256", - "name": "_cycle", - "type": "uint256" - } - ], - "name": "LogDarknodeClaim", - "type": "event" - }, - { - "anonymous": false, - "inputs": [ - { - "indexed": true, - "internalType": "contract DarknodeRegistryLogicV1", - "name": "_previousDarknodeRegistry", - "type": "address" - }, - { - "indexed": true, - "internalType": "contract DarknodeRegistryLogicV1", - "name": "_nextDarknodeRegistry", - "type": "address" - } - ], - "name": "LogDarknodeRegistryUpdated", - "type": "event" - }, - { - "anonymous": false, - "inputs": [ - { - "indexed": true, - "internalType": "address", - "name": "_darknodeOperator", - "type": "address" - }, - { - "indexed": true, - "internalType": "address", - "name": "_darknodeID", - "type": "address" - }, - { - "indexed": true, - "internalType": "address", - "name": "_token", - "type": "address" - }, - { - "indexed": false, - "internalType": "uint256", - "name": "_value", - "type": "uint256" - } - ], - "name": "LogDarknodeWithdrew", - "type": "event" - }, - { - "anonymous": false, - "inputs": [ - { - "indexed": true, - "internalType": "address", - "name": "_payer", - "type": "address" - }, - { - "indexed": true, - "internalType": "address", - "name": "_token", - "type": "address" - }, - { - "indexed": false, - "internalType": "uint256", - "name": "_amount", - "type": "uint256" - } - ], - "name": "LogPaymentReceived", - "type": "event" - }, - { - "anonymous": false, - "inputs": [ - { - "indexed": false, - "internalType": "uint256", - "name": "_newPercent", - "type": "uint256" - }, - { - "indexed": false, - "internalType": "uint256", - "name": "_oldPercent", - "type": "uint256" - } - ], - "name": "LogPayoutPercentChanged", - "type": "event" - }, - { - "anonymous": false, - "inputs": [ - { - "indexed": true, - "internalType": "address", - "name": "_token", - "type": "address" - } - ], - "name": "LogTokenDeregistered", - "type": "event" - }, - { - "anonymous": false, - "inputs": [ - { - "indexed": true, - "internalType": "address", - "name": "_token", - "type": "address" - } - ], - "name": "LogTokenRegistered", - "type": "event" - }, - { - "anonymous": false, - "inputs": [ - { - "indexed": true, - "internalType": "address", - "name": "previousOwner", - "type": "address" - }, - { - "indexed": true, - "internalType": "address", - "name": "newOwner", - "type": "address" - } - ], - "name": "OwnershipTransferred", - "type": "event" - }, - { - "payable": true, - "stateMutability": "payable", - "type": "fallback" - }, - { - "constant": true, - "inputs": [], - "name": "ETHEREUM", - "outputs": [ - { - "internalType": "address", - "name": "", - "type": "address" - } - ], - "payable": false, - "stateMutability": "view", - "type": "function" - }, - { - "constant": true, - "inputs": [], - "name": "VERSION", - "outputs": [ - { - "internalType": "string", - "name": "", - "type": "string" - } - ], - "payable": false, - "stateMutability": "view", - "type": "function" - }, - { - "constant": false, - "inputs": [], - "name": "changeCycle", - "outputs": [ - { - "internalType": "uint256", - "name": "", - "type": "uint256" - } - ], - "payable": false, - "stateMutability": "nonpayable", - "type": "function" - }, - { - "constant": false, - "inputs": [ - { - "internalType": "address", - "name": "_darknode", - "type": "address" - } - ], - "name": "claim", - "outputs": [], - "payable": false, - "stateMutability": "nonpayable", - "type": "function" - }, - { - "constant": false, - "inputs": [], - "name": "claimOwnership", - "outputs": [], - "payable": false, - "stateMutability": "nonpayable", - "type": "function" - }, - { - "constant": false, - "inputs": [], - "name": "claimStoreOwnership", - "outputs": [], - "payable": false, - "stateMutability": "nonpayable", - "type": "function" - }, - { - "constant": true, - "inputs": [], - "name": "currentCycle", - "outputs": [ - { - "internalType": "uint256", - "name": "", - "type": "uint256" - } - ], - "payable": false, - "stateMutability": "view", - "type": "function" - }, - { - "constant": true, - "inputs": [], - "name": "currentCyclePayoutPercent", - "outputs": [ - { - "internalType": "uint256", - "name": "", - "type": "uint256" - } - ], - "payable": false, - "stateMutability": "view", - "type": "function" - }, - { - "constant": true, - "inputs": [ - { - "internalType": "address", - "name": "_token", - "type": "address" - } - ], - "name": "currentCycleRewardPool", - "outputs": [ - { - "internalType": "uint256", - "name": "", - "type": "uint256" - } - ], - "payable": false, - "stateMutability": "view", - "type": "function" - }, - { - "constant": true, - "inputs": [], - "name": "cycleChanger", - "outputs": [ - { - "internalType": "address", - "name": "", - "type": "address" - } - ], - "payable": false, - "stateMutability": "view", - "type": "function" - }, - { - "constant": true, - "inputs": [], - "name": "cycleStartTime", - "outputs": [ - { - "internalType": "uint256", - "name": "", - "type": "uint256" - } - ], - "payable": false, - "stateMutability": "view", - "type": "function" - }, - { - "constant": true, - "inputs": [ - { - "internalType": "address", - "name": "_darknodeID", - "type": "address" - }, - { - "internalType": "address", - "name": "_token", - "type": "address" - } - ], - "name": "darknodeBalances", - "outputs": [ - { - "internalType": "uint256", - "name": "", - "type": "uint256" - } - ], - "payable": false, - "stateMutability": "view", - "type": "function" - }, - { - "constant": true, - "inputs": [], - "name": "darknodeRegistry", - "outputs": [ - { - "internalType": "contract DarknodeRegistryLogicV1", - "name": "", - "type": "address" - } - ], - "payable": false, - "stateMutability": "view", - "type": "function" - }, - { - "constant": false, - "inputs": [ - { - "internalType": "uint256", - "name": "_value", - "type": "uint256" - }, - { - "internalType": "address", - "name": "_token", - "type": "address" - } - ], - "name": "deposit", - "outputs": [], - "payable": true, - "stateMutability": "payable", - "type": "function" - }, - { - "constant": false, - "inputs": [ - { - "internalType": "address", - "name": "_token", - "type": "address" - } - ], - "name": "deregisterToken", - "outputs": [], - "payable": false, - "stateMutability": "nonpayable", - "type": "function" - }, - { - "constant": false, - "inputs": [ - { - "internalType": "address", - "name": "_token", - "type": "address" - } - ], - "name": "forward", - "outputs": [], - "payable": false, - "stateMutability": "nonpayable", - "type": "function" - }, - { - "constant": false, - "inputs": [ - { - "internalType": "address", - "name": "_nextOwner", - "type": "address" - } - ], - "name": "initialize", - "outputs": [], - "payable": false, - "stateMutability": "nonpayable", - "type": "function" - }, - { - "constant": true, - "inputs": [], - "name": "isOwner", - "outputs": [ - { - "internalType": "bool", - "name": "", - "type": "bool" - } - ], - "payable": false, - "stateMutability": "view", - "type": "function" - }, - { - "constant": true, - "inputs": [], - "name": "nextCyclePayoutPercent", - "outputs": [ - { - "internalType": "uint256", - "name": "", - "type": "uint256" - } - ], - "payable": false, - "stateMutability": "view", - "type": "function" - }, - { - "constant": true, - "inputs": [], - "name": "owner", - "outputs": [ - { - "internalType": "address", - "name": "", - "type": "address" - } - ], - "payable": false, - "stateMutability": "view", - "type": "function" - }, - { - "constant": true, - "inputs": [], - "name": "pendingOwner", - "outputs": [ - { - "internalType": "address", - "name": "", - "type": "address" - } - ], - "payable": false, - "stateMutability": "view", - "type": "function" - }, - { - "constant": true, - "inputs": [ - { - "internalType": "uint256", - "name": "", - "type": "uint256" - } - ], - "name": "pendingTokens", - "outputs": [ - { - "internalType": "address", - "name": "", - "type": "address" - } - ], - "payable": false, - "stateMutability": "view", - "type": "function" - }, - { - "constant": true, - "inputs": [], - "name": "previousCycle", - "outputs": [ - { - "internalType": "uint256", - "name": "", - "type": "uint256" - } - ], - "payable": false, - "stateMutability": "view", - "type": "function" - }, - { - "constant": true, - "inputs": [ - { - "internalType": "address", - "name": "", - "type": "address" - } - ], - "name": "previousCycleRewardShare", - "outputs": [ - { - "internalType": "uint256", - "name": "", - "type": "uint256" - } - ], - "payable": false, - "stateMutability": "view", - "type": "function" - }, - { - "constant": false, - "inputs": [ - { - "internalType": "address", - "name": "_token", - "type": "address" - } - ], - "name": "registerToken", - "outputs": [], - "payable": false, - "stateMutability": "nonpayable", - "type": "function" - }, - { - "constant": true, - "inputs": [ - { - "internalType": "address", - "name": "", - "type": "address" - } - ], - "name": "registeredTokenIndex", - "outputs": [ - { - "internalType": "uint256", - "name": "", - "type": "uint256" - } - ], - "payable": false, - "stateMutability": "view", - "type": "function" - }, - { - "constant": true, - "inputs": [ - { - "internalType": "uint256", - "name": "", - "type": "uint256" - } - ], - "name": "registeredTokens", - "outputs": [ - { - "internalType": "address", - "name": "", - "type": "address" - } - ], - "payable": false, - "stateMutability": "view", - "type": "function" - }, - { - "constant": false, - "inputs": [], - "name": "renounceOwnership", - "outputs": [], - "payable": false, - "stateMutability": "nonpayable", - "type": "function" - }, - { - "constant": true, - "inputs": [ - { - "internalType": "address", - "name": "", - "type": "address" - }, - { - "internalType": "uint256", - "name": "", - "type": "uint256" - } - ], - "name": "rewardClaimed", - "outputs": [ - { - "internalType": "bool", - "name": "", - "type": "bool" - } - ], - "payable": false, - "stateMutability": "view", - "type": "function" - }, - { - "constant": true, - "inputs": [], - "name": "store", - "outputs": [ - { - "internalType": "contract DarknodePaymentStore", - "name": "", - "type": "address" - } - ], - "payable": false, - "stateMutability": "view", - "type": "function" - }, - { - "constant": true, - "inputs": [ - { - "internalType": "address", - "name": "_token", - "type": "address" - } - ], - "name": "tokenPendingRegistration", - "outputs": [ - { - "internalType": "bool", - "name": "", - "type": "bool" - } - ], - "payable": false, - "stateMutability": "view", - "type": "function" - }, - { - "constant": false, - "inputs": [ - { - "internalType": "address", - "name": "newOwner", - "type": "address" - } - ], - "name": "transferOwnership", - "outputs": [], - "payable": false, - "stateMutability": "nonpayable", - "type": "function" - }, - { - "constant": false, - "inputs": [ - { - "internalType": "contract DarknodePayment", - "name": "_newOwner", - "type": "address" - } - ], - "name": "transferStoreOwnership", - "outputs": [], - "payable": false, - "stateMutability": "nonpayable", - "type": "function" - }, - { - "constant": true, - "inputs": [ - { - "internalType": "address", - "name": "", - "type": "address" - } - ], - "name": "unclaimedRewards", - "outputs": [ - { - "internalType": "uint256", - "name": "", - "type": "uint256" - } - ], - "payable": false, - "stateMutability": "view", - "type": "function" - }, - { - "constant": false, - "inputs": [ - { - "internalType": "address", - "name": "_addr", - "type": "address" - } - ], - "name": "updateCycleChanger", - "outputs": [], - "payable": false, - "stateMutability": "nonpayable", - "type": "function" - }, - { - "constant": false, - "inputs": [ - { - "internalType": "contract DarknodeRegistryLogicV1", - "name": "_darknodeRegistry", - "type": "address" - } - ], - "name": "updateDarknodeRegistry", - "outputs": [], - "payable": false, - "stateMutability": "nonpayable", - "type": "function" - }, - { - "constant": false, - "inputs": [ - { - "internalType": "uint256", - "name": "_percent", - "type": "uint256" - } - ], - "name": "updatePayoutPercentage", - "outputs": [], - "payable": false, - "stateMutability": "nonpayable", - "type": "function" - }, - { - "constant": false, - "inputs": [ - { - "internalType": "address", - "name": "_darknode", - "type": "address" - }, - { - "internalType": "address", - "name": "_token", - "type": "address" - } - ], - "name": "withdraw", - "outputs": [], - "payable": false, - "stateMutability": "nonpayable", - "type": "function" - }, - { - "constant": false, - "inputs": [ - { - "internalType": "address[]", - "name": "_darknodes", - "type": "address[]" - }, - { - "internalType": "address[]", - "name": "_tokens", - "type": "address[]" - } - ], - "name": "withdrawMultiple", - "outputs": [], - "payable": false, - "stateMutability": "nonpayable", - "type": "function" - } - ], - "sourcePath": "~/github/renproject/ren-sol/contracts/DarknodePayment/DarknodePayment.sol", - "compiler": { - "name": "solc", - "version": "0.5.16+commit.9c3226ce.Emscripten.clang" - }, - "networks": { - "1": { - "events": { - "0x9d549c7da0887b9da28aa4897e17429f78345be76b1918673be3430462a4d130": { - "anonymous": false, - "inputs": [ - { - "indexed": true, - "internalType": "address", - "name": "_newCycleChanger", - "type": "address" - }, - { - "indexed": true, - "internalType": "address", - "name": "_oldCycleChanger", - "type": "address" - } - ], - "name": "LogCycleChangerChanged", - "type": "event" - }, - "0x99c5ad5c5f898b30039b8cc54b8c0e6eb423e49bfc965a5999ebad131984e40d": { - "anonymous": false, - "inputs": [ - { - "indexed": true, - "internalType": "address", - "name": "_darknode", - "type": "address" - }, - { - "indexed": false, - "internalType": "uint256", - "name": "_cycle", - "type": "uint256" - } - ], - "name": "LogDarknodeClaim", - "type": "event" - }, - "0xf9f6dd5c784f63cc27c1079c73574a73485a6c2e7f7e2181c5eb2be8c693cfb7": { - "anonymous": false, - "inputs": [ - { - "indexed": true, - "internalType": "contract DarknodeRegistryLogicV1", - "name": "_previousDarknodeRegistry", - "type": "address" - }, - { - "indexed": true, - "internalType": "contract DarknodeRegistryLogicV1", - "name": "_nextDarknodeRegistry", - "type": "address" - } - ], - "name": "LogDarknodeRegistryUpdated", - "type": "event" - }, - "0xd390ef311a884ffc07fe929afa495d106c89041c9b8a73abd2e4f23d6c9c05c0": { - "anonymous": false, - "inputs": [ - { - "indexed": true, - "internalType": "address", - "name": "_darknodeOperator", - "type": "address" - }, - { - "indexed": true, - "internalType": "address", - "name": "_darknodeID", - "type": "address" - }, - { - "indexed": true, - "internalType": "address", - "name": "_token", - "type": "address" - }, - { - "indexed": false, - "internalType": "uint256", - "name": "_value", - "type": "uint256" - } - ], - "name": "LogDarknodeWithdrew", - "type": "event" - }, - "0x5f5d9f6f8b84a834e704e76b91a16ddc49abe97d37d6e61572febf8f1b56f7ce": { - "anonymous": false, - "inputs": [ - { - "indexed": true, - "internalType": "address", - "name": "_payer", - "type": "address" - }, - { - "indexed": true, - "internalType": "address", - "name": "_token", - "type": "address" - }, - { - "indexed": false, - "internalType": "uint256", - "name": "_amount", - "type": "uint256" - } - ], - "name": "LogPaymentReceived", - "type": "event" - }, - "0x0855549798088e618c4eccab56d3fa69209935ef7bc4ffe7200dff654d975643": { - "anonymous": false, - "inputs": [ - { - "indexed": false, - "internalType": "uint256", - "name": "_newPercent", - "type": "uint256" - }, - { - "indexed": false, - "internalType": "uint256", - "name": "_oldPercent", - "type": "uint256" - } - ], - "name": "LogPayoutPercentChanged", - "type": "event" - }, - "0xe46f21bb6906b7d69a6c06d5662a2b6c1c59d134cd7b1235babdb1a70a4b436a": { - "anonymous": false, - "inputs": [ - { - "indexed": true, - "internalType": "address", - "name": "_token", - "type": "address" - } - ], - "name": "LogTokenDeregistered", - "type": "event" - }, - "0xd780ddbc43f0c4efd61c5ca1bc8eeee3368abfb1f97aa7355da9f8bf8431c8ae": { - "anonymous": false, - "inputs": [ - { - "indexed": true, - "internalType": "address", - "name": "_token", - "type": "address" - } - ], - "name": "LogTokenRegistered", - "type": "event" - }, - "0x8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0": { - "anonymous": false, - "inputs": [ - { - "indexed": true, - "internalType": "address", - "name": "previousOwner", - "type": "address" - }, - { - "indexed": true, - "internalType": "address", - "name": "newOwner", - "type": "address" - } - ], - "name": "OwnershipTransferred", - "type": "event" - } - }, - "links": {}, - "address": "0x098e1708b920EFBdD7afe33Adb6a4CBa30c370B9" - } - }, - "schemaVersion": "3.0.23" -} \ No newline at end of file diff --git a/build/mainnet/DarknodePaymentStore.json b/build/mainnet/DarknodePaymentStore.json deleted file mode 100644 index cb521536..00000000 --- a/build/mainnet/DarknodePaymentStore.json +++ /dev/null @@ -1,341 +0,0 @@ -{ - "contractName": "DarknodePaymentStore", - "abi": [ - { - "inputs": [ - { - "internalType": "string", - "name": "_VERSION", - "type": "string" - } - ], - "payable": false, - "stateMutability": "nonpayable", - "type": "constructor" - }, - { - "anonymous": false, - "inputs": [ - { - "indexed": true, - "internalType": "address", - "name": "previousOwner", - "type": "address" - }, - { - "indexed": true, - "internalType": "address", - "name": "newOwner", - "type": "address" - } - ], - "name": "OwnershipTransferred", - "type": "event" - }, - { - "payable": true, - "stateMutability": "payable", - "type": "fallback" - }, - { - "constant": true, - "inputs": [], - "name": "ETHEREUM", - "outputs": [ - { - "internalType": "address", - "name": "", - "type": "address" - } - ], - "payable": false, - "stateMutability": "view", - "type": "function" - }, - { - "constant": true, - "inputs": [], - "name": "VERSION", - "outputs": [ - { - "internalType": "string", - "name": "", - "type": "string" - } - ], - "payable": false, - "stateMutability": "view", - "type": "function" - }, - { - "constant": true, - "inputs": [ - { - "internalType": "address", - "name": "_token", - "type": "address" - } - ], - "name": "availableBalance", - "outputs": [ - { - "internalType": "uint256", - "name": "", - "type": "uint256" - } - ], - "payable": false, - "stateMutability": "view", - "type": "function" - }, - { - "constant": false, - "inputs": [], - "name": "claimOwnership", - "outputs": [], - "payable": false, - "stateMutability": "nonpayable", - "type": "function" - }, - { - "constant": true, - "inputs": [ - { - "internalType": "address", - "name": "", - "type": "address" - }, - { - "internalType": "address", - "name": "", - "type": "address" - } - ], - "name": "darknodeBalances", - "outputs": [ - { - "internalType": "uint256", - "name": "", - "type": "uint256" - } - ], - "payable": false, - "stateMutability": "view", - "type": "function" - }, - { - "constant": false, - "inputs": [ - { - "internalType": "address", - "name": "_darknode", - "type": "address" - }, - { - "internalType": "address", - "name": "_token", - "type": "address" - }, - { - "internalType": "uint256", - "name": "_amount", - "type": "uint256" - } - ], - "name": "incrementDarknodeBalance", - "outputs": [], - "payable": false, - "stateMutability": "nonpayable", - "type": "function" - }, - { - "constant": false, - "inputs": [ - { - "internalType": "address", - "name": "_nextOwner", - "type": "address" - } - ], - "name": "initialize", - "outputs": [], - "payable": false, - "stateMutability": "nonpayable", - "type": "function" - }, - { - "constant": true, - "inputs": [], - "name": "isOwner", - "outputs": [ - { - "internalType": "bool", - "name": "", - "type": "bool" - } - ], - "payable": false, - "stateMutability": "view", - "type": "function" - }, - { - "constant": true, - "inputs": [ - { - "internalType": "address", - "name": "", - "type": "address" - } - ], - "name": "lockedBalances", - "outputs": [ - { - "internalType": "uint256", - "name": "", - "type": "uint256" - } - ], - "payable": false, - "stateMutability": "view", - "type": "function" - }, - { - "constant": true, - "inputs": [], - "name": "owner", - "outputs": [ - { - "internalType": "address", - "name": "", - "type": "address" - } - ], - "payable": false, - "stateMutability": "view", - "type": "function" - }, - { - "constant": true, - "inputs": [], - "name": "pendingOwner", - "outputs": [ - { - "internalType": "address", - "name": "", - "type": "address" - } - ], - "payable": false, - "stateMutability": "view", - "type": "function" - }, - { - "constant": false, - "inputs": [], - "name": "renounceOwnership", - "outputs": [], - "payable": false, - "stateMutability": "nonpayable", - "type": "function" - }, - { - "constant": true, - "inputs": [ - { - "internalType": "address", - "name": "_token", - "type": "address" - } - ], - "name": "totalBalance", - "outputs": [ - { - "internalType": "uint256", - "name": "", - "type": "uint256" - } - ], - "payable": false, - "stateMutability": "view", - "type": "function" - }, - { - "constant": false, - "inputs": [ - { - "internalType": "address", - "name": "_darknode", - "type": "address" - }, - { - "internalType": "address", - "name": "_token", - "type": "address" - }, - { - "internalType": "uint256", - "name": "_amount", - "type": "uint256" - }, - { - "internalType": "address payable", - "name": "_recipient", - "type": "address" - } - ], - "name": "transfer", - "outputs": [], - "payable": false, - "stateMutability": "nonpayable", - "type": "function" - }, - { - "constant": false, - "inputs": [ - { - "internalType": "address", - "name": "newOwner", - "type": "address" - } - ], - "name": "transferOwnership", - "outputs": [], - "payable": false, - "stateMutability": "nonpayable", - "type": "function" - } - ], - "sourcePath": "~/github/renproject/ren-sol/contracts/DarknodePayment/DarknodePaymentStore.sol", - "compiler": { - "name": "solc", - "version": "0.5.16+commit.9c3226ce.Emscripten.clang" - }, - "networks": { - "1": { - "events": { - "0x8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0": { - "anonymous": false, - "inputs": [ - { - "indexed": true, - "internalType": "address", - "name": "previousOwner", - "type": "address" - }, - { - "indexed": true, - "internalType": "address", - "name": "newOwner", - "type": "address" - } - ], - "name": "OwnershipTransferred", - "type": "event" - } - }, - "links": {}, - "address": "0xE33417797d6b8Aec9171d0d6516E88002fbe23E7" - } - }, - "schemaVersion": "3.0.23" -} \ No newline at end of file diff --git a/build/mainnet/DarknodeRegistryLogicV1.json b/build/mainnet/DarknodeRegistryLogicV1.json deleted file mode 100644 index 9030095f..00000000 --- a/build/mainnet/DarknodeRegistryLogicV1.json +++ /dev/null @@ -1,1387 +0,0 @@ -{ - "contractName": "DarknodeRegistryLogicV1", - "abi": [ - { - "anonymous": false, - "inputs": [ - { - "indexed": true, - "internalType": "address", - "name": "_darknodeOperator", - "type": "address" - }, - { - "indexed": true, - "internalType": "address", - "name": "_darknodeID", - "type": "address" - } - ], - "name": "LogDarknodeDeregistered", - "type": "event" - }, - { - "anonymous": false, - "inputs": [ - { - "indexed": true, - "internalType": "contract IDarknodePayment", - "name": "_previousDarknodePayment", - "type": "address" - }, - { - "indexed": true, - "internalType": "contract IDarknodePayment", - "name": "_nextDarknodePayment", - "type": "address" - } - ], - "name": "LogDarknodePaymentUpdated", - "type": "event" - }, - { - "anonymous": false, - "inputs": [ - { - "indexed": true, - "internalType": "address", - "name": "_darknodeOperator", - "type": "address" - }, - { - "indexed": true, - "internalType": "address", - "name": "_darknodeID", - "type": "address" - }, - { - "indexed": false, - "internalType": "uint256", - "name": "_amount", - "type": "uint256" - } - ], - "name": "LogDarknodeRefunded", - "type": "event" - }, - { - "anonymous": false, - "inputs": [ - { - "indexed": true, - "internalType": "address", - "name": "_darknodeOperator", - "type": "address" - }, - { - "indexed": true, - "internalType": "address", - "name": "_darknodeID", - "type": "address" - }, - { - "indexed": false, - "internalType": "uint256", - "name": "_bond", - "type": "uint256" - } - ], - "name": "LogDarknodeRegistered", - "type": "event" - }, - { - "anonymous": false, - "inputs": [ - { - "indexed": true, - "internalType": "address", - "name": "_darknodeOperator", - "type": "address" - }, - { - "indexed": true, - "internalType": "address", - "name": "_darknodeID", - "type": "address" - }, - { - "indexed": true, - "internalType": "address", - "name": "_challenger", - "type": "address" - }, - { - "indexed": false, - "internalType": "uint256", - "name": "_percentage", - "type": "uint256" - } - ], - "name": "LogDarknodeSlashed", - "type": "event" - }, - { - "anonymous": false, - "inputs": [ - { - "indexed": false, - "internalType": "uint256", - "name": "_previousMinimumBond", - "type": "uint256" - }, - { - "indexed": false, - "internalType": "uint256", - "name": "_nextMinimumBond", - "type": "uint256" - } - ], - "name": "LogMinimumBondUpdated", - "type": "event" - }, - { - "anonymous": false, - "inputs": [ - { - "indexed": false, - "internalType": "uint256", - "name": "_previousMinimumEpochInterval", - "type": "uint256" - }, - { - "indexed": false, - "internalType": "uint256", - "name": "_nextMinimumEpochInterval", - "type": "uint256" - } - ], - "name": "LogMinimumEpochIntervalUpdated", - "type": "event" - }, - { - "anonymous": false, - "inputs": [ - { - "indexed": false, - "internalType": "uint256", - "name": "_previousMinimumPodSize", - "type": "uint256" - }, - { - "indexed": false, - "internalType": "uint256", - "name": "_nextMinimumPodSize", - "type": "uint256" - } - ], - "name": "LogMinimumPodSizeUpdated", - "type": "event" - }, - { - "anonymous": false, - "inputs": [ - { - "indexed": true, - "internalType": "uint256", - "name": "epochhash", - "type": "uint256" - } - ], - "name": "LogNewEpoch", - "type": "event" - }, - { - "anonymous": false, - "inputs": [ - { - "indexed": true, - "internalType": "address", - "name": "_previousSlasher", - "type": "address" - }, - { - "indexed": true, - "internalType": "address", - "name": "_nextSlasher", - "type": "address" - } - ], - "name": "LogSlasherUpdated", - "type": "event" - }, - { - "anonymous": false, - "inputs": [ - { - "indexed": true, - "internalType": "address", - "name": "previousOwner", - "type": "address" - }, - { - "indexed": true, - "internalType": "address", - "name": "newOwner", - "type": "address" - } - ], - "name": "OwnershipTransferred", - "type": "event" - }, - { - "constant": true, - "inputs": [], - "name": "VERSION", - "outputs": [ - { - "internalType": "string", - "name": "", - "type": "string" - } - ], - "payable": false, - "stateMutability": "view", - "type": "function" - }, - { - "constant": false, - "inputs": [ - { - "internalType": "address", - "name": "_token", - "type": "address" - } - ], - "name": "blacklistRecoverableToken", - "outputs": [], - "payable": false, - "stateMutability": "nonpayable", - "type": "function" - }, - { - "constant": false, - "inputs": [], - "name": "claimOwnership", - "outputs": [], - "payable": false, - "stateMutability": "nonpayable", - "type": "function" - }, - { - "constant": false, - "inputs": [], - "name": "claimStoreOwnership", - "outputs": [], - "payable": false, - "stateMutability": "nonpayable", - "type": "function" - }, - { - "constant": true, - "inputs": [], - "name": "currentEpoch", - "outputs": [ - { - "internalType": "uint256", - "name": "epochhash", - "type": "uint256" - }, - { - "internalType": "uint256", - "name": "blocktime", - "type": "uint256" - } - ], - "payable": false, - "stateMutability": "view", - "type": "function" - }, - { - "constant": true, - "inputs": [], - "name": "darknodePayment", - "outputs": [ - { - "internalType": "contract IDarknodePayment", - "name": "", - "type": "address" - } - ], - "payable": false, - "stateMutability": "view", - "type": "function" - }, - { - "constant": false, - "inputs": [ - { - "internalType": "address", - "name": "_darknodeID", - "type": "address" - } - ], - "name": "deregister", - "outputs": [], - "payable": false, - "stateMutability": "nonpayable", - "type": "function" - }, - { - "constant": true, - "inputs": [], - "name": "deregistrationInterval", - "outputs": [ - { - "internalType": "uint256", - "name": "", - "type": "uint256" - } - ], - "payable": false, - "stateMutability": "view", - "type": "function" - }, - { - "constant": false, - "inputs": [], - "name": "epoch", - "outputs": [], - "payable": false, - "stateMutability": "nonpayable", - "type": "function" - }, - { - "constant": true, - "inputs": [ - { - "internalType": "address", - "name": "_darknodeID", - "type": "address" - } - ], - "name": "getDarknodeBond", - "outputs": [ - { - "internalType": "uint256", - "name": "", - "type": "uint256" - } - ], - "payable": false, - "stateMutability": "view", - "type": "function" - }, - { - "constant": true, - "inputs": [ - { - "internalType": "address", - "name": "_darknodeID", - "type": "address" - } - ], - "name": "getDarknodeOperator", - "outputs": [ - { - "internalType": "address payable", - "name": "", - "type": "address" - } - ], - "payable": false, - "stateMutability": "view", - "type": "function" - }, - { - "constant": true, - "inputs": [ - { - "internalType": "address", - "name": "_darknodeID", - "type": "address" - } - ], - "name": "getDarknodePublicKey", - "outputs": [ - { - "internalType": "bytes", - "name": "", - "type": "bytes" - } - ], - "payable": false, - "stateMutability": "view", - "type": "function" - }, - { - "constant": true, - "inputs": [ - { - "internalType": "address", - "name": "_start", - "type": "address" - }, - { - "internalType": "uint256", - "name": "_count", - "type": "uint256" - } - ], - "name": "getDarknodes", - "outputs": [ - { - "internalType": "address[]", - "name": "", - "type": "address[]" - } - ], - "payable": false, - "stateMutability": "view", - "type": "function" - }, - { - "constant": true, - "inputs": [ - { - "internalType": "address", - "name": "_start", - "type": "address" - }, - { - "internalType": "uint256", - "name": "_count", - "type": "uint256" - } - ], - "name": "getPreviousDarknodes", - "outputs": [ - { - "internalType": "address[]", - "name": "", - "type": "address[]" - } - ], - "payable": false, - "stateMutability": "view", - "type": "function" - }, - { - "constant": false, - "inputs": [ - { - "internalType": "string", - "name": "_VERSION", - "type": "string" - }, - { - "internalType": "contract RenToken", - "name": "_renAddress", - "type": "address" - }, - { - "internalType": "contract DarknodeRegistryStore", - "name": "_storeAddress", - "type": "address" - }, - { - "internalType": "uint256", - "name": "_minimumBond", - "type": "uint256" - }, - { - "internalType": "uint256", - "name": "_minimumPodSize", - "type": "uint256" - }, - { - "internalType": "uint256", - "name": "_minimumEpochIntervalSeconds", - "type": "uint256" - }, - { - "internalType": "uint256", - "name": "_deregistrationIntervalSeconds", - "type": "uint256" - } - ], - "name": "initialize", - "outputs": [], - "payable": false, - "stateMutability": "nonpayable", - "type": "function" - }, - { - "constant": false, - "inputs": [ - { - "internalType": "address", - "name": "_nextOwner", - "type": "address" - } - ], - "name": "initialize", - "outputs": [], - "payable": false, - "stateMutability": "nonpayable", - "type": "function" - }, - { - "constant": true, - "inputs": [ - { - "internalType": "address", - "name": "_darknodeID", - "type": "address" - } - ], - "name": "isDeregisterable", - "outputs": [ - { - "internalType": "bool", - "name": "", - "type": "bool" - } - ], - "payable": false, - "stateMutability": "view", - "type": "function" - }, - { - "constant": true, - "inputs": [ - { - "internalType": "address", - "name": "_darknodeID", - "type": "address" - } - ], - "name": "isDeregistered", - "outputs": [ - { - "internalType": "bool", - "name": "", - "type": "bool" - } - ], - "payable": false, - "stateMutability": "view", - "type": "function" - }, - { - "constant": true, - "inputs": [], - "name": "isOwner", - "outputs": [ - { - "internalType": "bool", - "name": "", - "type": "bool" - } - ], - "payable": false, - "stateMutability": "view", - "type": "function" - }, - { - "constant": true, - "inputs": [ - { - "internalType": "address", - "name": "_darknodeID", - "type": "address" - } - ], - "name": "isPendingDeregistration", - "outputs": [ - { - "internalType": "bool", - "name": "", - "type": "bool" - } - ], - "payable": false, - "stateMutability": "view", - "type": "function" - }, - { - "constant": true, - "inputs": [ - { - "internalType": "address", - "name": "_darknodeID", - "type": "address" - } - ], - "name": "isPendingRegistration", - "outputs": [ - { - "internalType": "bool", - "name": "", - "type": "bool" - } - ], - "payable": false, - "stateMutability": "view", - "type": "function" - }, - { - "constant": true, - "inputs": [ - { - "internalType": "address", - "name": "_darknodeID", - "type": "address" - } - ], - "name": "isRefundable", - "outputs": [ - { - "internalType": "bool", - "name": "", - "type": "bool" - } - ], - "payable": false, - "stateMutability": "view", - "type": "function" - }, - { - "constant": true, - "inputs": [ - { - "internalType": "address", - "name": "_darknodeID", - "type": "address" - } - ], - "name": "isRefunded", - "outputs": [ - { - "internalType": "bool", - "name": "", - "type": "bool" - } - ], - "payable": false, - "stateMutability": "view", - "type": "function" - }, - { - "constant": true, - "inputs": [ - { - "internalType": "address", - "name": "_darknodeID", - "type": "address" - } - ], - "name": "isRegistered", - "outputs": [ - { - "internalType": "bool", - "name": "", - "type": "bool" - } - ], - "payable": false, - "stateMutability": "view", - "type": "function" - }, - { - "constant": true, - "inputs": [ - { - "internalType": "address", - "name": "_darknodeID", - "type": "address" - } - ], - "name": "isRegisteredInPreviousEpoch", - "outputs": [ - { - "internalType": "bool", - "name": "", - "type": "bool" - } - ], - "payable": false, - "stateMutability": "view", - "type": "function" - }, - { - "constant": true, - "inputs": [], - "name": "minimumBond", - "outputs": [ - { - "internalType": "uint256", - "name": "", - "type": "uint256" - } - ], - "payable": false, - "stateMutability": "view", - "type": "function" - }, - { - "constant": true, - "inputs": [], - "name": "minimumEpochInterval", - "outputs": [ - { - "internalType": "uint256", - "name": "", - "type": "uint256" - } - ], - "payable": false, - "stateMutability": "view", - "type": "function" - }, - { - "constant": true, - "inputs": [], - "name": "minimumPodSize", - "outputs": [ - { - "internalType": "uint256", - "name": "", - "type": "uint256" - } - ], - "payable": false, - "stateMutability": "view", - "type": "function" - }, - { - "constant": true, - "inputs": [], - "name": "nextMinimumBond", - "outputs": [ - { - "internalType": "uint256", - "name": "", - "type": "uint256" - } - ], - "payable": false, - "stateMutability": "view", - "type": "function" - }, - { - "constant": true, - "inputs": [], - "name": "nextMinimumEpochInterval", - "outputs": [ - { - "internalType": "uint256", - "name": "", - "type": "uint256" - } - ], - "payable": false, - "stateMutability": "view", - "type": "function" - }, - { - "constant": true, - "inputs": [], - "name": "nextMinimumPodSize", - "outputs": [ - { - "internalType": "uint256", - "name": "", - "type": "uint256" - } - ], - "payable": false, - "stateMutability": "view", - "type": "function" - }, - { - "constant": true, - "inputs": [], - "name": "nextSlasher", - "outputs": [ - { - "internalType": "contract IDarknodeSlasher", - "name": "", - "type": "address" - } - ], - "payable": false, - "stateMutability": "view", - "type": "function" - }, - { - "constant": true, - "inputs": [], - "name": "numDarknodes", - "outputs": [ - { - "internalType": "uint256", - "name": "", - "type": "uint256" - } - ], - "payable": false, - "stateMutability": "view", - "type": "function" - }, - { - "constant": true, - "inputs": [], - "name": "numDarknodesNextEpoch", - "outputs": [ - { - "internalType": "uint256", - "name": "", - "type": "uint256" - } - ], - "payable": false, - "stateMutability": "view", - "type": "function" - }, - { - "constant": true, - "inputs": [], - "name": "numDarknodesPreviousEpoch", - "outputs": [ - { - "internalType": "uint256", - "name": "", - "type": "uint256" - } - ], - "payable": false, - "stateMutability": "view", - "type": "function" - }, - { - "constant": true, - "inputs": [], - "name": "owner", - "outputs": [ - { - "internalType": "address", - "name": "", - "type": "address" - } - ], - "payable": false, - "stateMutability": "view", - "type": "function" - }, - { - "constant": true, - "inputs": [], - "name": "pendingOwner", - "outputs": [ - { - "internalType": "address", - "name": "", - "type": "address" - } - ], - "payable": false, - "stateMutability": "view", - "type": "function" - }, - { - "constant": true, - "inputs": [], - "name": "previousEpoch", - "outputs": [ - { - "internalType": "uint256", - "name": "epochhash", - "type": "uint256" - }, - { - "internalType": "uint256", - "name": "blocktime", - "type": "uint256" - } - ], - "payable": false, - "stateMutability": "view", - "type": "function" - }, - { - "constant": false, - "inputs": [ - { - "internalType": "address", - "name": "_token", - "type": "address" - } - ], - "name": "recoverTokens", - "outputs": [], - "payable": false, - "stateMutability": "nonpayable", - "type": "function" - }, - { - "constant": false, - "inputs": [ - { - "internalType": "address", - "name": "_darknodeID", - "type": "address" - } - ], - "name": "refund", - "outputs": [], - "payable": false, - "stateMutability": "nonpayable", - "type": "function" - }, - { - "constant": false, - "inputs": [ - { - "internalType": "address", - "name": "_darknodeID", - "type": "address" - }, - { - "internalType": "bytes", - "name": "_publicKey", - "type": "bytes" - } - ], - "name": "register", - "outputs": [], - "payable": false, - "stateMutability": "nonpayable", - "type": "function" - }, - { - "constant": true, - "inputs": [], - "name": "ren", - "outputs": [ - { - "internalType": "contract RenToken", - "name": "", - "type": "address" - } - ], - "payable": false, - "stateMutability": "view", - "type": "function" - }, - { - "constant": false, - "inputs": [], - "name": "renounceOwnership", - "outputs": [], - "payable": false, - "stateMutability": "nonpayable", - "type": "function" - }, - { - "constant": false, - "inputs": [ - { - "internalType": "address", - "name": "_guilty", - "type": "address" - }, - { - "internalType": "address", - "name": "_challenger", - "type": "address" - }, - { - "internalType": "uint256", - "name": "_percentage", - "type": "uint256" - } - ], - "name": "slash", - "outputs": [], - "payable": false, - "stateMutability": "nonpayable", - "type": "function" - }, - { - "constant": true, - "inputs": [], - "name": "slasher", - "outputs": [ - { - "internalType": "contract IDarknodeSlasher", - "name": "", - "type": "address" - } - ], - "payable": false, - "stateMutability": "view", - "type": "function" - }, - { - "constant": true, - "inputs": [], - "name": "store", - "outputs": [ - { - "internalType": "contract DarknodeRegistryStore", - "name": "", - "type": "address" - } - ], - "payable": false, - "stateMutability": "view", - "type": "function" - }, - { - "constant": false, - "inputs": [ - { - "internalType": "address", - "name": "newOwner", - "type": "address" - } - ], - "name": "transferOwnership", - "outputs": [], - "payable": false, - "stateMutability": "nonpayable", - "type": "function" - }, - { - "constant": false, - "inputs": [ - { - "internalType": "contract DarknodeRegistryLogicV1", - "name": "_newOwner", - "type": "address" - } - ], - "name": "transferStoreOwnership", - "outputs": [], - "payable": false, - "stateMutability": "nonpayable", - "type": "function" - }, - { - "constant": false, - "inputs": [ - { - "internalType": "contract IDarknodePayment", - "name": "_darknodePayment", - "type": "address" - } - ], - "name": "updateDarknodePayment", - "outputs": [], - "payable": false, - "stateMutability": "nonpayable", - "type": "function" - }, - { - "constant": false, - "inputs": [ - { - "internalType": "uint256", - "name": "_nextMinimumBond", - "type": "uint256" - } - ], - "name": "updateMinimumBond", - "outputs": [], - "payable": false, - "stateMutability": "nonpayable", - "type": "function" - }, - { - "constant": false, - "inputs": [ - { - "internalType": "uint256", - "name": "_nextMinimumEpochInterval", - "type": "uint256" - } - ], - "name": "updateMinimumEpochInterval", - "outputs": [], - "payable": false, - "stateMutability": "nonpayable", - "type": "function" - }, - { - "constant": false, - "inputs": [ - { - "internalType": "uint256", - "name": "_nextMinimumPodSize", - "type": "uint256" - } - ], - "name": "updateMinimumPodSize", - "outputs": [], - "payable": false, - "stateMutability": "nonpayable", - "type": "function" - }, - { - "constant": false, - "inputs": [ - { - "internalType": "contract IDarknodeSlasher", - "name": "_slasher", - "type": "address" - } - ], - "name": "updateSlasher", - "outputs": [], - "payable": false, - "stateMutability": "nonpayable", - "type": "function" - } - ], - "sourcePath": "~/github/renproject/ren-sol/contracts/DarknodeRegistry/DarknodeRegistry.sol", - "compiler": { - "name": "solc", - "version": "0.5.16+commit.9c3226ce.Emscripten.clang" - }, - "networks": { - "1": { - "events": { - "0xf73268ea792d9dbf3e21a95ec9711f0b535c5f6c99f6b4f54f6766838086b842": { - "anonymous": false, - "inputs": [ - { - "indexed": true, - "internalType": "address", - "name": "_darknodeOperator", - "type": "address" - }, - { - "indexed": true, - "internalType": "address", - "name": "_darknodeID", - "type": "address" - } - ], - "name": "LogDarknodeDeregistered", - "type": "event" - }, - "0xe3e25a79a5ba7c894fcc55794b2712e225537e89f777b9b9df307cc5504ba0e9": { - "anonymous": false, - "inputs": [ - { - "indexed": true, - "internalType": "contract IDarknodePayment", - "name": "_previousDarknodePayment", - "type": "address" - }, - { - "indexed": true, - "internalType": "contract IDarknodePayment", - "name": "_nextDarknodePayment", - "type": "address" - } - ], - "name": "LogDarknodePaymentUpdated", - "type": "event" - }, - "0x3eeec3803912dfbf607c8488e8aee15f415e51c9936250a5142642c9e470c128": { - "anonymous": false, - "inputs": [ - { - "indexed": true, - "internalType": "address", - "name": "_darknodeOperator", - "type": "address" - }, - { - "indexed": true, - "internalType": "address", - "name": "_darknodeID", - "type": "address" - }, - { - "indexed": false, - "internalType": "uint256", - "name": "_amount", - "type": "uint256" - } - ], - "name": "LogDarknodeRefunded", - "type": "event" - }, - "0x7c56cb7f63b6922d24414bf7c2b2c40c7ea1ea637c3f400efa766a85ecf2f093": { - "anonymous": false, - "inputs": [ - { - "indexed": true, - "internalType": "address", - "name": "_darknodeOperator", - "type": "address" - }, - { - "indexed": true, - "internalType": "address", - "name": "_darknodeID", - "type": "address" - }, - { - "indexed": false, - "internalType": "uint256", - "name": "_bond", - "type": "uint256" - } - ], - "name": "LogDarknodeRegistered", - "type": "event" - }, - "0xb43e0cc88b4d6ae901c6c99d1b58769cb8c9ded8e6f20a0d3712d09bf9e1ea77": { - "anonymous": false, - "inputs": [ - { - "indexed": true, - "internalType": "address", - "name": "_darknodeOperator", - "type": "address" - }, - { - "indexed": true, - "internalType": "address", - "name": "_darknodeID", - "type": "address" - }, - { - "indexed": true, - "internalType": "address", - "name": "_challenger", - "type": "address" - }, - { - "indexed": false, - "internalType": "uint256", - "name": "_percentage", - "type": "uint256" - } - ], - "name": "LogDarknodeSlashed", - "type": "event" - }, - "0x7c77c94944e9e4e5b0d46f1297127d060020792687cd743401d782346c68f655": { - "anonymous": false, - "inputs": [ - { - "indexed": false, - "internalType": "uint256", - "name": "_previousMinimumBond", - "type": "uint256" - }, - { - "indexed": false, - "internalType": "uint256", - "name": "_nextMinimumBond", - "type": "uint256" - } - ], - "name": "LogMinimumBondUpdated", - "type": "event" - }, - "0xb218cde2730b79a0667ddf869466ee66a12ef56fe65fa4986a590f8a7108c9de": { - "anonymous": false, - "inputs": [ - { - "indexed": false, - "internalType": "uint256", - "name": "_previousMinimumEpochInterval", - "type": "uint256" - }, - { - "indexed": false, - "internalType": "uint256", - "name": "_nextMinimumEpochInterval", - "type": "uint256" - } - ], - "name": "LogMinimumEpochIntervalUpdated", - "type": "event" - }, - "0x6d520e46e5714982ddf8cb6216bcb3e1c1d5b79d337afc305335f819394f5d6a": { - "anonymous": false, - "inputs": [ - { - "indexed": false, - "internalType": "uint256", - "name": "_previousMinimumPodSize", - "type": "uint256" - }, - { - "indexed": false, - "internalType": "uint256", - "name": "_nextMinimumPodSize", - "type": "uint256" - } - ], - "name": "LogMinimumPodSizeUpdated", - "type": "event" - }, - "0xaf2fc4796f2932ce294c3684deffe5098d3ef65dc2dd64efa80ef94eed88b01e": { - "anonymous": false, - "inputs": [ - { - "indexed": true, - "internalType": "uint256", - "name": "epochhash", - "type": "uint256" - } - ], - "name": "LogNewEpoch", - "type": "event" - }, - "0x933228a1c3ba8fadd3ce47a9db5b898be647f89af99ba7c1b9a655f59ea306c8": { - "anonymous": false, - "inputs": [ - { - "indexed": true, - "internalType": "address", - "name": "_previousSlasher", - "type": "address" - }, - { - "indexed": true, - "internalType": "address", - "name": "_nextSlasher", - "type": "address" - } - ], - "name": "LogSlasherUpdated", - "type": "event" - }, - "0x8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0": { - "anonymous": false, - "inputs": [ - { - "indexed": true, - "internalType": "address", - "name": "previousOwner", - "type": "address" - }, - { - "indexed": true, - "internalType": "address", - "name": "newOwner", - "type": "address" - } - ], - "name": "OwnershipTransferred", - "type": "event" - } - }, - "links": {}, - "address": "0x33b53A700de61b6be01d65A758b3635584bCF140" - } - }, - "schemaVersion": "3.0.23" -} \ No newline at end of file diff --git a/build/mainnet/DarknodeRegistryProxy.json b/build/mainnet/DarknodeRegistryProxy.json deleted file mode 100644 index 11c9bfa6..00000000 --- a/build/mainnet/DarknodeRegistryProxy.json +++ /dev/null @@ -1,213 +0,0 @@ -{ - "contractName": "DarknodeRegistryProxy", - "abi": [ - { - "anonymous": false, - "inputs": [ - { - "indexed": false, - "internalType": "address", - "name": "previousAdmin", - "type": "address" - }, - { - "indexed": false, - "internalType": "address", - "name": "newAdmin", - "type": "address" - } - ], - "name": "AdminChanged", - "type": "event" - }, - { - "anonymous": false, - "inputs": [ - { - "indexed": true, - "internalType": "address", - "name": "implementation", - "type": "address" - } - ], - "name": "Upgraded", - "type": "event" - }, - { - "payable": true, - "stateMutability": "payable", - "type": "fallback" - }, - { - "constant": false, - "inputs": [], - "name": "admin", - "outputs": [ - { - "internalType": "address", - "name": "", - "type": "address" - } - ], - "payable": false, - "stateMutability": "nonpayable", - "type": "function" - }, - { - "constant": false, - "inputs": [ - { - "internalType": "address", - "name": "newAdmin", - "type": "address" - } - ], - "name": "changeAdmin", - "outputs": [], - "payable": false, - "stateMutability": "nonpayable", - "type": "function" - }, - { - "constant": false, - "inputs": [], - "name": "implementation", - "outputs": [ - { - "internalType": "address", - "name": "", - "type": "address" - } - ], - "payable": false, - "stateMutability": "nonpayable", - "type": "function" - }, - { - "constant": false, - "inputs": [ - { - "internalType": "address", - "name": "_logic", - "type": "address" - }, - { - "internalType": "address", - "name": "_admin", - "type": "address" - }, - { - "internalType": "bytes", - "name": "_data", - "type": "bytes" - } - ], - "name": "initialize", - "outputs": [], - "payable": true, - "stateMutability": "payable", - "type": "function" - }, - { - "constant": false, - "inputs": [ - { - "internalType": "address", - "name": "_logic", - "type": "address" - }, - { - "internalType": "bytes", - "name": "_data", - "type": "bytes" - } - ], - "name": "initialize", - "outputs": [], - "payable": true, - "stateMutability": "payable", - "type": "function" - }, - { - "constant": false, - "inputs": [ - { - "internalType": "address", - "name": "newImplementation", - "type": "address" - } - ], - "name": "upgradeTo", - "outputs": [], - "payable": false, - "stateMutability": "nonpayable", - "type": "function" - }, - { - "constant": false, - "inputs": [ - { - "internalType": "address", - "name": "newImplementation", - "type": "address" - }, - { - "internalType": "bytes", - "name": "data", - "type": "bytes" - } - ], - "name": "upgradeToAndCall", - "outputs": [], - "payable": true, - "stateMutability": "payable", - "type": "function" - } - ], - "sourcePath": "~/github/renproject/ren-sol/contracts/DarknodeRegistry/DarknodeRegistry.sol", - "compiler": { - "name": "solc", - "version": "0.5.16+commit.9c3226ce.Emscripten.clang" - }, - "networks": { - "1": { - "events": { - "0x7e644d79422f17c01e4894b5f4f588d331ebfa28653d42ae832dc59e38c9798f": { - "anonymous": false, - "inputs": [ - { - "indexed": false, - "internalType": "address", - "name": "previousAdmin", - "type": "address" - }, - { - "indexed": false, - "internalType": "address", - "name": "newAdmin", - "type": "address" - } - ], - "name": "AdminChanged", - "type": "event" - }, - "0xbc7cd75a20ee27fd9adebab32041f755214dbc6bffa90cc0225b39da2e5c2d3b": { - "anonymous": false, - "inputs": [ - { - "indexed": true, - "internalType": "address", - "name": "implementation", - "type": "address" - } - ], - "name": "Upgraded", - "type": "event" - } - }, - "links": {}, - "address": "0x2D7b6C95aFeFFa50C068D50f89C5C0014e054f0A" - } - }, - "schemaVersion": "3.0.23" -} \ No newline at end of file diff --git a/build/mainnet/DarknodeRegistryStore.json b/build/mainnet/DarknodeRegistryStore.json deleted file mode 100644 index f57bb117..00000000 --- a/build/mainnet/DarknodeRegistryStore.json +++ /dev/null @@ -1,463 +0,0 @@ -{ - "contractName": "DarknodeRegistryStore", - "abi": [ - { - "inputs": [ - { - "internalType": "string", - "name": "_VERSION", - "type": "string" - }, - { - "internalType": "contract RenToken", - "name": "_ren", - "type": "address" - } - ], - "payable": false, - "stateMutability": "nonpayable", - "type": "constructor" - }, - { - "anonymous": false, - "inputs": [ - { - "indexed": true, - "internalType": "address", - "name": "previousOwner", - "type": "address" - }, - { - "indexed": true, - "internalType": "address", - "name": "newOwner", - "type": "address" - } - ], - "name": "OwnershipTransferred", - "type": "event" - }, - { - "constant": true, - "inputs": [], - "name": "VERSION", - "outputs": [ - { - "internalType": "string", - "name": "", - "type": "string" - } - ], - "payable": false, - "stateMutability": "view", - "type": "function" - }, - { - "constant": false, - "inputs": [ - { - "internalType": "address", - "name": "_darknodeID", - "type": "address" - }, - { - "internalType": "address payable", - "name": "_darknodeOperator", - "type": "address" - }, - { - "internalType": "uint256", - "name": "_bond", - "type": "uint256" - }, - { - "internalType": "bytes", - "name": "_publicKey", - "type": "bytes" - }, - { - "internalType": "uint256", - "name": "_registeredAt", - "type": "uint256" - }, - { - "internalType": "uint256", - "name": "_deregisteredAt", - "type": "uint256" - } - ], - "name": "appendDarknode", - "outputs": [], - "payable": false, - "stateMutability": "nonpayable", - "type": "function" - }, - { - "constant": true, - "inputs": [], - "name": "begin", - "outputs": [ - { - "internalType": "address", - "name": "", - "type": "address" - } - ], - "payable": false, - "stateMutability": "view", - "type": "function" - }, - { - "constant": false, - "inputs": [ - { - "internalType": "address", - "name": "_token", - "type": "address" - } - ], - "name": "blacklistRecoverableToken", - "outputs": [], - "payable": false, - "stateMutability": "nonpayable", - "type": "function" - }, - { - "constant": false, - "inputs": [], - "name": "claimOwnership", - "outputs": [], - "payable": false, - "stateMutability": "nonpayable", - "type": "function" - }, - { - "constant": true, - "inputs": [ - { - "internalType": "address", - "name": "darknodeID", - "type": "address" - } - ], - "name": "darknodeBond", - "outputs": [ - { - "internalType": "uint256", - "name": "", - "type": "uint256" - } - ], - "payable": false, - "stateMutability": "view", - "type": "function" - }, - { - "constant": true, - "inputs": [ - { - "internalType": "address", - "name": "darknodeID", - "type": "address" - } - ], - "name": "darknodeDeregisteredAt", - "outputs": [ - { - "internalType": "uint256", - "name": "", - "type": "uint256" - } - ], - "payable": false, - "stateMutability": "view", - "type": "function" - }, - { - "constant": true, - "inputs": [ - { - "internalType": "address", - "name": "darknodeID", - "type": "address" - } - ], - "name": "darknodeOperator", - "outputs": [ - { - "internalType": "address payable", - "name": "", - "type": "address" - } - ], - "payable": false, - "stateMutability": "view", - "type": "function" - }, - { - "constant": true, - "inputs": [ - { - "internalType": "address", - "name": "darknodeID", - "type": "address" - } - ], - "name": "darknodePublicKey", - "outputs": [ - { - "internalType": "bytes", - "name": "", - "type": "bytes" - } - ], - "payable": false, - "stateMutability": "view", - "type": "function" - }, - { - "constant": true, - "inputs": [ - { - "internalType": "address", - "name": "darknodeID", - "type": "address" - } - ], - "name": "darknodeRegisteredAt", - "outputs": [ - { - "internalType": "uint256", - "name": "", - "type": "uint256" - } - ], - "payable": false, - "stateMutability": "view", - "type": "function" - }, - { - "constant": false, - "inputs": [ - { - "internalType": "address", - "name": "_nextOwner", - "type": "address" - } - ], - "name": "initialize", - "outputs": [], - "payable": false, - "stateMutability": "nonpayable", - "type": "function" - }, - { - "constant": true, - "inputs": [], - "name": "isOwner", - "outputs": [ - { - "internalType": "bool", - "name": "", - "type": "bool" - } - ], - "payable": false, - "stateMutability": "view", - "type": "function" - }, - { - "constant": true, - "inputs": [ - { - "internalType": "address", - "name": "darknodeID", - "type": "address" - } - ], - "name": "next", - "outputs": [ - { - "internalType": "address", - "name": "", - "type": "address" - } - ], - "payable": false, - "stateMutability": "view", - "type": "function" - }, - { - "constant": true, - "inputs": [], - "name": "owner", - "outputs": [ - { - "internalType": "address", - "name": "", - "type": "address" - } - ], - "payable": false, - "stateMutability": "view", - "type": "function" - }, - { - "constant": true, - "inputs": [], - "name": "pendingOwner", - "outputs": [ - { - "internalType": "address", - "name": "", - "type": "address" - } - ], - "payable": false, - "stateMutability": "view", - "type": "function" - }, - { - "constant": false, - "inputs": [ - { - "internalType": "address", - "name": "_token", - "type": "address" - } - ], - "name": "recoverTokens", - "outputs": [], - "payable": false, - "stateMutability": "nonpayable", - "type": "function" - }, - { - "constant": false, - "inputs": [ - { - "internalType": "address", - "name": "darknodeID", - "type": "address" - } - ], - "name": "removeDarknode", - "outputs": [], - "payable": false, - "stateMutability": "nonpayable", - "type": "function" - }, - { - "constant": true, - "inputs": [], - "name": "ren", - "outputs": [ - { - "internalType": "contract RenToken", - "name": "", - "type": "address" - } - ], - "payable": false, - "stateMutability": "view", - "type": "function" - }, - { - "constant": false, - "inputs": [], - "name": "renounceOwnership", - "outputs": [], - "payable": false, - "stateMutability": "nonpayable", - "type": "function" - }, - { - "constant": false, - "inputs": [ - { - "internalType": "address", - "name": "newOwner", - "type": "address" - } - ], - "name": "transferOwnership", - "outputs": [], - "payable": false, - "stateMutability": "nonpayable", - "type": "function" - }, - { - "constant": false, - "inputs": [ - { - "internalType": "address", - "name": "darknodeID", - "type": "address" - }, - { - "internalType": "uint256", - "name": "decreasedBond", - "type": "uint256" - } - ], - "name": "updateDarknodeBond", - "outputs": [], - "payable": false, - "stateMutability": "nonpayable", - "type": "function" - }, - { - "constant": false, - "inputs": [ - { - "internalType": "address", - "name": "darknodeID", - "type": "address" - }, - { - "internalType": "uint256", - "name": "deregisteredAt", - "type": "uint256" - } - ], - "name": "updateDarknodeDeregisteredAt", - "outputs": [], - "payable": false, - "stateMutability": "nonpayable", - "type": "function" - } - ], - "sourcePath": "~/github/renproject/ren-sol/contracts/DarknodeRegistry/DarknodeRegistryStore.sol", - "compiler": { - "name": "solc", - "version": "0.5.16+commit.9c3226ce.Emscripten.clang" - }, - "networks": { - "1": { - "events": { - "0x8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0": { - "anonymous": false, - "inputs": [ - { - "indexed": true, - "internalType": "address", - "name": "previousOwner", - "type": "address" - }, - { - "indexed": true, - "internalType": "address", - "name": "newOwner", - "type": "address" - } - ], - "name": "OwnershipTransferred", - "type": "event" - } - }, - "links": {}, - "address": "0x60Ab11FE605D2A2C3cf351824816772a131f8782" - } - }, - "schemaVersion": "3.0.23" -} \ No newline at end of file diff --git a/build/mainnet/DarknodeSlasher.json b/build/mainnet/DarknodeSlasher.json deleted file mode 100644 index 99ade5f8..00000000 --- a/build/mainnet/DarknodeSlasher.json +++ /dev/null @@ -1,608 +0,0 @@ -{ - "contractName": "DarknodeSlasher", - "abi": [ - { - "inputs": [ - { - "internalType": "contract DarknodeRegistryLogicV1", - "name": "_darknodeRegistry", - "type": "address" - } - ], - "payable": false, - "stateMutability": "nonpayable", - "type": "constructor" - }, - { - "anonymous": false, - "inputs": [ - { - "indexed": true, - "internalType": "contract DarknodeRegistryLogicV1", - "name": "_previousDarknodeRegistry", - "type": "address" - }, - { - "indexed": true, - "internalType": "contract DarknodeRegistryLogicV1", - "name": "_nextDarknodeRegistry", - "type": "address" - } - ], - "name": "LogDarknodeRegistryUpdated", - "type": "event" - }, - { - "anonymous": false, - "inputs": [ - { - "indexed": true, - "internalType": "address", - "name": "previousOwner", - "type": "address" - }, - { - "indexed": true, - "internalType": "address", - "name": "newOwner", - "type": "address" - } - ], - "name": "OwnershipTransferred", - "type": "event" - }, - { - "constant": false, - "inputs": [ - { - "internalType": "address", - "name": "_guilty", - "type": "address" - } - ], - "name": "blacklist", - "outputs": [], - "payable": false, - "stateMutability": "nonpayable", - "type": "function" - }, - { - "constant": true, - "inputs": [], - "name": "blacklistSlashPercent", - "outputs": [ - { - "internalType": "uint256", - "name": "", - "type": "uint256" - } - ], - "payable": false, - "stateMutability": "view", - "type": "function" - }, - { - "constant": true, - "inputs": [ - { - "internalType": "address", - "name": "", - "type": "address" - } - ], - "name": "blacklisted", - "outputs": [ - { - "internalType": "bool", - "name": "", - "type": "bool" - } - ], - "payable": false, - "stateMutability": "view", - "type": "function" - }, - { - "constant": false, - "inputs": [], - "name": "claimOwnership", - "outputs": [], - "payable": false, - "stateMutability": "nonpayable", - "type": "function" - }, - { - "constant": true, - "inputs": [], - "name": "darknodeRegistry", - "outputs": [ - { - "internalType": "contract DarknodeRegistryLogicV1", - "name": "", - "type": "address" - } - ], - "payable": false, - "stateMutability": "view", - "type": "function" - }, - { - "constant": false, - "inputs": [ - { - "internalType": "address", - "name": "_nextOwner", - "type": "address" - } - ], - "name": "initialize", - "outputs": [], - "payable": false, - "stateMutability": "nonpayable", - "type": "function" - }, - { - "constant": true, - "inputs": [], - "name": "isOwner", - "outputs": [ - { - "internalType": "bool", - "name": "", - "type": "bool" - } - ], - "payable": false, - "stateMutability": "view", - "type": "function" - }, - { - "constant": true, - "inputs": [], - "name": "maliciousSlashPercent", - "outputs": [ - { - "internalType": "uint256", - "name": "", - "type": "uint256" - } - ], - "payable": false, - "stateMutability": "view", - "type": "function" - }, - { - "constant": true, - "inputs": [], - "name": "owner", - "outputs": [ - { - "internalType": "address", - "name": "", - "type": "address" - } - ], - "payable": false, - "stateMutability": "view", - "type": "function" - }, - { - "constant": true, - "inputs": [], - "name": "pendingOwner", - "outputs": [ - { - "internalType": "address", - "name": "", - "type": "address" - } - ], - "payable": false, - "stateMutability": "view", - "type": "function" - }, - { - "constant": false, - "inputs": [], - "name": "renounceOwnership", - "outputs": [], - "payable": false, - "stateMutability": "nonpayable", - "type": "function" - }, - { - "constant": true, - "inputs": [], - "name": "secretRevealSlashPercent", - "outputs": [ - { - "internalType": "uint256", - "name": "", - "type": "uint256" - } - ], - "payable": false, - "stateMutability": "view", - "type": "function" - }, - { - "constant": true, - "inputs": [ - { - "internalType": "address", - "name": "", - "type": "address" - } - ], - "name": "secretRevealed", - "outputs": [ - { - "internalType": "bool", - "name": "", - "type": "bool" - } - ], - "payable": false, - "stateMutability": "view", - "type": "function" - }, - { - "constant": false, - "inputs": [ - { - "internalType": "uint256", - "name": "_percentage", - "type": "uint256" - } - ], - "name": "setBlacklistSlashPercent", - "outputs": [], - "payable": false, - "stateMutability": "nonpayable", - "type": "function" - }, - { - "constant": false, - "inputs": [ - { - "internalType": "uint256", - "name": "_percentage", - "type": "uint256" - } - ], - "name": "setMaliciousSlashPercent", - "outputs": [], - "payable": false, - "stateMutability": "nonpayable", - "type": "function" - }, - { - "constant": false, - "inputs": [ - { - "internalType": "uint256", - "name": "_percentage", - "type": "uint256" - } - ], - "name": "setSecretRevealSlashPercent", - "outputs": [], - "payable": false, - "stateMutability": "nonpayable", - "type": "function" - }, - { - "constant": false, - "inputs": [ - { - "internalType": "address", - "name": "_guilty", - "type": "address" - }, - { - "internalType": "address", - "name": "_challenger", - "type": "address" - }, - { - "internalType": "uint256", - "name": "_percentage", - "type": "uint256" - } - ], - "name": "slash", - "outputs": [], - "payable": false, - "stateMutability": "nonpayable", - "type": "function" - }, - { - "constant": false, - "inputs": [ - { - "internalType": "uint256", - "name": "_height", - "type": "uint256" - }, - { - "internalType": "uint256", - "name": "_round", - "type": "uint256" - }, - { - "internalType": "bytes", - "name": "_blockhash1", - "type": "bytes" - }, - { - "internalType": "bytes", - "name": "_signature1", - "type": "bytes" - }, - { - "internalType": "bytes", - "name": "_blockhash2", - "type": "bytes" - }, - { - "internalType": "bytes", - "name": "_signature2", - "type": "bytes" - } - ], - "name": "slashDuplicatePrecommit", - "outputs": [], - "payable": false, - "stateMutability": "nonpayable", - "type": "function" - }, - { - "constant": false, - "inputs": [ - { - "internalType": "uint256", - "name": "_height", - "type": "uint256" - }, - { - "internalType": "uint256", - "name": "_round", - "type": "uint256" - }, - { - "internalType": "bytes", - "name": "_blockhash1", - "type": "bytes" - }, - { - "internalType": "bytes", - "name": "_signature1", - "type": "bytes" - }, - { - "internalType": "bytes", - "name": "_blockhash2", - "type": "bytes" - }, - { - "internalType": "bytes", - "name": "_signature2", - "type": "bytes" - } - ], - "name": "slashDuplicatePrevote", - "outputs": [], - "payable": false, - "stateMutability": "nonpayable", - "type": "function" - }, - { - "constant": false, - "inputs": [ - { - "internalType": "uint256", - "name": "_height", - "type": "uint256" - }, - { - "internalType": "uint256", - "name": "_round", - "type": "uint256" - }, - { - "internalType": "bytes", - "name": "_blockhash1", - "type": "bytes" - }, - { - "internalType": "uint256", - "name": "_validRound1", - "type": "uint256" - }, - { - "internalType": "bytes", - "name": "_signature1", - "type": "bytes" - }, - { - "internalType": "bytes", - "name": "_blockhash2", - "type": "bytes" - }, - { - "internalType": "uint256", - "name": "_validRound2", - "type": "uint256" - }, - { - "internalType": "bytes", - "name": "_signature2", - "type": "bytes" - } - ], - "name": "slashDuplicatePropose", - "outputs": [], - "payable": false, - "stateMutability": "nonpayable", - "type": "function" - }, - { - "constant": false, - "inputs": [ - { - "internalType": "uint256", - "name": "_a", - "type": "uint256" - }, - { - "internalType": "uint256", - "name": "_b", - "type": "uint256" - }, - { - "internalType": "uint256", - "name": "_c", - "type": "uint256" - }, - { - "internalType": "uint256", - "name": "_d", - "type": "uint256" - }, - { - "internalType": "uint256", - "name": "_e", - "type": "uint256" - }, - { - "internalType": "uint256", - "name": "_f", - "type": "uint256" - }, - { - "internalType": "bytes", - "name": "_signature", - "type": "bytes" - } - ], - "name": "slashSecretReveal", - "outputs": [], - "payable": false, - "stateMutability": "nonpayable", - "type": "function" - }, - { - "constant": true, - "inputs": [ - { - "internalType": "uint256", - "name": "", - "type": "uint256" - }, - { - "internalType": "uint256", - "name": "", - "type": "uint256" - }, - { - "internalType": "address", - "name": "", - "type": "address" - } - ], - "name": "slashed", - "outputs": [ - { - "internalType": "bool", - "name": "", - "type": "bool" - } - ], - "payable": false, - "stateMutability": "view", - "type": "function" - }, - { - "constant": false, - "inputs": [ - { - "internalType": "address", - "name": "newOwner", - "type": "address" - } - ], - "name": "transferOwnership", - "outputs": [], - "payable": false, - "stateMutability": "nonpayable", - "type": "function" - }, - { - "constant": false, - "inputs": [ - { - "internalType": "contract DarknodeRegistryLogicV1", - "name": "_darknodeRegistry", - "type": "address" - } - ], - "name": "updateDarknodeRegistry", - "outputs": [], - "payable": false, - "stateMutability": "nonpayable", - "type": "function" - } - ], - "sourcePath": "~/github/renproject/ren-sol/contracts/DarknodeSlasher/DarknodeSlasher.sol", - "compiler": { - "name": "solc", - "version": "0.5.16+commit.9c3226ce.Emscripten.clang" - }, - "networks": { - "1": { - "events": { - "0xf9f6dd5c784f63cc27c1079c73574a73485a6c2e7f7e2181c5eb2be8c693cfb7": { - "anonymous": false, - "inputs": [ - { - "indexed": true, - "internalType": "contract DarknodeRegistryLogicV1", - "name": "_previousDarknodeRegistry", - "type": "address" - }, - { - "indexed": true, - "internalType": "contract DarknodeRegistryLogicV1", - "name": "_nextDarknodeRegistry", - "type": "address" - } - ], - "name": "LogDarknodeRegistryUpdated", - "type": "event" - }, - "0x8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0": { - "anonymous": false, - "inputs": [ - { - "indexed": true, - "internalType": "address", - "name": "previousOwner", - "type": "address" - }, - { - "indexed": true, - "internalType": "address", - "name": "newOwner", - "type": "address" - } - ], - "name": "OwnershipTransferred", - "type": "event" - } - }, - "links": {}, - "address": "0x64512ff05a27756694E306e483cBB725F1754C0e" - } - }, - "schemaVersion": "3.0.23" -} \ No newline at end of file diff --git a/build/mainnet/GatewayLogicV1.json b/build/mainnet/GatewayLogicV1.json deleted file mode 100644 index 8a67abda..00000000 --- a/build/mainnet/GatewayLogicV1.json +++ /dev/null @@ -1,719 +0,0 @@ -{ - "contractName": "GatewayLogicV1", - "abi": [ - { - "anonymous": false, - "inputs": [ - { - "indexed": false, - "internalType": "bytes", - "name": "_to", - "type": "bytes" - }, - { - "indexed": false, - "internalType": "uint256", - "name": "_amount", - "type": "uint256" - }, - { - "indexed": true, - "internalType": "uint256", - "name": "_n", - "type": "uint256" - }, - { - "indexed": true, - "internalType": "bytes", - "name": "_indexedTo", - "type": "bytes" - } - ], - "name": "LogBurn", - "type": "event" - }, - { - "anonymous": false, - "inputs": [ - { - "indexed": true, - "internalType": "address", - "name": "_to", - "type": "address" - }, - { - "indexed": false, - "internalType": "uint256", - "name": "_amount", - "type": "uint256" - }, - { - "indexed": true, - "internalType": "uint256", - "name": "_n", - "type": "uint256" - }, - { - "indexed": true, - "internalType": "bytes32", - "name": "_signedMessageHash", - "type": "bytes32" - } - ], - "name": "LogMint", - "type": "event" - }, - { - "anonymous": false, - "inputs": [ - { - "indexed": true, - "internalType": "address", - "name": "_newMintAuthority", - "type": "address" - } - ], - "name": "LogMintAuthorityUpdated", - "type": "event" - }, - { - "anonymous": false, - "inputs": [ - { - "indexed": true, - "internalType": "address", - "name": "previousOwner", - "type": "address" - }, - { - "indexed": true, - "internalType": "address", - "name": "newOwner", - "type": "address" - } - ], - "name": "OwnershipTransferred", - "type": "event" - }, - { - "constant": false, - "inputs": [ - { - "internalType": "address", - "name": "_token", - "type": "address" - } - ], - "name": "blacklistRecoverableToken", - "outputs": [], - "payable": false, - "stateMutability": "nonpayable", - "type": "function" - }, - { - "constant": false, - "inputs": [ - { - "internalType": "bytes", - "name": "_to", - "type": "bytes" - }, - { - "internalType": "uint256", - "name": "_amount", - "type": "uint256" - } - ], - "name": "burn", - "outputs": [ - { - "internalType": "uint256", - "name": "", - "type": "uint256" - } - ], - "payable": false, - "stateMutability": "nonpayable", - "type": "function" - }, - { - "constant": true, - "inputs": [], - "name": "burnFee", - "outputs": [ - { - "internalType": "uint16", - "name": "", - "type": "uint16" - } - ], - "payable": false, - "stateMutability": "view", - "type": "function" - }, - { - "constant": false, - "inputs": [], - "name": "claimOwnership", - "outputs": [], - "payable": false, - "stateMutability": "nonpayable", - "type": "function" - }, - { - "constant": false, - "inputs": [], - "name": "claimTokenOwnership", - "outputs": [], - "payable": false, - "stateMutability": "nonpayable", - "type": "function" - }, - { - "constant": true, - "inputs": [], - "name": "feeRecipient", - "outputs": [ - { - "internalType": "address", - "name": "", - "type": "address" - } - ], - "payable": false, - "stateMutability": "view", - "type": "function" - }, - { - "constant": true, - "inputs": [ - { - "internalType": "bytes32", - "name": "_pHash", - "type": "bytes32" - }, - { - "internalType": "uint256", - "name": "_amount", - "type": "uint256" - }, - { - "internalType": "address", - "name": "_to", - "type": "address" - }, - { - "internalType": "bytes32", - "name": "_nHash", - "type": "bytes32" - } - ], - "name": "hashForSignature", - "outputs": [ - { - "internalType": "bytes32", - "name": "", - "type": "bytes32" - } - ], - "payable": false, - "stateMutability": "view", - "type": "function" - }, - { - "constant": false, - "inputs": [ - { - "internalType": "contract RenERC20LogicV1", - "name": "_token", - "type": "address" - }, - { - "internalType": "address", - "name": "_feeRecipient", - "type": "address" - }, - { - "internalType": "address", - "name": "_mintAuthority", - "type": "address" - }, - { - "internalType": "uint16", - "name": "_mintFee", - "type": "uint16" - }, - { - "internalType": "uint16", - "name": "_burnFee", - "type": "uint16" - }, - { - "internalType": "uint256", - "name": "_minimumBurnAmount", - "type": "uint256" - } - ], - "name": "initialize", - "outputs": [], - "payable": false, - "stateMutability": "nonpayable", - "type": "function" - }, - { - "constant": false, - "inputs": [ - { - "internalType": "address", - "name": "_nextOwner", - "type": "address" - } - ], - "name": "initialize", - "outputs": [], - "payable": false, - "stateMutability": "nonpayable", - "type": "function" - }, - { - "constant": true, - "inputs": [], - "name": "isOwner", - "outputs": [ - { - "internalType": "bool", - "name": "", - "type": "bool" - } - ], - "payable": false, - "stateMutability": "view", - "type": "function" - }, - { - "constant": true, - "inputs": [], - "name": "minimumBurnAmount", - "outputs": [ - { - "internalType": "uint256", - "name": "", - "type": "uint256" - } - ], - "payable": false, - "stateMutability": "view", - "type": "function" - }, - { - "constant": false, - "inputs": [ - { - "internalType": "bytes32", - "name": "_pHash", - "type": "bytes32" - }, - { - "internalType": "uint256", - "name": "_amountUnderlying", - "type": "uint256" - }, - { - "internalType": "bytes32", - "name": "_nHash", - "type": "bytes32" - }, - { - "internalType": "bytes", - "name": "_sig", - "type": "bytes" - } - ], - "name": "mint", - "outputs": [ - { - "internalType": "uint256", - "name": "", - "type": "uint256" - } - ], - "payable": false, - "stateMutability": "nonpayable", - "type": "function" - }, - { - "constant": true, - "inputs": [], - "name": "mintAuthority", - "outputs": [ - { - "internalType": "address", - "name": "", - "type": "address" - } - ], - "payable": false, - "stateMutability": "view", - "type": "function" - }, - { - "constant": true, - "inputs": [], - "name": "mintFee", - "outputs": [ - { - "internalType": "uint16", - "name": "", - "type": "uint16" - } - ], - "payable": false, - "stateMutability": "view", - "type": "function" - }, - { - "constant": true, - "inputs": [], - "name": "nextN", - "outputs": [ - { - "internalType": "uint256", - "name": "", - "type": "uint256" - } - ], - "payable": false, - "stateMutability": "view", - "type": "function" - }, - { - "constant": true, - "inputs": [], - "name": "owner", - "outputs": [ - { - "internalType": "address", - "name": "", - "type": "address" - } - ], - "payable": false, - "stateMutability": "view", - "type": "function" - }, - { - "constant": true, - "inputs": [], - "name": "pendingOwner", - "outputs": [ - { - "internalType": "address", - "name": "", - "type": "address" - } - ], - "payable": false, - "stateMutability": "view", - "type": "function" - }, - { - "constant": false, - "inputs": [ - { - "internalType": "address", - "name": "_token", - "type": "address" - } - ], - "name": "recoverTokens", - "outputs": [], - "payable": false, - "stateMutability": "nonpayable", - "type": "function" - }, - { - "constant": false, - "inputs": [], - "name": "renounceOwnership", - "outputs": [], - "payable": false, - "stateMutability": "nonpayable", - "type": "function" - }, - { - "constant": true, - "inputs": [ - { - "internalType": "bytes32", - "name": "", - "type": "bytes32" - } - ], - "name": "status", - "outputs": [ - { - "internalType": "bool", - "name": "", - "type": "bool" - } - ], - "payable": false, - "stateMutability": "view", - "type": "function" - }, - { - "constant": true, - "inputs": [], - "name": "token", - "outputs": [ - { - "internalType": "contract RenERC20LogicV1", - "name": "", - "type": "address" - } - ], - "payable": false, - "stateMutability": "view", - "type": "function" - }, - { - "constant": false, - "inputs": [ - { - "internalType": "address", - "name": "newOwner", - "type": "address" - } - ], - "name": "transferOwnership", - "outputs": [], - "payable": false, - "stateMutability": "nonpayable", - "type": "function" - }, - { - "constant": false, - "inputs": [ - { - "internalType": "contract GatewayLogicV1", - "name": "_nextTokenOwner", - "type": "address" - } - ], - "name": "transferTokenOwnership", - "outputs": [], - "payable": false, - "stateMutability": "nonpayable", - "type": "function" - }, - { - "constant": false, - "inputs": [ - { - "internalType": "uint16", - "name": "_nextBurnFee", - "type": "uint16" - } - ], - "name": "updateBurnFee", - "outputs": [], - "payable": false, - "stateMutability": "nonpayable", - "type": "function" - }, - { - "constant": false, - "inputs": [ - { - "internalType": "address", - "name": "_nextFeeRecipient", - "type": "address" - } - ], - "name": "updateFeeRecipient", - "outputs": [], - "payable": false, - "stateMutability": "nonpayable", - "type": "function" - }, - { - "constant": false, - "inputs": [ - { - "internalType": "uint256", - "name": "_minimumBurnAmount", - "type": "uint256" - } - ], - "name": "updateMinimumBurnAmount", - "outputs": [], - "payable": false, - "stateMutability": "nonpayable", - "type": "function" - }, - { - "constant": false, - "inputs": [ - { - "internalType": "address", - "name": "_nextMintAuthority", - "type": "address" - } - ], - "name": "updateMintAuthority", - "outputs": [], - "payable": false, - "stateMutability": "nonpayable", - "type": "function" - }, - { - "constant": false, - "inputs": [ - { - "internalType": "uint16", - "name": "_nextMintFee", - "type": "uint16" - } - ], - "name": "updateMintFee", - "outputs": [], - "payable": false, - "stateMutability": "nonpayable", - "type": "function" - }, - { - "constant": true, - "inputs": [ - { - "internalType": "bytes32", - "name": "_signedMessageHash", - "type": "bytes32" - }, - { - "internalType": "bytes", - "name": "_sig", - "type": "bytes" - } - ], - "name": "verifySignature", - "outputs": [ - { - "internalType": "bool", - "name": "", - "type": "bool" - } - ], - "payable": false, - "stateMutability": "view", - "type": "function" - } - ], - "sourcePath": "~/github/renproject/ren-sol/contracts/Gateway/Gateway.sol", - "compiler": { - "name": "solc", - "version": "0.5.16+commit.9c3226ce.Emscripten.clang" - }, - "networks": { - "1": { - "events": { - "0x1619fc95050ffb8c94c9077c82b3e1ebbf8d571b6234241c55ba0aaf40da019e": { - "anonymous": false, - "inputs": [ - { - "indexed": false, - "internalType": "bytes", - "name": "_to", - "type": "bytes" - }, - { - "indexed": false, - "internalType": "uint256", - "name": "_amount", - "type": "uint256" - }, - { - "indexed": true, - "internalType": "uint256", - "name": "_n", - "type": "uint256" - }, - { - "indexed": true, - "internalType": "bytes", - "name": "_indexedTo", - "type": "bytes" - } - ], - "name": "LogBurn", - "type": "event" - }, - "0xa58ba939eb08dab7eaf8ad09c16e7405ee88e5153e15da62d5481296a9f727fa": { - "anonymous": false, - "inputs": [ - { - "indexed": true, - "internalType": "address", - "name": "_to", - "type": "address" - }, - { - "indexed": false, - "internalType": "uint256", - "name": "_amount", - "type": "uint256" - }, - { - "indexed": true, - "internalType": "uint256", - "name": "_n", - "type": "uint256" - }, - { - "indexed": true, - "internalType": "bytes32", - "name": "_signedMessageHash", - "type": "bytes32" - } - ], - "name": "LogMint", - "type": "event" - }, - "0xf0f08e606c1dd3a2c220ada53422fd9fe0aa75614b27db0549f649de3ad2072a": { - "anonymous": false, - "inputs": [ - { - "indexed": true, - "internalType": "address", - "name": "_newMintAuthority", - "type": "address" - } - ], - "name": "LogMintAuthorityUpdated", - "type": "event" - }, - "0x8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0": { - "anonymous": false, - "inputs": [ - { - "indexed": true, - "internalType": "address", - "name": "previousOwner", - "type": "address" - }, - { - "indexed": true, - "internalType": "address", - "name": "newOwner", - "type": "address" - } - ], - "name": "OwnershipTransferred", - "type": "event" - } - }, - "links": {}, - "address": "0x402ec534BaF9e8Dd2968c57fDea368f3856460d6" - } - }, - "schemaVersion": "3.0.23" -} \ No newline at end of file diff --git a/build/mainnet/GatewayRegistry.json b/build/mainnet/GatewayRegistry.json deleted file mode 100644 index 6a842573..00000000 --- a/build/mainnet/GatewayRegistry.json +++ /dev/null @@ -1,556 +0,0 @@ -{ - "contractName": "GatewayRegistry", - "abi": [ - { - "inputs": [], - "payable": false, - "stateMutability": "nonpayable", - "type": "constructor" - }, - { - "anonymous": false, - "inputs": [ - { - "indexed": false, - "internalType": "string", - "name": "_symbol", - "type": "string" - }, - { - "indexed": true, - "internalType": "string", - "name": "_indexedSymbol", - "type": "string" - }, - { - "indexed": true, - "internalType": "address", - "name": "_token", - "type": "address" - }, - { - "indexed": true, - "internalType": "address", - "name": "_gatewayContract", - "type": "address" - } - ], - "name": "LogGatewayDeregistered", - "type": "event" - }, - { - "anonymous": false, - "inputs": [ - { - "indexed": false, - "internalType": "string", - "name": "_symbol", - "type": "string" - }, - { - "indexed": true, - "internalType": "string", - "name": "_indexedSymbol", - "type": "string" - }, - { - "indexed": true, - "internalType": "address", - "name": "_token", - "type": "address" - }, - { - "indexed": true, - "internalType": "address", - "name": "_gatewayContract", - "type": "address" - } - ], - "name": "LogGatewayRegistered", - "type": "event" - }, - { - "anonymous": false, - "inputs": [ - { - "indexed": true, - "internalType": "address", - "name": "_token", - "type": "address" - }, - { - "indexed": true, - "internalType": "address", - "name": "_currentGatewayContract", - "type": "address" - }, - { - "indexed": true, - "internalType": "address", - "name": "_newGatewayContract", - "type": "address" - } - ], - "name": "LogGatewayUpdated", - "type": "event" - }, - { - "anonymous": false, - "inputs": [ - { - "indexed": true, - "internalType": "address", - "name": "previousOwner", - "type": "address" - }, - { - "indexed": true, - "internalType": "address", - "name": "newOwner", - "type": "address" - } - ], - "name": "OwnershipTransferred", - "type": "event" - }, - { - "constant": false, - "inputs": [ - { - "internalType": "address", - "name": "_token", - "type": "address" - } - ], - "name": "blacklistRecoverableToken", - "outputs": [], - "payable": false, - "stateMutability": "nonpayable", - "type": "function" - }, - { - "constant": false, - "inputs": [], - "name": "claimOwnership", - "outputs": [], - "payable": false, - "stateMutability": "nonpayable", - "type": "function" - }, - { - "constant": true, - "inputs": [ - { - "internalType": "string", - "name": "_tokenSymbol", - "type": "string" - } - ], - "name": "getGatewayBySymbol", - "outputs": [ - { - "internalType": "contract IGateway", - "name": "", - "type": "address" - } - ], - "payable": false, - "stateMutability": "view", - "type": "function" - }, - { - "constant": true, - "inputs": [ - { - "internalType": "address", - "name": "_token", - "type": "address" - } - ], - "name": "getGatewayByToken", - "outputs": [ - { - "internalType": "contract IGateway", - "name": "", - "type": "address" - } - ], - "payable": false, - "stateMutability": "view", - "type": "function" - }, - { - "constant": true, - "inputs": [ - { - "internalType": "address", - "name": "_start", - "type": "address" - }, - { - "internalType": "uint256", - "name": "_count", - "type": "uint256" - } - ], - "name": "getGateways", - "outputs": [ - { - "internalType": "address[]", - "name": "", - "type": "address[]" - } - ], - "payable": false, - "stateMutability": "view", - "type": "function" - }, - { - "constant": true, - "inputs": [ - { - "internalType": "address", - "name": "_start", - "type": "address" - }, - { - "internalType": "uint256", - "name": "_count", - "type": "uint256" - } - ], - "name": "getRenTokens", - "outputs": [ - { - "internalType": "address[]", - "name": "", - "type": "address[]" - } - ], - "payable": false, - "stateMutability": "view", - "type": "function" - }, - { - "constant": true, - "inputs": [ - { - "internalType": "string", - "name": "_tokenSymbol", - "type": "string" - } - ], - "name": "getTokenBySymbol", - "outputs": [ - { - "internalType": "contract IERC20", - "name": "", - "type": "address" - } - ], - "payable": false, - "stateMutability": "view", - "type": "function" - }, - { - "constant": false, - "inputs": [ - { - "internalType": "address", - "name": "_nextOwner", - "type": "address" - } - ], - "name": "initialize", - "outputs": [], - "payable": false, - "stateMutability": "nonpayable", - "type": "function" - }, - { - "constant": true, - "inputs": [], - "name": "isOwner", - "outputs": [ - { - "internalType": "bool", - "name": "", - "type": "bool" - } - ], - "payable": false, - "stateMutability": "view", - "type": "function" - }, - { - "constant": true, - "inputs": [], - "name": "owner", - "outputs": [ - { - "internalType": "address", - "name": "", - "type": "address" - } - ], - "payable": false, - "stateMutability": "view", - "type": "function" - }, - { - "constant": true, - "inputs": [], - "name": "pendingOwner", - "outputs": [ - { - "internalType": "address", - "name": "", - "type": "address" - } - ], - "payable": false, - "stateMutability": "view", - "type": "function" - }, - { - "constant": false, - "inputs": [ - { - "internalType": "address", - "name": "_token", - "type": "address" - } - ], - "name": "recoverTokens", - "outputs": [], - "payable": false, - "stateMutability": "nonpayable", - "type": "function" - }, - { - "constant": false, - "inputs": [ - { - "internalType": "string", - "name": "_symbol", - "type": "string" - } - ], - "name": "removeGateway", - "outputs": [], - "payable": false, - "stateMutability": "nonpayable", - "type": "function" - }, - { - "constant": false, - "inputs": [], - "name": "renounceOwnership", - "outputs": [], - "payable": false, - "stateMutability": "nonpayable", - "type": "function" - }, - { - "constant": false, - "inputs": [ - { - "internalType": "string", - "name": "_symbol", - "type": "string" - }, - { - "internalType": "address", - "name": "_token", - "type": "address" - }, - { - "internalType": "address", - "name": "_gatewayContract", - "type": "address" - } - ], - "name": "setGateway", - "outputs": [], - "payable": false, - "stateMutability": "nonpayable", - "type": "function" - }, - { - "constant": true, - "inputs": [ - { - "internalType": "string", - "name": "_tokenSymbol", - "type": "string" - } - ], - "name": "symbolIsValid", - "outputs": [ - { - "internalType": "bool", - "name": "", - "type": "bool" - } - ], - "payable": false, - "stateMutability": "pure", - "type": "function" - }, - { - "constant": false, - "inputs": [ - { - "internalType": "address", - "name": "newOwner", - "type": "address" - } - ], - "name": "transferOwnership", - "outputs": [], - "payable": false, - "stateMutability": "nonpayable", - "type": "function" - }, - { - "constant": false, - "inputs": [ - { - "internalType": "address", - "name": "_token", - "type": "address" - }, - { - "internalType": "address", - "name": "_newGatewayContract", - "type": "address" - } - ], - "name": "updateGateway", - "outputs": [], - "payable": false, - "stateMutability": "nonpayable", - "type": "function" - } - ], - "sourcePath": "~/github/renproject/ren-sol/contracts/Gateway/GatewayRegistry.sol", - "compiler": { - "name": "solc", - "version": "0.5.16+commit.9c3226ce.Emscripten.clang" - }, - "networks": { - "1": { - "events": { - "0xea98e49727cf7c3a8c3926a036a6d41047c9b766d9109f22962950f37a2094aa": { - "anonymous": false, - "inputs": [ - { - "indexed": false, - "internalType": "string", - "name": "_symbol", - "type": "string" - }, - { - "indexed": true, - "internalType": "string", - "name": "_indexedSymbol", - "type": "string" - }, - { - "indexed": true, - "internalType": "address", - "name": "_token", - "type": "address" - }, - { - "indexed": true, - "internalType": "address", - "name": "_gatewayContract", - "type": "address" - } - ], - "name": "LogGatewayDeregistered", - "type": "event" - }, - "0xd433aae9ea620c1976ff88f75c629f477dbffe6bf277edad8a31c983117ab32a": { - "anonymous": false, - "inputs": [ - { - "indexed": false, - "internalType": "string", - "name": "_symbol", - "type": "string" - }, - { - "indexed": true, - "internalType": "string", - "name": "_indexedSymbol", - "type": "string" - }, - { - "indexed": true, - "internalType": "address", - "name": "_token", - "type": "address" - }, - { - "indexed": true, - "internalType": "address", - "name": "_gatewayContract", - "type": "address" - } - ], - "name": "LogGatewayRegistered", - "type": "event" - }, - "0x2dc9e208c924a5b14066ecb7121b371da427e696ad69456ed07a52cd2a710d99": { - "anonymous": false, - "inputs": [ - { - "indexed": true, - "internalType": "address", - "name": "_token", - "type": "address" - }, - { - "indexed": true, - "internalType": "address", - "name": "_currentGatewayContract", - "type": "address" - }, - { - "indexed": true, - "internalType": "address", - "name": "_newGatewayContract", - "type": "address" - } - ], - "name": "LogGatewayUpdated", - "type": "event" - }, - "0x8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0": { - "anonymous": false, - "inputs": [ - { - "indexed": true, - "internalType": "address", - "name": "previousOwner", - "type": "address" - }, - { - "indexed": true, - "internalType": "address", - "name": "newOwner", - "type": "address" - } - ], - "name": "OwnershipTransferred", - "type": "event" - } - }, - "links": {}, - "address": "0xe80d347DF1209a76DD9d2319d62912ba98C54DDD" - } - }, - "schemaVersion": "3.0.23" -} \ No newline at end of file diff --git a/build/mainnet/ProtocolLogicV1.json b/build/mainnet/ProtocolLogicV1.json deleted file mode 100644 index 679e50b8..00000000 --- a/build/mainnet/ProtocolLogicV1.json +++ /dev/null @@ -1,574 +0,0 @@ -{ - "contractName": "ProtocolLogicV1", - "abi": [ - { - "anonymous": false, - "inputs": [ - { - "indexed": false, - "internalType": "string", - "name": "_symbol", - "type": "string" - }, - { - "indexed": true, - "internalType": "string", - "name": "_indexedSymbol", - "type": "string" - }, - { - "indexed": true, - "internalType": "address", - "name": "_tokenAddress", - "type": "address" - }, - { - "indexed": true, - "internalType": "address", - "name": "_gatewayAddress", - "type": "address" - } - ], - "name": "LogGatewayDeregistered", - "type": "event" - }, - { - "anonymous": false, - "inputs": [ - { - "indexed": false, - "internalType": "string", - "name": "_symbol", - "type": "string" - }, - { - "indexed": true, - "internalType": "string", - "name": "_indexedSymbol", - "type": "string" - }, - { - "indexed": true, - "internalType": "address", - "name": "_tokenAddress", - "type": "address" - }, - { - "indexed": true, - "internalType": "address", - "name": "_gatewayAddress", - "type": "address" - } - ], - "name": "LogGatewayRegistered", - "type": "event" - }, - { - "anonymous": false, - "inputs": [ - { - "indexed": true, - "internalType": "address", - "name": "_tokenAddress", - "type": "address" - }, - { - "indexed": true, - "internalType": "address", - "name": "_currentGatewayAddress", - "type": "address" - }, - { - "indexed": true, - "internalType": "address", - "name": "_newGatewayAddress", - "type": "address" - } - ], - "name": "LogGatewayUpdated", - "type": "event" - }, - { - "anonymous": false, - "inputs": [ - { - "indexed": true, - "internalType": "address", - "name": "previousOwner", - "type": "address" - }, - { - "indexed": true, - "internalType": "address", - "name": "newOwner", - "type": "address" - } - ], - "name": "OwnershipTransferred", - "type": "event" - }, - { - "constant": false, - "inputs": [ - { - "internalType": "contract DarknodeRegistryLogicV1", - "name": "_newDarknodeRegistry", - "type": "address" - } - ], - "name": "_updateDarknodeRegistry", - "outputs": [], - "payable": false, - "stateMutability": "nonpayable", - "type": "function" - }, - { - "constant": false, - "inputs": [ - { - "internalType": "contract GatewayRegistry", - "name": "_newGatewayRegistry", - "type": "address" - } - ], - "name": "_updateGatewayRegistry", - "outputs": [], - "payable": false, - "stateMutability": "nonpayable", - "type": "function" - }, - { - "constant": false, - "inputs": [], - "name": "claimOwnership", - "outputs": [], - "payable": false, - "stateMutability": "nonpayable", - "type": "function" - }, - { - "constant": true, - "inputs": [], - "name": "darknodePayment", - "outputs": [ - { - "internalType": "contract DarknodePayment", - "name": "", - "type": "address" - } - ], - "payable": false, - "stateMutability": "view", - "type": "function" - }, - { - "constant": true, - "inputs": [], - "name": "darknodePaymentStore", - "outputs": [ - { - "internalType": "contract DarknodePaymentStore", - "name": "", - "type": "address" - } - ], - "payable": false, - "stateMutability": "view", - "type": "function" - }, - { - "constant": true, - "inputs": [], - "name": "darknodeRegistry", - "outputs": [ - { - "internalType": "contract DarknodeRegistryLogicV1", - "name": "", - "type": "address" - } - ], - "payable": false, - "stateMutability": "view", - "type": "function" - }, - { - "constant": true, - "inputs": [], - "name": "darknodeRegistryStore", - "outputs": [ - { - "internalType": "contract DarknodeRegistryStore", - "name": "", - "type": "address" - } - ], - "payable": false, - "stateMutability": "view", - "type": "function" - }, - { - "constant": true, - "inputs": [], - "name": "darknodeSlasher", - "outputs": [ - { - "internalType": "contract DarknodeSlasher", - "name": "", - "type": "address" - } - ], - "payable": false, - "stateMutability": "view", - "type": "function" - }, - { - "constant": true, - "inputs": [], - "name": "gatewayRegistry", - "outputs": [ - { - "internalType": "contract GatewayRegistry", - "name": "", - "type": "address" - } - ], - "payable": false, - "stateMutability": "view", - "type": "function" - }, - { - "constant": true, - "inputs": [ - { - "internalType": "string", - "name": "_tokenSymbol", - "type": "string" - } - ], - "name": "getGatewayBySymbol", - "outputs": [ - { - "internalType": "contract IGateway", - "name": "", - "type": "address" - } - ], - "payable": false, - "stateMutability": "view", - "type": "function" - }, - { - "constant": true, - "inputs": [ - { - "internalType": "address", - "name": "_tokenAddress", - "type": "address" - } - ], - "name": "getGatewayByToken", - "outputs": [ - { - "internalType": "contract IGateway", - "name": "", - "type": "address" - } - ], - "payable": false, - "stateMutability": "view", - "type": "function" - }, - { - "constant": true, - "inputs": [ - { - "internalType": "address", - "name": "_start", - "type": "address" - }, - { - "internalType": "uint256", - "name": "_count", - "type": "uint256" - } - ], - "name": "getGateways", - "outputs": [ - { - "internalType": "address[]", - "name": "", - "type": "address[]" - } - ], - "payable": false, - "stateMutability": "view", - "type": "function" - }, - { - "constant": true, - "inputs": [ - { - "internalType": "address", - "name": "_start", - "type": "address" - }, - { - "internalType": "uint256", - "name": "_count", - "type": "uint256" - } - ], - "name": "getRenTokens", - "outputs": [ - { - "internalType": "address[]", - "name": "", - "type": "address[]" - } - ], - "payable": false, - "stateMutability": "view", - "type": "function" - }, - { - "constant": true, - "inputs": [ - { - "internalType": "string", - "name": "_tokenSymbol", - "type": "string" - } - ], - "name": "getTokenBySymbol", - "outputs": [ - { - "internalType": "contract IERC20", - "name": "", - "type": "address" - } - ], - "payable": false, - "stateMutability": "view", - "type": "function" - }, - { - "constant": false, - "inputs": [ - { - "internalType": "address", - "name": "_nextOwner", - "type": "address" - } - ], - "name": "initialize", - "outputs": [], - "payable": false, - "stateMutability": "nonpayable", - "type": "function" - }, - { - "constant": true, - "inputs": [], - "name": "isOwner", - "outputs": [ - { - "internalType": "bool", - "name": "", - "type": "bool" - } - ], - "payable": false, - "stateMutability": "view", - "type": "function" - }, - { - "constant": true, - "inputs": [], - "name": "owner", - "outputs": [ - { - "internalType": "address", - "name": "", - "type": "address" - } - ], - "payable": false, - "stateMutability": "view", - "type": "function" - }, - { - "constant": true, - "inputs": [], - "name": "pendingOwner", - "outputs": [ - { - "internalType": "address", - "name": "", - "type": "address" - } - ], - "payable": false, - "stateMutability": "view", - "type": "function" - }, - { - "constant": true, - "inputs": [], - "name": "renToken", - "outputs": [ - { - "internalType": "contract RenToken", - "name": "", - "type": "address" - } - ], - "payable": false, - "stateMutability": "view", - "type": "function" - }, - { - "constant": false, - "inputs": [], - "name": "renounceOwnership", - "outputs": [], - "payable": false, - "stateMutability": "nonpayable", - "type": "function" - }, - { - "constant": false, - "inputs": [ - { - "internalType": "address", - "name": "newOwner", - "type": "address" - } - ], - "name": "transferOwnership", - "outputs": [], - "payable": false, - "stateMutability": "nonpayable", - "type": "function" - } - ], - "sourcePath": "~/github/renproject/ren-sol/contracts/Protocol/Protocol.sol", - "compiler": { - "name": "solc", - "version": "0.5.16+commit.9c3226ce.Emscripten.clang" - }, - "networks": { - "1": { - "events": { - "0xea98e49727cf7c3a8c3926a036a6d41047c9b766d9109f22962950f37a2094aa": { - "anonymous": false, - "inputs": [ - { - "indexed": false, - "internalType": "string", - "name": "_symbol", - "type": "string" - }, - { - "indexed": true, - "internalType": "string", - "name": "_indexedSymbol", - "type": "string" - }, - { - "indexed": true, - "internalType": "address", - "name": "_tokenAddress", - "type": "address" - }, - { - "indexed": true, - "internalType": "address", - "name": "_gatewayAddress", - "type": "address" - } - ], - "name": "LogGatewayDeregistered", - "type": "event" - }, - "0xd433aae9ea620c1976ff88f75c629f477dbffe6bf277edad8a31c983117ab32a": { - "anonymous": false, - "inputs": [ - { - "indexed": false, - "internalType": "string", - "name": "_symbol", - "type": "string" - }, - { - "indexed": true, - "internalType": "string", - "name": "_indexedSymbol", - "type": "string" - }, - { - "indexed": true, - "internalType": "address", - "name": "_tokenAddress", - "type": "address" - }, - { - "indexed": true, - "internalType": "address", - "name": "_gatewayAddress", - "type": "address" - } - ], - "name": "LogGatewayRegistered", - "type": "event" - }, - "0x2dc9e208c924a5b14066ecb7121b371da427e696ad69456ed07a52cd2a710d99": { - "anonymous": false, - "inputs": [ - { - "indexed": true, - "internalType": "address", - "name": "_tokenAddress", - "type": "address" - }, - { - "indexed": true, - "internalType": "address", - "name": "_currentGatewayAddress", - "type": "address" - }, - { - "indexed": true, - "internalType": "address", - "name": "_newGatewayAddress", - "type": "address" - } - ], - "name": "LogGatewayUpdated", - "type": "event" - }, - "0x8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0": { - "anonymous": false, - "inputs": [ - { - "indexed": true, - "internalType": "address", - "name": "previousOwner", - "type": "address" - }, - { - "indexed": true, - "internalType": "address", - "name": "newOwner", - "type": "address" - } - ], - "name": "OwnershipTransferred", - "type": "event" - } - }, - "links": {}, - "address": "0x8b49f212F2236F4f49bBeff878a73051a8915DE0" - } - }, - "schemaVersion": "3.0.23" -} \ No newline at end of file diff --git a/build/mainnet/ProtocolProxy.json b/build/mainnet/ProtocolProxy.json deleted file mode 100644 index 293cce15..00000000 --- a/build/mainnet/ProtocolProxy.json +++ /dev/null @@ -1,213 +0,0 @@ -{ - "contractName": "ProtocolProxy", - "abi": [ - { - "anonymous": false, - "inputs": [ - { - "indexed": false, - "internalType": "address", - "name": "previousAdmin", - "type": "address" - }, - { - "indexed": false, - "internalType": "address", - "name": "newAdmin", - "type": "address" - } - ], - "name": "AdminChanged", - "type": "event" - }, - { - "anonymous": false, - "inputs": [ - { - "indexed": true, - "internalType": "address", - "name": "implementation", - "type": "address" - } - ], - "name": "Upgraded", - "type": "event" - }, - { - "payable": true, - "stateMutability": "payable", - "type": "fallback" - }, - { - "constant": false, - "inputs": [], - "name": "admin", - "outputs": [ - { - "internalType": "address", - "name": "", - "type": "address" - } - ], - "payable": false, - "stateMutability": "nonpayable", - "type": "function" - }, - { - "constant": false, - "inputs": [ - { - "internalType": "address", - "name": "newAdmin", - "type": "address" - } - ], - "name": "changeAdmin", - "outputs": [], - "payable": false, - "stateMutability": "nonpayable", - "type": "function" - }, - { - "constant": false, - "inputs": [], - "name": "implementation", - "outputs": [ - { - "internalType": "address", - "name": "", - "type": "address" - } - ], - "payable": false, - "stateMutability": "nonpayable", - "type": "function" - }, - { - "constant": false, - "inputs": [ - { - "internalType": "address", - "name": "_logic", - "type": "address" - }, - { - "internalType": "address", - "name": "_admin", - "type": "address" - }, - { - "internalType": "bytes", - "name": "_data", - "type": "bytes" - } - ], - "name": "initialize", - "outputs": [], - "payable": true, - "stateMutability": "payable", - "type": "function" - }, - { - "constant": false, - "inputs": [ - { - "internalType": "address", - "name": "_logic", - "type": "address" - }, - { - "internalType": "bytes", - "name": "_data", - "type": "bytes" - } - ], - "name": "initialize", - "outputs": [], - "payable": true, - "stateMutability": "payable", - "type": "function" - }, - { - "constant": false, - "inputs": [ - { - "internalType": "address", - "name": "newImplementation", - "type": "address" - } - ], - "name": "upgradeTo", - "outputs": [], - "payable": false, - "stateMutability": "nonpayable", - "type": "function" - }, - { - "constant": false, - "inputs": [ - { - "internalType": "address", - "name": "newImplementation", - "type": "address" - }, - { - "internalType": "bytes", - "name": "data", - "type": "bytes" - } - ], - "name": "upgradeToAndCall", - "outputs": [], - "payable": true, - "stateMutability": "payable", - "type": "function" - } - ], - "sourcePath": "~/github/renproject/ren-sol/contracts/Protocol/Protocol.sol", - "compiler": { - "name": "solc", - "version": "0.5.16+commit.9c3226ce.Emscripten.clang" - }, - "networks": { - "1": { - "events": { - "0x7e644d79422f17c01e4894b5f4f588d331ebfa28653d42ae832dc59e38c9798f": { - "anonymous": false, - "inputs": [ - { - "indexed": false, - "internalType": "address", - "name": "previousAdmin", - "type": "address" - }, - { - "indexed": false, - "internalType": "address", - "name": "newAdmin", - "type": "address" - } - ], - "name": "AdminChanged", - "type": "event" - }, - "0xbc7cd75a20ee27fd9adebab32041f755214dbc6bffa90cc0225b39da2e5c2d3b": { - "anonymous": false, - "inputs": [ - { - "indexed": true, - "internalType": "address", - "name": "implementation", - "type": "address" - } - ], - "name": "Upgraded", - "type": "event" - } - }, - "links": {}, - "address": "0xc25167fFa19B4d9d03c7d5aa4682c7063F345b66" - } - }, - "schemaVersion": "3.0.23" -} \ No newline at end of file diff --git a/build/mainnet/RenBCH.json b/build/mainnet/RenBCH.json deleted file mode 100644 index 64d09940..00000000 --- a/build/mainnet/RenBCH.json +++ /dev/null @@ -1,213 +0,0 @@ -{ - "contractName": "RenBCH", - "abi": [ - { - "anonymous": false, - "inputs": [ - { - "indexed": false, - "internalType": "address", - "name": "previousAdmin", - "type": "address" - }, - { - "indexed": false, - "internalType": "address", - "name": "newAdmin", - "type": "address" - } - ], - "name": "AdminChanged", - "type": "event" - }, - { - "anonymous": false, - "inputs": [ - { - "indexed": true, - "internalType": "address", - "name": "implementation", - "type": "address" - } - ], - "name": "Upgraded", - "type": "event" - }, - { - "payable": true, - "stateMutability": "payable", - "type": "fallback" - }, - { - "constant": false, - "inputs": [], - "name": "admin", - "outputs": [ - { - "internalType": "address", - "name": "", - "type": "address" - } - ], - "payable": false, - "stateMutability": "nonpayable", - "type": "function" - }, - { - "constant": false, - "inputs": [ - { - "internalType": "address", - "name": "newAdmin", - "type": "address" - } - ], - "name": "changeAdmin", - "outputs": [], - "payable": false, - "stateMutability": "nonpayable", - "type": "function" - }, - { - "constant": false, - "inputs": [], - "name": "implementation", - "outputs": [ - { - "internalType": "address", - "name": "", - "type": "address" - } - ], - "payable": false, - "stateMutability": "nonpayable", - "type": "function" - }, - { - "constant": false, - "inputs": [ - { - "internalType": "address", - "name": "_logic", - "type": "address" - }, - { - "internalType": "address", - "name": "_admin", - "type": "address" - }, - { - "internalType": "bytes", - "name": "_data", - "type": "bytes" - } - ], - "name": "initialize", - "outputs": [], - "payable": true, - "stateMutability": "payable", - "type": "function" - }, - { - "constant": false, - "inputs": [ - { - "internalType": "address", - "name": "_logic", - "type": "address" - }, - { - "internalType": "bytes", - "name": "_data", - "type": "bytes" - } - ], - "name": "initialize", - "outputs": [], - "payable": true, - "stateMutability": "payable", - "type": "function" - }, - { - "constant": false, - "inputs": [ - { - "internalType": "address", - "name": "newImplementation", - "type": "address" - } - ], - "name": "upgradeTo", - "outputs": [], - "payable": false, - "stateMutability": "nonpayable", - "type": "function" - }, - { - "constant": false, - "inputs": [ - { - "internalType": "address", - "name": "newImplementation", - "type": "address" - }, - { - "internalType": "bytes", - "name": "data", - "type": "bytes" - } - ], - "name": "upgradeToAndCall", - "outputs": [], - "payable": true, - "stateMutability": "payable", - "type": "function" - } - ], - "sourcePath": "~/github/renproject/ren-sol/contracts/Gateway/RenERC20.sol", - "compiler": { - "name": "solc", - "version": "0.5.16+commit.9c3226ce.Emscripten.clang" - }, - "networks": { - "1": { - "events": { - "0x7e644d79422f17c01e4894b5f4f588d331ebfa28653d42ae832dc59e38c9798f": { - "anonymous": false, - "inputs": [ - { - "indexed": false, - "internalType": "address", - "name": "previousAdmin", - "type": "address" - }, - { - "indexed": false, - "internalType": "address", - "name": "newAdmin", - "type": "address" - } - ], - "name": "AdminChanged", - "type": "event" - }, - "0xbc7cd75a20ee27fd9adebab32041f755214dbc6bffa90cc0225b39da2e5c2d3b": { - "anonymous": false, - "inputs": [ - { - "indexed": true, - "internalType": "address", - "name": "implementation", - "type": "address" - } - ], - "name": "Upgraded", - "type": "event" - } - }, - "links": {}, - "address": "0x459086F2376525BdCebA5bDDA135e4E9d3FeF5bf" - } - }, - "schemaVersion": "3.0.23" -} \ No newline at end of file diff --git a/build/mainnet/RenBTC.json b/build/mainnet/RenBTC.json deleted file mode 100644 index 3fc4e1ad..00000000 --- a/build/mainnet/RenBTC.json +++ /dev/null @@ -1,213 +0,0 @@ -{ - "contractName": "RenBTC", - "abi": [ - { - "anonymous": false, - "inputs": [ - { - "indexed": false, - "internalType": "address", - "name": "previousAdmin", - "type": "address" - }, - { - "indexed": false, - "internalType": "address", - "name": "newAdmin", - "type": "address" - } - ], - "name": "AdminChanged", - "type": "event" - }, - { - "anonymous": false, - "inputs": [ - { - "indexed": true, - "internalType": "address", - "name": "implementation", - "type": "address" - } - ], - "name": "Upgraded", - "type": "event" - }, - { - "payable": true, - "stateMutability": "payable", - "type": "fallback" - }, - { - "constant": false, - "inputs": [], - "name": "admin", - "outputs": [ - { - "internalType": "address", - "name": "", - "type": "address" - } - ], - "payable": false, - "stateMutability": "nonpayable", - "type": "function" - }, - { - "constant": false, - "inputs": [ - { - "internalType": "address", - "name": "newAdmin", - "type": "address" - } - ], - "name": "changeAdmin", - "outputs": [], - "payable": false, - "stateMutability": "nonpayable", - "type": "function" - }, - { - "constant": false, - "inputs": [], - "name": "implementation", - "outputs": [ - { - "internalType": "address", - "name": "", - "type": "address" - } - ], - "payable": false, - "stateMutability": "nonpayable", - "type": "function" - }, - { - "constant": false, - "inputs": [ - { - "internalType": "address", - "name": "_logic", - "type": "address" - }, - { - "internalType": "address", - "name": "_admin", - "type": "address" - }, - { - "internalType": "bytes", - "name": "_data", - "type": "bytes" - } - ], - "name": "initialize", - "outputs": [], - "payable": true, - "stateMutability": "payable", - "type": "function" - }, - { - "constant": false, - "inputs": [ - { - "internalType": "address", - "name": "_logic", - "type": "address" - }, - { - "internalType": "bytes", - "name": "_data", - "type": "bytes" - } - ], - "name": "initialize", - "outputs": [], - "payable": true, - "stateMutability": "payable", - "type": "function" - }, - { - "constant": false, - "inputs": [ - { - "internalType": "address", - "name": "newImplementation", - "type": "address" - } - ], - "name": "upgradeTo", - "outputs": [], - "payable": false, - "stateMutability": "nonpayable", - "type": "function" - }, - { - "constant": false, - "inputs": [ - { - "internalType": "address", - "name": "newImplementation", - "type": "address" - }, - { - "internalType": "bytes", - "name": "data", - "type": "bytes" - } - ], - "name": "upgradeToAndCall", - "outputs": [], - "payable": true, - "stateMutability": "payable", - "type": "function" - } - ], - "sourcePath": "~/github/renproject/ren-sol/contracts/Gateway/RenERC20.sol", - "compiler": { - "name": "solc", - "version": "0.5.16+commit.9c3226ce.Emscripten.clang" - }, - "networks": { - "1": { - "events": { - "0x7e644d79422f17c01e4894b5f4f588d331ebfa28653d42ae832dc59e38c9798f": { - "anonymous": false, - "inputs": [ - { - "indexed": false, - "internalType": "address", - "name": "previousAdmin", - "type": "address" - }, - { - "indexed": false, - "internalType": "address", - "name": "newAdmin", - "type": "address" - } - ], - "name": "AdminChanged", - "type": "event" - }, - "0xbc7cd75a20ee27fd9adebab32041f755214dbc6bffa90cc0225b39da2e5c2d3b": { - "anonymous": false, - "inputs": [ - { - "indexed": true, - "internalType": "address", - "name": "implementation", - "type": "address" - } - ], - "name": "Upgraded", - "type": "event" - } - }, - "links": {}, - "address": "0xEB4C2781e4ebA804CE9a9803C67d0893436bB27D" - } - }, - "schemaVersion": "3.0.23" -} \ No newline at end of file diff --git a/build/mainnet/RenERC20LogicV1.json b/build/mainnet/RenERC20LogicV1.json deleted file mode 100644 index 1b58997c..00000000 --- a/build/mainnet/RenERC20LogicV1.json +++ /dev/null @@ -1,937 +0,0 @@ -{ - "contractName": "RenERC20LogicV1", - "abi": [ - { - "anonymous": false, - "inputs": [ - { - "indexed": true, - "internalType": "address", - "name": "owner", - "type": "address" - }, - { - "indexed": true, - "internalType": "address", - "name": "spender", - "type": "address" - }, - { - "indexed": false, - "internalType": "uint256", - "name": "value", - "type": "uint256" - } - ], - "name": "Approval", - "type": "event" - }, - { - "anonymous": false, - "inputs": [ - { - "indexed": true, - "internalType": "uint256", - "name": "_rate", - "type": "uint256" - } - ], - "name": "LogRateChanged", - "type": "event" - }, - { - "anonymous": false, - "inputs": [ - { - "indexed": true, - "internalType": "address", - "name": "previousOwner", - "type": "address" - }, - { - "indexed": true, - "internalType": "address", - "name": "newOwner", - "type": "address" - } - ], - "name": "OwnershipTransferred", - "type": "event" - }, - { - "anonymous": false, - "inputs": [ - { - "indexed": true, - "internalType": "address", - "name": "from", - "type": "address" - }, - { - "indexed": true, - "internalType": "address", - "name": "to", - "type": "address" - }, - { - "indexed": false, - "internalType": "uint256", - "name": "value", - "type": "uint256" - } - ], - "name": "Transfer", - "type": "event" - }, - { - "constant": true, - "inputs": [], - "name": "DOMAIN_SEPARATOR", - "outputs": [ - { - "internalType": "bytes32", - "name": "", - "type": "bytes32" - } - ], - "payable": false, - "stateMutability": "view", - "type": "function" - }, - { - "constant": true, - "inputs": [], - "name": "PERMIT_TYPEHASH", - "outputs": [ - { - "internalType": "bytes32", - "name": "", - "type": "bytes32" - } - ], - "payable": false, - "stateMutability": "view", - "type": "function" - }, - { - "constant": true, - "inputs": [], - "name": "_rateScale", - "outputs": [ - { - "internalType": "uint256", - "name": "", - "type": "uint256" - } - ], - "payable": false, - "stateMutability": "view", - "type": "function" - }, - { - "constant": true, - "inputs": [ - { - "internalType": "address", - "name": "owner", - "type": "address" - }, - { - "internalType": "address", - "name": "spender", - "type": "address" - } - ], - "name": "allowance", - "outputs": [ - { - "internalType": "uint256", - "name": "", - "type": "uint256" - } - ], - "payable": false, - "stateMutability": "view", - "type": "function" - }, - { - "constant": false, - "inputs": [ - { - "internalType": "address", - "name": "spender", - "type": "address" - }, - { - "internalType": "uint256", - "name": "amount", - "type": "uint256" - } - ], - "name": "approve", - "outputs": [ - { - "internalType": "bool", - "name": "", - "type": "bool" - } - ], - "payable": false, - "stateMutability": "nonpayable", - "type": "function" - }, - { - "constant": true, - "inputs": [ - { - "internalType": "address", - "name": "account", - "type": "address" - } - ], - "name": "balanceOf", - "outputs": [ - { - "internalType": "uint256", - "name": "", - "type": "uint256" - } - ], - "payable": false, - "stateMutability": "view", - "type": "function" - }, - { - "constant": true, - "inputs": [ - { - "internalType": "address", - "name": "_account", - "type": "address" - } - ], - "name": "balanceOfUnderlying", - "outputs": [ - { - "internalType": "uint256", - "name": "", - "type": "uint256" - } - ], - "payable": false, - "stateMutability": "view", - "type": "function" - }, - { - "constant": false, - "inputs": [ - { - "internalType": "address", - "name": "_token", - "type": "address" - } - ], - "name": "blacklistRecoverableToken", - "outputs": [], - "payable": false, - "stateMutability": "nonpayable", - "type": "function" - }, - { - "constant": false, - "inputs": [ - { - "internalType": "address", - "name": "_from", - "type": "address" - }, - { - "internalType": "uint256", - "name": "_amount", - "type": "uint256" - } - ], - "name": "burn", - "outputs": [], - "payable": false, - "stateMutability": "nonpayable", - "type": "function" - }, - { - "constant": false, - "inputs": [], - "name": "claimOwnership", - "outputs": [], - "payable": false, - "stateMutability": "nonpayable", - "type": "function" - }, - { - "constant": true, - "inputs": [], - "name": "decimals", - "outputs": [ - { - "internalType": "uint8", - "name": "", - "type": "uint8" - } - ], - "payable": false, - "stateMutability": "view", - "type": "function" - }, - { - "constant": false, - "inputs": [ - { - "internalType": "address", - "name": "spender", - "type": "address" - }, - { - "internalType": "uint256", - "name": "subtractedValue", - "type": "uint256" - } - ], - "name": "decreaseAllowance", - "outputs": [ - { - "internalType": "bool", - "name": "", - "type": "bool" - } - ], - "payable": false, - "stateMutability": "nonpayable", - "type": "function" - }, - { - "constant": true, - "inputs": [], - "name": "exchangeRateCurrent", - "outputs": [ - { - "internalType": "uint256", - "name": "", - "type": "uint256" - } - ], - "payable": false, - "stateMutability": "view", - "type": "function" - }, - { - "constant": true, - "inputs": [ - { - "internalType": "uint256", - "name": "_amountUnderlying", - "type": "uint256" - } - ], - "name": "fromUnderlying", - "outputs": [ - { - "internalType": "uint256", - "name": "", - "type": "uint256" - } - ], - "payable": false, - "stateMutability": "view", - "type": "function" - }, - { - "constant": false, - "inputs": [ - { - "internalType": "address", - "name": "spender", - "type": "address" - }, - { - "internalType": "uint256", - "name": "addedValue", - "type": "uint256" - } - ], - "name": "increaseAllowance", - "outputs": [ - { - "internalType": "bool", - "name": "", - "type": "bool" - } - ], - "payable": false, - "stateMutability": "nonpayable", - "type": "function" - }, - { - "constant": false, - "inputs": [ - { - "internalType": "string", - "name": "name", - "type": "string" - }, - { - "internalType": "string", - "name": "symbol", - "type": "string" - }, - { - "internalType": "uint8", - "name": "decimals", - "type": "uint8" - } - ], - "name": "initialize", - "outputs": [], - "payable": false, - "stateMutability": "nonpayable", - "type": "function" - }, - { - "constant": false, - "inputs": [ - { - "internalType": "uint256", - "name": "_chainId", - "type": "uint256" - }, - { - "internalType": "address", - "name": "_nextOwner", - "type": "address" - }, - { - "internalType": "uint256", - "name": "_initialRate", - "type": "uint256" - }, - { - "internalType": "string", - "name": "_version", - "type": "string" - }, - { - "internalType": "string", - "name": "_name", - "type": "string" - }, - { - "internalType": "string", - "name": "_symbol", - "type": "string" - }, - { - "internalType": "uint8", - "name": "_decimals", - "type": "uint8" - } - ], - "name": "initialize", - "outputs": [], - "payable": false, - "stateMutability": "nonpayable", - "type": "function" - }, - { - "constant": false, - "inputs": [ - { - "internalType": "uint256", - "name": "_chainId", - "type": "uint256" - }, - { - "internalType": "string", - "name": "_version", - "type": "string" - }, - { - "internalType": "string", - "name": "_name", - "type": "string" - }, - { - "internalType": "string", - "name": "_symbol", - "type": "string" - }, - { - "internalType": "uint8", - "name": "_decimals", - "type": "uint8" - } - ], - "name": "initialize", - "outputs": [], - "payable": false, - "stateMutability": "nonpayable", - "type": "function" - }, - { - "constant": false, - "inputs": [ - { - "internalType": "address", - "name": "_nextOwner", - "type": "address" - } - ], - "name": "initialize", - "outputs": [], - "payable": false, - "stateMutability": "nonpayable", - "type": "function" - }, - { - "constant": false, - "inputs": [ - { - "internalType": "address", - "name": "_nextOwner", - "type": "address" - }, - { - "internalType": "uint256", - "name": "_initialRate", - "type": "uint256" - } - ], - "name": "initialize", - "outputs": [], - "payable": false, - "stateMutability": "nonpayable", - "type": "function" - }, - { - "constant": true, - "inputs": [], - "name": "isOwner", - "outputs": [ - { - "internalType": "bool", - "name": "", - "type": "bool" - } - ], - "payable": false, - "stateMutability": "view", - "type": "function" - }, - { - "constant": false, - "inputs": [ - { - "internalType": "address", - "name": "_to", - "type": "address" - }, - { - "internalType": "uint256", - "name": "_amount", - "type": "uint256" - } - ], - "name": "mint", - "outputs": [], - "payable": false, - "stateMutability": "nonpayable", - "type": "function" - }, - { - "constant": true, - "inputs": [], - "name": "name", - "outputs": [ - { - "internalType": "string", - "name": "", - "type": "string" - } - ], - "payable": false, - "stateMutability": "view", - "type": "function" - }, - { - "constant": true, - "inputs": [ - { - "internalType": "address", - "name": "", - "type": "address" - } - ], - "name": "nonces", - "outputs": [ - { - "internalType": "uint256", - "name": "", - "type": "uint256" - } - ], - "payable": false, - "stateMutability": "view", - "type": "function" - }, - { - "constant": true, - "inputs": [], - "name": "owner", - "outputs": [ - { - "internalType": "address", - "name": "", - "type": "address" - } - ], - "payable": false, - "stateMutability": "view", - "type": "function" - }, - { - "constant": true, - "inputs": [], - "name": "pendingOwner", - "outputs": [ - { - "internalType": "address", - "name": "", - "type": "address" - } - ], - "payable": false, - "stateMutability": "view", - "type": "function" - }, - { - "constant": false, - "inputs": [ - { - "internalType": "address", - "name": "holder", - "type": "address" - }, - { - "internalType": "address", - "name": "spender", - "type": "address" - }, - { - "internalType": "uint256", - "name": "nonce", - "type": "uint256" - }, - { - "internalType": "uint256", - "name": "expiry", - "type": "uint256" - }, - { - "internalType": "bool", - "name": "allowed", - "type": "bool" - }, - { - "internalType": "uint8", - "name": "v", - "type": "uint8" - }, - { - "internalType": "bytes32", - "name": "r", - "type": "bytes32" - }, - { - "internalType": "bytes32", - "name": "s", - "type": "bytes32" - } - ], - "name": "permit", - "outputs": [], - "payable": false, - "stateMutability": "nonpayable", - "type": "function" - }, - { - "constant": false, - "inputs": [ - { - "internalType": "address", - "name": "_token", - "type": "address" - } - ], - "name": "recoverTokens", - "outputs": [], - "payable": false, - "stateMutability": "nonpayable", - "type": "function" - }, - { - "constant": false, - "inputs": [], - "name": "renounceOwnership", - "outputs": [], - "payable": false, - "stateMutability": "nonpayable", - "type": "function" - }, - { - "constant": false, - "inputs": [ - { - "internalType": "uint256", - "name": "_nextRate", - "type": "uint256" - } - ], - "name": "setExchangeRate", - "outputs": [], - "payable": false, - "stateMutability": "nonpayable", - "type": "function" - }, - { - "constant": true, - "inputs": [], - "name": "symbol", - "outputs": [ - { - "internalType": "string", - "name": "", - "type": "string" - } - ], - "payable": false, - "stateMutability": "view", - "type": "function" - }, - { - "constant": true, - "inputs": [ - { - "internalType": "uint256", - "name": "_amount", - "type": "uint256" - } - ], - "name": "toUnderlying", - "outputs": [ - { - "internalType": "uint256", - "name": "", - "type": "uint256" - } - ], - "payable": false, - "stateMutability": "view", - "type": "function" - }, - { - "constant": true, - "inputs": [], - "name": "totalSupply", - "outputs": [ - { - "internalType": "uint256", - "name": "", - "type": "uint256" - } - ], - "payable": false, - "stateMutability": "view", - "type": "function" - }, - { - "constant": false, - "inputs": [ - { - "internalType": "address", - "name": "recipient", - "type": "address" - }, - { - "internalType": "uint256", - "name": "amount", - "type": "uint256" - } - ], - "name": "transfer", - "outputs": [ - { - "internalType": "bool", - "name": "", - "type": "bool" - } - ], - "payable": false, - "stateMutability": "nonpayable", - "type": "function" - }, - { - "constant": false, - "inputs": [ - { - "internalType": "address", - "name": "sender", - "type": "address" - }, - { - "internalType": "address", - "name": "recipient", - "type": "address" - }, - { - "internalType": "uint256", - "name": "amount", - "type": "uint256" - } - ], - "name": "transferFrom", - "outputs": [ - { - "internalType": "bool", - "name": "", - "type": "bool" - } - ], - "payable": false, - "stateMutability": "nonpayable", - "type": "function" - }, - { - "constant": false, - "inputs": [ - { - "internalType": "address", - "name": "newOwner", - "type": "address" - } - ], - "name": "transferOwnership", - "outputs": [], - "payable": false, - "stateMutability": "nonpayable", - "type": "function" - }, - { - "constant": true, - "inputs": [], - "name": "version", - "outputs": [ - { - "internalType": "string", - "name": "", - "type": "string" - } - ], - "payable": false, - "stateMutability": "view", - "type": "function" - } - ], - "sourcePath": "~/github/renproject/ren-sol/contracts/Gateway/RenERC20.sol", - "compiler": { - "name": "solc", - "version": "0.5.16+commit.9c3226ce.Emscripten.clang" - }, - "networks": { - "1": { - "events": { - "0x8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925": { - "anonymous": false, - "inputs": [ - { - "indexed": true, - "internalType": "address", - "name": "owner", - "type": "address" - }, - { - "indexed": true, - "internalType": "address", - "name": "spender", - "type": "address" - }, - { - "indexed": false, - "internalType": "uint256", - "name": "value", - "type": "uint256" - } - ], - "name": "Approval", - "type": "event" - }, - "0x9d6ef0d454e23e234e8c1cf70cee49a44226ffb036017442229a7a5bd1d0957e": { - "anonymous": false, - "inputs": [ - { - "indexed": true, - "internalType": "uint256", - "name": "_rate", - "type": "uint256" - } - ], - "name": "LogRateChanged", - "type": "event" - }, - "0x8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0": { - "anonymous": false, - "inputs": [ - { - "indexed": true, - "internalType": "address", - "name": "previousOwner", - "type": "address" - }, - { - "indexed": true, - "internalType": "address", - "name": "newOwner", - "type": "address" - } - ], - "name": "OwnershipTransferred", - "type": "event" - }, - "0xddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef": { - "anonymous": false, - "inputs": [ - { - "indexed": true, - "internalType": "address", - "name": "from", - "type": "address" - }, - { - "indexed": true, - "internalType": "address", - "name": "to", - "type": "address" - }, - { - "indexed": false, - "internalType": "uint256", - "name": "value", - "type": "uint256" - } - ], - "name": "Transfer", - "type": "event" - } - }, - "links": {}, - "address": "0xe2d6cCAC3EE3A21AbF7BeDBE2E107FfC0C037e80" - } - }, - "schemaVersion": "3.0.23" -} \ No newline at end of file diff --git a/build/mainnet/RenProxyAdmin.json b/build/mainnet/RenProxyAdmin.json deleted file mode 100644 index 866e7830..00000000 --- a/build/mainnet/RenProxyAdmin.json +++ /dev/null @@ -1,218 +0,0 @@ -{ - "contractName": "RenProxyAdmin", - "abi": [ - { - "anonymous": false, - "inputs": [ - { - "indexed": true, - "internalType": "address", - "name": "previousOwner", - "type": "address" - }, - { - "indexed": true, - "internalType": "address", - "name": "newOwner", - "type": "address" - } - ], - "name": "OwnershipTransferred", - "type": "event" - }, - { - "constant": false, - "inputs": [ - { - "internalType": "contract AdminUpgradeabilityProxy", - "name": "proxy", - "type": "address" - }, - { - "internalType": "address", - "name": "newAdmin", - "type": "address" - } - ], - "name": "changeProxyAdmin", - "outputs": [], - "payable": false, - "stateMutability": "nonpayable", - "type": "function" - }, - { - "constant": true, - "inputs": [ - { - "internalType": "contract AdminUpgradeabilityProxy", - "name": "proxy", - "type": "address" - } - ], - "name": "getProxyAdmin", - "outputs": [ - { - "internalType": "address", - "name": "", - "type": "address" - } - ], - "payable": false, - "stateMutability": "view", - "type": "function" - }, - { - "constant": true, - "inputs": [ - { - "internalType": "contract AdminUpgradeabilityProxy", - "name": "proxy", - "type": "address" - } - ], - "name": "getProxyImplementation", - "outputs": [ - { - "internalType": "address", - "name": "", - "type": "address" - } - ], - "payable": false, - "stateMutability": "view", - "type": "function" - }, - { - "constant": true, - "inputs": [], - "name": "isOwner", - "outputs": [ - { - "internalType": "bool", - "name": "", - "type": "bool" - } - ], - "payable": false, - "stateMutability": "view", - "type": "function" - }, - { - "constant": true, - "inputs": [], - "name": "owner", - "outputs": [ - { - "internalType": "address", - "name": "", - "type": "address" - } - ], - "payable": false, - "stateMutability": "view", - "type": "function" - }, - { - "constant": false, - "inputs": [], - "name": "renounceOwnership", - "outputs": [], - "payable": false, - "stateMutability": "nonpayable", - "type": "function" - }, - { - "constant": false, - "inputs": [ - { - "internalType": "address", - "name": "newOwner", - "type": "address" - } - ], - "name": "transferOwnership", - "outputs": [], - "payable": false, - "stateMutability": "nonpayable", - "type": "function" - }, - { - "constant": false, - "inputs": [ - { - "internalType": "contract AdminUpgradeabilityProxy", - "name": "proxy", - "type": "address" - }, - { - "internalType": "address", - "name": "implementation", - "type": "address" - } - ], - "name": "upgrade", - "outputs": [], - "payable": false, - "stateMutability": "nonpayable", - "type": "function" - }, - { - "constant": false, - "inputs": [ - { - "internalType": "contract AdminUpgradeabilityProxy", - "name": "proxy", - "type": "address" - }, - { - "internalType": "address", - "name": "implementation", - "type": "address" - }, - { - "internalType": "bytes", - "name": "data", - "type": "bytes" - } - ], - "name": "upgradeAndCall", - "outputs": [], - "payable": true, - "stateMutability": "payable", - "type": "function" - } - ], - "sourcePath": "~/github/renproject/ren-sol/contracts/Governance/RenProxyAdmin.sol", - "compiler": { - "name": "solc", - "version": "0.5.16+commit.9c3226ce.Emscripten.clang" - }, - "networks": { - "1": { - "events": { - "0x8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0": { - "anonymous": false, - "inputs": [ - { - "indexed": true, - "internalType": "address", - "name": "previousOwner", - "type": "address" - }, - { - "indexed": true, - "internalType": "address", - "name": "newOwner", - "type": "address" - } - ], - "name": "OwnershipTransferred", - "type": "event" - } - }, - "links": {}, - "address": "0xDf1D8eD27C54bBE5833320cf5a19fd9E73530145" - } - }, - "schemaVersion": "3.0.23" -} \ No newline at end of file diff --git a/build/mainnet/RenToken.json b/build/mainnet/RenToken.json deleted file mode 100644 index 76943a9b..00000000 --- a/build/mainnet/RenToken.json +++ /dev/null @@ -1,757 +0,0 @@ -{ - "contractName": "RenToken", - "abi": [ - { - "inputs": [], - "payable": false, - "stateMutability": "nonpayable", - "type": "constructor" - }, - { - "anonymous": false, - "inputs": [ - { - "indexed": true, - "internalType": "address", - "name": "owner", - "type": "address" - }, - { - "indexed": true, - "internalType": "address", - "name": "spender", - "type": "address" - }, - { - "indexed": false, - "internalType": "uint256", - "name": "value", - "type": "uint256" - } - ], - "name": "Approval", - "type": "event" - }, - { - "anonymous": false, - "inputs": [ - { - "indexed": true, - "internalType": "address", - "name": "previousOwner", - "type": "address" - }, - { - "indexed": true, - "internalType": "address", - "name": "newOwner", - "type": "address" - } - ], - "name": "OwnershipTransferred", - "type": "event" - }, - { - "anonymous": false, - "inputs": [ - { - "indexed": false, - "internalType": "address", - "name": "account", - "type": "address" - } - ], - "name": "Paused", - "type": "event" - }, - { - "anonymous": false, - "inputs": [ - { - "indexed": true, - "internalType": "address", - "name": "account", - "type": "address" - } - ], - "name": "PauserAdded", - "type": "event" - }, - { - "anonymous": false, - "inputs": [ - { - "indexed": true, - "internalType": "address", - "name": "account", - "type": "address" - } - ], - "name": "PauserRemoved", - "type": "event" - }, - { - "anonymous": false, - "inputs": [ - { - "indexed": true, - "internalType": "address", - "name": "from", - "type": "address" - }, - { - "indexed": true, - "internalType": "address", - "name": "to", - "type": "address" - }, - { - "indexed": false, - "internalType": "uint256", - "name": "value", - "type": "uint256" - } - ], - "name": "Transfer", - "type": "event" - }, - { - "anonymous": false, - "inputs": [ - { - "indexed": false, - "internalType": "address", - "name": "account", - "type": "address" - } - ], - "name": "Unpaused", - "type": "event" - }, - { - "constant": true, - "inputs": [], - "name": "INITIAL_SUPPLY", - "outputs": [ - { - "internalType": "uint256", - "name": "", - "type": "uint256" - } - ], - "payable": false, - "stateMutability": "view", - "type": "function" - }, - { - "constant": false, - "inputs": [ - { - "internalType": "address", - "name": "account", - "type": "address" - } - ], - "name": "addPauser", - "outputs": [], - "payable": false, - "stateMutability": "nonpayable", - "type": "function" - }, - { - "constant": true, - "inputs": [ - { - "internalType": "address", - "name": "owner", - "type": "address" - }, - { - "internalType": "address", - "name": "spender", - "type": "address" - } - ], - "name": "allowance", - "outputs": [ - { - "internalType": "uint256", - "name": "", - "type": "uint256" - } - ], - "payable": false, - "stateMutability": "view", - "type": "function" - }, - { - "constant": false, - "inputs": [ - { - "internalType": "address", - "name": "spender", - "type": "address" - }, - { - "internalType": "uint256", - "name": "value", - "type": "uint256" - } - ], - "name": "approve", - "outputs": [ - { - "internalType": "bool", - "name": "", - "type": "bool" - } - ], - "payable": false, - "stateMutability": "nonpayable", - "type": "function" - }, - { - "constant": true, - "inputs": [ - { - "internalType": "address", - "name": "account", - "type": "address" - } - ], - "name": "balanceOf", - "outputs": [ - { - "internalType": "uint256", - "name": "", - "type": "uint256" - } - ], - "payable": false, - "stateMutability": "view", - "type": "function" - }, - { - "constant": false, - "inputs": [ - { - "internalType": "uint256", - "name": "amount", - "type": "uint256" - } - ], - "name": "burn", - "outputs": [], - "payable": false, - "stateMutability": "nonpayable", - "type": "function" - }, - { - "constant": false, - "inputs": [ - { - "internalType": "address", - "name": "account", - "type": "address" - }, - { - "internalType": "uint256", - "name": "amount", - "type": "uint256" - } - ], - "name": "burnFrom", - "outputs": [], - "payable": false, - "stateMutability": "nonpayable", - "type": "function" - }, - { - "constant": true, - "inputs": [], - "name": "decimals", - "outputs": [ - { - "internalType": "uint8", - "name": "", - "type": "uint8" - } - ], - "payable": false, - "stateMutability": "view", - "type": "function" - }, - { - "constant": false, - "inputs": [ - { - "internalType": "address", - "name": "spender", - "type": "address" - }, - { - "internalType": "uint256", - "name": "subtractedValue", - "type": "uint256" - } - ], - "name": "decreaseAllowance", - "outputs": [ - { - "internalType": "bool", - "name": "", - "type": "bool" - } - ], - "payable": false, - "stateMutability": "nonpayable", - "type": "function" - }, - { - "constant": false, - "inputs": [ - { - "internalType": "address", - "name": "spender", - "type": "address" - }, - { - "internalType": "uint256", - "name": "addedValue", - "type": "uint256" - } - ], - "name": "increaseAllowance", - "outputs": [ - { - "internalType": "bool", - "name": "", - "type": "bool" - } - ], - "payable": false, - "stateMutability": "nonpayable", - "type": "function" - }, - { - "constant": false, - "inputs": [ - { - "internalType": "string", - "name": "name", - "type": "string" - }, - { - "internalType": "string", - "name": "symbol", - "type": "string" - }, - { - "internalType": "uint8", - "name": "decimals", - "type": "uint8" - } - ], - "name": "initialize", - "outputs": [], - "payable": false, - "stateMutability": "nonpayable", - "type": "function" - }, - { - "constant": false, - "inputs": [ - { - "internalType": "address", - "name": "sender", - "type": "address" - } - ], - "name": "initialize", - "outputs": [], - "payable": false, - "stateMutability": "nonpayable", - "type": "function" - }, - { - "constant": true, - "inputs": [], - "name": "isOwner", - "outputs": [ - { - "internalType": "bool", - "name": "", - "type": "bool" - } - ], - "payable": false, - "stateMutability": "view", - "type": "function" - }, - { - "constant": true, - "inputs": [ - { - "internalType": "address", - "name": "account", - "type": "address" - } - ], - "name": "isPauser", - "outputs": [ - { - "internalType": "bool", - "name": "", - "type": "bool" - } - ], - "payable": false, - "stateMutability": "view", - "type": "function" - }, - { - "constant": true, - "inputs": [], - "name": "name", - "outputs": [ - { - "internalType": "string", - "name": "", - "type": "string" - } - ], - "payable": false, - "stateMutability": "view", - "type": "function" - }, - { - "constant": true, - "inputs": [], - "name": "owner", - "outputs": [ - { - "internalType": "address", - "name": "", - "type": "address" - } - ], - "payable": false, - "stateMutability": "view", - "type": "function" - }, - { - "constant": false, - "inputs": [], - "name": "pause", - "outputs": [], - "payable": false, - "stateMutability": "nonpayable", - "type": "function" - }, - { - "constant": true, - "inputs": [], - "name": "paused", - "outputs": [ - { - "internalType": "bool", - "name": "", - "type": "bool" - } - ], - "payable": false, - "stateMutability": "view", - "type": "function" - }, - { - "constant": false, - "inputs": [], - "name": "renounceOwnership", - "outputs": [], - "payable": false, - "stateMutability": "nonpayable", - "type": "function" - }, - { - "constant": false, - "inputs": [], - "name": "renouncePauser", - "outputs": [], - "payable": false, - "stateMutability": "nonpayable", - "type": "function" - }, - { - "constant": true, - "inputs": [], - "name": "symbol", - "outputs": [ - { - "internalType": "string", - "name": "", - "type": "string" - } - ], - "payable": false, - "stateMutability": "view", - "type": "function" - }, - { - "constant": true, - "inputs": [], - "name": "totalSupply", - "outputs": [ - { - "internalType": "uint256", - "name": "", - "type": "uint256" - } - ], - "payable": false, - "stateMutability": "view", - "type": "function" - }, - { - "constant": false, - "inputs": [ - { - "internalType": "address", - "name": "to", - "type": "address" - }, - { - "internalType": "uint256", - "name": "value", - "type": "uint256" - } - ], - "name": "transfer", - "outputs": [ - { - "internalType": "bool", - "name": "", - "type": "bool" - } - ], - "payable": false, - "stateMutability": "nonpayable", - "type": "function" - }, - { - "constant": false, - "inputs": [ - { - "internalType": "address", - "name": "from", - "type": "address" - }, - { - "internalType": "address", - "name": "to", - "type": "address" - }, - { - "internalType": "uint256", - "name": "value", - "type": "uint256" - } - ], - "name": "transferFrom", - "outputs": [ - { - "internalType": "bool", - "name": "", - "type": "bool" - } - ], - "payable": false, - "stateMutability": "nonpayable", - "type": "function" - }, - { - "constant": false, - "inputs": [ - { - "internalType": "address", - "name": "newOwner", - "type": "address" - } - ], - "name": "transferOwnership", - "outputs": [], - "payable": false, - "stateMutability": "nonpayable", - "type": "function" - }, - { - "constant": false, - "inputs": [ - { - "internalType": "address", - "name": "beneficiary", - "type": "address" - }, - { - "internalType": "uint256", - "name": "amount", - "type": "uint256" - } - ], - "name": "transferTokens", - "outputs": [ - { - "internalType": "bool", - "name": "", - "type": "bool" - } - ], - "payable": false, - "stateMutability": "nonpayable", - "type": "function" - }, - { - "constant": false, - "inputs": [], - "name": "unpause", - "outputs": [], - "payable": false, - "stateMutability": "nonpayable", - "type": "function" - } - ], - "sourcePath": "~/github/renproject/ren-sol/contracts/RenToken/RenToken.sol", - "compiler": { - "name": "solc", - "version": "0.5.16+commit.9c3226ce.Emscripten.clang" - }, - "networks": { - "1": { - "events": { - "0x8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925": { - "anonymous": false, - "inputs": [ - { - "indexed": true, - "internalType": "address", - "name": "owner", - "type": "address" - }, - { - "indexed": true, - "internalType": "address", - "name": "spender", - "type": "address" - }, - { - "indexed": false, - "internalType": "uint256", - "name": "value", - "type": "uint256" - } - ], - "name": "Approval", - "type": "event" - }, - "0x8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0": { - "anonymous": false, - "inputs": [ - { - "indexed": true, - "internalType": "address", - "name": "previousOwner", - "type": "address" - }, - { - "indexed": true, - "internalType": "address", - "name": "newOwner", - "type": "address" - } - ], - "name": "OwnershipTransferred", - "type": "event" - }, - "0x62e78cea01bee320cd4e420270b5ea74000d11b0c9f74754ebdbfc544b05a258": { - "anonymous": false, - "inputs": [ - { - "indexed": false, - "internalType": "address", - "name": "account", - "type": "address" - } - ], - "name": "Paused", - "type": "event" - }, - "0x6719d08c1888103bea251a4ed56406bd0c3e69723c8a1686e017e7bbe159b6f8": { - "anonymous": false, - "inputs": [ - { - "indexed": true, - "internalType": "address", - "name": "account", - "type": "address" - } - ], - "name": "PauserAdded", - "type": "event" - }, - "0xcd265ebaf09df2871cc7bd4133404a235ba12eff2041bb89d9c714a2621c7c7e": { - "anonymous": false, - "inputs": [ - { - "indexed": true, - "internalType": "address", - "name": "account", - "type": "address" - } - ], - "name": "PauserRemoved", - "type": "event" - }, - "0xddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef": { - "anonymous": false, - "inputs": [ - { - "indexed": true, - "internalType": "address", - "name": "from", - "type": "address" - }, - { - "indexed": true, - "internalType": "address", - "name": "to", - "type": "address" - }, - { - "indexed": false, - "internalType": "uint256", - "name": "value", - "type": "uint256" - } - ], - "name": "Transfer", - "type": "event" - }, - "0x5db9ee0a495bf2e6ff9c91a7834c1ba4fdd244a5e8aa4e537bd38aeae4b073aa": { - "anonymous": false, - "inputs": [ - { - "indexed": false, - "internalType": "address", - "name": "account", - "type": "address" - } - ], - "name": "Unpaused", - "type": "event" - } - }, - "links": {}, - "address": "0x408e41876cCCDC0F92210600ef50372656052a38" - } - }, - "schemaVersion": "3.0.23" -} \ No newline at end of file diff --git a/build/mainnet/RenZEC.json b/build/mainnet/RenZEC.json deleted file mode 100644 index 287373c1..00000000 --- a/build/mainnet/RenZEC.json +++ /dev/null @@ -1,213 +0,0 @@ -{ - "contractName": "RenZEC", - "abi": [ - { - "anonymous": false, - "inputs": [ - { - "indexed": false, - "internalType": "address", - "name": "previousAdmin", - "type": "address" - }, - { - "indexed": false, - "internalType": "address", - "name": "newAdmin", - "type": "address" - } - ], - "name": "AdminChanged", - "type": "event" - }, - { - "anonymous": false, - "inputs": [ - { - "indexed": true, - "internalType": "address", - "name": "implementation", - "type": "address" - } - ], - "name": "Upgraded", - "type": "event" - }, - { - "payable": true, - "stateMutability": "payable", - "type": "fallback" - }, - { - "constant": false, - "inputs": [], - "name": "admin", - "outputs": [ - { - "internalType": "address", - "name": "", - "type": "address" - } - ], - "payable": false, - "stateMutability": "nonpayable", - "type": "function" - }, - { - "constant": false, - "inputs": [ - { - "internalType": "address", - "name": "newAdmin", - "type": "address" - } - ], - "name": "changeAdmin", - "outputs": [], - "payable": false, - "stateMutability": "nonpayable", - "type": "function" - }, - { - "constant": false, - "inputs": [], - "name": "implementation", - "outputs": [ - { - "internalType": "address", - "name": "", - "type": "address" - } - ], - "payable": false, - "stateMutability": "nonpayable", - "type": "function" - }, - { - "constant": false, - "inputs": [ - { - "internalType": "address", - "name": "_logic", - "type": "address" - }, - { - "internalType": "address", - "name": "_admin", - "type": "address" - }, - { - "internalType": "bytes", - "name": "_data", - "type": "bytes" - } - ], - "name": "initialize", - "outputs": [], - "payable": true, - "stateMutability": "payable", - "type": "function" - }, - { - "constant": false, - "inputs": [ - { - "internalType": "address", - "name": "_logic", - "type": "address" - }, - { - "internalType": "bytes", - "name": "_data", - "type": "bytes" - } - ], - "name": "initialize", - "outputs": [], - "payable": true, - "stateMutability": "payable", - "type": "function" - }, - { - "constant": false, - "inputs": [ - { - "internalType": "address", - "name": "newImplementation", - "type": "address" - } - ], - "name": "upgradeTo", - "outputs": [], - "payable": false, - "stateMutability": "nonpayable", - "type": "function" - }, - { - "constant": false, - "inputs": [ - { - "internalType": "address", - "name": "newImplementation", - "type": "address" - }, - { - "internalType": "bytes", - "name": "data", - "type": "bytes" - } - ], - "name": "upgradeToAndCall", - "outputs": [], - "payable": true, - "stateMutability": "payable", - "type": "function" - } - ], - "sourcePath": "~/github/renproject/ren-sol/contracts/Gateway/RenERC20.sol", - "compiler": { - "name": "solc", - "version": "0.5.16+commit.9c3226ce.Emscripten.clang" - }, - "networks": { - "1": { - "events": { - "0x7e644d79422f17c01e4894b5f4f588d331ebfa28653d42ae832dc59e38c9798f": { - "anonymous": false, - "inputs": [ - { - "indexed": false, - "internalType": "address", - "name": "previousAdmin", - "type": "address" - }, - { - "indexed": false, - "internalType": "address", - "name": "newAdmin", - "type": "address" - } - ], - "name": "AdminChanged", - "type": "event" - }, - "0xbc7cd75a20ee27fd9adebab32041f755214dbc6bffa90cc0225b39da2e5c2d3b": { - "anonymous": false, - "inputs": [ - { - "indexed": true, - "internalType": "address", - "name": "implementation", - "type": "address" - } - ], - "name": "Upgraded", - "type": "event" - } - }, - "links": {}, - "address": "0x1C5db575E2Ff833E46a2E9864C22F4B22E0B37C2" - } - }, - "schemaVersion": "3.0.23" -} \ No newline at end of file diff --git a/build/mainnet/ZECGateway.json b/build/mainnet/ZECGateway.json deleted file mode 100644 index 1f0e8320..00000000 --- a/build/mainnet/ZECGateway.json +++ /dev/null @@ -1,213 +0,0 @@ -{ - "contractName": "ZECGateway", - "abi": [ - { - "anonymous": false, - "inputs": [ - { - "indexed": false, - "internalType": "address", - "name": "previousAdmin", - "type": "address" - }, - { - "indexed": false, - "internalType": "address", - "name": "newAdmin", - "type": "address" - } - ], - "name": "AdminChanged", - "type": "event" - }, - { - "anonymous": false, - "inputs": [ - { - "indexed": true, - "internalType": "address", - "name": "implementation", - "type": "address" - } - ], - "name": "Upgraded", - "type": "event" - }, - { - "payable": true, - "stateMutability": "payable", - "type": "fallback" - }, - { - "constant": false, - "inputs": [], - "name": "admin", - "outputs": [ - { - "internalType": "address", - "name": "", - "type": "address" - } - ], - "payable": false, - "stateMutability": "nonpayable", - "type": "function" - }, - { - "constant": false, - "inputs": [ - { - "internalType": "address", - "name": "newAdmin", - "type": "address" - } - ], - "name": "changeAdmin", - "outputs": [], - "payable": false, - "stateMutability": "nonpayable", - "type": "function" - }, - { - "constant": false, - "inputs": [], - "name": "implementation", - "outputs": [ - { - "internalType": "address", - "name": "", - "type": "address" - } - ], - "payable": false, - "stateMutability": "nonpayable", - "type": "function" - }, - { - "constant": false, - "inputs": [ - { - "internalType": "address", - "name": "_logic", - "type": "address" - }, - { - "internalType": "address", - "name": "_admin", - "type": "address" - }, - { - "internalType": "bytes", - "name": "_data", - "type": "bytes" - } - ], - "name": "initialize", - "outputs": [], - "payable": true, - "stateMutability": "payable", - "type": "function" - }, - { - "constant": false, - "inputs": [ - { - "internalType": "address", - "name": "_logic", - "type": "address" - }, - { - "internalType": "bytes", - "name": "_data", - "type": "bytes" - } - ], - "name": "initialize", - "outputs": [], - "payable": true, - "stateMutability": "payable", - "type": "function" - }, - { - "constant": false, - "inputs": [ - { - "internalType": "address", - "name": "newImplementation", - "type": "address" - } - ], - "name": "upgradeTo", - "outputs": [], - "payable": false, - "stateMutability": "nonpayable", - "type": "function" - }, - { - "constant": false, - "inputs": [ - { - "internalType": "address", - "name": "newImplementation", - "type": "address" - }, - { - "internalType": "bytes", - "name": "data", - "type": "bytes" - } - ], - "name": "upgradeToAndCall", - "outputs": [], - "payable": true, - "stateMutability": "payable", - "type": "function" - } - ], - "sourcePath": "~/github/renproject/ren-sol/contracts/Gateway/Gateway.sol", - "compiler": { - "name": "solc", - "version": "0.5.16+commit.9c3226ce.Emscripten.clang" - }, - "networks": { - "1": { - "events": { - "0x7e644d79422f17c01e4894b5f4f588d331ebfa28653d42ae832dc59e38c9798f": { - "anonymous": false, - "inputs": [ - { - "indexed": false, - "internalType": "address", - "name": "previousAdmin", - "type": "address" - }, - { - "indexed": false, - "internalType": "address", - "name": "newAdmin", - "type": "address" - } - ], - "name": "AdminChanged", - "type": "event" - }, - "0xbc7cd75a20ee27fd9adebab32041f755214dbc6bffa90cc0225b39da2e5c2d3b": { - "anonymous": false, - "inputs": [ - { - "indexed": true, - "internalType": "address", - "name": "implementation", - "type": "address" - } - ], - "name": "Upgraded", - "type": "event" - } - }, - "links": {}, - "address": "0xc3BbD5aDb611dd74eCa6123F05B18acc886e122D" - } - }, - "schemaVersion": "3.0.23" -} \ No newline at end of file diff --git a/build/testnet/BCHGateway.json b/build/testnet/BCHGateway.json deleted file mode 100644 index 8d5fe3c7..00000000 --- a/build/testnet/BCHGateway.json +++ /dev/null @@ -1,214 +0,0 @@ -{ - "contractName": "BCHGateway", - "abi": [ - { - "anonymous": false, - "inputs": [ - { - "indexed": false, - "internalType": "address", - "name": "previousAdmin", - "type": "address" - }, - { - "indexed": false, - "internalType": "address", - "name": "newAdmin", - "type": "address" - } - ], - "name": "AdminChanged", - "type": "event" - }, - { - "anonymous": false, - "inputs": [ - { - "indexed": true, - "internalType": "address", - "name": "implementation", - "type": "address" - } - ], - "name": "Upgraded", - "type": "event" - }, - { - "payable": true, - "stateMutability": "payable", - "type": "fallback" - }, - { - "constant": false, - "inputs": [], - "name": "admin", - "outputs": [ - { - "internalType": "address", - "name": "", - "type": "address" - } - ], - "payable": false, - "stateMutability": "nonpayable", - "type": "function" - }, - { - "constant": false, - "inputs": [ - { - "internalType": "address", - "name": "newAdmin", - "type": "address" - } - ], - "name": "changeAdmin", - "outputs": [], - "payable": false, - "stateMutability": "nonpayable", - "type": "function" - }, - { - "constant": false, - "inputs": [], - "name": "implementation", - "outputs": [ - { - "internalType": "address", - "name": "", - "type": "address" - } - ], - "payable": false, - "stateMutability": "nonpayable", - "type": "function" - }, - { - "constant": false, - "inputs": [ - { - "internalType": "address", - "name": "_logic", - "type": "address" - }, - { - "internalType": "address", - "name": "_admin", - "type": "address" - }, - { - "internalType": "bytes", - "name": "_data", - "type": "bytes" - } - ], - "name": "initialize", - "outputs": [], - "payable": true, - "stateMutability": "payable", - "type": "function" - }, - { - "constant": false, - "inputs": [ - { - "internalType": "address", - "name": "_logic", - "type": "address" - }, - { - "internalType": "bytes", - "name": "_data", - "type": "bytes" - } - ], - "name": "initialize", - "outputs": [], - "payable": true, - "stateMutability": "payable", - "type": "function" - }, - { - "constant": false, - "inputs": [ - { - "internalType": "address", - "name": "newImplementation", - "type": "address" - } - ], - "name": "upgradeTo", - "outputs": [], - "payable": false, - "stateMutability": "nonpayable", - "type": "function" - }, - { - "constant": false, - "inputs": [ - { - "internalType": "address", - "name": "newImplementation", - "type": "address" - }, - { - "internalType": "bytes", - "name": "data", - "type": "bytes" - } - ], - "name": "upgradeToAndCall", - "outputs": [], - "payable": true, - "stateMutability": "payable", - "type": "function" - } - ], - "sourcePath": "~/github/renproject/ren-sol/contracts/Gateway/Gateway.sol", - "compiler": { - "name": "solc", - "version": "0.5.16+commit.9c3226ce.Emscripten.clang" - }, - "networks": { - "42": { - "events": { - "0x7e644d79422f17c01e4894b5f4f588d331ebfa28653d42ae832dc59e38c9798f": { - "anonymous": false, - "inputs": [ - { - "indexed": false, - "internalType": "address", - "name": "previousAdmin", - "type": "address" - }, - { - "indexed": false, - "internalType": "address", - "name": "newAdmin", - "type": "address" - } - ], - "name": "AdminChanged", - "type": "event" - }, - "0xbc7cd75a20ee27fd9adebab32041f755214dbc6bffa90cc0225b39da2e5c2d3b": { - "anonymous": false, - "inputs": [ - { - "indexed": true, - "internalType": "address", - "name": "implementation", - "type": "address" - } - ], - "name": "Upgraded", - "type": "event" - } - }, - "links": {}, - "address": "0x9827c8a66a2259fd926E7Fd92EA8DF7ed1D813b1", - "transactionHash": "0xa83b659cd76ae534dd59e063e2156b6db3243c006f8410600c9178d8ce767f12" - } - }, - "schemaVersion": "3.0.23" -} \ No newline at end of file diff --git a/build/testnet/BTCGateway.json b/build/testnet/BTCGateway.json deleted file mode 100644 index ec6618da..00000000 --- a/build/testnet/BTCGateway.json +++ /dev/null @@ -1,213 +0,0 @@ -{ - "contractName": "BTCGateway", - "abi": [ - { - "anonymous": false, - "inputs": [ - { - "indexed": false, - "internalType": "address", - "name": "previousAdmin", - "type": "address" - }, - { - "indexed": false, - "internalType": "address", - "name": "newAdmin", - "type": "address" - } - ], - "name": "AdminChanged", - "type": "event" - }, - { - "anonymous": false, - "inputs": [ - { - "indexed": true, - "internalType": "address", - "name": "implementation", - "type": "address" - } - ], - "name": "Upgraded", - "type": "event" - }, - { - "payable": true, - "stateMutability": "payable", - "type": "fallback" - }, - { - "constant": false, - "inputs": [], - "name": "admin", - "outputs": [ - { - "internalType": "address", - "name": "", - "type": "address" - } - ], - "payable": false, - "stateMutability": "nonpayable", - "type": "function" - }, - { - "constant": false, - "inputs": [ - { - "internalType": "address", - "name": "newAdmin", - "type": "address" - } - ], - "name": "changeAdmin", - "outputs": [], - "payable": false, - "stateMutability": "nonpayable", - "type": "function" - }, - { - "constant": false, - "inputs": [], - "name": "implementation", - "outputs": [ - { - "internalType": "address", - "name": "", - "type": "address" - } - ], - "payable": false, - "stateMutability": "nonpayable", - "type": "function" - }, - { - "constant": false, - "inputs": [ - { - "internalType": "address", - "name": "_logic", - "type": "address" - }, - { - "internalType": "address", - "name": "_admin", - "type": "address" - }, - { - "internalType": "bytes", - "name": "_data", - "type": "bytes" - } - ], - "name": "initialize", - "outputs": [], - "payable": true, - "stateMutability": "payable", - "type": "function" - }, - { - "constant": false, - "inputs": [ - { - "internalType": "address", - "name": "_logic", - "type": "address" - }, - { - "internalType": "bytes", - "name": "_data", - "type": "bytes" - } - ], - "name": "initialize", - "outputs": [], - "payable": true, - "stateMutability": "payable", - "type": "function" - }, - { - "constant": false, - "inputs": [ - { - "internalType": "address", - "name": "newImplementation", - "type": "address" - } - ], - "name": "upgradeTo", - "outputs": [], - "payable": false, - "stateMutability": "nonpayable", - "type": "function" - }, - { - "constant": false, - "inputs": [ - { - "internalType": "address", - "name": "newImplementation", - "type": "address" - }, - { - "internalType": "bytes", - "name": "data", - "type": "bytes" - } - ], - "name": "upgradeToAndCall", - "outputs": [], - "payable": true, - "stateMutability": "payable", - "type": "function" - } - ], - "sourcePath": "~/github/renproject/ren-sol/contracts/Gateway/Gateway.sol", - "compiler": { - "name": "solc", - "version": "0.5.16+commit.9c3226ce.Emscripten.clang" - }, - "networks": { - "42": { - "events": { - "0x7e644d79422f17c01e4894b5f4f588d331ebfa28653d42ae832dc59e38c9798f": { - "anonymous": false, - "inputs": [ - { - "indexed": false, - "internalType": "address", - "name": "previousAdmin", - "type": "address" - }, - { - "indexed": false, - "internalType": "address", - "name": "newAdmin", - "type": "address" - } - ], - "name": "AdminChanged", - "type": "event" - }, - "0xbc7cd75a20ee27fd9adebab32041f755214dbc6bffa90cc0225b39da2e5c2d3b": { - "anonymous": false, - "inputs": [ - { - "indexed": true, - "internalType": "address", - "name": "implementation", - "type": "address" - } - ], - "name": "Upgraded", - "type": "event" - } - }, - "links": {}, - "address": "0x55363c0dBf97Ff9C0e31dAfe0fC99d3e9ce50b8A" - } - }, - "schemaVersion": "3.0.23" -} \ No newline at end of file diff --git a/build/testnet/BasicAdapter.json b/build/testnet/BasicAdapter.json deleted file mode 100644 index cb241392..00000000 --- a/build/testnet/BasicAdapter.json +++ /dev/null @@ -1,294 +0,0 @@ -{ - "contractName": "BasicAdapter", - "abi": [ - { - "inputs": [ - { - "internalType": "contract IGatewayRegistry", - "name": "_registry", - "type": "address" - } - ], - "payable": false, - "stateMutability": "nonpayable", - "type": "constructor" - }, - { - "anonymous": false, - "inputs": [ - { - "indexed": true, - "internalType": "address", - "name": "oldRelayHub", - "type": "address" - }, - { - "indexed": true, - "internalType": "address", - "name": "newRelayHub", - "type": "address" - } - ], - "name": "RelayHubChanged", - "type": "event" - }, - { - "constant": true, - "inputs": [ - { - "internalType": "address", - "name": "relay", - "type": "address" - }, - { - "internalType": "address", - "name": "from", - "type": "address" - }, - { - "internalType": "bytes", - "name": "encodedFunction", - "type": "bytes" - }, - { - "internalType": "uint256", - "name": "transactionFee", - "type": "uint256" - }, - { - "internalType": "uint256", - "name": "gasPrice", - "type": "uint256" - }, - { - "internalType": "uint256", - "name": "gasLimit", - "type": "uint256" - }, - { - "internalType": "uint256", - "name": "nonce", - "type": "uint256" - }, - { - "internalType": "bytes", - "name": "approvalData", - "type": "bytes" - }, - { - "internalType": "uint256", - "name": "maxPossibleCharge", - "type": "uint256" - } - ], - "name": "acceptRelayedCall", - "outputs": [ - { - "internalType": "uint256", - "name": "", - "type": "uint256" - }, - { - "internalType": "bytes", - "name": "", - "type": "bytes" - } - ], - "payable": false, - "stateMutability": "view", - "type": "function" - }, - { - "constant": false, - "inputs": [ - { - "internalType": "string", - "name": "_symbol", - "type": "string" - }, - { - "internalType": "bytes", - "name": "_to", - "type": "bytes" - }, - { - "internalType": "uint256", - "name": "_amount", - "type": "uint256" - } - ], - "name": "burn", - "outputs": [], - "payable": false, - "stateMutability": "nonpayable", - "type": "function" - }, - { - "constant": true, - "inputs": [], - "name": "getHubAddr", - "outputs": [ - { - "internalType": "address", - "name": "", - "type": "address" - } - ], - "payable": false, - "stateMutability": "view", - "type": "function" - }, - { - "constant": false, - "inputs": [], - "name": "initialize", - "outputs": [], - "payable": false, - "stateMutability": "nonpayable", - "type": "function" - }, - { - "constant": false, - "inputs": [ - { - "internalType": "string", - "name": "_symbol", - "type": "string" - }, - { - "internalType": "address", - "name": "_recipient", - "type": "address" - }, - { - "internalType": "uint256", - "name": "_amount", - "type": "uint256" - }, - { - "internalType": "bytes32", - "name": "_nHash", - "type": "bytes32" - }, - { - "internalType": "bytes", - "name": "_sig", - "type": "bytes" - } - ], - "name": "mint", - "outputs": [], - "payable": false, - "stateMutability": "nonpayable", - "type": "function" - }, - { - "constant": false, - "inputs": [ - { - "internalType": "bytes", - "name": "context", - "type": "bytes" - }, - { - "internalType": "bool", - "name": "success", - "type": "bool" - }, - { - "internalType": "uint256", - "name": "actualCharge", - "type": "uint256" - }, - { - "internalType": "bytes32", - "name": "preRetVal", - "type": "bytes32" - } - ], - "name": "postRelayedCall", - "outputs": [], - "payable": false, - "stateMutability": "nonpayable", - "type": "function" - }, - { - "constant": false, - "inputs": [ - { - "internalType": "bytes", - "name": "context", - "type": "bytes" - } - ], - "name": "preRelayedCall", - "outputs": [ - { - "internalType": "bytes32", - "name": "", - "type": "bytes32" - } - ], - "payable": false, - "stateMutability": "nonpayable", - "type": "function" - }, - { - "constant": true, - "inputs": [], - "name": "relayHubVersion", - "outputs": [ - { - "internalType": "string", - "name": "", - "type": "string" - } - ], - "payable": false, - "stateMutability": "view", - "type": "function" - }, - { - "constant": false, - "inputs": [], - "name": "setDefaultRelayHub", - "outputs": [], - "payable": false, - "stateMutability": "nonpayable", - "type": "function" - } - ], - "sourcePath": "~/github/renproject/ren-sol/contracts/Gateway/adapters/BasicAdapter.sol", - "compiler": { - "name": "solc", - "version": "0.5.16+commit.9c3226ce.Emscripten.clang" - }, - "networks": { - "42": { - "events": { - "0xb9f84b8e65164b14439ae3620df0a4d8786d896996c0282b683f9d8c08f046e8": { - "anonymous": false, - "inputs": [ - { - "indexed": true, - "internalType": "address", - "name": "oldRelayHub", - "type": "address" - }, - { - "indexed": true, - "internalType": "address", - "name": "newRelayHub", - "type": "address" - } - ], - "name": "RelayHubChanged", - "type": "event" - } - }, - "links": {}, - "address": "0x7DDFA2e5435027f6e13Ca8Db2f32ebd5551158Bb" - } - }, - "schemaVersion": "3.0.23" -} \ No newline at end of file diff --git a/build/testnet/DarknodePayment.json b/build/testnet/DarknodePayment.json deleted file mode 100644 index 4f0ac38b..00000000 --- a/build/testnet/DarknodePayment.json +++ /dev/null @@ -1,1052 +0,0 @@ -{ - "contractName": "DarknodePayment", - "abi": [ - { - "inputs": [ - { - "internalType": "string", - "name": "_VERSION", - "type": "string" - }, - { - "internalType": "contract DarknodeRegistryLogicV1", - "name": "_darknodeRegistry", - "type": "address" - }, - { - "internalType": "contract DarknodePaymentStore", - "name": "_darknodePaymentStore", - "type": "address" - }, - { - "internalType": "uint256", - "name": "_cyclePayoutPercent", - "type": "uint256" - } - ], - "payable": false, - "stateMutability": "nonpayable", - "type": "constructor" - }, - { - "anonymous": false, - "inputs": [ - { - "indexed": true, - "internalType": "address", - "name": "_newCycleChanger", - "type": "address" - }, - { - "indexed": true, - "internalType": "address", - "name": "_oldCycleChanger", - "type": "address" - } - ], - "name": "LogCycleChangerChanged", - "type": "event" - }, - { - "anonymous": false, - "inputs": [ - { - "indexed": true, - "internalType": "address", - "name": "_darknode", - "type": "address" - }, - { - "indexed": false, - "internalType": "uint256", - "name": "_cycle", - "type": "uint256" - } - ], - "name": "LogDarknodeClaim", - "type": "event" - }, - { - "anonymous": false, - "inputs": [ - { - "indexed": true, - "internalType": "contract DarknodeRegistryLogicV1", - "name": "_previousDarknodeRegistry", - "type": "address" - }, - { - "indexed": true, - "internalType": "contract DarknodeRegistryLogicV1", - "name": "_nextDarknodeRegistry", - "type": "address" - } - ], - "name": "LogDarknodeRegistryUpdated", - "type": "event" - }, - { - "anonymous": false, - "inputs": [ - { - "indexed": true, - "internalType": "address", - "name": "_darknodeOperator", - "type": "address" - }, - { - "indexed": true, - "internalType": "address", - "name": "_darknodeID", - "type": "address" - }, - { - "indexed": true, - "internalType": "address", - "name": "_token", - "type": "address" - }, - { - "indexed": false, - "internalType": "uint256", - "name": "_value", - "type": "uint256" - } - ], - "name": "LogDarknodeWithdrew", - "type": "event" - }, - { - "anonymous": false, - "inputs": [ - { - "indexed": true, - "internalType": "address", - "name": "_payer", - "type": "address" - }, - { - "indexed": true, - "internalType": "address", - "name": "_token", - "type": "address" - }, - { - "indexed": false, - "internalType": "uint256", - "name": "_amount", - "type": "uint256" - } - ], - "name": "LogPaymentReceived", - "type": "event" - }, - { - "anonymous": false, - "inputs": [ - { - "indexed": false, - "internalType": "uint256", - "name": "_newPercent", - "type": "uint256" - }, - { - "indexed": false, - "internalType": "uint256", - "name": "_oldPercent", - "type": "uint256" - } - ], - "name": "LogPayoutPercentChanged", - "type": "event" - }, - { - "anonymous": false, - "inputs": [ - { - "indexed": true, - "internalType": "address", - "name": "_token", - "type": "address" - } - ], - "name": "LogTokenDeregistered", - "type": "event" - }, - { - "anonymous": false, - "inputs": [ - { - "indexed": true, - "internalType": "address", - "name": "_token", - "type": "address" - } - ], - "name": "LogTokenRegistered", - "type": "event" - }, - { - "anonymous": false, - "inputs": [ - { - "indexed": true, - "internalType": "address", - "name": "previousOwner", - "type": "address" - }, - { - "indexed": true, - "internalType": "address", - "name": "newOwner", - "type": "address" - } - ], - "name": "OwnershipTransferred", - "type": "event" - }, - { - "payable": true, - "stateMutability": "payable", - "type": "fallback" - }, - { - "constant": true, - "inputs": [], - "name": "ETHEREUM", - "outputs": [ - { - "internalType": "address", - "name": "", - "type": "address" - } - ], - "payable": false, - "stateMutability": "view", - "type": "function" - }, - { - "constant": true, - "inputs": [], - "name": "VERSION", - "outputs": [ - { - "internalType": "string", - "name": "", - "type": "string" - } - ], - "payable": false, - "stateMutability": "view", - "type": "function" - }, - { - "constant": false, - "inputs": [], - "name": "changeCycle", - "outputs": [ - { - "internalType": "uint256", - "name": "", - "type": "uint256" - } - ], - "payable": false, - "stateMutability": "nonpayable", - "type": "function" - }, - { - "constant": false, - "inputs": [ - { - "internalType": "address", - "name": "_darknode", - "type": "address" - } - ], - "name": "claim", - "outputs": [], - "payable": false, - "stateMutability": "nonpayable", - "type": "function" - }, - { - "constant": false, - "inputs": [], - "name": "claimOwnership", - "outputs": [], - "payable": false, - "stateMutability": "nonpayable", - "type": "function" - }, - { - "constant": false, - "inputs": [], - "name": "claimStoreOwnership", - "outputs": [], - "payable": false, - "stateMutability": "nonpayable", - "type": "function" - }, - { - "constant": true, - "inputs": [], - "name": "currentCycle", - "outputs": [ - { - "internalType": "uint256", - "name": "", - "type": "uint256" - } - ], - "payable": false, - "stateMutability": "view", - "type": "function" - }, - { - "constant": true, - "inputs": [], - "name": "currentCyclePayoutPercent", - "outputs": [ - { - "internalType": "uint256", - "name": "", - "type": "uint256" - } - ], - "payable": false, - "stateMutability": "view", - "type": "function" - }, - { - "constant": true, - "inputs": [ - { - "internalType": "address", - "name": "_token", - "type": "address" - } - ], - "name": "currentCycleRewardPool", - "outputs": [ - { - "internalType": "uint256", - "name": "", - "type": "uint256" - } - ], - "payable": false, - "stateMutability": "view", - "type": "function" - }, - { - "constant": true, - "inputs": [], - "name": "cycleChanger", - "outputs": [ - { - "internalType": "address", - "name": "", - "type": "address" - } - ], - "payable": false, - "stateMutability": "view", - "type": "function" - }, - { - "constant": true, - "inputs": [], - "name": "cycleStartTime", - "outputs": [ - { - "internalType": "uint256", - "name": "", - "type": "uint256" - } - ], - "payable": false, - "stateMutability": "view", - "type": "function" - }, - { - "constant": true, - "inputs": [ - { - "internalType": "address", - "name": "_darknodeID", - "type": "address" - }, - { - "internalType": "address", - "name": "_token", - "type": "address" - } - ], - "name": "darknodeBalances", - "outputs": [ - { - "internalType": "uint256", - "name": "", - "type": "uint256" - } - ], - "payable": false, - "stateMutability": "view", - "type": "function" - }, - { - "constant": true, - "inputs": [], - "name": "darknodeRegistry", - "outputs": [ - { - "internalType": "contract DarknodeRegistryLogicV1", - "name": "", - "type": "address" - } - ], - "payable": false, - "stateMutability": "view", - "type": "function" - }, - { - "constant": false, - "inputs": [ - { - "internalType": "uint256", - "name": "_value", - "type": "uint256" - }, - { - "internalType": "address", - "name": "_token", - "type": "address" - } - ], - "name": "deposit", - "outputs": [], - "payable": true, - "stateMutability": "payable", - "type": "function" - }, - { - "constant": false, - "inputs": [ - { - "internalType": "address", - "name": "_token", - "type": "address" - } - ], - "name": "deregisterToken", - "outputs": [], - "payable": false, - "stateMutability": "nonpayable", - "type": "function" - }, - { - "constant": false, - "inputs": [ - { - "internalType": "address", - "name": "_token", - "type": "address" - } - ], - "name": "forward", - "outputs": [], - "payable": false, - "stateMutability": "nonpayable", - "type": "function" - }, - { - "constant": false, - "inputs": [ - { - "internalType": "address", - "name": "_nextOwner", - "type": "address" - } - ], - "name": "initialize", - "outputs": [], - "payable": false, - "stateMutability": "nonpayable", - "type": "function" - }, - { - "constant": true, - "inputs": [], - "name": "isOwner", - "outputs": [ - { - "internalType": "bool", - "name": "", - "type": "bool" - } - ], - "payable": false, - "stateMutability": "view", - "type": "function" - }, - { - "constant": true, - "inputs": [], - "name": "nextCyclePayoutPercent", - "outputs": [ - { - "internalType": "uint256", - "name": "", - "type": "uint256" - } - ], - "payable": false, - "stateMutability": "view", - "type": "function" - }, - { - "constant": true, - "inputs": [], - "name": "owner", - "outputs": [ - { - "internalType": "address", - "name": "", - "type": "address" - } - ], - "payable": false, - "stateMutability": "view", - "type": "function" - }, - { - "constant": true, - "inputs": [], - "name": "pendingOwner", - "outputs": [ - { - "internalType": "address", - "name": "", - "type": "address" - } - ], - "payable": false, - "stateMutability": "view", - "type": "function" - }, - { - "constant": true, - "inputs": [ - { - "internalType": "uint256", - "name": "", - "type": "uint256" - } - ], - "name": "pendingTokens", - "outputs": [ - { - "internalType": "address", - "name": "", - "type": "address" - } - ], - "payable": false, - "stateMutability": "view", - "type": "function" - }, - { - "constant": true, - "inputs": [], - "name": "previousCycle", - "outputs": [ - { - "internalType": "uint256", - "name": "", - "type": "uint256" - } - ], - "payable": false, - "stateMutability": "view", - "type": "function" - }, - { - "constant": true, - "inputs": [ - { - "internalType": "address", - "name": "", - "type": "address" - } - ], - "name": "previousCycleRewardShare", - "outputs": [ - { - "internalType": "uint256", - "name": "", - "type": "uint256" - } - ], - "payable": false, - "stateMutability": "view", - "type": "function" - }, - { - "constant": false, - "inputs": [ - { - "internalType": "address", - "name": "_token", - "type": "address" - } - ], - "name": "registerToken", - "outputs": [], - "payable": false, - "stateMutability": "nonpayable", - "type": "function" - }, - { - "constant": true, - "inputs": [ - { - "internalType": "address", - "name": "", - "type": "address" - } - ], - "name": "registeredTokenIndex", - "outputs": [ - { - "internalType": "uint256", - "name": "", - "type": "uint256" - } - ], - "payable": false, - "stateMutability": "view", - "type": "function" - }, - { - "constant": true, - "inputs": [ - { - "internalType": "uint256", - "name": "", - "type": "uint256" - } - ], - "name": "registeredTokens", - "outputs": [ - { - "internalType": "address", - "name": "", - "type": "address" - } - ], - "payable": false, - "stateMutability": "view", - "type": "function" - }, - { - "constant": false, - "inputs": [], - "name": "renounceOwnership", - "outputs": [], - "payable": false, - "stateMutability": "nonpayable", - "type": "function" - }, - { - "constant": true, - "inputs": [ - { - "internalType": "address", - "name": "", - "type": "address" - }, - { - "internalType": "uint256", - "name": "", - "type": "uint256" - } - ], - "name": "rewardClaimed", - "outputs": [ - { - "internalType": "bool", - "name": "", - "type": "bool" - } - ], - "payable": false, - "stateMutability": "view", - "type": "function" - }, - { - "constant": true, - "inputs": [], - "name": "store", - "outputs": [ - { - "internalType": "contract DarknodePaymentStore", - "name": "", - "type": "address" - } - ], - "payable": false, - "stateMutability": "view", - "type": "function" - }, - { - "constant": true, - "inputs": [ - { - "internalType": "address", - "name": "_token", - "type": "address" - } - ], - "name": "tokenPendingRegistration", - "outputs": [ - { - "internalType": "bool", - "name": "", - "type": "bool" - } - ], - "payable": false, - "stateMutability": "view", - "type": "function" - }, - { - "constant": false, - "inputs": [ - { - "internalType": "address", - "name": "newOwner", - "type": "address" - } - ], - "name": "transferOwnership", - "outputs": [], - "payable": false, - "stateMutability": "nonpayable", - "type": "function" - }, - { - "constant": false, - "inputs": [ - { - "internalType": "contract DarknodePayment", - "name": "_newOwner", - "type": "address" - } - ], - "name": "transferStoreOwnership", - "outputs": [], - "payable": false, - "stateMutability": "nonpayable", - "type": "function" - }, - { - "constant": true, - "inputs": [ - { - "internalType": "address", - "name": "", - "type": "address" - } - ], - "name": "unclaimedRewards", - "outputs": [ - { - "internalType": "uint256", - "name": "", - "type": "uint256" - } - ], - "payable": false, - "stateMutability": "view", - "type": "function" - }, - { - "constant": false, - "inputs": [ - { - "internalType": "address", - "name": "_addr", - "type": "address" - } - ], - "name": "updateCycleChanger", - "outputs": [], - "payable": false, - "stateMutability": "nonpayable", - "type": "function" - }, - { - "constant": false, - "inputs": [ - { - "internalType": "contract DarknodeRegistryLogicV1", - "name": "_darknodeRegistry", - "type": "address" - } - ], - "name": "updateDarknodeRegistry", - "outputs": [], - "payable": false, - "stateMutability": "nonpayable", - "type": "function" - }, - { - "constant": false, - "inputs": [ - { - "internalType": "uint256", - "name": "_percent", - "type": "uint256" - } - ], - "name": "updatePayoutPercentage", - "outputs": [], - "payable": false, - "stateMutability": "nonpayable", - "type": "function" - }, - { - "constant": false, - "inputs": [ - { - "internalType": "address", - "name": "_darknode", - "type": "address" - }, - { - "internalType": "address", - "name": "_token", - "type": "address" - } - ], - "name": "withdraw", - "outputs": [], - "payable": false, - "stateMutability": "nonpayable", - "type": "function" - }, - { - "constant": false, - "inputs": [ - { - "internalType": "address[]", - "name": "_darknodes", - "type": "address[]" - }, - { - "internalType": "address[]", - "name": "_tokens", - "type": "address[]" - } - ], - "name": "withdrawMultiple", - "outputs": [], - "payable": false, - "stateMutability": "nonpayable", - "type": "function" - } - ], - "sourcePath": "~/github/renproject/ren-sol/contracts/DarknodePayment/DarknodePayment.sol", - "compiler": { - "name": "solc", - "version": "0.5.16+commit.9c3226ce.Emscripten.clang" - }, - "networks": { - "42": { - "events": { - "0x9d549c7da0887b9da28aa4897e17429f78345be76b1918673be3430462a4d130": { - "anonymous": false, - "inputs": [ - { - "indexed": true, - "internalType": "address", - "name": "_newCycleChanger", - "type": "address" - }, - { - "indexed": true, - "internalType": "address", - "name": "_oldCycleChanger", - "type": "address" - } - ], - "name": "LogCycleChangerChanged", - "type": "event" - }, - "0x99c5ad5c5f898b30039b8cc54b8c0e6eb423e49bfc965a5999ebad131984e40d": { - "anonymous": false, - "inputs": [ - { - "indexed": true, - "internalType": "address", - "name": "_darknode", - "type": "address" - }, - { - "indexed": false, - "internalType": "uint256", - "name": "_cycle", - "type": "uint256" - } - ], - "name": "LogDarknodeClaim", - "type": "event" - }, - "0xf9f6dd5c784f63cc27c1079c73574a73485a6c2e7f7e2181c5eb2be8c693cfb7": { - "anonymous": false, - "inputs": [ - { - "indexed": true, - "internalType": "contract DarknodeRegistryLogicV1", - "name": "_previousDarknodeRegistry", - "type": "address" - }, - { - "indexed": true, - "internalType": "contract DarknodeRegistryLogicV1", - "name": "_nextDarknodeRegistry", - "type": "address" - } - ], - "name": "LogDarknodeRegistryUpdated", - "type": "event" - }, - "0xd390ef311a884ffc07fe929afa495d106c89041c9b8a73abd2e4f23d6c9c05c0": { - "anonymous": false, - "inputs": [ - { - "indexed": true, - "internalType": "address", - "name": "_darknodeOperator", - "type": "address" - }, - { - "indexed": true, - "internalType": "address", - "name": "_darknodeID", - "type": "address" - }, - { - "indexed": true, - "internalType": "address", - "name": "_token", - "type": "address" - }, - { - "indexed": false, - "internalType": "uint256", - "name": "_value", - "type": "uint256" - } - ], - "name": "LogDarknodeWithdrew", - "type": "event" - }, - "0x5f5d9f6f8b84a834e704e76b91a16ddc49abe97d37d6e61572febf8f1b56f7ce": { - "anonymous": false, - "inputs": [ - { - "indexed": true, - "internalType": "address", - "name": "_payer", - "type": "address" - }, - { - "indexed": true, - "internalType": "address", - "name": "_token", - "type": "address" - }, - { - "indexed": false, - "internalType": "uint256", - "name": "_amount", - "type": "uint256" - } - ], - "name": "LogPaymentReceived", - "type": "event" - }, - "0x0855549798088e618c4eccab56d3fa69209935ef7bc4ffe7200dff654d975643": { - "anonymous": false, - "inputs": [ - { - "indexed": false, - "internalType": "uint256", - "name": "_newPercent", - "type": "uint256" - }, - { - "indexed": false, - "internalType": "uint256", - "name": "_oldPercent", - "type": "uint256" - } - ], - "name": "LogPayoutPercentChanged", - "type": "event" - }, - "0xe46f21bb6906b7d69a6c06d5662a2b6c1c59d134cd7b1235babdb1a70a4b436a": { - "anonymous": false, - "inputs": [ - { - "indexed": true, - "internalType": "address", - "name": "_token", - "type": "address" - } - ], - "name": "LogTokenDeregistered", - "type": "event" - }, - "0xd780ddbc43f0c4efd61c5ca1bc8eeee3368abfb1f97aa7355da9f8bf8431c8ae": { - "anonymous": false, - "inputs": [ - { - "indexed": true, - "internalType": "address", - "name": "_token", - "type": "address" - } - ], - "name": "LogTokenRegistered", - "type": "event" - }, - "0x8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0": { - "anonymous": false, - "inputs": [ - { - "indexed": true, - "internalType": "address", - "name": "previousOwner", - "type": "address" - }, - { - "indexed": true, - "internalType": "address", - "name": "newOwner", - "type": "address" - } - ], - "name": "OwnershipTransferred", - "type": "event" - } - }, - "links": {}, - "address": "0x023f2e94C3eb128D3bFa6317a3fF860BF93C1616", - "transactionHash": "0x9617ee1c99a4dfb22f8e4242d0f5b5e3d17b8aa6ff212564051bce855d49ae83" - } - }, - "schemaVersion": "3.0.23" -} \ No newline at end of file diff --git a/build/testnet/DarknodePaymentStore.json b/build/testnet/DarknodePaymentStore.json deleted file mode 100644 index 36d7fa2a..00000000 --- a/build/testnet/DarknodePaymentStore.json +++ /dev/null @@ -1,342 +0,0 @@ -{ - "contractName": "DarknodePaymentStore", - "abi": [ - { - "inputs": [ - { - "internalType": "string", - "name": "_VERSION", - "type": "string" - } - ], - "payable": false, - "stateMutability": "nonpayable", - "type": "constructor" - }, - { - "anonymous": false, - "inputs": [ - { - "indexed": true, - "internalType": "address", - "name": "previousOwner", - "type": "address" - }, - { - "indexed": true, - "internalType": "address", - "name": "newOwner", - "type": "address" - } - ], - "name": "OwnershipTransferred", - "type": "event" - }, - { - "payable": true, - "stateMutability": "payable", - "type": "fallback" - }, - { - "constant": true, - "inputs": [], - "name": "ETHEREUM", - "outputs": [ - { - "internalType": "address", - "name": "", - "type": "address" - } - ], - "payable": false, - "stateMutability": "view", - "type": "function" - }, - { - "constant": true, - "inputs": [], - "name": "VERSION", - "outputs": [ - { - "internalType": "string", - "name": "", - "type": "string" - } - ], - "payable": false, - "stateMutability": "view", - "type": "function" - }, - { - "constant": true, - "inputs": [ - { - "internalType": "address", - "name": "_token", - "type": "address" - } - ], - "name": "availableBalance", - "outputs": [ - { - "internalType": "uint256", - "name": "", - "type": "uint256" - } - ], - "payable": false, - "stateMutability": "view", - "type": "function" - }, - { - "constant": false, - "inputs": [], - "name": "claimOwnership", - "outputs": [], - "payable": false, - "stateMutability": "nonpayable", - "type": "function" - }, - { - "constant": true, - "inputs": [ - { - "internalType": "address", - "name": "", - "type": "address" - }, - { - "internalType": "address", - "name": "", - "type": "address" - } - ], - "name": "darknodeBalances", - "outputs": [ - { - "internalType": "uint256", - "name": "", - "type": "uint256" - } - ], - "payable": false, - "stateMutability": "view", - "type": "function" - }, - { - "constant": false, - "inputs": [ - { - "internalType": "address", - "name": "_darknode", - "type": "address" - }, - { - "internalType": "address", - "name": "_token", - "type": "address" - }, - { - "internalType": "uint256", - "name": "_amount", - "type": "uint256" - } - ], - "name": "incrementDarknodeBalance", - "outputs": [], - "payable": false, - "stateMutability": "nonpayable", - "type": "function" - }, - { - "constant": false, - "inputs": [ - { - "internalType": "address", - "name": "_nextOwner", - "type": "address" - } - ], - "name": "initialize", - "outputs": [], - "payable": false, - "stateMutability": "nonpayable", - "type": "function" - }, - { - "constant": true, - "inputs": [], - "name": "isOwner", - "outputs": [ - { - "internalType": "bool", - "name": "", - "type": "bool" - } - ], - "payable": false, - "stateMutability": "view", - "type": "function" - }, - { - "constant": true, - "inputs": [ - { - "internalType": "address", - "name": "", - "type": "address" - } - ], - "name": "lockedBalances", - "outputs": [ - { - "internalType": "uint256", - "name": "", - "type": "uint256" - } - ], - "payable": false, - "stateMutability": "view", - "type": "function" - }, - { - "constant": true, - "inputs": [], - "name": "owner", - "outputs": [ - { - "internalType": "address", - "name": "", - "type": "address" - } - ], - "payable": false, - "stateMutability": "view", - "type": "function" - }, - { - "constant": true, - "inputs": [], - "name": "pendingOwner", - "outputs": [ - { - "internalType": "address", - "name": "", - "type": "address" - } - ], - "payable": false, - "stateMutability": "view", - "type": "function" - }, - { - "constant": false, - "inputs": [], - "name": "renounceOwnership", - "outputs": [], - "payable": false, - "stateMutability": "nonpayable", - "type": "function" - }, - { - "constant": true, - "inputs": [ - { - "internalType": "address", - "name": "_token", - "type": "address" - } - ], - "name": "totalBalance", - "outputs": [ - { - "internalType": "uint256", - "name": "", - "type": "uint256" - } - ], - "payable": false, - "stateMutability": "view", - "type": "function" - }, - { - "constant": false, - "inputs": [ - { - "internalType": "address", - "name": "_darknode", - "type": "address" - }, - { - "internalType": "address", - "name": "_token", - "type": "address" - }, - { - "internalType": "uint256", - "name": "_amount", - "type": "uint256" - }, - { - "internalType": "address payable", - "name": "_recipient", - "type": "address" - } - ], - "name": "transfer", - "outputs": [], - "payable": false, - "stateMutability": "nonpayable", - "type": "function" - }, - { - "constant": false, - "inputs": [ - { - "internalType": "address", - "name": "newOwner", - "type": "address" - } - ], - "name": "transferOwnership", - "outputs": [], - "payable": false, - "stateMutability": "nonpayable", - "type": "function" - } - ], - "sourcePath": "~/github/renproject/ren-sol/contracts/DarknodePayment/DarknodePaymentStore.sol", - "compiler": { - "name": "solc", - "version": "0.5.16+commit.9c3226ce.Emscripten.clang" - }, - "networks": { - "42": { - "events": { - "0x8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0": { - "anonymous": false, - "inputs": [ - { - "indexed": true, - "internalType": "address", - "name": "previousOwner", - "type": "address" - }, - { - "indexed": true, - "internalType": "address", - "name": "newOwner", - "type": "address" - } - ], - "name": "OwnershipTransferred", - "type": "event" - } - }, - "links": {}, - "address": "0x0EC73cCDCd8e643d909D0c4b663Eb1B2Fb0b1e1C", - "transactionHash": "0x40434a705a19dcee892f8f7ba35b2a161745040a51ec67d366279ed19ff55088" - } - }, - "schemaVersion": "3.0.23" -} \ No newline at end of file diff --git a/build/testnet/DarknodeRegistryLogicV1.json b/build/testnet/DarknodeRegistryLogicV1.json deleted file mode 100644 index 42eccfb8..00000000 --- a/build/testnet/DarknodeRegistryLogicV1.json +++ /dev/null @@ -1,1388 +0,0 @@ -{ - "contractName": "DarknodeRegistryLogicV1", - "abi": [ - { - "anonymous": false, - "inputs": [ - { - "indexed": true, - "internalType": "address", - "name": "_darknodeOperator", - "type": "address" - }, - { - "indexed": true, - "internalType": "address", - "name": "_darknodeID", - "type": "address" - } - ], - "name": "LogDarknodeDeregistered", - "type": "event" - }, - { - "anonymous": false, - "inputs": [ - { - "indexed": true, - "internalType": "contract IDarknodePayment", - "name": "_previousDarknodePayment", - "type": "address" - }, - { - "indexed": true, - "internalType": "contract IDarknodePayment", - "name": "_nextDarknodePayment", - "type": "address" - } - ], - "name": "LogDarknodePaymentUpdated", - "type": "event" - }, - { - "anonymous": false, - "inputs": [ - { - "indexed": true, - "internalType": "address", - "name": "_darknodeOperator", - "type": "address" - }, - { - "indexed": true, - "internalType": "address", - "name": "_darknodeID", - "type": "address" - }, - { - "indexed": false, - "internalType": "uint256", - "name": "_amount", - "type": "uint256" - } - ], - "name": "LogDarknodeRefunded", - "type": "event" - }, - { - "anonymous": false, - "inputs": [ - { - "indexed": true, - "internalType": "address", - "name": "_darknodeOperator", - "type": "address" - }, - { - "indexed": true, - "internalType": "address", - "name": "_darknodeID", - "type": "address" - }, - { - "indexed": false, - "internalType": "uint256", - "name": "_bond", - "type": "uint256" - } - ], - "name": "LogDarknodeRegistered", - "type": "event" - }, - { - "anonymous": false, - "inputs": [ - { - "indexed": true, - "internalType": "address", - "name": "_darknodeOperator", - "type": "address" - }, - { - "indexed": true, - "internalType": "address", - "name": "_darknodeID", - "type": "address" - }, - { - "indexed": true, - "internalType": "address", - "name": "_challenger", - "type": "address" - }, - { - "indexed": false, - "internalType": "uint256", - "name": "_percentage", - "type": "uint256" - } - ], - "name": "LogDarknodeSlashed", - "type": "event" - }, - { - "anonymous": false, - "inputs": [ - { - "indexed": false, - "internalType": "uint256", - "name": "_previousMinimumBond", - "type": "uint256" - }, - { - "indexed": false, - "internalType": "uint256", - "name": "_nextMinimumBond", - "type": "uint256" - } - ], - "name": "LogMinimumBondUpdated", - "type": "event" - }, - { - "anonymous": false, - "inputs": [ - { - "indexed": false, - "internalType": "uint256", - "name": "_previousMinimumEpochInterval", - "type": "uint256" - }, - { - "indexed": false, - "internalType": "uint256", - "name": "_nextMinimumEpochInterval", - "type": "uint256" - } - ], - "name": "LogMinimumEpochIntervalUpdated", - "type": "event" - }, - { - "anonymous": false, - "inputs": [ - { - "indexed": false, - "internalType": "uint256", - "name": "_previousMinimumPodSize", - "type": "uint256" - }, - { - "indexed": false, - "internalType": "uint256", - "name": "_nextMinimumPodSize", - "type": "uint256" - } - ], - "name": "LogMinimumPodSizeUpdated", - "type": "event" - }, - { - "anonymous": false, - "inputs": [ - { - "indexed": true, - "internalType": "uint256", - "name": "epochhash", - "type": "uint256" - } - ], - "name": "LogNewEpoch", - "type": "event" - }, - { - "anonymous": false, - "inputs": [ - { - "indexed": true, - "internalType": "address", - "name": "_previousSlasher", - "type": "address" - }, - { - "indexed": true, - "internalType": "address", - "name": "_nextSlasher", - "type": "address" - } - ], - "name": "LogSlasherUpdated", - "type": "event" - }, - { - "anonymous": false, - "inputs": [ - { - "indexed": true, - "internalType": "address", - "name": "previousOwner", - "type": "address" - }, - { - "indexed": true, - "internalType": "address", - "name": "newOwner", - "type": "address" - } - ], - "name": "OwnershipTransferred", - "type": "event" - }, - { - "constant": true, - "inputs": [], - "name": "VERSION", - "outputs": [ - { - "internalType": "string", - "name": "", - "type": "string" - } - ], - "payable": false, - "stateMutability": "view", - "type": "function" - }, - { - "constant": false, - "inputs": [ - { - "internalType": "address", - "name": "_token", - "type": "address" - } - ], - "name": "blacklistRecoverableToken", - "outputs": [], - "payable": false, - "stateMutability": "nonpayable", - "type": "function" - }, - { - "constant": false, - "inputs": [], - "name": "claimOwnership", - "outputs": [], - "payable": false, - "stateMutability": "nonpayable", - "type": "function" - }, - { - "constant": false, - "inputs": [], - "name": "claimStoreOwnership", - "outputs": [], - "payable": false, - "stateMutability": "nonpayable", - "type": "function" - }, - { - "constant": true, - "inputs": [], - "name": "currentEpoch", - "outputs": [ - { - "internalType": "uint256", - "name": "epochhash", - "type": "uint256" - }, - { - "internalType": "uint256", - "name": "blocktime", - "type": "uint256" - } - ], - "payable": false, - "stateMutability": "view", - "type": "function" - }, - { - "constant": true, - "inputs": [], - "name": "darknodePayment", - "outputs": [ - { - "internalType": "contract IDarknodePayment", - "name": "", - "type": "address" - } - ], - "payable": false, - "stateMutability": "view", - "type": "function" - }, - { - "constant": false, - "inputs": [ - { - "internalType": "address", - "name": "_darknodeID", - "type": "address" - } - ], - "name": "deregister", - "outputs": [], - "payable": false, - "stateMutability": "nonpayable", - "type": "function" - }, - { - "constant": true, - "inputs": [], - "name": "deregistrationInterval", - "outputs": [ - { - "internalType": "uint256", - "name": "", - "type": "uint256" - } - ], - "payable": false, - "stateMutability": "view", - "type": "function" - }, - { - "constant": false, - "inputs": [], - "name": "epoch", - "outputs": [], - "payable": false, - "stateMutability": "nonpayable", - "type": "function" - }, - { - "constant": true, - "inputs": [ - { - "internalType": "address", - "name": "_darknodeID", - "type": "address" - } - ], - "name": "getDarknodeBond", - "outputs": [ - { - "internalType": "uint256", - "name": "", - "type": "uint256" - } - ], - "payable": false, - "stateMutability": "view", - "type": "function" - }, - { - "constant": true, - "inputs": [ - { - "internalType": "address", - "name": "_darknodeID", - "type": "address" - } - ], - "name": "getDarknodeOperator", - "outputs": [ - { - "internalType": "address payable", - "name": "", - "type": "address" - } - ], - "payable": false, - "stateMutability": "view", - "type": "function" - }, - { - "constant": true, - "inputs": [ - { - "internalType": "address", - "name": "_darknodeID", - "type": "address" - } - ], - "name": "getDarknodePublicKey", - "outputs": [ - { - "internalType": "bytes", - "name": "", - "type": "bytes" - } - ], - "payable": false, - "stateMutability": "view", - "type": "function" - }, - { - "constant": true, - "inputs": [ - { - "internalType": "address", - "name": "_start", - "type": "address" - }, - { - "internalType": "uint256", - "name": "_count", - "type": "uint256" - } - ], - "name": "getDarknodes", - "outputs": [ - { - "internalType": "address[]", - "name": "", - "type": "address[]" - } - ], - "payable": false, - "stateMutability": "view", - "type": "function" - }, - { - "constant": true, - "inputs": [ - { - "internalType": "address", - "name": "_start", - "type": "address" - }, - { - "internalType": "uint256", - "name": "_count", - "type": "uint256" - } - ], - "name": "getPreviousDarknodes", - "outputs": [ - { - "internalType": "address[]", - "name": "", - "type": "address[]" - } - ], - "payable": false, - "stateMutability": "view", - "type": "function" - }, - { - "constant": false, - "inputs": [ - { - "internalType": "string", - "name": "_VERSION", - "type": "string" - }, - { - "internalType": "contract RenToken", - "name": "_renAddress", - "type": "address" - }, - { - "internalType": "contract DarknodeRegistryStore", - "name": "_storeAddress", - "type": "address" - }, - { - "internalType": "uint256", - "name": "_minimumBond", - "type": "uint256" - }, - { - "internalType": "uint256", - "name": "_minimumPodSize", - "type": "uint256" - }, - { - "internalType": "uint256", - "name": "_minimumEpochIntervalSeconds", - "type": "uint256" - }, - { - "internalType": "uint256", - "name": "_deregistrationIntervalSeconds", - "type": "uint256" - } - ], - "name": "initialize", - "outputs": [], - "payable": false, - "stateMutability": "nonpayable", - "type": "function" - }, - { - "constant": false, - "inputs": [ - { - "internalType": "address", - "name": "_nextOwner", - "type": "address" - } - ], - "name": "initialize", - "outputs": [], - "payable": false, - "stateMutability": "nonpayable", - "type": "function" - }, - { - "constant": true, - "inputs": [ - { - "internalType": "address", - "name": "_darknodeID", - "type": "address" - } - ], - "name": "isDeregisterable", - "outputs": [ - { - "internalType": "bool", - "name": "", - "type": "bool" - } - ], - "payable": false, - "stateMutability": "view", - "type": "function" - }, - { - "constant": true, - "inputs": [ - { - "internalType": "address", - "name": "_darknodeID", - "type": "address" - } - ], - "name": "isDeregistered", - "outputs": [ - { - "internalType": "bool", - "name": "", - "type": "bool" - } - ], - "payable": false, - "stateMutability": "view", - "type": "function" - }, - { - "constant": true, - "inputs": [], - "name": "isOwner", - "outputs": [ - { - "internalType": "bool", - "name": "", - "type": "bool" - } - ], - "payable": false, - "stateMutability": "view", - "type": "function" - }, - { - "constant": true, - "inputs": [ - { - "internalType": "address", - "name": "_darknodeID", - "type": "address" - } - ], - "name": "isPendingDeregistration", - "outputs": [ - { - "internalType": "bool", - "name": "", - "type": "bool" - } - ], - "payable": false, - "stateMutability": "view", - "type": "function" - }, - { - "constant": true, - "inputs": [ - { - "internalType": "address", - "name": "_darknodeID", - "type": "address" - } - ], - "name": "isPendingRegistration", - "outputs": [ - { - "internalType": "bool", - "name": "", - "type": "bool" - } - ], - "payable": false, - "stateMutability": "view", - "type": "function" - }, - { - "constant": true, - "inputs": [ - { - "internalType": "address", - "name": "_darknodeID", - "type": "address" - } - ], - "name": "isRefundable", - "outputs": [ - { - "internalType": "bool", - "name": "", - "type": "bool" - } - ], - "payable": false, - "stateMutability": "view", - "type": "function" - }, - { - "constant": true, - "inputs": [ - { - "internalType": "address", - "name": "_darknodeID", - "type": "address" - } - ], - "name": "isRefunded", - "outputs": [ - { - "internalType": "bool", - "name": "", - "type": "bool" - } - ], - "payable": false, - "stateMutability": "view", - "type": "function" - }, - { - "constant": true, - "inputs": [ - { - "internalType": "address", - "name": "_darknodeID", - "type": "address" - } - ], - "name": "isRegistered", - "outputs": [ - { - "internalType": "bool", - "name": "", - "type": "bool" - } - ], - "payable": false, - "stateMutability": "view", - "type": "function" - }, - { - "constant": true, - "inputs": [ - { - "internalType": "address", - "name": "_darknodeID", - "type": "address" - } - ], - "name": "isRegisteredInPreviousEpoch", - "outputs": [ - { - "internalType": "bool", - "name": "", - "type": "bool" - } - ], - "payable": false, - "stateMutability": "view", - "type": "function" - }, - { - "constant": true, - "inputs": [], - "name": "minimumBond", - "outputs": [ - { - "internalType": "uint256", - "name": "", - "type": "uint256" - } - ], - "payable": false, - "stateMutability": "view", - "type": "function" - }, - { - "constant": true, - "inputs": [], - "name": "minimumEpochInterval", - "outputs": [ - { - "internalType": "uint256", - "name": "", - "type": "uint256" - } - ], - "payable": false, - "stateMutability": "view", - "type": "function" - }, - { - "constant": true, - "inputs": [], - "name": "minimumPodSize", - "outputs": [ - { - "internalType": "uint256", - "name": "", - "type": "uint256" - } - ], - "payable": false, - "stateMutability": "view", - "type": "function" - }, - { - "constant": true, - "inputs": [], - "name": "nextMinimumBond", - "outputs": [ - { - "internalType": "uint256", - "name": "", - "type": "uint256" - } - ], - "payable": false, - "stateMutability": "view", - "type": "function" - }, - { - "constant": true, - "inputs": [], - "name": "nextMinimumEpochInterval", - "outputs": [ - { - "internalType": "uint256", - "name": "", - "type": "uint256" - } - ], - "payable": false, - "stateMutability": "view", - "type": "function" - }, - { - "constant": true, - "inputs": [], - "name": "nextMinimumPodSize", - "outputs": [ - { - "internalType": "uint256", - "name": "", - "type": "uint256" - } - ], - "payable": false, - "stateMutability": "view", - "type": "function" - }, - { - "constant": true, - "inputs": [], - "name": "nextSlasher", - "outputs": [ - { - "internalType": "contract IDarknodeSlasher", - "name": "", - "type": "address" - } - ], - "payable": false, - "stateMutability": "view", - "type": "function" - }, - { - "constant": true, - "inputs": [], - "name": "numDarknodes", - "outputs": [ - { - "internalType": "uint256", - "name": "", - "type": "uint256" - } - ], - "payable": false, - "stateMutability": "view", - "type": "function" - }, - { - "constant": true, - "inputs": [], - "name": "numDarknodesNextEpoch", - "outputs": [ - { - "internalType": "uint256", - "name": "", - "type": "uint256" - } - ], - "payable": false, - "stateMutability": "view", - "type": "function" - }, - { - "constant": true, - "inputs": [], - "name": "numDarknodesPreviousEpoch", - "outputs": [ - { - "internalType": "uint256", - "name": "", - "type": "uint256" - } - ], - "payable": false, - "stateMutability": "view", - "type": "function" - }, - { - "constant": true, - "inputs": [], - "name": "owner", - "outputs": [ - { - "internalType": "address", - "name": "", - "type": "address" - } - ], - "payable": false, - "stateMutability": "view", - "type": "function" - }, - { - "constant": true, - "inputs": [], - "name": "pendingOwner", - "outputs": [ - { - "internalType": "address", - "name": "", - "type": "address" - } - ], - "payable": false, - "stateMutability": "view", - "type": "function" - }, - { - "constant": true, - "inputs": [], - "name": "previousEpoch", - "outputs": [ - { - "internalType": "uint256", - "name": "epochhash", - "type": "uint256" - }, - { - "internalType": "uint256", - "name": "blocktime", - "type": "uint256" - } - ], - "payable": false, - "stateMutability": "view", - "type": "function" - }, - { - "constant": false, - "inputs": [ - { - "internalType": "address", - "name": "_token", - "type": "address" - } - ], - "name": "recoverTokens", - "outputs": [], - "payable": false, - "stateMutability": "nonpayable", - "type": "function" - }, - { - "constant": false, - "inputs": [ - { - "internalType": "address", - "name": "_darknodeID", - "type": "address" - } - ], - "name": "refund", - "outputs": [], - "payable": false, - "stateMutability": "nonpayable", - "type": "function" - }, - { - "constant": false, - "inputs": [ - { - "internalType": "address", - "name": "_darknodeID", - "type": "address" - }, - { - "internalType": "bytes", - "name": "_publicKey", - "type": "bytes" - } - ], - "name": "register", - "outputs": [], - "payable": false, - "stateMutability": "nonpayable", - "type": "function" - }, - { - "constant": true, - "inputs": [], - "name": "ren", - "outputs": [ - { - "internalType": "contract RenToken", - "name": "", - "type": "address" - } - ], - "payable": false, - "stateMutability": "view", - "type": "function" - }, - { - "constant": false, - "inputs": [], - "name": "renounceOwnership", - "outputs": [], - "payable": false, - "stateMutability": "nonpayable", - "type": "function" - }, - { - "constant": false, - "inputs": [ - { - "internalType": "address", - "name": "_guilty", - "type": "address" - }, - { - "internalType": "address", - "name": "_challenger", - "type": "address" - }, - { - "internalType": "uint256", - "name": "_percentage", - "type": "uint256" - } - ], - "name": "slash", - "outputs": [], - "payable": false, - "stateMutability": "nonpayable", - "type": "function" - }, - { - "constant": true, - "inputs": [], - "name": "slasher", - "outputs": [ - { - "internalType": "contract IDarknodeSlasher", - "name": "", - "type": "address" - } - ], - "payable": false, - "stateMutability": "view", - "type": "function" - }, - { - "constant": true, - "inputs": [], - "name": "store", - "outputs": [ - { - "internalType": "contract DarknodeRegistryStore", - "name": "", - "type": "address" - } - ], - "payable": false, - "stateMutability": "view", - "type": "function" - }, - { - "constant": false, - "inputs": [ - { - "internalType": "address", - "name": "newOwner", - "type": "address" - } - ], - "name": "transferOwnership", - "outputs": [], - "payable": false, - "stateMutability": "nonpayable", - "type": "function" - }, - { - "constant": false, - "inputs": [ - { - "internalType": "contract DarknodeRegistryLogicV1", - "name": "_newOwner", - "type": "address" - } - ], - "name": "transferStoreOwnership", - "outputs": [], - "payable": false, - "stateMutability": "nonpayable", - "type": "function" - }, - { - "constant": false, - "inputs": [ - { - "internalType": "contract IDarknodePayment", - "name": "_darknodePayment", - "type": "address" - } - ], - "name": "updateDarknodePayment", - "outputs": [], - "payable": false, - "stateMutability": "nonpayable", - "type": "function" - }, - { - "constant": false, - "inputs": [ - { - "internalType": "uint256", - "name": "_nextMinimumBond", - "type": "uint256" - } - ], - "name": "updateMinimumBond", - "outputs": [], - "payable": false, - "stateMutability": "nonpayable", - "type": "function" - }, - { - "constant": false, - "inputs": [ - { - "internalType": "uint256", - "name": "_nextMinimumEpochInterval", - "type": "uint256" - } - ], - "name": "updateMinimumEpochInterval", - "outputs": [], - "payable": false, - "stateMutability": "nonpayable", - "type": "function" - }, - { - "constant": false, - "inputs": [ - { - "internalType": "uint256", - "name": "_nextMinimumPodSize", - "type": "uint256" - } - ], - "name": "updateMinimumPodSize", - "outputs": [], - "payable": false, - "stateMutability": "nonpayable", - "type": "function" - }, - { - "constant": false, - "inputs": [ - { - "internalType": "contract IDarknodeSlasher", - "name": "_slasher", - "type": "address" - } - ], - "name": "updateSlasher", - "outputs": [], - "payable": false, - "stateMutability": "nonpayable", - "type": "function" - } - ], - "sourcePath": "~/github/renproject/ren-sol/contracts/DarknodeRegistry/DarknodeRegistry.sol", - "compiler": { - "name": "solc", - "version": "0.5.16+commit.9c3226ce.Emscripten.clang" - }, - "networks": { - "42": { - "events": { - "0xf73268ea792d9dbf3e21a95ec9711f0b535c5f6c99f6b4f54f6766838086b842": { - "anonymous": false, - "inputs": [ - { - "indexed": true, - "internalType": "address", - "name": "_darknodeOperator", - "type": "address" - }, - { - "indexed": true, - "internalType": "address", - "name": "_darknodeID", - "type": "address" - } - ], - "name": "LogDarknodeDeregistered", - "type": "event" - }, - "0xe3e25a79a5ba7c894fcc55794b2712e225537e89f777b9b9df307cc5504ba0e9": { - "anonymous": false, - "inputs": [ - { - "indexed": true, - "internalType": "contract IDarknodePayment", - "name": "_previousDarknodePayment", - "type": "address" - }, - { - "indexed": true, - "internalType": "contract IDarknodePayment", - "name": "_nextDarknodePayment", - "type": "address" - } - ], - "name": "LogDarknodePaymentUpdated", - "type": "event" - }, - "0x3eeec3803912dfbf607c8488e8aee15f415e51c9936250a5142642c9e470c128": { - "anonymous": false, - "inputs": [ - { - "indexed": true, - "internalType": "address", - "name": "_darknodeOperator", - "type": "address" - }, - { - "indexed": true, - "internalType": "address", - "name": "_darknodeID", - "type": "address" - }, - { - "indexed": false, - "internalType": "uint256", - "name": "_amount", - "type": "uint256" - } - ], - "name": "LogDarknodeRefunded", - "type": "event" - }, - "0x7c56cb7f63b6922d24414bf7c2b2c40c7ea1ea637c3f400efa766a85ecf2f093": { - "anonymous": false, - "inputs": [ - { - "indexed": true, - "internalType": "address", - "name": "_darknodeOperator", - "type": "address" - }, - { - "indexed": true, - "internalType": "address", - "name": "_darknodeID", - "type": "address" - }, - { - "indexed": false, - "internalType": "uint256", - "name": "_bond", - "type": "uint256" - } - ], - "name": "LogDarknodeRegistered", - "type": "event" - }, - "0xb43e0cc88b4d6ae901c6c99d1b58769cb8c9ded8e6f20a0d3712d09bf9e1ea77": { - "anonymous": false, - "inputs": [ - { - "indexed": true, - "internalType": "address", - "name": "_darknodeOperator", - "type": "address" - }, - { - "indexed": true, - "internalType": "address", - "name": "_darknodeID", - "type": "address" - }, - { - "indexed": true, - "internalType": "address", - "name": "_challenger", - "type": "address" - }, - { - "indexed": false, - "internalType": "uint256", - "name": "_percentage", - "type": "uint256" - } - ], - "name": "LogDarknodeSlashed", - "type": "event" - }, - "0x7c77c94944e9e4e5b0d46f1297127d060020792687cd743401d782346c68f655": { - "anonymous": false, - "inputs": [ - { - "indexed": false, - "internalType": "uint256", - "name": "_previousMinimumBond", - "type": "uint256" - }, - { - "indexed": false, - "internalType": "uint256", - "name": "_nextMinimumBond", - "type": "uint256" - } - ], - "name": "LogMinimumBondUpdated", - "type": "event" - }, - "0xb218cde2730b79a0667ddf869466ee66a12ef56fe65fa4986a590f8a7108c9de": { - "anonymous": false, - "inputs": [ - { - "indexed": false, - "internalType": "uint256", - "name": "_previousMinimumEpochInterval", - "type": "uint256" - }, - { - "indexed": false, - "internalType": "uint256", - "name": "_nextMinimumEpochInterval", - "type": "uint256" - } - ], - "name": "LogMinimumEpochIntervalUpdated", - "type": "event" - }, - "0x6d520e46e5714982ddf8cb6216bcb3e1c1d5b79d337afc305335f819394f5d6a": { - "anonymous": false, - "inputs": [ - { - "indexed": false, - "internalType": "uint256", - "name": "_previousMinimumPodSize", - "type": "uint256" - }, - { - "indexed": false, - "internalType": "uint256", - "name": "_nextMinimumPodSize", - "type": "uint256" - } - ], - "name": "LogMinimumPodSizeUpdated", - "type": "event" - }, - "0xaf2fc4796f2932ce294c3684deffe5098d3ef65dc2dd64efa80ef94eed88b01e": { - "anonymous": false, - "inputs": [ - { - "indexed": true, - "internalType": "uint256", - "name": "epochhash", - "type": "uint256" - } - ], - "name": "LogNewEpoch", - "type": "event" - }, - "0x933228a1c3ba8fadd3ce47a9db5b898be647f89af99ba7c1b9a655f59ea306c8": { - "anonymous": false, - "inputs": [ - { - "indexed": true, - "internalType": "address", - "name": "_previousSlasher", - "type": "address" - }, - { - "indexed": true, - "internalType": "address", - "name": "_nextSlasher", - "type": "address" - } - ], - "name": "LogSlasherUpdated", - "type": "event" - }, - "0x8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0": { - "anonymous": false, - "inputs": [ - { - "indexed": true, - "internalType": "address", - "name": "previousOwner", - "type": "address" - }, - { - "indexed": true, - "internalType": "address", - "name": "newOwner", - "type": "address" - } - ], - "name": "OwnershipTransferred", - "type": "event" - } - }, - "links": {}, - "address": "0x046EDe9916e13De79d5530b67FF5dEbB7B72742C", - "transactionHash": "0x46b9f13071e1a76a51ed7445124fc11df38aba3d625b6fab1ee5219940566ef5" - } - }, - "schemaVersion": "3.0.23" -} \ No newline at end of file diff --git a/build/testnet/DarknodeRegistryProxy.json b/build/testnet/DarknodeRegistryProxy.json deleted file mode 100644 index a7b68f1f..00000000 --- a/build/testnet/DarknodeRegistryProxy.json +++ /dev/null @@ -1,214 +0,0 @@ -{ - "contractName": "DarknodeRegistryProxy", - "abi": [ - { - "anonymous": false, - "inputs": [ - { - "indexed": false, - "internalType": "address", - "name": "previousAdmin", - "type": "address" - }, - { - "indexed": false, - "internalType": "address", - "name": "newAdmin", - "type": "address" - } - ], - "name": "AdminChanged", - "type": "event" - }, - { - "anonymous": false, - "inputs": [ - { - "indexed": true, - "internalType": "address", - "name": "implementation", - "type": "address" - } - ], - "name": "Upgraded", - "type": "event" - }, - { - "payable": true, - "stateMutability": "payable", - "type": "fallback" - }, - { - "constant": false, - "inputs": [], - "name": "admin", - "outputs": [ - { - "internalType": "address", - "name": "", - "type": "address" - } - ], - "payable": false, - "stateMutability": "nonpayable", - "type": "function" - }, - { - "constant": false, - "inputs": [ - { - "internalType": "address", - "name": "newAdmin", - "type": "address" - } - ], - "name": "changeAdmin", - "outputs": [], - "payable": false, - "stateMutability": "nonpayable", - "type": "function" - }, - { - "constant": false, - "inputs": [], - "name": "implementation", - "outputs": [ - { - "internalType": "address", - "name": "", - "type": "address" - } - ], - "payable": false, - "stateMutability": "nonpayable", - "type": "function" - }, - { - "constant": false, - "inputs": [ - { - "internalType": "address", - "name": "_logic", - "type": "address" - }, - { - "internalType": "address", - "name": "_admin", - "type": "address" - }, - { - "internalType": "bytes", - "name": "_data", - "type": "bytes" - } - ], - "name": "initialize", - "outputs": [], - "payable": true, - "stateMutability": "payable", - "type": "function" - }, - { - "constant": false, - "inputs": [ - { - "internalType": "address", - "name": "_logic", - "type": "address" - }, - { - "internalType": "bytes", - "name": "_data", - "type": "bytes" - } - ], - "name": "initialize", - "outputs": [], - "payable": true, - "stateMutability": "payable", - "type": "function" - }, - { - "constant": false, - "inputs": [ - { - "internalType": "address", - "name": "newImplementation", - "type": "address" - } - ], - "name": "upgradeTo", - "outputs": [], - "payable": false, - "stateMutability": "nonpayable", - "type": "function" - }, - { - "constant": false, - "inputs": [ - { - "internalType": "address", - "name": "newImplementation", - "type": "address" - }, - { - "internalType": "bytes", - "name": "data", - "type": "bytes" - } - ], - "name": "upgradeToAndCall", - "outputs": [], - "payable": true, - "stateMutability": "payable", - "type": "function" - } - ], - "sourcePath": "~/github/renproject/ren-sol/contracts/DarknodeRegistry/DarknodeRegistry.sol", - "compiler": { - "name": "solc", - "version": "0.5.16+commit.9c3226ce.Emscripten.clang" - }, - "networks": { - "42": { - "events": { - "0x7e644d79422f17c01e4894b5f4f588d331ebfa28653d42ae832dc59e38c9798f": { - "anonymous": false, - "inputs": [ - { - "indexed": false, - "internalType": "address", - "name": "previousAdmin", - "type": "address" - }, - { - "indexed": false, - "internalType": "address", - "name": "newAdmin", - "type": "address" - } - ], - "name": "AdminChanged", - "type": "event" - }, - "0xbc7cd75a20ee27fd9adebab32041f755214dbc6bffa90cc0225b39da2e5c2d3b": { - "anonymous": false, - "inputs": [ - { - "indexed": true, - "internalType": "address", - "name": "implementation", - "type": "address" - } - ], - "name": "Upgraded", - "type": "event" - } - }, - "links": {}, - "address": "0x9954C9F839b31E82bc9CA98F234313112D269712", - "transactionHash": "0x5792e8220172e77122d16d465fd231c187fd036c2421c3fd46c7a034e000524f" - } - }, - "schemaVersion": "3.0.23" -} \ No newline at end of file diff --git a/build/testnet/DarknodeRegistryStore.json b/build/testnet/DarknodeRegistryStore.json deleted file mode 100644 index 31ac14be..00000000 --- a/build/testnet/DarknodeRegistryStore.json +++ /dev/null @@ -1,464 +0,0 @@ -{ - "contractName": "DarknodeRegistryStore", - "abi": [ - { - "inputs": [ - { - "internalType": "string", - "name": "_VERSION", - "type": "string" - }, - { - "internalType": "contract RenToken", - "name": "_ren", - "type": "address" - } - ], - "payable": false, - "stateMutability": "nonpayable", - "type": "constructor" - }, - { - "anonymous": false, - "inputs": [ - { - "indexed": true, - "internalType": "address", - "name": "previousOwner", - "type": "address" - }, - { - "indexed": true, - "internalType": "address", - "name": "newOwner", - "type": "address" - } - ], - "name": "OwnershipTransferred", - "type": "event" - }, - { - "constant": true, - "inputs": [], - "name": "VERSION", - "outputs": [ - { - "internalType": "string", - "name": "", - "type": "string" - } - ], - "payable": false, - "stateMutability": "view", - "type": "function" - }, - { - "constant": false, - "inputs": [ - { - "internalType": "address", - "name": "_darknodeID", - "type": "address" - }, - { - "internalType": "address payable", - "name": "_darknodeOperator", - "type": "address" - }, - { - "internalType": "uint256", - "name": "_bond", - "type": "uint256" - }, - { - "internalType": "bytes", - "name": "_publicKey", - "type": "bytes" - }, - { - "internalType": "uint256", - "name": "_registeredAt", - "type": "uint256" - }, - { - "internalType": "uint256", - "name": "_deregisteredAt", - "type": "uint256" - } - ], - "name": "appendDarknode", - "outputs": [], - "payable": false, - "stateMutability": "nonpayable", - "type": "function" - }, - { - "constant": true, - "inputs": [], - "name": "begin", - "outputs": [ - { - "internalType": "address", - "name": "", - "type": "address" - } - ], - "payable": false, - "stateMutability": "view", - "type": "function" - }, - { - "constant": false, - "inputs": [ - { - "internalType": "address", - "name": "_token", - "type": "address" - } - ], - "name": "blacklistRecoverableToken", - "outputs": [], - "payable": false, - "stateMutability": "nonpayable", - "type": "function" - }, - { - "constant": false, - "inputs": [], - "name": "claimOwnership", - "outputs": [], - "payable": false, - "stateMutability": "nonpayable", - "type": "function" - }, - { - "constant": true, - "inputs": [ - { - "internalType": "address", - "name": "darknodeID", - "type": "address" - } - ], - "name": "darknodeBond", - "outputs": [ - { - "internalType": "uint256", - "name": "", - "type": "uint256" - } - ], - "payable": false, - "stateMutability": "view", - "type": "function" - }, - { - "constant": true, - "inputs": [ - { - "internalType": "address", - "name": "darknodeID", - "type": "address" - } - ], - "name": "darknodeDeregisteredAt", - "outputs": [ - { - "internalType": "uint256", - "name": "", - "type": "uint256" - } - ], - "payable": false, - "stateMutability": "view", - "type": "function" - }, - { - "constant": true, - "inputs": [ - { - "internalType": "address", - "name": "darknodeID", - "type": "address" - } - ], - "name": "darknodeOperator", - "outputs": [ - { - "internalType": "address payable", - "name": "", - "type": "address" - } - ], - "payable": false, - "stateMutability": "view", - "type": "function" - }, - { - "constant": true, - "inputs": [ - { - "internalType": "address", - "name": "darknodeID", - "type": "address" - } - ], - "name": "darknodePublicKey", - "outputs": [ - { - "internalType": "bytes", - "name": "", - "type": "bytes" - } - ], - "payable": false, - "stateMutability": "view", - "type": "function" - }, - { - "constant": true, - "inputs": [ - { - "internalType": "address", - "name": "darknodeID", - "type": "address" - } - ], - "name": "darknodeRegisteredAt", - "outputs": [ - { - "internalType": "uint256", - "name": "", - "type": "uint256" - } - ], - "payable": false, - "stateMutability": "view", - "type": "function" - }, - { - "constant": false, - "inputs": [ - { - "internalType": "address", - "name": "_nextOwner", - "type": "address" - } - ], - "name": "initialize", - "outputs": [], - "payable": false, - "stateMutability": "nonpayable", - "type": "function" - }, - { - "constant": true, - "inputs": [], - "name": "isOwner", - "outputs": [ - { - "internalType": "bool", - "name": "", - "type": "bool" - } - ], - "payable": false, - "stateMutability": "view", - "type": "function" - }, - { - "constant": true, - "inputs": [ - { - "internalType": "address", - "name": "darknodeID", - "type": "address" - } - ], - "name": "next", - "outputs": [ - { - "internalType": "address", - "name": "", - "type": "address" - } - ], - "payable": false, - "stateMutability": "view", - "type": "function" - }, - { - "constant": true, - "inputs": [], - "name": "owner", - "outputs": [ - { - "internalType": "address", - "name": "", - "type": "address" - } - ], - "payable": false, - "stateMutability": "view", - "type": "function" - }, - { - "constant": true, - "inputs": [], - "name": "pendingOwner", - "outputs": [ - { - "internalType": "address", - "name": "", - "type": "address" - } - ], - "payable": false, - "stateMutability": "view", - "type": "function" - }, - { - "constant": false, - "inputs": [ - { - "internalType": "address", - "name": "_token", - "type": "address" - } - ], - "name": "recoverTokens", - "outputs": [], - "payable": false, - "stateMutability": "nonpayable", - "type": "function" - }, - { - "constant": false, - "inputs": [ - { - "internalType": "address", - "name": "darknodeID", - "type": "address" - } - ], - "name": "removeDarknode", - "outputs": [], - "payable": false, - "stateMutability": "nonpayable", - "type": "function" - }, - { - "constant": true, - "inputs": [], - "name": "ren", - "outputs": [ - { - "internalType": "contract RenToken", - "name": "", - "type": "address" - } - ], - "payable": false, - "stateMutability": "view", - "type": "function" - }, - { - "constant": false, - "inputs": [], - "name": "renounceOwnership", - "outputs": [], - "payable": false, - "stateMutability": "nonpayable", - "type": "function" - }, - { - "constant": false, - "inputs": [ - { - "internalType": "address", - "name": "newOwner", - "type": "address" - } - ], - "name": "transferOwnership", - "outputs": [], - "payable": false, - "stateMutability": "nonpayable", - "type": "function" - }, - { - "constant": false, - "inputs": [ - { - "internalType": "address", - "name": "darknodeID", - "type": "address" - }, - { - "internalType": "uint256", - "name": "decreasedBond", - "type": "uint256" - } - ], - "name": "updateDarknodeBond", - "outputs": [], - "payable": false, - "stateMutability": "nonpayable", - "type": "function" - }, - { - "constant": false, - "inputs": [ - { - "internalType": "address", - "name": "darknodeID", - "type": "address" - }, - { - "internalType": "uint256", - "name": "deregisteredAt", - "type": "uint256" - } - ], - "name": "updateDarknodeDeregisteredAt", - "outputs": [], - "payable": false, - "stateMutability": "nonpayable", - "type": "function" - } - ], - "sourcePath": "~/github/renproject/ren-sol/contracts/DarknodeRegistry/DarknodeRegistryStore.sol", - "compiler": { - "name": "solc", - "version": "0.5.16+commit.9c3226ce.Emscripten.clang" - }, - "networks": { - "42": { - "events": { - "0x8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0": { - "anonymous": false, - "inputs": [ - { - "indexed": true, - "internalType": "address", - "name": "previousOwner", - "type": "address" - }, - { - "indexed": true, - "internalType": "address", - "name": "newOwner", - "type": "address" - } - ], - "name": "OwnershipTransferred", - "type": "event" - } - }, - "links": {}, - "address": "0x9daa16aA19e37f3de06197a8B5E638EC5e487392", - "transactionHash": "0x51a19d88bb1d3d2b58d6d957a6cc2161e33b25135a4919ca545c2440fa8e24ee" - } - }, - "schemaVersion": "3.0.23" -} \ No newline at end of file diff --git a/build/testnet/DarknodeSlasher.json b/build/testnet/DarknodeSlasher.json deleted file mode 100644 index 82d760af..00000000 --- a/build/testnet/DarknodeSlasher.json +++ /dev/null @@ -1,609 +0,0 @@ -{ - "contractName": "DarknodeSlasher", - "abi": [ - { - "inputs": [ - { - "internalType": "contract DarknodeRegistryLogicV1", - "name": "_darknodeRegistry", - "type": "address" - } - ], - "payable": false, - "stateMutability": "nonpayable", - "type": "constructor" - }, - { - "anonymous": false, - "inputs": [ - { - "indexed": true, - "internalType": "contract DarknodeRegistryLogicV1", - "name": "_previousDarknodeRegistry", - "type": "address" - }, - { - "indexed": true, - "internalType": "contract DarknodeRegistryLogicV1", - "name": "_nextDarknodeRegistry", - "type": "address" - } - ], - "name": "LogDarknodeRegistryUpdated", - "type": "event" - }, - { - "anonymous": false, - "inputs": [ - { - "indexed": true, - "internalType": "address", - "name": "previousOwner", - "type": "address" - }, - { - "indexed": true, - "internalType": "address", - "name": "newOwner", - "type": "address" - } - ], - "name": "OwnershipTransferred", - "type": "event" - }, - { - "constant": false, - "inputs": [ - { - "internalType": "address", - "name": "_guilty", - "type": "address" - } - ], - "name": "blacklist", - "outputs": [], - "payable": false, - "stateMutability": "nonpayable", - "type": "function" - }, - { - "constant": true, - "inputs": [], - "name": "blacklistSlashPercent", - "outputs": [ - { - "internalType": "uint256", - "name": "", - "type": "uint256" - } - ], - "payable": false, - "stateMutability": "view", - "type": "function" - }, - { - "constant": true, - "inputs": [ - { - "internalType": "address", - "name": "", - "type": "address" - } - ], - "name": "blacklisted", - "outputs": [ - { - "internalType": "bool", - "name": "", - "type": "bool" - } - ], - "payable": false, - "stateMutability": "view", - "type": "function" - }, - { - "constant": false, - "inputs": [], - "name": "claimOwnership", - "outputs": [], - "payable": false, - "stateMutability": "nonpayable", - "type": "function" - }, - { - "constant": true, - "inputs": [], - "name": "darknodeRegistry", - "outputs": [ - { - "internalType": "contract DarknodeRegistryLogicV1", - "name": "", - "type": "address" - } - ], - "payable": false, - "stateMutability": "view", - "type": "function" - }, - { - "constant": false, - "inputs": [ - { - "internalType": "address", - "name": "_nextOwner", - "type": "address" - } - ], - "name": "initialize", - "outputs": [], - "payable": false, - "stateMutability": "nonpayable", - "type": "function" - }, - { - "constant": true, - "inputs": [], - "name": "isOwner", - "outputs": [ - { - "internalType": "bool", - "name": "", - "type": "bool" - } - ], - "payable": false, - "stateMutability": "view", - "type": "function" - }, - { - "constant": true, - "inputs": [], - "name": "maliciousSlashPercent", - "outputs": [ - { - "internalType": "uint256", - "name": "", - "type": "uint256" - } - ], - "payable": false, - "stateMutability": "view", - "type": "function" - }, - { - "constant": true, - "inputs": [], - "name": "owner", - "outputs": [ - { - "internalType": "address", - "name": "", - "type": "address" - } - ], - "payable": false, - "stateMutability": "view", - "type": "function" - }, - { - "constant": true, - "inputs": [], - "name": "pendingOwner", - "outputs": [ - { - "internalType": "address", - "name": "", - "type": "address" - } - ], - "payable": false, - "stateMutability": "view", - "type": "function" - }, - { - "constant": false, - "inputs": [], - "name": "renounceOwnership", - "outputs": [], - "payable": false, - "stateMutability": "nonpayable", - "type": "function" - }, - { - "constant": true, - "inputs": [], - "name": "secretRevealSlashPercent", - "outputs": [ - { - "internalType": "uint256", - "name": "", - "type": "uint256" - } - ], - "payable": false, - "stateMutability": "view", - "type": "function" - }, - { - "constant": true, - "inputs": [ - { - "internalType": "address", - "name": "", - "type": "address" - } - ], - "name": "secretRevealed", - "outputs": [ - { - "internalType": "bool", - "name": "", - "type": "bool" - } - ], - "payable": false, - "stateMutability": "view", - "type": "function" - }, - { - "constant": false, - "inputs": [ - { - "internalType": "uint256", - "name": "_percentage", - "type": "uint256" - } - ], - "name": "setBlacklistSlashPercent", - "outputs": [], - "payable": false, - "stateMutability": "nonpayable", - "type": "function" - }, - { - "constant": false, - "inputs": [ - { - "internalType": "uint256", - "name": "_percentage", - "type": "uint256" - } - ], - "name": "setMaliciousSlashPercent", - "outputs": [], - "payable": false, - "stateMutability": "nonpayable", - "type": "function" - }, - { - "constant": false, - "inputs": [ - { - "internalType": "uint256", - "name": "_percentage", - "type": "uint256" - } - ], - "name": "setSecretRevealSlashPercent", - "outputs": [], - "payable": false, - "stateMutability": "nonpayable", - "type": "function" - }, - { - "constant": false, - "inputs": [ - { - "internalType": "address", - "name": "_guilty", - "type": "address" - }, - { - "internalType": "address", - "name": "_challenger", - "type": "address" - }, - { - "internalType": "uint256", - "name": "_percentage", - "type": "uint256" - } - ], - "name": "slash", - "outputs": [], - "payable": false, - "stateMutability": "nonpayable", - "type": "function" - }, - { - "constant": false, - "inputs": [ - { - "internalType": "uint256", - "name": "_height", - "type": "uint256" - }, - { - "internalType": "uint256", - "name": "_round", - "type": "uint256" - }, - { - "internalType": "bytes", - "name": "_blockhash1", - "type": "bytes" - }, - { - "internalType": "bytes", - "name": "_signature1", - "type": "bytes" - }, - { - "internalType": "bytes", - "name": "_blockhash2", - "type": "bytes" - }, - { - "internalType": "bytes", - "name": "_signature2", - "type": "bytes" - } - ], - "name": "slashDuplicatePrecommit", - "outputs": [], - "payable": false, - "stateMutability": "nonpayable", - "type": "function" - }, - { - "constant": false, - "inputs": [ - { - "internalType": "uint256", - "name": "_height", - "type": "uint256" - }, - { - "internalType": "uint256", - "name": "_round", - "type": "uint256" - }, - { - "internalType": "bytes", - "name": "_blockhash1", - "type": "bytes" - }, - { - "internalType": "bytes", - "name": "_signature1", - "type": "bytes" - }, - { - "internalType": "bytes", - "name": "_blockhash2", - "type": "bytes" - }, - { - "internalType": "bytes", - "name": "_signature2", - "type": "bytes" - } - ], - "name": "slashDuplicatePrevote", - "outputs": [], - "payable": false, - "stateMutability": "nonpayable", - "type": "function" - }, - { - "constant": false, - "inputs": [ - { - "internalType": "uint256", - "name": "_height", - "type": "uint256" - }, - { - "internalType": "uint256", - "name": "_round", - "type": "uint256" - }, - { - "internalType": "bytes", - "name": "_blockhash1", - "type": "bytes" - }, - { - "internalType": "uint256", - "name": "_validRound1", - "type": "uint256" - }, - { - "internalType": "bytes", - "name": "_signature1", - "type": "bytes" - }, - { - "internalType": "bytes", - "name": "_blockhash2", - "type": "bytes" - }, - { - "internalType": "uint256", - "name": "_validRound2", - "type": "uint256" - }, - { - "internalType": "bytes", - "name": "_signature2", - "type": "bytes" - } - ], - "name": "slashDuplicatePropose", - "outputs": [], - "payable": false, - "stateMutability": "nonpayable", - "type": "function" - }, - { - "constant": false, - "inputs": [ - { - "internalType": "uint256", - "name": "_a", - "type": "uint256" - }, - { - "internalType": "uint256", - "name": "_b", - "type": "uint256" - }, - { - "internalType": "uint256", - "name": "_c", - "type": "uint256" - }, - { - "internalType": "uint256", - "name": "_d", - "type": "uint256" - }, - { - "internalType": "uint256", - "name": "_e", - "type": "uint256" - }, - { - "internalType": "uint256", - "name": "_f", - "type": "uint256" - }, - { - "internalType": "bytes", - "name": "_signature", - "type": "bytes" - } - ], - "name": "slashSecretReveal", - "outputs": [], - "payable": false, - "stateMutability": "nonpayable", - "type": "function" - }, - { - "constant": true, - "inputs": [ - { - "internalType": "uint256", - "name": "", - "type": "uint256" - }, - { - "internalType": "uint256", - "name": "", - "type": "uint256" - }, - { - "internalType": "address", - "name": "", - "type": "address" - } - ], - "name": "slashed", - "outputs": [ - { - "internalType": "bool", - "name": "", - "type": "bool" - } - ], - "payable": false, - "stateMutability": "view", - "type": "function" - }, - { - "constant": false, - "inputs": [ - { - "internalType": "address", - "name": "newOwner", - "type": "address" - } - ], - "name": "transferOwnership", - "outputs": [], - "payable": false, - "stateMutability": "nonpayable", - "type": "function" - }, - { - "constant": false, - "inputs": [ - { - "internalType": "contract DarknodeRegistryLogicV1", - "name": "_darknodeRegistry", - "type": "address" - } - ], - "name": "updateDarknodeRegistry", - "outputs": [], - "payable": false, - "stateMutability": "nonpayable", - "type": "function" - } - ], - "sourcePath": "~/github/renproject/ren-sol/contracts/DarknodeSlasher/DarknodeSlasher.sol", - "compiler": { - "name": "solc", - "version": "0.5.16+commit.9c3226ce.Emscripten.clang" - }, - "networks": { - "42": { - "events": { - "0xf9f6dd5c784f63cc27c1079c73574a73485a6c2e7f7e2181c5eb2be8c693cfb7": { - "anonymous": false, - "inputs": [ - { - "indexed": true, - "internalType": "contract DarknodeRegistryLogicV1", - "name": "_previousDarknodeRegistry", - "type": "address" - }, - { - "indexed": true, - "internalType": "contract DarknodeRegistryLogicV1", - "name": "_nextDarknodeRegistry", - "type": "address" - } - ], - "name": "LogDarknodeRegistryUpdated", - "type": "event" - }, - "0x8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0": { - "anonymous": false, - "inputs": [ - { - "indexed": true, - "internalType": "address", - "name": "previousOwner", - "type": "address" - }, - { - "indexed": true, - "internalType": "address", - "name": "newOwner", - "type": "address" - } - ], - "name": "OwnershipTransferred", - "type": "event" - } - }, - "links": {}, - "address": "0x5B403bdC360A447290758c8BA779c44cdFC3476F", - "transactionHash": "0xc8d3510ed09372406ee1bffc9e8e794d01afcdf16345f0f7e1c4d9fc2a2de82b" - } - }, - "schemaVersion": "3.0.23" -} \ No newline at end of file diff --git a/build/testnet/GatewayLogicV1.json b/build/testnet/GatewayLogicV1.json deleted file mode 100644 index 4ac51897..00000000 --- a/build/testnet/GatewayLogicV1.json +++ /dev/null @@ -1,719 +0,0 @@ -{ - "contractName": "GatewayLogicV1", - "abi": [ - { - "anonymous": false, - "inputs": [ - { - "indexed": false, - "internalType": "bytes", - "name": "_to", - "type": "bytes" - }, - { - "indexed": false, - "internalType": "uint256", - "name": "_amount", - "type": "uint256" - }, - { - "indexed": true, - "internalType": "uint256", - "name": "_n", - "type": "uint256" - }, - { - "indexed": true, - "internalType": "bytes", - "name": "_indexedTo", - "type": "bytes" - } - ], - "name": "LogBurn", - "type": "event" - }, - { - "anonymous": false, - "inputs": [ - { - "indexed": true, - "internalType": "address", - "name": "_to", - "type": "address" - }, - { - "indexed": false, - "internalType": "uint256", - "name": "_amount", - "type": "uint256" - }, - { - "indexed": true, - "internalType": "uint256", - "name": "_n", - "type": "uint256" - }, - { - "indexed": true, - "internalType": "bytes32", - "name": "_signedMessageHash", - "type": "bytes32" - } - ], - "name": "LogMint", - "type": "event" - }, - { - "anonymous": false, - "inputs": [ - { - "indexed": true, - "internalType": "address", - "name": "_newMintAuthority", - "type": "address" - } - ], - "name": "LogMintAuthorityUpdated", - "type": "event" - }, - { - "anonymous": false, - "inputs": [ - { - "indexed": true, - "internalType": "address", - "name": "previousOwner", - "type": "address" - }, - { - "indexed": true, - "internalType": "address", - "name": "newOwner", - "type": "address" - } - ], - "name": "OwnershipTransferred", - "type": "event" - }, - { - "constant": false, - "inputs": [ - { - "internalType": "address", - "name": "_token", - "type": "address" - } - ], - "name": "blacklistRecoverableToken", - "outputs": [], - "payable": false, - "stateMutability": "nonpayable", - "type": "function" - }, - { - "constant": false, - "inputs": [ - { - "internalType": "bytes", - "name": "_to", - "type": "bytes" - }, - { - "internalType": "uint256", - "name": "_amount", - "type": "uint256" - } - ], - "name": "burn", - "outputs": [ - { - "internalType": "uint256", - "name": "", - "type": "uint256" - } - ], - "payable": false, - "stateMutability": "nonpayable", - "type": "function" - }, - { - "constant": true, - "inputs": [], - "name": "burnFee", - "outputs": [ - { - "internalType": "uint16", - "name": "", - "type": "uint16" - } - ], - "payable": false, - "stateMutability": "view", - "type": "function" - }, - { - "constant": false, - "inputs": [], - "name": "claimOwnership", - "outputs": [], - "payable": false, - "stateMutability": "nonpayable", - "type": "function" - }, - { - "constant": false, - "inputs": [], - "name": "claimTokenOwnership", - "outputs": [], - "payable": false, - "stateMutability": "nonpayable", - "type": "function" - }, - { - "constant": true, - "inputs": [], - "name": "feeRecipient", - "outputs": [ - { - "internalType": "address", - "name": "", - "type": "address" - } - ], - "payable": false, - "stateMutability": "view", - "type": "function" - }, - { - "constant": true, - "inputs": [ - { - "internalType": "bytes32", - "name": "_pHash", - "type": "bytes32" - }, - { - "internalType": "uint256", - "name": "_amount", - "type": "uint256" - }, - { - "internalType": "address", - "name": "_to", - "type": "address" - }, - { - "internalType": "bytes32", - "name": "_nHash", - "type": "bytes32" - } - ], - "name": "hashForSignature", - "outputs": [ - { - "internalType": "bytes32", - "name": "", - "type": "bytes32" - } - ], - "payable": false, - "stateMutability": "view", - "type": "function" - }, - { - "constant": false, - "inputs": [ - { - "internalType": "contract RenERC20LogicV1", - "name": "_token", - "type": "address" - }, - { - "internalType": "address", - "name": "_feeRecipient", - "type": "address" - }, - { - "internalType": "address", - "name": "_mintAuthority", - "type": "address" - }, - { - "internalType": "uint16", - "name": "_mintFee", - "type": "uint16" - }, - { - "internalType": "uint16", - "name": "_burnFee", - "type": "uint16" - }, - { - "internalType": "uint256", - "name": "_minimumBurnAmount", - "type": "uint256" - } - ], - "name": "initialize", - "outputs": [], - "payable": false, - "stateMutability": "nonpayable", - "type": "function" - }, - { - "constant": false, - "inputs": [ - { - "internalType": "address", - "name": "_nextOwner", - "type": "address" - } - ], - "name": "initialize", - "outputs": [], - "payable": false, - "stateMutability": "nonpayable", - "type": "function" - }, - { - "constant": true, - "inputs": [], - "name": "isOwner", - "outputs": [ - { - "internalType": "bool", - "name": "", - "type": "bool" - } - ], - "payable": false, - "stateMutability": "view", - "type": "function" - }, - { - "constant": true, - "inputs": [], - "name": "minimumBurnAmount", - "outputs": [ - { - "internalType": "uint256", - "name": "", - "type": "uint256" - } - ], - "payable": false, - "stateMutability": "view", - "type": "function" - }, - { - "constant": false, - "inputs": [ - { - "internalType": "bytes32", - "name": "_pHash", - "type": "bytes32" - }, - { - "internalType": "uint256", - "name": "_amountUnderlying", - "type": "uint256" - }, - { - "internalType": "bytes32", - "name": "_nHash", - "type": "bytes32" - }, - { - "internalType": "bytes", - "name": "_sig", - "type": "bytes" - } - ], - "name": "mint", - "outputs": [ - { - "internalType": "uint256", - "name": "", - "type": "uint256" - } - ], - "payable": false, - "stateMutability": "nonpayable", - "type": "function" - }, - { - "constant": true, - "inputs": [], - "name": "mintAuthority", - "outputs": [ - { - "internalType": "address", - "name": "", - "type": "address" - } - ], - "payable": false, - "stateMutability": "view", - "type": "function" - }, - { - "constant": true, - "inputs": [], - "name": "mintFee", - "outputs": [ - { - "internalType": "uint16", - "name": "", - "type": "uint16" - } - ], - "payable": false, - "stateMutability": "view", - "type": "function" - }, - { - "constant": true, - "inputs": [], - "name": "nextN", - "outputs": [ - { - "internalType": "uint256", - "name": "", - "type": "uint256" - } - ], - "payable": false, - "stateMutability": "view", - "type": "function" - }, - { - "constant": true, - "inputs": [], - "name": "owner", - "outputs": [ - { - "internalType": "address", - "name": "", - "type": "address" - } - ], - "payable": false, - "stateMutability": "view", - "type": "function" - }, - { - "constant": true, - "inputs": [], - "name": "pendingOwner", - "outputs": [ - { - "internalType": "address", - "name": "", - "type": "address" - } - ], - "payable": false, - "stateMutability": "view", - "type": "function" - }, - { - "constant": false, - "inputs": [ - { - "internalType": "address", - "name": "_token", - "type": "address" - } - ], - "name": "recoverTokens", - "outputs": [], - "payable": false, - "stateMutability": "nonpayable", - "type": "function" - }, - { - "constant": false, - "inputs": [], - "name": "renounceOwnership", - "outputs": [], - "payable": false, - "stateMutability": "nonpayable", - "type": "function" - }, - { - "constant": true, - "inputs": [ - { - "internalType": "bytes32", - "name": "", - "type": "bytes32" - } - ], - "name": "status", - "outputs": [ - { - "internalType": "bool", - "name": "", - "type": "bool" - } - ], - "payable": false, - "stateMutability": "view", - "type": "function" - }, - { - "constant": true, - "inputs": [], - "name": "token", - "outputs": [ - { - "internalType": "contract RenERC20LogicV1", - "name": "", - "type": "address" - } - ], - "payable": false, - "stateMutability": "view", - "type": "function" - }, - { - "constant": false, - "inputs": [ - { - "internalType": "address", - "name": "newOwner", - "type": "address" - } - ], - "name": "transferOwnership", - "outputs": [], - "payable": false, - "stateMutability": "nonpayable", - "type": "function" - }, - { - "constant": false, - "inputs": [ - { - "internalType": "contract GatewayLogicV1", - "name": "_nextTokenOwner", - "type": "address" - } - ], - "name": "transferTokenOwnership", - "outputs": [], - "payable": false, - "stateMutability": "nonpayable", - "type": "function" - }, - { - "constant": false, - "inputs": [ - { - "internalType": "uint16", - "name": "_nextBurnFee", - "type": "uint16" - } - ], - "name": "updateBurnFee", - "outputs": [], - "payable": false, - "stateMutability": "nonpayable", - "type": "function" - }, - { - "constant": false, - "inputs": [ - { - "internalType": "address", - "name": "_nextFeeRecipient", - "type": "address" - } - ], - "name": "updateFeeRecipient", - "outputs": [], - "payable": false, - "stateMutability": "nonpayable", - "type": "function" - }, - { - "constant": false, - "inputs": [ - { - "internalType": "uint256", - "name": "_minimumBurnAmount", - "type": "uint256" - } - ], - "name": "updateMinimumBurnAmount", - "outputs": [], - "payable": false, - "stateMutability": "nonpayable", - "type": "function" - }, - { - "constant": false, - "inputs": [ - { - "internalType": "address", - "name": "_nextMintAuthority", - "type": "address" - } - ], - "name": "updateMintAuthority", - "outputs": [], - "payable": false, - "stateMutability": "nonpayable", - "type": "function" - }, - { - "constant": false, - "inputs": [ - { - "internalType": "uint16", - "name": "_nextMintFee", - "type": "uint16" - } - ], - "name": "updateMintFee", - "outputs": [], - "payable": false, - "stateMutability": "nonpayable", - "type": "function" - }, - { - "constant": true, - "inputs": [ - { - "internalType": "bytes32", - "name": "_signedMessageHash", - "type": "bytes32" - }, - { - "internalType": "bytes", - "name": "_sig", - "type": "bytes" - } - ], - "name": "verifySignature", - "outputs": [ - { - "internalType": "bool", - "name": "", - "type": "bool" - } - ], - "payable": false, - "stateMutability": "view", - "type": "function" - } - ], - "sourcePath": "~/github/renproject/ren-sol/contracts/Gateway/Gateway.sol", - "compiler": { - "name": "solc", - "version": "0.5.16+commit.9c3226ce.Emscripten.clang" - }, - "networks": { - "42": { - "events": { - "0x1619fc95050ffb8c94c9077c82b3e1ebbf8d571b6234241c55ba0aaf40da019e": { - "anonymous": false, - "inputs": [ - { - "indexed": false, - "internalType": "bytes", - "name": "_to", - "type": "bytes" - }, - { - "indexed": false, - "internalType": "uint256", - "name": "_amount", - "type": "uint256" - }, - { - "indexed": true, - "internalType": "uint256", - "name": "_n", - "type": "uint256" - }, - { - "indexed": true, - "internalType": "bytes", - "name": "_indexedTo", - "type": "bytes" - } - ], - "name": "LogBurn", - "type": "event" - }, - "0xa58ba939eb08dab7eaf8ad09c16e7405ee88e5153e15da62d5481296a9f727fa": { - "anonymous": false, - "inputs": [ - { - "indexed": true, - "internalType": "address", - "name": "_to", - "type": "address" - }, - { - "indexed": false, - "internalType": "uint256", - "name": "_amount", - "type": "uint256" - }, - { - "indexed": true, - "internalType": "uint256", - "name": "_n", - "type": "uint256" - }, - { - "indexed": true, - "internalType": "bytes32", - "name": "_signedMessageHash", - "type": "bytes32" - } - ], - "name": "LogMint", - "type": "event" - }, - "0xf0f08e606c1dd3a2c220ada53422fd9fe0aa75614b27db0549f649de3ad2072a": { - "anonymous": false, - "inputs": [ - { - "indexed": true, - "internalType": "address", - "name": "_newMintAuthority", - "type": "address" - } - ], - "name": "LogMintAuthorityUpdated", - "type": "event" - }, - "0x8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0": { - "anonymous": false, - "inputs": [ - { - "indexed": true, - "internalType": "address", - "name": "previousOwner", - "type": "address" - }, - { - "indexed": true, - "internalType": "address", - "name": "newOwner", - "type": "address" - } - ], - "name": "OwnershipTransferred", - "type": "event" - } - }, - "links": {}, - "address": "0x080d856994Fed1124c93AcA580aF035a86e9e9c7" - } - }, - "schemaVersion": "3.0.23" -} \ No newline at end of file diff --git a/build/testnet/GatewayRegistry.json b/build/testnet/GatewayRegistry.json deleted file mode 100644 index 5fff8a57..00000000 --- a/build/testnet/GatewayRegistry.json +++ /dev/null @@ -1,556 +0,0 @@ -{ - "contractName": "GatewayRegistry", - "abi": [ - { - "inputs": [], - "payable": false, - "stateMutability": "nonpayable", - "type": "constructor" - }, - { - "anonymous": false, - "inputs": [ - { - "indexed": false, - "internalType": "string", - "name": "_symbol", - "type": "string" - }, - { - "indexed": true, - "internalType": "string", - "name": "_indexedSymbol", - "type": "string" - }, - { - "indexed": true, - "internalType": "address", - "name": "_token", - "type": "address" - }, - { - "indexed": true, - "internalType": "address", - "name": "_gatewayContract", - "type": "address" - } - ], - "name": "LogGatewayDeregistered", - "type": "event" - }, - { - "anonymous": false, - "inputs": [ - { - "indexed": false, - "internalType": "string", - "name": "_symbol", - "type": "string" - }, - { - "indexed": true, - "internalType": "string", - "name": "_indexedSymbol", - "type": "string" - }, - { - "indexed": true, - "internalType": "address", - "name": "_token", - "type": "address" - }, - { - "indexed": true, - "internalType": "address", - "name": "_gatewayContract", - "type": "address" - } - ], - "name": "LogGatewayRegistered", - "type": "event" - }, - { - "anonymous": false, - "inputs": [ - { - "indexed": true, - "internalType": "address", - "name": "_token", - "type": "address" - }, - { - "indexed": true, - "internalType": "address", - "name": "_currentGatewayContract", - "type": "address" - }, - { - "indexed": true, - "internalType": "address", - "name": "_newGatewayContract", - "type": "address" - } - ], - "name": "LogGatewayUpdated", - "type": "event" - }, - { - "anonymous": false, - "inputs": [ - { - "indexed": true, - "internalType": "address", - "name": "previousOwner", - "type": "address" - }, - { - "indexed": true, - "internalType": "address", - "name": "newOwner", - "type": "address" - } - ], - "name": "OwnershipTransferred", - "type": "event" - }, - { - "constant": false, - "inputs": [ - { - "internalType": "address", - "name": "_token", - "type": "address" - } - ], - "name": "blacklistRecoverableToken", - "outputs": [], - "payable": false, - "stateMutability": "nonpayable", - "type": "function" - }, - { - "constant": false, - "inputs": [], - "name": "claimOwnership", - "outputs": [], - "payable": false, - "stateMutability": "nonpayable", - "type": "function" - }, - { - "constant": true, - "inputs": [ - { - "internalType": "string", - "name": "_tokenSymbol", - "type": "string" - } - ], - "name": "getGatewayBySymbol", - "outputs": [ - { - "internalType": "contract IGateway", - "name": "", - "type": "address" - } - ], - "payable": false, - "stateMutability": "view", - "type": "function" - }, - { - "constant": true, - "inputs": [ - { - "internalType": "address", - "name": "_token", - "type": "address" - } - ], - "name": "getGatewayByToken", - "outputs": [ - { - "internalType": "contract IGateway", - "name": "", - "type": "address" - } - ], - "payable": false, - "stateMutability": "view", - "type": "function" - }, - { - "constant": true, - "inputs": [ - { - "internalType": "address", - "name": "_start", - "type": "address" - }, - { - "internalType": "uint256", - "name": "_count", - "type": "uint256" - } - ], - "name": "getGateways", - "outputs": [ - { - "internalType": "address[]", - "name": "", - "type": "address[]" - } - ], - "payable": false, - "stateMutability": "view", - "type": "function" - }, - { - "constant": true, - "inputs": [ - { - "internalType": "address", - "name": "_start", - "type": "address" - }, - { - "internalType": "uint256", - "name": "_count", - "type": "uint256" - } - ], - "name": "getRenTokens", - "outputs": [ - { - "internalType": "address[]", - "name": "", - "type": "address[]" - } - ], - "payable": false, - "stateMutability": "view", - "type": "function" - }, - { - "constant": true, - "inputs": [ - { - "internalType": "string", - "name": "_tokenSymbol", - "type": "string" - } - ], - "name": "getTokenBySymbol", - "outputs": [ - { - "internalType": "contract IERC20", - "name": "", - "type": "address" - } - ], - "payable": false, - "stateMutability": "view", - "type": "function" - }, - { - "constant": false, - "inputs": [ - { - "internalType": "address", - "name": "_nextOwner", - "type": "address" - } - ], - "name": "initialize", - "outputs": [], - "payable": false, - "stateMutability": "nonpayable", - "type": "function" - }, - { - "constant": true, - "inputs": [], - "name": "isOwner", - "outputs": [ - { - "internalType": "bool", - "name": "", - "type": "bool" - } - ], - "payable": false, - "stateMutability": "view", - "type": "function" - }, - { - "constant": true, - "inputs": [], - "name": "owner", - "outputs": [ - { - "internalType": "address", - "name": "", - "type": "address" - } - ], - "payable": false, - "stateMutability": "view", - "type": "function" - }, - { - "constant": true, - "inputs": [], - "name": "pendingOwner", - "outputs": [ - { - "internalType": "address", - "name": "", - "type": "address" - } - ], - "payable": false, - "stateMutability": "view", - "type": "function" - }, - { - "constant": false, - "inputs": [ - { - "internalType": "address", - "name": "_token", - "type": "address" - } - ], - "name": "recoverTokens", - "outputs": [], - "payable": false, - "stateMutability": "nonpayable", - "type": "function" - }, - { - "constant": false, - "inputs": [ - { - "internalType": "string", - "name": "_symbol", - "type": "string" - } - ], - "name": "removeGateway", - "outputs": [], - "payable": false, - "stateMutability": "nonpayable", - "type": "function" - }, - { - "constant": false, - "inputs": [], - "name": "renounceOwnership", - "outputs": [], - "payable": false, - "stateMutability": "nonpayable", - "type": "function" - }, - { - "constant": false, - "inputs": [ - { - "internalType": "string", - "name": "_symbol", - "type": "string" - }, - { - "internalType": "address", - "name": "_token", - "type": "address" - }, - { - "internalType": "address", - "name": "_gatewayContract", - "type": "address" - } - ], - "name": "setGateway", - "outputs": [], - "payable": false, - "stateMutability": "nonpayable", - "type": "function" - }, - { - "constant": true, - "inputs": [ - { - "internalType": "string", - "name": "_tokenSymbol", - "type": "string" - } - ], - "name": "symbolIsValid", - "outputs": [ - { - "internalType": "bool", - "name": "", - "type": "bool" - } - ], - "payable": false, - "stateMutability": "pure", - "type": "function" - }, - { - "constant": false, - "inputs": [ - { - "internalType": "address", - "name": "newOwner", - "type": "address" - } - ], - "name": "transferOwnership", - "outputs": [], - "payable": false, - "stateMutability": "nonpayable", - "type": "function" - }, - { - "constant": false, - "inputs": [ - { - "internalType": "address", - "name": "_token", - "type": "address" - }, - { - "internalType": "address", - "name": "_newGatewayContract", - "type": "address" - } - ], - "name": "updateGateway", - "outputs": [], - "payable": false, - "stateMutability": "nonpayable", - "type": "function" - } - ], - "sourcePath": "~/github/renproject/ren-sol/contracts/Gateway/GatewayRegistry.sol", - "compiler": { - "name": "solc", - "version": "0.5.16+commit.9c3226ce.Emscripten.clang" - }, - "networks": { - "42": { - "events": { - "0xea98e49727cf7c3a8c3926a036a6d41047c9b766d9109f22962950f37a2094aa": { - "anonymous": false, - "inputs": [ - { - "indexed": false, - "internalType": "string", - "name": "_symbol", - "type": "string" - }, - { - "indexed": true, - "internalType": "string", - "name": "_indexedSymbol", - "type": "string" - }, - { - "indexed": true, - "internalType": "address", - "name": "_token", - "type": "address" - }, - { - "indexed": true, - "internalType": "address", - "name": "_gatewayContract", - "type": "address" - } - ], - "name": "LogGatewayDeregistered", - "type": "event" - }, - "0xd433aae9ea620c1976ff88f75c629f477dbffe6bf277edad8a31c983117ab32a": { - "anonymous": false, - "inputs": [ - { - "indexed": false, - "internalType": "string", - "name": "_symbol", - "type": "string" - }, - { - "indexed": true, - "internalType": "string", - "name": "_indexedSymbol", - "type": "string" - }, - { - "indexed": true, - "internalType": "address", - "name": "_token", - "type": "address" - }, - { - "indexed": true, - "internalType": "address", - "name": "_gatewayContract", - "type": "address" - } - ], - "name": "LogGatewayRegistered", - "type": "event" - }, - "0x2dc9e208c924a5b14066ecb7121b371da427e696ad69456ed07a52cd2a710d99": { - "anonymous": false, - "inputs": [ - { - "indexed": true, - "internalType": "address", - "name": "_token", - "type": "address" - }, - { - "indexed": true, - "internalType": "address", - "name": "_currentGatewayContract", - "type": "address" - }, - { - "indexed": true, - "internalType": "address", - "name": "_newGatewayContract", - "type": "address" - } - ], - "name": "LogGatewayUpdated", - "type": "event" - }, - "0x8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0": { - "anonymous": false, - "inputs": [ - { - "indexed": true, - "internalType": "address", - "name": "previousOwner", - "type": "address" - }, - { - "indexed": true, - "internalType": "address", - "name": "newOwner", - "type": "address" - } - ], - "name": "OwnershipTransferred", - "type": "event" - } - }, - "links": {}, - "address": "0x557e211EC5fc9a6737d2C6b7a1aDe3e0C11A8D5D" - } - }, - "schemaVersion": "3.0.23" -} \ No newline at end of file diff --git a/build/testnet/ProtocolLogicV1.json b/build/testnet/ProtocolLogicV1.json deleted file mode 100644 index 1b388615..00000000 --- a/build/testnet/ProtocolLogicV1.json +++ /dev/null @@ -1,575 +0,0 @@ -{ - "contractName": "ProtocolLogicV1", - "abi": [ - { - "anonymous": false, - "inputs": [ - { - "indexed": false, - "internalType": "string", - "name": "_symbol", - "type": "string" - }, - { - "indexed": true, - "internalType": "string", - "name": "_indexedSymbol", - "type": "string" - }, - { - "indexed": true, - "internalType": "address", - "name": "_tokenAddress", - "type": "address" - }, - { - "indexed": true, - "internalType": "address", - "name": "_gatewayAddress", - "type": "address" - } - ], - "name": "LogGatewayDeregistered", - "type": "event" - }, - { - "anonymous": false, - "inputs": [ - { - "indexed": false, - "internalType": "string", - "name": "_symbol", - "type": "string" - }, - { - "indexed": true, - "internalType": "string", - "name": "_indexedSymbol", - "type": "string" - }, - { - "indexed": true, - "internalType": "address", - "name": "_tokenAddress", - "type": "address" - }, - { - "indexed": true, - "internalType": "address", - "name": "_gatewayAddress", - "type": "address" - } - ], - "name": "LogGatewayRegistered", - "type": "event" - }, - { - "anonymous": false, - "inputs": [ - { - "indexed": true, - "internalType": "address", - "name": "_tokenAddress", - "type": "address" - }, - { - "indexed": true, - "internalType": "address", - "name": "_currentGatewayAddress", - "type": "address" - }, - { - "indexed": true, - "internalType": "address", - "name": "_newGatewayAddress", - "type": "address" - } - ], - "name": "LogGatewayUpdated", - "type": "event" - }, - { - "anonymous": false, - "inputs": [ - { - "indexed": true, - "internalType": "address", - "name": "previousOwner", - "type": "address" - }, - { - "indexed": true, - "internalType": "address", - "name": "newOwner", - "type": "address" - } - ], - "name": "OwnershipTransferred", - "type": "event" - }, - { - "constant": false, - "inputs": [ - { - "internalType": "contract DarknodeRegistryLogicV1", - "name": "_newDarknodeRegistry", - "type": "address" - } - ], - "name": "_updateDarknodeRegistry", - "outputs": [], - "payable": false, - "stateMutability": "nonpayable", - "type": "function" - }, - { - "constant": false, - "inputs": [ - { - "internalType": "contract GatewayRegistry", - "name": "_newGatewayRegistry", - "type": "address" - } - ], - "name": "_updateGatewayRegistry", - "outputs": [], - "payable": false, - "stateMutability": "nonpayable", - "type": "function" - }, - { - "constant": false, - "inputs": [], - "name": "claimOwnership", - "outputs": [], - "payable": false, - "stateMutability": "nonpayable", - "type": "function" - }, - { - "constant": true, - "inputs": [], - "name": "darknodePayment", - "outputs": [ - { - "internalType": "contract DarknodePayment", - "name": "", - "type": "address" - } - ], - "payable": false, - "stateMutability": "view", - "type": "function" - }, - { - "constant": true, - "inputs": [], - "name": "darknodePaymentStore", - "outputs": [ - { - "internalType": "contract DarknodePaymentStore", - "name": "", - "type": "address" - } - ], - "payable": false, - "stateMutability": "view", - "type": "function" - }, - { - "constant": true, - "inputs": [], - "name": "darknodeRegistry", - "outputs": [ - { - "internalType": "contract DarknodeRegistryLogicV1", - "name": "", - "type": "address" - } - ], - "payable": false, - "stateMutability": "view", - "type": "function" - }, - { - "constant": true, - "inputs": [], - "name": "darknodeRegistryStore", - "outputs": [ - { - "internalType": "contract DarknodeRegistryStore", - "name": "", - "type": "address" - } - ], - "payable": false, - "stateMutability": "view", - "type": "function" - }, - { - "constant": true, - "inputs": [], - "name": "darknodeSlasher", - "outputs": [ - { - "internalType": "contract DarknodeSlasher", - "name": "", - "type": "address" - } - ], - "payable": false, - "stateMutability": "view", - "type": "function" - }, - { - "constant": true, - "inputs": [], - "name": "gatewayRegistry", - "outputs": [ - { - "internalType": "contract GatewayRegistry", - "name": "", - "type": "address" - } - ], - "payable": false, - "stateMutability": "view", - "type": "function" - }, - { - "constant": true, - "inputs": [ - { - "internalType": "string", - "name": "_tokenSymbol", - "type": "string" - } - ], - "name": "getGatewayBySymbol", - "outputs": [ - { - "internalType": "contract IGateway", - "name": "", - "type": "address" - } - ], - "payable": false, - "stateMutability": "view", - "type": "function" - }, - { - "constant": true, - "inputs": [ - { - "internalType": "address", - "name": "_tokenAddress", - "type": "address" - } - ], - "name": "getGatewayByToken", - "outputs": [ - { - "internalType": "contract IGateway", - "name": "", - "type": "address" - } - ], - "payable": false, - "stateMutability": "view", - "type": "function" - }, - { - "constant": true, - "inputs": [ - { - "internalType": "address", - "name": "_start", - "type": "address" - }, - { - "internalType": "uint256", - "name": "_count", - "type": "uint256" - } - ], - "name": "getGateways", - "outputs": [ - { - "internalType": "address[]", - "name": "", - "type": "address[]" - } - ], - "payable": false, - "stateMutability": "view", - "type": "function" - }, - { - "constant": true, - "inputs": [ - { - "internalType": "address", - "name": "_start", - "type": "address" - }, - { - "internalType": "uint256", - "name": "_count", - "type": "uint256" - } - ], - "name": "getRenTokens", - "outputs": [ - { - "internalType": "address[]", - "name": "", - "type": "address[]" - } - ], - "payable": false, - "stateMutability": "view", - "type": "function" - }, - { - "constant": true, - "inputs": [ - { - "internalType": "string", - "name": "_tokenSymbol", - "type": "string" - } - ], - "name": "getTokenBySymbol", - "outputs": [ - { - "internalType": "contract IERC20", - "name": "", - "type": "address" - } - ], - "payable": false, - "stateMutability": "view", - "type": "function" - }, - { - "constant": false, - "inputs": [ - { - "internalType": "address", - "name": "_nextOwner", - "type": "address" - } - ], - "name": "initialize", - "outputs": [], - "payable": false, - "stateMutability": "nonpayable", - "type": "function" - }, - { - "constant": true, - "inputs": [], - "name": "isOwner", - "outputs": [ - { - "internalType": "bool", - "name": "", - "type": "bool" - } - ], - "payable": false, - "stateMutability": "view", - "type": "function" - }, - { - "constant": true, - "inputs": [], - "name": "owner", - "outputs": [ - { - "internalType": "address", - "name": "", - "type": "address" - } - ], - "payable": false, - "stateMutability": "view", - "type": "function" - }, - { - "constant": true, - "inputs": [], - "name": "pendingOwner", - "outputs": [ - { - "internalType": "address", - "name": "", - "type": "address" - } - ], - "payable": false, - "stateMutability": "view", - "type": "function" - }, - { - "constant": true, - "inputs": [], - "name": "renToken", - "outputs": [ - { - "internalType": "contract RenToken", - "name": "", - "type": "address" - } - ], - "payable": false, - "stateMutability": "view", - "type": "function" - }, - { - "constant": false, - "inputs": [], - "name": "renounceOwnership", - "outputs": [], - "payable": false, - "stateMutability": "nonpayable", - "type": "function" - }, - { - "constant": false, - "inputs": [ - { - "internalType": "address", - "name": "newOwner", - "type": "address" - } - ], - "name": "transferOwnership", - "outputs": [], - "payable": false, - "stateMutability": "nonpayable", - "type": "function" - } - ], - "sourcePath": "~/github/renproject/ren-sol/contracts/Protocol/Protocol.sol", - "compiler": { - "name": "solc", - "version": "0.5.16+commit.9c3226ce.Emscripten.clang" - }, - "networks": { - "42": { - "events": { - "0xea98e49727cf7c3a8c3926a036a6d41047c9b766d9109f22962950f37a2094aa": { - "anonymous": false, - "inputs": [ - { - "indexed": false, - "internalType": "string", - "name": "_symbol", - "type": "string" - }, - { - "indexed": true, - "internalType": "string", - "name": "_indexedSymbol", - "type": "string" - }, - { - "indexed": true, - "internalType": "address", - "name": "_tokenAddress", - "type": "address" - }, - { - "indexed": true, - "internalType": "address", - "name": "_gatewayAddress", - "type": "address" - } - ], - "name": "LogGatewayDeregistered", - "type": "event" - }, - "0xd433aae9ea620c1976ff88f75c629f477dbffe6bf277edad8a31c983117ab32a": { - "anonymous": false, - "inputs": [ - { - "indexed": false, - "internalType": "string", - "name": "_symbol", - "type": "string" - }, - { - "indexed": true, - "internalType": "string", - "name": "_indexedSymbol", - "type": "string" - }, - { - "indexed": true, - "internalType": "address", - "name": "_tokenAddress", - "type": "address" - }, - { - "indexed": true, - "internalType": "address", - "name": "_gatewayAddress", - "type": "address" - } - ], - "name": "LogGatewayRegistered", - "type": "event" - }, - "0x2dc9e208c924a5b14066ecb7121b371da427e696ad69456ed07a52cd2a710d99": { - "anonymous": false, - "inputs": [ - { - "indexed": true, - "internalType": "address", - "name": "_tokenAddress", - "type": "address" - }, - { - "indexed": true, - "internalType": "address", - "name": "_currentGatewayAddress", - "type": "address" - }, - { - "indexed": true, - "internalType": "address", - "name": "_newGatewayAddress", - "type": "address" - } - ], - "name": "LogGatewayUpdated", - "type": "event" - }, - "0x8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0": { - "anonymous": false, - "inputs": [ - { - "indexed": true, - "internalType": "address", - "name": "previousOwner", - "type": "address" - }, - { - "indexed": true, - "internalType": "address", - "name": "newOwner", - "type": "address" - } - ], - "name": "OwnershipTransferred", - "type": "event" - } - }, - "links": {}, - "address": "0x43d39d7ea61741f26E09D377F4E79B1F847Dc356", - "transactionHash": "0xcf278a30b3f4eb4eead20f5b4c022ce7e134ffc89dc61f1a26e9107cf2215a04" - } - }, - "schemaVersion": "3.0.23" -} \ No newline at end of file diff --git a/build/testnet/ProtocolProxy.json b/build/testnet/ProtocolProxy.json deleted file mode 100644 index 6f3a68c1..00000000 --- a/build/testnet/ProtocolProxy.json +++ /dev/null @@ -1,214 +0,0 @@ -{ - "contractName": "ProtocolProxy", - "abi": [ - { - "anonymous": false, - "inputs": [ - { - "indexed": false, - "internalType": "address", - "name": "previousAdmin", - "type": "address" - }, - { - "indexed": false, - "internalType": "address", - "name": "newAdmin", - "type": "address" - } - ], - "name": "AdminChanged", - "type": "event" - }, - { - "anonymous": false, - "inputs": [ - { - "indexed": true, - "internalType": "address", - "name": "implementation", - "type": "address" - } - ], - "name": "Upgraded", - "type": "event" - }, - { - "payable": true, - "stateMutability": "payable", - "type": "fallback" - }, - { - "constant": false, - "inputs": [], - "name": "admin", - "outputs": [ - { - "internalType": "address", - "name": "", - "type": "address" - } - ], - "payable": false, - "stateMutability": "nonpayable", - "type": "function" - }, - { - "constant": false, - "inputs": [ - { - "internalType": "address", - "name": "newAdmin", - "type": "address" - } - ], - "name": "changeAdmin", - "outputs": [], - "payable": false, - "stateMutability": "nonpayable", - "type": "function" - }, - { - "constant": false, - "inputs": [], - "name": "implementation", - "outputs": [ - { - "internalType": "address", - "name": "", - "type": "address" - } - ], - "payable": false, - "stateMutability": "nonpayable", - "type": "function" - }, - { - "constant": false, - "inputs": [ - { - "internalType": "address", - "name": "_logic", - "type": "address" - }, - { - "internalType": "address", - "name": "_admin", - "type": "address" - }, - { - "internalType": "bytes", - "name": "_data", - "type": "bytes" - } - ], - "name": "initialize", - "outputs": [], - "payable": true, - "stateMutability": "payable", - "type": "function" - }, - { - "constant": false, - "inputs": [ - { - "internalType": "address", - "name": "_logic", - "type": "address" - }, - { - "internalType": "bytes", - "name": "_data", - "type": "bytes" - } - ], - "name": "initialize", - "outputs": [], - "payable": true, - "stateMutability": "payable", - "type": "function" - }, - { - "constant": false, - "inputs": [ - { - "internalType": "address", - "name": "newImplementation", - "type": "address" - } - ], - "name": "upgradeTo", - "outputs": [], - "payable": false, - "stateMutability": "nonpayable", - "type": "function" - }, - { - "constant": false, - "inputs": [ - { - "internalType": "address", - "name": "newImplementation", - "type": "address" - }, - { - "internalType": "bytes", - "name": "data", - "type": "bytes" - } - ], - "name": "upgradeToAndCall", - "outputs": [], - "payable": true, - "stateMutability": "payable", - "type": "function" - } - ], - "sourcePath": "~/github/renproject/ren-sol/contracts/Protocol/Protocol.sol", - "compiler": { - "name": "solc", - "version": "0.5.16+commit.9c3226ce.Emscripten.clang" - }, - "networks": { - "42": { - "events": { - "0x7e644d79422f17c01e4894b5f4f588d331ebfa28653d42ae832dc59e38c9798f": { - "anonymous": false, - "inputs": [ - { - "indexed": false, - "internalType": "address", - "name": "previousAdmin", - "type": "address" - }, - { - "indexed": false, - "internalType": "address", - "name": "newAdmin", - "type": "address" - } - ], - "name": "AdminChanged", - "type": "event" - }, - "0xbc7cd75a20ee27fd9adebab32041f755214dbc6bffa90cc0225b39da2e5c2d3b": { - "anonymous": false, - "inputs": [ - { - "indexed": true, - "internalType": "address", - "name": "implementation", - "type": "address" - } - ], - "name": "Upgraded", - "type": "event" - } - }, - "links": {}, - "address": "0x59e23c087cA9bd9ce162875811CD6e99134D6d0F", - "transactionHash": "0x61b13d0aac547cef1bf7ef582236a9f457a0b9cca5c374a169b57cd29ff1a918" - } - }, - "schemaVersion": "3.0.23" -} \ No newline at end of file diff --git a/build/testnet/RenBCH.json b/build/testnet/RenBCH.json deleted file mode 100644 index d32e625e..00000000 --- a/build/testnet/RenBCH.json +++ /dev/null @@ -1,213 +0,0 @@ -{ - "contractName": "RenBCH", - "abi": [ - { - "anonymous": false, - "inputs": [ - { - "indexed": false, - "internalType": "address", - "name": "previousAdmin", - "type": "address" - }, - { - "indexed": false, - "internalType": "address", - "name": "newAdmin", - "type": "address" - } - ], - "name": "AdminChanged", - "type": "event" - }, - { - "anonymous": false, - "inputs": [ - { - "indexed": true, - "internalType": "address", - "name": "implementation", - "type": "address" - } - ], - "name": "Upgraded", - "type": "event" - }, - { - "payable": true, - "stateMutability": "payable", - "type": "fallback" - }, - { - "constant": false, - "inputs": [], - "name": "admin", - "outputs": [ - { - "internalType": "address", - "name": "", - "type": "address" - } - ], - "payable": false, - "stateMutability": "nonpayable", - "type": "function" - }, - { - "constant": false, - "inputs": [ - { - "internalType": "address", - "name": "newAdmin", - "type": "address" - } - ], - "name": "changeAdmin", - "outputs": [], - "payable": false, - "stateMutability": "nonpayable", - "type": "function" - }, - { - "constant": false, - "inputs": [], - "name": "implementation", - "outputs": [ - { - "internalType": "address", - "name": "", - "type": "address" - } - ], - "payable": false, - "stateMutability": "nonpayable", - "type": "function" - }, - { - "constant": false, - "inputs": [ - { - "internalType": "address", - "name": "_logic", - "type": "address" - }, - { - "internalType": "address", - "name": "_admin", - "type": "address" - }, - { - "internalType": "bytes", - "name": "_data", - "type": "bytes" - } - ], - "name": "initialize", - "outputs": [], - "payable": true, - "stateMutability": "payable", - "type": "function" - }, - { - "constant": false, - "inputs": [ - { - "internalType": "address", - "name": "_logic", - "type": "address" - }, - { - "internalType": "bytes", - "name": "_data", - "type": "bytes" - } - ], - "name": "initialize", - "outputs": [], - "payable": true, - "stateMutability": "payable", - "type": "function" - }, - { - "constant": false, - "inputs": [ - { - "internalType": "address", - "name": "newImplementation", - "type": "address" - } - ], - "name": "upgradeTo", - "outputs": [], - "payable": false, - "stateMutability": "nonpayable", - "type": "function" - }, - { - "constant": false, - "inputs": [ - { - "internalType": "address", - "name": "newImplementation", - "type": "address" - }, - { - "internalType": "bytes", - "name": "data", - "type": "bytes" - } - ], - "name": "upgradeToAndCall", - "outputs": [], - "payable": true, - "stateMutability": "payable", - "type": "function" - } - ], - "sourcePath": "~/github/renproject/ren-sol/contracts/Gateway/RenERC20.sol", - "compiler": { - "name": "solc", - "version": "0.5.16+commit.9c3226ce.Emscripten.clang" - }, - "networks": { - "42": { - "events": { - "0x7e644d79422f17c01e4894b5f4f588d331ebfa28653d42ae832dc59e38c9798f": { - "anonymous": false, - "inputs": [ - { - "indexed": false, - "internalType": "address", - "name": "previousAdmin", - "type": "address" - }, - { - "indexed": false, - "internalType": "address", - "name": "newAdmin", - "type": "address" - } - ], - "name": "AdminChanged", - "type": "event" - }, - "0xbc7cd75a20ee27fd9adebab32041f755214dbc6bffa90cc0225b39da2e5c2d3b": { - "anonymous": false, - "inputs": [ - { - "indexed": true, - "internalType": "address", - "name": "implementation", - "type": "address" - } - ], - "name": "Upgraded", - "type": "event" - } - }, - "links": {}, - "address": "0x618dC53e856b1A601119F2Fed5F1E873bCf7Bd6e" - } - }, - "schemaVersion": "3.0.23" -} \ No newline at end of file diff --git a/build/testnet/RenBTC.json b/build/testnet/RenBTC.json deleted file mode 100644 index 0fc1f290..00000000 --- a/build/testnet/RenBTC.json +++ /dev/null @@ -1,213 +0,0 @@ -{ - "contractName": "RenBTC", - "abi": [ - { - "anonymous": false, - "inputs": [ - { - "indexed": false, - "internalType": "address", - "name": "previousAdmin", - "type": "address" - }, - { - "indexed": false, - "internalType": "address", - "name": "newAdmin", - "type": "address" - } - ], - "name": "AdminChanged", - "type": "event" - }, - { - "anonymous": false, - "inputs": [ - { - "indexed": true, - "internalType": "address", - "name": "implementation", - "type": "address" - } - ], - "name": "Upgraded", - "type": "event" - }, - { - "payable": true, - "stateMutability": "payable", - "type": "fallback" - }, - { - "constant": false, - "inputs": [], - "name": "admin", - "outputs": [ - { - "internalType": "address", - "name": "", - "type": "address" - } - ], - "payable": false, - "stateMutability": "nonpayable", - "type": "function" - }, - { - "constant": false, - "inputs": [ - { - "internalType": "address", - "name": "newAdmin", - "type": "address" - } - ], - "name": "changeAdmin", - "outputs": [], - "payable": false, - "stateMutability": "nonpayable", - "type": "function" - }, - { - "constant": false, - "inputs": [], - "name": "implementation", - "outputs": [ - { - "internalType": "address", - "name": "", - "type": "address" - } - ], - "payable": false, - "stateMutability": "nonpayable", - "type": "function" - }, - { - "constant": false, - "inputs": [ - { - "internalType": "address", - "name": "_logic", - "type": "address" - }, - { - "internalType": "address", - "name": "_admin", - "type": "address" - }, - { - "internalType": "bytes", - "name": "_data", - "type": "bytes" - } - ], - "name": "initialize", - "outputs": [], - "payable": true, - "stateMutability": "payable", - "type": "function" - }, - { - "constant": false, - "inputs": [ - { - "internalType": "address", - "name": "_logic", - "type": "address" - }, - { - "internalType": "bytes", - "name": "_data", - "type": "bytes" - } - ], - "name": "initialize", - "outputs": [], - "payable": true, - "stateMutability": "payable", - "type": "function" - }, - { - "constant": false, - "inputs": [ - { - "internalType": "address", - "name": "newImplementation", - "type": "address" - } - ], - "name": "upgradeTo", - "outputs": [], - "payable": false, - "stateMutability": "nonpayable", - "type": "function" - }, - { - "constant": false, - "inputs": [ - { - "internalType": "address", - "name": "newImplementation", - "type": "address" - }, - { - "internalType": "bytes", - "name": "data", - "type": "bytes" - } - ], - "name": "upgradeToAndCall", - "outputs": [], - "payable": true, - "stateMutability": "payable", - "type": "function" - } - ], - "sourcePath": "~/github/renproject/ren-sol/contracts/Gateway/RenERC20.sol", - "compiler": { - "name": "solc", - "version": "0.5.16+commit.9c3226ce.Emscripten.clang" - }, - "networks": { - "42": { - "events": { - "0x7e644d79422f17c01e4894b5f4f588d331ebfa28653d42ae832dc59e38c9798f": { - "anonymous": false, - "inputs": [ - { - "indexed": false, - "internalType": "address", - "name": "previousAdmin", - "type": "address" - }, - { - "indexed": false, - "internalType": "address", - "name": "newAdmin", - "type": "address" - } - ], - "name": "AdminChanged", - "type": "event" - }, - "0xbc7cd75a20ee27fd9adebab32041f755214dbc6bffa90cc0225b39da2e5c2d3b": { - "anonymous": false, - "inputs": [ - { - "indexed": true, - "internalType": "address", - "name": "implementation", - "type": "address" - } - ], - "name": "Upgraded", - "type": "event" - } - }, - "links": {}, - "address": "0x0A9ADD98C076448CBcFAcf5E457DA12ddbEF4A8f" - } - }, - "schemaVersion": "3.0.23" -} \ No newline at end of file diff --git a/build/testnet/RenERC20LogicV1.json b/build/testnet/RenERC20LogicV1.json deleted file mode 100644 index bab70960..00000000 --- a/build/testnet/RenERC20LogicV1.json +++ /dev/null @@ -1,937 +0,0 @@ -{ - "contractName": "RenERC20LogicV1", - "abi": [ - { - "anonymous": false, - "inputs": [ - { - "indexed": true, - "internalType": "address", - "name": "owner", - "type": "address" - }, - { - "indexed": true, - "internalType": "address", - "name": "spender", - "type": "address" - }, - { - "indexed": false, - "internalType": "uint256", - "name": "value", - "type": "uint256" - } - ], - "name": "Approval", - "type": "event" - }, - { - "anonymous": false, - "inputs": [ - { - "indexed": true, - "internalType": "uint256", - "name": "_rate", - "type": "uint256" - } - ], - "name": "LogRateChanged", - "type": "event" - }, - { - "anonymous": false, - "inputs": [ - { - "indexed": true, - "internalType": "address", - "name": "previousOwner", - "type": "address" - }, - { - "indexed": true, - "internalType": "address", - "name": "newOwner", - "type": "address" - } - ], - "name": "OwnershipTransferred", - "type": "event" - }, - { - "anonymous": false, - "inputs": [ - { - "indexed": true, - "internalType": "address", - "name": "from", - "type": "address" - }, - { - "indexed": true, - "internalType": "address", - "name": "to", - "type": "address" - }, - { - "indexed": false, - "internalType": "uint256", - "name": "value", - "type": "uint256" - } - ], - "name": "Transfer", - "type": "event" - }, - { - "constant": true, - "inputs": [], - "name": "DOMAIN_SEPARATOR", - "outputs": [ - { - "internalType": "bytes32", - "name": "", - "type": "bytes32" - } - ], - "payable": false, - "stateMutability": "view", - "type": "function" - }, - { - "constant": true, - "inputs": [], - "name": "PERMIT_TYPEHASH", - "outputs": [ - { - "internalType": "bytes32", - "name": "", - "type": "bytes32" - } - ], - "payable": false, - "stateMutability": "view", - "type": "function" - }, - { - "constant": true, - "inputs": [], - "name": "_rateScale", - "outputs": [ - { - "internalType": "uint256", - "name": "", - "type": "uint256" - } - ], - "payable": false, - "stateMutability": "view", - "type": "function" - }, - { - "constant": true, - "inputs": [ - { - "internalType": "address", - "name": "owner", - "type": "address" - }, - { - "internalType": "address", - "name": "spender", - "type": "address" - } - ], - "name": "allowance", - "outputs": [ - { - "internalType": "uint256", - "name": "", - "type": "uint256" - } - ], - "payable": false, - "stateMutability": "view", - "type": "function" - }, - { - "constant": false, - "inputs": [ - { - "internalType": "address", - "name": "spender", - "type": "address" - }, - { - "internalType": "uint256", - "name": "amount", - "type": "uint256" - } - ], - "name": "approve", - "outputs": [ - { - "internalType": "bool", - "name": "", - "type": "bool" - } - ], - "payable": false, - "stateMutability": "nonpayable", - "type": "function" - }, - { - "constant": true, - "inputs": [ - { - "internalType": "address", - "name": "account", - "type": "address" - } - ], - "name": "balanceOf", - "outputs": [ - { - "internalType": "uint256", - "name": "", - "type": "uint256" - } - ], - "payable": false, - "stateMutability": "view", - "type": "function" - }, - { - "constant": true, - "inputs": [ - { - "internalType": "address", - "name": "_account", - "type": "address" - } - ], - "name": "balanceOfUnderlying", - "outputs": [ - { - "internalType": "uint256", - "name": "", - "type": "uint256" - } - ], - "payable": false, - "stateMutability": "view", - "type": "function" - }, - { - "constant": false, - "inputs": [ - { - "internalType": "address", - "name": "_token", - "type": "address" - } - ], - "name": "blacklistRecoverableToken", - "outputs": [], - "payable": false, - "stateMutability": "nonpayable", - "type": "function" - }, - { - "constant": false, - "inputs": [ - { - "internalType": "address", - "name": "_from", - "type": "address" - }, - { - "internalType": "uint256", - "name": "_amount", - "type": "uint256" - } - ], - "name": "burn", - "outputs": [], - "payable": false, - "stateMutability": "nonpayable", - "type": "function" - }, - { - "constant": false, - "inputs": [], - "name": "claimOwnership", - "outputs": [], - "payable": false, - "stateMutability": "nonpayable", - "type": "function" - }, - { - "constant": true, - "inputs": [], - "name": "decimals", - "outputs": [ - { - "internalType": "uint8", - "name": "", - "type": "uint8" - } - ], - "payable": false, - "stateMutability": "view", - "type": "function" - }, - { - "constant": false, - "inputs": [ - { - "internalType": "address", - "name": "spender", - "type": "address" - }, - { - "internalType": "uint256", - "name": "subtractedValue", - "type": "uint256" - } - ], - "name": "decreaseAllowance", - "outputs": [ - { - "internalType": "bool", - "name": "", - "type": "bool" - } - ], - "payable": false, - "stateMutability": "nonpayable", - "type": "function" - }, - { - "constant": true, - "inputs": [], - "name": "exchangeRateCurrent", - "outputs": [ - { - "internalType": "uint256", - "name": "", - "type": "uint256" - } - ], - "payable": false, - "stateMutability": "view", - "type": "function" - }, - { - "constant": true, - "inputs": [ - { - "internalType": "uint256", - "name": "_amountUnderlying", - "type": "uint256" - } - ], - "name": "fromUnderlying", - "outputs": [ - { - "internalType": "uint256", - "name": "", - "type": "uint256" - } - ], - "payable": false, - "stateMutability": "view", - "type": "function" - }, - { - "constant": false, - "inputs": [ - { - "internalType": "address", - "name": "spender", - "type": "address" - }, - { - "internalType": "uint256", - "name": "addedValue", - "type": "uint256" - } - ], - "name": "increaseAllowance", - "outputs": [ - { - "internalType": "bool", - "name": "", - "type": "bool" - } - ], - "payable": false, - "stateMutability": "nonpayable", - "type": "function" - }, - { - "constant": false, - "inputs": [ - { - "internalType": "string", - "name": "name", - "type": "string" - }, - { - "internalType": "string", - "name": "symbol", - "type": "string" - }, - { - "internalType": "uint8", - "name": "decimals", - "type": "uint8" - } - ], - "name": "initialize", - "outputs": [], - "payable": false, - "stateMutability": "nonpayable", - "type": "function" - }, - { - "constant": false, - "inputs": [ - { - "internalType": "uint256", - "name": "_chainId", - "type": "uint256" - }, - { - "internalType": "address", - "name": "_nextOwner", - "type": "address" - }, - { - "internalType": "uint256", - "name": "_initialRate", - "type": "uint256" - }, - { - "internalType": "string", - "name": "_version", - "type": "string" - }, - { - "internalType": "string", - "name": "_name", - "type": "string" - }, - { - "internalType": "string", - "name": "_symbol", - "type": "string" - }, - { - "internalType": "uint8", - "name": "_decimals", - "type": "uint8" - } - ], - "name": "initialize", - "outputs": [], - "payable": false, - "stateMutability": "nonpayable", - "type": "function" - }, - { - "constant": false, - "inputs": [ - { - "internalType": "uint256", - "name": "_chainId", - "type": "uint256" - }, - { - "internalType": "string", - "name": "_version", - "type": "string" - }, - { - "internalType": "string", - "name": "_name", - "type": "string" - }, - { - "internalType": "string", - "name": "_symbol", - "type": "string" - }, - { - "internalType": "uint8", - "name": "_decimals", - "type": "uint8" - } - ], - "name": "initialize", - "outputs": [], - "payable": false, - "stateMutability": "nonpayable", - "type": "function" - }, - { - "constant": false, - "inputs": [ - { - "internalType": "address", - "name": "_nextOwner", - "type": "address" - } - ], - "name": "initialize", - "outputs": [], - "payable": false, - "stateMutability": "nonpayable", - "type": "function" - }, - { - "constant": false, - "inputs": [ - { - "internalType": "address", - "name": "_nextOwner", - "type": "address" - }, - { - "internalType": "uint256", - "name": "_initialRate", - "type": "uint256" - } - ], - "name": "initialize", - "outputs": [], - "payable": false, - "stateMutability": "nonpayable", - "type": "function" - }, - { - "constant": true, - "inputs": [], - "name": "isOwner", - "outputs": [ - { - "internalType": "bool", - "name": "", - "type": "bool" - } - ], - "payable": false, - "stateMutability": "view", - "type": "function" - }, - { - "constant": false, - "inputs": [ - { - "internalType": "address", - "name": "_to", - "type": "address" - }, - { - "internalType": "uint256", - "name": "_amount", - "type": "uint256" - } - ], - "name": "mint", - "outputs": [], - "payable": false, - "stateMutability": "nonpayable", - "type": "function" - }, - { - "constant": true, - "inputs": [], - "name": "name", - "outputs": [ - { - "internalType": "string", - "name": "", - "type": "string" - } - ], - "payable": false, - "stateMutability": "view", - "type": "function" - }, - { - "constant": true, - "inputs": [ - { - "internalType": "address", - "name": "", - "type": "address" - } - ], - "name": "nonces", - "outputs": [ - { - "internalType": "uint256", - "name": "", - "type": "uint256" - } - ], - "payable": false, - "stateMutability": "view", - "type": "function" - }, - { - "constant": true, - "inputs": [], - "name": "owner", - "outputs": [ - { - "internalType": "address", - "name": "", - "type": "address" - } - ], - "payable": false, - "stateMutability": "view", - "type": "function" - }, - { - "constant": true, - "inputs": [], - "name": "pendingOwner", - "outputs": [ - { - "internalType": "address", - "name": "", - "type": "address" - } - ], - "payable": false, - "stateMutability": "view", - "type": "function" - }, - { - "constant": false, - "inputs": [ - { - "internalType": "address", - "name": "holder", - "type": "address" - }, - { - "internalType": "address", - "name": "spender", - "type": "address" - }, - { - "internalType": "uint256", - "name": "nonce", - "type": "uint256" - }, - { - "internalType": "uint256", - "name": "expiry", - "type": "uint256" - }, - { - "internalType": "bool", - "name": "allowed", - "type": "bool" - }, - { - "internalType": "uint8", - "name": "v", - "type": "uint8" - }, - { - "internalType": "bytes32", - "name": "r", - "type": "bytes32" - }, - { - "internalType": "bytes32", - "name": "s", - "type": "bytes32" - } - ], - "name": "permit", - "outputs": [], - "payable": false, - "stateMutability": "nonpayable", - "type": "function" - }, - { - "constant": false, - "inputs": [ - { - "internalType": "address", - "name": "_token", - "type": "address" - } - ], - "name": "recoverTokens", - "outputs": [], - "payable": false, - "stateMutability": "nonpayable", - "type": "function" - }, - { - "constant": false, - "inputs": [], - "name": "renounceOwnership", - "outputs": [], - "payable": false, - "stateMutability": "nonpayable", - "type": "function" - }, - { - "constant": false, - "inputs": [ - { - "internalType": "uint256", - "name": "_nextRate", - "type": "uint256" - } - ], - "name": "setExchangeRate", - "outputs": [], - "payable": false, - "stateMutability": "nonpayable", - "type": "function" - }, - { - "constant": true, - "inputs": [], - "name": "symbol", - "outputs": [ - { - "internalType": "string", - "name": "", - "type": "string" - } - ], - "payable": false, - "stateMutability": "view", - "type": "function" - }, - { - "constant": true, - "inputs": [ - { - "internalType": "uint256", - "name": "_amount", - "type": "uint256" - } - ], - "name": "toUnderlying", - "outputs": [ - { - "internalType": "uint256", - "name": "", - "type": "uint256" - } - ], - "payable": false, - "stateMutability": "view", - "type": "function" - }, - { - "constant": true, - "inputs": [], - "name": "totalSupply", - "outputs": [ - { - "internalType": "uint256", - "name": "", - "type": "uint256" - } - ], - "payable": false, - "stateMutability": "view", - "type": "function" - }, - { - "constant": false, - "inputs": [ - { - "internalType": "address", - "name": "recipient", - "type": "address" - }, - { - "internalType": "uint256", - "name": "amount", - "type": "uint256" - } - ], - "name": "transfer", - "outputs": [ - { - "internalType": "bool", - "name": "", - "type": "bool" - } - ], - "payable": false, - "stateMutability": "nonpayable", - "type": "function" - }, - { - "constant": false, - "inputs": [ - { - "internalType": "address", - "name": "sender", - "type": "address" - }, - { - "internalType": "address", - "name": "recipient", - "type": "address" - }, - { - "internalType": "uint256", - "name": "amount", - "type": "uint256" - } - ], - "name": "transferFrom", - "outputs": [ - { - "internalType": "bool", - "name": "", - "type": "bool" - } - ], - "payable": false, - "stateMutability": "nonpayable", - "type": "function" - }, - { - "constant": false, - "inputs": [ - { - "internalType": "address", - "name": "newOwner", - "type": "address" - } - ], - "name": "transferOwnership", - "outputs": [], - "payable": false, - "stateMutability": "nonpayable", - "type": "function" - }, - { - "constant": true, - "inputs": [], - "name": "version", - "outputs": [ - { - "internalType": "string", - "name": "", - "type": "string" - } - ], - "payable": false, - "stateMutability": "view", - "type": "function" - } - ], - "sourcePath": "~/github/renproject/ren-sol/contracts/Gateway/RenERC20.sol", - "compiler": { - "name": "solc", - "version": "0.5.16+commit.9c3226ce.Emscripten.clang" - }, - "networks": { - "42": { - "events": { - "0x8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925": { - "anonymous": false, - "inputs": [ - { - "indexed": true, - "internalType": "address", - "name": "owner", - "type": "address" - }, - { - "indexed": true, - "internalType": "address", - "name": "spender", - "type": "address" - }, - { - "indexed": false, - "internalType": "uint256", - "name": "value", - "type": "uint256" - } - ], - "name": "Approval", - "type": "event" - }, - "0x9d6ef0d454e23e234e8c1cf70cee49a44226ffb036017442229a7a5bd1d0957e": { - "anonymous": false, - "inputs": [ - { - "indexed": true, - "internalType": "uint256", - "name": "_rate", - "type": "uint256" - } - ], - "name": "LogRateChanged", - "type": "event" - }, - "0x8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0": { - "anonymous": false, - "inputs": [ - { - "indexed": true, - "internalType": "address", - "name": "previousOwner", - "type": "address" - }, - { - "indexed": true, - "internalType": "address", - "name": "newOwner", - "type": "address" - } - ], - "name": "OwnershipTransferred", - "type": "event" - }, - "0xddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef": { - "anonymous": false, - "inputs": [ - { - "indexed": true, - "internalType": "address", - "name": "from", - "type": "address" - }, - { - "indexed": true, - "internalType": "address", - "name": "to", - "type": "address" - }, - { - "indexed": false, - "internalType": "uint256", - "name": "value", - "type": "uint256" - } - ], - "name": "Transfer", - "type": "event" - } - }, - "links": {}, - "address": "0xCe77c29b479bDF510f39bc4A2e43B0E4344fAB0f" - } - }, - "schemaVersion": "3.0.23" -} \ No newline at end of file diff --git a/build/testnet/RenProxyAdmin.json b/build/testnet/RenProxyAdmin.json deleted file mode 100644 index 9328da6a..00000000 --- a/build/testnet/RenProxyAdmin.json +++ /dev/null @@ -1,219 +0,0 @@ -{ - "contractName": "RenProxyAdmin", - "abi": [ - { - "anonymous": false, - "inputs": [ - { - "indexed": true, - "internalType": "address", - "name": "previousOwner", - "type": "address" - }, - { - "indexed": true, - "internalType": "address", - "name": "newOwner", - "type": "address" - } - ], - "name": "OwnershipTransferred", - "type": "event" - }, - { - "constant": false, - "inputs": [ - { - "internalType": "contract AdminUpgradeabilityProxy", - "name": "proxy", - "type": "address" - }, - { - "internalType": "address", - "name": "newAdmin", - "type": "address" - } - ], - "name": "changeProxyAdmin", - "outputs": [], - "payable": false, - "stateMutability": "nonpayable", - "type": "function" - }, - { - "constant": true, - "inputs": [ - { - "internalType": "contract AdminUpgradeabilityProxy", - "name": "proxy", - "type": "address" - } - ], - "name": "getProxyAdmin", - "outputs": [ - { - "internalType": "address", - "name": "", - "type": "address" - } - ], - "payable": false, - "stateMutability": "view", - "type": "function" - }, - { - "constant": true, - "inputs": [ - { - "internalType": "contract AdminUpgradeabilityProxy", - "name": "proxy", - "type": "address" - } - ], - "name": "getProxyImplementation", - "outputs": [ - { - "internalType": "address", - "name": "", - "type": "address" - } - ], - "payable": false, - "stateMutability": "view", - "type": "function" - }, - { - "constant": true, - "inputs": [], - "name": "isOwner", - "outputs": [ - { - "internalType": "bool", - "name": "", - "type": "bool" - } - ], - "payable": false, - "stateMutability": "view", - "type": "function" - }, - { - "constant": true, - "inputs": [], - "name": "owner", - "outputs": [ - { - "internalType": "address", - "name": "", - "type": "address" - } - ], - "payable": false, - "stateMutability": "view", - "type": "function" - }, - { - "constant": false, - "inputs": [], - "name": "renounceOwnership", - "outputs": [], - "payable": false, - "stateMutability": "nonpayable", - "type": "function" - }, - { - "constant": false, - "inputs": [ - { - "internalType": "address", - "name": "newOwner", - "type": "address" - } - ], - "name": "transferOwnership", - "outputs": [], - "payable": false, - "stateMutability": "nonpayable", - "type": "function" - }, - { - "constant": false, - "inputs": [ - { - "internalType": "contract AdminUpgradeabilityProxy", - "name": "proxy", - "type": "address" - }, - { - "internalType": "address", - "name": "implementation", - "type": "address" - } - ], - "name": "upgrade", - "outputs": [], - "payable": false, - "stateMutability": "nonpayable", - "type": "function" - }, - { - "constant": false, - "inputs": [ - { - "internalType": "contract AdminUpgradeabilityProxy", - "name": "proxy", - "type": "address" - }, - { - "internalType": "address", - "name": "implementation", - "type": "address" - }, - { - "internalType": "bytes", - "name": "data", - "type": "bytes" - } - ], - "name": "upgradeAndCall", - "outputs": [], - "payable": true, - "stateMutability": "payable", - "type": "function" - } - ], - "sourcePath": "~/github/renproject/ren-sol/contracts/Governance/RenProxyAdmin.sol", - "compiler": { - "name": "solc", - "version": "0.5.16+commit.9c3226ce.Emscripten.clang" - }, - "networks": { - "42": { - "events": { - "0x8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0": { - "anonymous": false, - "inputs": [ - { - "indexed": true, - "internalType": "address", - "name": "previousOwner", - "type": "address" - }, - { - "indexed": true, - "internalType": "address", - "name": "newOwner", - "type": "address" - } - ], - "name": "OwnershipTransferred", - "type": "event" - } - }, - "links": {}, - "address": "0x4C695C4Aa6238f0A7092733180328c2E64C912C7", - "transactionHash": "0xad604049b22bd69d4fde2c372448164a52e3afd46fe7b8ecc7d057f7c94eecb0" - } - }, - "schemaVersion": "3.0.23" -} \ No newline at end of file diff --git a/build/testnet/RenToken.json b/build/testnet/RenToken.json deleted file mode 100644 index 3d4e470c..00000000 --- a/build/testnet/RenToken.json +++ /dev/null @@ -1,757 +0,0 @@ -{ - "contractName": "RenToken", - "abi": [ - { - "inputs": [], - "payable": false, - "stateMutability": "nonpayable", - "type": "constructor" - }, - { - "anonymous": false, - "inputs": [ - { - "indexed": true, - "internalType": "address", - "name": "owner", - "type": "address" - }, - { - "indexed": true, - "internalType": "address", - "name": "spender", - "type": "address" - }, - { - "indexed": false, - "internalType": "uint256", - "name": "value", - "type": "uint256" - } - ], - "name": "Approval", - "type": "event" - }, - { - "anonymous": false, - "inputs": [ - { - "indexed": true, - "internalType": "address", - "name": "previousOwner", - "type": "address" - }, - { - "indexed": true, - "internalType": "address", - "name": "newOwner", - "type": "address" - } - ], - "name": "OwnershipTransferred", - "type": "event" - }, - { - "anonymous": false, - "inputs": [ - { - "indexed": false, - "internalType": "address", - "name": "account", - "type": "address" - } - ], - "name": "Paused", - "type": "event" - }, - { - "anonymous": false, - "inputs": [ - { - "indexed": true, - "internalType": "address", - "name": "account", - "type": "address" - } - ], - "name": "PauserAdded", - "type": "event" - }, - { - "anonymous": false, - "inputs": [ - { - "indexed": true, - "internalType": "address", - "name": "account", - "type": "address" - } - ], - "name": "PauserRemoved", - "type": "event" - }, - { - "anonymous": false, - "inputs": [ - { - "indexed": true, - "internalType": "address", - "name": "from", - "type": "address" - }, - { - "indexed": true, - "internalType": "address", - "name": "to", - "type": "address" - }, - { - "indexed": false, - "internalType": "uint256", - "name": "value", - "type": "uint256" - } - ], - "name": "Transfer", - "type": "event" - }, - { - "anonymous": false, - "inputs": [ - { - "indexed": false, - "internalType": "address", - "name": "account", - "type": "address" - } - ], - "name": "Unpaused", - "type": "event" - }, - { - "constant": true, - "inputs": [], - "name": "INITIAL_SUPPLY", - "outputs": [ - { - "internalType": "uint256", - "name": "", - "type": "uint256" - } - ], - "payable": false, - "stateMutability": "view", - "type": "function" - }, - { - "constant": false, - "inputs": [ - { - "internalType": "address", - "name": "account", - "type": "address" - } - ], - "name": "addPauser", - "outputs": [], - "payable": false, - "stateMutability": "nonpayable", - "type": "function" - }, - { - "constant": true, - "inputs": [ - { - "internalType": "address", - "name": "owner", - "type": "address" - }, - { - "internalType": "address", - "name": "spender", - "type": "address" - } - ], - "name": "allowance", - "outputs": [ - { - "internalType": "uint256", - "name": "", - "type": "uint256" - } - ], - "payable": false, - "stateMutability": "view", - "type": "function" - }, - { - "constant": false, - "inputs": [ - { - "internalType": "address", - "name": "spender", - "type": "address" - }, - { - "internalType": "uint256", - "name": "value", - "type": "uint256" - } - ], - "name": "approve", - "outputs": [ - { - "internalType": "bool", - "name": "", - "type": "bool" - } - ], - "payable": false, - "stateMutability": "nonpayable", - "type": "function" - }, - { - "constant": true, - "inputs": [ - { - "internalType": "address", - "name": "account", - "type": "address" - } - ], - "name": "balanceOf", - "outputs": [ - { - "internalType": "uint256", - "name": "", - "type": "uint256" - } - ], - "payable": false, - "stateMutability": "view", - "type": "function" - }, - { - "constant": false, - "inputs": [ - { - "internalType": "uint256", - "name": "amount", - "type": "uint256" - } - ], - "name": "burn", - "outputs": [], - "payable": false, - "stateMutability": "nonpayable", - "type": "function" - }, - { - "constant": false, - "inputs": [ - { - "internalType": "address", - "name": "account", - "type": "address" - }, - { - "internalType": "uint256", - "name": "amount", - "type": "uint256" - } - ], - "name": "burnFrom", - "outputs": [], - "payable": false, - "stateMutability": "nonpayable", - "type": "function" - }, - { - "constant": true, - "inputs": [], - "name": "decimals", - "outputs": [ - { - "internalType": "uint8", - "name": "", - "type": "uint8" - } - ], - "payable": false, - "stateMutability": "view", - "type": "function" - }, - { - "constant": false, - "inputs": [ - { - "internalType": "address", - "name": "spender", - "type": "address" - }, - { - "internalType": "uint256", - "name": "subtractedValue", - "type": "uint256" - } - ], - "name": "decreaseAllowance", - "outputs": [ - { - "internalType": "bool", - "name": "", - "type": "bool" - } - ], - "payable": false, - "stateMutability": "nonpayable", - "type": "function" - }, - { - "constant": false, - "inputs": [ - { - "internalType": "address", - "name": "spender", - "type": "address" - }, - { - "internalType": "uint256", - "name": "addedValue", - "type": "uint256" - } - ], - "name": "increaseAllowance", - "outputs": [ - { - "internalType": "bool", - "name": "", - "type": "bool" - } - ], - "payable": false, - "stateMutability": "nonpayable", - "type": "function" - }, - { - "constant": false, - "inputs": [ - { - "internalType": "string", - "name": "name", - "type": "string" - }, - { - "internalType": "string", - "name": "symbol", - "type": "string" - }, - { - "internalType": "uint8", - "name": "decimals", - "type": "uint8" - } - ], - "name": "initialize", - "outputs": [], - "payable": false, - "stateMutability": "nonpayable", - "type": "function" - }, - { - "constant": false, - "inputs": [ - { - "internalType": "address", - "name": "sender", - "type": "address" - } - ], - "name": "initialize", - "outputs": [], - "payable": false, - "stateMutability": "nonpayable", - "type": "function" - }, - { - "constant": true, - "inputs": [], - "name": "isOwner", - "outputs": [ - { - "internalType": "bool", - "name": "", - "type": "bool" - } - ], - "payable": false, - "stateMutability": "view", - "type": "function" - }, - { - "constant": true, - "inputs": [ - { - "internalType": "address", - "name": "account", - "type": "address" - } - ], - "name": "isPauser", - "outputs": [ - { - "internalType": "bool", - "name": "", - "type": "bool" - } - ], - "payable": false, - "stateMutability": "view", - "type": "function" - }, - { - "constant": true, - "inputs": [], - "name": "name", - "outputs": [ - { - "internalType": "string", - "name": "", - "type": "string" - } - ], - "payable": false, - "stateMutability": "view", - "type": "function" - }, - { - "constant": true, - "inputs": [], - "name": "owner", - "outputs": [ - { - "internalType": "address", - "name": "", - "type": "address" - } - ], - "payable": false, - "stateMutability": "view", - "type": "function" - }, - { - "constant": false, - "inputs": [], - "name": "pause", - "outputs": [], - "payable": false, - "stateMutability": "nonpayable", - "type": "function" - }, - { - "constant": true, - "inputs": [], - "name": "paused", - "outputs": [ - { - "internalType": "bool", - "name": "", - "type": "bool" - } - ], - "payable": false, - "stateMutability": "view", - "type": "function" - }, - { - "constant": false, - "inputs": [], - "name": "renounceOwnership", - "outputs": [], - "payable": false, - "stateMutability": "nonpayable", - "type": "function" - }, - { - "constant": false, - "inputs": [], - "name": "renouncePauser", - "outputs": [], - "payable": false, - "stateMutability": "nonpayable", - "type": "function" - }, - { - "constant": true, - "inputs": [], - "name": "symbol", - "outputs": [ - { - "internalType": "string", - "name": "", - "type": "string" - } - ], - "payable": false, - "stateMutability": "view", - "type": "function" - }, - { - "constant": true, - "inputs": [], - "name": "totalSupply", - "outputs": [ - { - "internalType": "uint256", - "name": "", - "type": "uint256" - } - ], - "payable": false, - "stateMutability": "view", - "type": "function" - }, - { - "constant": false, - "inputs": [ - { - "internalType": "address", - "name": "to", - "type": "address" - }, - { - "internalType": "uint256", - "name": "value", - "type": "uint256" - } - ], - "name": "transfer", - "outputs": [ - { - "internalType": "bool", - "name": "", - "type": "bool" - } - ], - "payable": false, - "stateMutability": "nonpayable", - "type": "function" - }, - { - "constant": false, - "inputs": [ - { - "internalType": "address", - "name": "from", - "type": "address" - }, - { - "internalType": "address", - "name": "to", - "type": "address" - }, - { - "internalType": "uint256", - "name": "value", - "type": "uint256" - } - ], - "name": "transferFrom", - "outputs": [ - { - "internalType": "bool", - "name": "", - "type": "bool" - } - ], - "payable": false, - "stateMutability": "nonpayable", - "type": "function" - }, - { - "constant": false, - "inputs": [ - { - "internalType": "address", - "name": "newOwner", - "type": "address" - } - ], - "name": "transferOwnership", - "outputs": [], - "payable": false, - "stateMutability": "nonpayable", - "type": "function" - }, - { - "constant": false, - "inputs": [ - { - "internalType": "address", - "name": "beneficiary", - "type": "address" - }, - { - "internalType": "uint256", - "name": "amount", - "type": "uint256" - } - ], - "name": "transferTokens", - "outputs": [ - { - "internalType": "bool", - "name": "", - "type": "bool" - } - ], - "payable": false, - "stateMutability": "nonpayable", - "type": "function" - }, - { - "constant": false, - "inputs": [], - "name": "unpause", - "outputs": [], - "payable": false, - "stateMutability": "nonpayable", - "type": "function" - } - ], - "sourcePath": "~/github/renproject/ren-sol/contracts/RenToken/RenToken.sol", - "compiler": { - "name": "solc", - "version": "0.5.16+commit.9c3226ce.Emscripten.clang" - }, - "networks": { - "42": { - "events": { - "0x8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925": { - "anonymous": false, - "inputs": [ - { - "indexed": true, - "internalType": "address", - "name": "owner", - "type": "address" - }, - { - "indexed": true, - "internalType": "address", - "name": "spender", - "type": "address" - }, - { - "indexed": false, - "internalType": "uint256", - "name": "value", - "type": "uint256" - } - ], - "name": "Approval", - "type": "event" - }, - "0x8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0": { - "anonymous": false, - "inputs": [ - { - "indexed": true, - "internalType": "address", - "name": "previousOwner", - "type": "address" - }, - { - "indexed": true, - "internalType": "address", - "name": "newOwner", - "type": "address" - } - ], - "name": "OwnershipTransferred", - "type": "event" - }, - "0x62e78cea01bee320cd4e420270b5ea74000d11b0c9f74754ebdbfc544b05a258": { - "anonymous": false, - "inputs": [ - { - "indexed": false, - "internalType": "address", - "name": "account", - "type": "address" - } - ], - "name": "Paused", - "type": "event" - }, - "0x6719d08c1888103bea251a4ed56406bd0c3e69723c8a1686e017e7bbe159b6f8": { - "anonymous": false, - "inputs": [ - { - "indexed": true, - "internalType": "address", - "name": "account", - "type": "address" - } - ], - "name": "PauserAdded", - "type": "event" - }, - "0xcd265ebaf09df2871cc7bd4133404a235ba12eff2041bb89d9c714a2621c7c7e": { - "anonymous": false, - "inputs": [ - { - "indexed": true, - "internalType": "address", - "name": "account", - "type": "address" - } - ], - "name": "PauserRemoved", - "type": "event" - }, - "0xddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef": { - "anonymous": false, - "inputs": [ - { - "indexed": true, - "internalType": "address", - "name": "from", - "type": "address" - }, - { - "indexed": true, - "internalType": "address", - "name": "to", - "type": "address" - }, - { - "indexed": false, - "internalType": "uint256", - "name": "value", - "type": "uint256" - } - ], - "name": "Transfer", - "type": "event" - }, - "0x5db9ee0a495bf2e6ff9c91a7834c1ba4fdd244a5e8aa4e537bd38aeae4b073aa": { - "anonymous": false, - "inputs": [ - { - "indexed": false, - "internalType": "address", - "name": "account", - "type": "address" - } - ], - "name": "Unpaused", - "type": "event" - } - }, - "links": {}, - "address": "0x2cd647668494c1b15743ab283a0f980d90a87394" - } - }, - "schemaVersion": "3.0.23" -} \ No newline at end of file diff --git a/build/testnet/RenZEC.json b/build/testnet/RenZEC.json deleted file mode 100644 index 0003d974..00000000 --- a/build/testnet/RenZEC.json +++ /dev/null @@ -1,213 +0,0 @@ -{ - "contractName": "RenZEC", - "abi": [ - { - "anonymous": false, - "inputs": [ - { - "indexed": false, - "internalType": "address", - "name": "previousAdmin", - "type": "address" - }, - { - "indexed": false, - "internalType": "address", - "name": "newAdmin", - "type": "address" - } - ], - "name": "AdminChanged", - "type": "event" - }, - { - "anonymous": false, - "inputs": [ - { - "indexed": true, - "internalType": "address", - "name": "implementation", - "type": "address" - } - ], - "name": "Upgraded", - "type": "event" - }, - { - "payable": true, - "stateMutability": "payable", - "type": "fallback" - }, - { - "constant": false, - "inputs": [], - "name": "admin", - "outputs": [ - { - "internalType": "address", - "name": "", - "type": "address" - } - ], - "payable": false, - "stateMutability": "nonpayable", - "type": "function" - }, - { - "constant": false, - "inputs": [ - { - "internalType": "address", - "name": "newAdmin", - "type": "address" - } - ], - "name": "changeAdmin", - "outputs": [], - "payable": false, - "stateMutability": "nonpayable", - "type": "function" - }, - { - "constant": false, - "inputs": [], - "name": "implementation", - "outputs": [ - { - "internalType": "address", - "name": "", - "type": "address" - } - ], - "payable": false, - "stateMutability": "nonpayable", - "type": "function" - }, - { - "constant": false, - "inputs": [ - { - "internalType": "address", - "name": "_logic", - "type": "address" - }, - { - "internalType": "address", - "name": "_admin", - "type": "address" - }, - { - "internalType": "bytes", - "name": "_data", - "type": "bytes" - } - ], - "name": "initialize", - "outputs": [], - "payable": true, - "stateMutability": "payable", - "type": "function" - }, - { - "constant": false, - "inputs": [ - { - "internalType": "address", - "name": "_logic", - "type": "address" - }, - { - "internalType": "bytes", - "name": "_data", - "type": "bytes" - } - ], - "name": "initialize", - "outputs": [], - "payable": true, - "stateMutability": "payable", - "type": "function" - }, - { - "constant": false, - "inputs": [ - { - "internalType": "address", - "name": "newImplementation", - "type": "address" - } - ], - "name": "upgradeTo", - "outputs": [], - "payable": false, - "stateMutability": "nonpayable", - "type": "function" - }, - { - "constant": false, - "inputs": [ - { - "internalType": "address", - "name": "newImplementation", - "type": "address" - }, - { - "internalType": "bytes", - "name": "data", - "type": "bytes" - } - ], - "name": "upgradeToAndCall", - "outputs": [], - "payable": true, - "stateMutability": "payable", - "type": "function" - } - ], - "sourcePath": "~/github/renproject/ren-sol/contracts/Gateway/RenERC20.sol", - "compiler": { - "name": "solc", - "version": "0.5.16+commit.9c3226ce.Emscripten.clang" - }, - "networks": { - "42": { - "events": { - "0x7e644d79422f17c01e4894b5f4f588d331ebfa28653d42ae832dc59e38c9798f": { - "anonymous": false, - "inputs": [ - { - "indexed": false, - "internalType": "address", - "name": "previousAdmin", - "type": "address" - }, - { - "indexed": false, - "internalType": "address", - "name": "newAdmin", - "type": "address" - } - ], - "name": "AdminChanged", - "type": "event" - }, - "0xbc7cd75a20ee27fd9adebab32041f755214dbc6bffa90cc0225b39da2e5c2d3b": { - "anonymous": false, - "inputs": [ - { - "indexed": true, - "internalType": "address", - "name": "implementation", - "type": "address" - } - ], - "name": "Upgraded", - "type": "event" - } - }, - "links": {}, - "address": "0x42805DA220DF1f8a33C16B0DF9CE876B9d416610" - } - }, - "schemaVersion": "3.0.23" -} \ No newline at end of file diff --git a/build/testnet/ZECGateway.json b/build/testnet/ZECGateway.json deleted file mode 100644 index 04aef001..00000000 --- a/build/testnet/ZECGateway.json +++ /dev/null @@ -1,213 +0,0 @@ -{ - "contractName": "ZECGateway", - "abi": [ - { - "anonymous": false, - "inputs": [ - { - "indexed": false, - "internalType": "address", - "name": "previousAdmin", - "type": "address" - }, - { - "indexed": false, - "internalType": "address", - "name": "newAdmin", - "type": "address" - } - ], - "name": "AdminChanged", - "type": "event" - }, - { - "anonymous": false, - "inputs": [ - { - "indexed": true, - "internalType": "address", - "name": "implementation", - "type": "address" - } - ], - "name": "Upgraded", - "type": "event" - }, - { - "payable": true, - "stateMutability": "payable", - "type": "fallback" - }, - { - "constant": false, - "inputs": [], - "name": "admin", - "outputs": [ - { - "internalType": "address", - "name": "", - "type": "address" - } - ], - "payable": false, - "stateMutability": "nonpayable", - "type": "function" - }, - { - "constant": false, - "inputs": [ - { - "internalType": "address", - "name": "newAdmin", - "type": "address" - } - ], - "name": "changeAdmin", - "outputs": [], - "payable": false, - "stateMutability": "nonpayable", - "type": "function" - }, - { - "constant": false, - "inputs": [], - "name": "implementation", - "outputs": [ - { - "internalType": "address", - "name": "", - "type": "address" - } - ], - "payable": false, - "stateMutability": "nonpayable", - "type": "function" - }, - { - "constant": false, - "inputs": [ - { - "internalType": "address", - "name": "_logic", - "type": "address" - }, - { - "internalType": "address", - "name": "_admin", - "type": "address" - }, - { - "internalType": "bytes", - "name": "_data", - "type": "bytes" - } - ], - "name": "initialize", - "outputs": [], - "payable": true, - "stateMutability": "payable", - "type": "function" - }, - { - "constant": false, - "inputs": [ - { - "internalType": "address", - "name": "_logic", - "type": "address" - }, - { - "internalType": "bytes", - "name": "_data", - "type": "bytes" - } - ], - "name": "initialize", - "outputs": [], - "payable": true, - "stateMutability": "payable", - "type": "function" - }, - { - "constant": false, - "inputs": [ - { - "internalType": "address", - "name": "newImplementation", - "type": "address" - } - ], - "name": "upgradeTo", - "outputs": [], - "payable": false, - "stateMutability": "nonpayable", - "type": "function" - }, - { - "constant": false, - "inputs": [ - { - "internalType": "address", - "name": "newImplementation", - "type": "address" - }, - { - "internalType": "bytes", - "name": "data", - "type": "bytes" - } - ], - "name": "upgradeToAndCall", - "outputs": [], - "payable": true, - "stateMutability": "payable", - "type": "function" - } - ], - "sourcePath": "~/github/renproject/ren-sol/contracts/Gateway/Gateway.sol", - "compiler": { - "name": "solc", - "version": "0.5.16+commit.9c3226ce.Emscripten.clang" - }, - "networks": { - "42": { - "events": { - "0x7e644d79422f17c01e4894b5f4f588d331ebfa28653d42ae832dc59e38c9798f": { - "anonymous": false, - "inputs": [ - { - "indexed": false, - "internalType": "address", - "name": "previousAdmin", - "type": "address" - }, - { - "indexed": false, - "internalType": "address", - "name": "newAdmin", - "type": "address" - } - ], - "name": "AdminChanged", - "type": "event" - }, - "0xbc7cd75a20ee27fd9adebab32041f755214dbc6bffa90cc0225b39da2e5c2d3b": { - "anonymous": false, - "inputs": [ - { - "indexed": true, - "internalType": "address", - "name": "implementation", - "type": "address" - } - ], - "name": "Upgraded", - "type": "event" - } - }, - "links": {}, - "address": "0xAACbB1e7bA99F2Ed6bd02eC96C2F9a52013Efe2d" - } - }, - "schemaVersion": "3.0.23" -} \ No newline at end of file diff --git a/contracts/Bindings.sol b/contracts/Bindings.sol index ff42e522..1b1b281e 100644 --- a/contracts/Bindings.sol +++ b/contracts/Bindings.sol @@ -1,13 +1,13 @@ pragma solidity 0.5.17; +import "./DarknodePayment/ClaimRewards.sol"; import "./DarknodePayment/DarknodePayment.sol"; import "./DarknodePayment/DarknodePaymentStore.sol"; import "./DarknodeRegistry/DarknodeRegistry.sol"; import "./DarknodeRegistry/DarknodeRegistryStore.sol"; +import "./DarknodeRegistry/GetOperatorDarknodes.sol"; import "./DarknodeSlasher/DarknodeSlasher.sol"; import "./RenToken/RenToken.sol"; -import "./Gateway/Gateway.sol"; -import "./Gateway/GatewayRegistry.sol"; import "./Protocol/Protocol.sol"; /// @notice Bindings imports all of the contracts for generating bindings. diff --git a/contracts/DarknodePayment/ClaimRewards.sol b/contracts/DarknodePayment/ClaimRewards.sol new file mode 100644 index 00000000..30932f18 --- /dev/null +++ b/contracts/DarknodePayment/ClaimRewards.sol @@ -0,0 +1,145 @@ +//SPDX-License-Identifier: MIT + +pragma solidity 0.5.17; + +import "./ValidString.sol"; + +contract ClaimRewards { + uint256 public constant BPS_DENOMINATOR = 10000; + + event LogClaimRewards( + address indexed operatorAddress_, + string assetSymbol_, + string recipientAddress_, + string recipientChain_, + bytes recipientPayload_, + uint256 fractionInBps_, + // Repeated values for indexing. + string indexed assetSymbolIndexed_, + string indexed recipientAddressIndexed_ + ); + + modifier validFractionInBps(uint256 fraction_) { + require( + fraction_ <= BPS_DENOMINATOR, + "ClaimRewards: invalid fractionInBps" + ); + _; + } + + /** + * claimRewardsToChain allows darknode operators to withdraw darknode + * earnings, as an on-chain alternative to the JSON-RPC claim method. + * + * It will the operators total sum of rewards, for all of their nodes. + * + * @param assetSymbol_ The token symbol. + * E.g. "BTC", "DOGE" or "FIL". + * @param recipientAddress_ An address on the asset's native chain, for + * receiving the withdrawn rewards. This should be a string as + * provided by the user - no encoding or decoding required. + * E.g.: "miMi2VET41YV1j6SDNTeZoPBbmH8B4nEx6" for BTC. + * @param recipientChain_ A string indicating which chain the rewards should + * be withdrawn to. It should be the name of the chain as expected by + * RenVM (e.g. "Ethereum" or "Solana"). Support for different chains + * will be rolled out after this contract is deployed, starting with + * "Ethereum", then other host chains (e.g. "Polygon" or "Solana") + * and then lock chains (e.g. "Bitcoin" for "BTC"), also represented + * by an empty string "". + * @param recipientPayload_ An associated payload that can be provided along + * with the recipient chain and address. Should be empty if not + * required. + * @param fractionInBps_ A value between 0 and 10000 (inclusive) that + * indicates the percent to withdraw from each of the operator's + * darknodes. The value should be in BPS, meaning 10000 represents + * 100%, 5000 represents 50%, etc. + */ + function claimRewardsToChain( + string memory assetSymbol_, + string memory recipientAddress_, + string memory recipientChain_, + bytes memory recipientPayload_, + uint256 fractionInBps_ + ) public validFractionInBps(fractionInBps_) { + // Validate asset symbol. + require( + ValidString.isNotEmpty(assetSymbol_), + "ClaimRewards: invalid empty asset" + ); + require( + ValidString.isAlphanumeric(assetSymbol_), + "ClaimRewards: invalid asset" + ); + + // Validate recipient address. + require( + ValidString.isNotEmpty(recipientAddress_), + "ClaimRewards: invalid empty recipient address" + ); + require( + ValidString.isAlphanumeric(recipientAddress_), + "ClaimRewards: invalid recipient address" + ); + + // Validate recipient chain. + // Note that the chain can be empty - which is planned to represent the + // asset's native lock chain. + require( + ValidString.isAlphanumeric(recipientChain_), + "ClaimRewards: invalid recipient chain" + ); + + address operatorAddress = msg.sender; + + // Emit event. + emit LogClaimRewards( + operatorAddress, + assetSymbol_, + recipientAddress_, + recipientChain_, + recipientPayload_, + fractionInBps_, + // Indexed + assetSymbol_, + recipientAddress_ + ); + } + + /** + * `claimRewardsToEthereum` calls `claimRewardsToChain` internally + */ + function claimRewardsToEthereum( + string memory assetSymbol_, + address recipientAddress_, + uint256 fractionInBps_ + ) public { + return + claimRewardsToChain( + assetSymbol_, + addressToString(recipientAddress_), + "Ethereum", + "", + fractionInBps_ + ); + } + + // From https://ethereum.stackexchange.com/questions/8346/convert-address-to-string + function addressToString(address address_) + public + pure + returns (string memory) + { + bytes memory data = abi.encodePacked(address_); + + bytes memory alphabet = "0123456789abcdef"; + + bytes memory str = new bytes(2 + data.length * 2); + str[0] = "0"; + str[1] = "x"; + for (uint256 i = 0; i < data.length; i++) { + str[2 + i * 2] = alphabet[uint256(uint8(data[i] >> 4))]; + str[3 + i * 2] = alphabet[uint256(uint8(data[i] & 0x0f))]; + } + return string(str); + } +} diff --git a/contracts/DarknodePayment/DarknodePaymentMigrator.sol b/contracts/DarknodePayment/DarknodePaymentMigrator.sol index 1df937f4..68e63e90 100644 --- a/contracts/DarknodePayment/DarknodePaymentMigrator.sol +++ b/contracts/DarknodePayment/DarknodePaymentMigrator.sol @@ -22,6 +22,10 @@ contract DarknodePaymentMigrator is Claimable { tokens = _tokens; } + function setTokens(address[] memory _tokens) public onlyOwner { + tokens = _tokens; + } + function claimStoreOwnership() external { require(msg.sender == address(dnp), "Not darknode payment contract"); DarknodePaymentStore store = dnp.store(); @@ -33,14 +37,16 @@ contract DarknodePaymentMigrator is Claimable { uint256 unclaimed = store.availableBalance(token); - store.incrementDarknodeBalance(address(0x0), token, unclaimed); + if (unclaimed > 0) { + store.incrementDarknodeBalance(address(0x0), token, unclaimed); - store.transfer( - address(0x0), - token, - unclaimed, - _payableAddress(owner()) - ); + store.transfer( + address(0x0), + token, + unclaimed, + _payableAddress(owner()) + ); + } } store.transferOwnership(address(dnp)); diff --git a/contracts/DarknodePayment/ValidString.sol b/contracts/DarknodePayment/ValidString.sol new file mode 100644 index 00000000..f326cf36 --- /dev/null +++ b/contracts/DarknodePayment/ValidString.sol @@ -0,0 +1,23 @@ +// SPDX-License-Identifier: MIT + +pragma solidity 0.5.17; + +library ValidString { + function isAlphanumeric(string memory _string) public pure returns (bool) { + for (uint256 i = 0; i < bytes(_string).length; i++) { + uint8 char = uint8(bytes(_string)[i]); + if ( + !((char >= 65 && char <= 90) || + (char >= 97 && char <= 122) || + (char >= 48 && char <= 57)) + ) { + return false; + } + } + return true; + } + + function isNotEmpty(string memory _string) public pure returns (bool) { + return bytes(_string).length > 0; + } +} diff --git a/contracts/DarknodeRegistry/GetOperatorDarknodes.sol b/contracts/DarknodeRegistry/GetOperatorDarknodes.sol new file mode 100644 index 00000000..c26e692a --- /dev/null +++ b/contracts/DarknodeRegistry/GetOperatorDarknodes.sol @@ -0,0 +1,42 @@ +pragma solidity 0.5.17; + +import "./DarknodeRegistry.sol"; + +contract GetOperatorDarknodes { + DarknodeRegistryLogicV1 public darknodeRegistry; + + constructor(DarknodeRegistryLogicV1 _darknodeRegistry) public { + darknodeRegistry = _darknodeRegistry; + } + + function getOperatorDarknodes(address _operator) + public + view + returns (address[] memory) + { + uint256 numDarknodes = darknodeRegistry.numDarknodes(); + address[] memory nodesPadded = new address[](numDarknodes); + + address[] memory allNodes = darknodeRegistry.getDarknodes( + address(0), + 0 + ); + + uint256 j = 0; + for (uint256 i = 0; i < allNodes.length; i++) { + if ( + darknodeRegistry.getDarknodeOperator(allNodes[i]) == _operator + ) { + nodesPadded[j] = (allNodes[i]); + j++; + } + } + + address[] memory nodes = new address[](j); + for (uint256 i = 0; i < j; i++) { + nodes[i] = nodesPadded[i]; + } + + return nodes; + } +} diff --git a/contracts/Gateway/ERC20WithPermit.sol b/contracts/Gateway/ERC20WithPermit.sol deleted file mode 100644 index 2cc9edbc..00000000 --- a/contracts/Gateway/ERC20WithPermit.sol +++ /dev/null @@ -1,90 +0,0 @@ -pragma solidity 0.5.17; - -import "@openzeppelin/upgrades/contracts/Initializable.sol"; -import "@openzeppelin/contracts-ethereum-package/contracts/ownership/Ownable.sol"; -import "@openzeppelin/contracts-ethereum-package/contracts/token/ERC20/ERC20.sol"; -import "@openzeppelin/contracts-ethereum-package/contracts/math/SafeMath.sol"; -import "@openzeppelin/contracts-ethereum-package/contracts/token/ERC20/ERC20Detailed.sol"; - -/// @notice Taken from the DAI token. -contract ERC20WithPermit is Initializable, ERC20, ERC20Detailed { - using SafeMath for uint256; - - mapping(address => uint256) public nonces; - - // If the token is redeployed, the version is increased to prevent a permit - // signature being used on both token instances. - string public version; - - // --- EIP712 niceties --- - bytes32 public DOMAIN_SEPARATOR; - // PERMIT_TYPEHASH is the value returned from - // keccak256("Permit(address holder,address spender,uint256 nonce,uint256 expiry,bool allowed)") - bytes32 public constant PERMIT_TYPEHASH = - 0xea2aa0a1be11a07ed86d755c93467f4f82362b452371d1ba94d1715123511acb; - - function initialize( - uint256 _chainId, - string memory _version, - string memory _name, - string memory _symbol, - uint8 _decimals - ) public initializer { - ERC20Detailed.initialize(_name, _symbol, _decimals); - version = _version; - DOMAIN_SEPARATOR = keccak256( - abi.encode( - keccak256( - "EIP712Domain(string name,string version,uint256 chainId,address verifyingContract)" - ), - keccak256(bytes(name())), - keccak256(bytes(version)), - _chainId, - address(this) - ) - ); - } - - // --- Approve by signature --- - function permit( - address holder, - address spender, - uint256 nonce, - uint256 expiry, - bool allowed, - uint8 v, - bytes32 r, - bytes32 s - ) external { - bytes32 digest = - keccak256( - abi.encodePacked( - "\x19\x01", - DOMAIN_SEPARATOR, - keccak256( - abi.encode( - PERMIT_TYPEHASH, - holder, - spender, - nonce, - expiry, - allowed - ) - ) - ) - ); - - require(holder != address(0), "ERC20WithRate: address must not be 0x0"); - require( - holder == ecrecover(digest, v, r, s), - "ERC20WithRate: invalid signature" - ); - require( - expiry == 0 || now <= expiry, - "ERC20WithRate: permit has expired" - ); - require(nonce == nonces[holder]++, "ERC20WithRate: invalid nonce"); - uint256 amount = allowed ? uint256(-1) : 0; - _approve(holder, spender, amount); - } -} diff --git a/contracts/Gateway/ERC20WithRate.sol b/contracts/Gateway/ERC20WithRate.sol deleted file mode 100644 index 8377d113..00000000 --- a/contracts/Gateway/ERC20WithRate.sol +++ /dev/null @@ -1,62 +0,0 @@ -pragma solidity 0.5.17; - -import "@openzeppelin/upgrades/contracts/Initializable.sol"; -import "@openzeppelin/contracts-ethereum-package/contracts/token/ERC20/ERC20.sol"; -import "@openzeppelin/contracts-ethereum-package/contracts/math/SafeMath.sol"; - -import "../Governance/Claimable.sol"; - -/// @notice ERC20WithRate allows for a more dynamic fee model by storing a rate -/// that tracks the number of the underlying asset's unit represented by a -/// single ERC20 token. -contract ERC20WithRate is Initializable, Ownable, ERC20 { - using SafeMath for uint256; - - uint256 public constant _rateScale = 1e18; - uint256 internal _rate; - - event LogRateChanged(uint256 indexed _rate); - - /* solium-disable-next-line no-empty-blocks */ - function initialize(address _nextOwner, uint256 _initialRate) - public - initializer - { - Ownable.initialize(_nextOwner); - _setRate(_initialRate); - } - - function setExchangeRate(uint256 _nextRate) public onlyOwner { - _setRate(_nextRate); - } - - function exchangeRateCurrent() public view returns (uint256) { - require(_rate != 0, "ERC20WithRate: rate has not been initialized"); - return _rate; - } - - function _setRate(uint256 _nextRate) internal { - require(_nextRate > 0, "ERC20WithRate: rate must be greater than zero"); - _rate = _nextRate; - } - - function balanceOfUnderlying(address _account) - public - view - returns (uint256) - { - return toUnderlying(balanceOf(_account)); - } - - function toUnderlying(uint256 _amount) public view returns (uint256) { - return _amount.mul(_rate).div(_rateScale); - } - - function fromUnderlying(uint256 _amountUnderlying) - public - view - returns (uint256) - { - return _amountUnderlying.mul(_rateScale).div(_rate); - } -} diff --git a/contracts/Gateway/Gateway.sol b/contracts/Gateway/Gateway.sol deleted file mode 100644 index ff3d5f30..00000000 --- a/contracts/Gateway/Gateway.sol +++ /dev/null @@ -1,329 +0,0 @@ -pragma solidity 0.5.17; - -import "@openzeppelin/upgrades/contracts/Initializable.sol"; -import "@openzeppelin/contracts-ethereum-package/contracts/math/SafeMath.sol"; -import "@openzeppelin/contracts-ethereum-package/contracts/cryptography/ECDSA.sol"; -import "@openzeppelin/upgrades/contracts/upgradeability/InitializableAdminUpgradeabilityProxy.sol"; - -import "../Governance/Claimable.sol"; -import "../libraries/String.sol"; -import "./RenERC20.sol"; -import "./interfaces/IGateway.sol"; -import "../libraries/CanReclaimTokens.sol"; - -contract GatewayStateV1 { - uint256 constant BIPS_DENOMINATOR = 10000; - uint256 public minimumBurnAmount; - - /// @notice Each Gateway is tied to a specific RenERC20 token. - RenERC20LogicV1 public token; - - /// @notice The mintAuthority is an address that can sign mint requests. - address public mintAuthority; - - /// @dev feeRecipient is assumed to be an address (or a contract) that can - /// accept erc20 payments it cannot be 0x0. - /// @notice When tokens are mint or burnt, a portion of the tokens are - /// forwarded to a fee recipient. - address public feeRecipient; - - /// @notice The mint fee in bips. - uint16 public mintFee; - - /// @notice The burn fee in bips. - uint16 public burnFee; - - /// @notice Each signature can only be seen once. - mapping(bytes32 => bool) public status; - - // LogMint and LogBurn contain a unique `n` that identifies - // the mint or burn event. - uint256 public nextN = 0; -} - -/// @notice Gateway handles verifying mint and burn requests. A mintAuthority -/// approves new assets to be minted by providing a digital signature. An owner -/// of an asset can request for it to be burnt. -contract GatewayLogicV1 is - Initializable, - Claimable, - CanReclaimTokens, - IGateway, - GatewayStateV1 -{ - using SafeMath for uint256; - - event LogMintAuthorityUpdated(address indexed _newMintAuthority); - event LogMint( - address indexed _to, - uint256 _amount, - uint256 indexed _n, - bytes32 indexed _signedMessageHash - ); - event LogBurn( - bytes _to, - uint256 _amount, - uint256 indexed _n, - bytes indexed _indexedTo - ); - - /// @notice Only allow the Darknode Payment contract. - modifier onlyOwnerOrMintAuthority() { - require( - msg.sender == mintAuthority || msg.sender == owner(), - "Gateway: caller is not the owner or mint authority" - ); - _; - } - - /// @param _token The RenERC20 this Gateway is responsible for. - /// @param _feeRecipient The recipient of burning and minting fees. - /// @param _mintAuthority The address of the key that can sign mint - /// requests. - /// @param _mintFee The amount subtracted each mint request and - /// forwarded to the feeRecipient. In BIPS. - /// @param _burnFee The amount subtracted each burn request and - /// forwarded to the feeRecipient. In BIPS. - function initialize( - RenERC20LogicV1 _token, - address _feeRecipient, - address _mintAuthority, - uint16 _mintFee, - uint16 _burnFee, - uint256 _minimumBurnAmount - ) public initializer { - Claimable.initialize(msg.sender); - CanReclaimTokens.initialize(msg.sender); - minimumBurnAmount = _minimumBurnAmount; - token = _token; - mintFee = _mintFee; - burnFee = _burnFee; - updateMintAuthority(_mintAuthority); - updateFeeRecipient(_feeRecipient); - } - - // Public functions //////////////////////////////////////////////////////// - - /// @notice Claims ownership of the token passed in to the constructor. - /// `transferStoreOwnership` must have previously been called. - /// Anyone can call this function. - function claimTokenOwnership() public { - token.claimOwnership(); - } - - /// @notice Allow the owner to update the owner of the RenERC20 token. - function transferTokenOwnership(GatewayLogicV1 _nextTokenOwner) - public - onlyOwner - { - token.transferOwnership(address(_nextTokenOwner)); - _nextTokenOwner.claimTokenOwnership(); - } - - /// @notice Allow the owner to update the fee recipient. - /// - /// @param _nextMintAuthority The address to start paying fees to. - function updateMintAuthority(address _nextMintAuthority) - public - onlyOwnerOrMintAuthority - { - // The mint authority should not be set to 0, which is the result - // returned by ecrecover for an invalid signature. - require( - _nextMintAuthority != address(0), - "Gateway: mintAuthority cannot be set to address zero" - ); - mintAuthority = _nextMintAuthority; - emit LogMintAuthorityUpdated(mintAuthority); - } - - /// @notice Allow the owner to update the minimum burn amount. - /// - /// @param _minimumBurnAmount The new min burn amount. - function updateMinimumBurnAmount(uint256 _minimumBurnAmount) - public - onlyOwner - { - minimumBurnAmount = _minimumBurnAmount; - } - - /// @notice Allow the owner to update the fee recipient. - /// - /// @param _nextFeeRecipient The address to start paying fees to. - function updateFeeRecipient(address _nextFeeRecipient) public onlyOwner { - // 'mint' and 'burn' will fail if the feeRecipient is 0x0 - require( - _nextFeeRecipient != address(0x0), - "Gateway: fee recipient cannot be 0x0" - ); - - feeRecipient = _nextFeeRecipient; - } - - /// @notice Allow the owner to update the 'mint' fee. - /// - /// @param _nextMintFee The new fee for minting and burning. - function updateMintFee(uint16 _nextMintFee) public onlyOwner { - mintFee = _nextMintFee; - } - - /// @notice Allow the owner to update the burn fee. - /// - /// @param _nextBurnFee The new fee for minting and burning. - function updateBurnFee(uint16 _nextBurnFee) public onlyOwner { - burnFee = _nextBurnFee; - } - - /// @notice mint verifies a mint approval signature from RenVM and creates - /// tokens after taking a fee for the `_feeRecipient`. - /// - /// @param _pHash (payload hash) The hash of the payload associated with the - /// mint. - /// @param _amountUnderlying The amount of the token being minted, in its smallest - /// value. (e.g. satoshis for BTC). - /// @param _nHash (nonce hash) The hash of the nonce, amount and pHash. - /// @param _sig The signature of the hash of the following values: - /// (pHash, amount, msg.sender, nHash), signed by the mintAuthority. - function mint( - bytes32 _pHash, - uint256 _amountUnderlying, - bytes32 _nHash, - bytes memory _sig - ) public returns (uint256) { - // Verify signature - bytes32 signedMessageHash = - hashForSignature(_pHash, _amountUnderlying, msg.sender, _nHash); - require( - status[signedMessageHash] == false, - "Gateway: nonce hash already spent" - ); - if (!verifySignature(signedMessageHash, _sig)) { - // Return a detailed string containing the hash and recovered - // signer. This is somewhat costly but is only run in the revert - // branch. - revert( - String.add8( - "Gateway: invalid signature. pHash: ", - String.fromBytes32(_pHash), - ", amount: ", - String.fromUint(_amountUnderlying), - ", msg.sender: ", - String.fromAddress(msg.sender), - ", _nHash: ", - String.fromBytes32(_nHash) - ) - ); - } - status[signedMessageHash] = true; - - uint256 amountScaled = token.fromUnderlying(_amountUnderlying); - - // Mint `amount - fee` for the recipient and mint `fee` for the minter - uint256 absoluteFeeScaled = - amountScaled.mul(mintFee).div(BIPS_DENOMINATOR); - uint256 receivedAmountScaled = - amountScaled.sub(absoluteFeeScaled, "Gateway: fee exceeds amount"); - - // Mint amount minus the fee - token.mint(msg.sender, receivedAmountScaled); - // Mint the fee - token.mint(feeRecipient, absoluteFeeScaled); - - // Emit a log with a unique identifier 'n'. - uint256 receivedAmountUnderlying = - token.toUnderlying(receivedAmountScaled); - emit LogMint( - msg.sender, - receivedAmountUnderlying, - nextN, - signedMessageHash - ); - nextN += 1; - - return receivedAmountScaled; - } - - /// @notice burn destroys tokens after taking a fee for the `_feeRecipient`, - /// allowing the associated assets to be released on their native - /// chain. - /// - /// @param _to The address to receive the un-bridged asset. The format of - /// this address should be of the destination chain. - /// For example, when burning to Bitcoin, _to should be a - /// Bitcoin address. - /// @param _amount The amount of the token being burnt, in its - /// smallest value. (e.g. satoshis for BTC) - function burn(bytes memory _to, uint256 _amount) public returns (uint256) { - // The recipient must not be empty. Better validation is possible, - // but would need to be customized for each destination ledger. - require(_to.length != 0, "Gateway: to address is empty"); - - // Calculate fee, subtract it from amount being burnt. - uint256 fee = _amount.mul(burnFee).div(BIPS_DENOMINATOR); - uint256 amountAfterFee = - _amount.sub(fee, "Gateway: fee exceeds amount"); - - // If the scaled token can represent more precision than the underlying - // token, the difference is lost. This won't exceed 1 sat, so is - // negligible compared to burning and transaction fees. - uint256 amountAfterFeeUnderlying = token.toUnderlying(amountAfterFee); - - // Burn the whole amount, and then re-mint the fee. - token.burn(msg.sender, _amount); - token.mint(feeRecipient, fee); - - require( - // Must be strictly greater, to that the release transaction is of - // at least one unit. - amountAfterFeeUnderlying > minimumBurnAmount, - "Gateway: amount is less than the minimum burn amount" - ); - - emit LogBurn(_to, amountAfterFeeUnderlying, nextN, _to); - nextN += 1; - - return amountAfterFeeUnderlying; - } - - /// @notice verifySignature checks the the provided signature matches the provided - /// parameters. - function verifySignature(bytes32 _signedMessageHash, bytes memory _sig) - public - view - returns (bool) - { - return mintAuthority == ECDSA.recover(_signedMessageHash, _sig); - } - - /// @notice hashForSignature hashes the parameters so that they can be signed. - function hashForSignature( - bytes32 _pHash, - uint256 _amount, - address _to, - bytes32 _nHash - ) public view returns (bytes32) { - return - keccak256(abi.encode(_pHash, _amount, address(token), _to, _nHash)); - } -} - -/* solium-disable-next-line no-empty-blocks */ -// contract GatewayProxy is InitializableAdminUpgradeabilityProxy {} - -/// @dev The following duplicates are not necessary for deploying BTCGateway or -/// ZECGateway contracts, but are used to track deployments. - -/* solium-disable-next-line no-empty-blocks */ -contract BTCGateway is InitializableAdminUpgradeabilityProxy { - -} - -/* solium-disable-next-line no-empty-blocks */ -contract ZECGateway is InitializableAdminUpgradeabilityProxy { - -} - -/* solium-disable-next-line no-empty-blocks */ -contract BCHGateway is InitializableAdminUpgradeabilityProxy { - -} diff --git a/contracts/Gateway/GatewayRegistry.sol b/contracts/Gateway/GatewayRegistry.sol deleted file mode 100644 index 04d02d43..00000000 --- a/contracts/Gateway/GatewayRegistry.sol +++ /dev/null @@ -1,232 +0,0 @@ -pragma solidity 0.5.17; - -import "../Governance/Claimable.sol"; -import "./RenERC20.sol"; -import "../libraries/LinkedList.sol"; -import "./interfaces/IGateway.sol"; -import "../libraries/CanReclaimTokens.sol"; - -/// @notice GatewayRegistry is a mapping from assets to their associated -/// RenERC20 and Gateway contracts. -contract GatewayRegistry is Claimable, CanReclaimTokens { - constructor() public { - Claimable.initialize(msg.sender); - CanReclaimTokens.initialize(msg.sender); - } - - /// @dev The symbol is included twice because strings have to be hashed - /// first in order to be used as a log index/topic. - event LogGatewayRegistered( - string _symbol, - string indexed _indexedSymbol, - address indexed _token, - address indexed _gatewayContract - ); - event LogGatewayDeregistered( - string _symbol, - string indexed _indexedSymbol, - address indexed _token, - address indexed _gatewayContract - ); - event LogGatewayUpdated( - address indexed _token, - address indexed _currentGatewayContract, - address indexed _newGatewayContract - ); - - /// @notice The number of gateways registered. - uint256 numGatewayContracts = 0; - - /// @notice A list of gateway contracts. - LinkedList.List private gatewayContractList; - - /// @notice A list of ren token contracts. - LinkedList.List private renTokenList; - - /// @notice A map of token addresses to canonical gateway contract addresses. - mapping(address => address) private gatewayByToken; - - /// @notice A map of token symbols to token addresses. - mapping(string => address) private tokenBySymbol; - - /// @notice Allow the owner to set the Gateway contract for a given - /// RenERC20 token contract. - /// - /// @param _token The address of the RenERC20 token contract. - /// @param _gatewayContract The address of the Gateway contract. - function setGateway( - string calldata _symbol, - address _token, - address _gatewayContract - ) external onlyOwner { - require( - symbolIsValid(_symbol), - "GatewayRegistry: symbol must be alphanumeric" - ); - - // Check that token, Gateway and symbol haven't already been registered. - require( - !LinkedList.isInList(gatewayContractList, _gatewayContract), - "GatewayRegistry: gateway already registered" - ); - require( - gatewayByToken[_token] == address(0x0), - "GatewayRegistry: token already registered" - ); - require( - tokenBySymbol[_symbol] == address(0x0), - "GatewayRegistry: symbol already registered" - ); - - // Add to list of gateways. - LinkedList.append(gatewayContractList, _gatewayContract); - - // Add to list of ren tokens. - LinkedList.append(renTokenList, _token); - - tokenBySymbol[_symbol] = _token; - gatewayByToken[_token] = _gatewayContract; - numGatewayContracts += 1; - - emit LogGatewayRegistered(_symbol, _symbol, _token, _gatewayContract); - } - - /// @notice Allow the owner to update the Gateway contract for a given - /// RenERC20 contract. - /// - /// @param _token The address of the RenERC20 contract. - /// @param _newGatewayContract The updated address of the Gateway contract. - function updateGateway(address _token, address _newGatewayContract) - external - onlyOwner - { - // Check that token, Gateway are registered - address currentGateway = gatewayByToken[_token]; - require( - currentGateway != address(0x0), - "GatewayRegistry: token not registered" - ); - - // Remove to list of Gateway contracts. - LinkedList.remove(gatewayContractList, currentGateway); - - // Add to list of RenERC20 tokens. - LinkedList.append(gatewayContractList, _newGatewayContract); - - gatewayByToken[_token] = _newGatewayContract; - - emit LogGatewayUpdated(_token, currentGateway, _newGatewayContract); - } - - /// @notice Allows the owner to remove the Gateway contract for a given - /// RenERC20 contract. - /// - /// @param _symbol The symbol of the token to deregister. - function removeGateway(string calldata _symbol) external onlyOwner { - // Look up token address - address tokenAddress = tokenBySymbol[_symbol]; - require( - tokenAddress != address(0x0), - "GatewayRegistry: symbol not registered" - ); - - // Look up Gateway contract address - address gatewayAddress = gatewayByToken[tokenAddress]; - - // Remove token and Gateway contract - delete gatewayByToken[tokenAddress]; - delete tokenBySymbol[_symbol]; - LinkedList.remove(gatewayContractList, gatewayAddress); - LinkedList.remove(renTokenList, tokenAddress); - numGatewayContracts -= 1; - - emit LogGatewayDeregistered( - _symbol, - _symbol, - tokenAddress, - gatewayAddress - ); - } - - /// @dev To get all the registered Gateway contracts use count = 0. - function getGateways(address _start, uint256 _count) - external - view - returns (address[] memory) - { - return - LinkedList.elements( - gatewayContractList, - _start, - _count == 0 ? numGatewayContracts : _count - ); - } - - /// @dev To get all the registered RenERC20 tokens use count = 0. - function getRenTokens(address _start, uint256 _count) - external - view - returns (address[] memory) - { - return - LinkedList.elements( - renTokenList, - _start, - _count == 0 ? numGatewayContracts : _count - ); - } - - /// @notice Returns the Gateway contract for the given RenERC20 token - /// address. - /// - /// @param _token The address of the RenERC20 token contract. - function getGatewayByToken(address _token) - external - view - returns (IGateway) - { - return IGateway(gatewayByToken[_token]); - } - - /// @notice Returns the Gateway contract for the given RenERC20 token - /// symbol. - /// - /// @param _tokenSymbol The symbol of the RenERC20 token contract. - function getGatewayBySymbol(string calldata _tokenSymbol) - external - view - returns (IGateway) - { - return IGateway(gatewayByToken[tokenBySymbol[_tokenSymbol]]); - } - - /// @notice Returns the RenERC20 address for the given token symbol. - /// - /// @param _tokenSymbol The symbol of the RenERC20 token contract to - /// lookup. - function getTokenBySymbol(string calldata _tokenSymbol) - external - view - returns (IERC20) - { - return IERC20(tokenBySymbol[_tokenSymbol]); - } - - function symbolIsValid(string memory _tokenSymbol) - public - pure - returns (bool) - { - for (uint256 i = 0; i < bytes(_tokenSymbol).length; i++) { - uint8 char = uint8(bytes(_tokenSymbol)[i]); - if ( - !((char >= 65 && char <= 90) || - (char >= 97 && char <= 122) || - (char >= 48 && char <= 57)) - ) { - return false; - } - } - return true; - } -} diff --git a/contracts/Gateway/RenERC20.sol b/contracts/Gateway/RenERC20.sol deleted file mode 100644 index 4d3db248..00000000 --- a/contracts/Gateway/RenERC20.sol +++ /dev/null @@ -1,106 +0,0 @@ -pragma solidity 0.5.17; - -import "@openzeppelin/contracts-ethereum-package/contracts/ownership/Ownable.sol"; -import "@openzeppelin/upgrades/contracts/upgradeability/InitializableAdminUpgradeabilityProxy.sol"; -import "@openzeppelin/upgrades/contracts/Initializable.sol"; -import "@openzeppelin/contracts-ethereum-package/contracts/token/ERC20/ERC20.sol"; -import "@openzeppelin/contracts-ethereum-package/contracts/token/ERC20/ERC20Detailed.sol"; - -import "../Governance/Claimable.sol"; -import "../libraries/CanReclaimTokens.sol"; -import "./ERC20WithRate.sol"; -import "./ERC20WithPermit.sol"; - -/// @notice RenERC20 represents a digital asset that has been bridged on to -/// the Ethereum ledger. It exposes mint and burn functions that can only be -/// called by it's associated Gateway contract. -contract RenERC20LogicV1 is - Initializable, - ERC20, - ERC20Detailed, - ERC20WithRate, - ERC20WithPermit, - Claimable, - CanReclaimTokens -{ - /* solium-disable-next-line no-empty-blocks */ - function initialize( - uint256 _chainId, - address _nextOwner, - uint256 _initialRate, - string memory _version, - string memory _name, - string memory _symbol, - uint8 _decimals - ) public initializer { - ERC20Detailed.initialize(_name, _symbol, _decimals); - ERC20WithRate.initialize(_nextOwner, _initialRate); - ERC20WithPermit.initialize( - _chainId, - _version, - _name, - _symbol, - _decimals - ); - Claimable.initialize(_nextOwner); - CanReclaimTokens.initialize(_nextOwner); - } - - /// @notice mint can only be called by the tokens' associated Gateway - /// contract. See Gateway's mint function instead. - function mint(address _to, uint256 _amount) public onlyOwner { - _mint(_to, _amount); - } - - /// @notice burn can only be called by the tokens' associated Gateway - /// contract. See Gateway's burn functions instead. - function burn(address _from, uint256 _amount) public onlyOwner { - _burn(_from, _amount); - } - - function transfer(address recipient, uint256 amount) public returns (bool) { - // Disallow sending tokens to the ERC20 contract address - a common - // mistake caused by the Ethereum transaction's `to` needing to be - // the token's address. - require( - recipient != address(this), - "RenERC20: can't transfer to token address" - ); - return super.transfer(recipient, amount); - } - - function transferFrom( - address sender, - address recipient, - uint256 amount - ) public returns (bool) { - // Disallow sending tokens to the ERC20 contract address (see comment - // in `transfer`). - require( - recipient != address(this), - "RenERC20: can't transfer to token address" - ); - return super.transferFrom(sender, recipient, amount); - } -} - -/* solium-disable-next-line no-empty-blocks */ -// contract RenERC20Proxy is InitializableAdminUpgradeabilityProxy {} - -/// @dev The following are not necessary for deploying renBTC or renZEC contracts, -/// but are used to track deployments. - -/* solium-disable-next-line no-empty-blocks */ -contract RenBTC is InitializableAdminUpgradeabilityProxy { - -} - -/* solium-disable-next-line no-empty-blocks */ -contract RenZEC is InitializableAdminUpgradeabilityProxy { - -} - -/* solium-disable-next-line no-empty-blocks */ -contract RenBCH is InitializableAdminUpgradeabilityProxy { - -} diff --git a/contracts/Gateway/adapters/BasicAdapter.sol b/contracts/Gateway/adapters/BasicAdapter.sol deleted file mode 100644 index 0eed3dc0..00000000 --- a/contracts/Gateway/adapters/BasicAdapter.sol +++ /dev/null @@ -1,77 +0,0 @@ -pragma solidity 0.5.17; - -import "@openzeppelin/contracts-ethereum-package/contracts/GSN/GSNRecipient.sol"; - -import "../interfaces/IGateway.sol"; -import "../interfaces/IGatewayRegistry.sol"; - -contract BasicAdapter is GSNRecipient { - IGatewayRegistry registry; - - constructor(IGatewayRegistry _registry) public { - GSNRecipient.initialize(); - registry = _registry; - } - - function mint( - // Payload - string calldata _symbol, - address _recipient, - // Required - uint256 _amount, - bytes32 _nHash, - bytes calldata _sig - ) external { - bytes32 payloadHash = keccak256(abi.encode(_symbol, _recipient)); - uint256 amount = - registry.getGatewayBySymbol(_symbol).mint( - payloadHash, - _amount, - _nHash, - _sig - ); - registry.getTokenBySymbol(_symbol).transfer(_recipient, amount); - } - - function burn( - string calldata _symbol, - bytes calldata _to, - uint256 _amount - ) external { - require( - registry.getTokenBySymbol(_symbol).transferFrom( - _msgSender(), - address(this), - _amount - ), - "token transfer failed" - ); - registry.getGatewayBySymbol(_symbol).burn(_to, _amount); - } - - // GSN functions - - function acceptRelayedCall( - address relay, - address from, - bytes calldata encodedFunction, - uint256 transactionFee, - uint256 gasPrice, - uint256 gasLimit, - uint256 nonce, - bytes calldata approvalData, - uint256 maxPossibleCharge - ) external view returns (uint256, bytes memory) { - return _approveRelayedCall(); - } - - // We won't do any pre or post processing, so leave _preRelayedCall and _postRelayedCall empty - function _preRelayedCall(bytes memory context) internal returns (bytes32) {} - - function _postRelayedCall( - bytes memory context, - bool, - uint256 actualCharge, - bytes32 - ) internal {} -} diff --git a/contracts/Gateway/examples/README.md b/contracts/Gateway/examples/README.md deleted file mode 100644 index af54d621..00000000 --- a/contracts/Gateway/examples/README.md +++ /dev/null @@ -1,9 +0,0 @@ -## Gateway examples - -This directory contains a collection of Ethereum smart contracts for interacting with the Gateway contract. Please note the code is for example purposes only and has not been audited. - -### Vesting - -The Vesting contract is an example of a Bitcoin vesting contract on the Ethereum blockchain. This contract allows the owner to create vesting schedules for Bitcoin. Beneficiaries can claim the Bitcoin at monthly intervals based on their schedule. - -This contract demonstrates the use of the `mint` and `burn` functions in the Gateway contract. `mint` is called when we first add a vesting schedule and `burn` is called when a user wants to claim their vested Bitcoin. \ No newline at end of file diff --git a/contracts/Gateway/examples/Vesting.sol b/contracts/Gateway/examples/Vesting.sol deleted file mode 100644 index dba87310..00000000 --- a/contracts/Gateway/examples/Vesting.sol +++ /dev/null @@ -1,144 +0,0 @@ -pragma solidity 0.5.17; - -import "../GatewayRegistry.sol"; -import "@openzeppelin/contracts-ethereum-package/contracts/math/Math.sol"; -import "@openzeppelin/contracts-ethereum-package/contracts/math/SafeMath.sol"; -import "@openzeppelin/contracts-ethereum-package/contracts/ownership/Ownable.sol"; - -contract Vesting is Ownable { - using SafeMath for uint256; - - GatewayRegistry public registry; - - uint256 private constant SECONDS_PER_MONTH = 365 days / 12; - - /// @notice Defines the fields required for a vesting schedule. - struct VestingSchedule { - // The start time (in seconds since Unix epoch) at which the vesting - // period should begin. - uint256 startTime; - // The number of months for the vesting period. - uint16 duration; - // The total amount of Bitcoin apart of the vesting schedule. - uint256 amount; - // The number of months claimed by the user. - uint256 monthsClaimed; - // The total amount of Bitcoin claimed by the user. - uint256 amountClaimed; - } - - /// @notice Mapping of a beneficiary address to a vesting schedule. Each - // beneficiary can have a maximum of 1 vesting schedule. - mapping(address => VestingSchedule) public schedules; - - /// @notice The contract constructor. - /// @param _registry The GatewayRegistry contract address. - constructor(GatewayRegistry _registry) public { - Ownable.initialize(msg.sender); - registry = _registry; - } - - /// @notice Allows the contract owner to add a vesting schedule for a - /// beneficiary. - /// @param _amount The amount of Bitcoin provided to the Darknodes in Sats. - /// @param _nHash The hash of the nonce returned by the Darknodes. - /// @param _sig The signature returned by the Darknodes. - /// @param _beneficiary The address of the recipient entitled to claim the vested tokens. - /// @param _startTime The start time (in seconds since Unix epoch) at which the vesting - /// period should begin. - /// @param _duration The number of months for the vesting period. - function addVestingSchedule( - // Payload - address _beneficiary, - uint256 _startTime, - uint16 _duration, - // Required - uint256 _amount, - bytes32 _nHash, - bytes calldata _sig - ) external onlyOwner { - require( - schedules[_beneficiary].startTime == 0, - "vesting schedule already exists" - ); - require(_amount > 0, "amount must be greater than 0"); - require(_duration > 0, "duration must be at least 1 month"); - - // Construct the payload hash and mint new tokens using the Gateway - // contract. This will verify the signature to ensure the Darknodes have - // received the Bitcoin. - bytes32 pHash = - keccak256(abi.encode(_beneficiary, _startTime, _duration)); - uint256 finalAmountScaled = - registry.getGatewayBySymbol("BTC").mint( - pHash, - _amount, - _nHash, - _sig - ); - - // Construct a vesting schedule and assign it to the beneficiary. - VestingSchedule memory schedule = - VestingSchedule({ - startTime: _startTime == 0 ? now : _startTime, - duration: _duration, - amount: finalAmountScaled, - monthsClaimed: 0, - amountClaimed: 0 - }); - - schedules[_beneficiary] = schedule; - } - - /// @notice Allows a beneficiary to withdraw their vested Bitcoin. - /// @param _to The Bitcoin address to which the beneficiary will receive - /// their Bitcoin. - function claim(bytes calldata _to) external { - // Calculate the claimable amount for the caller of the function. - uint256 monthsClaimable; - uint256 amountClaimable; - (monthsClaimable, amountClaimable) = calculateClaimable(msg.sender); - - require(amountClaimable > 0, "no amount claimable"); - - // Update the claimed details in the vesting schedule. - VestingSchedule storage schedule = schedules[msg.sender]; - schedule.monthsClaimed = schedule.monthsClaimed.add(monthsClaimable); - schedule.amountClaimed = schedule.amountClaimed.add(amountClaimable); - - // Burn the tokens using the Gateway contract. This will burn the - // tokens after taking a fee. The Darknodes will watch for this event to - // transfer the user the Bitcoin. - registry.getGatewayBySymbol("BTC").burn(_to, amountClaimable); - } - - /// @notice Retrieves the claimable amount for a given beneficiary. - /// @param _to The Ethereum address of the beneficiary. - function calculateClaimable(address _to) - public - view - returns (uint256, uint256) - { - VestingSchedule storage schedule = schedules[_to]; - - // Return if the vesting schedule does not exist or has not yet started. - if (schedule.amount == 0 || now < schedule.startTime) { - return (0, 0); - } - - // Calculate the months elapsed since the start of the vesting period. - uint256 elapsedTime = now.sub(schedule.startTime); - uint256 elapsedMonths = elapsedTime.div(SECONDS_PER_MONTH); - - // Calculate the months elapsed and amount claimable since the last - // claim attempt. - uint256 monthsClaimable = - Math.min(schedule.duration, elapsedMonths).sub( - schedule.monthsClaimed - ); - uint256 amountClaimable = - schedule.amount.mul(monthsClaimable).div(schedule.duration); - - return (monthsClaimable, amountClaimable); - } -} diff --git a/contracts/Gateway/interfaces/IGateway.sol b/contracts/Gateway/interfaces/IGateway.sol deleted file mode 100644 index 0e6223b0..00000000 --- a/contracts/Gateway/interfaces/IGateway.sol +++ /dev/null @@ -1,40 +0,0 @@ -pragma solidity 0.5.17; - -interface IMintGateway { - function mint( - bytes32 _pHash, - uint256 _amount, - bytes32 _nHash, - bytes calldata _sig - ) external returns (uint256); - - function mintFee() external view returns (uint256); -} - -interface IBurnGateway { - function burn(bytes calldata _to, uint256 _amountScaled) - external - returns (uint256); - - function burnFee() external view returns (uint256); -} - -// TODO: In ^0.6.0, should be `interface IGateway is IMintGateway,IBurnGateway {}` -interface IGateway { - // is IMintGateway - function mint( - bytes32 _pHash, - uint256 _amount, - bytes32 _nHash, - bytes calldata _sig - ) external returns (uint256); - - function mintFee() external view returns (uint256); - - // is IBurnGateway - function burn(bytes calldata _to, uint256 _amountScaled) - external - returns (uint256); - - function burnFee() external view returns (uint256); -} diff --git a/contracts/Gateway/interfaces/IGatewayRegistry.sol b/contracts/Gateway/interfaces/IGatewayRegistry.sol deleted file mode 100644 index 8c2ab140..00000000 --- a/contracts/Gateway/interfaces/IGatewayRegistry.sol +++ /dev/null @@ -1,68 +0,0 @@ -pragma solidity 0.5.17; - -import "@openzeppelin/contracts-ethereum-package/contracts/token/ERC20/IERC20.sol"; - -import "./IGateway.sol"; - -/// @notice GatewayRegistry is a mapping from assets to their associated -/// RenERC20 and Gateway contracts. -interface IGatewayRegistry { - /// @dev The symbol is included twice because strings have to be hashed - /// first in order to be used as a log index/topic. - event LogGatewayRegistered( - string _symbol, - string indexed _indexedSymbol, - address indexed _tokenAddress, - address indexed _gatewayAddress - ); - event LogGatewayDeregistered( - string _symbol, - string indexed _indexedSymbol, - address indexed _tokenAddress, - address indexed _gatewayAddress - ); - event LogGatewayUpdated( - address indexed _tokenAddress, - address indexed _currentGatewayAddress, - address indexed _newGatewayAddress - ); - - /// @dev To get all the registered gateways use count = 0. - function getGateways(address _start, uint256 _count) - external - view - returns (address[] memory); - - /// @dev To get all the registered RenERC20s use count = 0. - function getRenTokens(address _start, uint256 _count) - external - view - returns (address[] memory); - - /// @notice Returns the Gateway contract for the given RenERC20 - /// address. - /// - /// @param _tokenAddress The address of the RenERC20 contract. - function getGatewayByToken(address _tokenAddress) - external - view - returns (IGateway); - - /// @notice Returns the Gateway contract for the given RenERC20 - /// symbol. - /// - /// @param _tokenSymbol The symbol of the RenERC20 contract. - function getGatewayBySymbol(string calldata _tokenSymbol) - external - view - returns (IGateway); - - /// @notice Returns the RenERC20 address for the given token symbol. - /// - /// @param _tokenSymbol The symbol of the RenERC20 contract to - /// lookup. - function getTokenBySymbol(string calldata _tokenSymbol) - external - view - returns (IERC20); -} diff --git a/contracts/Protocol/Protocol.sol b/contracts/Protocol/Protocol.sol index bd7c928d..a5ddb643 100644 --- a/contracts/Protocol/Protocol.sol +++ b/contracts/Protocol/Protocol.sol @@ -1,173 +1,49 @@ pragma solidity 0.5.17; -import "@openzeppelin/upgrades/contracts/upgradeability/InitializableAdminUpgradeabilityProxy.sol"; import "@openzeppelin/upgrades/contracts/Initializable.sol"; -import "@openzeppelin/contracts-ethereum-package/contracts/token/ERC20/IERC20.sol"; -import "@openzeppelin/contracts-ethereum-package/contracts/token/ERC20/IERC20.sol"; -import "@openzeppelin/contracts-ethereum-package/contracts/ownership/Ownable.sol"; - -import "../DarknodePayment/DarknodePayment.sol"; -import "../DarknodePayment/DarknodePaymentStore.sol"; -import "../DarknodeRegistry/DarknodeRegistry.sol"; -import "../DarknodeRegistry/DarknodeRegistryStore.sol"; -import "../DarknodeSlasher/DarknodeSlasher.sol"; -import "../RenToken/RenToken.sol"; -import "../Gateway/GatewayRegistry.sol"; -import "../Gateway/interfaces/IGatewayRegistry.sol"; -import "../Gateway/interfaces/IGateway.sol"; import "../Governance/Claimable.sol"; -/// @notice ProtocolStateV1 stores the values used by Protocol as a -/// separate contract to reduce the risk of memory slots being moved. -contract ProtocolStateV1 { - /** - * - * NOTICE: New variables should be added to a new contract ProtocolStateV2, - * not added to ProtocolStateV1. ProtocolStateV1 should not be changed once - * the Protocol contract has been deployed. ProtocolLogicV1 should then inherit - * both ProtocolStateV1 and ProtocolStateV2. - * - */ - - // These are all private so that the getter interfaced can be changed - // if necessary. - - // DarknodeRegistry also points to RenToken, DarknodeRegistryStore and - // DarknodePayment, which in turn points to DarknodePaymentStore. - DarknodeRegistryLogicV1 internal _darknodeRegistry; - - // GatewayRegistry is used to access the Gateways and RenERC20s. - GatewayRegistry internal _gatewayRegistry; -} - -/// @notice ProtocolLogicV1 implements the getter functions for the Protocol proxy -/// as well as onlyOwner functions for updating the values in ProtocolState. -contract ProtocolLogicV1 is - Initializable, - Claimable, - ProtocolStateV1, - IGatewayRegistry -{ - function initialize(address _nextOwner) public initializer { - Claimable.initialize(_nextOwner); - } +/** The Protocol contract is used to look-up other Ren contracts. */ +contract Protocol is Initializable, Claimable { + event LogContractUpdated( + string contractName, + address indexed contractAddress, + string indexed contractNameIndexed + ); - // Darknode contracts + mapping(string => address) internal contractMap; - function darknodeRegistry() public view returns (DarknodeRegistryLogicV1) { - return ProtocolStateV1._darknodeRegistry; + function __Protocol_init(address adminAddress_) public initializer { + Claimable.initialize(adminAddress_); } - function darknodeRegistryStore() + function addContract(string memory contractName, address contractAddress) public - view - returns (DarknodeRegistryStore) - { - return darknodeRegistry().store(); - } - - function renToken() public view returns (RenToken) { - return darknodeRegistry().ren(); - } - - function darknodePayment() public view returns (DarknodePayment) { - return - DarknodePayment( - _payableAddress(address(darknodeRegistry().darknodePayment())) - ); - } - - function darknodePaymentStore() public view returns (DarknodePaymentStore) { - return darknodePayment().store(); - } - - function darknodeSlasher() public view returns (DarknodeSlasher) { - return - DarknodeSlasher( - _payableAddress(address(darknodeRegistry().slasher())) - ); - } - - // Gateway contracts - - function gatewayRegistry() public view returns (GatewayRegistry) { - return ProtocolStateV1._gatewayRegistry; - } - - function getGateways(address _start, uint256 _count) - external - view - returns (address[] memory) - { - return gatewayRegistry().getGateways(_start, _count); - } - - function getRenTokens(address _start, uint256 _count) - external - view - returns (address[] memory) - { - return gatewayRegistry().getRenTokens(_start, _count); - } - - function getGatewayByToken(address _tokenAddress) - external - view - returns (IGateway) - { - return gatewayRegistry().getGatewayByToken(_tokenAddress); - } - - function getGatewayBySymbol(string calldata _tokenSymbol) - external - view - returns (IGateway) - { - return gatewayRegistry().getGatewayBySymbol(_tokenSymbol); - } - - function getTokenBySymbol(string calldata _tokenSymbol) - external - view - returns (IERC20) + onlyOwner { - return gatewayRegistry().getTokenBySymbol(_tokenSymbol); - } - - // Only owner ////////////////////////////////////////////////////////////// + require( + contractMap[contractName] == address(0x0), + "Protocol: contract entry already exists" + ); + contractMap[contractName] = contractAddress; - /// @notice Update the address of DarknodeRegistry. This could affect the - /// addresses of DarknodeRegistryStore, DarknodePayment, - /// DarknodePaymentStore and DarknodeSlasher. - function _updateDarknodeRegistry( - DarknodeRegistryLogicV1 _newDarknodeRegistry - ) public onlyOwner { - ProtocolStateV1._darknodeRegistry = _newDarknodeRegistry; + emit LogContractUpdated(contractName, contractAddress, contractName); } - /// @notice Update the address of GatewayRegistry. This could affect the - /// addresses of all of the gateways and tokens. - function _updateGatewayRegistry(GatewayRegistry _newGatewayRegistry) + function updateContract(string memory contractName, address contractAddress) public onlyOwner { - ProtocolStateV1._gatewayRegistry = _newGatewayRegistry; - } + contractMap[contractName] = contractAddress; - // Internal functions ////////////////////////////////////////////////////// + emit LogContractUpdated(contractName, contractAddress, contractName); + } - // Cast an address to a payable address - function _payableAddress(address a) - internal - pure - returns (address payable) + function getContract(string memory contractName) + public + view + returns (address) { - return address(uint160(address(a))); + return contractMap[contractName]; } } - -/// @notice Protocol is a directory of the current contract addresses. -/* solium-disable-next-line no-empty-blocks */ -contract ProtocolProxy is InitializableAdminUpgradeabilityProxy { - -} diff --git a/migrations/1_darknodes.js b/migrations/1_darknodes.js index ac08307d..bb9297e8 100644 --- a/migrations/1_darknodes.js +++ b/migrations/1_darknodes.js @@ -11,8 +11,9 @@ const DarknodeRegistryStore = artifacts.require("DarknodeRegistryStore"); const DarknodeRegistryProxy = artifacts.require("DarknodeRegistryProxy"); const DarknodeRegistryLogicV1 = artifacts.require("DarknodeRegistryLogicV1"); const DarknodeSlasher = artifacts.require("DarknodeSlasher"); -const ProtocolProxy = artifacts.require("ProtocolProxy"); -const ProtocolLogicV1 = artifacts.require("ProtocolLogicV1"); +const Protocol = artifacts.require("Protocol"); +const ClaimRewards = artifacts.require("ClaimRewards"); +const GetOperatorDarknodes = artifacts.require("GetOperatorDarknodes"); const RenProxyAdmin = artifacts.require("RenProxyAdmin"); const networks = require("./networks.js"); @@ -64,13 +65,30 @@ module.exports = async function(deployer, network) { DarknodePaymentStore.address = addresses.DarknodePaymentStore || ""; DarknodePayment.address = addresses.DarknodePayment || ""; ClaimlessRewards.address = addresses.ClaimlessRewards || ""; - ProtocolProxy.address = addresses.ProtocolProxy || ""; - ProtocolLogicV1.address = addresses.ProtocolLogicV1 || ""; + Protocol.address = addresses.Protocol || ""; RenProxyAdmin.address = addresses.RenProxyAdmin || ""; + GetOperatorDarknodes.address = addresses.GetOperatorDarknodes || ""; + ClaimRewards.address = addresses.ClaimRewards || ""; const tokens = addresses.tokens || {}; let actionCount = 0; + /** GetOperatorDarknodes **************************************************************/ + + // !!! 0x4e27a3e21e747cf875ad5829b6d9cb7700b8b5f0 + // if (!GetOperatorDarknodes.address) { + // deployer.logger.log("Deploying GetOperatorDarknodes"); + // await deployer.deploy( + // GetOperatorDarknodes, + // DarknodeRegistryProxy.address + // ); + // actionCount++; + // } + // const getOperatorDarknodes = await GetOperatorDarknodes.at( + // GetOperatorDarknodes.address + // ); + return; + /** PROXY ADMIN ***********************************************************/ if (!RenProxyAdmin.address) { deployer.logger.log("Deploying Proxy "); @@ -79,53 +97,32 @@ module.exports = async function(deployer, network) { } let renProxyAdmin = await RenProxyAdmin.at(RenProxyAdmin.address); - /** PROTOCOL **************************************************************/ - if (!ProtocolLogicV1.address) { - deployer.logger.log("Deploying ProtocolLogicV1"); - await deployer.deploy(ProtocolLogicV1); - actionCount++; - } - const protocolLogic = await ProtocolLogicV1.at(ProtocolLogicV1.address); - const protocolParameters = { types: ["address"], values: [contractOwner] }; - - // Initialize ProtocolLogic so others can't initialize it. - const protocolLogicOwner = await protocolLogic.owner.call(); - if (Ox(protocolLogicOwner) === Ox(NULL)) { - deployer.logger.log("Ensuring ProtocolLogic is initialized"); - await protocolLogic.initialize(...protocolParameters.values); + /** ClaimRewards **************************************************************/ + if (!ClaimRewards.address) { + deployer.logger.log("Deploying ClaimRewards"); + await deployer.deploy(ClaimRewards); actionCount++; } + const claimRewards = await ClaimRewards.at(ClaimRewards.address); - let protocolProxy; - if (!ProtocolProxy.address) { - deployer.logger.log("Deploying ProtocolProxy"); - await deployer.deploy(ProtocolProxy); - protocolProxy = await ProtocolProxy.at(ProtocolProxy.address); - await protocolProxy.initialize( - protocolLogic.address, - renProxyAdmin.address, - encodeCallData( - web3, - "initialize", - protocolParameters.types, - protocolParameters.values - ) - ); - actionCount++; - } else { - protocolProxy = await ProtocolProxy.at(ProtocolProxy.address); - } + // /** GetOperatorDarknodes **************************************************************/ + // if (!GetOperatorDarknodes.address) { + // deployer.logger.log("Deploying GetOperatorDarknodes"); + // await deployer.deploy(GetOperatorDarknodes); + // actionCount++; + // } + // const getOperatorDarknodes = await GetOperatorDarknodes.at( + // GetOperatorDarknodes.address + // ); - const protocolProxyLogic = await renProxyAdmin.getProxyImplementation( - protocolProxy.address - ); - if (Ox(protocolProxyLogic) !== Ox(ProtocolLogicV1.address)) { - throw new Error( - "ERROR: ProtocolProxy is pointing to out-dated ProtocolLogicV1." - ); + /** PROTOCOL **************************************************************/ + if (!Protocol.address) { + deployer.logger.log("Deploying Protocol"); + await deployer.deploy(Protocol); + actionCount++; } - - const protocol = await ProtocolLogicV1.at(ProtocolProxy.address); + const protocol = await Protocol.at(Protocol.address); + await protocol.setContract("DarknodeRegistry", darknodeRegistry.address); /** Ren TOKEN *************************************************************/ if (!RenToken.address) { @@ -431,9 +428,11 @@ module.exports = async function(deployer, network) { const dnrInDarknodePayment = await darknodePayment.darknodeRegistry.call(); if (Ox(dnrInDarknodePayment) !== Ox(darknodeRegistry.address)) { - deployer.logger.log("Updating DNR in DNP"); - await darknodePayment.updateDarknodeRegistry(darknodeRegistry.address); - actionCount++; + deployer.logger.log("DNP is still pointing to Forwarder."); + + // deployer.logger.log("Updating DNR in DNP"); + // await darknodePayment.updateDarknodeRegistry(darknodeRegistry.address); + // actionCount++; } const darknodePaymentStore = await DarknodePaymentStore.at( @@ -500,8 +499,7 @@ module.exports = async function(deployer, network) { RenToken: "${RenToken.address}", // Protocol - ProtocolLogicV1: "${ProtocolLogicV1.address}", - ProtocolProxy: "${ProtocolProxy.address}", + Protocol: "${Protocol.address}", // DNR DarknodeRegistryStore: "${DarknodeRegistryStore.address}", diff --git a/migrations/2_shifter.js b/migrations/2_shifter.js deleted file mode 100644 index 290d9c8e..00000000 --- a/migrations/2_shifter.js +++ /dev/null @@ -1,284 +0,0 @@ -/// - -const NULL = "0x0000000000000000000000000000000000000000"; -const NULL1 = "0x0000000000000000000000000000000000000001"; - -const GatewayRegistry = artifacts.require("GatewayRegistry"); - -const RenERC20LogicV1 = artifacts.require("RenERC20LogicV1"); - -const GatewayLogicV1 = artifacts.require("GatewayLogicV1"); - -const BTCGateway = artifacts.require("BTCGateway"); -const RenBTC = artifacts.require("RenBTC"); - -const ZECGateway = artifacts.require("ZECGateway"); -const RenZEC = artifacts.require("RenZEC"); - -const BCHGateway = artifacts.require("BCHGateway"); -const RenBCH = artifacts.require("RenBCH"); - -const DarknodePayment = artifacts.require("DarknodePayment"); -const DarknodePaymentStore = artifacts.require("DarknodePaymentStore"); -const ProtocolLogicV1 = artifacts.require("ProtocolLogicV1"); -const ProtocolProxy = artifacts.require("ProtocolProxy"); -const BasicAdapter = artifacts.require("BasicAdapter"); -const RenProxyAdmin = artifacts.require("RenProxyAdmin"); - -const networks = require("./networks.js"); -const { encodeCallData } = require("./encode"); - -/** - * @param {any} deployer - * @param {string} network - */ -module.exports = async function (deployer, network) { - - const contractOwner = (await web3.eth.getAccounts())[0]; - - const Ox = web3.utils.toChecksumAddress; - - deployer.logger.log(`Deploying to ${network} (${network.replace("-fork", "")})...`); - - network = network.replace("-fork", ""); - - const addresses = networks[network] || {}; - const config = networks[network] ? networks[network].config : networks.config; - const _mintAuthority = config.mintAuthority || contractOwner; - - // TODO: _feeRecipient should be the DarknodePayment contract - const _feeRecipient = DarknodePaymentStore.address || addresses.DarknodePaymentStore || contractOwner; - - BTCGateway.address = addresses.BTCGateway || ""; - ZECGateway.address = addresses.ZECGateway || ""; - BCHGateway.address = addresses.BCHGateway || ""; - GatewayRegistry.address = addresses.GatewayRegistry || ""; - GatewayLogicV1.address = addresses.GatewayLogicV1 || ""; - RenZEC.address = addresses.renZEC || ""; - RenBCH.address = addresses.renBCH || ""; - RenBTC.address = addresses.renBTC || ""; - BasicAdapter.address = addresses.BasicAdapter || ""; - RenERC20LogicV1.address = addresses.RenERC20LogicV1 || ""; - - const darknodePayment = await DarknodePayment.at(DarknodePayment.address); - const protocol = await ProtocolLogicV1.at(ProtocolProxy.address); - let renProxyAdmin = await RenProxyAdmin.at(RenProxyAdmin.address); - - let actionCount = 0; - - /** Registry **************************************************************/ - - if (!GatewayRegistry.address) { - deployer.logger.log(`Deploying Gateway contract`); - await deployer.deploy( - GatewayRegistry, - ); - actionCount++; - } - const registry = await GatewayRegistry.at(GatewayRegistry.address); - - const protocolGatewayRegistry = await protocol.gatewayRegistry.call(); - if (Ox(protocolGatewayRegistry) !== Ox(registry.address)) { - deployer.logger.log(`Updating GatewayRegistry in Protocol contract. Was ${protocolGatewayRegistry}, now is ${registry.address}`); - await protocol._updateGatewayRegistry(registry.address); - actionCount++; - } - - if (!BasicAdapter.address) { - deployer.logger.log(`Deploying BasicAdapter`); - await deployer.deploy( - BasicAdapter, - registry.address, - ); - actionCount++; - } - - // try { - // deployer.logger.log("Attempting to change cycle"); - // await darknodePayment.changeCycle(); - // } catch (error) { - // deployer.logger.log("Unable to call darknodePayment.changeCycle()"); - // } - - if (!RenERC20LogicV1.address) { - deployer.logger.log(`Deploying RenERC20LogicV1 logic`); - await deployer.deploy(RenERC20LogicV1); - actionCount++; - } - const renERC20Logic = await RenERC20LogicV1.at(RenERC20LogicV1.address); - - // Initialize RenERC20Logic so others can't. - if (Ox(await renERC20Logic.owner()) === Ox(NULL)) { - deployer.logger.log("Ensuring RenERC20Logic is initialized"); - await renERC20Logic.initialize(0, contractOwner, "1000000000000000000", "1", "", "", 0); - actionCount++; - } - - if (!GatewayLogicV1.address) { - deployer.logger.log(`Deploying GatewayLogicV1 logic`); - await deployer.deploy(GatewayLogicV1); - actionCount++; - } - const gatewayLogic = await GatewayLogicV1.at(GatewayLogicV1.address); - - // Initialize GatewayLogic so others can't. - if (Ox(await gatewayLogic.owner()) === Ox(NULL)) { - deployer.logger.log("Ensuring GatewayLogic is initialized"); - await gatewayLogic.initialize( - NULL, - NULL1, - NULL1, - 10000, - 10000, - 0 - ); - actionCount++; - } - - const chainID = await web3.eth.net.getId(); - - for (const [Token, Gateway, name, decimals, minimumBurnAmount] of [ - [RenBTC, BTCGateway, "BTC", 8, config.renBTCMinimumBurnAmount], - [RenZEC, ZECGateway, "ZEC", 8, config.renZECMinimumBurnAmount], - [RenBCH, BCHGateway, "BCH", 8, config.renBCHMinimumBurnAmount], - ]) { - const symbol = `${config.tokenPrefix}${name}`; - deployer.logger.log(`Handling ${symbol}`); - - if (!Token.address) { - deployer.logger.log(`Deploying ${symbol} proxy`); - await deployer.deploy(Token); - const tokenProxy = await Token.at(Token.address); - await tokenProxy.initialize(RenERC20LogicV1.address, renProxyAdmin.address, encodeCallData( - web3, - "initialize", - ["uint256", "address", "uint256", "string", "string", "string", "uint8"], - [chainID, contractOwner, "1000000000000000000", "1", symbol, symbol, decimals]) - ); - actionCount++; - } - const token = await RenERC20LogicV1.at(Token.address); - - const tokenProxyLogic = await renProxyAdmin.getProxyImplementation(Token.address); - if (Ox(tokenProxyLogic) !== Ox(RenERC20LogicV1.address)) { - deployer.logger.log(`${symbol} is pointing to out-dated RenERC20Logic.`); - await renProxyAdmin.upgrade(Token.address, RenERC20LogicV1.address); - actionCount++; - } - - if (!Gateway.address) { - deployer.logger.log(`Deploying ${symbol} Gateway proxy`); - await deployer.deploy(Gateway); - const tokenProxy = await Gateway.at(Gateway.address); - await tokenProxy.initialize(GatewayLogicV1.address, renProxyAdmin.address, encodeCallData( - web3, - "initialize", - ["address", "address", "address", "uint16", "uint16", "uint256"], - [ - Token.address, - _feeRecipient, - _mintAuthority, - config.mintFee, - config.burnFee, - minimumBurnAmount, - ]) - ); - actionCount++; - } - const tokenGateway = await GatewayLogicV1.at(Gateway.address); - - const gatewayProxyLogic = await renProxyAdmin.getProxyImplementation(tokenGateway.address); - if (Ox(gatewayProxyLogic) !== Ox(GatewayLogicV1.address)) { - deployer.logger.log(`${symbol} gateway is pointing to out-dated GatewayLogic.`); - await renProxyAdmin.upgrade.write(tokenGateway.address, GatewayLogicV1.address); - actionCount++; - } - - const gatewayMintAuthority = await tokenGateway.mintAuthority.call(); - if (Ox(gatewayMintAuthority) !== Ox(_mintAuthority)) { - deployer.logger.log(`Updating mint authority in ${symbol} Gateway. Was ${gatewayMintAuthority}, now is ${_mintAuthority}`); - await tokenGateway.updateMintAuthority(_mintAuthority); - actionCount++; - } - - const tokenOwner = await token.owner.call(); - if (Ox(tokenOwner) !== Ox(tokenGateway.address)) { - deployer.logger.log(`Transferring ${symbol} ownership`); - - if (Ox(tokenOwner) === Ox(contractOwner)) { - await token.transferOwnership(tokenGateway.address); - - // Update token's Gateway contract - deployer.logger.log(`Claiming ${symbol} ownership in Gateway`); - await tokenGateway.claimTokenOwnership(); - } else { - deployer.logger.log(`Transferring token ownership from ${tokenOwner} to new ${symbol} Gateway`); - const oldGateway = await Gateway.at(tokenOwner); - await oldGateway.transferTokenOwnership(tokenGateway.address); - // This will also call claim, but we try anyway because older - // contracts didn't: - try { - // Claim ownership - await tokenGateway.claimTokenOwnership(); - } catch (error) { - console.error(error); - } - } - actionCount++; - } - - let tokenRegistered = (await darknodePayment.registeredTokenIndex.call(Token.address)).toString() !== "0"; - const pendingRegistration = await darknodePayment.tokenPendingRegistration.call(Token.address); - if (!tokenRegistered && !pendingRegistration) { - deployer.logger.log(`Registering token ${symbol} in DarknodePayment`); - await darknodePayment.registerToken(Token.address); - actionCount++; - } - - const registered = await registry.getGatewayByToken.call(Token.address); - if (Ox(registered) === Ox(NULL) || Ox(registered) !== Ox(Gateway.address)) { - const otherRegistration = (await registry.getGatewayBySymbol.call(name)); - if (Ox(otherRegistration) === Ox(NULL)) { - deployer.logger.log(`Registering ${symbol} Gateway`); - await registry.setGateway(name, Token.address, Gateway.address); - } else { - deployer.logger.log(`Updating registered ${symbol} Gateway (was ${otherRegistration})`); - await registry.updateGateway(Token.address, Gateway.address); - } - actionCount++; - } - - const feeRecipient = await tokenGateway.feeRecipient.call(); - if (Ox(feeRecipient) !== Ox(DarknodePaymentStore.address)) { - deployer.logger.log(`Updating fee recipient for ${symbol} Gateway. Was ${Ox(feeRecipient)}, now is ${Ox(_feeRecipient)}`); - await tokenGateway.updateFeeRecipient(_feeRecipient); - actionCount++; - } - } - - deployer.logger.log(`Performed ${actionCount} updates.`); - - /** LOG *******************************************************************/ - - deployer.logger.log(` - /* 2_shifter.js */ - - GatewayRegistry: "${GatewayRegistry.address}", - BasicAdapter: "${BasicAdapter.address}", - - RenERC20LogicV1: "${RenERC20LogicV1.address}", - GatewayLogicV1: "${GatewayLogicV1.address}", - - // BTC - renBTC: "${RenBTC.address}", - BTCGateway: "${BTCGateway.address}", - - // ZEC - renZEC: "${RenZEC.address}", - ZECGateway: "${ZECGateway.address}", - - // BCH - renBCH: "${RenBCH.address}", - BCHGateway: "${BCHGateway.address}",` - ); -} diff --git a/package.json b/package.json index 9b6cf9f2..700b5b2f 100644 --- a/package.json +++ b/package.json @@ -16,6 +16,7 @@ "deploy-skipDryRun": "truffle migrate --network $NETWORK --skipDryRun 2>&1 | tee $NETWORK-output.log", "clean-build": "echo \"Have all contracts been verified on Etherscan? Continuing in 10 seconds...\" && sleep 10 && grep -R -l 'networks\": {}' build --exclude-dir=development | xargs rm; node build/clean.js", "verify": "truffle run verify --network $NETWORK", + "docs": "solidity-docgen --exclude contracts/migrations,contracts/test --solc-module solc --templates ./templates --helpers ./templates/helpers.js --extension=mdx", "prepare-release": "npmignore" }, "dependencies": { diff --git a/templates/contract.hbs b/templates/contract.hbs new file mode 100644 index 00000000..4548fe63 --- /dev/null +++ b/templates/contract.hbs @@ -0,0 +1,121 @@ +--- +title: {{name}} +--- + +import { DocTag, DocType } from "/components/DocTag"; + + + +## Contract: `{{name}}` + +{{{natspec.userdoc}}} + +{{{natspec.devdoc}}} + +{{#if (filterContracts inheritance name)}} +Inherits from: + +{{#each (filterContracts inheritance name)}} +- `{{name}}` +{{/each}} + +{{/if}} + +
+ +{{#if ownVariables}} + +
+ +## Variables + +{{#each ownVariables}} + +### **`{{name}}`**: *`{{type}}`* + +{{visibility}} + +{{{natspec.userdoc}}} + +{{{natspec.devdoc}}} + +
+{{/each}} +{{/if}} + +{{#if ownModifiers}} + +
+ +## Modifiers + +{{#each ownModifiers}} +### `{{name}}({{args}})` + +{{{natspec.userdoc}}} + +{{{natspec.devdoc}}} + +
+ +{{/each}} +{{/if}} + +{{#if ownFunctions}} + +
+ +## Functions + +{{#each ownFunctions}} +### **`{{name}}`** *`({{args}}){{#if outputs}} → {{outputs}}{{/if}}`* ({{visibility}}) + +{{#if natspec.params}} +**Params** +{{#each natspec.params}} +- `{{param}}`: {{description}} +{{/each}} +{{/if}} + +{{#if natspec.returns}} +**Returns** +{{#each natspec.returns}} +- `{{param}}`: {{description}} +{{/each}} +{{/if}} + +{{{natspec.userdoc}}} + +{{{natspec.devdoc}}} + +
+ +{{/each}} +{{/if}} + +{{#if ownEvents}} + +
+ +## Events + +{{#each ownEvents}} +### **`{{name}}`** *`({{args}})`* + +{{{natspec.userdoc}}} + +{{#if natspec.devdoc}} +*{{natspec.devdoc}}* +{{/if}} + +{{#if natspec.params}} +**Params** +{{#each natspec.params}} +- `{{param}}`: {{description}} +{{/each}} +{{/if}} + +
+ +{{/each}} +{{/if}} \ No newline at end of file diff --git a/templates/helpers.js b/templates/helpers.js new file mode 100644 index 00000000..2ab43fc4 --- /dev/null +++ b/templates/helpers.js @@ -0,0 +1,13 @@ +module.exports = { + public(visibility) { + return visibility === "public"; + }, + + hasPublic(children) { + return children.visibility === "public"; + }, + + filterContracts(list, item) { + return list.filter(i => i.name !== item); + } +}; diff --git a/templates/prelude.sample.hbs b/templates/prelude.sample.hbs new file mode 100644 index 00000000..5d3e0866 --- /dev/null +++ b/templates/prelude.sample.hbs @@ -0,0 +1,3 @@ +{{#links}} +[{{target.anchor}}]: {{relativePath}}#{{target.anchor}} +{{/links}} \ No newline at end of file diff --git a/test/DarknodePayment.ts b/test/DarknodePayment.ts index 61a43209..f1674158 100644 --- a/test/DarknodePayment.ts +++ b/test/DarknodePayment.ts @@ -3,10 +3,12 @@ import BN from "bn.js"; import { DarknodePaymentInstance, DarknodePaymentStoreInstance, + DarknodeRegistryForwarderInstance, DarknodeRegistryLogicV1Instance, DarknodeSlasherInstance, ERC20Instance, - RenTokenInstance + RenTokenInstance, + DarknodePaymentMigratorInstance } from "../types/truffle-contracts"; import { ETHEREUM, @@ -25,6 +27,10 @@ const DarknodeRegistryProxy = artifacts.require("DarknodeRegistryProxy"); const DarknodeRegistryLogicV1 = artifacts.require("DarknodeRegistryLogicV1"); const SelfDestructingToken = artifacts.require("SelfDestructingToken"); const DarknodeSlasher = artifacts.require("DarknodeSlasher"); +const DarknodeRegistryForwarder = artifacts.require( + "DarknodeRegistryForwarder" +); +const DarknodePaymentMigrator = artifacts.require("DarknodePaymentMigrator"); const { config } = require("../migrations/networks"); @@ -36,6 +42,7 @@ contract("DarknodePayment", (accounts: string[]) => { let dnp: DarknodePaymentInstance; let ren: RenTokenInstance; let slasher: DarknodeSlasherInstance; + let forwarder: DarknodeRegistryForwarderInstance; const owner = accounts[0]; const darknode1 = accounts[1]; @@ -54,6 +61,9 @@ contract("DarknodePayment", (accounts: string[]) => { slasher = await DarknodeSlasher.deployed(); await dnr.updateSlasher(slasher.address); + forwarder = await DarknodeRegistryForwarder.new(dnr.address); + await dnp.updateDarknodeRegistry(forwarder.address); + await waitForEpoch(dnr); new BN(await dnr.numDarknodes.call()).should.bignumber.equal(new BN(0)); @@ -542,6 +552,14 @@ contract("DarknodePayment", (accounts: string[]) => { ( await dnp.registeredTokenIndex.call(ETHEREUM) ).should.bignumber.equal(0); + + const darknodePaymentMigrator = await DarknodePaymentMigrator.new( + dnp.address, + [ETHEREUM] + ); + + (await store.owner.call()).should.equal(dnp.address); + await dnp.transferStoreOwnership(darknodePaymentMigrator.address); }); it("can pay out DAI when darknodes withdraw", async () => { diff --git a/test/DarknodeRegistry.ts b/test/DarknodeRegistry.ts index 412284b4..8f918805 100644 --- a/test/DarknodeRegistry.ts +++ b/test/DarknodeRegistry.ts @@ -5,7 +5,8 @@ import { DarknodeRegistryStoreInstance, DarknodeSlasherInstance, RenProxyAdminInstance, - RenTokenInstance + RenTokenInstance, + GetOperatorDarknodesInstance } from "../types/truffle-contracts"; import { deployProxy, @@ -27,12 +28,13 @@ const DarknodeRegistryLogicV1 = artifacts.require("DarknodeRegistryLogicV1"); const DarknodeSlasher = artifacts.require("DarknodeSlasher"); const NormalToken = artifacts.require("NormalToken"); const RenProxyAdmin = artifacts.require("RenProxyAdmin"); +const GetOperatorDarknodes = artifacts.require("GetOperatorDarknodes"); const { config } = require("../migrations/networks"); const numAccounts = 10; -contract("DarknodeRegistry", (accounts: string[]) => { +contract.only("DarknodeRegistry", (accounts: string[]) => { let ren: RenTokenInstance; let dnrs: DarknodeRegistryStoreInstance; let dnr: DarknodeRegistryLogicV1Instance; @@ -136,16 +138,47 @@ contract("DarknodeRegistry", (accounts: string[]) => { ); }); - it("can register, deregister and refund Darknodes", async () => { + it.only("can register, deregister and refund Darknodes", async function() { + this.timeout(1000 * 1000); // [ACTION] Register for (let i = 0; i < numAccounts; i++) { await ren.approve(dnr.address, MINIMUM_BOND, { from: accounts[i] }); await dnr.register(ID(i), PUBK(i), { from: accounts[i] }); } + const nodeCount = 500; + await ren.transfer(accounts[2], MINIMUM_BOND.mul(new BN(nodeCount))); + await ren.approve(dnr.address, MINIMUM_BOND.mul(new BN(nodeCount)), { + from: accounts[2] + }); + + for (let i = numAccounts; i < numAccounts + nodeCount; i++) { + console.log("i", i - numAccounts + 1); + await dnr.register(ID(i), PUBK(i), { from: accounts[2] }); + } + // Wait for epoch await waitForEpoch(dnr); + const getOperatorDarknodes = await GetOperatorDarknodes.new( + dnr.address + ); + console.log( + "getOperatorDarknodes", + await getOperatorDarknodes.getOperatorDarknodes.call(accounts[2]) + ); + + // try { + // console.log( + // "getOperatorDarknodes", + // await (getOperatorDarknodes.getOperatorDarknodes as any).write( + // accounts[2] + // ) + // ); + // } catch (error) { + // console.error(error); + // } + // [ACTION] Deregister for (let i = 0; i < numAccounts; i++) { await dnr.deregister(ID(i), { from: accounts[i] }); diff --git a/truffle.js b/truffle.js index 08b26b19..a0bcb619 100644 --- a/truffle.js +++ b/truffle.js @@ -20,12 +20,13 @@ const kovanNetwork = { // @ts-ignore provider: () => new HDWalletProvider( - process.env.MNEMONIC_KOVAN, + process.env.MNEMONIC_TESTNET, `https://kovan.infura.io/v3/${process.env.INFURA_KEY}` ), network_id: 42, gas: 6721975, - gasPrice: 6.5 * GWEI + gasPrice: 6.5 * GWEI, + networkCheckTimeout: 20000 }; const mainNetwork = { @@ -36,16 +37,16 @@ const mainNetwork = { `https://mainnet.infura.io/v3/${process.env.INFURA_KEY}` ), network_id: 1, - gas: 8721975, - gasPrice: 18 * GWEI, - networkCheckTimeout: 10000 + gas: 6721975, + gasPrice: 42 * GWEI, + networkCheckTimeout: 20000 }; const ethRinkebyNetwork = { // @ts-ignore provider: () => new HDWalletProvider( - process.env.MNEMONIC_TESTNET || process.env.MNEMONIC_KOVAN, + process.env.MNEMONIC_TESTNET || process.env.MNEMONIC_TESTNET, `https://rinkeby.infura.io/v3/${process.env.INFURA_KEY}` ), network_id: 4, @@ -70,11 +71,11 @@ module.exports = { }, mocha: { // // Use with `npm run test`, not with `npm run coverage` - // reporter: "eth-gas-reporter", - // reporterOptions: { - // currency: 'USD', - // gasPrice: 21 - // }, + reporter: "eth-gas-reporter", + reporterOptions: { + currency: "USD", + gasPrice: 21 + }, enableTimeouts: false, useColors: true, bail: false From 2ad07fe3e79830b57ac3b888d327e05ded9c9d57 Mon Sep 17 00:00:00 2001 From: noiach Date: Mon, 23 Aug 2021 12:59:27 +1000 Subject: [PATCH 07/13] tests: fix setup to get tests passing again --- README.md | 21 +- contracts/DarknodePayment/ValidString.sol | 8 +- migrations/1_darknodes.js | 28 +- migrations/networks.js | 228 +--- test/Adapter.ts | 138 --- test/DarknodePayment.ts | 12 +- test/DarknodeRegistry.ts | 36 +- test/ERC20WithPermit.ts | 309 ------ test/Gateway.ts | 1163 --------------------- test/Protocol.ts | 209 +--- test/Vesting.ts | 223 ---- truffle.js | 10 +- 12 files changed, 93 insertions(+), 2292 deletions(-) delete mode 100644 test/Adapter.ts delete mode 100644 test/ERC20WithPermit.ts delete mode 100644 test/Gateway.ts delete mode 100644 test/Vesting.ts diff --git a/README.md b/README.md index c4ac76ca..3361bffd 100644 --- a/README.md +++ b/README.md @@ -1,12 +1,25 @@ # `⚖️ darknode-sol` -## Solidity smart contracts used by Ren Darknodes + +## Ethereum smart contracts for managing darknodes [![CircleCI](https://circleci.com/gh/renproject/darknode-sol.svg?style=shield)](https://circleci.com/gh/renproject/darknode-sol) [![Coverage Status](https://coveralls.io/repos/github/renproject/darknode-sol/badge.svg?branch=master)](https://coveralls.io/github/renproject/darknode-sol?branch=master) -**`darknode-sol`** contains a collection of Ethereum smart contracts utilized by the Ren Darknodes, written in Solidity. Ren bootstraps off Ethereum as a trusted third-party computer to handle Darknode registration and fee payouts. +Ren has two repositories for its Solidity contract: + +- `darknode-sol` (this repository) - contracts on Ethereum for managing darknode registrations. +- [`gateway-sol`](https://github.com/renproject/gateway-sol) - contracts on multiple EVM chains for minting and burning of ren-assets. + +Ren bootstraps off Ethereum to handle the REN token and darknode registrations. + +## ~ [Documentation](https://renproject.github.io/ren-client-docs/contracts/) ~ -Ren is powered by the RenVM — the Ren Virtual Machine — in a decentralized network of Darknodes that is distinct from Ethereum. This ensures the performance of the network, and the privacy of data, is not dependent on Ethereum. +- For the latest contract addresses, see the [contract addresses](https://renproject.github.io/ren-client-docs/contracts/deployments) page. +- For a summary of each contract, see the [summary of contracts](https://renproject.github.io/ren-client-docs/contracts/summary) page. + +
+ +Development notes ## Tests @@ -73,3 +86,5 @@ Run the following (replacing the network and contract name): ```sh NETWORK=mainnet yarn run verify Contract1 Contract2 ``` + +
diff --git a/contracts/DarknodePayment/ValidString.sol b/contracts/DarknodePayment/ValidString.sol index f326cf36..2cbc0fe8 100644 --- a/contracts/DarknodePayment/ValidString.sol +++ b/contracts/DarknodePayment/ValidString.sol @@ -3,7 +3,11 @@ pragma solidity 0.5.17; library ValidString { - function isAlphanumeric(string memory _string) public pure returns (bool) { + function isAlphanumeric(string memory _string) + internal + pure + returns (bool) + { for (uint256 i = 0; i < bytes(_string).length; i++) { uint8 char = uint8(bytes(_string)[i]); if ( @@ -17,7 +21,7 @@ library ValidString { return true; } - function isNotEmpty(string memory _string) public pure returns (bool) { + function isNotEmpty(string memory _string) internal pure returns (bool) { return bytes(_string).length > 0; } } diff --git a/migrations/1_darknodes.js b/migrations/1_darknodes.js index bb9297e8..d6aa2fc2 100644 --- a/migrations/1_darknodes.js +++ b/migrations/1_darknodes.js @@ -87,7 +87,6 @@ module.exports = async function(deployer, network) { // const getOperatorDarknodes = await GetOperatorDarknodes.at( // GetOperatorDarknodes.address // ); - return; /** PROXY ADMIN ***********************************************************/ if (!RenProxyAdmin.address) { @@ -97,14 +96,6 @@ module.exports = async function(deployer, network) { } let renProxyAdmin = await RenProxyAdmin.at(RenProxyAdmin.address); - /** ClaimRewards **************************************************************/ - if (!ClaimRewards.address) { - deployer.logger.log("Deploying ClaimRewards"); - await deployer.deploy(ClaimRewards); - actionCount++; - } - const claimRewards = await ClaimRewards.at(ClaimRewards.address); - // /** GetOperatorDarknodes **************************************************************/ // if (!GetOperatorDarknodes.address) { // deployer.logger.log("Deploying GetOperatorDarknodes"); @@ -122,7 +113,7 @@ module.exports = async function(deployer, network) { actionCount++; } const protocol = await Protocol.at(Protocol.address); - await protocol.setContract("DarknodeRegistry", darknodeRegistry.address); + await protocol.__Protocol_init(contractOwner); /** Ren TOKEN *************************************************************/ if (!RenToken.address) { @@ -131,6 +122,14 @@ module.exports = async function(deployer, network) { actionCount++; } + /** ClaimRewards **************************************************************/ + if (!ClaimRewards.address) { + deployer.logger.log("Deploying ClaimRewards"); + await deployer.deploy(ClaimRewards); + actionCount++; + } + // const claimRewards = await ClaimRewards.at(ClaimRewards.address); + /** DARKNODE REGISTRY *****************************************************/ if (!DarknodeRegistryStore.address) { deployer.logger.log("Deploying DarknodeRegistryStore"); @@ -270,12 +269,17 @@ module.exports = async function(deployer, network) { actionCount++; } - const protocolDarknodeRegistry = await protocol.darknodeRegistry.call(); + const protocolDarknodeRegistry = await protocol.getContract.call( + "DarknodeRegistry" + ); if (Ox(protocolDarknodeRegistry) !== Ox(darknodeRegistry.address)) { deployer.logger.log( `Updating DarknodeRegistry in Protocol contract. Was ${protocolDarknodeRegistry}, now is ${darknodeRegistry.address}` ); - await protocol._updateDarknodeRegistry(darknodeRegistry.address); + await protocol.updateContract( + "DarknodeRegistry", + darknodeRegistry.address + ); actionCount++; } diff --git a/migrations/networks.js b/migrations/networks.js index 74c144b0..7ad4db8c 100644 --- a/migrations/networks.js +++ b/migrations/networks.js @@ -7,15 +7,7 @@ const config = { DARKNODE_PAYOUT_PERCENT: 50, // Only payout 50% of the reward pool BLACKLIST_SLASH_PERCENT: 0, // Don't slash bond for blacklisting MALICIOUS_SLASH_PERCENT: 50, // Slash 50% of the bond - SECRET_REVEAL_SLASH_PERCENT: 100, // Slash 100% of the bond - mintAuthority: "", // Darknode public key - mintFee: 10, - burnFee: 10, - renBTCMinimumBurnAmount: 10000, - renZECMinimumBurnAmount: 10000, - renBCHMinimumBurnAmount: 10000, - - tokenPrefix: "mock" + SECRET_REVEAL_SLASH_PERCENT: 100 // Slash 100% of the bond }; module.exports = { @@ -42,86 +34,14 @@ module.exports = { ETH: "0xEeeeeEeeeEeEeeEeEeEeeEEEeeeeEeeeeeeeEEeE" }, - RenERC20LogicV1: "0xe2d6cCAC3EE3A21AbF7BeDBE2E107FfC0C037e80", - GatewayLogicV1: "0x402ec534BaF9e8Dd2968c57fDea368f3856460d6", - BTCGateway: "0xe4b679400F0f267212D5D812B95f58C83243EE71", - ZECGateway: "0xc3BbD5aDb611dd74eCa6123F05B18acc886e122D", - BCHGateway: "0xCc4FF5b8A4A7adb35F00ff0CBf53784e07c3C52F", - renBTC: "0xEB4C2781e4ebA804CE9a9803C67d0893436bB27D", - renZEC: "0x1C5db575E2Ff833E46a2E9864C22F4B22E0B37C2", - renBCH: "0x459086F2376525BdCebA5bDDA135e4E9d3FeF5bf", - GatewayRegistry: "0xe80d347DF1209a76DD9d2319d62912ba98C54DDD", - - BasicAdapter: "0x32666B64e9fD0F44916E1378Efb2CFa3B3B96e80", - config: { - ...config, - mintAuthority: "0x7f64e4e4b2d7589eb0ac8439c0e639856aeceee7", - // communityFund: "", - - tokenPrefix: "ren" - } - }, - chaosnet: { - tokens: { - DAI: "0x6b175474e89094c44da98b954eedeac495271d0f", - ETH: "0xEeeeeEeeeEeEeeEeEeEeeEEEeeeeEeeeeeeeEEeE" - }, - - /* 1_darknodes.js */ - - RenProxyAdmin: "0x3840c01167cf06C3101762f0Fce991BEfA1CdFAF", - RenToken: "0x8E0679d0d4691Ea345fB8C2aEc9bf9c1d3eb40eD", - - // Protocol - ProtocolLogicV1: "0x637278Bf72127c76d98D9a9BE36D2121fB2447c8", - ProtocolProxy: "0xf61e97c464ec0cf48b33262c3a1ef42114275144", - - // DNR - DarknodeRegistryStore: "0x4C2f0533af3792695e71699Ff221205f7FA47579", - DarknodeRegistryLogicV1: "0x308ecdCEfA3231ad1a8083Bd42510830e749FbB7", - DarknodeRegistryProxy: "0x7C08FF068b7FF6d7d2f431f08B8C2e536ed693DD", - - // DNP - DarknodePaymentStore: "0x9C5B076dE6c5c01c9E1ac4cB5b48fB681384742B", - DarknodePayment: "0xdf2a33Bf44F917b85a716aA1e98Af0bBa4085dEc", - - // Slasher - DarknodeSlasher: "0xD33CfE24e84D3156211CC2eA74192593Ccf559Aa", - - /* 2_shifter.js */ - - GatewayRegistry: "0x817d2E41dABbA7A5e840353c9D73A40674ED3400", - BasicAdapter: "0x0807d0810714d85B49E40349a3002F06e841B7c3", - - RenERC20LogicV1: "0x0A2d368E4EeCBd515033BA29253909F2978C1Bee", - GatewayLogicV1: "0x85BdE74CA4760587eC9d77f775Cb83d4Cb76e5ae", - - // BTC - renBTC: "0x93E47eC9B8cD1a669C7267E20ACF1F6a9c5340Ba", - BTCGateway: "0xD4d496632b9aF3122FB5DdbF0614aA82effa9F99", - - // ZEC - renZEC: "0x82E728594b87318e513931469A30713FEF966c8E", - ZECGateway: "0x37A4860728E292E5852B215c46DBE7a18862EF93", - - // BCH - renBCH: "0xa2F0a92396cb245BaD15BA77817E1620c58bf05b", - BCHGateway: "0xc3AC15BEc6dA89e8DC5c4d1b4d0C785547676e3a", - - config: { - ...config, - MINIMUM_BOND: new BN(10000).mul(new BN(10).pow(new BN(18))), - mintAuthority: "0x1D1A5e08Cb784BA16d69F25551Aea5C49482505c", - - tokenPrefix: "chaos" + ...config } }, testnet: { - /* 1_darknodes.js */ - RenProxyAdmin: "0x4C695C4Aa6238f0A7092733180328c2E64C912C7", RenToken: "0x2cd647668494c1b15743ab283a0f980d90a87394", + DarknodeSlasher: "0x5B403bdC360A447290758c8BA779c44cdFC3476F", // Protocol ProtocolLogicV1: "0x43d39d7ea61741f26E09D377F4E79B1F847Dc356", @@ -136,45 +56,17 @@ module.exports = { DarknodePaymentStore: "0x0EC73cCDCd8e643d909D0c4b663Eb1B2Fb0b1e1C", DarknodePayment: "0x023f2e94C3eb128D3bFa6317a3fF860BF93C1616", - // Slasher - DarknodeSlasher: "0x5B403bdC360A447290758c8BA779c44cdFC3476F", - tokens: { DAI: "0xc4375b7de8af5a38a93548eb8453a498222c4ff2", ETH: "0xEeeeeEeeeEeEeeEeEeEeeEEEeeeeEeeeeeeeEEeE" }, - /* 2_shifter.js */ - - GatewayRegistry: "0x557e211EC5fc9a6737d2C6b7a1aDe3e0C11A8D5D", - BasicAdapter: "0x7DDFA2e5435027f6e13Ca8Db2f32ebd5551158Bb", - - RenERC20LogicV1: "0xCe77c29b479bDF510f39bc4A2e43B0E4344fAB0f", - GatewayLogicV1: "0x080d856994Fed1124c93AcA580aF035a86e9e9c7", - - // BTC - renBTC: "0x0A9ADD98C076448CBcFAcf5E457DA12ddbEF4A8f", - BTCGateway: "0x55363c0dBf97Ff9C0e31dAfe0fC99d3e9ce50b8A", - - // ZEC - renZEC: "0x42805DA220DF1f8a33C16B0DF9CE876B9d416610", - ZECGateway: "0xAACbB1e7bA99F2Ed6bd02eC96C2F9a52013Efe2d", - - // BCH - renBCH: "0x618dC53e856b1A601119F2Fed5F1E873bCf7Bd6e", - BCHGateway: "0x9827c8a66a2259fd926E7Fd92EA8DF7ed1D813b1", - config: { - ...config, - mintAuthority: "0x44Bb4eF43408072bC888Afd1a5986ba0Ce35Cb54", - - tokenPrefix: "test" + ...config } }, devnet: { - /* 1_darknodes.js */ - RenProxyAdmin: "0xA2C9D593bC096FbB3Cf5b869270645C470E5416B", RenToken: "0x2cd647668494c1b15743ab283a0f980d90a87394", DarknodeSlasher: "0xf4E4AdbDDfd6EBc9457ad7ab9249f63701942BE3", @@ -197,118 +89,8 @@ module.exports = { ETH: "0xEeeeeEeeeEeEeeEeEeEeeEEEeeeeEeeeeeeeEEeE" }, - /* 2_shifter.js */ - - GatewayRegistry: "0x5F051E588f39D95bc6c1742f6FA98B103aa0E5c8", - BasicAdapter: "0xFABDB1F53Ef8B080332621cBc9F820a39e7A1B83", - - RenERC20LogicV1: "0xE121991B5DAB075E33C30E5C36EB5FFa9B2Af1A4", - GatewayLogicV1: "0xcADcCC772991d8c49c6242604d334f8a0B07A039", - - renBTC: "0x581347fc652f9FCdbCA8372A4f65404C4154e93b", - BTCGateway: "0xb4fc6D131A44A3b44668E997Ce0CE00A52D4D9ed", - - renZEC: "0x6f35D542f3E0886281fb6152010fb52aC6B931F6", - ZECGateway: "0x3E31c6E07Eb4C471A6443e90E304E9C68dcdEd7d", - - renBCH: "0x148234809A551c131951bD01640494eecB905b08", - BCHGateway: "0x86efB11aF3f2c3E3df525a851e3F28E03F4Dcb17", - config: { - ...config, - mintAuthority: "0x1B9d58208879AA9aa9E10040b34cF2b684237621", - - tokenPrefix: "dev" - } - }, - - rinkebyDevnet: { - /* 1_darknodes.js */ - - RenProxyAdmin: "0xed01c6323829CbFD3b6bAC8Baa11C7aC8A0F26fb", - RenToken: "0x8BCCcA938b311029948F70249709CAd7c0F28Bb4", - - // Protocol - ProtocolLogicV1: "0x9Cc2d9cCea0AE9f7EDD91Cf91ab74074EeDbABE1", - ProtocolProxy: "0xc5786B864D1DaF57D653470f2fd0c921dC080953", - - // DNR - DarknodeRegistryStore: "0x93151b8c88A7f6004656556880e2a3E701452375", - DarknodeRegistryLogicV1: "0xD46dc8a22B980C871207bC57b0e524C46cfB4c1B", - DarknodeRegistryProxy: "0x74d0651259Cd63e7c15Dc11e3787dB1D80D41d9E", - - // DNP - DarknodePaymentStore: "0x0a1b343bB36dA2593d15162c8e0370eF5E0085B1", - DarknodePayment: "0x40BC55A28f07D2208c1a9Da4008912BFcc617463", - - // Slasher - DarknodeSlasher: "0x78eFADC45D1ba7a2E51072F73b3C2E5Be1ca1B10", - - tokens: { - DAI: "0x5592ec0cfb4dbc12d3ab100b257153436a1f0fea", - ETH: "0xEeeeeEeeeEeEeeEeEeEeeEEEeeeeEeeeeeeeEEeE" - }, - - /* 2_shifter.js */ - - GatewayRegistry: "0xcF9F36668ad5b28B336B248a67268AFcF1ECbdbF", - - config: { - ...config, - mintAuthority: "0xbb8c61159153d8a6ffd555584d1ac77fd57feca7", - - tokenPrefix: "dev" - } - }, - - localnet: { - /* 1_darknodes.js */ - - RenProxyAdmin: "0xC822a36df55b8f88E48417A4765C7Fe27170D8eC", - - RenToken: "0x2cd647668494c1b15743ab283a0f980d90a87394", - DarknodeSlasher: "0x65852e7ECC0eC12dC7e4b198D72e0D590029cDa9", - - // Protocol - ProtocolLogicV1: "0xbD276BBAba798339007546392DAEF201EaFA780C", - ProtocolProxy: "0xE773eDEb42c56aD10456595b8e03C26BC6cde468", - - // DNR - DarknodeRegistryStore: "0xB38e11c615e14aE44173170763753733410D7432", - DarknodeRegistryLogicV1: "0xCd5e48F6F48abAFA46266395AD1C1B7b2219d0aE", - DarknodeRegistryProxy: "0x6adCF5Ba6e299Cf18D839795997A3c6844f37175", - - // DNP - DarknodePaymentStore: "0x45378fF097d385a342557D291dE59f44f4250982", - DarknodePayment: "0x6C71C070e99a2585A72Ae3C8199d9326Ad9E898F", - - tokens: { - DAI: "0xc4375b7de8af5a38a93548eb8453a498222c4ff2", - ETH: "0xEeeeeEeeeEeEeeEeEeEeeEEEeeeeEeeeeeeeEEeE" - }, - - /* 2_shifter.js */ - - GatewayRegistry: "0x1832eb340d558a3c05C48247C6dF862Fde863ebB", - BasicAdapter: "0xD98d8EFF683129d040357439AbA49577452ECcaA", - - RenERC20LogicV1: "0x4337DBfAC0348cd81c167CdB382d0c0B43e60187", - GatewayLogicV1: "0xb862cE796ac356E4F26507Fa297D5D07Ee4EC8EB", - - renBTC: "0x74D4d4528E948bCebAE54810F2100B9278cb8dEc", - BTCGateway: "0xA86B7E2C8f45334EE63A379c6C84EAC539d98acA", - - renZEC: "0x1c2B80b7444FC6235DE9ABdf68900E4EDb2b2617", - ZECGateway: "0x36e668b46DF1b4DfFb843FF8dbb6DBf7200AEAC9", - - renBCH: "0xDF75fb289007DEedcd60f34a069D2941D3448E22", - BCHGateway: "0xEA96469Cd32D00b2EA1B00d9796e70b71134eD3f", - - config: { - ...config, - mintAuthority: "0x04084f1cACCB87Dcab9a29a084281294dA96Bf44", - - tokenPrefix: "local" + ...config } }, diff --git a/test/Adapter.ts b/test/Adapter.ts deleted file mode 100644 index 0e79032a..00000000 --- a/test/Adapter.ts +++ /dev/null @@ -1,138 +0,0 @@ -import BN from "bn.js"; -import { ecsign } from "ethereumjs-util"; -import { Account } from "web3-eth-accounts"; -import { keccak256 } from "web3-utils"; - -import { - GatewayLogicV1Instance, - GatewayRegistryInstance, - RenERC20LogicV1Instance -} from "../types/truffle-contracts"; -import { deployProxy, Ox, randomBytes } from "./helper/testUtils"; - -const BasicAdapter = artifacts.require("BasicAdapter"); -const BTCGateway = artifacts.require("BTCGateway"); -const GatewayRegistry = artifacts.require("GatewayRegistry"); -const RenBTC = artifacts.require("RenBTC"); -const RenERC20LogicV1 = artifacts.require("RenERC20LogicV1"); -const GatewayLogicV1 = artifacts.require("GatewayLogicV1"); - -contract.skip( - "Adapter", - ([owner, feeRecipient, user, proxyGovernanceAddress]) => { - let btcGateway: GatewayLogicV1Instance; - let renbtc: RenERC20LogicV1Instance; - let registry: GatewayRegistryInstance; - - // We generate a new account so that we have access to its private key for - // `ecsign`. Web3's sign functions all prefix the message being signed. - let mintAuthority: Account; - let privKey: Buffer; - - const mintFees = new BN(5); - const burnFees = new BN(15); - - before(async () => { - renbtc = await deployProxy( - web3, - RenBTC, - RenERC20LogicV1, - proxyGovernanceAddress, - [ - { type: "uint256", value: await web3.eth.net.getId() }, - { type: "address", value: owner }, - { type: "uint256", value: "500000000000000000" }, - { type: "string", value: "1" }, - { type: "string", value: "renBTC" }, - { type: "uint8", value: 8 } - ], - { from: owner } - ); - mintAuthority = web3.eth.accounts.create(); - privKey = Buffer.from(mintAuthority.privateKey.slice(2), "hex"); - - btcGateway = await deployProxy( - web3, - BTCGateway, - GatewayLogicV1, - proxyGovernanceAddress, - [ - { type: "address", value: renbtc.address }, - { type: "address", value: feeRecipient }, - { type: "address", value: mintAuthority.address }, - { type: "uint16", value: mintFees }, - { type: "uint16", value: burnFees }, - { type: "uint256", value: 10000 } - ], - { from: owner } - ); - - registry = await GatewayRegistry.new(); - await registry.setGateway( - "BTC", - renbtc.address, - btcGateway.address - ); - - await renbtc.transferOwnership(btcGateway.address); - await btcGateway.claimTokenOwnership(); - }); - - const removeFee = (value: number | BN, bips: number | BN) => - new BN(value).sub( - new BN(value).mul(new BN(bips)).div(new BN(10000)) - ); - - it("can mint to an adapter", async () => { - const value = new BN(20000); - const burnValue = removeFee(value, mintFees); - - const basicAdapter = await BasicAdapter.new(registry.address); - - const nHash = randomBytes(32); - const bitcoinAddress = - "0x" + Buffer.from("BITCOIN ADDRESS").toString("hex"); - - const pHash = keccak256( - web3.eth.abi.encodeParameters( - ["string", "address"], - ["BTC", user] - ) - ); - - const hash = await btcGateway.hashForSignature.call( - pHash, - value, - basicAdapter.address, - nHash - ); - const sig = ecsign(Buffer.from(hash.slice(2), "hex"), privKey); - const sigString = Ox( - `${sig.r.toString("hex")}${sig.s.toString( - "hex" - )}${sig.v.toString(16)}` - ); - - const balanceBeforeMint = new BN( - (await renbtc.balanceOfUnderlying.call(user)).toString() - ); - await basicAdapter.mint("BTC", user, value, nHash, sigString); - const balanceAfterMint = new BN( - (await renbtc.balanceOfUnderlying.call(user)).toString() - ); - balanceAfterMint.should.bignumber.equal( - balanceBeforeMint.add(burnValue) - ); - - await renbtc.approve(basicAdapter.address, burnValue, { - from: user - }); - await basicAdapter.burn("BTC", bitcoinAddress, burnValue, { - from: user - }); - ( - await renbtc.balanceOfUnderlying.call(user) - ).should.bignumber.equal(balanceAfterMint.sub(burnValue)); - }); - } -); diff --git a/test/DarknodePayment.ts b/test/DarknodePayment.ts index f1674158..f3d5a692 100644 --- a/test/DarknodePayment.ts +++ b/test/DarknodePayment.ts @@ -27,9 +27,9 @@ const DarknodeRegistryProxy = artifacts.require("DarknodeRegistryProxy"); const DarknodeRegistryLogicV1 = artifacts.require("DarknodeRegistryLogicV1"); const SelfDestructingToken = artifacts.require("SelfDestructingToken"); const DarknodeSlasher = artifacts.require("DarknodeSlasher"); -const DarknodeRegistryForwarder = artifacts.require( - "DarknodeRegistryForwarder" -); +// const DarknodeRegistryForwarder = artifacts.require( +// "DarknodeRegistryForwarder" +// ); const DarknodePaymentMigrator = artifacts.require("DarknodePaymentMigrator"); const { config } = require("../migrations/networks"); @@ -42,7 +42,7 @@ contract("DarknodePayment", (accounts: string[]) => { let dnp: DarknodePaymentInstance; let ren: RenTokenInstance; let slasher: DarknodeSlasherInstance; - let forwarder: DarknodeRegistryForwarderInstance; + // let forwarder: DarknodeRegistryForwarderInstance; const owner = accounts[0]; const darknode1 = accounts[1]; @@ -61,8 +61,8 @@ contract("DarknodePayment", (accounts: string[]) => { slasher = await DarknodeSlasher.deployed(); await dnr.updateSlasher(slasher.address); - forwarder = await DarknodeRegistryForwarder.new(dnr.address); - await dnp.updateDarknodeRegistry(forwarder.address); + // forwarder = await DarknodeRegistryForwarder.new(dnr.address); + // await dnp.updateDarknodeRegistry(forwarder.address); await waitForEpoch(dnr); diff --git a/test/DarknodeRegistry.ts b/test/DarknodeRegistry.ts index 8f918805..41f3f410 100644 --- a/test/DarknodeRegistry.ts +++ b/test/DarknodeRegistry.ts @@ -34,7 +34,7 @@ const { config } = require("../migrations/networks"); const numAccounts = 10; -contract.only("DarknodeRegistry", (accounts: string[]) => { +contract("DarknodeRegistry", (accounts: string[]) => { let ren: RenTokenInstance; let dnrs: DarknodeRegistryStoreInstance; let dnr: DarknodeRegistryLogicV1Instance; @@ -138,7 +138,7 @@ contract.only("DarknodeRegistry", (accounts: string[]) => { ); }); - it.only("can register, deregister and refund Darknodes", async function() { + it("can register, deregister and refund Darknodes", async function() { this.timeout(1000 * 1000); // [ACTION] Register for (let i = 0; i < numAccounts; i++) { @@ -146,14 +146,13 @@ contract.only("DarknodeRegistry", (accounts: string[]) => { await dnr.register(ID(i), PUBK(i), { from: accounts[i] }); } - const nodeCount = 500; + const nodeCount = 10; await ren.transfer(accounts[2], MINIMUM_BOND.mul(new BN(nodeCount))); await ren.approve(dnr.address, MINIMUM_BOND.mul(new BN(nodeCount)), { from: accounts[2] }); for (let i = numAccounts; i < numAccounts + nodeCount; i++) { - console.log("i", i - numAccounts + 1); await dnr.register(ID(i), PUBK(i), { from: accounts[2] }); } @@ -163,27 +162,20 @@ contract.only("DarknodeRegistry", (accounts: string[]) => { const getOperatorDarknodes = await GetOperatorDarknodes.new( dnr.address ); - console.log( - "getOperatorDarknodes", - await getOperatorDarknodes.getOperatorDarknodes.call(accounts[2]) - ); - // try { - // console.log( - // "getOperatorDarknodes", - // await (getOperatorDarknodes.getOperatorDarknodes as any).write( - // accounts[2] - // ) - // ); - // } catch (error) { - // console.error(error); - // } + ( + await getOperatorDarknodes.getOperatorDarknodes.call(accounts[2]) + ).length.should.bignumber.equal(nodeCount + 1); // +1 from the first loop // [ACTION] Deregister for (let i = 0; i < numAccounts; i++) { await dnr.deregister(ID(i), { from: accounts[i] }); } + for (let i = numAccounts; i < numAccounts + nodeCount; i++) { + await dnr.deregister(ID(i), { from: accounts[2] }); + } + // Wait for two epochs await waitForEpoch(dnr); await waitForEpoch(dnr); @@ -192,6 +184,14 @@ contract.only("DarknodeRegistry", (accounts: string[]) => { for (let i = 0; i < numAccounts; i++) { await dnr.refund(ID(i), { from: accounts[i] }); } + + for (let i = numAccounts; i < numAccounts + nodeCount; i++) { + await dnr.refund(ID(i), { from: accounts[2] }); + } + + await ren.transfer(accounts[0], MINIMUM_BOND.mul(new BN(nodeCount)), { + from: accounts[2] + }); }); it("can check darknode statuses", async () => { diff --git a/test/ERC20WithPermit.ts b/test/ERC20WithPermit.ts deleted file mode 100644 index 7bcecd3f..00000000 --- a/test/ERC20WithPermit.ts +++ /dev/null @@ -1,309 +0,0 @@ -import BN from "bn.js"; -import { rawEncode, solidityPack } from "ethereumjs-abi"; -import { - ecrecover, - ecsign, - isValidSignature, - keccak256, - pubToAddress -} from "ethereumjs-util"; -import { toChecksumAddress } from "web3-utils"; - -import { - RenERC20LogicV1Instance, - RenProxyAdminInstance -} from "../types/truffle-contracts"; -import { log } from "./helper/logs"; -import { - deployProxy, - hexToBuffer, - increaseTime, - NULL, - NULL32, - Ox -} from "./helper/testUtils"; - -const RenERC20LogicV1 = artifacts.require("RenERC20LogicV1"); -const RenBTC = artifacts.require("RenBTC"); -const RenProxyAdmin = artifacts.require("RenProxyAdmin"); - -const MAX = new BN(2).pow(new BN(256)).sub(new BN(1)); - -const signPermit = async ( - token: RenERC20LogicV1Instance, - privateKey: Buffer, - from: string, - to: string, - allowed: boolean -) => { - const nonce = await token.nonces.call(from); - const expiry = Math.round(new Date().getTime() / 1000) + 1 /* second */; - - const DOMAIN_SEPARATOR = hexToBuffer(await token.DOMAIN_SEPARATOR.call()); - const PERMIT_TYPEHASH = hexToBuffer(await token.PERMIT_TYPEHASH.call()); - - const digest = keccak256( - solidityPack( - ["string", "bytes32", "bytes32"], - [ - "\x19\x01", - DOMAIN_SEPARATOR, - keccak256( - rawEncode( - [ - "bytes32", - "address", - "address", - "uint256", - "uint256", - "bool" - ], - [PERMIT_TYPEHASH, from, to, nonce, expiry, allowed] - ) - ) - ] - ) - ); - - const { r, s, v } = ecsign(digest, privateKey); - // signature.length.should.equal(2 * (32 + 32 + 1)); - // const [r, s, v] = [Buffer.from(signature.slice(0, 64)), Buffer.from(signature.slice(64, 128)), parseInt(signature.slice(128, 130), 16) % 27 + 27]; - isValidSignature(v, r, s); - toChecksumAddress( - Ox(pubToAddress(ecrecover(digest, v, r, s))) - ).should.equal(from); - - return { r, s, v, nonce, expiry }; -}; - -const submitPermit = async ( - token: RenERC20LogicV1Instance, - privateKey: Buffer, - from: string, - to: string, - allowed: boolean -) => { - const { r, s, v, nonce, expiry } = await signPermit( - token, - privateKey, - from, - to, - allowed - ); - - return token.permit(from, to, nonce, expiry, allowed, v, Ox(r), Ox(s), { - from: to - }); -}; - -contract("ERC20WithPermit", ([owner, secondUser, malicious]) => { - let token: RenERC20LogicV1Instance; - let proxyAdmin: RenProxyAdminInstance; - - const firstUserAcc = web3.eth.accounts.create(); - const firstUser = firstUserAcc.address; - const privateKey = Buffer.from(firstUserAcc.privateKey.slice(2), "hex"); - - before(async () => { - proxyAdmin = await RenProxyAdmin.new(); - token = await deployProxy( - web3, - RenBTC, - RenERC20LogicV1, - proxyAdmin.address, - [ - { - name: "_chainId", - type: "uint256", - value: await web3.eth.net.getId() - }, - { name: "_nextOwner", type: "address", value: owner }, - { - name: "_initialRate", - type: "uint256", - value: "500000000000000000" - }, - { name: "_version", type: "string", value: "1" }, - { name: "_name", type: "string", value: "renBTC" }, - { name: "_symbol", type: "string", value: "renBTC" }, - { name: "_decimals", type: "uint8", value: 8 } - ], - { from: owner } - ); - await token.mint(firstUser, new BN(10).mul(new BN(10).pow(new BN(18)))); - }); - - it("approve with permit", async () => { - const value = new BN(1).mul(new BN(10).pow(new BN(18))); - - const firstBefore = new BN(await token.balanceOf.call(firstUser)); - const secondBefore = new BN(await token.balanceOf.call(secondUser)); - - // Approve and deposit - ((await submitPermit( - token, - privateKey, - firstUser, - secondUser, - true - )) as any).should.emit.logs([ - log("Approval", { - owner: firstUser, - spender: secondUser, - value: MAX - }) - ]); - ( - await token.allowance.call(firstUser, secondUser) - ).should.bignumber.equal(MAX); - - await token.transferFrom(firstUser, secondUser, value, { - from: secondUser - }); - - // Compare balances after depositing - (await token.balanceOf.call(firstUser)).should.bignumber.equal( - firstBefore.sub(new BN(value)) - ); - (await token.balanceOf.call(secondUser)).should.bignumber.equal( - secondBefore.add(new BN(value)) - ); - }); - - it("revoke approval", async () => { - await submitPermit(token, privateKey, firstUser, secondUser, true); - ( - await token.allowance.call(firstUser, secondUser) - ).should.bignumber.equal(MAX); - - ((await submitPermit( - token, - privateKey, - firstUser, - secondUser, - false - )) as any).should.emit.logs([ - log("Approval", { - owner: firstUser, - spender: secondUser, - value: new BN(0) - }) - ]); - - ( - await token.allowance.call(firstUser, secondUser) - ).should.bignumber.equal(0); - }); - - it("can't resubmit signature", async () => { - // Approve and deposit - const { r, s, v, nonce, expiry } = await signPermit( - token, - privateKey, - firstUser, - malicious, - true - ); - await token.permit( - firstUser, - malicious, - nonce, - expiry, - true, - v, - Ox(r), - Ox(s), - { from: malicious } - ); - await submitPermit(token, privateKey, firstUser, malicious, false); - - await token - .permit( - firstUser, - malicious, - nonce, - expiry, - true, - v, - Ox(r), - Ox(s), - { from: malicious } - ) - .should.be.rejectedWith(/ERC20WithRate: invalid nonce/); - - await token - .permit( - firstUser, - malicious, - await token.nonces.call(firstUser), - expiry, - true, - v, - Ox(r), - Ox(s), - { from: malicious } - ) - .should.be.rejectedWith(/ERC20WithRate: invalid signature/); - }); - - it("can't change address", async () => { - // Approve and deposit - const { r, s, v, nonce, expiry } = await signPermit( - token, - privateKey, - firstUser, - secondUser, - true - ); - await token - .permit( - firstUser, - malicious, - nonce, - expiry, - true, - v, - Ox(r), - Ox(s), - { from: malicious } - ) - .should.be.rejectedWith(/ERC20WithRate: invalid signature/); - }); - - it("can't submit expired permit", async () => { - // Approve and deposit - const { r, s, v, nonce, expiry } = await signPermit( - token, - privateKey, - firstUser, - malicious, - true - ); - await increaseTime(expiry + 1); - await token - .permit( - firstUser, - malicious, - nonce, - expiry, - true, - v, - Ox(r), - Ox(s), - { from: malicious } - ) - .should.be.rejectedWith(/ERC20WithRate: permit has expired/); - }); - - it("can't submit permit for 0x0", async () => { - // Approve and deposit - const nonce = new BN(0); - const expiry = Math.round(new Date().getTime() / 1000) + 1 /* second */; - - await token - .permit(NULL, malicious, nonce, expiry, true, 27, NULL32, NULL32, { - from: malicious - }) - .should.be.rejectedWith(/ERC20WithRate: address must not be 0x0/); - }); -}); diff --git a/test/Gateway.ts b/test/Gateway.ts deleted file mode 100644 index f9c28c15..00000000 --- a/test/Gateway.ts +++ /dev/null @@ -1,1163 +0,0 @@ -// tslint:disable: variable-name - -import BigNumber from "bignumber.js"; -import BN from "bn.js"; -import { ecrecover, ecsign, pubToAddress } from "ethereumjs-util"; -import { Account } from "web3-eth-accounts"; -import { keccak256 } from "web3-utils"; - -import { - GatewayLogicV1Instance, - GatewayRegistryInstance, - RenERC20LogicV1Instance -} from "../types/truffle-contracts"; -import { log } from "./helper/logs"; -import { - deployProxy, - ETHEREUM, - NULL, - Ox, - randomAddress, - randomBytes -} from "./helper/testUtils"; - -const ForceSend = artifacts.require("ForceSend"); -const RenToken = artifacts.require("RenToken"); -const Claimer = artifacts.require("Claimer"); -const GatewayRegistry = artifacts.require("GatewayRegistry"); -const BTCGateway = artifacts.require("BTCGateway"); -const RenBTC = artifacts.require("RenBTC"); -const RenERC20LogicV1 = artifacts.require("RenERC20LogicV1"); -const GatewayLogicV1 = artifacts.require("GatewayLogicV1"); - -contract( - "Gateway", - ([owner, feeRecipient, user, malicious, proxyGovernanceAddress]) => { - let btcGateway: GatewayLogicV1Instance; - let renbtc: RenERC20LogicV1Instance; - - // We generate a new account so that we have access to its private key for - // `ecsign`. Web3's sign functions all prefix the message being signed. - let mintAuthority: Account; - let privKey: Buffer; - - const mintFees = new BN(10); - const burnFees = new BN(10); - - describe("ERC20 with rate", () => { - it("rate must be initialized", async () => { - const token = await RenERC20LogicV1.new({ from: owner }); - - await token.exchangeRateCurrent - .call() - .should.be.rejectedWith( - /ERC20WithRate: rate has not been initialized/ - ); - }); - - it("can set rate", async () => { - const rate = "1000000000000000000"; - const token = await deployProxy( - web3, - RenBTC, - RenERC20LogicV1, - proxyGovernanceAddress, - [ - { type: "uint256", value: await web3.eth.net.getId() }, - { type: "address", value: owner }, - { type: "uint256", value: rate }, - { type: "string", value: "1" }, - { type: "string", value: "renBTC" }, - { type: "string", value: "renBTC" }, - { type: "uint8", value: 8 } - ], - { from: owner } - ); - await token - .setExchangeRate(0, { from: owner }) - .should.be.rejectedWith( - /ERC20WithRate: rate must be greater than zero/ - ); - - await token.setExchangeRate(new BN(rate).add(new BN(1)), { - from: owner - }); - - (await token.exchangeRateCurrent.call()).should.bignumber.equal( - new BN(rate).add(new BN(1)) - ); - - await token.setExchangeRate(rate); - - (await token.exchangeRateCurrent.call()).should.bignumber.equal( - rate - ); - }); - }); - - for (const rate of [ - "2000000000000000000", - "1000000000000000000", - "500000000000000000" - ]) { - // for (const rate of ["2000000000000000000", "1000000000000000000", "500000000000000000", "1111111111111111111"]) { - // for (const rate of ["1111111111111111111"]) { - - describe(`Gateway with rate ${new BigNumber(rate) - .div(1e18) - .toFixed()}`, () => { - before(async () => { - renbtc = await deployProxy( - web3, - RenBTC, - RenERC20LogicV1, - proxyGovernanceAddress, - [ - { - type: "uint256", - value: await web3.eth.net.getId() - }, - { type: "address", value: owner }, - { type: "uint256", value: rate }, - { type: "string", value: "1" }, - { type: "string", value: "renBTC" }, - { type: "string", value: "renBTC" }, - { type: "uint8", value: 8 } - ], - { from: owner } - ); - mintAuthority = web3.eth.accounts.create(); - privKey = Buffer.from( - mintAuthority.privateKey.slice(2), - "hex" - ); - - btcGateway = await deployProxy( - web3, - BTCGateway, - GatewayLogicV1, - proxyGovernanceAddress, - [ - { type: "address", value: renbtc.address }, - { type: "address", value: feeRecipient }, - { type: "address", value: mintAuthority.address }, - { type: "uint16", value: mintFees.toString() }, - { type: "uint16", value: burnFees.toString() }, - { type: "uint256", value: 10000 } - ], - { from: owner } - ); - - await renbtc.transferOwnership(btcGateway.address); - await btcGateway.claimTokenOwnership(); - }); - - const getFeeScaled = async ( - token: RenERC20LogicV1Instance, - amountUnderlying: number | BN, - bips: number | BN - ) => { - const amountScaled = new BN( - await token.fromUnderlying.call(amountUnderlying) - ); - const amountFee = amountScaled - .mul(new BN(bips)) - .div(new BN(10000)); - return amountFee; - }; - - const removeMintFee = async ( - token: RenERC20LogicV1Instance, - amountUnderlying: number | BN, - bips: number | BN - ) => { - const amount = new BigNumber( - ( - await token.fromUnderlying.call(amountUnderlying) - ).toString() - ); - const amountFee = amount - .times(new BigNumber(bips.toString())) - .div(new BigNumber(10000)) - .decimalPlaces(0, BigNumber.ROUND_DOWN); - const amountAfterFee = amount - .minus(amountFee) - .decimalPlaces(0, BigNumber.ROUND_DOWN); - const amountAfterFeeUnderlying = await token.toUnderlying.call( - amountAfterFee.toFixed(0, BigNumber.ROUND_DOWN) - ); - const amountAfterFeeRepresentable = await token.fromUnderlying.call( - amountAfterFeeUnderlying - ); - // The following may slightly vary from amountAfterFeeUnderlying. - const amountAfterFeeRepresentableUnderlying = new BigNumber( - ( - await token.toUnderlying.call( - amountAfterFeeRepresentable - ) - ).toString() - ).decimalPlaces(0, BigNumber.ROUND_DOWN); - - const result = new BN( - amountAfterFeeRepresentableUnderlying.toFixed( - 0, - BigNumber.ROUND_DOWN - ) - ); - - return result; - }; - - const removeBurnFee = async ( - token: RenERC20LogicV1Instance, - amountUnderlying: number | BN, - bips: number | BN - ) => { - const amount_scaled = new BigNumber( - ( - await token.fromUnderlying.call(amountUnderlying) - ).toString() - ); - const amountFee_scaled = amount_scaled - .times(new BigNumber(bips.toString())) - .div(new BigNumber(10000)) - .decimalPlaces(0, BigNumber.ROUND_DOWN); - const amountAfterFee_scaled = amount_scaled - .minus(amountFee_scaled) - .decimalPlaces(0, BigNumber.ROUND_DOWN); - const amountAfterFee = await token.toUnderlying.call( - amountAfterFee_scaled.toFixed(0, BigNumber.ROUND_DOWN) - ); - - return new BN(amountAfterFee.toString()); - }; - - const mintTest = async ( - gateway: GatewayLogicV1Instance, - value: number | BN, - n?: string - ): Promise<[string, string, BN]> => { - const nHash = randomBytes(32); - const pHash = randomBytes(32); - - const hash = await gateway.hashForSignature.call( - pHash, - value, - user, - nHash - ); - const sig = ecsign( - Buffer.from(hash.slice(2), "hex"), - privKey - ); - - pubToAddress( - ecrecover( - Buffer.from(hash.slice(2), "hex"), - sig.v, - sig.r, - sig.s - ) - ) - .toString("hex") - .should.equal( - mintAuthority.address.slice(2).toLowerCase() - ); - - const sigString = Ox( - `${sig.r.toString("hex")}${sig.s.toString( - "hex" - )}${sig.v.toString(16)}` - ); - - const hashForSignature = await gateway.hashForSignature.call( - pHash, - value, - user, - nHash - ); - ( - await gateway.verifySignature.call( - hashForSignature, - sigString - ) - ).should.be.true; - - const balanceBefore = new BN( - (await renbtc.balanceOfUnderlying.call(user)).toString() - ); - const _n = await gateway.nextN.call(); - const valueMinted = await removeMintFee( - renbtc, - value, - mintFees - ); - ((await gateway.mint(pHash, value, nHash, sigString, { - from: user - })) as any).should.emit.logs([ - log("LogMint", { - _to: user, - _amount: valueMinted, - _n: n !== undefined ? n : _n - }) - ]); - // (await renbtc.balanceOfUnderlying.call(user)).should.bignumber.equal(balanceBefore.add(valueMinted)); - - ( - await renbtc.balanceOfUnderlying.call(user) - ).should.bignumber.lte( - balanceBefore - .add(await removeMintFee(renbtc, value, mintFees)) - .add(new BN(1)) - ); - ( - await renbtc.balanceOfUnderlying.call(user) - ).should.bignumber.gte( - balanceBefore - .add(await removeMintFee(renbtc, value, mintFees)) - .sub(new BN(1)) - ); - - return [pHash, nHash, valueMinted]; - }; - - const burnTest = async ( - gateway: GatewayLogicV1Instance, - value: number | BN, - btcAddress?: string, - n?: string - ) => { - // Note: we don't use `||` because we want to pass in `""` - btcAddress = - btcAddress !== undefined ? btcAddress : randomBytes(35); - - const balanceBefore = new BN( - (await renbtc.balanceOf.call(user)).toString() - ); - const _n = await gateway.nextN.call(); - - const tokenAddress = await gateway.token.call(); - const token = await RenERC20LogicV1.at(tokenAddress); - - const value_scaled = new BN( - (await token.fromUnderlying.call(value)).toString() - ); - const amountAfterFees = await removeBurnFee( - token, - new BN( - await ( - await token.toUnderlying.call(value_scaled) - ).toString() - ), - burnFees - ); - // const fee = await getFeeScaled(token, value, burnFees); - // const subtractedValueScaled = new BN(await token.fromUnderlying.call(amountAfterFees)).add(fee); - - const x = (await gateway.burn(btcAddress, value_scaled, { - from: user - })) as any; - x.should.emit.logs([ - log("LogBurn", { - _to: btcAddress, - _amount: amountAfterFees, - _n: n !== undefined ? n : _n, - _indexedTo: keccak256(btcAddress) - }) - ]); - - // Should be at most 1 less than the expected value. It should not be less than the expected value. - (await renbtc.balanceOf.call(user)).should.bignumber.lte( - balanceBefore.sub(value_scaled).add(new BN(1)) - ); - (await renbtc.balanceOf.call(user)).should.bignumber.gte( - balanceBefore.sub(value_scaled) - ); - }; - - describe("can mint and burn", () => { - const value = new BN( - Math.floor(Math.random() * 20000) + 40000 - ); - it("can mint tokens with an unused hash, valid signature and pHash", async () => - mintTest(btcGateway, value)); - it("can burn tokens", async () => - burnTest(btcGateway, 24975)); - it("won't mint for the same nHash and pHash twice", async () => { - const [pHash, nHash] = await mintTest( - btcGateway, - value - ); - - const hash = await btcGateway.hashForSignature.call( - pHash, - value.toNumber(), - user, - nHash - ); - const sig = ecsign( - Buffer.from(hash.slice(2), "hex"), - privKey - ); - const sigString = Ox( - `${sig.r.toString("hex")}${sig.s.toString( - "hex" - )}${sig.v.toString(16)}` - ); - - await btcGateway - .mint(pHash, value.toNumber(), nHash, sigString, { - from: user - }) - .should.be.rejectedWith( - /Gateway: nonce hash already spent/ - ); - }); - - it("can mint for the same pHash with a different nHash", async () => { - const [pHash, _] = await mintTest(btcGateway, value); - - const nHash = randomBytes(32); - - const hash = await btcGateway.hashForSignature.call( - pHash, - value.toNumber(), - user, - nHash - ); - const sig = ecsign( - Buffer.from(hash.slice(2), "hex"), - privKey - ); - const sigString = Ox( - `${sig.r.toString("hex")}${sig.s.toString( - "hex" - )}${sig.v.toString(16)}` - ); - - await btcGateway.mint( - pHash, - value.toNumber(), - nHash, - sigString, - { from: user } - ); - - await burnTest( - btcGateway, - await removeMintFee(renbtc, value, mintFees) - ); - }); - - it("won't mint with an invalid signature", async () => { - const nHash1 = randomBytes(32); - const nHash2 = randomBytes(32); - const pHash = randomBytes(32); - - const hash = await btcGateway.hashForSignature.call( - pHash, - value.toNumber(), - user, - nHash1 - ); - const sig = ecsign( - Buffer.from(hash.slice(2), "hex"), - privKey - ); - - const sigString = Ox( - `${sig.r.toString("hex")}${sig.s.toString( - "hex" - )}${sig.v.toString(16)}` - ); - - await btcGateway - .mint(pHash, value.toNumber(), nHash2, sigString, { - from: user - }) - .should.be.rejectedWith( - /Gateway: invalid signature/ - ); - }); - - it("can't burn to empty address", async () => { - await burnTest( - btcGateway, - await removeMintFee(renbtc, value, mintFees), - (new Buffer([]) as any) as string - ).should.be.rejectedWith( - /Gateway: to address is empty/ - ); - }); - - it("can't burn less than minimum burn amount", async () => { - await burnTest(btcGateway, 5000).should.be.rejectedWith( - /Gateway: amount is less than the minimum burn amount/ - ); - }); - - it("won't mint for a signature's complement", async () => { - // If (r,s,v) is a valid ECDSA signature, then so is (r, -s % n, 1-v) - // This means that a second signature for a message can be generated - // without access to the private key. This test checks that the - // Gateway contract won't accept two complementary signatures and - // mint twice. See "Signature Malleability" at - // https://yondon.blog/2019/01/01/how-not-to-use-ecdsa/ - - const nHash = randomBytes(32); - const pHash = randomBytes(32); - - const hash = await btcGateway.hashForSignature.call( - pHash, - value.toNumber(), - user, - nHash - ); - - const sig = ecsign( - Buffer.from(hash.slice(2), "hex"), - privKey - ); - - // Invalid signature - const altSig = { - ...sig, - s: new BN( - "FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFEBAAEDCE6AF48A03BBFD25E8CD0364141", - "hex" - ) - .sub(new BN(sig.s)) - .toArrayLike(Buffer, "be", 32), - v: sig.v === 27 ? 28 : 27 - }; - const altSigString = Ox( - `${altSig.r.toString("hex")}${altSig.s.toString( - "hex" - )}${altSig.v.toString(16)}` - ); - await btcGateway - .mint( - pHash, - value.toNumber(), - nHash, - altSigString, - { from: user } - ) - .should.be.rejectedWith( - /ECDSA: signature.s is in the wrong range/ - ); - - // Valid signature - const sigString = Ox( - `${sig.r.toString("hex")}${sig.s.toString( - "hex" - )}${sig.v.toString(16)}` - ); - await btcGateway.mint( - pHash, - value.toNumber(), - nHash, - sigString, - { from: user } - ); - - // Using the invalid signature after the valid one should throw - // before checking the signature because the nonce hash has already - // been used - await btcGateway - .mint( - pHash, - value.toNumber(), - nHash, - altSigString, - { from: user } - ) - .should.be.rejectedWith( - /Gateway: nonce hash already spent/ - ); - }); - }); - - describe("updating fee recipient and mint authority", () => { - it("can upgrade fee recipient", async () => { - await btcGateway - .updateFeeRecipient(malicious, { from: malicious }) - .should.be.rejectedWith( - /Ownable: caller is not the owner/ - ); - await btcGateway - .updateFeeRecipient(NULL, { from: owner }) - .should.be.rejectedWith( - /Gateway: fee recipient cannot be 0x0/ - ); - await btcGateway.updateFeeRecipient(user, { - from: owner - }); - await btcGateway.updateFeeRecipient(feeRecipient, { - from: owner - }); - }); - - it("can upgrade mint fee", async () => { - const currentFee = await btcGateway.mintFee.call(); - await btcGateway - .updateMintFee(0, { from: malicious }) - .should.be.rejectedWith( - /Ownable: caller is not the owner/ - ); - await btcGateway.updateMintFee(0, { from: owner }); - await btcGateway.updateMintFee(currentFee, { - from: owner - }); - }); - - it("can upgrade burn fee", async () => { - const currentFee = await btcGateway.burnFee.call(); - await btcGateway - .updateBurnFee(0, { from: malicious }) - .should.be.rejectedWith( - /Ownable: caller is not the owner/ - ); - await btcGateway.updateBurnFee(0, { from: owner }); - await btcGateway.updateBurnFee(currentFee, { - from: owner - }); - }); - - it("can upgrade mint authority", async () => { - await btcGateway - .updateMintAuthority(malicious, { from: malicious }) - .should.be.rejectedWith( - /Gateway: caller is not the owner or mint authority/ - ); - // Owner can update mint authority - await btcGateway.updateMintAuthority(user, { - from: owner - }); - // Mint authority can update mint authority - await btcGateway.updateMintAuthority(user, { - from: user - }); - await btcGateway.updateMintAuthority( - mintAuthority.address, - { from: owner } - ); - }); - - it("cannot upgrade mint authority to zero address", async () => { - await btcGateway - .updateMintAuthority(NULL, { from: owner }) - .should.be.rejectedWith( - /Gateway: mintAuthority cannot be set to address zero/ - ); - }); - - it("can upgrade min burn amount", async () => { - await btcGateway - .updateMinimumBurnAmount(malicious, { - from: malicious - }) - .should.be.rejectedWith( - /Ownable: caller is not the owner/ - ); - await btcGateway.updateMinimumBurnAmount(8000, { - from: owner - }); - await btcGateway.updateMinimumBurnAmount(10000, { - from: owner - }); - }); - }); - - describe("upgrading gateway", () => { - let newGateway: GatewayLogicV1Instance; - - it("can upgrade the gateway", async () => { - newGateway = await deployProxy( - web3, - BTCGateway, - GatewayLogicV1, - proxyGovernanceAddress, - [ - { type: "address", value: renbtc.address }, - { type: "address", value: feeRecipient }, - { - type: "address", - value: mintAuthority.address - }, - { type: "uint16", value: mintFees.toString() }, - { type: "uint16", value: burnFees.toString() }, - { type: "uint256", value: 10000 } - ], - { from: owner } - ); - - // Fund and unlock the mintAuthority - not used currently but - // may be needed in the future. - /* await web3.eth.sendTransaction({ to: mintAuthority.address, from: owner, value: web3.utils.toWei("1") }); - * await web3.eth.personal.importRawKey(mintAuthority.privateKey, ""); - * await web3.eth.personal.unlockAccount(mintAuthority.address, "", 6000); - */ - - await btcGateway - .transferTokenOwnership(newGateway.address, { - from: malicious - }) - .should.be.rejectedWith( - /Ownable: caller is not the owner/ - ); - - await btcGateway.transferTokenOwnership( - newGateway.address, - { from: owner } - ); - (await renbtc.owner.call()).should.equal( - newGateway.address - ); - }); - - it("can mint and burn using new gateway", async () => { - const value = new BN( - Math.floor(Math.random() * 200000) + 10000 - ); - await mintTest(newGateway, value); - await burnTest( - newGateway, - await removeMintFee(renbtc, value, mintFees) - ); - }); - - it("can't upgrade to an invalid gateway", async () => { - await newGateway - .transferTokenOwnership(malicious, { from: owner }) - .should.be.rejectedWith(/revert/); // Tries to call ".claim" on non-contract address - - await renbtc - .claimOwnership({ from: malicious }) - .should.be.rejectedWith( - /Claimable: caller is not the pending owner/ - ); - }); - - it("can reset the upgrade", async () => { - // Trying to reset upgrade in btcGateway without owning the token - await btcGateway - .transferTokenOwnership(NULL, { from: owner }) - .should.be.rejectedWith( - /Ownable: caller is not the owner/ - ); - - // Upgrade newGateway to point to btcGateway - await newGateway.transferTokenOwnership( - btcGateway.address, - { from: owner } - ); - - (await renbtc.owner.call()).should.equal( - btcGateway.address - ); - }); - }); - - describe("recovering funds", () => { - it("should be able to withdraw funds that are mistakenly sent to a Gateway", async () => { - let renbtcValue = new BN( - Math.floor(Math.random() * 200000) + 10000 - ); - [, , renbtcValue] = await mintTest( - btcGateway, - renbtcValue - ); - renbtcValue = new BN( - ( - await renbtc.fromUnderlying.call(renbtcValue) - ).toString() - ); - - await renbtc.transfer(btcGateway.address, renbtcValue, { - from: user - }); - - const renAmount = 1000; - const ren = await RenToken.deployed(); - await ren.transfer(btcGateway.address, renAmount); - - // Only the owner can recover tokens - await btcGateway - .recoverTokens(ren.address, { from: malicious }) - .should.be.rejectedWith( - /Ownable: caller is not the owner/ - ); - - // Recover renBTC - const balanceBefore = new BN( - await renbtc.balanceOf.call(owner) - ); - await btcGateway.recoverTokens(renbtc.address, { - from: owner - }); - const balanceAfter = new BN( - await renbtc.balanceOf.call(owner) - ); - balanceAfter - .sub(balanceBefore) - .should.bignumber.equal(renbtcValue); - await renbtc.transfer(user, renbtcValue); - - // Recover REN - const initialRenBalance = new BN( - (await ren.balanceOf.call(owner)).toString() - ); - await btcGateway.recoverTokens(ren.address, { - from: owner - }); - const finalRenBalance = new BN( - (await ren.balanceOf.call(owner)).toString() - ); - finalRenBalance - .sub(initialRenBalance) - .should.bignumber.equal(renAmount); - - // Recover ETH - const forceSend = await ForceSend.new(); - await forceSend.send(btcGateway.address, { - value: "1" - }); - ( - await web3.eth.getBalance(btcGateway.address) - ).should.bignumber.greaterThan(0); - await btcGateway.recoverTokens(NULL, { from: owner }); - ( - await web3.eth.getBalance(btcGateway.address) - ).should.bignumber.equal(0); - - await burnTest( - btcGateway, - new BN( - ( - await renbtc.toUnderlying.call(balanceAfter) - ).toString() - ) - ); - }); - - it("should be able to withdraw funds that are mistakenly sent to a token", async () => { - // let renbtcValue = new BN(200000); - // await mintTest(btcGateway, renbtcValue); - // renbtcValue = await removeFee(renbtcValue, mintFees); - // await renbtc.transfer(renbtc.address, renbtcValue, { from: user }); - - const renAmount = 1000; - const ren = await RenToken.deployed(); - await ren.transfer(renbtc.address, renAmount); - - // Only the owner can recover tokens - await renbtc - .recoverTokens(ren.address, { from: malicious }) - .should.be.rejectedWith( - /Ownable: caller is not the owner/ - ); - - const claimer = await Claimer.new(renbtc.address); - await btcGateway.transferTokenOwnership( - claimer.address, - { from: owner } - ); - await claimer.transferTokenOwnership(owner, { - from: owner - }); - await renbtc.claimOwnership({ from: owner }); - - // Recover REN - const initialRenBalance = new BN( - (await ren.balanceOf.call(owner)).toString() - ); - await renbtc.recoverTokens(ren.address, { - from: owner - }); - const finalRenBalance = new BN( - (await ren.balanceOf.call(owner)).toString() - ); - finalRenBalance - .sub(initialRenBalance) - .should.bignumber.equal(renAmount); - - // Recover renBTC - // const balanceBefore = new BN(await renbtc.balanceOf.call(owner)); - // await renbtc.recoverTokens(renbtc.address, { from: owner }); - // const balanceAfter = new BN(await renbtc.balanceOf.call(owner)); - // balanceAfter.sub(balanceBefore).should.bignumber.equal(renbtcValue); - // await renbtc.transfer(user, renbtcValue); - - // Recover ETH - const forceSend = await ForceSend.new(); - await forceSend.send(btcGateway.address, { - value: "1" - }); - ( - await web3.eth.getBalance(btcGateway.address) - ).should.bignumber.greaterThan(0); - await btcGateway.recoverTokens(NULL, { from: owner }); - ( - await web3.eth.getBalance(btcGateway.address) - ).should.bignumber.equal(0); - - await renbtc.transferOwnership(btcGateway.address); - await btcGateway.claimTokenOwnership(); - - // await burnTest(btcGateway, renbtcValue); - }); - }); - - describe("gateway registry", () => { - let registry: GatewayRegistryInstance; - - before(async () => { - registry = await GatewayRegistry.new(); - }); - - it("symbol validation", async () => { - (await registry.symbolIsValid.call("BTC")).should.be - .true; - (await registry.symbolIsValid.call("ZEC")).should.be - .true; - (await registry.symbolIsValid.call("BCH")).should.be - .true; - - (await registry.symbolIsValid.call("zеc!")).should.be - .false; - - (await registry.symbolIsValid.call("zec")).should.be - .true; - // Cyrillic letter "е". - (await registry.symbolIsValid.call("zеc")).should.be - .false; - }); - - it("can register gateways", async () => { - await registry.setGateway( - "BTC", - renbtc.address, - btcGateway.address - ); - await registry - .setGateway( - "BTC", - renbtc.address, - btcGateway.address - ) - .should.be.rejectedWith( - /GatewayRegistry: gateway already registered/ - ); - await registry - .setGateway("BTC", renbtc.address, NULL) - .should.be.rejectedWith( - /GatewayRegistry: token already registered/ - ); - - await registry - .setGateway("BTC!", NULL, NULL) - .should.be.rejectedWith( - /GatewayRegistry: symbol must be alphanumeric/ - ); - }); - - it("can retrieve gateways", async () => { - { - // Try to register token with an existing symbol - const altRenBTC = await RenERC20LogicV1.new(); - await altRenBTC.initialize( - await web3.eth.net.getId(), - owner, - "500000000000000000", - "1", - "renBTC", - "renBTC", - 8 - ); - await registry - .setGateway("BTC", altRenBTC.address, NULL) - .should.be.rejectedWith( - /GatewayRegistry: symbol already registered/ - ); - } - - ( - await registry.getGatewayByToken.call( - renbtc.address - ) - ).should.equal(btcGateway.address); - - ( - await registry.getGatewayBySymbol.call("BTC") - ).should.equal(btcGateway.address); - - ( - await registry.getTokenBySymbol.call("BTC") - ).should.equal(renbtc.address); - - { - // The first 10 gateways starting from NULL - const gateway = await registry.getGateways.call( - NULL, - 10 - ); - gateway[0].should.equal(btcGateway.address); - gateway[1].should.equal(NULL); - gateway.length.should.equal(10); - - const renTokens = await registry.getRenTokens.call( - NULL, - 10 - ); - renTokens[0].should.equal(renbtc.address); - renTokens[1].should.equal(NULL); - renTokens.length.should.equal(10); - } - - { - // Get all the gateways starting from NULL - const gateway = await registry.getGateways.call( - NULL, - 0 - ); - gateway[0].should.equal(btcGateway.address); - gateway.length.should.equal(1); - - const renTokens = await registry.getRenTokens.call( - NULL, - 0 - ); - renTokens[0].should.equal(renbtc.address); - renTokens.length.should.equal(1); - } - - { - // Starting from first entry - const gateway = await registry.getGateways.call( - btcGateway.address, - 10 - ); - gateway[0].should.equal(btcGateway.address); - gateway[1].should.equal(NULL); - gateway.length.should.equal(10); - - const renTokens = await registry.getRenTokens.call( - renbtc.address, - 10 - ); - renTokens[0].should.equal(renbtc.address); - renTokens[1].should.equal(NULL); - renTokens.length.should.equal(10); - } - - { - // Get all the gateways starting from first entry - const gateways = await registry.getGateways.call( - btcGateway.address, - 0 - ); - gateways[0].should.equal(btcGateway.address); - gateways.length.should.equal(1); - - const renTokens = await registry.getRenTokens.call( - renbtc.address, - 0 - ); - renTokens[0].should.equal(renbtc.address); - renTokens.length.should.equal(1); - } - }); - - it("can update gateway for a token", async () => { - ( - await registry.getGatewayByToken.call( - renbtc.address - ) - ).should.equal(btcGateway.address); - - const newBtcGateway = await deployProxy< - GatewayLogicV1Instance - >( - web3, - BTCGateway, - GatewayLogicV1, - proxyGovernanceAddress, - [ - { type: "address", value: renbtc.address }, - { type: "address", value: feeRecipient }, - { - type: "address", - value: mintAuthority.address - }, - { type: "uint16", value: mintFees.toString() }, - { type: "uint16", value: burnFees.toString() }, - { type: "uint256", value: 10000 } - ], - { from: owner } - ); - - await registry.updateGateway( - renbtc.address, - newBtcGateway.address - ); - - ( - await registry.getGatewayByToken.call( - renbtc.address - ) - ).should.equal(newBtcGateway.address); - }); - - it("can't update gateway for an unregistered token", async () => { - await registry - .updateGateway(ETHEREUM, randomAddress()) - .should.be.rejectedWith( - /GatewayRegistry: token not registered/ - ); - }); - - it("can deregister gateways", async () => { - await registry.removeGateway("BTC"); - - await registry - .removeGateway("BTC") - .should.be.rejectedWith( - /GatewayRegistry: symbol not registered/ - ); - }); - - it("should be able to withdraw funds that are mistakenly sent to the Gateway Registry", async () => { - const ren = await RenToken.deployed(); - await ren.transfer(registry.address, 1000); - - // Only the owner can recover tokens - await registry - .recoverTokens(ren.address, { from: malicious }) - .should.be.rejectedWith( - /Ownable: caller is not the owner/ - ); - - // Can recover unrelated token - const initialRenBalance = new BN( - (await ren.balanceOf.call(owner)).toString() - ); - await registry.recoverTokens(ren.address, { - from: owner - }); - const finalRenBalance = new BN( - (await ren.balanceOf.call(owner)).toString() - ); - finalRenBalance - .sub(initialRenBalance) - .should.bignumber.equal(1000); - }); - - it("can renounce ownership of the registry", async () => { - await registry.renounceOwnership(); - }); - }); - }); - } - } -); diff --git a/test/Protocol.ts b/test/Protocol.ts index 6736e688..2738a38f 100644 --- a/test/Protocol.ts +++ b/test/Protocol.ts @@ -1,83 +1,27 @@ import { - BTCGatewayInstance, - DarknodePaymentInstance, - DarknodePaymentStoreInstance, DarknodeRegistryLogicV1Instance, - DarknodeRegistryStoreInstance, - DarknodeSlasherInstance, - GatewayRegistryInstance, - ProtocolLogicV1Instance, - ProtocolProxyInstance, - RenBTCInstance, - RenProxyAdminInstance, - RenTokenInstance + ProtocolInstance } from "../types/truffle-contracts"; -import { encodeCallData, NULL, waitForEpoch } from "./helper/testUtils"; +import { NULL, waitForEpoch } from "./helper/testUtils"; -const DarknodePayment = artifacts.require("DarknodePayment"); -const DarknodePaymentStore = artifacts.require("DarknodePaymentStore"); -const RenToken = artifacts.require("RenToken"); -const DarknodeRegistryStore = artifacts.require("DarknodeRegistryStore"); const DarknodeRegistryLogicV1 = artifacts.require("DarknodeRegistryLogicV1"); const DarknodeRegistryProxy = artifacts.require("DarknodeRegistryProxy"); -const DarknodeSlasher = artifacts.require("DarknodeSlasher"); -const GatewayRegistry = artifacts.require("GatewayRegistry"); -const RenBTC = artifacts.require("RenBTC"); -const BTCGateway = artifacts.require("BTCGateway"); -const ProtocolProxy = artifacts.require("ProtocolProxy"); -const ProtocolLogicV1 = artifacts.require("ProtocolLogicV1"); -const RenProxyAdmin = artifacts.require("RenProxyAdmin"); +const Protocol = artifacts.require("Protocol"); contract("Protocol", ([owner, otherAccount]: string[]) => { - let dnp: DarknodePaymentInstance; - let dnpStore: DarknodePaymentStoreInstance; - let ren: RenTokenInstance; - let dnrs: DarknodeRegistryStoreInstance; let dnr: DarknodeRegistryLogicV1Instance; - let slasher: DarknodeSlasherInstance; - let gatewayRegistry: GatewayRegistryInstance; - let renbtc: RenBTCInstance; - let btcGateway: BTCGatewayInstance; - let protocol: ProtocolLogicV1Instance; - let protocolProxy: ProtocolProxyInstance; - let renProxyAdmin: RenProxyAdminInstance; + let protocol: ProtocolInstance; before(async () => { - ren = await RenToken.deployed(); - dnrs = await DarknodeRegistryStore.deployed(); const dnrProxy = await DarknodeRegistryProxy.deployed(); dnr = await DarknodeRegistryLogicV1.at(dnrProxy.address); - dnp = await DarknodePayment.deployed(); - dnpStore = await DarknodePaymentStore.deployed(); - slasher = await DarknodeSlasher.deployed(); - gatewayRegistry = await GatewayRegistry.deployed(); - renbtc = await RenBTC.deployed(); - btcGateway = await BTCGateway.deployed(); - protocol = await ProtocolLogicV1.at(ProtocolProxy.address); - protocolProxy = await ProtocolProxy.deployed(); - renProxyAdmin = await RenProxyAdmin.deployed(); + protocol = await Protocol.at(Protocol.address); await waitForEpoch(dnr); }); it("Address getters", async () => { - (await protocol.renToken.call()).should.equal(ren.address); - - (await protocol.darknodeRegistry.call()).should.equal(dnr.address); - - (await protocol.darknodeRegistryStore.call()).should.equal( - dnrs.address - ); - - (await protocol.darknodePayment.call()).should.equal(dnp.address); - - (await protocol.darknodePaymentStore.call()).should.equal( - dnpStore.address - ); - - (await protocol.darknodeSlasher.call()).should.equal(slasher.address); - - (await protocol.gatewayRegistry.call()).should.equal( - gatewayRegistry.address + (await protocol.getContract.call("DarknodeRegistry")).should.equal( + dnr.address ); }); @@ -104,143 +48,28 @@ contract("Protocol", ([owner, otherAccount]: string[]) => { it("Update DarknodeRegistry address", async () => { await protocol - ._updateDarknodeRegistry(NULL, { from: otherAccount }) - .should.be.rejectedWith(/Ownable: caller is not the owner/); - - await protocol._updateDarknodeRegistry(NULL); - - (await protocol.darknodeRegistry.call()).should.equal(NULL); - - await protocol._updateDarknodeRegistry(dnr.address); - - (await protocol.darknodeRegistry.call()).should.equal(dnr.address); - }); - - it("Update GatewayRegistry address", async () => { - await protocol - ._updateGatewayRegistry(NULL, { from: otherAccount }) + .updateContract("DarknodeRegistry", NULL, { from: otherAccount }) .should.be.rejectedWith(/Ownable: caller is not the owner/); - await protocol._updateGatewayRegistry(NULL); + await protocol.updateContract("DarknodeRegistry", NULL); - (await protocol.gatewayRegistry.call()).should.equal(NULL); + (await protocol.getContract.call("DarknodeRegistry")).should.equal( + NULL + ); - await protocol._updateGatewayRegistry(gatewayRegistry.address); + await protocol.updateContract("DarknodeRegistry", dnr.address); - (await protocol.gatewayRegistry.call()).should.equal( - gatewayRegistry.address + (await protocol.getContract.call("DarknodeRegistry")).should.equal( + dnr.address ); }); it("Proxy functions", async () => { // Try to initialize again - await protocolProxy - .initialize( - ProtocolLogicV1.address, - renProxyAdmin.address, - encodeCallData(web3, "initialize", ["address"], [owner]), - { from: owner } - ) - .should.be.rejectedWith(/revert$/); - await protocolProxy - .initialize( - ProtocolLogicV1.address, - renProxyAdmin.address, - (Buffer.from([]) as unknown) as string - ) - .should.be.rejectedWith(/revert$/); - - // Upgrade logic - const newLogic = await ProtocolLogicV1.new(); - - // Wrong address - await renProxyAdmin - .upgrade(protocolProxy.address, newLogic.address, { - from: otherAccount - }) - .should.be.rejectedWith(/revert$/); - - await renProxyAdmin.upgrade(protocolProxy.address, newLogic.address, { - from: owner - }); - (await protocol.renToken.call()).should.equal(ren.address); - }); - - it("Gateway functions", async () => { - ( - await gatewayRegistry.getGatewayByToken.call(renbtc.address) - ).should.equal(btcGateway.address); - - (await protocol.getGatewayByToken.call(renbtc.address)).should.equal( - btcGateway.address - ); - - (await protocol.getGatewayBySymbol.call("BTC")).should.equal( - btcGateway.address - ); - - (await protocol.getTokenBySymbol.call("BTC")).should.equal( - renbtc.address - ); - - { - // The first 10 gateways starting from NULL - const gateways = await protocol.getGateways.call(NULL, 10); - gateways[0].should.equal(btcGateway.address); - gateways[9].should.equal(NULL); - gateways.length.should.equal(10); - - const renTokens = await protocol.getRenTokens.call(NULL, 10); - renTokens[0].should.equal(renbtc.address); - renTokens[9].should.equal(NULL); - renTokens.length.should.equal(10); - } - - { - // Get all the gateways starting from NULL - const gateways = await protocol.getGateways.call(NULL, 0); - gateways[0].should.equal(btcGateway.address); - gateways.length.should.equal(3); - - const renTokens = await protocol.getRenTokens.call(NULL, 0); - renTokens[0].should.equal(renbtc.address); - renTokens.length.should.equal(3); - } - - { - // Starting from first entry - const gateways = await protocol.getGateways.call( - btcGateway.address, - 10 - ); - gateways[0].should.equal(btcGateway.address); - gateways[9].should.equal(NULL); - gateways.length.should.equal(10); - - const renTokens = await protocol.getRenTokens.call( - renbtc.address, - 10 - ); - renTokens[0].should.equal(renbtc.address); - renTokens[9].should.equal(NULL); - renTokens.length.should.equal(10); - } - - { - // Get all the gateways starting from first entry - const gateways = await gatewayRegistry.getGateways.call( - btcGateway.address, - 0 - ); - gateways[0].should.equal(btcGateway.address); - gateways.length.should.equal(3); - - const renTokens = await gatewayRegistry.getRenTokens.call( - renbtc.address, - 0 + await protocol + .__Protocol_init(owner, { from: owner }) + .should.be.rejectedWith( + /Contract instance has already been initialized/ ); - renTokens[0].should.equal(renbtc.address); - renTokens.length.should.equal(3); - } }); }); diff --git a/test/Vesting.ts b/test/Vesting.ts deleted file mode 100644 index 2aec1813..00000000 --- a/test/Vesting.ts +++ /dev/null @@ -1,223 +0,0 @@ -import BigNumber from "bignumber.js"; -import BN from "bn.js"; -import { rawEncode } from "ethereumjs-abi"; -import { ecsign, keccak256 } from "ethereumjs-util"; - -import { - BTCGatewayInstance, - GatewayLogicV1Instance, - GatewayRegistryInstance, - RenERC20LogicV1Instance, - VestingInstance -} from "../types/truffle-contracts"; -import { deployProxy, increaseTime, Ox, randomBytes } from "./helper/testUtils"; - -const BTCGateway = artifacts.require("BTCGateway"); -const GatewayRegistry = artifacts.require("GatewayRegistry"); -const RenBTC = artifacts.require("RenBTC"); -const RenERC20LogicV1 = artifacts.require("RenERC20LogicV1"); -const Vesting = artifacts.require("Vesting"); -const GatewayLogicV1 = artifacts.require("GatewayLogicV1"); - -contract.skip( - "Vesting", - ([owner, feeRecipient, beneficiary, proxyGovernanceAddress]) => { - let btcGateway: GatewayLogicV1Instance; - let renbtc: RenERC20LogicV1Instance; - let vesting: VestingInstance; - let registry: GatewayRegistryInstance; - - const mintAuthority = web3.eth.accounts.create(); - const privKey = Buffer.from(mintAuthority.privateKey.slice(2), "hex"); - const burnFees = new BN(5); - const mintFees = new BN(15); - - const month = (24 * 60 * 60 * 365) / 12; - - beforeEach(async () => { - // Setup the environment - renbtc = await deployProxy( - web3, - RenBTC, - RenERC20LogicV1, - proxyGovernanceAddress, - [ - { type: "uint256", value: await web3.eth.net.getId() }, - { type: "address", value: owner }, - { type: "uint256", value: "500000000000000000" }, - { type: "string", value: "1" }, - { type: "string", value: "renBTC" }, - { type: "string", value: "renBTC" }, - { type: "uint8", value: 8 } - ], - { from: owner } - ); - - btcGateway = await deployProxy( - web3, - BTCGateway, - GatewayLogicV1, - proxyGovernanceAddress, - [ - { type: "address", value: renbtc.address }, - { type: "address", value: feeRecipient }, - { type: "address", value: mintAuthority.address }, - { type: "uint16", value: mintFees.toNumber() }, - { type: "uint16", value: burnFees.toNumber() }, - { type: "uint256", value: 10000 } - ], - { from: owner } - ); - await renbtc.transferOwnership(btcGateway.address); - await btcGateway.claimTokenOwnership(); - - registry = await GatewayRegistry.new(); - await registry.setGateway( - "BTC", - renbtc.address, - btcGateway.address - ); - - // Setup the contracts for testing - vesting = await Vesting.new(registry.address); - }); - - describe("can vest bitcoin", () => { - const amount = new BN(200000); - const amountAfterFee = new BN(199800); - const duration = 6; - - const addVestingSchedule = async () => { - const nHash = randomBytes(32); - - const startTime = 0; - const pHash = keccak256( - rawEncode( - ["address", "uint256", "uint16"], - [beneficiary, startTime, duration] - ) - ).toString("hex"); - - const hashForSignature = await btcGateway.hashForSignature.call( - Ox(pHash), - amount.toNumber(), - vesting.address, - nHash - ); - const sig = ecsign( - Buffer.from(hashForSignature.slice(2), "hex"), - privKey - ); - const sigString = Ox( - `${sig.r.toString("hex")}${sig.s.toString( - "hex" - )}${sig.v.toString(16)}` - ); - - // User should have no schedules prior to adding. - const schedule = await vesting.schedules.call(beneficiary); - (schedule as any).startTime.should.bignumber.equal(new BN(0)); - - await vesting.addVestingSchedule( - // Payload - beneficiary, - startTime, - duration, - // Required - amount, - nHash, - sigString - ); - }; - - it("can add a vesting schedule", async () => { - await addVestingSchedule(); - - const schedule = await vesting.schedules.call(beneficiary); - (schedule as any).startTime.should.bignumber.not.equal( - new BN(0) - ); - (schedule as any).amount.should.bignumber.equal(amountAfterFee); - (schedule as any).duration.should.bignumber.equal( - new BN(duration) - ); - }); - - // Calculate the claimable amount after a given number of elapsed months. - const amountClaimable = (elapsedMonths: number): BN => { - const amountBN = new BigNumber(amountAfterFee.toString()); - const resultBN = amountBN - .times(new BigNumber(elapsedMonths)) - .dividedToIntegerBy(new BigNumber(duration)); - return new BN(resultBN.toString()); - }; - - it("can check claimable amount", async () => { - let claimable = await vesting.calculateClaimable.call( - beneficiary - ); - claimable[0].should.bignumber.equal(new BN(0)); - claimable[1].should.bignumber.equal(new BN(0)); - - await addVestingSchedule(); - - claimable = await vesting.calculateClaimable.call(beneficiary); - claimable[0].should.bignumber.equal(new BN(0)); - claimable[1].should.bignumber.equal(new BN(0)); - - for (let i = 1; i <= duration; i++) { - await increaseTime(month); - - claimable = await vesting.calculateClaimable.call( - beneficiary - ); - claimable[0].should.bignumber.equal(new BN(i)); - claimable[1].should.bignumber.equal(amountClaimable(i)); - } - }); - - it("can claim vested bitcoin", async () => { - await addVestingSchedule(); - - // Claim after 3 months. - await increaseTime(month * 3); - - let claimable = await vesting.calculateClaimable.call( - beneficiary - ); - claimable[0].should.bignumber.equal(new BN(3)); - claimable[1].should.bignumber.equal(amountClaimable(3)); - - await vesting.claim(beneficiary, { from: beneficiary }); - - // Claim remaining at the end of the vesting period. - await increaseTime(month * (duration - 3)); - - claimable = await vesting.calculateClaimable.call(beneficiary); - claimable[0].should.bignumber.equal(new BN(duration - 3)); - claimable[1].should.bignumber.equal( - amountAfterFee.sub(amountClaimable(3)) - ); - - await vesting.claim(beneficiary, { from: beneficiary }); - - claimable = await vesting.calculateClaimable.call(beneficiary); - claimable[0].should.bignumber.equal(new BN(0)); - claimable[1].should.bignumber.equal(new BN(0)); - }); - - it("cannot claim more than the allocated amount of bitcoin", async () => { - await addVestingSchedule(); - - // Claim well after vesting period has ended. - await increaseTime(month * duration * 10); - - const claimable = await vesting.calculateClaimable.call( - beneficiary - ); - claimable[0].should.bignumber.equal(new BN(duration)); - claimable[1].should.bignumber.equal(amountAfterFee); - }); - }); - } -); diff --git a/truffle.js b/truffle.js index a0bcb619..be31c17c 100644 --- a/truffle.js +++ b/truffle.js @@ -71,11 +71,11 @@ module.exports = { }, mocha: { // // Use with `npm run test`, not with `npm run coverage` - reporter: "eth-gas-reporter", - reporterOptions: { - currency: "USD", - gasPrice: 21 - }, + // reporter: "eth-gas-reporter", + // reporterOptions: { + // currency: "USD", + // gasPrice: 21 + // }, enableTimeouts: false, useColors: true, bail: false From 7cacb35df9d39582ec467ddaf389924048cd0121 Mon Sep 17 00:00:00 2001 From: noiach Date: Mon, 23 Aug 2021 13:57:15 +1000 Subject: [PATCH 08/13] chore: updated dependencies --- migrations/1_darknodes.js | 32 +- package.json | 54 +- ...ch => @openzeppelin+contracts+2.5.1.patch} | 0 ...in+contracts-ethereum-package+2.5.0.patch} | 0 test/ClaimlessRewards/ClaimlessRewards.ts | 156 +- test/ClaimlessRewards/steps.ts | 101 +- test/Compare.ts | 25 +- test/DarknodePayment.ts | 286 +- test/DarknodeRegistry.ts | 334 +- test/DarknodeSlasher.ts | 68 +- test/ERC20WithFees.ts | 102 +- test/LinkedList.ts | 42 +- test/Protocol.ts | 16 +- test/String.ts | 10 +- test/Validate.ts | 23 +- test/helper/testUtils.ts | 28 +- tsconfig.json | 10 +- yarn.lock | 4853 +++++++++++++---- 18 files changed, 4520 insertions(+), 1620 deletions(-) rename patches/{@openzeppelin+contracts+2.5.0.patch => @openzeppelin+contracts+2.5.1.patch} (100%) rename patches/{@openzeppelin+contracts-ethereum-package+2.4.0.patch => @openzeppelin+contracts-ethereum-package+2.5.0.patch} (100%) diff --git a/migrations/1_darknodes.js b/migrations/1_darknodes.js index d6aa2fc2..54016bea 100644 --- a/migrations/1_darknodes.js +++ b/migrations/1_darknodes.js @@ -173,7 +173,7 @@ module.exports = async function(deployer, network) { }; // Initialize darknodeRegistryLogic so others can't initialize it. - const darknodeRegistryLogicOwner = await darknodeRegistryLogic.owner.call(); + const darknodeRegistryLogicOwner = await darknodeRegistryLogic.owner(); if (Ox(darknodeRegistryLogicOwner) === Ox(NULL)) { deployer.logger.log("Ensuring DarknodeRegistryLogic is initialized"); await darknodeRegistryLogic.initialize( @@ -231,14 +231,14 @@ module.exports = async function(deployer, network) { actionCount++; } - const storeOwner = await darknodeRegistryStore.owner.call(); + const storeOwner = await darknodeRegistryStore.owner(); if (Ox(storeOwner) !== Ox(darknodeRegistry.address)) { deployer.logger.log( "Linking DarknodeRegistryStore and DarknodeRegistry" ); if (Ox(storeOwner) === Ox(contractOwner)) { // Initiate ownership transfer of DNR store - const pendingOwner = await darknodeRegistryStore.pendingOwner.call(); + const pendingOwner = await darknodeRegistryStore.pendingOwner(); if (Ox(pendingOwner) !== Ox(darknodeRegistry.address)) { deployer.logger.log( "Transferring DarknodeRegistryStore ownership" @@ -269,7 +269,7 @@ module.exports = async function(deployer, network) { actionCount++; } - const protocolDarknodeRegistry = await protocol.getContract.call( + const protocolDarknodeRegistry = await protocol.getContract( "DarknodeRegistry" ); if (Ox(protocolDarknodeRegistry) !== Ox(darknodeRegistry.address)) { @@ -283,7 +283,7 @@ module.exports = async function(deployer, network) { actionCount++; } - const renInDNR = await darknodeRegistry.ren.call(); + const renInDNR = await darknodeRegistry.ren(); if (Ox(renInDNR) !== Ox(RenToken.address)) { console.error( `ERROR! DNR is pointing to wrong REN token - ${Ox( @@ -294,7 +294,7 @@ module.exports = async function(deployer, network) { ); } - const renInDNRS = await darknodeRegistryStore.ren.call(); + const renInDNRS = await darknodeRegistryStore.ren(); if (Ox(renInDNRS) !== Ox(RenToken.address)) { console.error( `ERROR! DNRS is pointing to wrong REN token - ${Ox( @@ -315,7 +315,7 @@ module.exports = async function(deployer, network) { } const slasher = await DarknodeSlasher.at(DarknodeSlasher.address); - const dnrInSlasher = await slasher.darknodeRegistry.call(); + const dnrInSlasher = await slasher.darknodeRegistry(); if (Ox(dnrInSlasher) !== Ox(darknodeRegistry.address)) { deployer.logger.log("Updating DNR in Slasher"); await slasher.updateDarknodeRegistry(darknodeRegistry.address); @@ -324,7 +324,7 @@ module.exports = async function(deployer, network) { // Set the slash percentages const blacklistSlashPercent = new BN( - await slasher.blacklistSlashPercent.call() + await slasher.blacklistSlashPercent() ).toNumber(); if (blacklistSlashPercent !== config.BLACKLIST_SLASH_PERCENT) { deployer.logger.log("Setting blacklist slash percent"); @@ -334,7 +334,7 @@ module.exports = async function(deployer, network) { actionCount++; } const maliciousSlashPercent = new BN( - await slasher.maliciousSlashPercent.call() + await slasher.maliciousSlashPercent() ).toNumber(); if (maliciousSlashPercent !== config.MALICIOUS_SLASH_PERCENT) { deployer.logger.log("Setting malicious slash percent"); @@ -344,7 +344,7 @@ module.exports = async function(deployer, network) { actionCount++; } const secretRevealSlashPercent = new BN( - await slasher.secretRevealSlashPercent.call() + await slasher.secretRevealSlashPercent() ).toNumber(); if (secretRevealSlashPercent !== config.SECRET_REVEAL_SLASH_PERCENT) { deployer.logger.log("Setting secret reveal slash percent"); @@ -354,8 +354,8 @@ module.exports = async function(deployer, network) { actionCount++; } - const currentSlasher = await darknodeRegistry.slasher.call(); - const nextSlasher = await darknodeRegistry.nextSlasher.call(); + const currentSlasher = await darknodeRegistry.slasher(); + const nextSlasher = await darknodeRegistry.nextSlasher(); if ( Ox(currentSlasher) != Ox(DarknodeSlasher.address) && Ox(nextSlasher) != Ox(DarknodeSlasher.address) @@ -416,9 +416,9 @@ module.exports = async function(deployer, network) { const tokenAddress = tokens[tokenName]; const registered = ( - await darknodePayment.registeredTokenIndex.call(tokenAddress) + await darknodePayment.registeredTokenIndex(tokenAddress) ).toString() !== "0"; - const pendingRegistration = await darknodePayment.tokenPendingRegistration.call( + const pendingRegistration = await darknodePayment.tokenPendingRegistration( tokenAddress ); if (!registered && !pendingRegistration) { @@ -430,7 +430,7 @@ module.exports = async function(deployer, network) { } } - const dnrInDarknodePayment = await darknodePayment.darknodeRegistry.call(); + const dnrInDarknodePayment = await darknodePayment.darknodeRegistry(); if (Ox(dnrInDarknodePayment) !== Ox(darknodeRegistry.address)) { deployer.logger.log("DNP is still pointing to Forwarder."); @@ -442,7 +442,7 @@ module.exports = async function(deployer, network) { const darknodePaymentStore = await DarknodePaymentStore.at( DarknodePaymentStore.address ); - const currentOwner = await darknodePaymentStore.owner.call(); + const currentOwner = await darknodePaymentStore.owner(); if (Ox(currentOwner) !== Ox(DarknodePayment.address)) { deployer.logger.log("Linking DarknodePaymentStore and DarknodePayment"); diff --git a/package.json b/package.json index 700b5b2f..95ccf2ad 100644 --- a/package.json +++ b/package.json @@ -4,7 +4,7 @@ "repository": "https://github.io/renproject/darknode-sol", "public": true, "scripts": { - "generate": "truffle compile && typechain --target truffle './build/development/*.json'", + "generate": "truffle compile && typechain --target truffle-v5 './build/development/*.json'", "coverage": "yarn run generate && truffle run coverage", "build": "yarn run generate && truffle build", "test": "yarn run generate && truffle test", @@ -20,47 +20,47 @@ "prepare-release": "npmignore" }, "dependencies": { - "@openzeppelin/contracts": "^2.5.0", - "@openzeppelin/contracts-ethereum-package": "^2.4.0", - "@openzeppelin/upgrades": "^2.7.2" + "@openzeppelin/contracts": "^2.5.1", + "@openzeppelin/contracts-ethereum-package": "^2.5.0", + "@openzeppelin/upgrades": "^2.8.0" }, "devDependencies": { - "@types/chai": "^4.2.11", - "@types/chai-as-promised": "^7.1.2", + "@typechain/truffle-v5": "^5.0.0", + "@typechain/web3-v1": "^3.0.0", + "@types/chai": "^4.2.21", + "@types/chai-as-promised": "^7.1.4", "@types/ethereumjs-abi": "^0.6.3", - "@types/mocha": "^7.0.2", - "@types/node": "^13.9.1", - "@types/seedrandom": "^3.0.0", - "bignumber.js": "^9.0.0", - "bn.js": "^5.1.1", - "chai": "^4.2.0", + "@types/mocha": "^9.0.0", + "@types/node": "^16.7.1", + "@types/seedrandom": "^3.0.1", + "bignumber.js": "^9.0.1", + "bn.js": "^5.2.0", + "chai": "^4.3.4", "chai-as-promised": "^7.1.1", "chai-bignumber": "github:ren-forks/chai-bignumber.git#afa6f46dcbef0b7e622dc27b9b3354fc67afafbc", - "coveralls": "^3.0.9", - "dotenv": "^8.2.0", - "eth-gas-reporter": "^0.2.15", + "coveralls": "^3.1.1", + "dotenv": "^10.0.0", + "eth-gas-reporter": "^0.2.22", "ethereumjs-abi": "^0.6.8", "ganache-cli": "^6.12.2", "hash.js": "^1.1.7", - "immutable": "^4.0.0-rc.12", + "immutable": "^4.0.0-rc.14", "moment": "^2.29.1", "npmignore": "^0.2.0", - "patch-package": "^6.2.1", + "patch-package": "^6.4.7", "seedrandom": "^3.0.5", "solc": "^0.5.17", - "solidity-coverage": "^0.7.2", - "truffle": "^5.2.4", + "solidity-coverage": "^0.7.16", + "truffle": "^5.4.7", "truffle-hdwallet-provider": "^1.0.17", - "truffle-plugin-verify": "0.3.9", + "truffle-plugin-verify": "0.5.11", "truffle-typings": "^1.0.8", - "ts-node": "^8.6.2", - "tslint": "^6.1.0", - "typechain": "^1.0.5", - "typechain-target-truffle": "^1.0.2", - "typechain-target-web3-v1": "^1.0.4", - "typescript": "^3.8.3", + "ts-node": "^10.2.1", + "tslint": "^6.1.3", + "typechain": "^5.1.2", + "typescript": "^4.3.5", "web3": "^2.0.0-alpha", - "web3-core": "^1.3.4", + "web3-core": "^1.5.2", "web3-utils": "^2.0.0-alpha" }, "resolutions": { diff --git a/patches/@openzeppelin+contracts+2.5.0.patch b/patches/@openzeppelin+contracts+2.5.1.patch similarity index 100% rename from patches/@openzeppelin+contracts+2.5.0.patch rename to patches/@openzeppelin+contracts+2.5.1.patch diff --git a/patches/@openzeppelin+contracts-ethereum-package+2.4.0.patch b/patches/@openzeppelin+contracts-ethereum-package+2.5.0.patch similarity index 100% rename from patches/@openzeppelin+contracts-ethereum-package+2.4.0.patch rename to patches/@openzeppelin+contracts-ethereum-package+2.5.0.patch diff --git a/test/ClaimlessRewards/ClaimlessRewards.ts b/test/ClaimlessRewards/ClaimlessRewards.ts index 0b689549..2fa68907 100644 --- a/test/ClaimlessRewards/ClaimlessRewards.ts +++ b/test/ClaimlessRewards/ClaimlessRewards.ts @@ -8,8 +8,8 @@ import { DarknodePaymentStoreInstance, DarknodeRegistryLogicV1Instance, DarknodeSlasherInstance, - ERC20Instance, - RenTokenInstance + PaymentTokenInstance, + RenTokenInstance, } from "../../types/truffle-contracts"; import { DAYS, @@ -23,7 +23,7 @@ import { PUBK, range, toBN, - waitForEpoch + waitForEpoch, } from "../helper/testUtils"; import { STEPS } from "./steps"; @@ -39,8 +39,8 @@ const DarknodeSlasher = artifacts.require("DarknodeSlasher"); contract("ClaimlessRewards", (accounts: string[]) => { let store: DarknodePaymentStoreInstance; - let dai: ERC20Instance; - let erc20Token: ERC20Instance; + let dai: PaymentTokenInstance; + let erc20Token: PaymentTokenInstance; let dnr: DarknodeRegistryLogicV1Instance; let rewards: ClaimlessRewardsInstance; let ren: RenTokenInstance; @@ -68,7 +68,7 @@ contract("ClaimlessRewards", (accounts: string[]) => { await dnr.updateMinimumEpochInterval(60 * 60); await STEPS.waitForEpoch(rewards); - new BN(await dnr.numDarknodes.call()).should.bignumber.equal(new BN(0)); + new BN(await dnr.numDarknodes()).should.bignumber.equal(new BN(0)); }); after(async () => { @@ -79,7 +79,7 @@ contract("ClaimlessRewards", (accounts: string[]) => { afterEach(async () => { // Deregister tokens. - const tokens = await rewards.getRegisteredTokens.call(); + const tokens = await rewards.getRegisteredTokens(); for (const token of tokens) { await rewards.deregisterToken(token); } @@ -87,11 +87,11 @@ contract("ClaimlessRewards", (accounts: string[]) => { await STEPS.waitForEpoch(rewards); // Deregister darknodes. - const darknodes = await dnr.getDarknodes.call(NULL, 0); + const darknodes = await dnr.getDarknodes(NULL, 0); if (darknodes.length) { for (const darknode of darknodes) { await dnr.deregister(darknode, { - from: await dnr.getDarknodeOperator.call(darknode) + from: await dnr.getDarknodeOperator(darknode), }); } @@ -101,7 +101,7 @@ contract("ClaimlessRewards", (accounts: string[]) => { for (const darknode of darknodes) { await dnr.refund(darknode, { - from: await dnr.getDarknodeOperator.call(darknode) + from: await dnr.getDarknodeOperator(darknode), }); } } @@ -116,13 +116,13 @@ contract("ClaimlessRewards", (accounts: string[]) => { it("can register token", async () => { // No tokens should be registered. - (await rewards.getRegisteredTokens.call()).length.should.equal(0); + (await rewards.getRegisteredTokens()).length.should.equal(0); await STEPS.registerToken(rewards, dai.address); await STEPS.registerToken(rewards, erc20Token.address); await STEPS.registerToken(rewards, ETHEREUM); - (await rewards.getRegisteredTokens.call()).length.should.equal(3); + (await rewards.getRegisteredTokens()).length.should.equal(3); }); it("cannot register already registered tokens", async () => { @@ -192,25 +192,23 @@ contract("ClaimlessRewards", (accounts: string[]) => { describe("Token deposits", async () => { it("can deposit ETH via direct payment to DarknodePaymentStore contract", async () => { // deposit using direct deposit to store - const oldETHBalance = new BN( - await store.totalBalance.call(ETHEREUM) - ); + const oldETHBalance = new BN(await store.totalBalance(ETHEREUM)); const oldFreeBalance = new BN( - await store.availableBalance.call(ETHEREUM) + await store.availableBalance(ETHEREUM) ); const amount = new BN(1).mul(new BN(10).pow(new BN(18))); await web3.eth.sendTransaction({ to: store.address, from: owner, - value: amount.toString() + value: amount.toString(), }); // Total balance has increased. - new BN( - await store.totalBalance.call(ETHEREUM) - ).should.bignumber.equal(oldETHBalance.add(amount)); + new BN(await store.totalBalance(ETHEREUM)).should.bignumber.equal( + oldETHBalance.add(amount) + ); // Reward pool has increased. new BN( - await store.availableBalance.call(ETHEREUM) + await store.availableBalance(ETHEREUM) ).should.bignumber.equal(oldFreeBalance.add(amount)); }); }); @@ -231,7 +229,7 @@ contract("ClaimlessRewards", (accounts: string[]) => { // We should have zero claimed balance before ticking ( - await rewards.darknodeBalances.call(ID(1), ETHEREUM) + await rewards.darknodeBalances(ID(1), ETHEREUM) ).should.bignumber.equal(0); // Change cycle after 1 month. @@ -387,20 +385,20 @@ contract("ClaimlessRewards", (accounts: string[]) => { // Check that deregistering doesn't affect withdrawable balance. const node1BalanceBefore = await toBN( - rewards.darknodeBalances.call(ID(1), ETHEREUM) + rewards.darknodeBalances(ID(1), ETHEREUM) ); const node2BalanceBefore = await toBN( - rewards.darknodeBalances.call(ID(2), ETHEREUM) + rewards.darknodeBalances(ID(2), ETHEREUM) ); node1BalanceBefore.should.bignumber.equal(node2BalanceBefore); await deregisterNode(1); const node1BalanceAfter = await toBN( - rewards.darknodeBalances.call(ID(1), ETHEREUM) + rewards.darknodeBalances(ID(1), ETHEREUM) ); const node2BalanceAfter = await toBN( - rewards.darknodeBalances.call(ID(2), ETHEREUM) + rewards.darknodeBalances(ID(2), ETHEREUM) ); node1BalanceAfter.should.bignumber.equal(node2BalanceAfter); @@ -501,7 +499,7 @@ contract("ClaimlessRewards", (accounts: string[]) => { it("epoch can progress even if cycle is too recent", async () => { const timeout = new BN( - (await dnr.minimumEpochInterval.call()).toString() + (await dnr.minimumEpochInterval()).toString() ).toNumber(); await increaseTime(Math.max(timeout, 1 * HOURS)); @@ -588,7 +586,7 @@ contract("ClaimlessRewards", (accounts: string[]) => { await STEPS.waitForEpoch(rewards); }); - it("nodes can withdraw after migrating from DarknodePayment contract", async function() { + it("nodes can withdraw after migrating from DarknodePayment contract", async function () { // Requires Darknode Registry implementation to be upgraded mid-test. this.timeout(100 * 300000); @@ -606,7 +604,7 @@ contract("ClaimlessRewards", (accounts: string[]) => { await dnp.registerToken(newToken.address); ( - await store.darknodeBalances.call(NULL, newToken.address) + await store.darknodeBalances(NULL, newToken.address) ).should.bignumber.equal(0); const darknodeIndices = range(20); @@ -746,7 +744,7 @@ contract("ClaimlessRewards", (accounts: string[]) => { } ( - await store.darknodeBalances.call(NULL, newToken.address) + await store.darknodeBalances(NULL, newToken.address) ).should.bignumber.equal(0); await STEPS.deregisterToken(rewards, ETHEREUM); @@ -763,8 +761,8 @@ contract("ClaimlessRewards", (accounts: string[]) => { await registerNode(1); await STEPS.registerToken(rewards, ETHEREUM); - await rewards.darknodeBalances - .call(ID(1), ETHEREUM) + await rewards + .darknodeBalances(ID(1), ETHEREUM) .should.be.rejectedWith( /ClaimlessRewards: registration pending/ ); @@ -773,7 +771,7 @@ contract("ClaimlessRewards", (accounts: string[]) => { describe("getNextEpochFromTimestamp", () => { it("should return the correct timestamp", async () => { - const timestamps = await rewards.getEpochTimestamps.call(); + const timestamps = await rewards.getEpochTimestamps(); for (let i = 0; i < timestamps.length; i++) { const timestamp = new BigNumber(timestamps[i].toString()); @@ -794,7 +792,7 @@ contract("ClaimlessRewards", (accounts: string[]) => { // Check that getNextEpochFromTimestamp(timestamp - 1) == timestamp ( - await rewards.getNextEpochFromTimestamp.call( + await rewards.getNextEpochFromTimestamp( timestamp.minus(1).toFixed() ) ).should.bignumber.equal( @@ -806,14 +804,12 @@ contract("ClaimlessRewards", (accounts: string[]) => { // Check that getNextEpochFromTimestamp(timestamp) == timestamp ( - await rewards.getNextEpochFromTimestamp.call( - timestamp.toFixed() - ) + await rewards.getNextEpochFromTimestamp(timestamp.toFixed()) ).should.bignumber.equal(timestamp); // Check that getNextEpochFromTimestamp(timestamp + 1) == next timestamp ( - await rewards.getNextEpochFromTimestamp.call( + await rewards.getNextEpochFromTimestamp( timestamp.plus(1).toFixed() ) ).should.bignumber.equal(nextTimestamp || new BigNumber(0)); @@ -821,7 +817,7 @@ contract("ClaimlessRewards", (accounts: string[]) => { if (timestamps.length) { ( - await rewards.getNextEpochFromTimestamp.call(0) + await rewards.getNextEpochFromTimestamp(0) ).should.bignumber.equal(timestamps[0]); } }); @@ -849,17 +845,17 @@ contract("ClaimlessRewards", (accounts: string[]) => { // [ACTION] Initiate ownership transfer to wrong account await rewards.transferStoreOwnership(newDarknodePayment.address, { - from: accounts[0] + from: accounts[0], }); // [CHECK] Owner should be the new rewards contract. - (await store.owner.call()).should.equal(newDarknodePayment.address); + (await store.owner()).should.equal(newDarknodePayment.address); // [RESET] Initiate ownership transfer back to rewards. await newDarknodePayment.transferStoreOwnership(rewards.address); // [CHECK] Owner should now be the rewards. - (await store.owner.call()).should.equal(rewards.address); + (await store.owner()).should.equal(rewards.address); }); }); @@ -870,40 +866,40 @@ contract("ClaimlessRewards", (accounts: string[]) => { it("can forward funds to the store", async () => { // rewards should have zero balance - new BN( - await dai.balanceOf.call(rewards.address) - ).should.bignumber.equal(new BN(0)); + new BN(await dai.balanceOf(rewards.address)).should.bignumber.equal( + new BN(0) + ); const storeDaiBalance = new BN( - await store.availableBalance.call(dai.address) + await store.availableBalance(dai.address) ); const amount = new BN("1000000"); - new BN(await dai.balanceOf.call(owner)).gte(amount).should.be.true; + new BN(await dai.balanceOf(owner)).gte(amount).should.be.true; await dai.transfer(rewards.address, amount); - ( - await store.availableBalance.call(dai.address) - ).should.bignumber.equal(storeDaiBalance); + (await store.availableBalance(dai.address)).should.bignumber.equal( + storeDaiBalance + ); // rewards should have some balance - new BN( - await dai.balanceOf.call(rewards.address) - ).should.bignumber.equal(amount); + new BN(await dai.balanceOf(rewards.address)).should.bignumber.equal( + amount + ); // Forward the funds on await rewards.forward(dai.address); - new BN( - await dai.balanceOf.call(rewards.address) - ).should.bignumber.equal(new BN(0)); - ( - await store.availableBalance.call(dai.address) - ).should.bignumber.equal(storeDaiBalance.add(amount)); + new BN(await dai.balanceOf(rewards.address)).should.bignumber.equal( + new BN(0) + ); + (await store.availableBalance(dai.address)).should.bignumber.equal( + storeDaiBalance.add(amount) + ); }); }); describe("when changing payout proportion", async () => { it("cannot change payout proportion to an invalid percent", async () => { const denominator = await toBN( - rewards.HOURLY_PAYOUT_WITHHELD_DENOMINATOR.call() + rewards.HOURLY_PAYOUT_WITHHELD_DENOMINATOR() ); await rewards .updateHourlyPayoutWithheld(denominator.plus(1).toFixed()) @@ -927,10 +923,10 @@ contract("ClaimlessRewards", (accounts: string[]) => { ); const oldNumerator = await toBN( - rewards.hourlyPayoutWithheldNumerator.call() + rewards.hourlyPayoutWithheldNumerator() ); const denominator = await toBN( - rewards.HOURLY_PAYOUT_WITHHELD_DENOMINATOR.call() + rewards.HOURLY_PAYOUT_WITHHELD_DENOMINATOR() ); await rewards.updateHourlyPayoutWithheld(denominator.toFixed()); @@ -946,9 +942,9 @@ contract("ClaimlessRewards", (accounts: string[]) => { // No rewards should have been withheld, except rounded amounts too // small to be distributed to all darknodes. - const numberOfDarknodes = await toBN(dnr.numDarknodes.call()); + const numberOfDarknodes = await toBN(dnr.numDarknodes()); ( - await store.availableBalance.call(dai.address) + await store.availableBalance(dai.address) ).should.bignumber.lessThan(numberOfDarknodes); await STEPS.withdraw(rewards, ID(1), dai.address, operator1); @@ -982,7 +978,7 @@ contract("ClaimlessRewards", (accounts: string[]) => { }); it("can update DarknodeRegistry", async () => { - const darknodeRegistry = await rewards.darknodeRegistry.call(); + const darknodeRegistry = await rewards.darknodeRegistry(); await rewards .updateDarknodeRegistry(NULL) .should.be.rejectedWith( @@ -1036,7 +1032,7 @@ contract("ClaimlessRewards", (accounts: string[]) => { ( await STEPS.withdrawToCommunityFund(rewards, [ ETHEREUM, - dai.address + dai.address, ]) ).should.bignumber.greaterThan(0); @@ -1044,7 +1040,7 @@ contract("ClaimlessRewards", (accounts: string[]) => { ( await STEPS.withdrawToCommunityFund(rewards, [ ETHEREUM, - dai.address + dai.address, ]) ).should.bignumber.equal(0); @@ -1058,14 +1054,14 @@ contract("ClaimlessRewards", (accounts: string[]) => { }); it("can update community fund", async () => { - const communityFund = await rewards.communityFund.call(); + const communityFund = await rewards.communityFund(); await rewards.updateCommunityFund(accounts[0]); await rewards.updateCommunityFund(communityFund); }); it("cannot change community fund percent to an invalid percent", async () => { const denominator = await toBN( - rewards.HOURLY_PAYOUT_WITHHELD_DENOMINATOR.call() + rewards.HOURLY_PAYOUT_WITHHELD_DENOMINATOR() ); await rewards .updateCommunityFundNumerator(denominator.plus(1).toFixed()) @@ -1084,7 +1080,7 @@ contract("ClaimlessRewards", (accounts: string[]) => { ( await STEPS.withdrawToCommunityFund(rewards, [ ETHEREUM, - dai.address + dai.address, ]) ).should.bignumber.greaterThan(0); @@ -1104,7 +1100,7 @@ contract("ClaimlessRewards", (accounts: string[]) => { // Update community fund numerator to 0. const oldCommunityFundPercent = await toBN( - rewards.communityFundNumerator.call() + rewards.communityFundNumerator() ); await rewards.updateCommunityFundNumerator(0); @@ -1113,7 +1109,7 @@ contract("ClaimlessRewards", (accounts: string[]) => { ( await STEPS.withdrawToCommunityFund(rewards, [ ETHEREUM, - dai.address + dai.address, ]) ).should.bignumber.equal(0); @@ -1121,7 +1117,7 @@ contract("ClaimlessRewards", (accounts: string[]) => { ( await STEPS.withdrawToCommunityFund(rewards, [ ETHEREUM, - dai.address + dai.address, ]) ).should.bignumber.equal(0); @@ -1155,15 +1151,15 @@ contract("ClaimlessRewards", (accounts: string[]) => { }); it("malicious operator can't withdraw community fund", async () => { - const communityFund = await rewards.communityFund.call(); + const communityFund = await rewards.communityFund(); const malicious = accounts[4]; await ren.transfer(malicious, MINIMUM_BOND); await ren.approve(dnr.address, MINIMUM_BOND, { - from: malicious + from: malicious, }); // Register the darknodes under the account address await dnr.register(communityFund, PUBK(-1), { - from: malicious + from: malicious, }); await STEPS.waitForEpoch(rewards); @@ -1192,11 +1188,11 @@ contract("ClaimlessRewards", (accounts: string[]) => { MINIMUM_BOND ); await ren.approve(dnr.address, MINIMUM_BOND, { - from: from || accounts[i % accounts.length] + from: from || accounts[i % accounts.length], }); // Register the darknodes under the account address await dnr.register(ID(i), PUBK(i), { - from: from || accounts[i % accounts.length] + from: from || accounts[i % accounts.length], }); } }; @@ -1205,7 +1201,7 @@ contract("ClaimlessRewards", (accounts: string[]) => { array = Array.isArray(array) ? array : [array]; for (const i of array) { await dnr.deregister(ID(i), { - from: from || accounts[i % accounts.length] + from: from || accounts[i % accounts.length], }); } }; @@ -1214,7 +1210,7 @@ contract("ClaimlessRewards", (accounts: string[]) => { array = Array.isArray(array) ? array : [array]; for (const i of array) { await dnr.refund(ID(i), { - from: from || accounts[i % accounts.length] + from: from || accounts[i % accounts.length], }); } }; diff --git a/test/ClaimlessRewards/steps.ts b/test/ClaimlessRewards/steps.ts index 25438982..650d779e 100644 --- a/test/ClaimlessRewards/steps.ts +++ b/test/ClaimlessRewards/steps.ts @@ -35,15 +35,15 @@ const registerToken = async ( for (const token of tokens) { // Precondition. The token is not registered. - (await rewards.isRegistered.call(token)).should.equal(false); - const allTokens = await rewards.getRegisteredTokens.call(); + (await rewards.isRegistered(token)).should.equal(false); + const allTokens = await rewards.getRegisteredTokens(); // Effect. Register the token. await rewards.registerToken(token); // Postcondition. The token is registered. - (await rewards.isRegistered.call(token)).should.equal(true); - (await rewards.getRegisteredTokens.call()).should.deep.equal([ + (await rewards.isRegistered(token)).should.equal(true); + (await rewards.getRegisteredTokens()).should.deep.equal([ ...allTokens, token ]); @@ -58,15 +58,15 @@ const deregisterToken = async ( for (const token of tokens) { // Precondition. The token is registered. - (await rewards.isRegistered.call(token)).should.equal(true); - const allTokens = await rewards.getRegisteredTokens.call(); + (await rewards.isRegistered(token)).should.equal(true); + const allTokens = await rewards.getRegisteredTokens(); // Effect. Deregister the token. await rewards.deregisterToken(token); // Postcondition. The token is not registered. - (await rewards.isRegistered.call(token)).should.equal(false); - (await rewards.getRegisteredTokens.call()).should.deep.equal( + (await rewards.isRegistered(token)).should.equal(false); + (await rewards.getRegisteredTokens()).should.deep.equal( allTokens.filter(x => x !== token) ); } @@ -77,47 +77,44 @@ const changeCycle = async ( time: number, epoch?: boolean ) => { - const latestTimestamp = await toBN(rewards.latestCycleTimestamp.call()); - const storeAddress = await rewards.store.call(); + const latestTimestamp = await toBN(rewards.latestCycleTimestamp()); + const storeAddress = await rewards.store(); const store = await DarknodePaymentStore.at(storeAddress); - const dnrAddress = await rewards.darknodeRegistry.call(); + const dnrAddress = await rewards.darknodeRegistry(); const dnr = await DarknodeRegistry.at(dnrAddress); - const communityFund = await rewards.communityFund.call(); + const communityFund = await rewards.communityFund(); - const tokens = await rewards.getRegisteredTokens.call(); + const tokens = await rewards.getRegisteredTokens(); let freeBeforeMap = OrderedMap(); let communityFundBalanceBeforeMap = OrderedMap(); let darknodePoolBeforeMap = OrderedMap(); let shareBeforeMap = OrderedMap(); for (const token of tokens) { - const freeBefore = await toBN(store.availableBalance.call(token)); + const freeBefore = await toBN(store.availableBalance(token)); freeBeforeMap = freeBeforeMap.set(token, freeBefore); const communityFundBalanceBefore = await toBN( - rewards.darknodeBalances.call(communityFund, token) + rewards.darknodeBalances(communityFund, token) ); communityFundBalanceBeforeMap = communityFundBalanceBeforeMap.set( token, communityFundBalanceBefore ); const darknodePoolBefore = await toBN( - rewards.darknodeBalances.call(NULL, token) + rewards.darknodeBalances(NULL, token) ); darknodePoolBeforeMap = darknodePoolBeforeMap.set( token, darknodePoolBefore ); const shareBefore = await toBN( - rewards.cycleCumulativeTokenShares.call( - latestTimestamp.toFixed(), - token - ) + rewards.cycleCumulativeTokenShares(latestTimestamp.toFixed(), token) ); shareBeforeMap = shareBeforeMap.set(token, shareBefore); } - const shares = await toBN(dnr.numDarknodes.call()); + const shares = await toBN(dnr.numDarknodes()); const epochTimestampCountBefore = await toBN( - rewards.epochTimestampsLength.call() + rewards.epochTimestampsLength() ); // Effect. Change the cycle. @@ -132,7 +129,7 @@ const changeCycle = async ( // Postcondition. Check that the cycle's timestamp is stored correctly. const block = await web3.eth.getBlock(tx.receipt.blockNumber); const timestamp = new BigNumber(block.timestamp); - const newLatestTimestamp = await toBN(rewards.latestCycleTimestamp.call()); + const newLatestTimestamp = await toBN(rewards.latestCycleTimestamp()); // Check if the epoch happened too recently to a cycle, so no cycle was // called. const expectedTimestamp = epoch @@ -145,7 +142,7 @@ const changeCycle = async ( newLatestTimestamp.should.not.bignumber.equal(latestTimestamp); newLatestTimestamp.should.bignumber.equal(expectedTimestamp); const epochTimestampCountAfter = await toBN( - rewards.epochTimestampsLength.call() + rewards.epochTimestampsLength() ); if (epoch) { epochTimestampCountAfter.should.bignumber.equal( @@ -158,9 +155,9 @@ const changeCycle = async ( .minus(latestTimestamp) .dividedToIntegerBy(1 * HOURS) .toNumber(); - const numerator = await toBN(rewards.hourlyPayoutWithheldNumerator.call()); + const numerator = await toBN(rewards.hourlyPayoutWithheldNumerator()); const denominator = await toBN( - rewards.HOURLY_PAYOUT_WITHHELD_DENOMINATOR.call() + rewards.HOURLY_PAYOUT_WITHHELD_DENOMINATOR() ); let numeratorSeries = numerator; for (let i = 0; i < hours; i++) { @@ -169,9 +166,7 @@ const changeCycle = async ( .div(denominator) .integerValue(BigNumber.ROUND_DOWN); } - const communityFundNumerator = await toBN( - rewards.communityFundNumerator.call() - ); + const communityFundNumerator = await toBN(rewards.communityFundNumerator()); for (const token of tokens) { const freeBefore = freeBeforeMap.get(token); @@ -201,7 +196,7 @@ const changeCycle = async ( // Postcondition. The stored share is the correct amount. const shareAfter = await toBN( - rewards.cycleCumulativeTokenShares.call( + rewards.cycleCumulativeTokenShares( newLatestTimestamp.toFixed(), token ) @@ -211,7 +206,7 @@ const changeCycle = async ( // Postcondition. The darknode pool increased by the correct amount. const darknodePoolAfter = await toBN( - rewards.darknodeBalances.call(NULL, token) + rewards.darknodeBalances(NULL, token) ); darknodePoolAfter .minus(darknodePoolBefore) @@ -219,14 +214,14 @@ const changeCycle = async ( // Postcondition. The community fund increased by the correct amount. const communityFundBalanceAfter = await toBN( - rewards.darknodeBalances.call(communityFund, token) + rewards.darknodeBalances(communityFund, token) ); communityFundBalanceAfter .minus(communityFundBalanceBefore) .should.bignumber.equal(communityFundPaidout); // Postcondition. The free amount decreased by the correct amount. - const freeAfter = await toBN(store.availableBalance.call(token)); + const freeAfter = await toBN(store.availableBalance(token)); freeBefore .minus(freeAfter) .should.bignumber.equal( @@ -252,10 +247,10 @@ const addRewards = async ( token: string, amount: BigNumber | number | string | BN ) => { - const storeAddress = await rewards.store.call(); + const storeAddress = await rewards.store(); const balanceBefore = await getBalance(token, storeAddress); const store = await DarknodePaymentStore.at(storeAddress); - const freeBefore = await toBN(store.availableBalance.call(token)); + const freeBefore = await toBN(store.availableBalance(token)); // Effect. Transfer token to the store contract. await transferToken(token, storeAddress, amount); @@ -263,7 +258,7 @@ const addRewards = async ( // Postcondition. The balance after has increased by the amount added. const balanceAfter = await getBalance(token, storeAddress); balanceAfter.minus(balanceBefore).should.bignumber.equal(amount); - const freeAfter = await toBN(store.availableBalance.call(token)); + const freeAfter = await toBN(store.availableBalance(token)); freeAfter.minus(freeBefore).should.bignumber.equal(amount); console.log( @@ -289,10 +284,10 @@ const withdraw = async ( let balanceBeforeMap = OrderedMap(); // let legacyBalanceMap = OrderedMap>(); // let shareBeforeMap = OrderedMap>(); - const storeAddress = await rewards.store.call(); + const storeAddress = await rewards.store(); const store = await DarknodePaymentStore.at(storeAddress); - const currentCycle = await toBN(rewards.latestCycleTimestamp.call()); - const dnrAddress = await rewards.darknodeRegistry.call(); + const currentCycle = await toBN(rewards.latestCycleTimestamp()); + const dnrAddress = await rewards.darknodeRegistry(); const dnr = await DarknodeRegistry.at(dnrAddress); for (const token of tokens) { const balanceBefore = await getBalance(token, from); @@ -300,7 +295,7 @@ const withdraw = async ( for (const darknode of darknodes) { const withdrawable = await toBN( - rewards.darknodeBalances.call(darknode, token) + rewards.darknodeBalances(darknode, token) ); withdrawableMap = withdrawableMap.set( darknode, @@ -313,32 +308,30 @@ const withdraw = async ( // Precondition. The withdrawable amount should be the correct // amount, including any legacy balance left-over. const nodeRegistered = await toBN( - dnr.darknodeRegisteredAt.call(darknode) + dnr.darknodeRegisteredAt(darknode) ); const nodeDeregistered = await toBN( - dnr.darknodeDeregisteredAt.call(darknode) + dnr.darknodeDeregisteredAt(darknode) ); // Node not registered. if (nodeRegistered.isZero()) { continue; } const legacyBalance = await toBN( - store.darknodeBalances.call(darknode, token) + store.darknodeBalances(darknode, token) ); let lastWithdrawn = await toBN( - rewards.rewardsLastClaimed.call(darknode, token) + rewards.rewardsLastClaimed(darknode, token) ); if (lastWithdrawn.lt(nodeRegistered)) { lastWithdrawn = await toBN( - rewards.getNextEpochFromTimestamp.call( - nodeRegistered.toFixed() - ) + rewards.getNextEpochFromTimestamp(nodeRegistered.toFixed()) ); } let claimableUntil = currentCycle; if (nodeDeregistered.isGreaterThan(0)) { const deregisteredCycle = await toBN( - rewards.getNextEpochFromTimestamp.call( + rewards.getNextEpochFromTimestamp( nodeDeregistered.toFixed() ) ); @@ -347,13 +340,13 @@ const withdraw = async ( } } const shareBefore = await toBN( - rewards.cycleCumulativeTokenShares.call( + rewards.cycleCumulativeTokenShares( lastWithdrawn.toFixed(), token ) ); const shareAfter = await toBN( - rewards.cycleCumulativeTokenShares.call( + rewards.cycleCumulativeTokenShares( claimableUntil.toFixed(), token ) @@ -384,7 +377,7 @@ const withdraw = async ( withdrawableSum = withdrawableSum.plus(withdrawable); const postWithdrawable = await toBN( - rewards.darknodeBalances.call(darknode, token) + rewards.darknodeBalances(darknode, token) ); postWithdrawable.should.bignumber.equal(0); @@ -430,7 +423,7 @@ const withdrawToCommunityFund = async ( // Store the balance for each token, and the withdrawable amount for each // darknode and token. - const communityFund = await rewards.communityFund.call(); + const communityFund = await rewards.communityFund(); let withdrawableMap = OrderedMap(); let balanceBeforeMap = OrderedMap(); for (const token of tokens) { @@ -438,7 +431,7 @@ const withdrawToCommunityFund = async ( balanceBeforeMap = balanceBeforeMap.set(token, balanceBefore); const withdrawable = await toBN( - rewards.darknodeBalances.call(communityFund, token) + rewards.darknodeBalances(communityFund, token) ); withdrawableMap = withdrawableMap.set(token, withdrawable); } @@ -472,7 +465,7 @@ const withdrawToCommunityFund = async ( balanceBefore.plus(withdrawableBefore).minus(gasFee) ); ( - await toBN(rewards.darknodeBalances.call(communityFund, token)) + await toBN(rewards.darknodeBalances(communityFund, token)) ).should.bignumber.equal(0); } diff --git a/test/Compare.ts b/test/Compare.ts index c184c8e1..057a86b9 100644 --- a/test/Compare.ts +++ b/test/Compare.ts @@ -18,10 +18,7 @@ contract("Compare", accounts => { const hexBlockhash1 = web3.utils.asciiToHex(blockhash1); const hexBlockhash2 = web3.utils.asciiToHex(blockhash2); expect( - await CompareInstance.bytesEqual.call( - hexBlockhash1, - hexBlockhash2 - ) + await CompareInstance.bytesEqual(hexBlockhash1, hexBlockhash2) ).to.be.false; }); @@ -29,26 +26,17 @@ contract("Compare", accounts => { const blockhash1 = "XTsJ2rO2yD47tg3JfmakVRXLzeou4SMtZvsMc6lkr6o"; const hexBlockhash1 = web3.utils.asciiToHex(blockhash1); expect( - await CompareInstance.bytesEqual.call( - hexBlockhash1, - hexBlockhash1 - ) + await CompareInstance.bytesEqual(hexBlockhash1, hexBlockhash1) ).to.be.true; const hexBlockhash2 = web3.utils.asciiToHex("abcdefghijk"); expect( - await CompareInstance.bytesEqual.call( - hexBlockhash2, - hexBlockhash2 - ) + await CompareInstance.bytesEqual(hexBlockhash2, hexBlockhash2) ).to.be.true; const hexBlockhash3 = web3.utils.asciiToHex( "hukrasefaakuflehlafsefhuha2h293f8" ); expect( - await CompareInstance.bytesEqual.call( - hexBlockhash3, - hexBlockhash3 - ) + await CompareInstance.bytesEqual(hexBlockhash3, hexBlockhash3) ).to.be.true; }); }); @@ -60,10 +48,7 @@ contract("Compare", accounts => { const hexBlockhash1 = web3.utils.asciiToHex(blockhash1); const hexBlockhash2 = web3.utils.asciiToHex(blockhash2); expect( - await CompareInstance.bytesEqual.call( - hexBlockhash1, - hexBlockhash2 - ) + await CompareInstance.bytesEqual(hexBlockhash1, hexBlockhash2) ).to.be.false; }); }); diff --git a/test/DarknodePayment.ts b/test/DarknodePayment.ts index f3d5a692..44ae8724 100644 --- a/test/DarknodePayment.ts +++ b/test/DarknodePayment.ts @@ -66,7 +66,7 @@ contract("DarknodePayment", (accounts: string[]) => { await waitForEpoch(dnr); - new BN(await dnr.numDarknodes.call()).should.bignumber.equal(new BN(0)); + new BN(await dnr.numDarknodes()).should.bignumber.equal(new BN(0)); }); afterEach(async () => { @@ -78,7 +78,7 @@ contract("DarknodePayment", (accounts: string[]) => { let i = 0; while (true) { try { - await dnp.registeredTokens.call(i); + await dnp.registeredTokens(i); i++; } catch (error) { break; @@ -92,9 +92,9 @@ contract("DarknodePayment", (accounts: string[]) => { let i = 0; while (true) { try { - const token = await dnp.registeredTokens.call(i); + const token = await dnp.registeredTokens(i); console.info( - ` ${token}, (${await dnp.registeredTokenIndex.call( + ` ${token}, (${await dnp.registeredTokenIndex( token )})` ); @@ -110,9 +110,9 @@ contract("DarknodePayment", (accounts: string[]) => { let i = 0; while (true) { try { - const token = await dnp.registeredTokens.call(i); + const token = await dnp.registeredTokens(i); ( - await dnp.registeredTokenIndex.call(token) + await dnp.registeredTokenIndex(token) ).should.bignumber.equal(i + 1); i++; } catch (error) { @@ -134,15 +134,15 @@ contract("DarknodePayment", (accounts: string[]) => { it("can register tokens", async () => { const lengthBefore = await tokenCount(); - (await dnp.tokenPendingRegistration.call(dai.address)).should.equal( + (await dnp.tokenPendingRegistration(dai.address)).should.equal( false ); ( - await dnp.tokenPendingRegistration.call(erc20Token.address) + await dnp.tokenPendingRegistration(erc20Token.address) ).should.equal(false); await dnp.registerToken(dai.address); - (await dnp.tokenPendingRegistration.call(dai.address)).should.equal( + (await dnp.tokenPendingRegistration(dai.address)).should.equal( true ); await dnp @@ -152,39 +152,39 @@ contract("DarknodePayment", (accounts: string[]) => { ); await dnp.registerToken(erc20Token.address); ( - await dnp.tokenPendingRegistration.call(erc20Token.address) + await dnp.tokenPendingRegistration(erc20Token.address) ).should.equal(true); // complete token registration await waitForEpoch(dnr); - (await dnp.registeredTokens.call(lengthBefore)).should.equal( + (await dnp.registeredTokens(lengthBefore)).should.equal( dai.address ); ( - await dnp.registeredTokenIndex.call(dai.address) + await dnp.registeredTokenIndex(dai.address) ).should.bignumber.equal(new BN(lengthBefore + 1)); - (await dnp.tokenPendingRegistration.call(dai.address)).should.equal( + (await dnp.tokenPendingRegistration(dai.address)).should.equal( false ); ( - await dnp.tokenPendingRegistration.call(erc20Token.address) + await dnp.tokenPendingRegistration(erc20Token.address) ).should.equal(false); await dnp.registerToken(ETHEREUM); // complete token registration await waitForEpoch(dnr); - (await dnp.registeredTokens.call(lengthBefore + 2)).should.equal( + (await dnp.registeredTokens(lengthBefore + 2)).should.equal( ETHEREUM ); - ( - await dnp.registeredTokenIndex.call(ETHEREUM) - ).should.bignumber.equal(lengthBefore + 3); + (await dnp.registeredTokenIndex(ETHEREUM)).should.bignumber.equal( + lengthBefore + 3 + ); await checkTokenIndexes(); - (await dnp.tokenPendingRegistration.call(dai.address)).should.equal( + (await dnp.tokenPendingRegistration(dai.address)).should.equal( false ); ( - await dnp.tokenPendingRegistration.call(erc20Token.address) + await dnp.tokenPendingRegistration(erc20Token.address) ).should.equal(false); }); @@ -226,11 +226,11 @@ contract("DarknodePayment", (accounts: string[]) => { ); await dnp.deregisterToken(erc20Token.address); // check token deregistration + (await dnp.registeredTokenIndex(ETHEREUM)).should.bignumber.equal( + 0 + ); ( - await dnp.registeredTokenIndex.call(ETHEREUM) - ).should.bignumber.equal(0); - ( - await dnp.registeredTokenIndex.call(erc20Token.address) + await dnp.registeredTokenIndex(erc20Token.address) ).should.bignumber.equal(0); await checkTokenIndexes(); }); @@ -258,11 +258,11 @@ contract("DarknodePayment", (accounts: string[]) => { await waitForEpoch(dnr); await checkTokenIndexes(); - // const expected = await dnp.registeredTokenIndex.call(one); + // const expected = await dnp.registeredTokenIndex(one); await dnp.deregisterToken(one); await waitForEpoch(dnr); await checkTokenIndexes(); - // (await dnp.registeredTokenIndex.call(two)).should.bignumber.equal(expected); + // (await dnp.registeredTokenIndex(two)).should.bignumber.equal(expected); await dnp.deregisterToken(two); await dnp.deregisterToken(three); await checkTokenIndexes(); @@ -275,11 +275,9 @@ contract("DarknodePayment", (accounts: string[]) => { it("can deposit ETH using deposit()", async () => { // deposit using deposit() function const previousReward = new BN( - await dnp.currentCycleRewardPool.call(ETHEREUM) - ); - const oldETHBalance = new BN( - await store.totalBalance.call(ETHEREUM) + await dnp.currentCycleRewardPool(ETHEREUM) ); + const oldETHBalance = new BN(await store.totalBalance(ETHEREUM)); const amount = new BN("1000000000"); // make sure we have enough balance const ownerBalance = new BN(await web3.eth.getBalance(owner)); @@ -288,12 +286,12 @@ contract("DarknodePayment", (accounts: string[]) => { value: amount.toString(), from: accounts[0] }); - new BN( - await store.totalBalance.call(ETHEREUM) - ).should.bignumber.equal(oldETHBalance.add(amount)); + new BN(await store.totalBalance(ETHEREUM)).should.bignumber.equal( + oldETHBalance.add(amount) + ); // We should have increased the reward pool new BN( - await dnp.currentCycleRewardPool.call(ETHEREUM) + await dnp.currentCycleRewardPool(ETHEREUM) ).should.bignumber.equal( await asRewardPoolBalance(previousReward.add(amount)) ); @@ -301,9 +299,7 @@ contract("DarknodePayment", (accounts: string[]) => { it("can deposit ETH via direct payment to DarknodePayment contract", async () => { // deposit using direct deposit to dnp - const oldETHBalance = new BN( - await store.totalBalance.call(ETHEREUM) - ); + const oldETHBalance = new BN(await store.totalBalance(ETHEREUM)); const amount = new BN("1000000000"); // make sure we have enough balance const ownerBalance = new BN(await web3.eth.getBalance(owner)); @@ -313,12 +309,12 @@ contract("DarknodePayment", (accounts: string[]) => { from: owner, value: amount.toString() }); - new BN( - await store.totalBalance.call(ETHEREUM) - ).should.bignumber.equal(oldETHBalance.add(amount)); + new BN(await store.totalBalance(ETHEREUM)).should.bignumber.equal( + oldETHBalance.add(amount) + ); // We should have increased the reward pool new BN( - await dnp.currentCycleRewardPool.call(ETHEREUM) + await dnp.currentCycleRewardPool(ETHEREUM) ).should.bignumber.equal( await asRewardPoolBalance(oldETHBalance.add(amount)) ); @@ -326,21 +322,19 @@ contract("DarknodePayment", (accounts: string[]) => { it("can deposit ETH via direct payment to DarknodePaymentStore contract", async () => { // deposit using direct deposit to store - const oldETHBalance = new BN( - await store.totalBalance.call(ETHEREUM) - ); + const oldETHBalance = new BN(await store.totalBalance(ETHEREUM)); const amount = new BN("1000000000"); await web3.eth.sendTransaction({ to: store.address, from: owner, value: amount.toString() }); - new BN( - await store.totalBalance.call(ETHEREUM) - ).should.bignumber.equal(oldETHBalance.add(amount)); + new BN(await store.totalBalance(ETHEREUM)).should.bignumber.equal( + oldETHBalance.add(amount) + ); // We should have increased the reward pool new BN( - await dnp.currentCycleRewardPool.call(ETHEREUM) + await dnp.currentCycleRewardPool(ETHEREUM) ).should.bignumber.equal( await asRewardPoolBalance(oldETHBalance.add(amount)) ); @@ -356,7 +350,7 @@ contract("DarknodePayment", (accounts: string[]) => { }); it("cannot deposit ERC20 that has not been registered", async () => { - const before = new BN(await dai.balanceOf.call(accounts[0])); + const before = new BN(await dai.balanceOf(accounts[0])); // Deregister dai and try to deposit await dnp.deregisterToken(dai.address); @@ -390,16 +384,16 @@ contract("DarknodePayment", (accounts: string[]) => { await waitForEpoch(dnr); await waitForEpoch(dnr); - const balanceBefore = await dai.balanceOf.call(owner); + const balanceBefore = await dai.balanceOf(owner); await dnp.withdraw(darknode1, dai.address); - const balanceAfter = await dai.balanceOf.call(owner); + const balanceAfter = await dai.balanceOf(owner); balanceAfter.should.be.bignumber.equal(balanceBefore); }); it("can be paid DAI from a payee", async () => { // darknode1 is whitelisted and can participate in rewards const previousBalance = new BN( - await store.totalBalance.call(dai.address) + await store.totalBalance(dai.address) ); previousBalance.should.bignumber.equal(new BN(0)); // sanity check that the reward pool is also zero @@ -418,7 +412,7 @@ contract("DarknodePayment", (accounts: string[]) => { // We should have zero claimed balance before ticking new BN( - await dnp.darknodeBalances.call(darknode1, dai.address) + await dnp.darknodeBalances(darknode1, dai.address) ).should.bignumber.equal(new BN(0)); // We don't need to claim since we weren't allocated rewards last cycle @@ -429,14 +423,14 @@ contract("DarknodePayment", (accounts: string[]) => { const lastCycleRewards = await asRewardPoolBalance(amount); // We should be the only one who participated last cycle new BN( - await dnr.numDarknodesPreviousEpoch.call() + await dnr.numDarknodesPreviousEpoch() ).should.bignumber.equal(1); // We should be allocated all the rewards new BN( - await dnp.unclaimedRewards.call(dai.address) + await dnp.unclaimedRewards(dai.address) ).should.bignumber.equal(lastCycleRewards); new BN( - await dnp.previousCycleRewardShare.call(dai.address) + await dnp.previousCycleRewardShare(dai.address) ).should.bignumber.equal(lastCycleRewards); // Claim the rewards for last cycle @@ -445,7 +439,7 @@ contract("DarknodePayment", (accounts: string[]) => { const pool = await fetchRewardPool(dai.address); const entireDAIPool = new BN( - await dnp.unclaimedRewards.call(dai.address) + await dnp.unclaimedRewards(dai.address) ); entireDAIPool.should.bignumber.equal( await asRewardPoolBalance(lastCycleRewards) @@ -454,13 +448,13 @@ contract("DarknodePayment", (accounts: string[]) => { await asRewardPoolBalance(entireDAIPool) ); const darknode1Balance = new BN( - await dnp.darknodeBalances.call(darknode1, dai.address) + await dnp.darknodeBalances(darknode1, dai.address) ); darknode1Balance.should.bignumber.equal(lastCycleRewards); // store.darknodeBalances should return the same as dnp.darknodeBalances ( - await store.darknodeBalances.call(darknode1, dai.address) + await store.darknodeBalances(darknode1, dai.address) ).should.bignumber.equal(darknode1Balance); }); @@ -470,9 +464,7 @@ contract("DarknodePayment", (accounts: string[]) => { await waitForEpoch(dnr); // ETH is now a registered token, claiming should now allocate balances - const oldETHBalance = new BN( - await store.totalBalance.call(ETHEREUM) - ); + const oldETHBalance = new BN(await store.totalBalance(ETHEREUM)); const amount = new BN("1000000000"); await dnp .deposit(amount, ETHEREUM) @@ -483,12 +475,12 @@ contract("DarknodePayment", (accounts: string[]) => { value: amount.toString(), from: accounts[0] }); - new BN( - await store.totalBalance.call(ETHEREUM) - ).should.bignumber.equal(oldETHBalance.add(amount)); + new BN(await store.totalBalance(ETHEREUM)).should.bignumber.equal( + oldETHBalance.add(amount) + ); // We should have increased the reward pool const newReward = new BN( - await dnp.currentCycleRewardPool.call(ETHEREUM) + await dnp.currentCycleRewardPool(ETHEREUM) ); newReward.should.bignumber.equal( await asRewardPoolBalance(oldETHBalance.add(amount)) @@ -496,7 +488,7 @@ contract("DarknodePayment", (accounts: string[]) => { // We should have zero claimed balance before ticking new BN( - await dnp.darknodeBalances.call(darknode1, ETHEREUM) + await dnp.darknodeBalances(darknode1, ETHEREUM) ).should.bignumber.equal(new BN(0)); // We don't need to claim since we weren't allocated rewards last cycle @@ -506,18 +498,18 @@ contract("DarknodePayment", (accounts: string[]) => { // We should be the only one who participated last cycle new BN( - await dnr.numDarknodesPreviousEpoch.call() + await dnr.numDarknodesPreviousEpoch() ).should.bignumber.equal(1); // We should be allocated all the rewards - new BN( - await dnp.unclaimedRewards.call(ETHEREUM) - ).should.bignumber.equal(newReward); + new BN(await dnp.unclaimedRewards(ETHEREUM)).should.bignumber.equal( + newReward + ); const rewardShare = new BN( - await dnp.previousCycleRewardShare.call(ETHEREUM) + await dnp.previousCycleRewardShare(ETHEREUM) ); rewardShare.should.bignumber.equal(newReward); const lastCycleReward = new BN( - await dnp.currentCycleRewardPool.call(ETHEREUM) + await dnp.currentCycleRewardPool(ETHEREUM) ); // Claim the rewards for last cycle @@ -526,10 +518,10 @@ contract("DarknodePayment", (accounts: string[]) => { const newPool = await asRewardPoolBalance(lastCycleReward); // There should be nothing left in the reward pool new BN( - await dnp.currentCycleRewardPool.call(ETHEREUM) + await dnp.currentCycleRewardPool(ETHEREUM) ).should.bignumber.equal(newPool); const earnedRewards = new BN( - await dnp.darknodeBalances.call(darknode1, ETHEREUM) + await dnp.darknodeBalances(darknode1, ETHEREUM) ); earnedRewards.should.bignumber.equal(rewardShare); @@ -542,29 +534,29 @@ contract("DarknodePayment", (accounts: string[]) => { // We should have nothing left to withdraw const postWithdrawRewards = new BN( - await dnp.darknodeBalances.call(darknode1, ETHEREUM) + await dnp.darknodeBalances(darknode1, ETHEREUM) ); postWithdrawRewards.should.bignumber.equal(new BN(0)); // Deregister ETH await dnp.deregisterToken(ETHEREUM); await waitForEpoch(dnr); - ( - await dnp.registeredTokenIndex.call(ETHEREUM) - ).should.bignumber.equal(0); + (await dnp.registeredTokenIndex(ETHEREUM)).should.bignumber.equal( + 0 + ); const darknodePaymentMigrator = await DarknodePaymentMigrator.new( dnp.address, [ETHEREUM] ); - (await store.owner.call()).should.equal(dnp.address); + (await store.owner()).should.equal(dnp.address); await dnp.transferStoreOwnership(darknodePaymentMigrator.address); }); it("can pay out DAI when darknodes withdraw", async () => { const darknode1Balance = new BN( - await dnp.darknodeBalances.call(darknode1, dai.address) + await dnp.darknodeBalances(darknode1, dai.address) ); darknode1Balance.gt(new BN(0)).should.be.true; await withdraw(darknode1); @@ -592,7 +584,7 @@ contract("DarknodePayment", (accounts: string[]) => { // We should only have one darknode new BN( - await dnr.numDarknodesPreviousEpoch.call() + await dnr.numDarknodesPreviousEpoch() ).should.bignumber.equal(1); // Register the darknodes for (let i = startDarknode; i < startDarknode + numDarknodes; i++) { @@ -601,13 +593,13 @@ contract("DarknodePayment", (accounts: string[]) => { await waitForEpoch(dnr); // We should still only have one darknode new BN( - await dnr.numDarknodesPreviousEpoch.call() + await dnr.numDarknodesPreviousEpoch() ).should.bignumber.equal(1); // The darknodes should have zero balance for (let i = startDarknode; i < startDarknode + numDarknodes; i++) { const bal = new BN( - await dnp.darknodeBalances.call(accounts[i], dai.address) + await dnp.darknodeBalances(accounts[i], dai.address) ); bal.should.bignumber.equal(new BN(0)); // since darknode has not been around for a full epoch @@ -620,13 +612,13 @@ contract("DarknodePayment", (accounts: string[]) => { await depositDai(rewards); const rewardPool = await asRewardPoolBalance( - await store.availableBalance.call(dai.address) + await store.availableBalance(dai.address) ); await waitForEpoch(dnr); const newRegisteredDarknodes = new BN( - await dnr.numDarknodesPreviousEpoch.call() + await dnr.numDarknodesPreviousEpoch() ); // We should finally have increased the number of darknodes newRegisteredDarknodes.should.bignumber.equal(1 + numDarknodes); @@ -634,7 +626,7 @@ contract("DarknodePayment", (accounts: string[]) => { await multiTick(startDarknode, numDarknodes); for (let i = startDarknode; i < startDarknode + numDarknodes; i++) { - const darknodeBalance = await dnp.darknodeBalances.call( + const darknodeBalance = await dnp.darknodeBalances( accounts[i], dai.address ); @@ -688,7 +680,7 @@ contract("DarknodePayment", (accounts: string[]) => { it("cannot withdraw more than once in a cycle", async () => { const numDarknodes = 4; new BN( - await dnr.numDarknodesPreviousEpoch.call() + await dnr.numDarknodesPreviousEpoch() ).should.bignumber.equal(numDarknodes); const rewards = new BN("300000000000000000"); @@ -701,14 +693,14 @@ contract("DarknodePayment", (accounts: string[]) => { await multiTick(1, numDarknodes); // First withdraw should pass - const balanceBefore = await dai.balanceOf.call(accounts[1]); + const balanceBefore = await dai.balanceOf(accounts[1]); await withdraw(darknode1); - const balanceAfter = await dai.balanceOf.call(accounts[1]); + const balanceAfter = await dai.balanceOf(accounts[1]); balanceAfter.should.be.bignumber.greaterThan(balanceBefore); // Rest should fail await dnp.withdraw(darknode1, dai.address); - const balanceAfterSecond = await dai.balanceOf.call(accounts[1]); + const balanceAfterSecond = await dai.balanceOf(accounts[1]); balanceAfterSecond.should.be.bignumber.eq(balanceAfter); }); @@ -734,37 +726,35 @@ contract("DarknodePayment", (accounts: string[]) => { await waitForEpoch(dnr); // Add rewards into the next cycle's pool const previousBalance = new BN( - await dnp.darknodeBalances.call(darknode3, dai.address) + await dnp.darknodeBalances(darknode3, dai.address) ); const rewards = new BN("300000000000000000"); await depositDai(rewards); // Change the epoch await waitForEpoch(dnr); const rewardPool = await asRewardPoolBalance( - await store.availableBalance.call(dai.address) + await store.availableBalance(dai.address) ); // Claim the rewards for the pool await tick(darknode3); - const numDarknodes = new BN( - await dnr.numDarknodesPreviousEpoch.call() - ); + const numDarknodes = new BN(await dnr.numDarknodesPreviousEpoch()); const rewardSplit = rewardPool.div(numDarknodes); // Claim rewards for past cycle await slasher.blacklist(darknode3); const newBalances = new BN( - await dnp.darknodeBalances.call(darknode3, dai.address) + await dnp.darknodeBalances(darknode3, dai.address) ); newBalances.should.bignumber.equal( previousBalance.add(rewardSplit) ); - const oldDaiBal = new BN(await dai.balanceOf.call(darknode3)); + const oldDaiBal = new BN(await dai.balanceOf(darknode3)); await withdraw(darknode3); - const newDaiBal = new BN(await dai.balanceOf.call(darknode3)); + const newDaiBal = new BN(await dai.balanceOf(darknode3)); newDaiBal.should.bignumber.equal(oldDaiBal.add(newBalances)); }); }); @@ -795,13 +785,13 @@ contract("DarknodePayment", (accounts: string[]) => { }); // [CHECK] Owner should still be dnp - (await store.owner.call()).should.equal(newDarknodePayment.address); + (await store.owner()).should.equal(newDarknodePayment.address); // [RESET] Initiate ownership transfer back to dnp await newDarknodePayment.transferStoreOwnership(dnp.address); // [CHECK] Owner should now be the dnp - (await store.owner.call()).should.equal(dnp.address); + (await store.owner()).should.equal(dnp.address); }); }); @@ -815,7 +805,7 @@ contract("DarknodePayment", (accounts: string[]) => { await claimer.transferStoreOwnership(owner); await store.claimOwnership({ from: owner }); // [CHECK] Owner should now be main account - (await store.owner.call()).should.equal(owner); + (await store.owner()).should.equal(owner); }); it("cannot increment balances by an invalid amounts", async () => { @@ -823,7 +813,7 @@ contract("DarknodePayment", (accounts: string[]) => { .incrementDarknodeBalance(darknode1, dai.address, 0) .should.be.rejectedWith(/DarknodePaymentStore: invalid amount/); const invalidAmount = new BN( - await store.availableBalance.call(dai.address) + await store.availableBalance(dai.address) ).add(new BN(1)); await store .incrementDarknodeBalance(darknode1, dai.address, invalidAmount) @@ -834,7 +824,7 @@ contract("DarknodePayment", (accounts: string[]) => { it("cannot transfer more than is in the balance", async () => { const invalidAmount = new BN( - await dnp.darknodeBalances.call(darknode1, dai.address) + await dnp.darknodeBalances(darknode1, dai.address) ).add(new BN(1)); await store .transfer(darknode1, dai.address, invalidAmount, darknode1) @@ -876,7 +866,7 @@ contract("DarknodePayment", (accounts: string[]) => { // [RESET] Claim ownership await dnp.claimStoreOwnership(); // [CHECK] Owner should now be the dnp - (await store.owner.call()).should.equal(dnp.address); + (await store.owner()).should.equal(dnp.address); }); }); @@ -914,33 +904,33 @@ contract("DarknodePayment", (accounts: string[]) => { it("can forward funds to the store", async () => { // DNP should have zero balance - new BN( - await dai.balanceOf.call(dnp.address) - ).should.bignumber.equal(new BN(0)); + new BN(await dai.balanceOf(dnp.address)).should.bignumber.equal( + new BN(0) + ); const storeDaiBalance = new BN( - await store.availableBalance.call(dai.address) + await store.availableBalance(dai.address) ); const amount = new BN("1000000"); - new BN(await dai.balanceOf.call(owner)).gte(amount).should.be.true; + new BN(await dai.balanceOf(owner)).gte(amount).should.be.true; await dai.transfer(dnp.address, amount); - ( - await store.availableBalance.call(dai.address) - ).should.bignumber.equal(storeDaiBalance); + (await store.availableBalance(dai.address)).should.bignumber.equal( + storeDaiBalance + ); // DNP should have some balance - new BN( - await dai.balanceOf.call(dnp.address) - ).should.bignumber.equal(amount); + new BN(await dai.balanceOf(dnp.address)).should.bignumber.equal( + amount + ); // Forward the funds on await dnp.forward(dai.address); - new BN( - await dai.balanceOf.call(dnp.address) - ).should.bignumber.equal(new BN(0)); - ( - await store.availableBalance.call(dai.address) - ).should.bignumber.equal(storeDaiBalance.add(amount)); + new BN(await dai.balanceOf(dnp.address)).should.bignumber.equal( + new BN(0) + ); + (await store.availableBalance(dai.address)).should.bignumber.equal( + storeDaiBalance.add(amount) + ); }); }); @@ -978,11 +968,10 @@ contract("DarknodePayment", (accounts: string[]) => { }); it("should not payout anything if payout percent is zero", async () => { - new BN(await dnp.currentCycleRewardPool.call(dai.address)).gte( - new BN(0) - ).should.be.true; + new BN(await dnp.currentCycleRewardPool(dai.address)).gte(new BN(0)) + .should.be.true; const oldBal = new BN( - await dnp.darknodeBalances.call(darknode1, dai.address) + await dnp.darknodeBalances(darknode1, dai.address) ); await updatePayoutPercent(new BN(0)); // current epoch payment amount is zero but previous is not @@ -991,17 +980,16 @@ contract("DarknodePayment", (accounts: string[]) => { // claiming the rewards for last epoch should be zero await tick(darknode1); const newBal = new BN( - await dnp.darknodeBalances.call(darknode1, dai.address) + await dnp.darknodeBalances(darknode1, dai.address) ); newBal.should.bignumber.equal(oldBal); }); it("should payout the correct amount", async () => { - new BN(await dnp.currentCycleRewardPool.call(dai.address)).gte( - new BN(0) - ).should.be.true; + new BN(await dnp.currentCycleRewardPool(dai.address)).gte(new BN(0)) + .should.be.true; const oldBal = new BN( - await dnp.darknodeBalances.call(darknode1, dai.address) + await dnp.darknodeBalances(darknode1, dai.address) ); const percent = new BN(20); await updatePayoutPercent(percent); @@ -1009,17 +997,15 @@ contract("DarknodePayment", (accounts: string[]) => { await waitForEpoch(dnr); // now the current and previous payment amount should be twenty // claiming the rewards for last epoch should be twenty percent - const rewardPool = new BN( - await store.availableBalance.call(dai.address) - ) + const rewardPool = new BN(await store.availableBalance(dai.address)) .div(new BN(100)) .mul(percent); const rewardShare = rewardPool.div( - new BN(await dnr.numDarknodes.call()) + new BN(await dnr.numDarknodes()) ); await tick(darknode1); const newBal = new BN( - await dnp.darknodeBalances.call(darknode1, dai.address) + await dnp.darknodeBalances(darknode1, dai.address) ); newBal.should.bignumber.equal(oldBal.add(rewardShare)); await updatePayoutPercent(config.DARKNODE_PAYOUT_PERCENT); @@ -1028,7 +1014,7 @@ contract("DarknodePayment", (accounts: string[]) => { }); it("can update DarknodeRegistry", async () => { - const darknodeRegistry = await dnp.darknodeRegistry.call(); + const darknodeRegistry = await dnp.darknodeRegistry(); await dnp .updateDarknodeRegistry(NULL) .should.be.rejectedWith( @@ -1052,23 +1038,23 @@ contract("DarknodePayment", (accounts: string[]) => { const withdraw = async (address: string) => { // Our claimed amount should be positive const earnedDAIRewards = new BN( - await dnp.darknodeBalances.call(address, dai.address) + await dnp.darknodeBalances(address, dai.address) ); earnedDAIRewards.gt(new BN(0)).should.be.true; - const oldDAIBalance = new BN(await dai.balanceOf.call(address)); + const oldDAIBalance = new BN(await dai.balanceOf(address)); await dnp.withdraw(address, dai.address); // Our balances should have increased - const newDAIBalance = new BN(await dai.balanceOf.call(address)); + const newDAIBalance = new BN(await dai.balanceOf(address)); newDAIBalance.should.bignumber.equal( oldDAIBalance.add(earnedDAIRewards) ); // We should have nothing left to withdraw const postWithdrawRewards = new BN( - await dnp.darknodeBalances.call(address, dai.address) + await dnp.darknodeBalances(address, dai.address) ); postWithdrawRewards.should.bignumber.equal(new BN(0)); }; @@ -1082,13 +1068,13 @@ contract("DarknodePayment", (accounts: string[]) => { const depositDai = async (amount: number | BN | string) => { const amountBN = new BN(amount); const previousBalance = new BN( - await store.availableBalance.call(dai.address) + await store.availableBalance(dai.address) ); // Approve the contract to use DAI await dai.approve(dnp.address, amountBN); await dnp.deposit(amountBN, dai.address); // We should expect the DAI balance to have increased by what we deposited - (await store.availableBalance.call(dai.address)).should.bignumber.equal( + (await store.availableBalance(dai.address)).should.bignumber.equal( previousBalance.add(amountBN) ); }; @@ -1097,15 +1083,13 @@ contract("DarknodePayment", (accounts: string[]) => { amount: BN | string | number ): Promise => { const balance = new BN(amount); - const payoutPercent = new BN( - await dnp.currentCyclePayoutPercent.call() - ); + const payoutPercent = new BN(await dnp.currentCyclePayoutPercent()); const rewardPool = balance.div(new BN(100)).mul(payoutPercent); return rewardPool; }; const fetchRewardPool = async (token: string): Promise => { - return new BN(await dnp.currentCycleRewardPool.call(token)); + return new BN(await dnp.currentCycleRewardPool(token)); }; const registerDarknode = async (i: number) => { @@ -1118,12 +1102,8 @@ contract("DarknodePayment", (accounts: string[]) => { const updatePayoutPercent = async (percent: number | string | BN) => { const p = new BN(percent); await dnp.updatePayoutPercentage(p); - new BN(await dnp.nextCyclePayoutPercent.call()).should.bignumber.equal( - p - ); + new BN(await dnp.nextCyclePayoutPercent()).should.bignumber.equal(p); await waitForEpoch(dnr); - new BN( - await dnp.currentCyclePayoutPercent.call() - ).should.bignumber.equal(p); + new BN(await dnp.currentCyclePayoutPercent()).should.bignumber.equal(p); }; }); diff --git a/test/DarknodeRegistry.ts b/test/DarknodeRegistry.ts index 41f3f410..5778cbe4 100644 --- a/test/DarknodeRegistry.ts +++ b/test/DarknodeRegistry.ts @@ -62,7 +62,7 @@ contract("DarknodeRegistry", (accounts: string[]) => { }); it("should return empty list when no darknodes are registered", async () => { - const nodes = (await dnr.getPreviousDarknodes.call(NULL, 100)).filter( + const nodes = (await dnr.getPreviousDarknodes(NULL, 100)).filter( x => x !== NULL ); nodes.length.should.equal(0); @@ -71,44 +71,42 @@ contract("DarknodeRegistry", (accounts: string[]) => { it("can update minimum bond", async () => { await dnr.updateMinimumBond(0x1); await waitForEpoch(dnr); - (await dnr.minimumBond.call()).should.bignumber.equal(1); + (await dnr.minimumBond()).should.bignumber.equal(1); await dnr .updateMinimumBond(MINIMUM_BOND, { from: accounts[1] }) .should.be.rejectedWith(/Ownable: caller is not the owner/); await dnr.updateMinimumBond(MINIMUM_BOND); - (await dnr.minimumBond.call()).should.bignumber.equal(1); + (await dnr.minimumBond()).should.bignumber.equal(1); await waitForEpoch(dnr); - (await dnr.minimumBond.call()).should.bignumber.equal(MINIMUM_BOND); + (await dnr.minimumBond()).should.bignumber.equal(MINIMUM_BOND); }); it("can update minimum pod size", async () => { await dnr.updateMinimumPodSize(0x0); await waitForEpoch(dnr); - (await dnr.minimumPodSize.call()).should.bignumber.equal(0); + (await dnr.minimumPodSize()).should.bignumber.equal(0); await dnr .updateMinimumPodSize(MINIMUM_POD_SIZE, { from: accounts[1] }) .should.be.rejectedWith(/Ownable: caller is not the owner/); await dnr.updateMinimumPodSize(MINIMUM_POD_SIZE); - (await dnr.minimumPodSize.call()).should.bignumber.equal(0); + (await dnr.minimumPodSize()).should.bignumber.equal(0); await waitForEpoch(dnr); - (await dnr.minimumPodSize.call()).should.bignumber.equal( - MINIMUM_POD_SIZE - ); + (await dnr.minimumPodSize()).should.bignumber.equal(MINIMUM_POD_SIZE); }); it("can update minimum epoch interval", async () => { await dnr.updateMinimumEpochInterval(0x0); await waitForEpoch(dnr); - (await dnr.minimumEpochInterval.call()).should.bignumber.equal(0); + (await dnr.minimumEpochInterval()).should.bignumber.equal(0); await dnr .updateMinimumEpochInterval(MINIMUM_EPOCH_INTERVAL_SECONDS, { from: accounts[1] }) .should.be.rejectedWith(/Ownable: caller is not the owner/); await dnr.updateMinimumEpochInterval(MINIMUM_EPOCH_INTERVAL_SECONDS); - (await dnr.minimumEpochInterval.call()).should.bignumber.equal(0); + (await dnr.minimumEpochInterval()).should.bignumber.equal(0); await waitForEpoch(dnr); - (await dnr.minimumEpochInterval.call()).should.bignumber.equal( + (await dnr.minimumEpochInterval()).should.bignumber.equal( MINIMUM_EPOCH_INTERVAL_SECONDS ); }); @@ -164,7 +162,7 @@ contract("DarknodeRegistry", (accounts: string[]) => { ); ( - await getOperatorDarknodes.getOperatorDarknodes.call(accounts[2]) + await getOperatorDarknodes.getOperatorDarknodes(accounts[2]) ).length.should.bignumber.equal(nodeCount + 1); // +1 from the first loop // [ACTION] Deregister @@ -205,101 +203,101 @@ contract("DarknodeRegistry", (accounts: string[]) => { await waitForEpoch(dnr); // [CHECK] - (await dnr.isRefunded.call(id)).should.be.true; - (await dnr.isPendingRegistration.call(id)).should.be.false; - (await dnr.isRegistered.call(id)).should.be.false; - (await dnr.isDeregisterable.call(id)).should.be.false; - (await dnr.isPendingDeregistration.call(id)).should.be.false; - (await dnr.isDeregistered.call(id)).should.be.false; - (await dnr.isRefundable.call(id)).should.be.false; - (await dnr.isRegisteredInPreviousEpoch.call(id)).should.be.false; + (await dnr.isRefunded(id)).should.be.true; + (await dnr.isPendingRegistration(id)).should.be.false; + (await dnr.isRegistered(id)).should.be.false; + (await dnr.isDeregisterable(id)).should.be.false; + (await dnr.isPendingDeregistration(id)).should.be.false; + (await dnr.isDeregistered(id)).should.be.false; + (await dnr.isRefundable(id)).should.be.false; + (await dnr.isRegisteredInPreviousEpoch(id)).should.be.false; // [ACTION] Register await ren.approve(dnr.address, MINIMUM_BOND, { from: owner }); await dnr.register(id, pubk, { from: owner }); // [CHECK] - (await dnr.isRefunded.call(id)).should.be.false; - (await dnr.isPendingRegistration.call(id)).should.be.true; - (await dnr.isRegistered.call(id)).should.be.false; - (await dnr.isDeregisterable.call(id)).should.be.false; - (await dnr.isPendingDeregistration.call(id)).should.be.false; - (await dnr.isDeregistered.call(id)).should.be.false; - (await dnr.isRefundable.call(id)).should.be.false; - (await dnr.isRegisteredInPreviousEpoch.call(id)).should.be.false; + (await dnr.isRefunded(id)).should.be.false; + (await dnr.isPendingRegistration(id)).should.be.true; + (await dnr.isRegistered(id)).should.be.false; + (await dnr.isDeregisterable(id)).should.be.false; + (await dnr.isPendingDeregistration(id)).should.be.false; + (await dnr.isDeregistered(id)).should.be.false; + (await dnr.isRefundable(id)).should.be.false; + (await dnr.isRegisteredInPreviousEpoch(id)).should.be.false; await waitForEpoch(dnr); // [CHECK] - (await dnr.isRefunded.call(id)).should.be.false; - (await dnr.isPendingRegistration.call(id)).should.be.false; - (await dnr.isRegistered.call(id)).should.be.true; - (await dnr.isDeregisterable.call(id)).should.be.true; - (await dnr.isPendingDeregistration.call(id)).should.be.false; - (await dnr.isDeregistered.call(id)).should.be.false; - (await dnr.isRefundable.call(id)).should.be.false; - (await dnr.isRegisteredInPreviousEpoch.call(id)).should.be.false; + (await dnr.isRefunded(id)).should.be.false; + (await dnr.isPendingRegistration(id)).should.be.false; + (await dnr.isRegistered(id)).should.be.true; + (await dnr.isDeregisterable(id)).should.be.true; + (await dnr.isPendingDeregistration(id)).should.be.false; + (await dnr.isDeregistered(id)).should.be.false; + (await dnr.isRefundable(id)).should.be.false; + (await dnr.isRegisteredInPreviousEpoch(id)).should.be.false; await waitForEpoch(dnr); // [CHECK] - (await dnr.isRefunded.call(id)).should.be.false; - (await dnr.isPendingRegistration.call(id)).should.be.false; - (await dnr.isRegistered.call(id)).should.be.true; - (await dnr.isDeregisterable.call(id)).should.be.true; - (await dnr.isPendingDeregistration.call(id)).should.be.false; - (await dnr.isDeregistered.call(id)).should.be.false; - (await dnr.isRefundable.call(id)).should.be.false; - (await dnr.isRegisteredInPreviousEpoch.call(id)).should.be.true; + (await dnr.isRefunded(id)).should.be.false; + (await dnr.isPendingRegistration(id)).should.be.false; + (await dnr.isRegistered(id)).should.be.true; + (await dnr.isDeregisterable(id)).should.be.true; + (await dnr.isPendingDeregistration(id)).should.be.false; + (await dnr.isDeregistered(id)).should.be.false; + (await dnr.isRefundable(id)).should.be.false; + (await dnr.isRegisteredInPreviousEpoch(id)).should.be.true; // [ACTION] Deregister await dnr.deregister(id, { from: owner }); // [CHECK] - (await dnr.isRefunded.call(id)).should.be.false; - (await dnr.isPendingRegistration.call(id)).should.be.false; - (await dnr.isRegistered.call(id)).should.be.true; - (await dnr.isDeregisterable.call(id)).should.be.false; - (await dnr.isPendingDeregistration.call(id)).should.be.true; - (await dnr.isDeregistered.call(id)).should.be.false; - (await dnr.isRefundable.call(id)).should.be.false; - (await dnr.isRegisteredInPreviousEpoch.call(id)).should.be.true; + (await dnr.isRefunded(id)).should.be.false; + (await dnr.isPendingRegistration(id)).should.be.false; + (await dnr.isRegistered(id)).should.be.true; + (await dnr.isDeregisterable(id)).should.be.false; + (await dnr.isPendingDeregistration(id)).should.be.true; + (await dnr.isDeregistered(id)).should.be.false; + (await dnr.isRefundable(id)).should.be.false; + (await dnr.isRegisteredInPreviousEpoch(id)).should.be.true; // [ACTION] Wait for epoch await waitForEpoch(dnr); - (await dnr.isRefunded.call(id)).should.be.false; - (await dnr.isPendingRegistration.call(id)).should.be.false; - (await dnr.isRegistered.call(id)).should.be.false; - (await dnr.isDeregisterable.call(id)).should.be.false; - (await dnr.isPendingDeregistration.call(id)).should.be.false; - (await dnr.isDeregistered.call(id)).should.be.true; - (await dnr.isRefundable.call(id)).should.be.false; - (await dnr.isRegisteredInPreviousEpoch.call(id)).should.be.true; + (await dnr.isRefunded(id)).should.be.false; + (await dnr.isPendingRegistration(id)).should.be.false; + (await dnr.isRegistered(id)).should.be.false; + (await dnr.isDeregisterable(id)).should.be.false; + (await dnr.isPendingDeregistration(id)).should.be.false; + (await dnr.isDeregistered(id)).should.be.true; + (await dnr.isRefundable(id)).should.be.false; + (await dnr.isRegisteredInPreviousEpoch(id)).should.be.true; // [ACTION] Wait for epoch await waitForEpoch(dnr); - (await dnr.isRefunded.call(id)).should.be.false; - (await dnr.isPendingRegistration.call(id)).should.be.false; - (await dnr.isRegistered.call(id)).should.be.false; - (await dnr.isDeregisterable.call(id)).should.be.false; - (await dnr.isPendingDeregistration.call(id)).should.be.false; - (await dnr.isDeregistered.call(id)).should.be.true; - (await dnr.isRefundable.call(id)).should.be.true; - (await dnr.isRegisteredInPreviousEpoch.call(id)).should.be.false; + (await dnr.isRefunded(id)).should.be.false; + (await dnr.isPendingRegistration(id)).should.be.false; + (await dnr.isRegistered(id)).should.be.false; + (await dnr.isDeregisterable(id)).should.be.false; + (await dnr.isPendingDeregistration(id)).should.be.false; + (await dnr.isDeregistered(id)).should.be.true; + (await dnr.isRefundable(id)).should.be.true; + (await dnr.isRegisteredInPreviousEpoch(id)).should.be.false; // [ACTION] Refund await dnr.refund(id, { from: accounts[0] }); - (await dnr.isRefunded.call(id)).should.be.true; - (await dnr.isPendingRegistration.call(id)).should.be.false; - (await dnr.isRegistered.call(id)).should.be.false; - (await dnr.isDeregisterable.call(id)).should.be.false; - (await dnr.isPendingDeregistration.call(id)).should.be.false; - (await dnr.isDeregistered.call(id)).should.be.false; - (await dnr.isRefundable.call(id)).should.be.false; - (await dnr.isRegisteredInPreviousEpoch.call(id)).should.be.false; + (await dnr.isRefunded(id)).should.be.true; + (await dnr.isPendingRegistration(id)).should.be.false; + (await dnr.isRegistered(id)).should.be.false; + (await dnr.isDeregisterable(id)).should.be.false; + (await dnr.isPendingDeregistration(id)).should.be.false; + (await dnr.isDeregistered(id)).should.be.false; + (await dnr.isRefundable(id)).should.be.false; + (await dnr.isRegisteredInPreviousEpoch(id)).should.be.false; }); it("bond is exactly the minimum bond", async () => { @@ -307,7 +305,7 @@ contract("DarknodeRegistry", (accounts: string[]) => { const id = ID("0"); const pubk = PUBK("0"); - const renBalanceBefore = new BN(await ren.balanceOf.call(owner)); + const renBalanceBefore = new BN(await ren.balanceOf(owner)); // Approve more than minimum bond await ren.approve(dnr.address, MINIMUM_BOND.mul(new BN(2)), { @@ -318,7 +316,7 @@ contract("DarknodeRegistry", (accounts: string[]) => { await dnr.register(id, pubk, { from: owner }); // Only minimum bond should have been transferred - (await ren.balanceOf.call(owner)).should.bignumber.equal( + (await ren.balanceOf(owner)).should.bignumber.equal( renBalanceBefore.sub(MINIMUM_BOND) ); @@ -360,17 +358,17 @@ contract("DarknodeRegistry", (accounts: string[]) => { }); it("can get the owner of the Dark Node", async () => { - (await dnr.getDarknodeOperator.call(ID("0"))).should.equal(accounts[0]); + (await dnr.getDarknodeOperator(ID("0"))).should.equal(accounts[0]); }); it("can get the bond of the Dark Node", async () => { - (await dnr.getDarknodeBond.call(ID("0"))).should.bignumber.equal( + (await dnr.getDarknodeBond(ID("0"))).should.bignumber.equal( MINIMUM_BOND ); }); it("can get the Public Key of the Dark Node", async () => { - (await dnr.getDarknodePublicKey.call(ID("0"))).should.equal(PUBK("0")); + (await dnr.getDarknodePublicKey(ID("0"))).should.equal(PUBK("0")); }); it("can deregister dark nodes", async () => { @@ -381,12 +379,12 @@ contract("DarknodeRegistry", (accounts: string[]) => { await dnr.deregister(ID("8"), { from: accounts[8] }); await dnr.deregister(ID("9"), { from: accounts[9] }); await waitForEpoch(dnr); - (await dnr.isDeregistered.call(ID("0"))).should.be.true; - (await dnr.isDeregistered.call(ID("1"))).should.be.true; - (await dnr.isDeregistered.call(ID("4"))).should.be.true; - (await dnr.isDeregistered.call(ID("5"))).should.be.true; - (await dnr.isDeregistered.call(ID("8"))).should.be.true; - (await dnr.isDeregistered.call(ID("9"))).should.be.true; + (await dnr.isDeregistered(ID("0"))).should.be.true; + (await dnr.isDeregistered(ID("1"))).should.be.true; + (await dnr.isDeregistered(ID("4"))).should.be.true; + (await dnr.isDeregistered(ID("5"))).should.be.true; + (await dnr.isDeregistered(ID("8"))).should.be.true; + (await dnr.isDeregistered(ID("9"))).should.be.true; }); it("can't deregister twice", async () => { @@ -396,9 +394,7 @@ contract("DarknodeRegistry", (accounts: string[]) => { }); it("can get the current epoch's registered dark nodes", async () => { - const nodes = (await dnr.getDarknodes.call(NULL, 0)).filter( - x => x !== NULL - ); + const nodes = (await dnr.getDarknodes(NULL, 0)).filter(x => x !== NULL); nodes.length.should.equal(numAccounts - 6); nodes[0].should.equal(ID("2")); nodes[1].should.equal(ID("3")); @@ -407,14 +403,14 @@ contract("DarknodeRegistry", (accounts: string[]) => { }); it("can get the previous epoch's registered dark nodes", async () => { - let nodes = (await dnr.getPreviousDarknodes.call(NULL, 0)).filter( + let nodes = (await dnr.getPreviousDarknodes(NULL, 0)).filter( x => x !== NULL ); nodes.length.should.equal(numAccounts); await waitForEpoch(dnr); - nodes = (await dnr.getPreviousDarknodes.call(NULL, 0)).filter( + nodes = (await dnr.getPreviousDarknodes(NULL, 0)).filter( x => x !== NULL ); nodes.length.should.equal(numAccounts - 6); @@ -425,7 +421,7 @@ contract("DarknodeRegistry", (accounts: string[]) => { let start = NULL; do { - const newNodes = await dnr.getDarknodes.call(start, 2); + const newNodes = await dnr.getDarknodes(start, 2); start = newNodes[newNodes.length - 1]; for (const node of newNodes) { if (node !== NULL && nodes.indexOf(node) === -1) { @@ -446,7 +442,7 @@ contract("DarknodeRegistry", (accounts: string[]) => { let start = NULL; do { - const newNodes = await dnr.getPreviousDarknodes.call(start, 2); + const newNodes = await dnr.getPreviousDarknodes(start, 2); start = newNodes[newNodes.length - 1]; for (const node of newNodes) { if (node !== NULL && nodes.indexOf(node) === -1) { @@ -475,36 +471,36 @@ contract("DarknodeRegistry", (accounts: string[]) => { await dnr.deregister(ID("6"), { from: accounts[6] }); await dnr.deregister(ID("7"), { from: accounts[7] }); - (await dnr.isPendingDeregistration.call(ID("2"))).should.be.true; - (await dnr.isPendingDeregistration.call(ID("3"))).should.be.true; - (await dnr.isPendingDeregistration.call(ID("6"))).should.be.true; - (await dnr.isPendingDeregistration.call(ID("7"))).should.be.true; + (await dnr.isPendingDeregistration(ID("2"))).should.be.true; + (await dnr.isPendingDeregistration(ID("3"))).should.be.true; + (await dnr.isPendingDeregistration(ID("6"))).should.be.true; + (await dnr.isPendingDeregistration(ID("7"))).should.be.true; // Call epoch await waitForEpoch(dnr); - (await dnr.isRegisteredInPreviousEpoch.call(ID("2"))).should.be.true; - (await dnr.isRegisteredInPreviousEpoch.call(ID("3"))).should.be.true; - (await dnr.isRegisteredInPreviousEpoch.call(ID("6"))).should.be.true; - (await dnr.isRegisteredInPreviousEpoch.call(ID("7"))).should.be.true; - (await dnr.isDeregistered.call(ID("2"))).should.be.true; - (await dnr.isDeregistered.call(ID("3"))).should.be.true; - (await dnr.isDeregistered.call(ID("6"))).should.be.true; - (await dnr.isDeregistered.call(ID("7"))).should.be.true; + (await dnr.isRegisteredInPreviousEpoch(ID("2"))).should.be.true; + (await dnr.isRegisteredInPreviousEpoch(ID("3"))).should.be.true; + (await dnr.isRegisteredInPreviousEpoch(ID("6"))).should.be.true; + (await dnr.isRegisteredInPreviousEpoch(ID("7"))).should.be.true; + (await dnr.isDeregistered(ID("2"))).should.be.true; + (await dnr.isDeregistered(ID("3"))).should.be.true; + (await dnr.isDeregistered(ID("6"))).should.be.true; + (await dnr.isDeregistered(ID("7"))).should.be.true; const previousDarknodesEpoch1 = ( - await dnr.getPreviousDarknodes.call(NULL, 0) + await dnr.getPreviousDarknodes(NULL, 0) ).filter(x => x !== NULL); await waitForEpoch(dnr); const previousDarknodesEpoch2 = ( - await dnr.getPreviousDarknodes.call(NULL, 0) + await dnr.getPreviousDarknodes(NULL, 0) ).filter(x => x !== NULL); ( previousDarknodesEpoch1.length - previousDarknodesEpoch2.length ).should.be.equal(4); - (await dnr.isDeregistered.call(ID("2"))).should.be.true; - (await dnr.isDeregistered.call(ID("3"))).should.be.true; - (await dnr.isDeregistered.call(ID("6"))).should.be.true; - (await dnr.isDeregistered.call(ID("7"))).should.be.true; + (await dnr.isDeregistered(ID("2"))).should.be.true; + (await dnr.isDeregistered(ID("3"))).should.be.true; + (await dnr.isDeregistered(ID("6"))).should.be.true; + (await dnr.isDeregistered(ID("7"))).should.be.true; // Refund await dnr.refund(ID("2"), { from: accounts[2] }); @@ -512,22 +508,14 @@ contract("DarknodeRegistry", (accounts: string[]) => { await dnr.refund(ID("6"), { from: accounts[6] }); await dnr.refund(ID("7"), { from: accounts[7] }); - (await dnr.isRefunded.call(ID("2"))).should.be.true; - (await dnr.isRefunded.call(ID("3"))).should.be.true; - (await dnr.isRefunded.call(ID("6"))).should.be.true; - (await dnr.isRefunded.call(ID("7"))).should.be.true; - (await ren.balanceOf.call(accounts[2])).should.bignumber.equal( - MINIMUM_BOND - ); - (await ren.balanceOf.call(accounts[3])).should.bignumber.equal( - MINIMUM_BOND - ); - (await ren.balanceOf.call(accounts[6])).should.bignumber.equal( - MINIMUM_BOND - ); - (await ren.balanceOf.call(accounts[7])).should.bignumber.equal( - MINIMUM_BOND - ); + (await dnr.isRefunded(ID("2"))).should.be.true; + (await dnr.isRefunded(ID("3"))).should.be.true; + (await dnr.isRefunded(ID("6"))).should.be.true; + (await dnr.isRefunded(ID("7"))).should.be.true; + (await ren.balanceOf(accounts[2])).should.bignumber.equal(MINIMUM_BOND); + (await ren.balanceOf(accounts[3])).should.bignumber.equal(MINIMUM_BOND); + (await ren.balanceOf(accounts[6])).should.bignumber.equal(MINIMUM_BOND); + (await ren.balanceOf(accounts[7])).should.bignumber.equal(MINIMUM_BOND); }); it("anyone can refund", async () => { @@ -540,7 +528,7 @@ contract("DarknodeRegistry", (accounts: string[]) => { await dnr.register(id, pubk, { from: owner }); await waitForEpoch(dnr); await dnr.deregister(id, { from: owner }); - (await dnr.isPendingDeregistration.call(id)).should.be.true; + (await dnr.isPendingDeregistration(id)).should.be.true; await waitForEpoch(dnr); await waitForEpoch(dnr); @@ -548,8 +536,8 @@ contract("DarknodeRegistry", (accounts: string[]) => { await dnr.refund(id, { from: accounts[0] }); // [CHECK] Refund was successful and bond was returned - (await dnr.isRefunded.call(id)).should.be.true; - (await ren.balanceOf.call(owner)).should.bignumber.equal(MINIMUM_BOND); + (await dnr.isRefunded(id)).should.be.true; + (await ren.balanceOf(owner)).should.bignumber.equal(MINIMUM_BOND); }); it("should fail to refund twice", async () => { @@ -588,7 +576,7 @@ contract("DarknodeRegistry", (accounts: string[]) => { }); it("can update DarknodePayment", async () => { - const darknodePayment = await dnr.darknodePayment.call(); + const darknodePayment = await dnr.darknodePayment(); await dnr .updateDarknodePayment(NULL) .should.be.rejectedWith( @@ -605,7 +593,7 @@ contract("DarknodeRegistry", (accounts: string[]) => { await dnr.updateSlasher(newSlasher); await waitForEpoch(dnr); - (await dnr.slasher.call()).should.equal(newSlasher); + (await dnr.slasher()).should.equal(newSlasher); await dnr .slash(ID("2"), newSlasher, new BN(70)) .should.be.rejectedWith(/DarknodeRegistry: invalid darknode/); @@ -613,7 +601,7 @@ contract("DarknodeRegistry", (accounts: string[]) => { // Reset slasher address await dnr.updateSlasher(slasher.address); await waitForEpoch(dnr); - (await dnr.slasher.call()).should.equal(slasher.address); + (await dnr.slasher()).should.equal(slasher.address); }); it("cannot slash with an invalid percent", async () => { @@ -621,7 +609,7 @@ contract("DarknodeRegistry", (accounts: string[]) => { const newSlasher = accounts[0]; await dnr.updateSlasher(newSlasher); await waitForEpoch(dnr); - (await dnr.slasher.call()).should.equal(newSlasher); + (await dnr.slasher()).should.equal(newSlasher); // Register darknode 3 await ren.approve(dnr.address, MINIMUM_BOND, { from: accounts[2] }); @@ -641,25 +629,25 @@ contract("DarknodeRegistry", (accounts: string[]) => { // Reset slasher await dnr.updateSlasher(slasher.address); await waitForEpoch(dnr); - (await dnr.slasher.call()).should.equal(slasher.address); + (await dnr.slasher()).should.equal(slasher.address); // De-register darknode 3 await dnr.deregister(ID("2"), { from: accounts[2] }); - (await dnr.isPendingDeregistration.call(ID("2"))).should.be.true; + (await dnr.isPendingDeregistration(ID("2"))).should.be.true; // Call epoch await waitForEpoch(dnr); await waitForEpoch(dnr); - (await dnr.isDeregistered.call(ID("2"))).should.be.true; + (await dnr.isDeregistered(ID("2"))).should.be.true; // Refund darknode 3 await dnr.refund(ID("2"), { from: accounts[2] }); - (await dnr.isRefunded.call(ID("2"))).should.be.true; + (await dnr.isRefunded(ID("2"))).should.be.true; }); it("can update slasher address", async () => { // [CHECK] This test assumes different previous and new slashers - const previousSlasher = await dnr.slasher.call(); + const previousSlasher = await dnr.slasher(); const newSlasher = accounts[3]; previousSlasher.should.not.equal(newSlasher); @@ -673,16 +661,16 @@ contract("DarknodeRegistry", (accounts: string[]) => { // [ACTION] Update slasher address await dnr.updateSlasher(newSlasher); // [CHECK] Verify the address hasn't changed before an epoch - (await dnr.slasher.call()).should.equal(previousSlasher); + (await dnr.slasher()).should.equal(previousSlasher); // [CHECK] Verify the new slasher address after an epoch await waitForEpoch(dnr); - (await dnr.slasher.call()).should.equal(newSlasher); + (await dnr.slasher()).should.equal(newSlasher); // [RESET] Reset the slasher address to the previous slasher address await dnr.updateSlasher(previousSlasher); await waitForEpoch(dnr); - (await dnr.slasher.call()).should.equal(previousSlasher); + (await dnr.slasher()).should.equal(previousSlasher); }); it("anyone except the slasher can not call slash", async () => { @@ -755,13 +743,13 @@ contract("DarknodeRegistry", (accounts: string[]) => { await dnr.transferStoreOwnership(newDnr.address); // [CHECK] Owner should still be the DNR - (await dnrs.owner.call()).should.equal(newDnr.address); + (await dnrs.owner()).should.equal(newDnr.address); // [RESET] Initiate ownership transfer back to DNR await newDnr.transferStoreOwnership(dnr.address); // [CHECK] Owner should now be the DNR - (await dnrs.owner.call()).should.equal(dnr.address); + (await dnrs.owner()).should.equal(dnr.address); }); it("can't arbitrarily increase bond", async () => { @@ -771,17 +759,15 @@ contract("DarknodeRegistry", (accounts: string[]) => { await claimer.transferStoreOwnership(accounts[0]); await dnrs.claimOwnership({ from: accounts[0] }); - const previousRenBalance = new BN( - await ren.balanceOf.call(accounts[0]) - ); + const previousRenBalance = new BN(await ren.balanceOf(accounts[0])); // [ACTION] Decrease bond (used for bond slashing) const difference = new BN(1); - const previousBond = new BN(await dnrs.darknodeBond.call(ID("7"))); + const previousBond = new BN(await dnrs.darknodeBond(ID("7"))); await dnrs.updateDarknodeBond(ID("7"), previousBond.sub(difference)); // [CHECK] Decreasing bond transfers different to owner - const afterRenBalance = new BN(await ren.balanceOf.call(accounts[0])); + const afterRenBalance = new BN(await ren.balanceOf(accounts[0])); afterRenBalance .sub(previousRenBalance) .should.be.bignumber.equal(difference); @@ -832,11 +818,11 @@ contract("DarknodeRegistry", (accounts: string[]) => { // Recover REN const initialRenBalance = new BN( - (await ren.balanceOf.call(accounts[0])).toString() + (await ren.balanceOf(accounts[0])).toString() ); await dnr.recoverTokens(ren.address, { from: accounts[0] }); const finalRenBalance = new BN( - (await ren.balanceOf.call(accounts[0])).toString() + (await ren.balanceOf(accounts[0])).toString() ); finalRenBalance.sub(initialRenBalance).should.bignumber.equal(1000); @@ -862,7 +848,7 @@ contract("DarknodeRegistry", (accounts: string[]) => { await ren.transfer(dnrs.address, 1000); const initialRenBalance = new BN( - (await ren.balanceOf.call(accounts[0])).toString() + (await ren.balanceOf(accounts[0])).toString() ); // Can't recover REN @@ -879,11 +865,11 @@ contract("DarknodeRegistry", (accounts: string[]) => { // Can recover unrelated token const initialTokenBalance = new BN( - (await token.balanceOf.call(accounts[0])).toString() + (await token.balanceOf(accounts[0])).toString() ); await dnrs.recoverTokens(token.address, { from: accounts[0] }); const finalTokenBalance = new BN( - (await token.balanceOf.call(accounts[0])).toString() + (await token.balanceOf(accounts[0])).toString() ); finalTokenBalance .sub(initialTokenBalance) @@ -900,7 +886,7 @@ contract("DarknodeRegistry", (accounts: string[]) => { // Check that no REN was transferred const finalRenBalance = new BN( - (await ren.balanceOf.call(accounts[0])).toString() + (await ren.balanceOf(accounts[0])).toString() ); finalRenBalance.should.bignumber.equal(initialRenBalance); @@ -951,16 +937,14 @@ contract("DarknodeRegistry", (accounts: string[]) => { }); it("cannot slash", async () => { - (await newDNR.owner.call()).should.equal(accounts[0]); + (await newDNR.owner()).should.equal(accounts[0]); const newSlasher = accounts[0]; await newDNR.updateSlasher(newSlasher); await waitForEpoch(newDNR); - (await newDNR.slasher.call()).should.equal(newSlasher); + (await newDNR.slasher()).should.equal(newSlasher); // We should have enough balance to register a darknode - if ( - new BN(await ren.balanceOf.call(accounts[8])).lt(MINIMUM_BOND) - ) { + if (new BN(await ren.balanceOf(accounts[8])).lt(MINIMUM_BOND)) { await ren.transfer(accounts[8], MINIMUM_BOND); } await ren.approve(newDNR.address, MINIMUM_BOND, { @@ -991,13 +975,13 @@ contract("DarknodeRegistry", (accounts: string[]) => { await waitForEpoch(dnr); preCountPreviousEpoch = new BN( - (await dnr.numDarknodesPreviousEpoch.call()).toString() + (await dnr.numDarknodesPreviousEpoch()).toString() ); - preCount = new BN((await dnr.numDarknodes.call()).toString()); + preCount = new BN((await dnr.numDarknodes()).toString()); preCountNextEpoch = new BN( - (await dnr.numDarknodesNextEpoch.call()).toString() + (await dnr.numDarknodesNextEpoch()).toString() ); - preDarknodes = await dnr.getDarknodes.call(NULL, 0); + preDarknodes = await dnr.getDarknodes(NULL, 0); // Deploy a new DNR and DNR store newDNR = await deployProxy( @@ -1033,19 +1017,19 @@ contract("DarknodeRegistry", (accounts: string[]) => { await waitForEpoch(dnr); new BN( - (await dnr.numDarknodes.call()).toString() + (await dnr.numDarknodes()).toString() ).should.bignumber.equal(preCount.add(new BN(1))); }); it("number of darknodes is correct", async () => { const countPreviousEpoch = new BN( - (await newDNR.numDarknodesPreviousEpoch.call()).toString() + (await newDNR.numDarknodesPreviousEpoch()).toString() ); - const count = new BN((await newDNR.numDarknodes.call()).toString()); + const count = new BN((await newDNR.numDarknodes()).toString()); const countNextEpoch = new BN( - (await newDNR.numDarknodesNextEpoch.call()).toString() + (await newDNR.numDarknodesNextEpoch()).toString() ); - const darknodes = await newDNR.getDarknodes.call(NULL, 0); + const darknodes = await newDNR.getDarknodes(NULL, 0); countPreviousEpoch.should.bignumber.equal(preCountPreviousEpoch); count.should.bignumber.equal(preCount); @@ -1056,13 +1040,13 @@ contract("DarknodeRegistry", (accounts: string[]) => { await newDNR.register(ID("10"), PUBK("10")); new BN( - (await newDNR.numDarknodesNextEpoch.call()).toString() + (await newDNR.numDarknodesNextEpoch()).toString() ).should.bignumber.equal(countNextEpoch.add(new BN(1))); await waitForEpoch(newDNR); new BN( - (await newDNR.numDarknodes.call()).toString() + (await newDNR.numDarknodes()).toString() ).should.bignumber.equal(count.add(new BN(1))); }); }); @@ -1096,12 +1080,12 @@ contract("DarknodeRegistry", (accounts: string[]) => { let start = NULL; do { - const nodes = await dnr.getDarknodes.call(start, 50); + const nodes = await dnr.getDarknodes(start, 50); console.debug(nodes); start = nodes[nodes.length - 1]; } while (start !== NULL); - const numDarknodes = await dnr.numDarknodes.call(); + const numDarknodes = await dnr.numDarknodes(); numDarknodes.should.bignumber.equal(MAX_DARKNODES); for (let i = 0; i < MAX_DARKNODES; i++) { diff --git a/test/DarknodeSlasher.ts b/test/DarknodeSlasher.ts index 598d85b2..26c80d1d 100644 --- a/test/DarknodeSlasher.ts +++ b/test/DarknodeSlasher.ts @@ -74,55 +74,43 @@ contract("DarknodeSlasher", (accounts: string[]) => { it("can set a valid blacklist percentage", async () => { const p1 = new BN("1"); await slasher.setBlacklistSlashPercent(p1); - (await slasher.blacklistSlashPercent.call()).should.bignumber.equal( - p1 - ); + (await slasher.blacklistSlashPercent()).should.bignumber.equal(p1); const p2 = new BN("10"); await slasher.setBlacklistSlashPercent(p2); - (await slasher.blacklistSlashPercent.call()).should.bignumber.equal( - p2 - ); + (await slasher.blacklistSlashPercent()).should.bignumber.equal(p2); const p3 = new BN("12"); await slasher.setBlacklistSlashPercent(p3); - (await slasher.blacklistSlashPercent.call()).should.bignumber.equal( - p3 - ); + (await slasher.blacklistSlashPercent()).should.bignumber.equal(p3); }); it("can set a valid malicious percentage", async () => { const p1 = new BN("1"); await slasher.setMaliciousSlashPercent(p1); - (await slasher.maliciousSlashPercent.call()).should.bignumber.equal( - p1 - ); + (await slasher.maliciousSlashPercent()).should.bignumber.equal(p1); const p2 = new BN("10"); await slasher.setMaliciousSlashPercent(p2); - (await slasher.maliciousSlashPercent.call()).should.bignumber.equal( - p2 - ); + (await slasher.maliciousSlashPercent()).should.bignumber.equal(p2); const p3 = new BN("12"); await slasher.setMaliciousSlashPercent(p3); - (await slasher.maliciousSlashPercent.call()).should.bignumber.equal( - p3 - ); + (await slasher.maliciousSlashPercent()).should.bignumber.equal(p3); }); it("can set a valid secret reveal percentage", async () => { const p1 = new BN("1"); await slasher.setSecretRevealSlashPercent(p1); - ( - await slasher.secretRevealSlashPercent.call() - ).should.bignumber.equal(p1); + (await slasher.secretRevealSlashPercent()).should.bignumber.equal( + p1 + ); const p2 = new BN("10"); await slasher.setSecretRevealSlashPercent(p2); - ( - await slasher.secretRevealSlashPercent.call() - ).should.bignumber.equal(p2); + (await slasher.secretRevealSlashPercent()).should.bignumber.equal( + p2 + ); const p3 = new BN("12"); await slasher.setSecretRevealSlashPercent(p3); - ( - await slasher.secretRevealSlashPercent.call() - ).should.bignumber.equal(p3); + (await slasher.secretRevealSlashPercent()).should.bignumber.equal( + p3 + ); }); it("cannot set an invalid blacklist percentage", async () => { @@ -508,7 +496,7 @@ contract("DarknodeSlasher", (accounts: string[]) => { const caller = accounts[1]; const darknodeBond = new BN( - await dnr.getDarknodeBond.call(darknode.account.address) + await dnr.getDarknodeBond(darknode.account.address) ); // first slash should pass @@ -526,15 +514,13 @@ contract("DarknodeSlasher", (accounts: string[]) => { } ); - const slashPercent = new BN( - await slasher.maliciousSlashPercent.call() - ); + const slashPercent = new BN(await slasher.maliciousSlashPercent()); const slashedAmount = darknodeBond .div(new BN(100)) .mul(slashPercent); const newDarknodeBond = new BN( - await dnr.getDarknodeBond.call(darknode.account.address) + await dnr.getDarknodeBond(darknode.account.address) ); newDarknodeBond.should.bignumber.equal( darknodeBond.sub(slashedAmount) @@ -600,7 +586,7 @@ contract("DarknodeSlasher", (accounts: string[]) => { const caller = accounts[1]; const darknodeBond = new BN( - await dnr.getDarknodeBond.call(darknode.account.address) + await dnr.getDarknodeBond(darknode.account.address) ); // first slash should pass @@ -616,15 +602,13 @@ contract("DarknodeSlasher", (accounts: string[]) => { } ); - const slashPercent = new BN( - await slasher.maliciousSlashPercent.call() - ); + const slashPercent = new BN(await slasher.maliciousSlashPercent()); const slashedAmount = darknodeBond .div(new BN(100)) .mul(slashPercent); const newDarknodeBond = new BN( - await dnr.getDarknodeBond.call(darknode.account.address) + await dnr.getDarknodeBond(darknode.account.address) ); newDarknodeBond.should.bignumber.equal( darknodeBond.sub(slashedAmount) @@ -688,7 +672,7 @@ contract("DarknodeSlasher", (accounts: string[]) => { const caller = accounts[1]; const darknodeBond = new BN( - await dnr.getDarknodeBond.call(darknode.account.address) + await dnr.getDarknodeBond(darknode.account.address) ); // first slash should pass @@ -704,15 +688,13 @@ contract("DarknodeSlasher", (accounts: string[]) => { } ); - const slashPercent = new BN( - await slasher.maliciousSlashPercent.call() - ); + const slashPercent = new BN(await slasher.maliciousSlashPercent()); const slashedAmount = darknodeBond .div(new BN(100)) .mul(slashPercent); const newDarknodeBond = new BN( - await dnr.getDarknodeBond.call(darknode.account.address) + await dnr.getDarknodeBond(darknode.account.address) ); newDarknodeBond.should.bignumber.equal( darknodeBond.sub(slashedAmount) @@ -769,7 +751,7 @@ contract("DarknodeSlasher", (accounts: string[]) => { }); it("can update DarknodeRegistry", async () => { - const darknodeRegistry = await slasher.darknodeRegistry.call(); + const darknodeRegistry = await slasher.darknodeRegistry(); await slasher .updateDarknodeRegistry(NULL) .should.be.rejectedWith( diff --git a/test/ERC20WithFees.ts b/test/ERC20WithFees.ts index cc19d121..6f117a6f 100644 --- a/test/ERC20WithFees.ts +++ b/test/ERC20WithFees.ts @@ -55,26 +55,26 @@ contract("ERC20WithFees", accounts => { it("approve and transferFrom", async () => { // Get balances before depositing - const before = new BN(await token.balanceOf.call(accounts[0])); - const after = new BN(await token.balanceOf.call(mock.address)); + const before = new BN(await token.balanceOf(accounts[0])); + const after = new BN(await token.balanceOf(mock.address)); // Approve and deposit await token.approve(mock.address, VALUE); await mock.deposit(token.address, VALUE); // Compare balances after depositing - ( - await token.balanceOf.call(accounts[0]) - ).should.bignumber.equal(before.sub(new BN(VALUE))); - ( - await token.balanceOf.call(mock.address) - ).should.bignumber.equal(after.add(new BN(VALUE.sub(FEE)))); + (await token.balanceOf(accounts[0])).should.bignumber.equal( + before.sub(new BN(VALUE)) + ); + (await token.balanceOf(mock.address)).should.bignumber.equal( + after.add(new BN(VALUE.sub(FEE))) + ); }); it("transfer", async () => { // Get balances before depositing - const before = new BN(await token.balanceOf.call(accounts[0])); - const after = new BN(await token.balanceOf.call(mock.address)); + const before = new BN(await token.balanceOf(accounts[0])); + const after = new BN(await token.balanceOf(mock.address)); const NEW_VALUE = VALUE.sub(FEE); const NEW_FEE = NEW_VALUE.mul(new BN(testCase.fees)).div( @@ -85,20 +85,18 @@ contract("ERC20WithFees", accounts => { await mock.withdraw(token.address, NEW_VALUE); // Compare balances after depositing - ( - await token.balanceOf.call(accounts[0]) - ).should.bignumber.equal( + (await token.balanceOf(accounts[0])).should.bignumber.equal( before.add(new BN(NEW_VALUE.sub(NEW_FEE))) ); - ( - await token.balanceOf.call(mock.address) - ).should.bignumber.equal(after.sub(new BN(NEW_VALUE))); + (await token.balanceOf(mock.address)).should.bignumber.equal( + after.sub(new BN(NEW_VALUE)) + ); }); it("throws for invalid transferFrom", async () => { // Get balances before depositing - const before = new BN(await token.balanceOf.call(accounts[0])); - const after = new BN(await token.balanceOf.call(mock.address)); + const before = new BN(await token.balanceOf(accounts[0])); + const after = new BN(await token.balanceOf(mock.address)); // Approve and deposit await token.approve(mock.address, 0); @@ -109,18 +107,18 @@ contract("ERC20WithFees", accounts => { ); // Compare balances after depositing - ( - await token.balanceOf.call(accounts[0]) - ).should.bignumber.equal(before); - ( - await token.balanceOf.call(mock.address) - ).should.bignumber.equal(after); + (await token.balanceOf(accounts[0])).should.bignumber.equal( + before + ); + (await token.balanceOf(mock.address)).should.bignumber.equal( + after + ); }); it("throws for invalid transferFrom (with fee)", async () => { // Get balances before depositing - const before = new BN(await token.balanceOf.call(accounts[0])); - const after = new BN(await token.balanceOf.call(mock.address)); + const before = new BN(await token.balanceOf(accounts[0])); + const after = new BN(await token.balanceOf(mock.address)); // Approve and deposit await token.approve(mock.address, 0); @@ -131,18 +129,18 @@ contract("ERC20WithFees", accounts => { ); // Compare balances after depositing - ( - await token.balanceOf.call(accounts[0]) - ).should.bignumber.equal(before); - ( - await token.balanceOf.call(mock.address) - ).should.bignumber.equal(after); + (await token.balanceOf(accounts[0])).should.bignumber.equal( + before + ); + (await token.balanceOf(mock.address)).should.bignumber.equal( + after + ); }); it("throws for invalid transfer", async () => { // Get balances before depositing - const before = new BN(await token.balanceOf.call(accounts[0])); - const after = new BN(await token.balanceOf.call(mock.address)); + const before = new BN(await token.balanceOf(accounts[0])); + const after = new BN(await token.balanceOf(mock.address)); // Withdraw await mock @@ -152,12 +150,12 @@ contract("ERC20WithFees", accounts => { ); // Compare balances after depositing - ( - await token.balanceOf.call(accounts[0]) - ).should.bignumber.equal(before); - ( - await token.balanceOf.call(mock.address) - ).should.bignumber.equal(after); + (await token.balanceOf(accounts[0])).should.bignumber.equal( + before + ); + (await token.balanceOf(mock.address)).should.bignumber.equal( + after + ); }); it("throws for invalid approve", async () => { @@ -171,8 +169,8 @@ contract("ERC20WithFees", accounts => { ); // Get balances before transferring back - const before = new BN(await token.balanceOf.call(accounts[0])); - const after = new BN(await token.balanceOf.call(mock.address)); + const before = new BN(await token.balanceOf(accounts[0])); + const after = new BN(await token.balanceOf(mock.address)); // Approve twice without resetting allowance await mock.approve(token.address, NEW_VALUE); @@ -196,20 +194,18 @@ contract("ERC20WithFees", accounts => { ).div(new BN(1000)); // Compare balances after depositing - ( - await token.balanceOf.call(accounts[0]) - ).should.bignumber.equal( + (await token.balanceOf(accounts[0])).should.bignumber.equal( before.add(new BN(NEW_NEW_VALUE.sub(NEW_NEW_FEE))) ); - ( - await token.balanceOf.call(mock.address) - ).should.bignumber.equal(after.sub(new BN(NEW_NEW_VALUE))); + (await token.balanceOf(mock.address)).should.bignumber.equal( + after.sub(new BN(NEW_NEW_VALUE)) + ); }); it("throws for naive deposit if it has fees", async () => { // Get balances before depositing - const before = new BN(await token.balanceOf.call(accounts[0])); - const after = new BN(await token.balanceOf.call(mock.address)); + const before = new BN(await token.balanceOf(accounts[0])); + const after = new BN(await token.balanceOf(mock.address)); // Approve and deposit await token.approve(mock.address, VALUE); @@ -224,13 +220,11 @@ contract("ERC20WithFees", accounts => { await mock.naiveDeposit(token.address, VALUE); // Compare balances after depositing - ( - await token.balanceOf.call(accounts[0]) - ).should.bignumber.equal( + (await token.balanceOf(accounts[0])).should.bignumber.equal( before.sub(new BN(VALUE.sub(FEE))) ); ( - await token.balanceOf.call(mock.address) + await token.balanceOf(mock.address) ).should.bignumber.equal(after.add(new BN(VALUE))); } }); diff --git a/test/LinkedList.ts b/test/LinkedList.ts index 4c09121d..321a8d0d 100644 --- a/test/LinkedList.ts +++ b/test/LinkedList.ts @@ -21,48 +21,48 @@ contract("LinkedList", () => { it("can append", async () => { await linkedList.append(NODE1); - (await linkedList.isInList.call(NODE1)).should.equal(true); + (await linkedList.isInList(NODE1)).should.equal(true); }); it("can prepend", async () => { await linkedList.prepend(NODE2); - (await linkedList.previous.call(NODE1)).should.equal(NODE2); + (await linkedList.previous(NODE1)).should.equal(NODE2); }); it("can swap", async () => { await linkedList.swap(NODE1, NODE2); - (await linkedList.previous.call(NODE2)).should.equal(NODE1); + (await linkedList.previous(NODE2)).should.equal(NODE1); }); it("can insertAfter", async () => { await linkedList.insertAfter(NODE2, NODE4); - (await linkedList.next.call(NODE2)).should.equal(NODE4); + (await linkedList.next(NODE2)).should.equal(NODE4); }); it("can insertBefore", async () => { await linkedList.insertBefore(NODE4, NODE3); - (await linkedList.previous.call(NODE4)).should.equal(NODE3); + (await linkedList.previous(NODE4)).should.equal(NODE3); }); it("can remove", async () => { await linkedList.remove(NODE4); - (await linkedList.isInList.call(NODE4)).should.equal(false); + (await linkedList.isInList(NODE4)).should.equal(false); }); it("can get previous node of the given node", async () => { - (await linkedList.previous.call(NODE2)).should.equal(NODE1); + (await linkedList.previous(NODE2)).should.equal(NODE1); }); it("can get following node of the given node", async () => { - (await linkedList.next.call(NODE1)).should.equal(NODE2); + (await linkedList.next(NODE1)).should.equal(NODE2); }); it("can get the last node of the given list", async () => { - (await linkedList.end.call()).should.equal(NODE3); + (await linkedList.end()).should.equal(NODE3); }); it("can get the first node of the given list", async () => { - (await linkedList.begin.call()).should.equal(NODE1); + (await linkedList.begin()).should.equal(NODE1); }); it("should not add NULL", async () => { @@ -142,43 +142,43 @@ contract("LinkedList", () => { it("should not get previous node of the node if it is not in the list", async () => { // NOTE: The revert reason isn't available for .call - await linkedList.previous - .call(NOT_NODE1) + await linkedList + .previous(NOT_NODE1) .should.be.rejectedWith(/LinkedList: not in list/); // not in list }); it("should not get following node of the given node if it is not in the list", async () => { // NOTE: The revert reason isn't available for .call - await linkedList.next - .call(NOT_NODE1) + await linkedList + .next(NOT_NODE1) .should.be.rejectedWith(/LinkedList: not in list/); // not in list }); it("should revert when given incorrect count while retrieving elements in the list", async () => { - await linkedList.elements - .call(NODE1, 0) + await linkedList + .elements(NODE1, 0) .should.be.rejectedWith(/LinkedList: invalid count/); // invalid count }); it("should revert when given incorrect start address while retrieving elements in the list", async () => { - await linkedList.elements - .call(NODE4, 1) + await linkedList + .elements(NODE4, 1) .should.be.rejectedWith(/LinkedList: not in list/); // invalid count }); it("should return elements in the list", async () => { - let gateways = await linkedList.elements.call(NODE1, 1); + let gateways = await linkedList.elements(NODE1, 1); gateways[0].should.equal(NODE1); gateways.length.should.equal(1); - gateways = await linkedList.elements.call(NODE2, 2); + gateways = await linkedList.elements(NODE2, 2); gateways[0].should.equal(NODE2); gateways[1].should.equal(NODE3); gateways.length.should.equal(2); await linkedList.append(NODE4); - gateways = await linkedList.elements.call(NODE1, 10); + gateways = await linkedList.elements(NODE1, 10); gateways[0].should.equal(NODE1); gateways[3].should.equal(NODE4); gateways.length.should.equal(10); diff --git a/test/Protocol.ts b/test/Protocol.ts index 2738a38f..adc06c78 100644 --- a/test/Protocol.ts +++ b/test/Protocol.ts @@ -20,13 +20,13 @@ contract("Protocol", ([owner, otherAccount]: string[]) => { }); it("Address getters", async () => { - (await protocol.getContract.call("DarknodeRegistry")).should.equal( + (await protocol.getContract("DarknodeRegistry")).should.equal( dnr.address ); }); it("Protocol owner", async () => { - (await protocol.owner.call()).should.equal(owner); + (await protocol.owner()).should.equal(owner); await protocol .transferOwnership(otherAccount, { from: otherAccount }) @@ -34,16 +34,16 @@ contract("Protocol", ([owner, otherAccount]: string[]) => { await protocol.transferOwnership(otherAccount); - (await protocol.owner.call()).should.equal(owner); + (await protocol.owner()).should.equal(owner); await protocol.claimOwnership({ from: otherAccount }); - (await protocol.owner.call()).should.equal(otherAccount); + (await protocol.owner()).should.equal(otherAccount); await protocol.transferOwnership(owner, { from: otherAccount }); await protocol.claimOwnership({ from: owner }); - (await protocol.owner.call()).should.equal(owner); + (await protocol.owner()).should.equal(owner); }); it("Update DarknodeRegistry address", async () => { @@ -53,13 +53,11 @@ contract("Protocol", ([owner, otherAccount]: string[]) => { await protocol.updateContract("DarknodeRegistry", NULL); - (await protocol.getContract.call("DarknodeRegistry")).should.equal( - NULL - ); + (await protocol.getContract("DarknodeRegistry")).should.equal(NULL); await protocol.updateContract("DarknodeRegistry", dnr.address); - (await protocol.getContract.call("DarknodeRegistry")).should.equal( + (await protocol.getContract("DarknodeRegistry")).should.equal( dnr.address ); }); diff --git a/test/String.ts b/test/String.ts index 02adaf69..d3868c65 100644 --- a/test/String.ts +++ b/test/String.ts @@ -13,13 +13,11 @@ contract("String", accounts => { }); it("can add strings", async () => { - (await StringInstance.add4.call("1", "2", "3", "4")).should.equal( - "1234" - ); + (await StringInstance.add4("1", "2", "3", "4")).should.equal("1234"); }); it("can convert addresses to hex strings", async () => { - (await StringInstance.fromAddress.call(accounts[0])).should.equal( + (await StringInstance.fromAddress(accounts[0])).should.equal( accounts[0].toLowerCase() ); }); @@ -27,7 +25,7 @@ contract("String", accounts => { it("can convert bytes32 to hex strings", async () => { const bytes32 = randomBytes(32); - (await StringInstance.fromBytes32.call(bytes32)).should.equal( + (await StringInstance.fromBytes32(bytes32)).should.equal( bytes32.toLowerCase() ); }); @@ -48,7 +46,7 @@ contract("String", accounts => { }); const testNumString = async (numString: string) => { - (await StringInstance.fromUint.call(new BN(numString))).should.equal( + (await StringInstance.fromUint(new BN(numString))).should.equal( numString ); }; diff --git a/test/Validate.ts b/test/Validate.ts index 4905e964..cb014443 100644 --- a/test/Validate.ts +++ b/test/Validate.ts @@ -51,14 +51,7 @@ contract("Validate", (accounts: string[]) => { msg.should.be.equal( "Secret(ShamirShare(3,7,S256N(10),S256PrivKey(S256N(81804755166950992694975918889421430561708705428859269028015361660142001064486),S256P(90693014804679621771165998959262552553277008236216558633727798007697162314221),S256P(65631258835468800295340604864107498262349560547191423452833833494209803247319))))" ); - const rawMsg = await validateTest.secretMessage.call( - a, - b, - c, - d, - e, - f - ); + const rawMsg = await validateTest.secretMessage(a, b, c, d, e, f); msg.should.be.equal(web3.utils.hexToAscii(rawMsg)); }); @@ -74,7 +67,7 @@ contract("Validate", (accounts: string[]) => { blockhash, validRound ); - const rawMsg = await validateTest.proposeMessage.call( + const rawMsg = await validateTest.proposeMessage( height, round, hexBlockhash, @@ -89,7 +82,7 @@ contract("Validate", (accounts: string[]) => { const blockhash = "XTsJ2rO2yD47tg3JfmakVRXLzeou4SMtZvsMc6lkr6o"; const hexBlockhash = web3.utils.asciiToHex(blockhash); const prevoteMsg = generatePrevoteMessage(height, round, blockhash); - const rawMsg = await validateTest.prevoteMessage.call( + const rawMsg = await validateTest.prevoteMessage( height, round, hexBlockhash @@ -107,7 +100,7 @@ contract("Validate", (accounts: string[]) => { round, blockhash ); - const rawMsg = await validateTest.precommitMessage.call( + const rawMsg = await validateTest.precommitMessage( height, round, hexBlockhash @@ -140,7 +133,7 @@ contract("Validate", (accounts: string[]) => { "hex" )}${sig.v.toString(16)}` ); - const signer = await validateTest.recoverPropose.call( + const signer = await validateTest.recoverPropose( height, round, hexBlockhash, @@ -167,7 +160,7 @@ contract("Validate", (accounts: string[]) => { "hex" )}${sig.v.toString(16)}` ); - const signer = await validateTest.recoverPrevote.call( + const signer = await validateTest.recoverPrevote( height, round, hexBlockhash, @@ -197,7 +190,7 @@ contract("Validate", (accounts: string[]) => { "hex" )}${sig.v.toString(16)}` ); - const signer = await validateTest.recoverPrecommit.call( + const signer = await validateTest.recoverPrecommit( height, round, hexBlockhash, @@ -231,7 +224,7 @@ contract("Validate", (accounts: string[]) => { "hex" )}${sig.v.toString(16)}` ); - const signer = await validateTest.recoverSecret.call( + const signer = await validateTest.recoverSecret( a, b, c, diff --git a/test/helper/testUtils.ts b/test/helper/testUtils.ts index 5348f7aa..11562f81 100644 --- a/test/helper/testUtils.ts +++ b/test/helper/testUtils.ts @@ -69,14 +69,14 @@ export const randomAddress = (): string => { }; const increaseTimeHelper = async (seconds: number) => { - await new Promise((resolve, reject) => { + await new Promise((resolve, reject) => { // tslint:disable-next-line: no-floating-promises return web3.currentProvider.send( { jsonrpc: "2.0", method: "evm_increaseTime", params: [seconds], - id: 0 + id: 0, } as any, ((err: Error) => { if (err) { @@ -88,7 +88,7 @@ const increaseTimeHelper = async (seconds: number) => { jsonrpc: "2.0", method: "evm_mine", params: [], - id: new Date().getSeconds() + id: new Date().getSeconds(), } as any, ((innerErr: Error) => { if (innerErr) { @@ -123,7 +123,7 @@ export const increaseTime = async (seconds: number) => { export async function waitForEpoch(dnr: DarknodeRegistryLogicV1Instance) { // const timeout = MINIMUM_EPOCH_INTERVAL_SECONDS; const timeout = new BN( - (await dnr.minimumEpochInterval.call()).toString() + (await dnr.minimumEpochInterval()).toString() ).toNumber(); while (true) { // Must be an on-chain call, or the time won't be updated @@ -155,8 +155,8 @@ export const deployProxy = async ( encodeCallData( web3, "initialize", - params.map(p => p.type), - params.map(p => p.value) + params.map((p) => p.type), + params.map((p) => p.value) ), options ); @@ -170,7 +170,7 @@ export const sigToString = (sig: ECDSASignature) => { }; export const sleep = (ms: number) => - new Promise(resolve => setTimeout(resolve, ms)); + new Promise((resolve) => setTimeout(resolve, ms)); export const HOURS = 60 * 60; export const DAYS = 24 * HOURS; @@ -184,7 +184,7 @@ export const getBalance = async ( } else { const tokenContract = await ERC20.at(token); return new BigNumber( - (await tokenContract.balanceOf.call(address)).toString() + (await tokenContract.balanceOf(address)).toString() ); } }; @@ -194,7 +194,7 @@ export const getSymbol = async (token: string): Promise => { return "ETH"; } else { const tokenContract = await ERC20.at(token); - return await tokenContract.symbol.call(); + return await tokenContract.symbol(); } }; @@ -203,7 +203,7 @@ export const getDecimals = async (token: string): Promise => { return 18; } else { const tokenContract = await ERC20.at(token); - return parseInt((await tokenContract.decimals.call()).toString(), 10); + return parseInt((await tokenContract.decimals()).toString(), 10); } }; @@ -214,11 +214,11 @@ export const transferToken = async ( ): Promise => { if (token === ETHEREUM) { const from = (await web3.eth.getAccounts())[0]; - return ((await web3.eth.sendTransaction({ + return (await web3.eth.sendTransaction({ to, value: amount.toString(), - from - })) as unknown) as TransactionReceipt; + from, + })) as unknown as TransactionReceipt; } else { const tokenContract = await ERC20.at(token); return (await tokenContract.transfer(to, amount.toString())).receipt; @@ -235,7 +235,7 @@ export const toBN = < inp: X ): X extends string | number | BN ? BigNumber : Promise => { if (isPromise(inp)) { - return inp.then(x => new BigNumber(x.toString())) as X extends + return inp.then((x) => new BigNumber(x.toString())) as X extends | string | number | BN diff --git a/tsconfig.json b/tsconfig.json index 27a62935..2eb034e4 100644 --- a/tsconfig.json +++ b/tsconfig.json @@ -1,8 +1,8 @@ { "compilerOptions": { - "typeRoots": ["./types"], + "typeRoots": ["types"], "lib": ["es2015"], - "types": ["node", "mocha", "truffle-contracts", "chai"], + "types": ["node", "mocha", "truffle-typings", "chai"], "module": "commonjs", "noImplicitAny": true, "noImplicitReturns": true, @@ -10,5 +10,9 @@ "preserveConstEnums": true, "sourceMap": true, "esModuleInterop": true - } + }, + "include": [ + "test", + "types" + ] } diff --git a/yarn.lock b/yarn.lock index aedfb448..7458eb85 100644 --- a/yarn.lock +++ b/yarn.lock @@ -2,6 +2,15 @@ # yarn lockfile v1 +"101@^1.0.0", "101@^1.2.0": + version "1.6.3" + resolved "https://registry.yarnpkg.com/101/-/101-1.6.3.tgz#9071196e60c47e4ce327075cf49c0ad79bd822fd" + integrity sha512-4dmQ45yY0Dx24Qxp+zAsNLlMF6tteCyfVzgbulvSyC7tCyd3V8sW76sS0tHq8NpcbXfWTKasfyfzU1Kd86oKzw== + dependencies: + clone "^1.0.2" + deep-eql "^0.1.3" + keypather "^1.10.2" + "@apollo/client@^3.1.5": version "3.3.11" resolved "https://registry.yarnpkg.com/@apollo/client/-/client-3.3.11.tgz#125051405e83dc899d471d43b79fd6045d92a802" @@ -498,6 +507,13 @@ dependencies: regenerator-runtime "^0.13.4" +"@babel/runtime@^7.12.1", "@babel/runtime@^7.4.4", "@babel/runtime@^7.8.7": + version "7.15.3" + resolved "https://registry.yarnpkg.com/@babel/runtime/-/runtime-7.15.3.tgz#2e1c2880ca118e5b2f9988322bd8a7656a32502b" + integrity sha512-OvwMLqNXkCXSz1kSm58sEsNuhqOx/fKpnUnKnFB5v8uDda5bLNEHNgKPvhDN6IU0LDcnHQ90LlJ0Q6jnyBSIBA== + dependencies: + regenerator-runtime "^0.13.4" + "@babel/runtime@^7.3.1": version "7.8.4" resolved "https://registry.yarnpkg.com/@babel/runtime/-/runtime-7.8.4.tgz#d79f5a2040f7caa24d53e563aad49cbc05581308" @@ -562,47 +578,151 @@ lodash "^4.17.19" to-fast-properties "^2.0.0" -"@ethersproject/abi@5.0.0-beta.142": - version "5.0.0-beta.142" - resolved "https://registry.yarnpkg.com/@ethersproject/abi/-/abi-5.0.0-beta.142.tgz#cde0ced7daa2fbc98e35a2c31203331907e84a39" - integrity sha512-vJ2V9fPNzi+8iutY4sjy6mgogkJtiGsd9hmpa1bjnGW6qnHOEkAV1fzVpvT002LlnjFgqgtzuLBDZob6oU7i8w== - dependencies: - "@ethersproject/address" ">=5.0.0-beta.128" - "@ethersproject/bignumber" ">=5.0.0-beta.130" - "@ethersproject/bytes" ">=5.0.0-beta.129" - "@ethersproject/constants" ">=5.0.0-beta.128" - "@ethersproject/hash" ">=5.0.0-beta.128" - "@ethersproject/keccak256" ">=5.0.0-beta.127" - "@ethersproject/logger" ">=5.0.0-beta.129" - "@ethersproject/properties" ">=5.0.0-beta.131" - "@ethersproject/strings" ">=5.0.0-beta.130" - -"@ethersproject/abi@5.0.0-beta.153": - version "5.0.0-beta.153" - resolved "https://registry.yarnpkg.com/@ethersproject/abi/-/abi-5.0.0-beta.153.tgz#43a37172b33794e4562999f6e2d555b7599a8eee" - integrity sha512-aXweZ1Z7vMNzJdLpR1CZUAIgnwjrZeUSvN9syCwlBaEBUFJmFY+HHnfuTI5vIhVs/mRkfJVrbEyl51JZQqyjAg== - dependencies: - "@ethersproject/address" ">=5.0.0-beta.128" - "@ethersproject/bignumber" ">=5.0.0-beta.130" - "@ethersproject/bytes" ">=5.0.0-beta.129" - "@ethersproject/constants" ">=5.0.0-beta.128" - "@ethersproject/hash" ">=5.0.0-beta.128" - "@ethersproject/keccak256" ">=5.0.0-beta.127" - "@ethersproject/logger" ">=5.0.0-beta.129" - "@ethersproject/properties" ">=5.0.0-beta.131" - "@ethersproject/strings" ">=5.0.0-beta.130" - -"@ethersproject/address@>=5.0.0-beta.128": - version "5.0.0-beta.134" - resolved "https://registry.yarnpkg.com/@ethersproject/address/-/address-5.0.0-beta.134.tgz#9c1790c87b763dc547ac12e2dbc9fa78d0799a71" - integrity sha512-FHhUVJTUIg2pXvOOhIt8sB1cQbcwrzZKzf9CPV7JM1auli20nGoYhyMFYGK7u++GXzTMJduIkU1OwlIBupewDw== - dependencies: - "@ethersproject/bignumber" ">=5.0.0-beta.130" - "@ethersproject/bytes" ">=5.0.0-beta.129" - "@ethersproject/keccak256" ">=5.0.0-beta.127" - "@ethersproject/logger" ">=5.0.0-beta.129" - "@ethersproject/rlp" ">=5.0.0-beta.126" - bn.js "^4.4.0" +"@consento/sync-randombytes@^1.0.4", "@consento/sync-randombytes@^1.0.5": + version "1.0.5" + resolved "https://registry.yarnpkg.com/@consento/sync-randombytes/-/sync-randombytes-1.0.5.tgz#5be6bc58c6a6fa6e09f04cc684d037e29e6c28d5" + integrity sha512-mPJ2XvrTLQGEdhleDuSIkWtVWnvmhREOC1FjorV1nlK49t/52Z9X1d618gTj6nlQghRLiYvcd8oL4vZ2YZuDIQ== + dependencies: + buffer "^5.4.3" + seedrandom "^3.0.5" + +"@cspotcode/source-map-consumer@0.8.0": + version "0.8.0" + resolved "https://registry.yarnpkg.com/@cspotcode/source-map-consumer/-/source-map-consumer-0.8.0.tgz#33bf4b7b39c178821606f669bbc447a6a629786b" + integrity sha512-41qniHzTU8yAGbCp04ohlmSrZf8bkf/iJsl3V0dRGsQN/5GFfx+LbCSsCpp2gqrqjTVg/K6O8ycoV35JIwAzAg== + +"@cspotcode/source-map-support@0.6.1": + version "0.6.1" + resolved "https://registry.yarnpkg.com/@cspotcode/source-map-support/-/source-map-support-0.6.1.tgz#118511f316e2e87ee4294761868e254d3da47960" + integrity sha512-DX3Z+T5dt1ockmPdobJS/FAsQPW4V4SrWEhD2iYQT2Cb2tQsiMnYxrcUH9By/Z3B+v0S5LMBkQtV/XOBbpLEOg== + dependencies: + "@cspotcode/source-map-consumer" "0.8.0" + +"@ensdomains/address-encoder@^0.1.7": + version "0.1.9" + resolved "https://registry.yarnpkg.com/@ensdomains/address-encoder/-/address-encoder-0.1.9.tgz#f948c485443d9ef7ed2c0c4790e931c33334d02d" + 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.3": + version "0.4.3" + resolved "https://registry.yarnpkg.com/@ensdomains/ens/-/ens-0.4.3.tgz#f4a6b55146fe526c9a50e13f373bf90d36ca94dc" + integrity sha512-btC+fGze//ml8SMNCx5DgwM8+kG2t+qDCZrqlL/2+PV4CNxnRIpR3egZ49D9FqS52PFoYLmz6MaQfl7AO3pUMA== + dependencies: + bluebird "^3.5.2" + eth-ens-namehash "^2.0.8" + ethereumjs-testrpc "^6.0.3" + ganache-cli "^6.1.0" + solc "^0.4.20" + testrpc "0.0.1" + web3-utils "^1.0.0-beta.31" + +"@ensdomains/ensjs@^2.0.1": + version "2.0.1" + resolved "https://registry.yarnpkg.com/@ensdomains/ensjs/-/ensjs-2.0.1.tgz#c27438f9ca074825ddb08430988c7decf2062a91" + integrity sha512-gZLntzE1xqPNkPvaHdJlV5DXHms8JbHBwrXc2xNrL1AylERK01Lj/txCCZyVQqFd3TvUO1laDbfUv8VII0qrjg== + dependencies: + "@babel/runtime" "^7.4.4" + "@ensdomains/address-encoder" "^0.1.7" + "@ensdomains/ens" "0.4.3" + "@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" + +"@ensdomains/resolver@0.2.4": + version "0.2.4" + resolved "https://registry.yarnpkg.com/@ensdomains/resolver/-/resolver-0.2.4.tgz#c10fe28bf5efbf49bff4666d909aed0265efbc89" + integrity sha512-bvaTH34PMCbv6anRa9I/0zjLJgY4EuznbEMgbV77JBCQ9KNC46rzi0avuxpOfu+xDjPEtSFGqVEOr5GlUSGudA== + +"@ethereumjs/common@^2.3.0", "@ethereumjs/common@^2.4.0": + version "2.4.0" + resolved "https://registry.yarnpkg.com/@ethereumjs/common/-/common-2.4.0.tgz#2d67f6e6ba22246c5c89104e6b9a119fb3039766" + integrity sha512-UdkhFWzWcJCZVsj1O/H8/oqj/0RVYjLc1OhPjBrQdALAkQHpCp8xXI4WLnuGTADqTdJZww0NtgwG+TRPkXt27w== + dependencies: + crc-32 "^1.2.0" + ethereumjs-util "^7.1.0" + +"@ethereumjs/tx@^3.2.1": + version "3.3.0" + resolved "https://registry.yarnpkg.com/@ethereumjs/tx/-/tx-3.3.0.tgz#14ed1b7fa0f28e1cd61e3ecbdab824205f6a4378" + integrity sha512-yTwEj2lVzSMgE6Hjw9Oa1DZks/nKTWM8Wn4ykDNapBPua2f4nXO3qKnni86O6lgDj5fVNRqbDsD0yy7/XNGDEA== + dependencies: + "@ethereumjs/common" "^2.4.0" + ethereumjs-util "^7.1.0" + +"@ethersproject/abi@5.0.7": + version "5.0.7" + resolved "https://registry.yarnpkg.com/@ethersproject/abi/-/abi-5.0.7.tgz#79e52452bd3ca2956d0e1c964207a58ad1a0ee7b" + integrity sha512-Cqktk+hSIckwP/W8O47Eef60VwmoSC/L3lY0+dIBhQPCNn9E4V7rwmm2aFrNRRDJfFlGuZ1khkQUOc3oBX+niw== + dependencies: + "@ethersproject/address" "^5.0.4" + "@ethersproject/bignumber" "^5.0.7" + "@ethersproject/bytes" "^5.0.4" + "@ethersproject/constants" "^5.0.4" + "@ethersproject/hash" "^5.0.4" + "@ethersproject/keccak256" "^5.0.3" + "@ethersproject/logger" "^5.0.5" + "@ethersproject/properties" "^5.0.3" + "@ethersproject/strings" "^5.0.4" + +"@ethersproject/abi@5.4.0", "@ethersproject/abi@^5.0.0-beta.146", "@ethersproject/abi@^5.4.0": + version "5.4.0" + resolved "https://registry.yarnpkg.com/@ethersproject/abi/-/abi-5.4.0.tgz#a6d63bdb3672f738398846d4279fa6b6c9818242" + integrity sha512-9gU2H+/yK1j2eVMdzm6xvHSnMxk8waIHQGYCZg5uvAyH0rsAzxkModzBSpbAkAuhKFEovC2S9hM4nPuLym8IZw== + dependencies: + "@ethersproject/address" "^5.4.0" + "@ethersproject/bignumber" "^5.4.0" + "@ethersproject/bytes" "^5.4.0" + "@ethersproject/constants" "^5.4.0" + "@ethersproject/hash" "^5.4.0" + "@ethersproject/keccak256" "^5.4.0" + "@ethersproject/logger" "^5.4.0" + "@ethersproject/properties" "^5.4.0" + "@ethersproject/strings" "^5.4.0" + +"@ethersproject/abstract-provider@5.4.1", "@ethersproject/abstract-provider@^5.4.0": + version "5.4.1" + resolved "https://registry.yarnpkg.com/@ethersproject/abstract-provider/-/abstract-provider-5.4.1.tgz#e404309a29f771bd4d28dbafadcaa184668c2a6e" + integrity sha512-3EedfKI3LVpjSKgAxoUaI+gB27frKsxzm+r21w9G60Ugk+3wVLQwhi1LsEJAKNV7WoZc8CIpNrATlL1QFABjtQ== + dependencies: + "@ethersproject/bignumber" "^5.4.0" + "@ethersproject/bytes" "^5.4.0" + "@ethersproject/logger" "^5.4.0" + "@ethersproject/networks" "^5.4.0" + "@ethersproject/properties" "^5.4.0" + "@ethersproject/transactions" "^5.4.0" + "@ethersproject/web" "^5.4.0" + +"@ethersproject/abstract-signer@5.4.1", "@ethersproject/abstract-signer@^5.4.0": + version "5.4.1" + resolved "https://registry.yarnpkg.com/@ethersproject/abstract-signer/-/abstract-signer-5.4.1.tgz#e4e9abcf4dd4f1ba0db7dff9746a5f78f355ea81" + integrity sha512-SkkFL5HVq1k4/25dM+NWP9MILgohJCgGv5xT5AcRruGz4ILpfHeBtO/y6j+Z3UN/PAjDeb4P7E51Yh8wcGNLGA== + dependencies: + "@ethersproject/abstract-provider" "^5.4.0" + "@ethersproject/bignumber" "^5.4.0" + "@ethersproject/bytes" "^5.4.0" + "@ethersproject/logger" "^5.4.0" + "@ethersproject/properties" "^5.4.0" + +"@ethersproject/address@5.4.0", "@ethersproject/address@^5.0.4", "@ethersproject/address@^5.4.0": + version "5.4.0" + resolved "https://registry.yarnpkg.com/@ethersproject/address/-/address-5.4.0.tgz#ba2d00a0f8c4c0854933b963b9a3a9f6eb4a37a3" + integrity sha512-SD0VgOEkcACEG/C6xavlU1Hy3m5DGSXW3CUHkaaEHbAPPsgi0coP5oNPsxau8eTlZOk/bpa/hKeCNoK5IzVI2Q== + dependencies: + "@ethersproject/bignumber" "^5.4.0" + "@ethersproject/bytes" "^5.4.0" + "@ethersproject/keccak256" "^5.4.0" + "@ethersproject/logger" "^5.4.0" + "@ethersproject/rlp" "^5.4.0" "@ethersproject/address@^5.0.9": version "5.0.11" @@ -615,15 +735,29 @@ "@ethersproject/logger" "^5.0.8" "@ethersproject/rlp" "^5.0.7" -"@ethersproject/bignumber@>=5.0.0-beta.130": - version "5.0.0-beta.135" - resolved "https://registry.yarnpkg.com/@ethersproject/bignumber/-/bignumber-5.0.0-beta.135.tgz#9d464df8967f5d314d109497e4f25ab82314c098" - integrity sha512-7Tw2NgHzK7o+70bwyoaIZCbRycz+saWNU0sLOYnis3qYXwYsdTL+Rm0PMGA2v4jyHJt7BPS2pxGww+akVXbX+w== +"@ethersproject/base64@5.4.0", "@ethersproject/base64@^5.4.0": + version "5.4.0" + resolved "https://registry.yarnpkg.com/@ethersproject/base64/-/base64-5.4.0.tgz#7252bf65295954c9048c7ca5f43e5c86441b2a9a" + integrity sha512-CjQw6E17QDSSC5jiM9YpF7N1aSCHmYGMt9bWD8PWv6YPMxjsys2/Q8xLrROKI3IWJ7sFfZ8B3flKDTM5wlWuZQ== dependencies: - "@ethersproject/bytes" ">=5.0.0-beta.129" - "@ethersproject/logger" ">=5.0.0-beta.129" - "@ethersproject/properties" ">=5.0.0-beta.131" - bn.js "^4.4.0" + "@ethersproject/bytes" "^5.4.0" + +"@ethersproject/basex@5.4.0", "@ethersproject/basex@^5.4.0": + version "5.4.0" + resolved "https://registry.yarnpkg.com/@ethersproject/basex/-/basex-5.4.0.tgz#0a2da0f4e76c504a94f2b21d3161ed9438c7f8a6" + integrity sha512-J07+QCVJ7np2bcpxydFVf/CuYo9mZ7T73Pe7KQY4c1lRlrixMeblauMxHXD0MPwFmUHZIILDNViVkykFBZylbg== + dependencies: + "@ethersproject/bytes" "^5.4.0" + "@ethersproject/properties" "^5.4.0" + +"@ethersproject/bignumber@5.4.1", "@ethersproject/bignumber@^5.0.7", "@ethersproject/bignumber@^5.4.0": + version "5.4.1" + resolved "https://registry.yarnpkg.com/@ethersproject/bignumber/-/bignumber-5.4.1.tgz#64399d3b9ae80aa83d483e550ba57ea062c1042d" + integrity sha512-fJhdxqoQNuDOk6epfM7yD6J8Pol4NUCy1vkaGAkuujZm0+lNow//MKu1hLhRiYV4BsOHyBv5/lsTjF+7hWwhJg== + dependencies: + "@ethersproject/bytes" "^5.4.0" + "@ethersproject/logger" "^5.4.0" + bn.js "^4.11.9" "@ethersproject/bignumber@^5.0.13": version "5.0.15" @@ -634,12 +768,12 @@ "@ethersproject/logger" "^5.0.8" bn.js "^4.4.0" -"@ethersproject/bytes@>=5.0.0-beta.129": - version "5.0.0-beta.136" - resolved "https://registry.yarnpkg.com/@ethersproject/bytes/-/bytes-5.0.0-beta.136.tgz#3aa651df43b44c9e355eba993d8ab4440cb964bb" - integrity sha512-yoi5Ul16ScMHVNsf+oCDGaAnj+rtXxITcneXPeDl8h0rk1VNIqb1WKKvooD5WtM0oAglyauuDahHIF+4+5G/Sg== +"@ethersproject/bytes@5.4.0", "@ethersproject/bytes@^5.0.4", "@ethersproject/bytes@^5.4.0": + version "5.4.0" + resolved "https://registry.yarnpkg.com/@ethersproject/bytes/-/bytes-5.4.0.tgz#56fa32ce3bf67153756dbaefda921d1d4774404e" + integrity sha512-H60ceqgTHbhzOj4uRc/83SCN9d+BSUnOkrr2intevqdtEMO1JFVZ1XL84OEZV+QjV36OaZYxtnt4lGmxcGsPfA== dependencies: - "@ethersproject/logger" ">=5.0.0-beta.129" + "@ethersproject/logger" "^5.4.0" "@ethersproject/bytes@^5.0.9": version "5.0.11" @@ -648,12 +782,12 @@ dependencies: "@ethersproject/logger" "^5.0.8" -"@ethersproject/constants@>=5.0.0-beta.128": - version "5.0.0-beta.133" - resolved "https://registry.yarnpkg.com/@ethersproject/constants/-/constants-5.0.0-beta.133.tgz#af4ccd7232f3ed73aebe066a695ede32c497a394" - integrity sha512-VCTpk3AF00mlWQw1vg+fI6qCo0qO5EVWK574t4HNBKW6X748jc9UJPryKUz9JgZ64ZQupyLM92wHilsG/YTpNQ== +"@ethersproject/constants@5.4.0", "@ethersproject/constants@^5.0.4", "@ethersproject/constants@^5.4.0": + version "5.4.0" + resolved "https://registry.yarnpkg.com/@ethersproject/constants/-/constants-5.4.0.tgz#ee0bdcb30bf1b532d2353c977bf2ef1ee117958a" + integrity sha512-tzjn6S7sj9+DIIeKTJLjK9WGN2Tj0P++Z8ONEIlZjyoTkBuODN+0VfhAyYksKi43l1Sx9tX2VlFfzjfmr5Wl3Q== dependencies: - "@ethersproject/bignumber" ">=5.0.0-beta.130" + "@ethersproject/bignumber" "^5.4.0" "@ethersproject/constants@^5.0.8": version "5.0.10" @@ -662,22 +796,79 @@ dependencies: "@ethersproject/bignumber" "^5.0.13" -"@ethersproject/hash@>=5.0.0-beta.128": - version "5.0.0-beta.133" - resolved "https://registry.yarnpkg.com/@ethersproject/hash/-/hash-5.0.0-beta.133.tgz#bda0c74454a82359642033f27c5157963495fcdf" - integrity sha512-tfF11QxFlJCy92rMtUZ0kImchWhlYXkN5Gj5cYfTcCdWEUKwNq1LljDnlrjV2JabO6s5enb8uiUj4RBTo2+Rgw== - dependencies: - "@ethersproject/bytes" ">=5.0.0-beta.129" - "@ethersproject/keccak256" ">=5.0.0-beta.127" - "@ethersproject/logger" ">=5.0.0-beta.129" - "@ethersproject/strings" ">=5.0.0-beta.130" +"@ethersproject/contracts@5.4.1": + version "5.4.1" + resolved "https://registry.yarnpkg.com/@ethersproject/contracts/-/contracts-5.4.1.tgz#3eb4f35b7fe60a962a75804ada2746494df3e470" + integrity sha512-m+z2ZgPy4pyR15Je//dUaymRUZq5MtDajF6GwFbGAVmKz/RF+DNIPwF0k5qEcL3wPGVqUjFg2/krlCRVTU4T5w== + dependencies: + "@ethersproject/abi" "^5.4.0" + "@ethersproject/abstract-provider" "^5.4.0" + "@ethersproject/abstract-signer" "^5.4.0" + "@ethersproject/address" "^5.4.0" + "@ethersproject/bignumber" "^5.4.0" + "@ethersproject/bytes" "^5.4.0" + "@ethersproject/constants" "^5.4.0" + "@ethersproject/logger" "^5.4.0" + "@ethersproject/properties" "^5.4.0" + "@ethersproject/transactions" "^5.4.0" + +"@ethersproject/hash@5.4.0", "@ethersproject/hash@^5.0.4", "@ethersproject/hash@^5.4.0": + version "5.4.0" + resolved "https://registry.yarnpkg.com/@ethersproject/hash/-/hash-5.4.0.tgz#d18a8e927e828e22860a011f39e429d388344ae0" + integrity sha512-xymAM9tmikKgbktOCjW60Z5sdouiIIurkZUr9oW5NOex5uwxrbsYG09kb5bMcNjlVeJD3yPivTNzViIs1GCbqA== + dependencies: + "@ethersproject/abstract-signer" "^5.4.0" + "@ethersproject/address" "^5.4.0" + "@ethersproject/bignumber" "^5.4.0" + "@ethersproject/bytes" "^5.4.0" + "@ethersproject/keccak256" "^5.4.0" + "@ethersproject/logger" "^5.4.0" + "@ethersproject/properties" "^5.4.0" + "@ethersproject/strings" "^5.4.0" + +"@ethersproject/hdnode@5.4.0", "@ethersproject/hdnode@^5.4.0": + version "5.4.0" + resolved "https://registry.yarnpkg.com/@ethersproject/hdnode/-/hdnode-5.4.0.tgz#4bc9999b9a12eb5ce80c5faa83114a57e4107cac" + integrity sha512-pKxdS0KAaeVGfZPp1KOiDLB0jba11tG6OP1u11QnYfb7pXn6IZx0xceqWRr6ygke8+Kw74IpOoSi7/DwANhy8Q== + dependencies: + "@ethersproject/abstract-signer" "^5.4.0" + "@ethersproject/basex" "^5.4.0" + "@ethersproject/bignumber" "^5.4.0" + "@ethersproject/bytes" "^5.4.0" + "@ethersproject/logger" "^5.4.0" + "@ethersproject/pbkdf2" "^5.4.0" + "@ethersproject/properties" "^5.4.0" + "@ethersproject/sha2" "^5.4.0" + "@ethersproject/signing-key" "^5.4.0" + "@ethersproject/strings" "^5.4.0" + "@ethersproject/transactions" "^5.4.0" + "@ethersproject/wordlists" "^5.4.0" + +"@ethersproject/json-wallets@5.4.0", "@ethersproject/json-wallets@^5.4.0": + version "5.4.0" + resolved "https://registry.yarnpkg.com/@ethersproject/json-wallets/-/json-wallets-5.4.0.tgz#2583341cfe313fc9856642e8ace3080154145e95" + integrity sha512-igWcu3fx4aiczrzEHwG1xJZo9l1cFfQOWzTqwRw/xcvxTk58q4f9M7cjh51EKphMHvrJtcezJ1gf1q1AUOfEQQ== + dependencies: + "@ethersproject/abstract-signer" "^5.4.0" + "@ethersproject/address" "^5.4.0" + "@ethersproject/bytes" "^5.4.0" + "@ethersproject/hdnode" "^5.4.0" + "@ethersproject/keccak256" "^5.4.0" + "@ethersproject/logger" "^5.4.0" + "@ethersproject/pbkdf2" "^5.4.0" + "@ethersproject/properties" "^5.4.0" + "@ethersproject/random" "^5.4.0" + "@ethersproject/strings" "^5.4.0" + "@ethersproject/transactions" "^5.4.0" + aes-js "3.0.0" + scrypt-js "3.0.1" -"@ethersproject/keccak256@>=5.0.0-beta.127": - version "5.0.0-beta.131" - resolved "https://registry.yarnpkg.com/@ethersproject/keccak256/-/keccak256-5.0.0-beta.131.tgz#b5778723ee75208065b9b9ad30c71d480f41bb31" - integrity sha512-KQnqMwGV0IMOjAr/UTFO8DuLrmN1uaMvcV3zh9hiXhh3rCuY+WXdeUh49w1VQ94kBKmaP0qfGb7z4SdhUWUHjw== +"@ethersproject/keccak256@5.4.0", "@ethersproject/keccak256@^5.0.3", "@ethersproject/keccak256@^5.4.0": + version "5.4.0" + resolved "https://registry.yarnpkg.com/@ethersproject/keccak256/-/keccak256-5.4.0.tgz#7143b8eea4976080241d2bd92e3b1f1bf7025318" + integrity sha512-FBI1plWet+dPUvAzPAeHzRKiPpETQzqSUWR1wXJGHVWi4i8bOSrpC3NwpkPjgeXG7MnugVc1B42VbfnQikyC/A== dependencies: - "@ethersproject/bytes" ">=5.0.0-beta.129" + "@ethersproject/bytes" "^5.4.0" js-sha3 "0.5.7" "@ethersproject/keccak256@^5.0.7": @@ -688,22 +879,37 @@ "@ethersproject/bytes" "^5.0.9" js-sha3 "0.5.7" -"@ethersproject/logger@>=5.0.0-beta.129": - version "5.0.0-beta.134" - resolved "https://registry.yarnpkg.com/@ethersproject/logger/-/logger-5.0.0-beta.134.tgz#9eed0e2a733287476978f01b4304c6abf345072d" - integrity sha512-0nqZqf12/dCNfUhmpSvJweW6xQk9ixqgo/Fy3bVMbGKbuzezZtKPphGB5ibspvimWrVK7U6jLBTKHgRQKjU8Lg== +"@ethersproject/logger@5.4.0", "@ethersproject/logger@^5.0.5", "@ethersproject/logger@^5.4.0": + version "5.4.0" + resolved "https://registry.yarnpkg.com/@ethersproject/logger/-/logger-5.4.0.tgz#f39adadf62ad610c420bcd156fd41270e91b3ca9" + integrity sha512-xYdWGGQ9P2cxBayt64d8LC8aPFJk6yWCawQi/4eJ4+oJdMMjEBMrIcIMZ9AxhwpPVmnBPrsB10PcXGmGAqgUEQ== "@ethersproject/logger@^5.0.8": version "5.0.10" resolved "https://registry.yarnpkg.com/@ethersproject/logger/-/logger-5.0.10.tgz#fd884688b3143253e0356ef92d5f22d109d2e026" integrity sha512-0y2T2NqykDrbPM3Zw9RSbPkDOxwChAL8detXaom76CfYoGxsOnRP/zTX8OUAV+x9LdwzgbWvWmeXrc0M7SuDZw== -"@ethersproject/properties@>=5.0.0-beta.131": - version "5.0.0-beta.137" - resolved "https://registry.yarnpkg.com/@ethersproject/properties/-/properties-5.0.0-beta.137.tgz#de393d450f1de0775e22d2acfb00e4f12223c2f7" - integrity sha512-AcvoVmV0aXixa7SxaPj237OAIEXl/UMJf4vl2yFNzWjf77mMyZaZoKLLOh2zes++mLeQ3EJEIebSWFm06L5NuA== +"@ethersproject/networks@5.4.2", "@ethersproject/networks@^5.4.0": + version "5.4.2" + resolved "https://registry.yarnpkg.com/@ethersproject/networks/-/networks-5.4.2.tgz#2247d977626e97e2c3b8ee73cd2457babde0ce35" + integrity sha512-eekOhvJyBnuibfJnhtK46b8HimBc5+4gqpvd1/H9LEl7Q7/qhsIhM81dI9Fcnjpk3jB1aTy6bj0hz3cifhNeYw== + dependencies: + "@ethersproject/logger" "^5.4.0" + +"@ethersproject/pbkdf2@5.4.0", "@ethersproject/pbkdf2@^5.4.0": + version "5.4.0" + resolved "https://registry.yarnpkg.com/@ethersproject/pbkdf2/-/pbkdf2-5.4.0.tgz#ed88782a67fda1594c22d60d0ca911a9d669641c" + integrity sha512-x94aIv6tiA04g6BnazZSLoRXqyusawRyZWlUhKip2jvoLpzJuLb//KtMM6PEovE47pMbW+Qe1uw+68ameJjB7g== + dependencies: + "@ethersproject/bytes" "^5.4.0" + "@ethersproject/sha2" "^5.4.0" + +"@ethersproject/properties@5.4.0", "@ethersproject/properties@^5.0.3", "@ethersproject/properties@^5.4.0": + version "5.4.0" + resolved "https://registry.yarnpkg.com/@ethersproject/properties/-/properties-5.4.0.tgz#38ba20539b44dcc5d5f80c45ad902017dcdbefe7" + integrity sha512-7jczalGVRAJ+XSRvNA6D5sAwT4gavLq3OXPuV/74o3Rd2wuzSL035IMpIMgei4CYyBdialJMrTqkOnzccLHn4A== dependencies: - "@ethersproject/logger" ">=5.0.0-beta.129" + "@ethersproject/logger" "^5.4.0" "@ethersproject/properties@^5.0.7": version "5.0.9" @@ -712,12 +918,46 @@ dependencies: "@ethersproject/logger" "^5.0.8" -"@ethersproject/rlp@>=5.0.0-beta.126": - version "5.0.0-beta.131" - resolved "https://registry.yarnpkg.com/@ethersproject/rlp/-/rlp-5.0.0-beta.131.tgz#4a0c0c314e26ed7f01be6bca16308d629a8022d2" - integrity sha512-sUJUGbywlnuk2frkSWzWiGenTrwOnrKQaNKJqjCGmK35x0WIzcR4/1gC6jWa0hpWJT6Seq6J6SCT5CS+ZWCFNw== +"@ethersproject/providers@5.4.4": + version "5.4.4" + resolved "https://registry.yarnpkg.com/@ethersproject/providers/-/providers-5.4.4.tgz#6729120317942fc0ab0ecdb35e944ec6bbedb795" + integrity sha512-mQevyXj2X2D3l8p/JGDYFZbODhZjW6On15DnCK4Xc9y6b+P0vqorQC/j46omWSm4cyo7BQ/rgfhXNYmvAfyZoQ== + dependencies: + "@ethersproject/abstract-provider" "^5.4.0" + "@ethersproject/abstract-signer" "^5.4.0" + "@ethersproject/address" "^5.4.0" + "@ethersproject/basex" "^5.4.0" + "@ethersproject/bignumber" "^5.4.0" + "@ethersproject/bytes" "^5.4.0" + "@ethersproject/constants" "^5.4.0" + "@ethersproject/hash" "^5.4.0" + "@ethersproject/logger" "^5.4.0" + "@ethersproject/networks" "^5.4.0" + "@ethersproject/properties" "^5.4.0" + "@ethersproject/random" "^5.4.0" + "@ethersproject/rlp" "^5.4.0" + "@ethersproject/sha2" "^5.4.0" + "@ethersproject/strings" "^5.4.0" + "@ethersproject/transactions" "^5.4.0" + "@ethersproject/web" "^5.4.0" + bech32 "1.1.4" + ws "7.4.6" + +"@ethersproject/random@5.4.0", "@ethersproject/random@^5.4.0": + version "5.4.0" + resolved "https://registry.yarnpkg.com/@ethersproject/random/-/random-5.4.0.tgz#9cdde60e160d024be39cc16f8de3b9ce39191e16" + integrity sha512-pnpWNQlf0VAZDEOVp1rsYQosmv2o0ITS/PecNw+mS2/btF8eYdspkN0vIXrCMtkX09EAh9bdk8GoXmFXM1eAKw== + dependencies: + "@ethersproject/bytes" "^5.4.0" + "@ethersproject/logger" "^5.4.0" + +"@ethersproject/rlp@5.4.0", "@ethersproject/rlp@^5.4.0": + version "5.4.0" + resolved "https://registry.yarnpkg.com/@ethersproject/rlp/-/rlp-5.4.0.tgz#de61afda5ff979454e76d3b3310a6c32ad060931" + integrity sha512-0I7MZKfi+T5+G8atId9QaQKHRvvasM/kqLyAH4XxBCBchAooH2EX5rL9kYZWwcm3awYV+XC7VF6nLhfeQFKVPg== dependencies: - "@ethersproject/bytes" ">=5.0.0-beta.129" + "@ethersproject/bytes" "^5.4.0" + "@ethersproject/logger" "^5.4.0" "@ethersproject/rlp@^5.0.7": version "5.0.9" @@ -727,6 +967,27 @@ "@ethersproject/bytes" "^5.0.9" "@ethersproject/logger" "^5.0.8" +"@ethersproject/sha2@5.4.0", "@ethersproject/sha2@^5.4.0": + version "5.4.0" + resolved "https://registry.yarnpkg.com/@ethersproject/sha2/-/sha2-5.4.0.tgz#c9a8db1037014cbc4e9482bd662f86c090440371" + integrity sha512-siheo36r1WD7Cy+bDdE1BJ8y0bDtqXCOxRMzPa4bV1TGt/eTUUt03BHoJNB6reWJD8A30E/pdJ8WFkq+/uz4Gg== + dependencies: + "@ethersproject/bytes" "^5.4.0" + "@ethersproject/logger" "^5.4.0" + hash.js "1.1.7" + +"@ethersproject/signing-key@5.4.0", "@ethersproject/signing-key@^5.4.0": + version "5.4.0" + resolved "https://registry.yarnpkg.com/@ethersproject/signing-key/-/signing-key-5.4.0.tgz#2f05120984e81cf89a3d5f6dec5c68ee0894fbec" + integrity sha512-q8POUeywx6AKg2/jX9qBYZIAmKSB4ubGXdQ88l40hmATj29JnG5pp331nAWwwxPn2Qao4JpWHNZsQN+bPiSW9A== + dependencies: + "@ethersproject/bytes" "^5.4.0" + "@ethersproject/logger" "^5.4.0" + "@ethersproject/properties" "^5.4.0" + bn.js "^4.11.9" + elliptic "6.5.4" + hash.js "1.1.7" + "@ethersproject/signing-key@^5.0.8": version "5.0.11" resolved "https://registry.yarnpkg.com/@ethersproject/signing-key/-/signing-key-5.0.11.tgz#19fc5c4597e18ad0a5efc6417ba5b74069fdd2af" @@ -737,14 +998,40 @@ "@ethersproject/properties" "^5.0.7" elliptic "6.5.4" -"@ethersproject/strings@>=5.0.0-beta.130": - version "5.0.0-beta.136" - resolved "https://registry.yarnpkg.com/@ethersproject/strings/-/strings-5.0.0-beta.136.tgz#053cbf4f9f96a7537cbc50300597f2d707907f51" - integrity sha512-Hb9RvTrgGcOavHvtQZz+AuijB79BO3g1cfF2MeMfCU9ID4j3mbZv/olzDMS2pK9r4aERJpAS94AmlWzCgoY2LQ== +"@ethersproject/solidity@5.4.0": + version "5.4.0" + resolved "https://registry.yarnpkg.com/@ethersproject/solidity/-/solidity-5.4.0.tgz#1305e058ea02dc4891df18b33232b11a14ece9ec" + integrity sha512-XFQTZ7wFSHOhHcV1DpcWj7VXECEiSrBuv7JErJvB9Uo+KfCdc3QtUZV+Vjh/AAaYgezUEKbCtE6Khjm44seevQ== dependencies: - "@ethersproject/bytes" ">=5.0.0-beta.129" - "@ethersproject/constants" ">=5.0.0-beta.128" - "@ethersproject/logger" ">=5.0.0-beta.129" + "@ethersproject/bignumber" "^5.4.0" + "@ethersproject/bytes" "^5.4.0" + "@ethersproject/keccak256" "^5.4.0" + "@ethersproject/sha2" "^5.4.0" + "@ethersproject/strings" "^5.4.0" + +"@ethersproject/strings@5.4.0", "@ethersproject/strings@^5.0.4", "@ethersproject/strings@^5.4.0": + version "5.4.0" + resolved "https://registry.yarnpkg.com/@ethersproject/strings/-/strings-5.4.0.tgz#fb12270132dd84b02906a8d895ae7e7fa3d07d9a" + integrity sha512-k/9DkH5UGDhv7aReXLluFG5ExurwtIpUfnDNhQA29w896Dw3i4uDTz01Quaptbks1Uj9kI8wo9tmW73wcIEaWA== + dependencies: + "@ethersproject/bytes" "^5.4.0" + "@ethersproject/constants" "^5.4.0" + "@ethersproject/logger" "^5.4.0" + +"@ethersproject/transactions@5.4.0", "@ethersproject/transactions@^5.4.0": + version "5.4.0" + resolved "https://registry.yarnpkg.com/@ethersproject/transactions/-/transactions-5.4.0.tgz#a159d035179334bd92f340ce0f77e83e9e1522e0" + integrity sha512-s3EjZZt7xa4BkLknJZ98QGoIza94rVjaEed0rzZ/jB9WrIuu/1+tjvYCWzVrystXtDswy7TPBeIepyXwSYa4WQ== + dependencies: + "@ethersproject/address" "^5.4.0" + "@ethersproject/bignumber" "^5.4.0" + "@ethersproject/bytes" "^5.4.0" + "@ethersproject/constants" "^5.4.0" + "@ethersproject/keccak256" "^5.4.0" + "@ethersproject/logger" "^5.4.0" + "@ethersproject/properties" "^5.4.0" + "@ethersproject/rlp" "^5.4.0" + "@ethersproject/signing-key" "^5.4.0" "@ethersproject/transactions@^5.0.0-beta.135": version "5.0.11" @@ -761,6 +1048,58 @@ "@ethersproject/rlp" "^5.0.7" "@ethersproject/signing-key" "^5.0.8" +"@ethersproject/units@5.4.0": + version "5.4.0" + resolved "https://registry.yarnpkg.com/@ethersproject/units/-/units-5.4.0.tgz#d57477a4498b14b88b10396062c8cbbaf20c79fe" + integrity sha512-Z88krX40KCp+JqPCP5oPv5p750g+uU6gopDYRTBGcDvOASh6qhiEYCRatuM/suC4S2XW9Zz90QI35MfSrTIaFg== + dependencies: + "@ethersproject/bignumber" "^5.4.0" + "@ethersproject/constants" "^5.4.0" + "@ethersproject/logger" "^5.4.0" + +"@ethersproject/wallet@5.4.0": + version "5.4.0" + resolved "https://registry.yarnpkg.com/@ethersproject/wallet/-/wallet-5.4.0.tgz#fa5b59830b42e9be56eadd45a16a2e0933ad9353" + integrity sha512-wU29majLjM6AjCjpat21mPPviG+EpK7wY1+jzKD0fg3ui5fgedf2zEu1RDgpfIMsfn8fJHJuzM4zXZ2+hSHaSQ== + dependencies: + "@ethersproject/abstract-provider" "^5.4.0" + "@ethersproject/abstract-signer" "^5.4.0" + "@ethersproject/address" "^5.4.0" + "@ethersproject/bignumber" "^5.4.0" + "@ethersproject/bytes" "^5.4.0" + "@ethersproject/hash" "^5.4.0" + "@ethersproject/hdnode" "^5.4.0" + "@ethersproject/json-wallets" "^5.4.0" + "@ethersproject/keccak256" "^5.4.0" + "@ethersproject/logger" "^5.4.0" + "@ethersproject/properties" "^5.4.0" + "@ethersproject/random" "^5.4.0" + "@ethersproject/signing-key" "^5.4.0" + "@ethersproject/transactions" "^5.4.0" + "@ethersproject/wordlists" "^5.4.0" + +"@ethersproject/web@5.4.0", "@ethersproject/web@^5.4.0": + version "5.4.0" + resolved "https://registry.yarnpkg.com/@ethersproject/web/-/web-5.4.0.tgz#49fac173b96992334ed36a175538ba07a7413d1f" + integrity sha512-1bUusGmcoRLYgMn6c1BLk1tOKUIFuTg8j+6N8lYlbMpDesnle+i3pGSagGNvwjaiLo4Y5gBibwctpPRmjrh4Og== + dependencies: + "@ethersproject/base64" "^5.4.0" + "@ethersproject/bytes" "^5.4.0" + "@ethersproject/logger" "^5.4.0" + "@ethersproject/properties" "^5.4.0" + "@ethersproject/strings" "^5.4.0" + +"@ethersproject/wordlists@5.4.0", "@ethersproject/wordlists@^5.4.0": + version "5.4.0" + resolved "https://registry.yarnpkg.com/@ethersproject/wordlists/-/wordlists-5.4.0.tgz#f34205ec3bbc9e2c49cadaee774cf0b07e7573d7" + integrity sha512-FemEkf6a+EBKEPxlzeVgUaVSodU7G0Na89jqKjmWMlDB0tomoU8RlEMgUvXyqtrg8N4cwpLh8nyRnm1Nay1isA== + dependencies: + "@ethersproject/bytes" "^5.4.0" + "@ethersproject/hash" "^5.4.0" + "@ethersproject/logger" "^5.4.0" + "@ethersproject/properties" "^5.4.0" + "@ethersproject/strings" "^5.4.0" + "@graphql-tools/batch-delegate@^6.2.4", "@graphql-tools/batch-delegate@^6.2.6": version "6.2.6" resolved "https://registry.yarnpkg.com/@graphql-tools/batch-delegate/-/batch-delegate-6.2.6.tgz#fbea98dc825f87ef29ea5f3f371912c2a2aa2f2c" @@ -1056,6 +1395,81 @@ normalize-path "^2.0.1" through2 "^2.0.3" +"@improbable-eng/grpc-web@^0.12.0": + version "0.12.0" + resolved "https://registry.yarnpkg.com/@improbable-eng/grpc-web/-/grpc-web-0.12.0.tgz#9b10a7edf2a1d7672f8997e34a60e7b70e49738f" + integrity sha512-uJjgMPngreRTYPBuo6gswMj1gK39Wbqre/RgE0XnSDXJRg6ST7ZhuS53dFE6Vc2CX4jxgl+cO+0B3op8LA4Q0Q== + dependencies: + browser-headers "^0.4.0" + +"@improbable-eng/grpc-web@^0.13.0": + version "0.13.0" + resolved "https://registry.yarnpkg.com/@improbable-eng/grpc-web/-/grpc-web-0.13.0.tgz#289e6fc4dafc00b1af8e2b93b970e6892299014d" + integrity sha512-vaxxT+Qwb7GPqDQrBV4vAAfH0HywgOLw6xGIKXd9Q8hcV63CQhmS3p4+pZ9/wVvt4Ph3ZDK9fdC983b9aGMUFg== + dependencies: + browser-headers "^0.4.0" + +"@improbable-eng/grpc-web@^0.14.0": + version "0.14.0" + resolved "https://registry.yarnpkg.com/@improbable-eng/grpc-web/-/grpc-web-0.14.0.tgz#a71c5af471dcef6a2810798f71f93ed8d6ac3817" + integrity sha512-ag1PTMWpBZKGi6GrEcZ4lkU5Qag23Xjo10BmnK9qyx4TMmSVcWmQ3rECirfQzm2uogrM9n1M6xfOpFsJP62ivA== + dependencies: + browser-headers "^0.4.1" + +"@ledgerhq/devices@^5.51.1": + version "5.51.1" + resolved "https://registry.yarnpkg.com/@ledgerhq/devices/-/devices-5.51.1.tgz#d741a4a5d8f17c2f9d282fd27147e6fe1999edb7" + integrity sha512-4w+P0VkbjzEXC7kv8T1GJ/9AVaP9I6uasMZ/JcdwZBS3qwvKo5A5z9uGhP5c7TvItzcmPb44b5Mw2kT+WjUuAA== + dependencies: + "@ledgerhq/errors" "^5.50.0" + "@ledgerhq/logs" "^5.50.0" + rxjs "6" + semver "^7.3.5" + +"@ledgerhq/errors@^5.50.0": + version "5.50.0" + resolved "https://registry.yarnpkg.com/@ledgerhq/errors/-/errors-5.50.0.tgz#e3a6834cb8c19346efca214c1af84ed28e69dad9" + integrity sha512-gu6aJ/BHuRlpU7kgVpy2vcYk6atjB4iauP2ymF7Gk0ez0Y/6VSMVSJvubeEQN+IV60+OBK0JgeIZG7OiHaw8ow== + +"@ledgerhq/hw-transport-webusb@^5.22.0": + version "5.53.1" + resolved "https://registry.yarnpkg.com/@ledgerhq/hw-transport-webusb/-/hw-transport-webusb-5.53.1.tgz#3df8c401417571e3bcacc378d8aca587214b05ae" + integrity sha512-A/f+xcrkIAZiJrvPpDvsrjxQX4cI2kbdiunQkwsYmOG3Bp4z89ZnsBiC7YBst4n2/g+QgTg0/KPVtODU5djooQ== + dependencies: + "@ledgerhq/devices" "^5.51.1" + "@ledgerhq/errors" "^5.50.0" + "@ledgerhq/hw-transport" "^5.51.1" + "@ledgerhq/logs" "^5.50.0" + +"@ledgerhq/hw-transport@^5.51.1": + version "5.51.1" + resolved "https://registry.yarnpkg.com/@ledgerhq/hw-transport/-/hw-transport-5.51.1.tgz#8dd14a8e58cbee4df0c29eaeef983a79f5f22578" + integrity sha512-6wDYdbWrw9VwHIcoDnqWBaDFyviyjZWv6H9vz9Vyhe4Qd7TIFmbTl/eWs6hZvtZBza9K8y7zD8ChHwRI4s9tSw== + dependencies: + "@ledgerhq/devices" "^5.51.1" + "@ledgerhq/errors" "^5.50.0" + events "^3.3.0" + +"@ledgerhq/logs@^5.50.0": + version "5.50.0" + resolved "https://registry.yarnpkg.com/@ledgerhq/logs/-/logs-5.50.0.tgz#29c6419e8379d496ab6d0426eadf3c4d100cd186" + integrity sha512-swKHYCOZUGyVt4ge0u8a7AwNcA//h4nx5wIi0sruGye1IJ5Cva0GyK9L2/WdX+kWVTKp92ZiEo1df31lrWGPgA== + +"@multiformats/base-x@^4.0.1": + version "4.0.1" + resolved "https://registry.yarnpkg.com/@multiformats/base-x/-/base-x-4.0.1.tgz#95ff0fa58711789d53aefb2590a8b7a4e715d121" + integrity sha512-eMk0b9ReBbV23xXU693TAIrLyeO5iTgBZGSJfpqriG8UkYvr/hC9u9pyMlAakDNHWmbhMZCDs6KQO0jzKD8OTw== + +"@nodefactory/filsnap-adapter@^0.2.1": + version "0.2.2" + resolved "https://registry.yarnpkg.com/@nodefactory/filsnap-adapter/-/filsnap-adapter-0.2.2.tgz#0e182150ce3825b6c26b8512ab9355ab7759b498" + integrity sha512-nbaYMwVopOXN2bWOdDY3il6gGL9qMuCmMN4WPuoxzJjSnAMJNqEeSe6MNNJ/fYBLipZcJfAtirNXRrFLFN+Tvw== + +"@nodefactory/filsnap-types@^0.2.1": + version "0.2.2" + resolved "https://registry.yarnpkg.com/@nodefactory/filsnap-types/-/filsnap-types-0.2.2.tgz#f95cbf93ce5815d8d151c60663940086b015cb8f" + integrity sha512-XT1tE2vrYF2D0tSNNekgjqKRpqPQn4W72eKul9dDCul/8ykouhqnVTyjFHYvBhlBWE0PK3nmG7i83QvhgGSiMw== + "@nodelib/fs.scandir@2.1.3": version "2.1.3" resolved "https://registry.yarnpkg.com/@nodelib/fs.scandir/-/fs.scandir-2.1.3.tgz#3a582bdb53804c6ba6d146579c46e52130cf4a3b" @@ -1077,20 +1491,20 @@ "@nodelib/fs.scandir" "2.1.3" fastq "^1.6.0" -"@openzeppelin/contracts-ethereum-package@^2.4.0": - version "2.4.0" - resolved "https://registry.yarnpkg.com/@openzeppelin/contracts-ethereum-package/-/contracts-ethereum-package-2.4.0.tgz#cd98612022cadb8710c26901bc564240a19a9b40" - integrity sha512-GC1aOgTnuNnlhdYOCKFizLCQRgYlbImWi+aJ9Lw4Yw4BSLHzfPg+XV0tgn9l+KnFAzgoUEg2aD2wmaHZBjEnSw== - -"@openzeppelin/contracts@^2.5.0": +"@openzeppelin/contracts-ethereum-package@^2.5.0": version "2.5.0" - resolved "https://registry.yarnpkg.com/@openzeppelin/contracts/-/contracts-2.5.0.tgz#e327a98ba1d26b7756ff62885a0aa0967a375449" - integrity sha512-t3jm8FrhL9tkkJTofkznTqo/XXdHi21w5yXwalEnaMOp22ZwZ0f/mmKdlgMMLPFa6bSVHbY88mKESwJT/7m5Lg== + resolved "https://registry.yarnpkg.com/@openzeppelin/contracts-ethereum-package/-/contracts-ethereum-package-2.5.0.tgz#cfb4b91f8132edde7e04bcd032575d4c6b544f4a" + integrity sha512-14CijdTyy4Y/3D3UUeFC2oW12nt1Yq1M8gFOtkuODEvSYPe3YSAKnKyhUeGf0UDNCZzwfGr15KdiFK6AoJjoSQ== -"@openzeppelin/upgrades@^2.7.2": - version "2.7.2" - resolved "https://registry.yarnpkg.com/@openzeppelin/upgrades/-/upgrades-2.7.2.tgz#140124305af7aee935566e735f2aa970880ab3d1" - integrity sha512-RU63TpSLNRjoeC6M4IeaEA3lI8UP6DdWF5L+gru9uExU+A/OvrhfepHfNd5lFQtkCB77oQ2I1wauE75K5a/ysg== +"@openzeppelin/contracts@^2.5.1": + version "2.5.1" + resolved "https://registry.yarnpkg.com/@openzeppelin/contracts/-/contracts-2.5.1.tgz#c76e3fc57aa224da3718ec351812a4251289db31" + integrity sha512-qIy6tLx8rtybEsIOAlrM4J/85s2q2nPkDqj/Rx46VakBZ0LwtFhXIVub96LXHczQX0vaqmAueDqNPXtbSXSaYQ== + +"@openzeppelin/upgrades@^2.8.0": + version "2.8.0" + resolved "https://registry.yarnpkg.com/@openzeppelin/upgrades/-/upgrades-2.8.0.tgz#8086ab9c99d9f8dac7205030b0f9e7e4a280c4a3" + integrity sha512-LzjTQPeljPsgHDPdZyH9cMCbIHZILgd2cpNcYEkdsC2IylBYRHShlbEDXJV9snnqg9JWfzPiKIqyj3XVliwtqQ== dependencies: "@types/cbor" "^2.0.0" axios "^0.18.0" @@ -1099,27 +1513,7 @@ chalk "^2.4.1" ethers "^4.0.20" glob "^7.1.3" - lodash.concat "^4.5.0" - lodash.difference "^4.5.0" - lodash.every "^4.6.0" - lodash.findlast "^4.6.0" - lodash.flatten "^4.4.0" - lodash.includes "^4.3.0" - lodash.invertby "^4.7.0" - lodash.isempty "^4.4.0" - lodash.isequal "^4.5.0" - lodash.isstring "^4.0.1" - lodash.keys "^4.2.0" - lodash.map "^4.6.0" - lodash.omit "^4.5.0" - lodash.pick "^4.4.0" - lodash.pickby "^4.6.0" - lodash.random "^3.2.0" - lodash.reverse "^4.0.1" - lodash.some "^4.6.0" - lodash.uniq "^4.5.0" - lodash.values "^4.3.0" - lodash.without "^4.4.0" + lodash "^4.17.15" semver "^5.5.1" spinnies "^0.4.2" truffle-flattener "^1.4.0" @@ -1225,6 +1619,11 @@ resolved "https://registry.yarnpkg.com/@redux-saga/types/-/types-1.1.0.tgz#0e81ce56b4883b4b2a3001ebe1ab298b84237204" integrity sha512-afmTuJrylUU/0OtqzaRkbyYFFNgCF73Bvel/sw90pvGrWIZ+vyoIJqA6eMSoA6+nb443kTmulmBtC9NerXboNg== +"@repeaterjs/repeater@^3.0.4": + version "3.0.4" + resolved "https://registry.yarnpkg.com/@repeaterjs/repeater/-/repeater-3.0.4.tgz#a04d63f4d1bf5540a41b01a921c9a7fddc3bd1ca" + integrity sha512-AW8PKd6iX3vAZ0vA43nOUOnbq/X5ihgU+mSXXqunMkeQADGiqw/PY0JNeYtD5sr0PAy51YPgAPbDoeapv9r8WA== + "@resolver-engine/core@^0.2.1": version "0.2.1" resolved "https://registry.yarnpkg.com/@resolver-engine/core/-/core-0.2.1.tgz#0d71803f6d3b8cb2e9ed481a1bf0ca5f5256d0c0" @@ -1264,6 +1663,18 @@ resolved "https://registry.yarnpkg.com/@sindresorhus/is/-/is-0.14.0.tgz#9fb3a3cf3132328151f353de4632e01e52102bea" integrity sha512-9NET910DNaIPngYnLLPeg+Ogzqsi9uM4mSboU5y6p8S5DzMTVEsJZrawi+BoDNUVBa2DhJqQYUFvMDfgU062LQ== +"@solidity-parser/parser@^0.12.0": + version "0.12.2" + resolved "https://registry.yarnpkg.com/@solidity-parser/parser/-/parser-0.12.2.tgz#1afad367cb29a2ed8cdd4a3a62701c2821fb578f" + integrity sha512-d7VS7PxgMosm5NyaiyDJRNID5pK4AWj1l64Dbz0147hJgy5k2C0/ZiKK/9u5c5K+HRUVHmp+RMvGEjGh84oA5Q== + +"@solidity-parser/parser@^0.13.2": + version "0.13.2" + resolved "https://registry.yarnpkg.com/@solidity-parser/parser/-/parser-0.13.2.tgz#b6c71d8ca0b382d90a7bbed241f9bc110af65cbe" + integrity sha512-RwHnpRnfrnD2MSPveYoPh8nhofEvX7fgjHk1Oq+NNvCcLx4r1js91CO9o+F/F3fBzOCyvm8kKRTriFICX/odWw== + dependencies: + antlr4ts "^0.5.0-alpha.4" + "@szmarczak/http-timer@^1.1.2": version "1.1.2" resolved "https://registry.yarnpkg.com/@szmarczak/http-timer/-/http-timer-1.1.2.tgz#b1665e2c461a2cd92f4c1bbf50d5454de0d4b421" @@ -1271,29 +1682,273 @@ dependencies: defer-to-connect "^1.0.1" -"@truffle/abi-utils@^0.1.4", "@truffle/abi-utils@^0.1.5": - version "0.1.5" - resolved "https://registry.yarnpkg.com/@truffle/abi-utils/-/abi-utils-0.1.5.tgz#95b39ee0cb6baf777fdbaa2ac6d901ab8b0f8c58" - integrity sha512-PvCN/qebM0boK2YycX3sMe6CwoLtB7cpYj2ugHPtcQ+Zpg1hQRGS+GRLeBuQg3RR5X8IxzLb4YPZh5dnJxMZYA== +"@textile/buckets-grpc@2.6.6": + version "2.6.6" + resolved "https://registry.yarnpkg.com/@textile/buckets-grpc/-/buckets-grpc-2.6.6.tgz#304bdef37c81f0bdf2aa98f52d3b437bf4ab9d14" + integrity sha512-Gg+96RviTLNnSX8rhPxFgREJn3Ss2wca5Szk60nOenW+GoVIc+8dtsA9bE/6Vh5Gn85zAd17m1C2k6PbJK8x3Q== + dependencies: + "@improbable-eng/grpc-web" "^0.13.0" + "@types/google-protobuf" "^3.7.4" + google-protobuf "^3.13.0" + +"@textile/buckets@^6.1.0": + version "6.1.0" + resolved "https://registry.yarnpkg.com/@textile/buckets/-/buckets-6.1.0.tgz#9b33115035813e121e47d75ccbe6ed49af2c8d38" + integrity sha512-39pGJicewq7GMKUrBubkh4QHuGL+v6TkkV70GG+VRwD3UENEAoDSPrA8OZYUX+sgAtBuiWWij+ZB2TE2bxagkg== + dependencies: + "@improbable-eng/grpc-web" "^0.13.0" + "@repeaterjs/repeater" "^3.0.4" + "@textile/buckets-grpc" "2.6.6" + "@textile/context" "^0.12.0" + "@textile/crypto" "^4.2.0" + "@textile/grpc-authentication" "^3.4.0" + "@textile/grpc-connection" "^2.5.0" + "@textile/grpc-transport" "^0.5.0" + "@textile/hub-grpc" "2.6.6" + "@textile/hub-threads-client" "^5.4.0" + "@textile/security" "^0.9.0" + "@textile/threads-id" "^0.6.0" + abort-controller "^3.0.0" + cids "^1.1.4" + it-drain "^1.0.3" + loglevel "^1.6.8" + paramap-it "^0.1.1" + +"@textile/context@^0.12.0": + version "0.12.0" + resolved "https://registry.yarnpkg.com/@textile/context/-/context-0.12.0.tgz#dfced24f45be5a99a7b46135c2a85c39006694c3" + integrity sha512-VXH6QXCHVqQDXBC5pxwENFTuSI+LidC5a+qA6MSoCXtDKuqsaqkLHj7J/ZMKezWGxDU8O9WReXpzYFnlYZKyMg== + dependencies: + "@improbable-eng/grpc-web" "^0.13.0" + "@textile/security" "^0.9.0" + +"@textile/crypto@^4.2.0": + version "4.2.0" + resolved "https://registry.yarnpkg.com/@textile/crypto/-/crypto-4.2.0.tgz#fb3060d9cd98f2b6b2eb0d802e4d945d00043ce9" + integrity sha512-E7K9mCuDkCptqhGTk3iYCoNg44Q0kiWUIzf3vSmDqP60TLROFbg7h45jeh+tiHCFw67jlPm7RE62yUI9/AE5Qw== + dependencies: + "@types/ed2curve" "^0.2.2" + ed2curve "^0.3.0" + fastestsmallesttextencoderdecoder "^1.0.22" + multibase "^3.1.0" + tweetnacl "^1.0.3" + +"@textile/grpc-authentication@^3.4.0": + version "3.4.0" + resolved "https://registry.yarnpkg.com/@textile/grpc-authentication/-/grpc-authentication-3.4.0.tgz#78d20fa92dd55a521d2ed5b4a7b1bcd2a02d728c" + integrity sha512-UZsbkSXSbn8TQStoCAhqwt63as6rmQlVprqGJFNp+K1miL55jK1tU/lcVzOjmS33TPkf5PApJ18m2bkiHpR+kw== + dependencies: + "@textile/context" "^0.12.0" + "@textile/crypto" "^4.2.0" + "@textile/grpc-connection" "^2.5.0" + "@textile/hub-threads-client" "^5.4.0" + "@textile/security" "^0.9.0" + +"@textile/grpc-connection@^2.5.0": + version "2.5.0" + resolved "https://registry.yarnpkg.com/@textile/grpc-connection/-/grpc-connection-2.5.0.tgz#83c80248b5b6a42444ee74f6be50d89b31bc6a92" + integrity sha512-KyBSDmOhGLW/pT1MVMqkZNXec/V2PW42MgFIBeXHzUs3cvCSj33+4d0fjB1OYvwTmhBArpqzKSbl94dTHOCoEg== + dependencies: + "@improbable-eng/grpc-web" "^0.12.0" + "@textile/context" "^0.12.0" + "@textile/grpc-transport" "^0.5.0" + +"@textile/grpc-powergate-client@^2.6.2": + version "2.6.2" + resolved "https://registry.yarnpkg.com/@textile/grpc-powergate-client/-/grpc-powergate-client-2.6.2.tgz#c267cc3e3dd1e68673c234d5465ff70bed843df6" + integrity sha512-ODe22lveqPiSkBsxnhLIRKQzZVwvyqDVx6WBPQJZI4yxrja5SDOq6/yH2Dtmqyfxg8BOobFvn+tid3wexRZjnQ== + dependencies: + "@improbable-eng/grpc-web" "^0.14.0" + "@types/google-protobuf" "^3.15.2" + google-protobuf "^3.17.3" + +"@textile/grpc-transport@^0.5.0": + version "0.5.0" + resolved "https://registry.yarnpkg.com/@textile/grpc-transport/-/grpc-transport-0.5.0.tgz#28fc7f21f8e84820b7535fb143156be9deae0e81" + integrity sha512-d74MA/TbU9dZ3BzLy2Esuh5dTdCaLk6d6rZYf5Sea4GMhZZMo8I/bkftLIicIxXdX/l8s0E5vo+JF6fkYUqMyA== + dependencies: + "@improbable-eng/grpc-web" "^0.13.0" + "@types/ws" "^7.2.6" + isomorphic-ws "^4.0.1" + loglevel "^1.6.6" + ws "^7.2.1" + +"@textile/hub-filecoin@^2.1.0": + version "2.1.0" + resolved "https://registry.yarnpkg.com/@textile/hub-filecoin/-/hub-filecoin-2.1.0.tgz#627eaac4c733a695bfea54ff470fc3f50686592d" + integrity sha512-/SWtBIEzPKKEMx5d4C6UZGVdoxxnV2C//pWBv5gRWQNDb2yJYKLftvsj1BQ1TpgdAlFyXZT9g1TgKT++zcOnHA== + dependencies: + "@improbable-eng/grpc-web" "^0.12.0" + "@textile/context" "^0.12.0" + "@textile/crypto" "^4.2.0" + "@textile/grpc-authentication" "^3.4.0" + "@textile/grpc-connection" "^2.5.0" + "@textile/grpc-powergate-client" "^2.6.2" + "@textile/hub-grpc" "2.6.6" + "@textile/security" "^0.9.0" + event-iterator "^2.0.0" + loglevel "^1.6.8" + +"@textile/hub-grpc@2.6.6": + version "2.6.6" + resolved "https://registry.yarnpkg.com/@textile/hub-grpc/-/hub-grpc-2.6.6.tgz#c99392490885760f357b58e72812066aac0ffeac" + integrity sha512-PHoLUE1lq0hyiVjIucPHRxps8r1oafXHIgmAR99+Lk4TwAF2MXx5rfxYhg1dEJ3ches8ZuNbVGkiNIXroIoZ8Q== + dependencies: + "@improbable-eng/grpc-web" "^0.13.0" + "@types/google-protobuf" "^3.7.4" + google-protobuf "^3.13.0" + +"@textile/hub-threads-client@^5.4.0": + version "5.4.0" + resolved "https://registry.yarnpkg.com/@textile/hub-threads-client/-/hub-threads-client-5.4.0.tgz#9ea261cda2fa1b4da547cf4d7e84506a63af30d6" + integrity sha512-V2Y7mcjptAhahMO2P1ytnW9kT87kDeWVwzE49M2xpocnoURoTl4suU022fq894ALcs/7b+bf5cY0M6kifMRA1w== + dependencies: + "@improbable-eng/grpc-web" "^0.13.0" + "@textile/context" "^0.12.0" + "@textile/hub-grpc" "2.6.6" + "@textile/security" "^0.9.0" + "@textile/threads-client" "^2.2.0" + "@textile/threads-id" "^0.6.0" + "@textile/users-grpc" "2.6.6" + loglevel "^1.7.0" + +"@textile/hub@^6.0.2": + version "6.2.0" + resolved "https://registry.yarnpkg.com/@textile/hub/-/hub-6.2.0.tgz#10c84abfe311548b7d022b4fab1d150980434a21" + integrity sha512-r5GRaZ2G4GBwC7tcbNAtYuzmhFeH9y/Eul1CtUqhoOQZFQnLQWHclj08zi5NchuLnnQbLuCIc+8KQHlp8jllGQ== + dependencies: + "@textile/buckets" "^6.1.0" + "@textile/crypto" "^4.2.0" + "@textile/grpc-authentication" "^3.4.0" + "@textile/hub-filecoin" "^2.1.0" + "@textile/hub-grpc" "2.6.6" + "@textile/hub-threads-client" "^5.4.0" + "@textile/security" "^0.9.0" + "@textile/threads-id" "^0.6.0" + "@textile/users" "^6.1.0" + loglevel "^1.6.8" + multihashes "3.1.2" + +"@textile/multiaddr@^0.6.0": + version "0.6.0" + resolved "https://registry.yarnpkg.com/@textile/multiaddr/-/multiaddr-0.6.0.tgz#ea1936e2e51399296f5a537896932dfdd4876b09" + integrity sha512-FCAlWGK1XMpozT2rVqY0qLGSk+eBeoanrq6HGI7fUw216UyAa44rBVsoYclQvx3fccpWzNpehC/BCh92mziMYg== + dependencies: + "@textile/threads-id" "^0.6.0" + multiaddr "^8.1.2" + varint "^6.0.0" + +"@textile/security@^0.9.0": + version "0.9.0" + resolved "https://registry.yarnpkg.com/@textile/security/-/security-0.9.0.tgz#df5521c0a75b7ee0d5d4173792721b02f1e6e10e" + integrity sha512-yE+XfFllEc3rdahadgCs+nWKaVWCdSICLZY9OZ0Ma9tDFHzXtA+CrxnnNreiKPlBzTqxXCouNYYti3ZpTwT8Fw== + dependencies: + "@consento/sync-randombytes" "^1.0.5" + fast-sha256 "^1.3.0" + fastestsmallesttextencoderdecoder "^1.0.22" + multibase "^3.1.0" + +"@textile/threads-client-grpc@^1.0.2": + version "1.1.1" + resolved "https://registry.yarnpkg.com/@textile/threads-client-grpc/-/threads-client-grpc-1.1.1.tgz#65a84d933244abf3e83ed60ae491d8e066dc3b00" + integrity sha512-vdRD6hW90w1ys35AmeCy/DSQqASpu9oAP72zE8awLmB+MEUxHKclp4qRITgRAgRVczs/YpiksUBzqCNS9ekx6A== + dependencies: + "@improbable-eng/grpc-web" "^0.14.0" + "@types/google-protobuf" "^3.15.5" + google-protobuf "^3.17.3" + +"@textile/threads-client@^2.2.0": + version "2.2.0" + resolved "https://registry.yarnpkg.com/@textile/threads-client/-/threads-client-2.2.0.tgz#57c2014576dfdb37ef568a282b9c12a82d00766e" + integrity sha512-/iK/ETfiYRNIBphhRAATBxdG5HPnt9lf+HMR2m02111GPAVMCuyW8RPFYifI+785UwcoQkeM7E030X1rlNt2iw== + dependencies: + "@improbable-eng/grpc-web" "^0.13.0" + "@textile/context" "^0.12.0" + "@textile/crypto" "^4.2.0" + "@textile/grpc-transport" "^0.5.0" + "@textile/multiaddr" "^0.6.0" + "@textile/security" "^0.9.0" + "@textile/threads-client-grpc" "^1.0.2" + "@textile/threads-id" "^0.6.0" + "@types/to-json-schema" "^0.2.0" + fastestsmallesttextencoderdecoder "^1.0.22" + to-json-schema "^0.2.5" + +"@textile/threads-id@^0.6.0": + version "0.6.0" + resolved "https://registry.yarnpkg.com/@textile/threads-id/-/threads-id-0.6.0.tgz#6eab94e64f8360779749f60d4b55a5c7bf6c2772" + integrity sha512-0ZJ+nWirtySYA9XRZ1lPd6qB9ZrlW0QKh8VxVg1118O8UNljY2+NDlAf5hr4ObfnZEU0oi02Zi3IAciSXv8RWQ== + dependencies: + "@consento/sync-randombytes" "^1.0.4" + multibase "^3.1.0" + varint "^6.0.0" + +"@textile/users-grpc@2.6.6": + version "2.6.6" + resolved "https://registry.yarnpkg.com/@textile/users-grpc/-/users-grpc-2.6.6.tgz#dfec3ffc8f960892839c4e2e678af57b79f0d09a" + integrity sha512-pzI/jAWJx1/NqvSj03ukn2++aDNRdnyjwgbxh2drrsuxRZyCQEa1osBAA+SDkH5oeRf6dgxrc9dF8W1Ttjn0Yw== + dependencies: + "@improbable-eng/grpc-web" "^0.13.0" + "@types/google-protobuf" "^3.7.4" + google-protobuf "^3.13.0" + +"@textile/users@^6.1.0": + version "6.1.0" + resolved "https://registry.yarnpkg.com/@textile/users/-/users-6.1.0.tgz#7addccc4403b6c094f4796297100662204ab3915" + integrity sha512-Pqf22WR+L7tt4KvhlAFyXSAy767iAUua+ODtKrd59iQPiPH33vo/H9BvtauCAAJHAoFJJksJUJFVwFEDAK30OQ== + dependencies: + "@improbable-eng/grpc-web" "^0.13.0" + "@textile/buckets-grpc" "2.6.6" + "@textile/context" "^0.12.0" + "@textile/crypto" "^4.2.0" + "@textile/grpc-authentication" "^3.4.0" + "@textile/grpc-connection" "^2.5.0" + "@textile/grpc-transport" "^0.5.0" + "@textile/hub-grpc" "2.6.6" + "@textile/hub-threads-client" "^5.4.0" + "@textile/security" "^0.9.0" + "@textile/threads-id" "^0.6.0" + "@textile/users-grpc" "2.6.6" + event-iterator "^2.0.0" + loglevel "^1.7.0" + +"@truffle/abi-utils@^0.1.0": + version "0.1.6" + resolved "https://registry.yarnpkg.com/@truffle/abi-utils/-/abi-utils-0.1.6.tgz#d754a54caec2577efaa05f0ca66c58e73676884e" + integrity sha512-A9bW5XHywPNHod8rsu4x4eyM4C6k3eMeyOCd47edhiA/e9kgAVp6J3QDzKoHS8nuJ2qiaq+jk5bLnAgNWAHYyQ== dependencies: change-case "3.0.2" faker "^5.3.1" fast-check "^2.12.1" - source-map-support "^0.5.19" -"@truffle/code-utils@^1.2.23", "@truffle/code-utils@^1.2.24": - version "1.2.24" - resolved "https://registry.yarnpkg.com/@truffle/code-utils/-/code-utils-1.2.24.tgz#8da82510e416128c45fc154e92410982ab98b426" - integrity sha512-IqpbTh4uNQueadv96GBWBaGTYTyOsLKE9Dui1wpiijON6xq2iIcTArej1vMh+nkAd5/AsP+enbBY8mksm6rFBg== +"@truffle/abi-utils@^0.2.4": + version "0.2.4" + resolved "https://registry.yarnpkg.com/@truffle/abi-utils/-/abi-utils-0.2.4.tgz#9fc8bfc95bbe29a33cca3ab9028865b078e2f051" + integrity sha512-ICr5Sger6r5uj2G5GN9Zp9OQDCaCqe2ZyAEyvavDoFB+jX0zZFUCfDnv5jllGRhgzdYJ3mec2390mjUyz9jSZA== + dependencies: + change-case "3.0.2" + faker "^5.3.1" + fast-check "^2.12.1" + +"@truffle/blockchain-utils@^0.0.31": + version "0.0.31" + resolved "https://registry.yarnpkg.com/@truffle/blockchain-utils/-/blockchain-utils-0.0.31.tgz#0503d9fb2ce3e05c167c27294927f2f88d70a24d" + integrity sha512-BFo/nyxwhoHqPrqBQA1EAmSxeNnspGLiOCMa9pAL7WYSjyNBlrHaqCMO/F2O87G+NUK/u06E70DiSP2BFP0ZZw== + +"@truffle/code-utils@^1.2.29": + version "1.2.29" + resolved "https://registry.yarnpkg.com/@truffle/code-utils/-/code-utils-1.2.29.tgz#1225a75fdb177cd2a1d8e0d72e2222d6a1bb484a" + integrity sha512-BLNDjFLhDHCJjmdVSTObEgQDT3QFi1Yif20fDHt53kwjRH6T+MGcvaW8b9Yk8r3qpeFAYJrT2yEi02JBTr/hNg== dependencies: cbor "^5.1.0" - source-map-support "^0.5.19" -"@truffle/codec@^0.10.1": - version "0.10.1" - resolved "https://registry.yarnpkg.com/@truffle/codec/-/codec-0.10.1.tgz#70df52ddf1c64781a23daaccda24e10bfb9dec9d" - integrity sha512-c1lC9Wcp+Z1DLvEYH3dkEtMKnUJx72CirO3kmi0OgFSA5QqTDCtfrVOhAugcb/iMLgqUK05/pexp2whb4oASKA== +"@truffle/codec@^0.11.11": + version "0.11.11" + resolved "https://registry.yarnpkg.com/@truffle/codec/-/codec-0.11.11.tgz#4f159d6df96fdec99364da58c2007a3d45be3beb" + integrity sha512-KH4n16SFJlML0wnVFeNv6SxUHhGPQEJI8AIAaM5a5RCtb4+evQAwqOz3vxdoeh8aOTHLeRmZI/PnUyigfbOXxA== dependencies: + "@truffle/abi-utils" "^0.2.4" + "@truffle/compile-common" "^0.7.17" big.js "^5.2.2" bn.js "^5.1.3" cbor "^5.1.0" @@ -1303,34 +1958,105 @@ lodash.partition "^4.6.0" lodash.sum "^4.0.2" semver "^7.3.4" + utf8 "^3.0.0" + web3-utils "1.5.2" + +"@truffle/codec@^0.7.1": + version "0.7.1" + resolved "https://registry.yarnpkg.com/@truffle/codec/-/codec-0.7.1.tgz#2ef0fa40109040796afbebb8812c872122100ae4" + integrity sha512-mNd6KnW6J0UB1zafGBXDlTEbCMvWpmPAJmzv7aF/nAIaN/F8UePSCiQ1OTQP39Rprj6GFiCCaWVnBAwum6UGSg== + dependencies: + big.js "^5.2.2" + bn.js "^4.11.8" + borc "^2.1.2" + debug "^4.1.0" + lodash.clonedeep "^4.5.0" + lodash.escaperegexp "^4.1.2" + lodash.partition "^4.6.0" + lodash.sum "^4.0.2" + semver "^6.3.0" source-map-support "^0.5.19" utf8 "^3.0.0" web3-utils "1.2.9" -"@truffle/config@^1.2.35": - version "1.2.35" - resolved "https://registry.yarnpkg.com/@truffle/config/-/config-1.2.35.tgz#98a9ae3a964e73c33dcea4dcb172f878fdbb9bdd" - integrity sha512-ULTS9t3ldqEV1VBVNWlS9tdWJ0r637ANspzBoQd6S/Ab7CfueQhcIfp29oz6Ahcgjkl4NX+Gu/dG6/Jiys81vg== +"@truffle/compile-common@^0.7.17": + version "0.7.17" + resolved "https://registry.yarnpkg.com/@truffle/compile-common/-/compile-common-0.7.17.tgz#5f37ba6a6f625d2b0a8545bce43cd34a555c5abb" + integrity sha512-N+6iFJQ7C7rT3hKVYBZDK1wqRfUs69FbSHZdevnaaXrL3he0I3oDjLoNCpsZXwnWZjFLKtoAazai5VdHO4useg== dependencies: - "@truffle/error" "^0.0.12" - "@truffle/events" "^0.0.9" - "@truffle/provider" "^0.2.26" + "@truffle/contract-sources" "^0.1.12" + "@truffle/error" "^0.0.14" + "@truffle/expect" "^0.0.18" + colors "^1.4.0" + debug "^4.3.1" + +"@truffle/config@^1.3.5": + version "1.3.5" + resolved "https://registry.yarnpkg.com/@truffle/config/-/config-1.3.5.tgz#0c36367a258fe4ceb2b405bfd45bd1f27516b21f" + integrity sha512-Mkg3rKRqEM89/gSzuKRtu8tJyDjc2bxzrZZEdv89vsDbjqw5Un1A9t44zKss84k+xdhB3iRUCP47U0fm9fi4NQ== + dependencies: + "@truffle/error" "^0.0.14" + "@truffle/events" "^0.0.14" + "@truffle/provider" "^0.2.38" configstore "^4.0.0" find-up "^2.1.0" lodash.assignin "^4.2.0" lodash.merge "^4.6.2" + lodash.pick "^4.4.0" module "^1.2.5" original-require "^1.0.1" - source-map-support "^0.5.19" -"@truffle/db@^0.5.4": - version "0.5.4" - resolved "https://registry.yarnpkg.com/@truffle/db/-/db-0.5.4.tgz#810574232f936e8351538395a935376947b759af" - integrity sha512-vekTc++LrUPfumqxrH6FzJ8hWTVZ+tEEs+3okKBXokAuA6Se95RxDeZPIANNS7Nsp4rsgs8IfZV4jF7UufQGOg== +"@truffle/contract-schema@^3.3.1", "@truffle/contract-schema@^3.4.3": + version "3.4.3" + resolved "https://registry.yarnpkg.com/@truffle/contract-schema/-/contract-schema-3.4.3.tgz#c1bcde343f70b9438314202e103a7d77d684603c" + integrity sha512-pgaTgF4CKIpkqVYZVr2qGTxZZQOkNCWOXW9VQpKvLd4G0SNF2Y1gyhrFbBhoOUtYlbbSty+IEFFHsoAqpqlvpQ== + dependencies: + ajv "^6.10.0" + debug "^4.3.1" + +"@truffle/contract-sources@^0.1.12": + version "0.1.12" + resolved "https://registry.yarnpkg.com/@truffle/contract-sources/-/contract-sources-0.1.12.tgz#7a3dfec1bcf6f3632c0f54e522fb6f12b0bdf34b" + integrity sha512-7OH8P+N4n2LewbNiVpuleshPqj8G7n9Qkd5ot79sZ/R6xIRyXF05iBtg3/IbjIzOeQCrCE9aYUHNe2go9RuM0g== + dependencies: + debug "^4.3.1" + glob "^7.1.6" + +"@truffle/contract@^4.3.31": + version "4.3.31" + resolved "https://registry.yarnpkg.com/@truffle/contract/-/contract-4.3.31.tgz#9f801458d264fe1cdddd4d0ed422ea8dbca83b2c" + integrity sha512-x6UtNLWEyZFaryvkZ6kbsFB5UzkA6vqRVji1idU3W1x1eHQEpQFS1zRinxgmA3NxnfqetK4d+T0xGrtnNQs4ng== + dependencies: + "@ensdomains/ensjs" "^2.0.1" + "@truffle/blockchain-utils" "^0.0.31" + "@truffle/contract-schema" "^3.4.3" + "@truffle/debug-utils" "^5.1.11" + "@truffle/error" "^0.0.14" + "@truffle/interface-adapter" "^0.5.5" + bignumber.js "^7.2.1" + ethers "^4.0.32" + web3 "1.5.2" + web3-core-helpers "1.5.2" + web3-core-promievent "1.5.2" + web3-eth-abi "1.5.2" + web3-utils "1.5.2" + +"@truffle/db-loader@^0.0.6": + version "0.0.6" + resolved "https://registry.yarnpkg.com/@truffle/db-loader/-/db-loader-0.0.6.tgz#df41101e8c2aeb9005c231c53e5b4210143f15c6" + integrity sha512-b3xetLuWKON/VklFZtzxr2ZmW2an7k8cgh/HIRUmDStIM9QwBULBPQRQnull1R1LMDXxIRKgo4SWga5pnv4bJg== + optionalDependencies: + "@truffle/db" "^0.5.27" + +"@truffle/db@^0.5.27": + version "0.5.27" + resolved "https://registry.yarnpkg.com/@truffle/db/-/db-0.5.27.tgz#a3c1be05687ebb8331204f9ad3ef55b5b15dc14d" + integrity sha512-4uj0CIOAbC77IWxJN8NGoDlmIt7SS6OerdYcLcU5w2x0OUdUCuroVlTzbMVOIZ/2EuAJQ9+SfVGFoUWy7Nf1QQ== dependencies: - "@truffle/abi-utils" "^0.1.4" - "@truffle/code-utils" "^1.2.23" - "@truffle/config" "^1.2.35" + "@truffle/abi-utils" "^0.2.4" + "@truffle/code-utils" "^1.2.29" + "@truffle/config" "^1.3.5" + "@truffle/resolver" "^7.0.25" apollo-server "^2.18.2" debug "^4.3.1" fs-extra "^9.1.0" @@ -1346,17 +2072,28 @@ pouchdb-adapter-node-websql "^7.0.0" pouchdb-debug "^7.1.1" pouchdb-find "^7.0.0" - source-map-support "^0.5.19" - web3-utils "1.2.9" + web3-utils "1.5.2" + +"@truffle/debug-utils@^5.1.11": + version "5.1.11" + resolved "https://registry.yarnpkg.com/@truffle/debug-utils/-/debug-utils-5.1.11.tgz#3252645f7d5e480ba71fcce92ca5d1f89a8b47b0" + integrity sha512-kLgMBznddc02jK5DU3hT622B+Hn7Rk/VwpvpY1Ayk9sH8X4fDb5e40VfZqdyMHcgsTwVkD/FW3JFS5l6C819HA== + dependencies: + "@truffle/codec" "^0.11.11" + "@trufflesuite/chromafi" "^2.2.2" + bn.js "^5.1.3" + chalk "^2.4.2" + debug "^4.3.1" + highlightjs-solidity "^1.2.2" -"@truffle/debugger@^8.0.18": - version "8.0.18" - resolved "https://registry.yarnpkg.com/@truffle/debugger/-/debugger-8.0.18.tgz#b79d6e024290931533812b15c602bfb6c44ee6f8" - integrity sha512-m5OK4Ra8jz1k3R56idXXTOe2DmQfur8ZoOSNFNCu7TrPGFuktfJFVyQkJnRa+f5lHwGZODr0H7r0FSGr5ncd6Q== +"@truffle/debugger@^9.1.12": + version "9.1.12" + resolved "https://registry.yarnpkg.com/@truffle/debugger/-/debugger-9.1.12.tgz#b39c071294eccf8a556333fce3bc650a28a07c7f" + integrity sha512-d3m/EvLMih80KDYvm/V0rHoliVnV/ex0OWxCopnSMnjA/UYyf1/j4MNEsxvVCLlK/PfxmDmyl+n/wbv6lUAqfA== dependencies: - "@truffle/abi-utils" "^0.1.5" - "@truffle/codec" "^0.10.1" - "@truffle/source-map-utils" "^1.3.35" + "@truffle/abi-utils" "^0.2.4" + "@truffle/codec" "^0.11.11" + "@truffle/source-map-utils" "^1.3.55" bn.js "^5.1.3" debug "^4.3.1" json-pointer "^0.6.0" @@ -1366,82 +2103,178 @@ lodash.sum "^4.0.2" lodash.zipwith "^4.2.0" redux "^3.7.2" - redux-cli-logger "^2.0.1" redux-saga "1.0.0" remote-redux-devtools "^0.5.12" reselect-tree "^1.3.4" semver "^7.3.4" - source-map-support "^0.5.19" - web3 "1.2.9" - web3-eth-abi "1.2.9" - -"@truffle/error@^0.0.12": - version "0.0.12" - resolved "https://registry.yarnpkg.com/@truffle/error/-/error-0.0.12.tgz#83e02e6ffe1d154fe274141d90038a91fd1e186d" - integrity sha512-kZqqnPR9YDJG7KCDOcN1qH16Qs0oz1PzF0Y93AWdhXuL9S9HYo/RUUeqGKbPpRBEZldQUS8aa4EzfK08u5pu6g== + web3 "1.5.2" + web3-eth-abi "1.5.2" -"@truffle/error@^0.0.7": - version "0.0.7" - resolved "https://registry.yarnpkg.com/@truffle/error/-/error-0.0.7.tgz#e9db39885575647ef08bf624b0c13fe46d41a209" - integrity sha512-UIfVKsXSXocKnn5+RNklUXNoGd/JVj7V8KmC48TQzmjU33HQI86PX0JDS7SpHMHasI3w9X//1q7Lu7nZtj3Zzg== +"@truffle/error@^0.0.14": + version "0.0.14" + resolved "https://registry.yarnpkg.com/@truffle/error/-/error-0.0.14.tgz#59683b5407bede7bddf16d80dc5592f9c5e5fa05" + integrity sha512-utJx+SZYoMqk8wldQG4gCVKhV8GwMJbWY7sLXFT/D8wWZTnE2peX7URFJh/cxkjTRCO328z1s2qewkhyVsu2HA== -"@truffle/events@^0.0.9": - version "0.0.9" - resolved "https://registry.yarnpkg.com/@truffle/events/-/events-0.0.9.tgz#460fc72a04269526cbd8ef54069d474c22b42b23" - integrity sha512-o0rS8zkjCzg2vDJymSZyyq1eKdkRbxIFnsnYQl6Bc2StK89C/ZISenxrUe2fbdeq3L9Zq+ds1mSKH/MFK0Ejkg== +"@truffle/events@^0.0.14": + version "0.0.14" + resolved "https://registry.yarnpkg.com/@truffle/events/-/events-0.0.14.tgz#8c028f8e682e09b6b8d00d5db05440442722c628" + integrity sha512-lrWT+4tohj7IgK+RHrW1vzcMHUJnutW3Plqlp/STMarZBPXm38k9w2Q2qJm6BdsBd+ZRZLwBVZwkOgwTal5dew== dependencies: emittery "^0.4.1" ora "^3.4.0" -"@truffle/interface-adapter@^0.3.0": - version "0.3.3" - resolved "https://registry.yarnpkg.com/@truffle/interface-adapter/-/interface-adapter-0.3.3.tgz#61305378cf81776769ef36c60d394e568ac4a2ee" - integrity sha512-l3I4WFTfnBSIfG96IOBRtAIE6AHDAxcOUJE7W5zh9hocQwzQlGWc2yEyyTcLa0656TTM8RxaZZ2S/KdHHMvCaw== - dependencies: - bn.js "^4.11.8" - ethers "^4.0.32" - lodash "^4.17.13" - web3 "1.2.2" +"@truffle/expect@^0.0.18": + version "0.0.18" + resolved "https://registry.yarnpkg.com/@truffle/expect/-/expect-0.0.18.tgz#022353a212942437e1a57ac1191d692347367bb5" + integrity sha512-ZcYladRCgwn3bbhK3jIORVHcUOBk/MXsUxjfzcw+uD+0H1Kodsvcw1AAIaqd5tlyFhdOb7YkOcH0kUES7F8d1A== -"@truffle/interface-adapter@^0.4.19": - version "0.4.19" - resolved "https://registry.yarnpkg.com/@truffle/interface-adapter/-/interface-adapter-0.4.19.tgz#19248ac88099f8df34f58a3d43a95ba3470dc89a" - integrity sha512-+Zz6Fr8+I2wYSS8RM3WBOMzf22QffMQTnlsYsRgRHzv3gYoRA9ZDLb84lFRfmWyw+IdXTo90tjRHEb5krC6uxg== +"@truffle/interface-adapter@^0.5.5": + version "0.5.5" + resolved "https://registry.yarnpkg.com/@truffle/interface-adapter/-/interface-adapter-0.5.5.tgz#b82911476406b99e4fa9927f77363dc42dfc585c" + integrity sha512-vEutNkWDJWRMVFsyrMD1yZAHY7ZcQhzep7UHiqf6VE4K2Jgl07gK6CG3xco6C2YYBy+7R5Wt0vCTmbVFlPRi7A== dependencies: bn.js "^5.1.3" ethers "^4.0.32" - source-map-support "^0.5.19" - web3 "1.2.9" + web3 "1.5.2" -"@truffle/provider@^0.1.17": - version "0.1.19" - resolved "https://registry.yarnpkg.com/@truffle/provider/-/provider-0.1.19.tgz#3e6f15fdd8475ca5d0c846d2b412cc823f1fb767" - integrity sha512-ke8iQmzW4Y99+8iff8xQcc+mCNU4AkwtaZ/iSpmVD8qpLytw8/DSNCm0RiEz9/+I93Q1zqI4Jnij/rXnkS2Njw== +"@truffle/preserve-fs@^0.2.4": + version "0.2.4" + resolved "https://registry.yarnpkg.com/@truffle/preserve-fs/-/preserve-fs-0.2.4.tgz#9218021f805bb521d0175d5e6bb8535dc4f5c340" + integrity sha512-dGHPWw40PpSMZSWTTCrv+wq5vQuSh2Cy1ABdhQOqMkw7F5so4mdLZdgh956em2fLbTx5NwaEV7dwLu2lYM+xwA== dependencies: - "@truffle/error" "^0.0.7" - "@truffle/interface-adapter" "^0.3.0" - web3 "1.2.1" + "@truffle/preserve" "^0.2.4" + +"@truffle/preserve-to-buckets@^0.2.4": + version "0.2.4" + resolved "https://registry.yarnpkg.com/@truffle/preserve-to-buckets/-/preserve-to-buckets-0.2.4.tgz#8f7616716fb3ba983565ccdcd47bc12af2a96c2b" + integrity sha512-C3NBOY7BK55mURBLrYxUqhz57Mz23Q9ePj+A0J4sJnmWJIsjfzuc2gozXkrzFK5od5Rg786NIoXxPxkb2E0tsA== + dependencies: + "@textile/hub" "^6.0.2" + "@truffle/preserve" "^0.2.4" + cids "^1.1.5" + ipfs-http-client "^48.2.2" + isomorphic-ws "^4.0.1" + iter-tools "^7.0.2" + ws "^7.4.3" + +"@truffle/preserve-to-filecoin@^0.2.4": + version "0.2.4" + resolved "https://registry.yarnpkg.com/@truffle/preserve-to-filecoin/-/preserve-to-filecoin-0.2.4.tgz#cc947aa9d575fb162435fe324f43d88d17ebf082" + integrity sha512-kUzvSUCfpH0gcLxOM8eaYy5dPuJYh/wBpjU5bEkCcrx1HQWr73fR3slS8cO5PNqaxkDvm8RDlh7Lha2JTLp4rw== + dependencies: + "@truffle/preserve" "^0.2.4" + cids "^1.1.5" + delay "^5.0.0" + filecoin.js "^0.0.5-alpha" + +"@truffle/preserve-to-ipfs@^0.2.4": + version "0.2.4" + resolved "https://registry.yarnpkg.com/@truffle/preserve-to-ipfs/-/preserve-to-ipfs-0.2.4.tgz#a4b17b47574b4a1384557c8728b09d84fbdb13c0" + integrity sha512-17gEBhYcS1Qx/FAfOrlyyKJ74HLYm4xROtHwqRvV9MoDI1k3w/xcL+odRrl5H15NX8vNFOukAI7cGe0NPjQHvQ== + dependencies: + "@truffle/preserve" "^0.2.4" + ipfs-http-client "^48.2.2" + iter-tools "^7.0.2" + +"@truffle/preserve@^0.2.4": + version "0.2.4" + resolved "https://registry.yarnpkg.com/@truffle/preserve/-/preserve-0.2.4.tgz#1d902cc9df699eee3efdc39820c755b9c5af65c7" + integrity sha512-rMJQr/uvBIpT23uGM9RLqZKwIIR2CyeggVOTuN2UHHljSsxHWcvRCkNZCj/AA3wH3GSOQzCrbYBcs0d/RF6E1A== + dependencies: + spinnies "^0.5.1" + +"@truffle/provider@^0.2.24", "@truffle/provider@^0.2.38": + version "0.2.38" + resolved "https://registry.yarnpkg.com/@truffle/provider/-/provider-0.2.38.tgz#7a55a9083cdc6b896d40ac0c547ef3acdfcb0d92" + integrity sha512-YKdTUST+G741jFtwgwSpXA0sni5ClLPfhLVUirLxKAiLXI3HnYDl1TAtf/THTPWGMmfd3ygfkXVlxceYuSNuRQ== + dependencies: + "@truffle/error" "^0.0.14" + "@truffle/interface-adapter" "^0.5.5" + web3 "1.5.2" -"@truffle/provider@^0.2.26": - version "0.2.26" - resolved "https://registry.yarnpkg.com/@truffle/provider/-/provider-0.2.26.tgz#88e31b79973c2427c4a17d9a59411e6fbc810190" - integrity sha512-YKPmhB9S9AQkT2ePGtadwjDduxU23DXXy+5zyM5fevw5GCbXSnf+jG6rICXjPkVFjuKBlXuq5JbuERZn43522Q== +"@truffle/provisioner@^0.2.28": + version "0.2.28" + resolved "https://registry.yarnpkg.com/@truffle/provisioner/-/provisioner-0.2.28.tgz#03aaeadf6904d640181dba760e659d4b31c69877" + integrity sha512-3zf2NyBaWtOANBOcYGZyN6V4Zjya0vDyZSNfbPyAPBsb1GalarfZpWWS7ptSiiBRLF+5AmX8jXgNXNSiaQuWtQ== dependencies: - "@truffle/error" "^0.0.12" - "@truffle/interface-adapter" "^0.4.19" - web3 "1.2.9" + "@truffle/config" "^1.3.5" -"@truffle/source-map-utils@^1.3.35": - version "1.3.35" - resolved "https://registry.yarnpkg.com/@truffle/source-map-utils/-/source-map-utils-1.3.35.tgz#aa40422a05e2727254665ee2c23659d01230eb8f" - integrity sha512-j3PHac4g/yQwxSB899lkal/YMuIXLNNlDGfCog2QrWqdtK7HJhx6X2tftwqrZzO4JTKc1Cs8KOCPOndx9W2xeQ== +"@truffle/resolver@^7.0.25": + version "7.0.25" + resolved "https://registry.yarnpkg.com/@truffle/resolver/-/resolver-7.0.25.tgz#2722733223e6a967be79d1dde0462cf67c6605bf" + integrity sha512-tg+ANLciYxa4/eyunVG4l8WcJK0LDpoWe5wgdRH/EZxE2sTW388uu1MUBLo7LLxiB/MXIl88KL73Ra6I69gU3A== dependencies: - "@truffle/code-utils" "^1.2.24" - "@truffle/codec" "^0.10.1" + "@truffle/contract" "^4.3.31" + "@truffle/contract-sources" "^0.1.12" + "@truffle/expect" "^0.0.18" + "@truffle/provisioner" "^0.2.28" + abi-to-sol "^0.2.0" + debug "^4.3.1" + detect-installed "^2.0.4" + get-installed-path "^4.0.8" + glob "^7.1.6" + +"@truffle/source-map-utils@^1.3.55": + version "1.3.55" + resolved "https://registry.yarnpkg.com/@truffle/source-map-utils/-/source-map-utils-1.3.55.tgz#a9011a1c0bd4b103031f0a02aa87bd7e87bde9a9" + integrity sha512-ldP7l1Fg0Z2+ub0zimJe5NQViF/yU5Pf6Z4Mjxtvpdt3knqqTZMrqMMz0W5lbMnob4jGgWOYRV2UIw7mQg9mOA== + dependencies: + "@truffle/code-utils" "^1.2.29" + "@truffle/codec" "^0.11.11" debug "^4.3.1" json-pointer "^0.6.0" node-interval-tree "^1.3.3" - web3-utils "1.2.9" + web3-utils "1.5.2" + +"@trufflesuite/chromafi@^2.2.2": + version "2.2.2" + resolved "https://registry.yarnpkg.com/@trufflesuite/chromafi/-/chromafi-2.2.2.tgz#d3fc507aa8504faffc50fb892cedcfe98ff57f77" + integrity sha512-mItQwVBsb8qP/vaYHQ1kDt2vJLhjoEXJptT6y6fJGvFophMFhOI/NsTVUa0nJL1nyMeFiS6hSYuNVdpQZzB1gA== + dependencies: + ansi-mark "^1.0.0" + ansi-regex "^3.0.0" + array-uniq "^1.0.3" + camelcase "^4.1.0" + chalk "^2.3.2" + cheerio "^1.0.0-rc.2" + detect-indent "^5.0.0" + he "^1.1.1" + highlight.js "^10.4.1" + lodash.merge "^4.6.2" + min-indent "^1.0.0" + strip-ansi "^4.0.0" + strip-indent "^2.0.0" + super-split "^1.1.0" + +"@tsconfig/node10@^1.0.7": + version "1.0.8" + resolved "https://registry.yarnpkg.com/@tsconfig/node10/-/node10-1.0.8.tgz#c1e4e80d6f964fbecb3359c43bd48b40f7cadad9" + integrity sha512-6XFfSQmMgq0CFLY1MslA/CPUfhIL919M1rMsa5lP2P097N2Wd1sSX0tx1u4olM16fLNhtHZpRhedZJphNJqmZg== + +"@tsconfig/node12@^1.0.7": + version "1.0.9" + resolved "https://registry.yarnpkg.com/@tsconfig/node12/-/node12-1.0.9.tgz#62c1f6dee2ebd9aead80dc3afa56810e58e1a04c" + integrity sha512-/yBMcem+fbvhSREH+s14YJi18sp7J9jpuhYByADT2rypfajMZZN4WQ6zBGgBKp53NKmqI36wFYDb3yaMPurITw== + +"@tsconfig/node14@^1.0.0": + version "1.0.1" + resolved "https://registry.yarnpkg.com/@tsconfig/node14/-/node14-1.0.1.tgz#95f2d167ffb9b8d2068b0b235302fafd4df711f2" + integrity sha512-509r2+yARFfHHE7T6Puu2jjkoycftovhXRqW328PDXTVGKihlb1P8Z9mMZH04ebyajfRY7dedfGynlrFHJUQCg== + +"@tsconfig/node16@^1.0.2": + version "1.0.2" + resolved "https://registry.yarnpkg.com/@tsconfig/node16/-/node16-1.0.2.tgz#423c77877d0569db20e1fc80885ac4118314010e" + integrity sha512-eZxlbI8GZscaGS7kkc/trHTT5xgrjH3/1n2JDwusC9iahPKWMRvRjJSAN5mCXviuTGQ/lHnhvv8Q1YTpnfz9gA== + +"@typechain/truffle-v5@^5.0.0": + version "5.0.0" + resolved "https://registry.yarnpkg.com/@typechain/truffle-v5/-/truffle-v5-5.0.0.tgz#01ab526b3986e06f8f2720d4a88dd11b6d0fe11d" + integrity sha512-iyXay2ImCB6ATNvkW5w6ojm0Si0kU4kb7g480O/PzSNOYO1b2MovZHrQbVS+KBMrRlcy7UaFTdrVPpg8j3vUZQ== + +"@typechain/web3-v1@^3.0.0": + version "3.0.0" + resolved "https://registry.yarnpkg.com/@typechain/web3-v1/-/web3-v1-3.0.0.tgz#8aaeeae0e1bbb871dc0d25071e8ab9d88440fb92" + integrity sha512-7N9yGzGOmyW8HJAa3U+0oUqc1JxZcMUIh6Fn4jMkl1z98rKyrzvrllXzT2QmqJ9etZKiyI39AVVly/YPYKTCxQ== "@types/accepts@*", "@types/accepts@^1.3.5": version "1.3.5" @@ -1457,6 +2290,13 @@ dependencies: "@types/node" "*" +"@types/bn.js@^5.1.0": + version "5.1.0" + resolved "https://registry.yarnpkg.com/@types/bn.js/-/bn.js-5.1.0.tgz#32c5d271503a12653c62cf4d2b45e6eab8cebc68" + integrity sha512-QSSVYj7pYFN49kW77o2s9xTCwZ8F2xLbjLLSEVh8D2F4JUhZtPAGOFLTD+ffqksBx/u4cE/KImFjyhqCjn/LIA== + dependencies: + "@types/node" "*" + "@types/body-parser@*", "@types/body-parser@1.19.0": version "1.19.0" resolved "https://registry.yarnpkg.com/@types/body-parser/-/body-parser-1.19.0.tgz#0685b3c47eb3006ffed117cdd55164b61f80538f" @@ -1472,10 +2312,10 @@ dependencies: "@types/node" "*" -"@types/chai-as-promised@^7.1.2": - version "7.1.2" - resolved "https://registry.yarnpkg.com/@types/chai-as-promised/-/chai-as-promised-7.1.2.tgz#2f564420e81eaf8650169e5a3a6b93e096e5068b" - integrity sha512-PO2gcfR3Oxa+u0QvECLe1xKXOqYTzCmWf0FhLhjREoW3fPAVamjihL7v1MOVLJLsnAMdLcjkfrs01yvDMwVK4Q== +"@types/chai-as-promised@^7.1.4": + version "7.1.4" + resolved "https://registry.yarnpkg.com/@types/chai-as-promised/-/chai-as-promised-7.1.4.tgz#caf64e76fb056b8c8ced4b761ed499272b737601" + integrity sha512-1y3L1cHePcIm5vXkh1DSGf/zQq5n5xDKG1fpCvf18+uOkpce0Z1ozNFPkyWsVswK7ntN1sZBw3oU6gmN+pDUcA== dependencies: "@types/chai" "*" @@ -1484,10 +2324,10 @@ resolved "https://registry.yarnpkg.com/@types/chai/-/chai-4.2.9.tgz#194332625ed2ae914aef00b8d5ca3b77e7924cc6" integrity sha512-NeXgZj+MFL4izGqA4sapdYzkzQG+MtGra9vhQ58dnmDY++VgJaRUws+aLVV5zRJCYJl/8s9IjMmhiUw1WsKSmw== -"@types/chai@^4.2.11": - version "4.2.11" - resolved "https://registry.yarnpkg.com/@types/chai/-/chai-4.2.11.tgz#d3614d6c5f500142358e6ed24e1bf16657536c50" - integrity sha512-t7uW6eFafjO+qJ3BIV2gGUyZs27egcNRkUdalkud+Qa3+kg//f129iuOFivHDXQ+vnU3fDXuwgv0cqMCbcE8sw== +"@types/chai@^4.2.21": + version "4.2.21" + resolved "https://registry.yarnpkg.com/@types/chai/-/chai-4.2.21.tgz#9f35a5643129df132cf3b5c1ec64046ea1af0650" + integrity sha512-yd+9qKmJxm496BOV9CMNaey8TWsikaZOwMRwPHQIjcOJM9oV+fi9ZMNw3JsVnbEEbo2gRTDnGEBv8pjyn67hNg== "@types/concat-stream@^1.6.0": version "1.6.0" @@ -1525,6 +2365,13 @@ dependencies: "@types/express" "*" +"@types/ed2curve@^0.2.2": + version "0.2.2" + resolved "https://registry.yarnpkg.com/@types/ed2curve/-/ed2curve-0.2.2.tgz#8f8bc7e2c9a5895a941c63a4f7acd7a6a62a5b15" + integrity sha512-G1sTX5xo91ydevQPINbL2nfgVAj/s1ZiqZxC8OCWduwu+edoNGUm5JXtTkg9F3LsBZbRI46/0HES4CPUE2wc9g== + dependencies: + tweetnacl "^1.0.0" + "@types/ethereumjs-abi@^0.6.3": version "0.6.3" resolved "https://registry.yarnpkg.com/@types/ethereumjs-abi/-/ethereumjs-abi-0.6.3.tgz#eb5ed09fd86b9e2b1c0eb75d1e9bc29c50715c86" @@ -1589,6 +2436,11 @@ "@types/minimatch" "*" "@types/node" "*" +"@types/google-protobuf@^3.15.2", "@types/google-protobuf@^3.15.5", "@types/google-protobuf@^3.7.4": + version "3.15.5" + resolved "https://registry.yarnpkg.com/@types/google-protobuf/-/google-protobuf-3.15.5.tgz#644b2be0f5613b1f822c70c73c6b0e0b5b5fa2ad" + integrity sha512-6bgv24B+A2bo9AfzReeg5StdiijKzwwnRflA8RLd1V4Yv995LeTmo0z69/MPbBDFSiZWdZHQygLo/ccXhMEDgw== + "@types/http-assert@*": version "1.5.1" resolved "https://registry.yarnpkg.com/@types/http-assert/-/http-assert-1.5.1.tgz#d775e93630c2469c2f980fc27e3143240335db3b" @@ -1599,6 +2451,11 @@ resolved "https://registry.yarnpkg.com/@types/http-errors/-/http-errors-1.8.0.tgz#682477dbbbd07cd032731cb3b0e7eaee3d026b69" integrity sha512-2aoSC4UUbHDj2uCsCxcG/vRMXey/m17bC7UwitVm5hn22nI8O8Y9iDpA76Orc+DWkQ4zZrOKEshCqR/jSuXAHA== +"@types/json-schema@*": + version "7.0.9" + resolved "https://registry.yarnpkg.com/@types/json-schema/-/json-schema-7.0.9.tgz#97edc9037ea0c38585320b28964dde3b39e4660d" + integrity sha512-qcUXuemtEu+E5wZSJHNxUXeCZhAfXKQ41D+duX+VYPde7xyEVZci+/oXKJL13tnRs9lR2pr4fod59GT6/X1/yQ== + "@types/keygrip@*": version "1.0.2" resolved "https://registry.yarnpkg.com/@types/keygrip/-/keygrip-1.0.2.tgz#513abfd256d7ad0bf1ee1873606317b33b1b2a72" @@ -1625,7 +2482,7 @@ "@types/koa-compose" "*" "@types/node" "*" -"@types/long@^4.0.0": +"@types/long@^4.0.0", "@types/long@^4.0.1": version "4.0.1" resolved "https://registry.yarnpkg.com/@types/long/-/long-4.0.1.tgz#459c65fa1867dafe6a8f322c4c51695663cc55e9" integrity sha512-5tXH6Bx/kNGd3MgffdmP4dy2Z+G4eaXw0SE81Tq3BNadtnMR5/ySMzX4SLEzHJzSmPNn4HIdpQsBvXMUykr58w== @@ -1640,22 +2497,15 @@ resolved "https://registry.yarnpkg.com/@types/minimatch/-/minimatch-3.0.3.tgz#3dca0e3f33b200fc7d1139c0cd96c1268cadfd9d" integrity sha512-tHq6qdbT9U1IRSGf14CL0pUlULksvY9OZ+5eEgl1N7t+OA3tGvNpxJCzuKQlsNgCVwbAs670L1vcVQi8j9HjnA== -"@types/mkdirp@^0.5.2": - version "0.5.2" - resolved "https://registry.yarnpkg.com/@types/mkdirp/-/mkdirp-0.5.2.tgz#503aacfe5cc2703d5484326b1b27efa67a339c1f" - integrity sha512-U5icWpv7YnZYGsN4/cmh3WD2onMY0aJIiTE6+51TwJCttdHvtCYmkBNOobHlXwrJRL0nkH9jH4kD+1FAdMN4Tg== - dependencies: - "@types/node" "*" - "@types/mocha@^5.2.5": version "5.2.7" resolved "https://registry.yarnpkg.com/@types/mocha/-/mocha-5.2.7.tgz#315d570ccb56c53452ff8638738df60726d5b6ea" integrity sha512-NYrtPht0wGzhwe9+/idPaBB+TqkY9AhTvOLMkThm0IoEfLaiVQZwBwyJ5puCkO3AUCWrmcoePjp2mbFocKy4SQ== -"@types/mocha@^7.0.2": - version "7.0.2" - resolved "https://registry.yarnpkg.com/@types/mocha/-/mocha-7.0.2.tgz#b17f16cf933597e10d6d78eae3251e692ce8b0ce" - integrity sha512-ZvO2tAcjmMi8V/5Z3JsyofMe3hasRcaw88cto5etSVMwVQfeivGAlEYmaQgceUSVYFofVjT+ioHsATjdWcFt1w== +"@types/mocha@^9.0.0": + version "9.0.0" + resolved "https://registry.yarnpkg.com/@types/mocha/-/mocha-9.0.0.tgz#3205bcd15ada9bc681ac20bef64e9e6df88fd297" + integrity sha512-scN0hAWyLVAvLR9AyW7HoFF5sJZglyBsbPuHO4fv7JRvfmPBMfp1ozWqOf/e4wwPNxezBZXRfWzMb6iFLgEVRA== "@types/node-fetch@2.5.7": version "2.5.7" @@ -1670,6 +2520,21 @@ resolved "https://registry.yarnpkg.com/@types/node/-/node-13.7.2.tgz#50375b95b5845a34efda2ffb3a087c7becbc46c6" integrity sha512-uvilvAQbdJvnSBFcKJ2td4016urcGvsiR+N4dHGU87ml8O2Vl6l+ErOi9w0kXSPiwJ1AYlIW+0pDXDWWMOiWbw== +"@types/node@10.12.18": + version "10.12.18" + resolved "https://registry.yarnpkg.com/@types/node/-/node-10.12.18.tgz#1d3ca764718915584fcd9f6344621b7672665c67" + integrity sha512-fh+pAqt4xRzPfqA6eh3Z2y6fyZavRIumvjhaCL753+TVkGKGhpPeyrJG2JftD0T9q4GF00KjefsQ+PQNDdWQaQ== + +"@types/node@11.11.6": + version "11.11.6" + resolved "https://registry.yarnpkg.com/@types/node/-/node-11.11.6.tgz#df929d1bb2eee5afdda598a41930fe50b43eaa6a" + integrity sha512-Exw4yUWMBXM3X+8oqzJNRqZSwUAaS4+7NdvHqQuFi/d+synz++xmX3QIf+BFqneW8N31R8Ky+sikfZUXq07ggQ== + +"@types/node@>=13.7.0", "@types/node@^16.7.1": + version "16.7.1" + resolved "https://registry.yarnpkg.com/@types/node/-/node-16.7.1.tgz#c6b9198178da504dfca1fd0be9b2e1002f1586f0" + integrity sha512-ncRdc45SoYJ2H4eWU9ReDfp3vtFqDYhjOsKlFFUDEn8V1Bgr2RjYal8YT5byfadWIRluhPFU6JiDOl0H6Sl87A== + "@types/node@^10.0.3", "@types/node@^10.12.18", "@types/node@^10.3.2": version "10.17.15" resolved "https://registry.yarnpkg.com/@types/node/-/node-10.17.15.tgz#bfff4e23e9e70be6eec450419d51e18de1daf8e7" @@ -1690,11 +2555,6 @@ resolved "https://registry.yarnpkg.com/@types/node/-/node-12.12.27.tgz#d7506f73160ad30fcebbcf5b8b7d2d976e649e42" integrity sha512-odQFl/+B9idbdS0e8IxDl2ia/LP8KZLXhV3BUeI98TrZp0uoIzQPhGd+5EtzHmT0SMOIaPd7jfz6pOHLWTtl7A== -"@types/node@^13.9.1": - version "13.9.1" - resolved "https://registry.yarnpkg.com/@types/node/-/node-13.9.1.tgz#96f606f8cd67fb018847d9b61e93997dabdefc72" - integrity sha512-E6M6N0blf/jiZx8Q3nb0vNaswQeEyn0XlupO+xN6DtJ6r6IT4nXrTry7zhIfYvFCl3/8Cu6WIysmUBKiqV0bqQ== - "@types/node@^8.0.0": version "8.10.59" resolved "https://registry.yarnpkg.com/@types/node/-/node-8.10.59.tgz#9e34261f30183f9777017a13d185dfac6b899e04" @@ -1707,10 +2567,10 @@ dependencies: "@types/node" "*" -"@types/prettier@^1.13.2": - version "1.19.0" - resolved "https://registry.yarnpkg.com/@types/prettier/-/prettier-1.19.0.tgz#a2502fb7ce9b6626fdbfc2e2a496f472de1bdd05" - integrity sha512-gDE8JJEygpay7IjA/u3JiIURvwZW08f0cZSZLAzFoX/ZmeqvS0Sqv+97aKuHpNsalAMMhwPe+iAS6fQbfmbt7A== +"@types/prettier@^2.1.1": + version "2.3.2" + resolved "https://registry.yarnpkg.com/@types/prettier/-/prettier-2.3.2.tgz#fc8c2825e4ed2142473b4a81064e6e081463d1b3" + integrity sha512-eI5Yrz3Qv4KPUa/nSIAi0h+qX0XyewOliug5F2QAtuRg6Kjg6jfmxe1GIwoIRhZspD1A0RP8ANrPwvEXXtRFog== "@types/qs@*": version "6.9.6" @@ -1727,13 +2587,6 @@ resolved "https://registry.yarnpkg.com/@types/range-parser/-/range-parser-1.2.3.tgz#7ee330ba7caafb98090bece86a5ee44115904c2c" integrity sha512-ewFXqrQHlFsgc09MK5jP5iR7vumV/BYayNC6PgJO2LPe8vrnNFyjQjSppfEngITi0qvfKtzFvgKymGheFM9UOA== -"@types/resolve@^0.0.8": - version "0.0.8" - resolved "https://registry.yarnpkg.com/@types/resolve/-/resolve-0.0.8.tgz#f26074d238e02659e323ce1a13d041eee280e194" - integrity sha512-auApPaJf3NPfe18hSoJkp8EbZzer2ISk7o8mCC3M9he/a04+gbMF97NkpD2S8riMGvm4BMRI59/SZQSaLTKpsQ== - dependencies: - "@types/node" "*" - "@types/secp256k1@^4.0.1": version "4.0.1" resolved "https://registry.yarnpkg.com/@types/secp256k1/-/secp256k1-4.0.1.tgz#fb3aa61a1848ad97d7425ff9dcba784549fca5a4" @@ -1741,10 +2594,10 @@ dependencies: "@types/node" "*" -"@types/seedrandom@^3.0.0": - version "3.0.0" - resolved "https://registry.yarnpkg.com/@types/seedrandom/-/seedrandom-3.0.0.tgz#13f4d71aa58cf6068a2e75261a4580fb71dc84e6" - integrity sha512-Jr03BtXs7v6M/wtTum2VOMLBq7R8zpjdZLynhA/IOJq83czXrnVo8iSUI05gcq8Ecq0Swt+nuoK3y2ji/TWyMA== +"@types/seedrandom@^3.0.1": + version "3.0.1" + resolved "https://registry.yarnpkg.com/@types/seedrandom/-/seedrandom-3.0.1.tgz#1254750a4fec4aff2ebec088ccd0bb02e91fedb4" + integrity sha512-giB9gzDeiCeloIXDgzFBCgjj1k4WxcDrZtGl6h1IqmUPlxF+Nx8Ve+96QCyDZ/HseB/uvDsKbpib9hU5cU53pw== "@types/serve-static@*": version "1.13.9" @@ -1754,6 +2607,13 @@ "@types/mime" "^1" "@types/node" "*" +"@types/to-json-schema@^0.2.0": + version "0.2.1" + resolved "https://registry.yarnpkg.com/@types/to-json-schema/-/to-json-schema-0.2.1.tgz#223346df86bc0c183d53c939ad5eb1ddfb0e9bf5" + integrity sha512-DlvjodmdSrih054SrUqgS3bIZ93allrfbzjFUFmUhAtC60O+B/doLfgB8stafkEFyrU/zXWtPlX/V1H94iKv/A== + dependencies: + "@types/json-schema" "*" + "@types/ungap__global-this@^0.3.1": version "0.3.1" resolved "https://registry.yarnpkg.com/@types/ungap__global-this/-/ungap__global-this-0.3.1.tgz#18ce9f657da556037a29d50604335614ce703f4c" @@ -1780,6 +2640,13 @@ dependencies: "@types/node" "*" +"@types/ws@^7.2.6": + version "7.4.7" + resolved "https://registry.yarnpkg.com/@types/ws/-/ws-7.4.7.tgz#f7c390a36f7a0679aa69de2d501319f4f8d9b702" + integrity sha512-JQbbmxZTZehdc2iszGKs5oC3NFnjeay7mtAWrdt7qNtAVK0g19muApzAy4bm9byz79xa2ZnO/BOBC2R8RC5Lww== + dependencies: + "@types/node" "*" + "@types/zen-observable@^0.8.0": version "0.8.2" resolved "https://registry.yarnpkg.com/@types/zen-observable/-/zen-observable-0.8.2.tgz#808c9fa7e4517274ed555fa158f2de4b4f468e71" @@ -1842,6 +2709,26 @@ resolved "https://registry.yarnpkg.com/@yarnpkg/lockfile/-/lockfile-1.1.0.tgz#e77a97fbd345b76d83245edcd17d393b1b41fb31" integrity sha512-GpSwvyXOcOOlV70vbnzjj4fW5xW/FdUF6nQEt1ENy7m4ZCczi1+/buVUPAqmGfqznsORNFzUMjctTIp8a9tuCQ== +"@zondax/filecoin-signing-tools@github:Digital-MOB-Filecoin/filecoin-signing-tools-js": + version "0.2.0" + resolved "https://codeload.github.com/Digital-MOB-Filecoin/filecoin-signing-tools-js/tar.gz/8f8e92157cac2556d35cab866779e9a8ea8a4e25" + dependencies: + axios "^0.20.0" + base32-decode "^1.0.0" + base32-encode "^1.1.1" + bip32 "^2.0.5" + bip39 "^3.0.2" + blakejs "^1.1.0" + bn.js "^5.1.2" + ipld-dag-cbor "^0.17.0" + leb128 "0.0.5" + secp256k1 "^4.0.1" + +"@zxing/text-encoding@0.9.0": + version "0.9.0" + resolved "https://registry.yarnpkg.com/@zxing/text-encoding/-/text-encoding-0.9.0.tgz#fb50ffabc6c7c66a0c96b4c03e3d9be74864b70b" + integrity sha512-U/4aVJ2mxI0aDNI8Uq0wEhMgY+u4CNtEb0om3+y3+niDAsoTCOB33UF0sxpzqzdqXLqmvc+vZyAt4O8pPdfkwA== + abab@^1.0.0: version "1.0.4" resolved "https://registry.yarnpkg.com/abab/-/abab-1.0.4.tgz#5faad9c2c07f60dd76770f71cf025b62a63cfd4e" @@ -1857,7 +2744,22 @@ abbrev@1.0.x: resolved "https://registry.yarnpkg.com/abbrev/-/abbrev-1.0.9.tgz#91b4792588a7738c25f35dd6f63752a2f8776135" integrity sha1-kbR5JYinc4wl813W9jdSovh3YTU= -abort-controller@3.0.0: +abi-to-sol@^0.2.0: + version "0.2.1" + resolved "https://registry.yarnpkg.com/abi-to-sol/-/abi-to-sol-0.2.1.tgz#308889ba60adc29bcc4265e6b4f7c692802db3a4" + integrity sha512-zJPxaymTHQx/Edpy3NELGseGuDrFPVVzwRvIyxu37ZgRsItHoaxLQeGuOxYNxJPNuc030D6S6evmw0yCCtn+1A== + dependencies: + "@truffle/abi-utils" "^0.1.0" + "@truffle/codec" "^0.7.1" + "@truffle/contract-schema" "^3.3.1" + ajv "^6.12.5" + better-ajv-errors "^0.6.7" + neodoc "^2.0.2" + prettier "^2.1.2" + prettier-plugin-solidity "^1.0.0-alpha.59" + source-map-support "^0.5.19" + +abort-controller@3.0.0, abort-controller@^3.0.0: version "3.0.0" resolved "https://registry.yarnpkg.com/abort-controller/-/abort-controller-3.0.0.tgz#eaf54d53b62bae4138e809ca225c8439a6efb392" integrity sha512-h8lQ8tacZYnR3vNQTgibj+tODHI5/+l06Au2Pcriv/Gmet0eaj4TwWH41sO9wnHDiQsEj19q0drzdWdeAHtweg== @@ -1909,6 +2811,13 @@ accepts@^1.3.5, accepts@~1.3.7: mime-types "~2.1.24" negotiator "0.6.2" +acorn-dynamic-import@^2.0.0: + version "2.0.2" + resolved "https://registry.yarnpkg.com/acorn-dynamic-import/-/acorn-dynamic-import-2.0.2.tgz#c752bd210bef679501b6c6cb7fc84f8f47158cc4" + integrity sha1-x1K9IQvvZ5UBtsbLf8hPj0cVjMQ= + dependencies: + acorn "^4.0.3" + acorn-globals@^1.0.4: version "1.0.9" resolved "https://registry.yarnpkg.com/acorn-globals/-/acorn-globals-1.0.9.tgz#55bb5e98691507b74579d0513413217c380c54cf" @@ -1916,7 +2825,12 @@ acorn-globals@^1.0.4: dependencies: acorn "^2.1.0" -acorn@4.X: +acorn-walk@^8.1.1: + version "8.1.1" + resolved "https://registry.yarnpkg.com/acorn-walk/-/acorn-walk-8.1.1.tgz#3ddab7f84e4a7e2313f6c414c5b7dac85f4e3ebc" + integrity sha512-FbJdceMlPHEAWJOILDk1fXD8lnTlEIWFkqtfk+MvmL5q/qlHfN7GEHcsFZWt/Tea9jRNPWUZG4G976nqAAmU9w== + +acorn@4.X, acorn@^4.0.3: version "4.0.13" resolved "https://registry.yarnpkg.com/acorn/-/acorn-4.0.13.tgz#105495ae5361d697bd195c825192e1ad7f253787" integrity sha1-EFSVrlNh1pe9GVyCUZLhrX8lN4c= @@ -1926,6 +2840,16 @@ acorn@^2.1.0, acorn@^2.4.0: resolved "https://registry.yarnpkg.com/acorn/-/acorn-2.7.0.tgz#ab6e7d9d886aaca8b085bc3312b79a198433f0e7" integrity sha1-q259nYhqrKiwhbwzEreaGYQz8Oc= +acorn@^5.0.0: + version "5.7.4" + resolved "https://registry.yarnpkg.com/acorn/-/acorn-5.7.4.tgz#3e8d8a9947d0599a1796d10225d7432f4a4acf5e" + integrity sha512-1D++VG7BhrtvQpNbBzovKNc1FLGGEE/oGe7b9xJm/RFHMBeUaUGpluV9RLjZa47YFdPcDAenEYuq9pQPcMdLJg== + +acorn@^8.4.1: + version "8.4.1" + resolved "https://registry.yarnpkg.com/acorn/-/acorn-8.4.1.tgz#56c36251fc7cabc7096adc18f05afe814321a28c" + integrity sha512-asabaBSkEKosYKMITunzX177CXxQ4Q8BSSzMTKD+FefUhipQC70gfW5SiUDhYQ3vk8G+81HqQk7Fv9OXwwn9KA== + address@^1.0.1: version "1.1.2" resolved "https://registry.yarnpkg.com/address/-/address-1.1.2.tgz#bf1116c9c758c51b7a933d296b72c221ed9428b6" @@ -1936,6 +2860,21 @@ aes-js@3.0.0: resolved "https://registry.yarnpkg.com/aes-js/-/aes-js-3.0.0.tgz#e21df10ad6c2053295bcbb8dab40b09dbea87e4d" integrity sha1-4h3xCtbCBTKVvLuNq0Cwnb6ofk0= +ajv-keywords@^3.1.0: + version "3.5.2" + resolved "https://registry.yarnpkg.com/ajv-keywords/-/ajv-keywords-3.5.2.tgz#31f29da5ab6e00d1c2d329acf7b5929614d5014d" + integrity sha512-5p6WTN0DdTGVQk6VjcEju19IgaHudalcfabD7yhDGeA6bcQnmL+CpveLJq/3hvfwd1aof6L386Ougkx6RfyMIQ== + +ajv@^6.1.0, ajv@^6.10.0, ajv@^6.12.5: + version "6.12.6" + resolved "https://registry.yarnpkg.com/ajv/-/ajv-6.12.6.tgz#baf5a62e802b07d977034586f8c3baf5adf26df4" + integrity sha512-j3fVLgvTo527anyYyJOGTYJbG+vnnQYvE0m5mmkc1TK+nxAppkCLMIL0aZ4dblVCNoGShhm+kzE4ZUykBoMg4g== + dependencies: + fast-deep-equal "^3.1.1" + fast-json-stable-stringify "^2.0.0" + json-schema-traverse "^0.4.1" + uri-js "^4.2.2" + ajv@^6.5.5: version "6.11.0" resolved "https://registry.yarnpkg.com/ajv/-/ajv-6.11.0.tgz#c3607cbc8ae392d8a5a536f25b21f8e5f3f87fe9" @@ -1946,16 +2885,41 @@ ajv@^6.5.5: json-schema-traverse "^0.4.1" uri-js "^4.2.2" +align-text@^0.1.1, align-text@^0.1.3: + version "0.1.4" + resolved "https://registry.yarnpkg.com/align-text/-/align-text-0.1.4.tgz#0cd90a561093f35d0a99256c22b7069433fad117" + integrity sha1-DNkKVhCT810KmSVsIrcGlDP60Rc= + dependencies: + kind-of "^3.0.2" + longest "^1.0.1" + repeat-string "^1.5.2" + amdefine@>=0.0.4: version "1.0.1" resolved "https://registry.yarnpkg.com/amdefine/-/amdefine-1.0.1.tgz#4a5282ac164729e93619bcfd3ad151f817ce91f5" integrity sha1-SlKCrBZHKek2Gbz9OtFR+BfOkfU= +ansi-colors@3.2.3: + version "3.2.3" + resolved "https://registry.yarnpkg.com/ansi-colors/-/ansi-colors-3.2.3.tgz#57d35b8686e851e2cc04c403f1c00203976a1813" + integrity sha512-LEHHyuhlPY3TmuUYMh2oz89lTShfvgbmzaBcxve9t/9Wuy7Dwf4yoAKcND7KFT1HAQfqZ12qtc+DUrBMeKF9nw== + ansi-colors@4.1.1: version "4.1.1" resolved "https://registry.yarnpkg.com/ansi-colors/-/ansi-colors-4.1.1.tgz#cbb9ae256bf750af1eab344f229aa27fe94ba348" integrity sha512-JoX0apGbHaUJBNl6yF+p6JAFYZ666/hhCGKN5t9QFjbJQKUU/g8MNbFDbvfrgKXvI1QpZplPOnwIo99lX/AAmA== +ansi-mark@^1.0.0: + version "1.0.4" + resolved "https://registry.yarnpkg.com/ansi-mark/-/ansi-mark-1.0.4.tgz#1cd4ba8d57f15f109d6aaf6ec9ca9786c8a4ee6c" + integrity sha1-HNS6jVfxXxCdaq9uycqXhsik7mw= + dependencies: + ansi-regex "^3.0.0" + array-uniq "^1.0.3" + chalk "^2.3.2" + strip-ansi "^4.0.0" + super-split "^1.1.0" + ansi-regex@^2.0.0, ansi-regex@^2.1.1: version "2.1.1" resolved "https://registry.yarnpkg.com/ansi-regex/-/ansi-regex-2.1.1.tgz#c3b33ab5ee360d86e0e628f0468ae7ef27d654df" @@ -2000,11 +2964,32 @@ ansi-styles@~1.0.0: resolved "https://registry.yarnpkg.com/ansi-styles/-/ansi-styles-1.0.0.tgz#cb102df1c56f5123eab8b67cd7b98027a0279178" integrity sha1-yxAt8cVvUSPquLZ817mAJ6AnkXg= +antlr4ts@^0.5.0-alpha.4: + version "0.5.0-alpha.4" + resolved "https://registry.yarnpkg.com/antlr4ts/-/antlr4ts-0.5.0-alpha.4.tgz#71702865a87478ed0b40c0709f422cf14d51652a" + integrity sha512-WPQDt1B74OfPv/IMS2ekXAKkTZIHl88uMetg6q3OTqgFxZ/dxDXI0EWLyZid/1Pe6hTftyg5N7gel5wNAGxXyQ== + any-promise@1.3.0, any-promise@^1.3.0: version "1.3.0" resolved "https://registry.yarnpkg.com/any-promise/-/any-promise-1.3.0.tgz#abc6afeedcea52e809cdc0376aed3ce39635d17f" integrity sha1-q8av7tzqUugJzcA3au0845Y10X8= +any-signal@^2.0.0, any-signal@^2.1.0: + version "2.1.2" + resolved "https://registry.yarnpkg.com/any-signal/-/any-signal-2.1.2.tgz#8d48270de0605f8b218cf9abe8e9c6a0e7418102" + integrity sha512-B+rDnWasMi/eWcajPcCWSlYc7muXOrcYrqgyzcdKisl2H/WTlQ0gip1KyQfr0ZlxJdsuWCj/LWwQm7fhyhRfIQ== + dependencies: + abort-controller "^3.0.0" + native-abort-controller "^1.0.3" + +anymatch@^2.0.0: + version "2.0.0" + resolved "https://registry.yarnpkg.com/anymatch/-/anymatch-2.0.0.tgz#bcb24b4f37934d9aa7ac17b4adaf89e7c76ef2eb" + integrity sha512-5teOsQWABXHHBFP9y3skS5P3d/WfWXpv3FUpy+LorMrNYaT9pI4oLMQX7jzQ2KklNpGpWHzdCXTDT2Y3XGlZBw== + dependencies: + micromatch "^3.1.4" + normalize-path "^2.1.1" + anymatch@~3.1.1: version "3.1.1" resolved "https://registry.yarnpkg.com/anymatch/-/anymatch-3.1.1.tgz#c55ecf02185e2469259399310c173ce31233b142" @@ -2013,6 +2998,14 @@ anymatch@~3.1.1: normalize-path "^3.0.0" picomatch "^2.0.4" +anymatch@~3.1.2: + version "3.1.2" + resolved "https://registry.yarnpkg.com/anymatch/-/anymatch-3.1.2.tgz#c0557c096af32f106198f4f4e2a383537e378716" + integrity sha512-P43ePfOAIupkguHUycrc4qJ9kz8ZiuOUijaETwX7THt0Y/GNK7v0aa8rY816xWjZ7rJdA5XdMcpVFTKMq+RvWg== + dependencies: + normalize-path "^3.0.0" + picomatch "^2.0.4" + apollo-cache-control@^0.11.6: version "0.11.6" resolved "https://registry.yarnpkg.com/apollo-cache-control/-/apollo-cache-control-0.11.6.tgz#f7bdf924272af47ac474cf3f3f35cfc038cc9485" @@ -2279,7 +3272,7 @@ array-union@^2.1.0: resolved "https://registry.yarnpkg.com/array-union/-/array-union-2.1.0.tgz#b798420adbeb1de828d84acd8a2e23d3efe85e8d" integrity sha512-HGyxoOTYUyCM6stUe6EJgnd4EoewAI7zMdfqO+kGjnlZmBDz/cR5pf8r/cR4Wq60sL/p0IkcjUEEPwS3GFrIyw== -array-uniq@^1.0.1: +array-uniq@^1.0.1, array-uniq@^1.0.3: version "1.0.3" resolved "https://registry.yarnpkg.com/array-uniq/-/array-uniq-1.0.3.tgz#af6ac877a25cc7f74e058894753858dfdb24fdb6" integrity sha1-r2rId6Jcx/dOBYiUdThY39sk/bY= @@ -2319,6 +3312,16 @@ asn1.js@^4.0.0: inherits "^2.0.1" minimalistic-assert "^1.0.0" +asn1.js@^5.0.1: + version "5.4.1" + resolved "https://registry.yarnpkg.com/asn1.js/-/asn1.js-5.4.1.tgz#11a980b84ebb91781ce35b0fdc2ee294e3783f07" + integrity sha512-+I//4cYPccV8LdmBLiX8CYvf9Sp3vQsrqu2QNXRcrbiWvcx/UdlFiqUJJzxRQxgsZmvhXhn4cSKeSmoFjVdupA== + dependencies: + bn.js "^4.0.0" + inherits "^2.0.1" + minimalistic-assert "^1.0.0" + safer-buffer "^2.1.0" + asn1@~0.2.3: version "0.2.4" resolved "https://registry.yarnpkg.com/asn1/-/asn1-0.2.4.tgz#8d2475dfab553bb33e77b54e59e880bb8ce23136" @@ -2326,11 +3329,31 @@ asn1@~0.2.3: dependencies: safer-buffer "~2.1.0" +assert-args@^1.2.1: + version "1.2.1" + resolved "https://registry.yarnpkg.com/assert-args/-/assert-args-1.2.1.tgz#404103a1452a32fe77898811e54e590a8a9373bd" + integrity sha1-QEEDoUUqMv53iYgR5U5ZCoqTc70= + dependencies: + "101" "^1.2.0" + compound-subject "0.0.1" + debug "^2.2.0" + get-prototype-of "0.0.0" + is-capitalized "^1.0.0" + is-class "0.0.4" + assert-plus@1.0.0, assert-plus@^1.0.0: version "1.0.0" resolved "https://registry.yarnpkg.com/assert-plus/-/assert-plus-1.0.0.tgz#f12e0f3c5d77b0b1cdd9146942e4e96c1e4dd525" integrity sha1-8S4PPF13sLHN2RRpQuTpbB5N1SU= +assert@^1.1.1: + version "1.5.0" + resolved "https://registry.yarnpkg.com/assert/-/assert-1.5.0.tgz#55c109aaf6e0aefdb3dc4b71240c70bf574b18eb" + 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.yarnpkg.com/assertion-error/-/assertion-error-1.1.0.tgz#e60b6b0e8f301bd97e5375215bda406c85118c0b" @@ -2341,6 +3364,11 @@ assign-symbols@^1.0.0: resolved "https://registry.yarnpkg.com/assign-symbols/-/assign-symbols-1.0.0.tgz#59667f41fadd4f20ccbc2bb96b8d4f7f78ec0367" integrity sha1-WWZ/QfrdTyDMvCu5a41Pf3jsA2c= +async-each@^1.0.1: + version "1.0.3" + resolved "https://registry.yarnpkg.com/async-each/-/async-each-1.0.3.tgz#b727dbf87d7651602f06f4d4ac387f47d91b0cbf" + integrity sha512-z/WhQ5FPySLdvREByI2vZiTWwCnF0moMJ1hK9YQwDTHKh6I7/uSckMetoRGb5UBZPC1z0jlw+n/XCgjeH7y1AQ== + async-limiter@^1.0.0, async-limiter@~1.0.0: version "1.0.1" resolved "https://registry.yarnpkg.com/async-limiter/-/async-limiter-1.0.1.tgz#dd379e94f0db8310b08291f9d64c3209766617fd" @@ -2358,6 +3386,13 @@ async@1.x: resolved "https://registry.yarnpkg.com/async/-/async-1.5.2.tgz#ec6a61ae56480c0c3cb241c95618e20892f9672a" integrity sha1-7GphrlZIDAw8skHJVhjiCJL5Zyo= +async@^2.1.2: + version "2.6.3" + resolved "https://registry.yarnpkg.com/async/-/async-2.6.3.tgz#d72625e2344a3656e3a3ad4fa749fa83299d82ff" + integrity sha512-zflvls11DCy+dQWzTW2dzuilv8Z5X/pjfmZOWba6TNIVDm+2UDaJmXSOXlasHKfNBs8oo3M0aT50fDEWfKZjXg== + dependencies: + lodash "^4.17.14" + asynckit@^0.4.0: version "0.4.0" resolved "https://registry.yarnpkg.com/asynckit/-/asynckit-0.4.0.tgz#c79ed97f7f34cb8f2ba1bc9790bcc366474b4b79" @@ -2390,13 +3425,6 @@ aws4@^1.8.0: resolved "https://registry.yarnpkg.com/aws4/-/aws4-1.9.1.tgz#7e33d8f7d449b3f673cd72deb9abdc552dbe528e" integrity sha512-wMHVg2EOHaMRxbzgFJ9gtjOOCrI80OHLG14rxi28XwOW8ux6IiEbRCGGGqCtdAIg4FQCbW20k9RsT4y3gJlFug== -axios@0.19.2: - version "0.19.2" - resolved "https://registry.yarnpkg.com/axios/-/axios-0.19.2.tgz#3ea36c5d8818d0d5f8a8a97a6d36b86cdc00cb27" - integrity sha512-fjgm5MvRHLhx+osE2xoekY70AhARk3a6hkN+3Io1jc00jtquGvxYlKlsFUhmUET0V5te6CcZI7lcv2Ym61mjHA== - dependencies: - follow-redirects "1.5.10" - axios@^0.18.0: version "0.18.1" resolved "https://registry.yarnpkg.com/axios/-/axios-0.18.1.tgz#ff3f0de2e7b5d180e757ad98000f1081b87bcea3" @@ -2405,6 +3433,20 @@ axios@^0.18.0: follow-redirects "1.5.10" is-buffer "^2.0.2" +axios@^0.20.0: + version "0.20.0" + resolved "https://registry.yarnpkg.com/axios/-/axios-0.20.0.tgz#057ba30f04884694993a8cd07fa394cff11c50bd" + integrity sha512-ANA4rr2BDcmmAQLOKft2fufrtuvlqR+cXNNinUmvfeSNCOF98PZL+7M/v1zIdGo7OLjEA9J2gXJL+j4zGsl0bA== + dependencies: + follow-redirects "^1.10.0" + +axios@^0.21.1: + version "0.21.1" + resolved "https://registry.yarnpkg.com/axios/-/axios-0.21.1.tgz#22563481962f4d6bde9a76d516ef0e5d3c09b2b8" + integrity sha512-dKQiRHxGD9PPRIUNIWvZhPTPpl1rf/OxTYKsqKUDjBwYylTvV7SjSHJb9ratfyzM6wCdLCOYLzs73qpg5c4iGA== + dependencies: + follow-redirects "^1.10.0" + babel-code-frame@^6.26.0: version "6.26.0" resolved "https://registry.yarnpkg.com/babel-code-frame/-/babel-code-frame-6.26.0.tgz#63fd43f7dc1e3bb7ce35947db8fe369a3f58c74b" @@ -2535,6 +3577,18 @@ base-x@^3.0.2, base-x@^3.0.8: dependencies: safe-buffer "^5.0.1" +base32-decode@^1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/base32-decode/-/base32-decode-1.0.0.tgz#2a821d6a664890c872f20aa9aca95a4b4b80e2a7" + integrity sha512-KNWUX/R7wKenwE/G/qFMzGScOgVntOmbE27vvc6GrniDGYb6a5+qWcuoXl8WIOQL7q0TpK7nZDm1Y04Yi3Yn5g== + +base32-encode@^1.1.1: + version "1.2.0" + resolved "https://registry.yarnpkg.com/base32-encode/-/base32-encode-1.2.0.tgz#e150573a5e431af0a998e32bdfde7045725ca453" + integrity sha512-cHFU8XeRyx0GgmoWi5qHMCVRiqU6J3MHWxVgun7jggCBUpVzm1Ir7M9dYr2whjSNc3tFeXfQ/oZjQu/4u55h9A== + dependencies: + to-data-view "^1.1.0" + base64-js@^1.0.2: version "1.3.1" resolved "https://registry.yarnpkg.com/base64-js/-/base64-js-1.3.1.tgz#58ece8cb75dd07e71ed08c736abc5fac4dbf8df1" @@ -2565,12 +3619,40 @@ bcrypt-pbkdf@^1.0.0: dependencies: tweetnacl "^0.14.3" +bech32@1.1.4, bech32@^1.1.3: + version "1.1.4" + resolved "https://registry.yarnpkg.com/bech32/-/bech32-1.1.4.tgz#e38c9f37bf179b8eb16ae3a772b40c356d4832e9" + integrity sha512-s0IrSOzLlbvX7yp4WBfPITzpAU8sqQcpsmwXDiKwrG4r491vwCO/XpejasRNl0piBMe/DvP4Tz0mIS/X1DPJBQ== + +bech32@=1.1.3: + version "1.1.3" + resolved "https://registry.yarnpkg.com/bech32/-/bech32-1.1.3.tgz#bd47a8986bbb3eec34a56a097a84b8d3e9a2dfcd" + integrity sha512-yuVFUvrNcoJi0sv5phmqc6P+Fl1HjRDRNOOkHY2X/3LBy2bIGNSFx4fZ95HMaXHupuS7cZR15AsvtmCIF4UEyg== + +better-ajv-errors@^0.6.7: + version "0.6.7" + resolved "https://registry.yarnpkg.com/better-ajv-errors/-/better-ajv-errors-0.6.7.tgz#b5344af1ce10f434fe02fc4390a5a9c811e470d1" + integrity sha512-PYgt/sCzR4aGpyNy5+ViSQ77ognMnWq7745zM+/flYO4/Yisdtp9wDQW2IKCyVYPUxQt3E/b5GBSwfhd1LPdlg== + dependencies: + "@babel/code-frame" "^7.0.0" + "@babel/runtime" "^7.0.0" + chalk "^2.4.1" + core-js "^3.2.1" + json-to-ast "^2.0.3" + jsonpointer "^4.0.1" + leven "^3.1.0" + +big-integer@1.6.36: + version "1.6.36" + resolved "https://registry.yarnpkg.com/big-integer/-/big-integer-1.6.36.tgz#78631076265d4ae3555c04f85e7d9d2f3a071a36" + integrity sha512-t70bfa7HYEA1D9idDbmuv7YbsbVkQ+Hp+8KFSul4aE5e/i1bjCNIRYJZlA8Q8p0r9T8cF/RVvwUgRA//FydEyg== + big.js@^5.2.2: version "5.2.2" resolved "https://registry.yarnpkg.com/big.js/-/big.js-5.2.2.tgz#65f0af382f578bcdc742bd9c281e9cb2d7768328" integrity sha512-vyL2OymJxmarO8gxMr0mhChsO9QGwhynfuu4+MHTAW6czfq9humCB7rKpUjDd9YUiDPU4mzpyupFSvOClAwbmQ== -bignumber.js@^7.2.0: +bignumber.js@^7.2.0, bignumber.js@^7.2.1: version "7.2.1" resolved "https://registry.yarnpkg.com/bignumber.js/-/bignumber.js-7.2.1.tgz#80c048759d826800807c4bfd521e50edbba57a5f" integrity sha512-S4XzBk5sMB+Rcb/LNcpzXr57VRTxgAvaAEDAl1AwRx27j00hT84O6OkteE7u8UB3NuaaygCRrEpqox4uDOrbdQ== @@ -2585,18 +3667,46 @@ bignumber.js@^9.0.1: resolved "https://registry.yarnpkg.com/bignumber.js/-/bignumber.js-9.0.1.tgz#8d7ba124c882bfd8e43260c67475518d0689e4e5" integrity sha512-IdZR9mh6ahOBv/hYGiXyVuyCetmGJhtYkqLBpTStdhEGjegpPlUawydyaF3pbIOFynJTpllEs+NP+CS9jKFLjA== +binary-extensions@^1.0.0: + version "1.13.1" + resolved "https://registry.yarnpkg.com/binary-extensions/-/binary-extensions-1.13.1.tgz#598afe54755b2868a5330d2aff9d4ebb53209b65" + integrity sha512-Un7MIEDdUC5gNpcGDV97op1Ywk748MpHcFTHoYs6qnj1Z3j7I53VG3nwZhKzoBZmbdRNnb6WRdFlwl7tSDuZGw== + binary-extensions@^2.0.0: version "2.2.0" resolved "https://registry.yarnpkg.com/binary-extensions/-/binary-extensions-2.2.0.tgz#75f502eeaf9ffde42fc98829645be4ea76bd9e2d" integrity sha512-jDctJ/IVQbZoJykoeHbhXpOlNBqGNcwXJKJog42E5HDPUwQTSdjCHdihjj0DlnheQ7blbT6dHOafNAiS8ooQKA== -bindings@^1.2.1, bindings@^1.3.1, bindings@^1.5.0: +bindings@^1.2.1, bindings@^1.3.0, bindings@^1.3.1, bindings@^1.5.0: version "1.5.0" resolved "https://registry.yarnpkg.com/bindings/-/bindings-1.5.0.tgz#10353c9e945334bc0511a6d90b38fbc7c9c504df" integrity sha512-p2q/t/mhvuOj/UeLlV6566GD/guowlr0hHxClI0W9m7MWYkL1F0hLo+0Aexs9HSPCtR1SXQ0TD3MMKrXZajbiQ== dependencies: file-uri-to-path "1.0.0" +bip32@^2.0.5: + version "2.0.6" + resolved "https://registry.yarnpkg.com/bip32/-/bip32-2.0.6.tgz#6a81d9f98c4cd57d05150c60d8f9e75121635134" + integrity sha512-HpV5OMLLGTjSVblmrtYRfFFKuQB+GArM0+XP8HGWfJ5vxYBqo+DesvJwOdC2WJ3bCkZShGf0QIfoIpeomVzVdA== + dependencies: + "@types/node" "10.12.18" + bs58check "^2.1.1" + create-hash "^1.2.0" + create-hmac "^1.1.7" + tiny-secp256k1 "^1.1.3" + typeforce "^1.11.5" + wif "^2.0.6" + +bip39@^3.0.2: + version "3.0.4" + resolved "https://registry.yarnpkg.com/bip39/-/bip39-3.0.4.tgz#5b11fed966840b5e1b8539f0f54ab6392969b2a0" + integrity sha512-YZKQlb752TrUWqHWj7XAwCSjYEgGAk+/Aas3V7NyjQeZYsztO8JnQUaCWhcnL4T+jL8nvB8typ2jRPzTlgugNw== + dependencies: + "@types/node" "11.11.6" + create-hash "^1.1.0" + pbkdf2 "^3.0.9" + randombytes "^2.0.1" + bip66@^1.1.5: version "1.1.5" resolved "https://registry.yarnpkg.com/bip66/-/bip66-1.1.5.tgz#01fa8748785ca70955d5011217d1b3139969ca22" @@ -2604,6 +3714,27 @@ bip66@^1.1.5: dependencies: safe-buffer "^5.0.1" +bitcore-lib@^8.22.2, bitcore-lib@^8.25.10: + version "8.25.10" + resolved "https://registry.yarnpkg.com/bitcore-lib/-/bitcore-lib-8.25.10.tgz#4bbb30932dec65cb76e4d1d793f55d7e4a75f071" + integrity sha512-MyHpSg7aFRHe359RA/gdkaQAal3NswYZTLEuu0tGX1RGWXAYN9i/24fsjPqVKj+z0ua+gzAT7aQs0KiKXWCgKA== + dependencies: + bech32 "=1.1.3" + bn.js "=4.11.8" + bs58 "^4.0.1" + buffer-compare "=1.1.1" + elliptic "^6.5.3" + inherits "=2.0.1" + lodash "^4.17.20" + +bitcore-mnemonic@^8.22.2: + version "8.25.10" + resolved "https://registry.yarnpkg.com/bitcore-mnemonic/-/bitcore-mnemonic-8.25.10.tgz#43d7b73d9705a11fceef62e37089ad487e917c26" + integrity sha512-FeXxO37BLV5JRvxPmVFB91zRHalavV8H4TdQGt1/hz0AkoPymIV68OkuB+TptpjeYgatcgKPoPvPhglJkTzFQQ== + dependencies: + bitcore-lib "^8.25.10" + unorm "^1.4.1" + bl@^1.0.0: version "1.2.2" resolved "https://registry.yarnpkg.com/bl/-/bl-1.2.2.tgz#a160911717103c07410cef63ef51b397c025af9c" @@ -2612,12 +3743,28 @@ bl@^1.0.0: readable-stream "^2.3.5" safe-buffer "^5.1.1" +bl@^4.0.0: + version "4.1.0" + resolved "https://registry.yarnpkg.com/bl/-/bl-4.1.0.tgz#451535264182bec2fbbc83a62ab98cf11d9f7b3a" + integrity sha512-1W07cM9gS6DcLperZfFSj+bWLtaPGSOHWhPiGzXmvVJbRLdG82sH/Kn8EtW1VqWVA54AKf2h5k5BbnIbwF3h6w== + dependencies: + buffer "^5.5.0" + inherits "^2.0.4" + readable-stream "^3.4.0" + blakejs@^1.1.0: version "1.1.0" resolved "https://registry.yarnpkg.com/blakejs/-/blakejs-1.1.0.tgz#69df92ef953aa88ca51a32df6ab1c54a155fc7a5" integrity sha1-ad+S75U6qIylGjLfarHFShVfx6U= -bluebird@^3.5.0: +blob-to-it@^1.0.1: + version "1.0.2" + resolved "https://registry.yarnpkg.com/blob-to-it/-/blob-to-it-1.0.2.tgz#bc76550638ca13280dbd3f202422a6a132ffcc8d" + integrity sha512-yD8tikfTlUGEOSHExz4vDCIQFLaBPXIL0KcxGQt9RbwMVXBEh+jokdJyStvTXPgWrdKfwgk7RX8GPsgrYzsyng== + dependencies: + browser-readablestream-to-it "^1.0.2" + +bluebird@^3.5.0, bluebird@^3.5.2: version "3.7.2" resolved "https://registry.yarnpkg.com/bluebird/-/bluebird-3.7.2.tgz#9f229c15be272454ffa973ace0dbee79a1b0c36f" integrity sha512-XpNj6GDQzdfW+r2Wnn7xiSAd7TM3jzkxGXBGTtWKuSXv1xUV+azxAm8jdWZN06QTQk+2N2XB9jRDkvbmQmcRtg== @@ -2627,7 +3774,7 @@ bn.js@4.11.6: resolved "https://registry.yarnpkg.com/bn.js/-/bn.js-4.11.6.tgz#53344adb14617a13f6e8dd2ce28905d1c0ba3215" integrity sha1-UzRK2xRhehP26N0s4okF0cC6MhU= -bn.js@4.11.8, bn.js@^4.0.0, bn.js@^4.1.0, bn.js@^4.1.1, bn.js@^4.11.0, bn.js@^4.11.1, bn.js@^4.11.6, bn.js@^4.11.8, bn.js@^4.4.0: +bn.js@4.11.8, bn.js@=4.11.8, bn.js@^4.0.0, bn.js@^4.1.0, bn.js@^4.1.1, bn.js@^4.11.0, bn.js@^4.11.1, bn.js@^4.11.6, bn.js@^4.11.8, bn.js@^4.4.0: version "4.11.8" resolved "https://registry.yarnpkg.com/bn.js/-/bn.js-4.11.8.tgz#2cde09eb5ee341f484746bb0309b3253b1b1442f" integrity sha512-ItfYfPLkWHUjckQCk8xC+LwxgK8NYcXywGigJgSwOP8Y2iyWT4f2vsZnoOXTTbo+o5yXmIUJ4gn5538SO5S3gA== @@ -2637,12 +3784,7 @@ bn.js@^4.11.9: resolved "https://registry.yarnpkg.com/bn.js/-/bn.js-4.12.0.tgz#775b3f278efbb9718eec7361f483fb36fbbfea88" integrity sha512-c98Bf3tPniI+scsdk237ku1Dc3ujXQTSgyiPUDEOe7tRkhrqridvh8klBv0HCEso1OLOYcHuCv/cS6DNxKH+ZA== -bn.js@^5.1.1: - version "5.1.1" - resolved "https://registry.yarnpkg.com/bn.js/-/bn.js-5.1.1.tgz#48efc4031a9c4041b9c99c6941d903463ab62eb5" - integrity sha512-IUTD/REb78Z2eodka1QZyyEk66pciRcP6Sroka0aI3tG/iwIdYLrBD62RsubR7vqdt3WyX8p4jxeatzmRSphtA== - -bn.js@^5.1.3: +bn.js@^5.0.0, bn.js@^5.1.2, bn.js@^5.1.3, bn.js@^5.2.0: version "5.2.0" resolved "https://registry.yarnpkg.com/bn.js/-/bn.js-5.2.0.tgz#358860674396c6997771a9d051fcc1b57d4ae002" integrity sha512-D7iWRBvnZE8ecXiLj/9wbxH7Tk79fAh8IHaTNq1RWRixsS02W+5qS+iE9yq6RYl0asXx5tw0bLhmT5pIfbSquw== @@ -2663,11 +3805,24 @@ body-parser@1.19.0, body-parser@^1.16.0, body-parser@^1.18.3: raw-body "2.4.0" type-is "~1.6.17" -boolbase@~1.0.0: +boolbase@^1.0.0, boolbase@~1.0.0: version "1.0.0" resolved "https://registry.yarnpkg.com/boolbase/-/boolbase-1.0.0.tgz#68dff5fbe60c51eb37725ea9e3ed310dcc1e776e" integrity sha1-aN/1++YMUes3cl6p4+0xDcwed24= +borc@^2.1.2: + version "2.1.2" + resolved "https://registry.yarnpkg.com/borc/-/borc-2.1.2.tgz#6ce75e7da5ce711b963755117dd1b187f6f8cf19" + integrity sha512-Sy9eoUi4OiKzq7VovMn246iTo17kzuyHJKomCfpWMlI6RpfN1gk95w7d7gH264nApVLg0HZfcpz62/g4VH1Y4w== + dependencies: + bignumber.js "^9.0.0" + buffer "^5.5.0" + commander "^2.15.0" + ieee754 "^1.1.13" + iso-url "~0.4.7" + json-text-sequence "~0.1.0" + readable-stream "^3.6.0" + brace-expansion@^1.1.7: version "1.1.11" resolved "https://registry.yarnpkg.com/brace-expansion/-/brace-expansion-1.1.11.tgz#3c7fcbf529d87226f3d2f52b966ff5271eb441dd" @@ -2685,7 +3840,7 @@ braces@^1.8.2: preserve "^0.2.0" repeat-element "^1.1.2" -braces@^2.3.1: +braces@^2.3.1, braces@^2.3.2: version "2.3.2" resolved "https://registry.yarnpkg.com/braces/-/braces-2.3.2.tgz#5979fd3f14cd531565e5fa2df1abfff1dfaee729" integrity sha512-aNdbnj9P8PjdXU4ybaWLK2IF3jc/EoDYbC7AazW6to3TRsfXxscC9UXOB5iDiEQrkyIbWp2SLQda4+QAa7nc3w== @@ -2713,6 +3868,16 @@ brorand@^1.0.1, brorand@^1.1.0: resolved "https://registry.yarnpkg.com/brorand/-/brorand-1.1.0.tgz#12c25efe40a45e3c323eb8675a0a0ce57b22371f" integrity sha1-EsJe/kCkXjwyPrhnWgoM5XsiNx8= +browser-headers@^0.4.0, browser-headers@^0.4.1: + version "0.4.1" + resolved "https://registry.yarnpkg.com/browser-headers/-/browser-headers-0.4.1.tgz#4308a7ad3b240f4203dbb45acedb38dc2d65dd02" + integrity sha512-CA9hsySZVo9371qEHjHZtYxV2cFtVj5Wj/ZHi8ooEsrtm4vOnl9Y9HmyYWk9q+05d7K3rdoAE0j3MVEFVvtQtg== + +browser-readablestream-to-it@^1.0.1, browser-readablestream-to-it@^1.0.2: + version "1.0.2" + resolved "https://registry.yarnpkg.com/browser-readablestream-to-it/-/browser-readablestream-to-it-1.0.2.tgz#f6b8d18e7a35b0321359261a32aa2c70f46921c4" + integrity sha512-lv4M2Z6RKJpyJijJzBQL5MNssS7i8yedl+QkhnLCyPtgNGNSXv1KthzUnye9NlRAtBAI80X6S9i+vK09Rzjcvg== + browser-stdout@1.3.1: version "1.3.1" resolved "https://registry.yarnpkg.com/browser-stdout/-/browser-stdout-1.3.1.tgz#baa559ee14ced73452229bad7326467c61fabd60" @@ -2770,6 +3935,13 @@ browserify-sign@^4.0.0: inherits "^2.0.1" parse-asn1 "^5.0.0" +browserify-zlib@^0.2.0: + version "0.2.0" + resolved "https://registry.yarnpkg.com/browserify-zlib/-/browserify-zlib-0.2.0.tgz#2869459d9aa3be245fe8fe2ca1f46e2e7f54d73f" + integrity sha512-Z942RysHXmJrhqk88FmKBVq/v5tqmSkDz7p54G/MGyjMnCFFnC79XWNbg+Vta8W6Wb2qtSZTSxIGkJrRpCFEiA== + dependencies: + pako "~1.0.5" + browserslist@^4.14.5: version "4.16.3" resolved "https://registry.yarnpkg.com/browserslist/-/browserslist-4.16.3.tgz#340aa46940d7db878748567c5dea24a48ddf3717" @@ -2781,14 +3953,14 @@ browserslist@^4.14.5: escalade "^3.1.1" node-releases "^1.1.70" -bs58@^4.0.0: +bs58@^4.0.0, bs58@^4.0.1: version "4.0.1" resolved "https://registry.yarnpkg.com/bs58/-/bs58-4.0.1.tgz#be161e76c354f6f788ae4071f63f34e8c4f0a42a" integrity sha1-vhYedsNU9veIrkBx9j806MTwpCo= dependencies: base-x "^3.0.2" -bs58check@^2.1.2: +bs58check@<3.0.0, bs58check@^2.1.1, bs58check@^2.1.2: version "2.1.2" resolved "https://registry.yarnpkg.com/bs58check/-/bs58check-2.1.2.tgz#53b018291228d82a5aa08e7d796fdafda54aebfc" integrity sha512-0TS1jicxdU09dwJMNZtVAfzPi6Q6QeN0pM1Fkzrjn+XYHvzMKPU3pHVpva+769iNVSfIYWf7LJ6WR+BuuMf8cA== @@ -2804,6 +3976,11 @@ bser@2.1.1: dependencies: node-int64 "^0.4.0" +btoa-lite@^1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/btoa-lite/-/btoa-lite-1.0.0.tgz#337766da15801210fdd956c22e9c6891ab9d0337" + integrity sha1-M3dm2hWAEhD92VbCLpxokaudAzc= + buffer-alloc-unsafe@^1.1.0: version "1.1.0" resolved "https://registry.yarnpkg.com/buffer-alloc-unsafe/-/buffer-alloc-unsafe-1.1.0.tgz#bd7dc26ae2972d0eda253be061dba992349c19f0" @@ -2817,6 +3994,11 @@ buffer-alloc@^1.2.0: buffer-alloc-unsafe "^1.1.0" buffer-fill "^1.0.0" +buffer-compare@=1.1.1: + version "1.1.1" + resolved "https://registry.yarnpkg.com/buffer-compare/-/buffer-compare-1.1.1.tgz#5be7be853af89198d1f4ddc090d1d66a48aef596" + integrity sha1-W+e+hTr4kZjR9N3AkNHWakiu9ZY= + buffer-crc32@~0.2.3: version "0.2.13" resolved "https://registry.yarnpkg.com/buffer-crc32/-/buffer-crc32-0.2.13.tgz#0d333e3f00eac50aa1454abd30ef8c2a5d9a7242" @@ -2837,6 +4019,13 @@ buffer-from@1.1.1, buffer-from@^1.0.0: resolved "https://registry.yarnpkg.com/buffer-from/-/buffer-from-1.1.1.tgz#32713bc028f75c02fdb710d7c7bcec1f2c6070ef" integrity sha512-MQcXEUbCKtEo7bhqEs6560Hyd4XaovZlO/k9V3hjVUF/zwW7KBVdSK4gIt/bzwS9MbR5qob+F5jusZsb0YQK2A== +buffer-pipe@0.0.3: + version "0.0.3" + resolved "https://registry.yarnpkg.com/buffer-pipe/-/buffer-pipe-0.0.3.tgz#242197681d4591e7feda213336af6c07a5ce2409" + integrity sha512-GlxfuD/NrKvCNs0Ut+7b1IHjylfdegMBxQIlZHj7bObKVQBxB5S84gtm2yu1mQ8/sSggceWBDPY0cPXgvX2MuA== + dependencies: + safe-buffer "^5.1.2" + buffer-to-arraybuffer@^0.0.5: version "0.0.5" resolved "https://registry.yarnpkg.com/buffer-to-arraybuffer/-/buffer-to-arraybuffer-0.0.5.tgz#6064a40fa76eb43c723aba9ef8f6e1216d10511a" @@ -2847,6 +4036,23 @@ buffer-xor@^1.0.3: resolved "https://registry.yarnpkg.com/buffer-xor/-/buffer-xor-1.0.3.tgz#26e61ed1422fb70dd42e6e36729ed51d855fe8d9" integrity sha1-JuYe0UIvtw3ULm42cp7VHYVf6Nk= +buffer@6.0.3, buffer@^6.0.1: + version "6.0.3" + resolved "https://registry.yarnpkg.com/buffer/-/buffer-6.0.3.tgz#2ace578459cc8fbe2a70aaa8f52ee63b6a74c6c6" + integrity sha512-FTiCpNxtwiZZHEZbcbTIcZjERVICn9yq/pDFkTl95/AxzD1naBctN7YO68riM/gLSDY7sdrMby8hofADYuuqOA== + dependencies: + base64-js "^1.3.1" + ieee754 "^1.2.1" + +buffer@^4.3.0: + version "4.9.2" + resolved "https://registry.yarnpkg.com/buffer/-/buffer-4.9.2.tgz#230ead344002988644841ab0244af8c44bbe3ef8" + integrity sha512-xq+q3SRMOxGivLhBNaUdC64hDTQwejJ+H0T/NB1XMtTVEwNTrfFF3gAxiyW0Bu/xWEGhjVKgUcMhCrUy2+uCWg== + dependencies: + base64-js "^1.0.2" + ieee754 "^1.1.4" + isarray "^1.0.0" + buffer@^5.0.5, buffer@^5.2.1: version "5.4.3" resolved "https://registry.yarnpkg.com/buffer/-/buffer-5.4.3.tgz#3fbc9c69eb713d323e3fc1a895eee0710c072115" @@ -2855,7 +4061,7 @@ buffer@^5.0.5, buffer@^5.2.1: base64-js "^1.0.2" ieee754 "^1.1.4" -buffer@^5.5.0, buffer@^5.6.0, buffer@^5.7.0: +buffer@^5.4.3, buffer@^5.5.0, buffer@^5.6.0, buffer@^5.7.0: version "5.7.1" resolved "https://registry.yarnpkg.com/buffer/-/buffer-5.7.1.tgz#ba62e7c13133053582197160851a8f648e99eed0" integrity sha512-EHcyIPBQ4BSGlvjB16k5KgAJ27CIsHY/2JBmCRReo48y9rQ3MaUzWX3KVlBa4U7MyX02HdVj0K7C3WaB3ju7FQ== @@ -2875,6 +4081,11 @@ builtin-modules@^1.1.1: resolved "https://registry.yarnpkg.com/builtin-modules/-/builtin-modules-1.1.1.tgz#270f076c5a72c02f5b65a47df94c5fe3a278892f" integrity sha1-Jw8HbFpywC9bZaR9+Uxf46J4iS8= +builtin-status-codes@^3.0.0: + version "3.0.0" + resolved "https://registry.yarnpkg.com/builtin-status-codes/-/builtin-status-codes-3.0.0.tgz#85982878e21b98e1c66425e03d0174788f569ee8" + integrity sha1-hZgoeOIbmOHGZCXgPQF0eI9Wnug= + busboy@^0.3.1: version "0.3.1" resolved "https://registry.yarnpkg.com/busboy/-/busboy-0.3.1.tgz#170899274c5bf38aae27d5c62b71268cd585fd1b" @@ -2947,6 +4158,11 @@ camel-case@^3.0.0: no-case "^2.2.0" upper-case "^1.1.1" +camelcase@^1.0.2: + version "1.2.1" + resolved "https://registry.yarnpkg.com/camelcase/-/camelcase-1.2.1.tgz#9bb5304d2e0b56698b2c758b08a3eaa9daa58a39" + integrity sha1-m7UwTS4LVmmLLHWLCKPqqdqlijk= + camelcase@^2.0.1: version "2.1.1" resolved "https://registry.yarnpkg.com/camelcase/-/camelcase-2.1.1.tgz#7c1d16d679a1bbe59ca02cacecfb011e201f5a1f" @@ -2957,6 +4173,11 @@ camelcase@^3.0.0: resolved "https://registry.yarnpkg.com/camelcase/-/camelcase-3.0.0.tgz#32fc4b9fcdaf845fcdf7e73bb97cac2261f0ab0a" integrity sha1-MvxLn82vhF/N9+c7uXysImHwqwo= +camelcase@^4.1.0: + version "4.1.0" + resolved "https://registry.yarnpkg.com/camelcase/-/camelcase-4.1.0.tgz#d545635be1e33c542649c69173e5de6acfae34dd" + integrity sha1-1UVjW+HjPFQmScaRc+Xeas+uNN0= + camelcase@^5.0.0, camelcase@^5.3.1: version "5.3.1" resolved "https://registry.yarnpkg.com/camelcase/-/camelcase-5.3.1.tgz#e3c9b31569e106811df242f715725a1f4c494320" @@ -2990,6 +4211,14 @@ cbor@^5.1.0: bignumber.js "^9.0.1" nofilter "^1.0.4" +center-align@^0.1.1: + version "0.1.3" + resolved "https://registry.yarnpkg.com/center-align/-/center-align-0.1.3.tgz#aa0d32629b6ee972200411cbd4461c907bc2b7ad" + integrity sha1-qg0yYptu6XIgBBHL1EYckHvCt60= + dependencies: + align-text "^0.1.3" + lazy-cache "^1.0.3" + chai-as-promised@^7.1.1: version "7.1.1" resolved "https://registry.yarnpkg.com/chai-as-promised/-/chai-as-promised-7.1.1.tgz#08645d825deb8696ee61725dbf590c012eb00ca0" @@ -3001,16 +4230,16 @@ chai-as-promised@^7.1.1: version "2.0.2" resolved "https://codeload.github.com/ren-forks/chai-bignumber/tar.gz/afa6f46dcbef0b7e622dc27b9b3354fc67afafbc" -chai@^4.2.0: - version "4.2.0" - resolved "https://registry.yarnpkg.com/chai/-/chai-4.2.0.tgz#760aa72cf20e3795e84b12877ce0e83737aa29e5" - integrity sha512-XQU3bhBukrOsQCuwZndwGcCVQHyZi53fQ6Ys1Fym7E4olpIqqZZhhoFJoaKVvV17lWQoXYwgWN2nF5crA8J2jw== +chai@^4.3.4: + version "4.3.4" + resolved "https://registry.yarnpkg.com/chai/-/chai-4.3.4.tgz#b55e655b31e1eac7099be4c08c21964fce2e6c49" + 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.0" + pathval "^1.1.1" type-detect "^4.0.5" chalk@1.1.3, chalk@^1.1.3: @@ -3024,7 +4253,7 @@ chalk@1.1.3, chalk@^1.1.3: strip-ansi "^3.0.0" supports-color "^2.0.0" -chalk@^2.0.0, chalk@^2.0.1, chalk@^2.3.0, chalk@^2.4.1, chalk@^2.4.2: +chalk@^2.0.0, chalk@^2.0.1, chalk@^2.3.0, chalk@^2.3.2, chalk@^2.4.1, chalk@^2.4.2: version "2.4.2" resolved "https://registry.yarnpkg.com/chalk/-/chalk-2.4.2.tgz#cd42541677a54333cf541a49108c1432b44c9424" integrity sha512-Mti+f9lpJNcwF4tWV8/OrTTtF1gZi+f8FqlyAdouralcFWFQWF2+NgCHShjkCb+IFBLq9buZwE1xckQU4peSuQ== @@ -3084,6 +4313,17 @@ check-error@^1.0.2: resolved "https://registry.yarnpkg.com/check-error/-/check-error-1.0.2.tgz#574d312edd88bb5dd8912e9286dd6c0aed4aac82" integrity sha1-V00xLt2Iu13YkS6Sht1sCu1KrII= +cheerio-select@^1.5.0: + version "1.5.0" + resolved "https://registry.yarnpkg.com/cheerio-select/-/cheerio-select-1.5.0.tgz#faf3daeb31b17c5e1a9dabcee288aaf8aafa5823" + integrity sha512-qocaHPv5ypefh6YNxvnbABM07KMxExbtbfuJoIie3iZXX1ERwYmJcIiRrr9H05ucQP1k28dav8rpdDgjQd8drg== + dependencies: + css-select "^4.1.3" + css-what "^5.0.1" + domelementtype "^2.2.0" + domhandler "^4.2.0" + domutils "^2.7.0" + cheerio@0.20.0: version "0.20.0" resolved "https://registry.yarnpkg.com/cheerio/-/cheerio-0.20.0.tgz#5c710f2bab95653272842ba01c6ea61b3545ec35" @@ -3109,6 +4349,34 @@ cheerio@1.0.0-rc.2: lodash "^4.15.0" parse5 "^3.0.1" +cheerio@^1.0.0-rc.2: + version "1.0.0-rc.10" + resolved "https://registry.yarnpkg.com/cheerio/-/cheerio-1.0.0-rc.10.tgz#2ba3dcdfcc26e7956fc1f440e61d51c643379f3e" + integrity sha512-g0J0q/O6mW8z5zxQ3A8E8J1hUgp4SMOvEoW/x84OwyHKe/Zccz83PVT4y5Crcr530FV6NgmKI1qvGTKVl9XXVw== + dependencies: + cheerio-select "^1.5.0" + dom-serializer "^1.3.2" + domhandler "^4.2.0" + htmlparser2 "^6.1.0" + parse5 "^6.0.1" + parse5-htmlparser2-tree-adapter "^6.0.1" + tslib "^2.2.0" + +chokidar@3.3.0: + version "3.3.0" + resolved "https://registry.yarnpkg.com/chokidar/-/chokidar-3.3.0.tgz#12c0714668c55800f659e262d4962a97faf554a6" + integrity sha512-dGmKLDdT3Gdl7fBUe8XK+gAtGmzy5Fn0XkkWQuYxGIgWVPPse2CxFA5mtrlD0TOHaHjEUqkWNyP1XdHoJES/4A== + dependencies: + anymatch "~3.1.1" + braces "~3.0.2" + glob-parent "~5.1.0" + is-binary-path "~2.1.0" + is-glob "~4.0.1" + normalize-path "~3.0.0" + readdirp "~3.2.0" + optionalDependencies: + fsevents "~2.1.1" + chokidar@3.4.2: version "3.4.2" resolved "https://registry.yarnpkg.com/chokidar/-/chokidar-3.4.2.tgz#38dc8e658dec3809741eb3ef7bb0a47fe424232d" @@ -3124,6 +4392,40 @@ chokidar@3.4.2: optionalDependencies: fsevents "~2.1.2" +chokidar@^2.1.8: + version "2.1.8" + resolved "https://registry.yarnpkg.com/chokidar/-/chokidar-2.1.8.tgz#804b3a7b6a99358c3c5c61e71d8728f041cff917" + integrity sha512-ZmZUazfOzf0Nve7duiCKD23PFSCs4JPoYyccjUFF3aQkQadqBhfzhjkwBH2mNOG9cTBwhamM37EIsIkZw3nRgg== + dependencies: + anymatch "^2.0.0" + async-each "^1.0.1" + braces "^2.3.2" + glob-parent "^3.1.0" + inherits "^2.0.3" + is-binary-path "^1.0.0" + is-glob "^4.0.0" + normalize-path "^3.0.0" + path-is-absolute "^1.0.0" + readdirp "^2.2.1" + upath "^1.1.1" + optionalDependencies: + fsevents "^1.2.7" + +chokidar@^3.4.1: + version "3.5.2" + resolved "https://registry.yarnpkg.com/chokidar/-/chokidar-3.5.2.tgz#dba3976fcadb016f66fd365021d91600d01c1e75" + integrity sha512-ekGhOnNVPgT77r4K/U3GDhu+FQ2S8TnK/s2KbIGXi0SZWuwkZ2QNyfWdZW+TVfn84DpEP7rLeCt2UI6bJ8GwbQ== + dependencies: + anymatch "~3.1.2" + braces "~3.0.2" + glob-parent "~5.1.2" + is-binary-path "~2.1.0" + is-glob "~4.0.1" + normalize-path "~3.0.0" + readdirp "~3.6.0" + optionalDependencies: + fsevents "~2.3.2" + chownr@^1.1.1: version "1.1.4" resolved "https://registry.yarnpkg.com/chownr/-/chownr-1.1.4.tgz#6fc9d7b42d32a583596337666e7d08084da2cc6b" @@ -3145,6 +4447,16 @@ cids@^0.7.1: multicodec "^1.0.0" multihashes "~0.4.15" +cids@^1.0.0, cids@^1.1.4, cids@^1.1.5: + version "1.1.7" + resolved "https://registry.yarnpkg.com/cids/-/cids-1.1.7.tgz#06aee89b9b5d615a7def86f2308a72bb642b7c7e" + integrity sha512-dlh+K0hMwFAFFjWQ2ZzxOhgGVNVREPdmk8cqHFui2U4sOodcemLMxdE5Ujga4cDcDQhWfldEPThkfu6KWBt1eA== + dependencies: + multibase "^4.0.1" + multicodec "^3.0.1" + multihashes "^4.0.1" + uint8arrays "^2.1.3" + cipher-base@^1.0.0, cipher-base@^1.0.1, cipher-base@^1.0.3: version "1.0.4" resolved "https://registry.yarnpkg.com/cipher-base/-/cipher-base-1.0.4.tgz#8760e4ecc272f4c363532f926d874aae2c1397de" @@ -3153,6 +4465,11 @@ cipher-base@^1.0.0, cipher-base@^1.0.1, cipher-base@^1.0.3: inherits "^2.0.1" safe-buffer "^5.0.1" +circular-json@^0.5.9: + version "0.5.9" + resolved "https://registry.yarnpkg.com/circular-json/-/circular-json-0.5.9.tgz#932763ae88f4f7dead7a0d09c8a51a4743a53b1d" + integrity sha512-4ivwqHpIFJZBuhN3g/pEcdbnGUywkBblloGbkglyloVjjR3uT6tieI89MVOfbP2tHX5sgb01FuLgAOzebNlJNQ== + circular@^1.0.5: version "1.0.5" resolved "https://registry.yarnpkg.com/circular/-/circular-1.0.5.tgz#7da77af98bbde9ce4b5b358cd556b5dded2d3149" @@ -3199,7 +4516,7 @@ cli-cursor@^3.0.0: dependencies: restore-cursor "^3.1.0" -cli-logger@0.5.40: +cli-logger@^0.5.40: version "0.5.40" resolved "https://registry.yarnpkg.com/cli-logger/-/cli-logger-0.5.40.tgz#097f0e11b072c7c698a26c47f588a29c20b48b0b" integrity sha1-CX8OEbByx8aYomxH9YiinCC0iws= @@ -3234,6 +4551,15 @@ cli-util@~1.1.27: dependencies: cli-regexp "~0.1.0" +cliui@^2.1.0: + version "2.1.0" + resolved "https://registry.yarnpkg.com/cliui/-/cliui-2.1.0.tgz#4b475760ff80264c762c3a1719032e91c7fea0d1" + integrity sha1-S0dXYP+AJkx2LDoXGQMukcf+oNE= + dependencies: + center-align "^0.1.1" + right-align "^0.1.1" + wordwrap "0.0.2" + cliui@^3.2.0: version "3.2.0" resolved "https://registry.yarnpkg.com/cliui/-/cliui-3.2.0.tgz#120601537a916d29940f934da3b48d585a39213d" @@ -3288,6 +4614,11 @@ clone@^1.0.0, clone@^1.0.2: resolved "https://registry.yarnpkg.com/clone/-/clone-1.0.4.tgz#da309cc263df15994c688ca902179ca3c7cd7c7e" integrity sha1-2jCcwmPfFZlMaIypAheco8fNfH4= +code-error-fragment@0.0.230: + version "0.0.230" + resolved "https://registry.yarnpkg.com/code-error-fragment/-/code-error-fragment-0.0.230.tgz#d736d75c832445342eca1d1fedbf17d9618b14d7" + integrity sha512-cadkfKp6932H8UkhzE/gcUqhRMNf8jHzkAN7+5Myabswaghu4xABTgPHDCjW+dBAJxj/SpkTYokpzDqY4pCzQw== + code-point-at@^1.0.0: version "1.1.0" resolved "https://registry.yarnpkg.com/code-point-at/-/code-point-at-1.1.0.tgz#0d070b4d043a5bea33a2f1a40e2edb3d9a4ccf77" @@ -3340,7 +4671,7 @@ colorette@^1.2.1: resolved "https://registry.yarnpkg.com/colorette/-/colorette-1.2.2.tgz#cbcc79d5e99caea2dbf10eb3a26fd8b3e6acfa94" integrity sha512-MKGMzyfeuutC/ZJ1cba9NqcNpfeqMUcYmyF1ZFY6/Cn7CNSAKx6a+s48sqLqyAiZuaP2TcqMhoo+dlwFnVxT9w== -colors@^1.1.2: +colors@^1.1.2, colors@^1.4.0: version "1.4.0" resolved "https://registry.yarnpkg.com/colors/-/colors-1.4.0.tgz#c50491479d4c1bdaed2c9ced32cf7c7dc2360f78" integrity sha512-a+UqTh4kgZg/SlGvfbzDHpgRu7AAQOmmqRHJnxhRZICKFUT91brVhNNt58CMWU9PsBbv3PDCZUHbVxuDiH2mtA== @@ -3366,17 +4697,12 @@ command-line-args@^4.0.7: find-replace "^1.0.3" typical "^2.6.1" -commander@2.15.1: - version "2.15.1" - resolved "https://registry.yarnpkg.com/commander/-/commander-2.15.1.tgz#df46e867d0fc2aec66a34662b406a9ccafff5b0f" - integrity sha512-VlfT9F3V0v+jr4yxPc5gg9s62/fIVWsd2Bk2iD435um1NlGMYdVCq+MjcXnhYq2icNOizHr1kK+5TI6H0Hy0ag== - commander@3.0.2, commander@^3.0.0: version "3.0.2" resolved "https://registry.yarnpkg.com/commander/-/commander-3.0.2.tgz#6837c3fb677ad9933d1cfba42dd14d5117d6b39e" integrity sha512-Gar0ASD4BDyKC4hl4DwHqDrmvjoxWKZigVnAbn5H1owvm4CxCPdb0HQDehwNYMJpla5+M2tPmPARzhtYuwpHow== -commander@^2.12.1, commander@^2.19.0, commander@^2.20.3, commander@~2.20.3: +commander@^2.12.1, commander@^2.15.0, commander@^2.19.0, commander@^2.20.3, commander@~2.20.3: version "2.20.3" resolved "https://registry.yarnpkg.com/commander/-/commander-2.20.3.tgz#fd485e84c03eb4881c20722ba48035e8531aeb33" integrity sha512-GpVkmM8vF2vQUkj2LvZmD35JxeJOLCwJ9cUkugyk2nuhbv3+mJvpLYYt+0+USMxE+oj+ey/lJEnhZw75x/OMcQ== @@ -3398,6 +4724,11 @@ component-emitter@^1.2.1: resolved "https://registry.yarnpkg.com/component-emitter/-/component-emitter-1.3.0.tgz#16e4070fba8ae29b679f2215853ee181ab2eabc0" integrity sha512-Rd3se6QB+sO1TwqZjscQrurpEPIfO0/yYnSin6Q/rD3mOutHvUrCAhJub3r90uNb+SESBuE0QYoB90YdfatsRg== +compound-subject@0.0.1: + version "0.0.1" + resolved "https://registry.yarnpkg.com/compound-subject/-/compound-subject-0.0.1.tgz#271554698a15ae608b1dfcafd30b7ba1ea892c4b" + integrity sha1-JxVUaYoVrmCLHfyv0wt7oeqJLEs= + concat-map@0.0.1: version "0.0.1" resolved "https://registry.yarnpkg.com/concat-map/-/concat-map-0.0.1.tgz#d8a96bd77fd68df7793a73036a3ba0d5405d477b" @@ -3434,6 +4765,11 @@ configstore@^4.0.0: write-file-atomic "^2.0.0" xdg-basedir "^3.0.0" +console-browserify@^1.1.0: + version "1.2.0" + resolved "https://registry.yarnpkg.com/console-browserify/-/console-browserify-1.2.0.tgz#67063cef57ceb6cf4993a2ab3a55840ae8c49336" + integrity sha512-ZMkYO/LkF17QvCPqM0gxw8yUzigAOZOSWSHg91FH6orS7vcEj5dVZTidN2fQ14yBSdg97RqhSNwLUXInd52OTA== + console-control-strings@^1.0.0, console-control-strings@~1.1.0: version "1.1.0" resolved "https://registry.yarnpkg.com/console-control-strings/-/console-control-strings-1.1.0.tgz#3d7cf4464db6446ea644bf4b39507f9851008e8e" @@ -3447,6 +4783,11 @@ constant-case@^2.0.0: snake-case "^2.1.0" upper-case "^1.1.1" +constants-browserify@^1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/constants-browserify/-/constants-browserify-1.0.0.tgz#c20b96d8c617748aaf1c16021760cd27fcb8cb75" + integrity sha1-wguW2MYXdIqvHBYCF2DNJ/y4y3U= + content-disposition@0.5.3: version "0.5.3" resolved "https://registry.yarnpkg.com/content-disposition/-/content-disposition-0.5.3.tgz#e130caf7e7279087c5616c2007d0485698984fbd" @@ -3505,6 +4846,11 @@ core-js@^3.0.1: resolved "https://registry.yarnpkg.com/core-js/-/core-js-3.9.1.tgz#cec8de593db8eb2a85ffb0dbdeb312cb6e5460ae" integrity sha512-gSjRvzkxQc1zjM/5paAmL4idJBFzuJoo+jDjF1tStYFMV2ERfD02HhahhCGXUyHxQRG4yFKVSdO6g62eoRMcDg== +core-js@^3.2.1: + version "3.16.2" + resolved "https://registry.yarnpkg.com/core-js/-/core-js-3.16.2.tgz#3f485822889c7fc48ef463e35be5cc2a4a01a1f4" + integrity sha512-P0KPukO6OjMpjBtHSceAZEWlDD1M2Cpzpg6dBbrjFqFhBHe/BwhxaP820xKOjRn/lZRQirrCusIpLS/n2sgXLQ== + core-util-is@1.0.2, core-util-is@~1.0.0: version "1.0.2" resolved "https://registry.yarnpkg.com/core-util-is/-/core-util-is-1.0.2.tgz#b5fd54220aa2bc5ab57aab7140c940754503c1a7" @@ -3518,16 +4864,24 @@ cors@^2.8.1, cors@^2.8.4: object-assign "^4" vary "^1" -coveralls@^3.0.9: - version "3.0.9" - resolved "https://registry.yarnpkg.com/coveralls/-/coveralls-3.0.9.tgz#8cfc5a5525f84884e2948a0bf0f1c0e90aac0420" - integrity sha512-nNBg3B1+4iDox5A5zqHKzUTiwl2ey4k2o0NEcVZYvl+GOSJdKBj4AJGKLv6h3SvWch7tABHePAQOSZWM9E2hMg== +coveralls@^3.1.1: + version "3.1.1" + resolved "https://registry.yarnpkg.com/coveralls/-/coveralls-3.1.1.tgz#f5d4431d8b5ae69c5079c8f8ca00d64ac77cf081" + integrity sha512-+dxnG2NHncSD1NrqbSM3dn/lE57O6Qf/koe9+I7c+wzkqRmEvcp0kgJdxKInzYzkICKkFMZsX3Vct3++tsF9ww== dependencies: js-yaml "^3.13.1" lcov-parse "^1.0.0" log-driver "^1.2.7" - minimist "^1.2.0" - request "^2.88.0" + minimist "^1.2.5" + request "^2.88.2" + +crc-32@^1.2.0: + version "1.2.0" + resolved "https://registry.yarnpkg.com/crc-32/-/crc-32-1.2.0.tgz#cb2db6e29b88508e32d9dd0ec1693e7b41a18208" + 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.3" @@ -3560,6 +4914,11 @@ create-hmac@^1.1.0, create-hmac@^1.1.2, create-hmac@^1.1.4, create-hmac@^1.1.7: safe-buffer "^5.0.1" sha.js "^2.4.8" +create-require@^1.1.0: + version "1.1.1" + resolved "https://registry.yarnpkg.com/create-require/-/create-require-1.1.1.tgz#c1d7e8f1e5f6cfc9ff65f9cd352d37348756c333" + integrity sha512-dcKFX3jn0MpIaXjisoRvexIJVEKzaq7z2rZKxf+MSr9TkdmHmsU4m2lcLojrj/FHl8mk5VxMmYA+ftRkP/3oKQ== + cross-fetch@3.0.6: version "3.0.6" resolved "https://registry.yarnpkg.com/cross-fetch/-/cross-fetch-3.0.6.tgz#3a4040bc8941e653e0e9cf17f29ebcd177d3365c" @@ -3574,6 +4933,15 @@ cross-fetch@^3.0.4: dependencies: node-fetch "2.6.1" +cross-spawn@^5.0.1: + version "5.1.0" + resolved "https://registry.yarnpkg.com/cross-spawn/-/cross-spawn-5.1.0.tgz#e8bd0efee58fcff6f8f94510a0a554bbfa235449" + integrity sha1-6L0O/uWPz/b4+UUQoKVUu/ojVEk= + dependencies: + lru-cache "^4.0.1" + shebang-command "^1.2.0" + which "^1.2.9" + cross-spawn@^6.0.0, cross-spawn@^6.0.5: version "6.0.5" resolved "https://registry.yarnpkg.com/cross-spawn/-/cross-spawn-6.0.5.tgz#4a5ec7c64dfae22c3a14124dbacdee846d80cbc4" @@ -3590,7 +4958,20 @@ cross-spawn@^6.0.0, cross-spawn@^6.0.5: resolved "https://registry.yarnpkg.com/crypt/-/crypt-0.0.2.tgz#88d7ff7ec0dfb86f713dc87bbb42d044d3e6c41b" integrity sha1-iNf/fsDfuG9xPch7u0LQRNPmxBs= -crypto-browserify@3.12.0: +crypto-addr-codec@^0.1.7: + version "0.1.7" + resolved "https://registry.yarnpkg.com/crypto-addr-codec/-/crypto-addr-codec-0.1.7.tgz#e16cea892730178fe25a38f6d15b680cab3124ae" + integrity sha512-X4hzfBzNhy4mAc3UpiXEC/L0jo5E8wAa9unsnA8nNXYzXjCcGk83hfC5avJWCSGT8V91xMnAS9AKMHmjw5+XCg== + dependencies: + base-x "^3.0.8" + big-integer "1.6.36" + blakejs "^1.1.0" + bs58 "^4.0.1" + ripemd160-min "0.0.6" + safe-buffer "^5.2.0" + sha3 "^2.1.1" + +crypto-browserify@3.12.0, crypto-browserify@^3.11.0: version "3.12.0" resolved "https://registry.yarnpkg.com/crypto-browserify/-/crypto-browserify-3.12.0.tgz#396cf9f3137f03e4b8e532c58f698254e00f80ec" integrity sha512-fz4spIh+znjO2VjL+IdhEpRJ3YN6sMzITSBijk6FK2UvTqruSQW+/cCZTSNsMiZNvUeq0CqurF+dAbyiGOY6Wg== @@ -3612,6 +4993,17 @@ crypto-random-string@^1.0.0: resolved "https://registry.yarnpkg.com/crypto-random-string/-/crypto-random-string-1.0.0.tgz#a230f64f568310e1498009940790ec99545bca7e" integrity sha1-ojD2T1aDEOFJgAmUB5DsmVRbyn4= +css-select@^4.1.3: + version "4.1.3" + resolved "https://registry.yarnpkg.com/css-select/-/css-select-4.1.3.tgz#a70440f70317f2669118ad74ff105e65849c7067" + integrity sha512-gT3wBNd9Nj49rAbmtFHj1cljIAOLYSX1nZ8CB7TBO3INYckygm5B7LISU/szY//YmdiSLbJvDLOx9VnMVpMBxA== + dependencies: + boolbase "^1.0.0" + css-what "^5.0.0" + domhandler "^4.2.0" + domutils "^2.6.0" + nth-check "^2.0.0" + css-select@~1.2.0: version "1.2.0" resolved "https://registry.yarnpkg.com/css-select/-/css-select-1.2.0.tgz#2b3a110539c5355f1cd8d314623e870b121ec858" @@ -3627,6 +5019,11 @@ css-what@2.1: resolved "https://registry.yarnpkg.com/css-what/-/css-what-2.1.3.tgz#a6d7604573365fe74686c3f311c56513d88285f2" integrity sha512-a+EPoD+uZiNfh+5fxw2nO9QwFa6nJe2Or35fGY6Ipw1R3R4AGz1d1TEZrCegvw2YTmZ0jXirGYlzxxpYSHwpEg== +css-what@^5.0.0, css-what@^5.0.1: + version "5.0.1" + resolved "https://registry.yarnpkg.com/css-what/-/css-what-5.0.1.tgz#3efa820131f4669a8ac2408f9c32e7c7de9f4cad" + integrity sha512-FYDTSHb/7KXsWICVsxdmiExPjCfRC4qRFBdVwv7Ax9hMnvMmEjP9RfxTEZ3qPZGmADDn2vAKSo9UcN1jKVYscg== + css@2.X: version "2.2.4" resolved "https://registry.yarnpkg.com/css/-/css-2.2.4.tgz#c646755c73971f2bba6a601e2cf2fd71b1298929" @@ -3702,6 +5099,13 @@ debug@3.1.0, debug@=3.1.0: dependencies: ms "2.0.0" +debug@3.2.6, debug@^3.1.0: + version "3.2.6" + resolved "https://registry.yarnpkg.com/debug/-/debug-3.2.6.tgz#e83d17de16d8a7efb7717edbe5fb10135eee629b" + integrity sha512-mel+jf7nrtEl5Pn1Qx46zARXKDpBbvzezse7p7LqINmdoIk8PYP5SySaxEmYv6TZ0JyEKA1hsCId6DIhgITtWQ== + dependencies: + ms "^2.1.1" + debug@4.1.1, debug@^4.1.1: version "4.1.1" resolved "https://registry.yarnpkg.com/debug/-/debug-4.1.1.tgz#3b72260255109c6b589cee050f1d516139664791" @@ -3709,13 +5113,6 @@ debug@4.1.1, debug@^4.1.1: dependencies: ms "^2.1.1" -debug@^3.0.1, debug@^3.1.0: - version "3.2.6" - resolved "https://registry.yarnpkg.com/debug/-/debug-3.2.6.tgz#e83d17de16d8a7efb7717edbe5fb10135eee629b" - integrity sha512-mel+jf7nrtEl5Pn1Qx46zARXKDpBbvzezse7p7LqINmdoIk8PYP5SySaxEmYv6TZ0JyEKA1hsCId6DIhgITtWQ== - dependencies: - ms "^2.1.1" - debug@^3.2.6: version "3.2.7" resolved "https://registry.yarnpkg.com/debug/-/debug-3.2.7.tgz#72580b7e9145fb39b6676f9c5e5fb100b934179a" @@ -3730,7 +5127,7 @@ debug@^4.1.0, debug@^4.3.1: dependencies: ms "2.1.2" -decamelize@^1.1.1, decamelize@^1.2.0: +decamelize@^1.0.0, decamelize@^1.1.1, decamelize@^1.2.0: version "1.2.0" resolved "https://registry.yarnpkg.com/decamelize/-/decamelize-1.2.0.tgz#f6534d15148269b20352e7bee26f501f9a191290" integrity sha1-9lNNFRSCabIDUue+4m9QH5oZEpA= @@ -3800,6 +5197,13 @@ decompress@^4.0.0: pify "^2.3.0" strip-dirs "^2.0.0" +deep-eql@^0.1.3: + version "0.1.3" + resolved "https://registry.yarnpkg.com/deep-eql/-/deep-eql-0.1.3.tgz#ef558acab8de25206cd713906d74e56930eb69f2" + integrity sha1-71WKyrjeJSBs1xOQbXTlaTDrafI= + dependencies: + type-detect "0.1.1" + deep-eql@^3.0.1: version "3.0.1" resolved "https://registry.yarnpkg.com/deep-eql/-/deep-eql-3.0.1.tgz#dfc9404400ad1c8fe023e7da1df1c147c4b444df" @@ -3874,10 +5278,10 @@ define-property@^2.0.2: is-descriptor "^1.0.2" isobject "^3.0.1" -delay@4.3.0: - version "4.3.0" - resolved "https://registry.yarnpkg.com/delay/-/delay-4.3.0.tgz#efeebfb8f545579cb396b3a722443ec96d14c50e" - integrity sha512-Lwaf3zVFDMBop1yDuFZ19F9WyGcZcGacsbdlZtWjQmM50tOcMntm1njF/Nb/Vjij3KaSvCF+sEYGKrrjObu2NA== +delay@^5.0.0: + version "5.0.0" + resolved "https://registry.yarnpkg.com/delay/-/delay-5.0.0.tgz#137045ef1b96e5071060dd5be60bf9334436bd1d" + integrity sha512-ReEBKkIfe4ya47wlPYf/gu5ib6yUG0/Aez0JQZQz94kiWtRQvZIQbTiehsnwHvLSWJnQdhVeqYue7Id1dKr0qw== delayed-stream@~1.0.0: version "1.0.0" @@ -3924,6 +5328,18 @@ detect-indent@^4.0.0: dependencies: repeating "^2.0.0" +detect-indent@^5.0.0: + version "5.0.0" + resolved "https://registry.yarnpkg.com/detect-indent/-/detect-indent-5.0.0.tgz#3871cc0a6a002e8c3e5b3cf7f336264675f06b9d" + integrity sha1-OHHMCmoALow+Wzz38zYmRnXwa50= + +detect-installed@^2.0.4: + version "2.0.4" + resolved "https://registry.yarnpkg.com/detect-installed/-/detect-installed-2.0.4.tgz#a0850465e7c3ebcff979d6b6535ad344b80dd7c5" + integrity sha1-oIUEZefD68/5eda2U1rTRLgN18U= + dependencies: + get-installed-path "^2.0.3" + detect-libc@^1.0.2: version "1.0.3" resolved "https://registry.yarnpkg.com/detect-libc/-/detect-libc-1.0.3.tgz#fa137c4bd698edf55cd5cd02ac559f91a4c4ba9b" @@ -3975,6 +5391,15 @@ dir-glob@^3.0.1: dependencies: path-type "^4.0.0" +dns-over-http-resolver@^1.0.0: + version "1.2.3" + resolved "https://registry.yarnpkg.com/dns-over-http-resolver/-/dns-over-http-resolver-1.2.3.tgz#194d5e140a42153f55bb79ac5a64dd2768c36af9" + integrity sha512-miDiVSI6KSNbi4SVifzO/reD8rMnxgrlnkrlkugOLQpWQTe2qMdHsZp5DmfKjxNE+/T3VAAYLQUZMv9SMr6+AA== + dependencies: + debug "^4.3.1" + native-fetch "^3.0.0" + receptacle "^1.3.2" + dom-serializer@0: version "0.2.2" resolved "https://registry.yarnpkg.com/dom-serializer/-/dom-serializer-0.2.2.tgz#1afb81f533717175d478655debc5e332d9f9bb51" @@ -3983,6 +5408,15 @@ dom-serializer@0: domelementtype "^2.0.1" entities "^2.0.0" +dom-serializer@^1.0.1, dom-serializer@^1.3.2: + version "1.3.2" + resolved "https://registry.yarnpkg.com/dom-serializer/-/dom-serializer-1.3.2.tgz#6206437d32ceefaec7161803230c7a20bc1b4d91" + integrity sha512-5c54Bk5Dw4qAxNOI1pFEizPSjVsx5+bpJKmL2kPn8JhBUq2q09tTCa3mjijun2NfK78NMouDYNMBkOrPZiS+ig== + dependencies: + domelementtype "^2.0.1" + domhandler "^4.2.0" + entities "^2.0.0" + dom-serializer@~0.1.0: version "0.1.1" resolved "https://registry.yarnpkg.com/dom-serializer/-/dom-serializer-0.1.1.tgz#1ec4059e284babed36eec2941d4a970a189ce7c0" @@ -3996,6 +5430,11 @@ dom-walk@^0.1.0: resolved "https://registry.yarnpkg.com/dom-walk/-/dom-walk-0.1.1.tgz#672226dc74c8f799ad35307df936aba11acd6018" integrity sha1-ZyIm3HTI95mtNTB9+TaroRrNYBg= +domain-browser@^1.1.1: + version "1.2.0" + resolved "https://registry.yarnpkg.com/domain-browser/-/domain-browser-1.2.0.tgz#3d31f50191a6749dd1375a7f522e823d42e54eda" + integrity sha512-jnjyiM6eRyZl2H+W8Q/zLMA481hzi0eszAaBUzIVnmYVDBbnLxVNnfu1HgEBvCbL+71FrxMl3E6lpKH7Ge3OXA== + domelementtype@1, domelementtype@^1.3.0, domelementtype@^1.3.1: version "1.3.1" resolved "https://registry.yarnpkg.com/domelementtype/-/domelementtype-1.3.1.tgz#d048c44b37b0d10a7f2a3d5fee3f4333d790481f" @@ -4006,6 +5445,11 @@ domelementtype@^2.0.1: resolved "https://registry.yarnpkg.com/domelementtype/-/domelementtype-2.1.0.tgz#a851c080a6d1c3d94344aed151d99f669edf585e" integrity sha512-LsTgx/L5VpD+Q8lmsXSHW2WpA+eBlZ9HPf3erD1IoPF00/3JKHZ3BknUVA2QGDNu69ZNmyFmCWBSO45XjYKC5w== +domelementtype@^2.2.0: + version "2.2.0" + resolved "https://registry.yarnpkg.com/domelementtype/-/domelementtype-2.2.0.tgz#9a0b6c2782ed6a1c7323d42267183df9bd8b1d57" + integrity sha512-DtBMo82pv1dFtUmHyr48beiuq792Sxohr+8Hm9zoxklYPfa6n0Z3Byjj2IV7bmr2IyqClnqEQhfgHJJ5QF0R5A== + domhandler@2.3: version "2.3.0" resolved "https://registry.yarnpkg.com/domhandler/-/domhandler-2.3.0.tgz#2de59a0822d5027fabff6f032c2b25a2a8abe738" @@ -4020,6 +5464,13 @@ domhandler@^2.3.0: dependencies: domelementtype "1" +domhandler@^4.0.0, domhandler@^4.2.0: + version "4.2.0" + resolved "https://registry.yarnpkg.com/domhandler/-/domhandler-4.2.0.tgz#f9768a5f034be60a89a27c2e4d0f74eba0d8b059" + integrity sha512-zk7sgt970kzPks2Bf+dwT/PLzghLnsivb9CcxkvR8Mzr66Olr0Ofd8neSbglHJHaHa2MadfoSdNlKYAaafmWfA== + dependencies: + domelementtype "^2.2.0" + domutils@1.5, domutils@1.5.1: version "1.5.1" resolved "https://registry.yarnpkg.com/domutils/-/domutils-1.5.1.tgz#dcd8488a26f563d61079e48c9f7b7e32373682cf" @@ -4036,6 +5487,15 @@ domutils@^1.5.1: dom-serializer "0" domelementtype "1" +domutils@^2.5.2, domutils@^2.6.0, domutils@^2.7.0: + version "2.7.0" + resolved "https://registry.yarnpkg.com/domutils/-/domutils-2.7.0.tgz#8ebaf0c41ebafcf55b0b72ec31c56323712c5442" + integrity sha512-8eaHa17IwJUPAiB+SoTYBo5mCdeMgdcAoXJ59m6DT1vw+5iLS3gNoqYaRowaBKtGVrOF1Jz4yDTgYKLK2kvfJg== + dependencies: + dom-serializer "^1.0.1" + domelementtype "^2.2.0" + domhandler "^4.2.0" + dot-case@^2.1.0: version "2.1.1" resolved "https://registry.yarnpkg.com/dot-case/-/dot-case-2.1.1.tgz#34dcf37f50a8e93c2b3bca8bb7fb9155c7da3bee" @@ -4050,10 +5510,10 @@ dot-prop@^4.1.0: dependencies: is-obj "^1.0.0" -dotenv@^8.2.0: - version "8.2.0" - resolved "https://registry.yarnpkg.com/dotenv/-/dotenv-8.2.0.tgz#97e619259ada750eea3e4ea3e26bceea5424b16a" - integrity sha512-8sJ78ElpbDJBHNeBzUbUVLsqKdccaa/BXF1uPTw3GrvQTBgrQrtObr2mUrE38vzYd8cEv+m/JBfDLioYcfXoaw== +dotenv@^10.0.0: + version "10.0.0" + resolved "https://registry.yarnpkg.com/dotenv/-/dotenv-10.0.0.tgz#3d4227b8fb95f81096cdd2b66653fb2c7085ba81" + integrity sha512-rlBi9d8jpv9Sf1klPjNfFAuWDjKLwTIJJ/VxtoTwIR6hnZxcEOQCZg2oIL3MWBYw5GpUDKOEnND7LXTbIpQ03Q== double-ended-queue@2.1.0-0: version "2.1.0-0" @@ -4092,11 +5552,25 @@ ecc-jsbn@~0.1.1: jsbn "~0.1.0" safer-buffer "^2.1.0" +ed2curve@^0.3.0: + version "0.3.0" + resolved "https://registry.yarnpkg.com/ed2curve/-/ed2curve-0.3.0.tgz#322b575152a45305429d546b071823a93129a05d" + integrity sha512-8w2fmmq3hv9rCrcI7g9hms2pMunQr1JINfcjwR9tAyZqhtyaMN991lF/ZfHfr5tzZQ8c7y7aBgZbjfbd0fjFwQ== + dependencies: + tweetnacl "1.x.x" + ee-first@1.1.1: version "1.1.1" resolved "https://registry.yarnpkg.com/ee-first/-/ee-first-1.1.1.tgz#590c61156b0ae2f4f0255732a158b266bc56b21d" integrity sha1-WQxhFWsK4vTwJVcyoViyZrxWsh0= +electron-fetch@^1.7.2: + version "1.7.3" + resolved "https://registry.yarnpkg.com/electron-fetch/-/electron-fetch-1.7.3.tgz#06cf363d7f64073ec00a37e9949ec9d29ce6b08a" + integrity sha512-1AVMaxrHXTTMqd7EK0MGWusdqNr07Rpj8Th6bG4at0oNgIi/1LBwa9CjT/0Zy+M0k/tSJPS04nFxHj0SXDVgVw== + dependencies: + encoding "^0.1.13" + electron-to-chromium@^1.3.649: version "1.3.687" resolved "https://registry.yarnpkg.com/electron-to-chromium/-/electron-to-chromium-1.3.687.tgz#c336184b7ab70427ffe2ee79eaeaedbc1ad8c374" @@ -4125,7 +5599,7 @@ elliptic@6.5.2, elliptic@^6.0.0, elliptic@^6.4.0, elliptic@^6.5.2: minimalistic-assert "^1.0.0" minimalistic-crypto-utils "^1.0.0" -elliptic@6.5.4: +elliptic@6.5.4, elliptic@^6.5.3: version "6.5.4" resolved "https://registry.yarnpkg.com/elliptic/-/elliptic-6.5.4.tgz#da37cebd31e79a1367e941b592ed1fbebd58abbb" integrity sha512-iLhC6ULemrljPZb+QutR5TQGB+pdW6KGD5RSegS+8sorOZT+rdQFbsQFJgvN3eRqNALqJer4oQ16YvJHlU8hzQ== @@ -4153,6 +5627,16 @@ emoji-regex@^8.0.0: resolved "https://registry.yarnpkg.com/emoji-regex/-/emoji-regex-8.0.0.tgz#e818fd69ce5ccfcb404594f842963bf53164cc37" integrity sha512-MSjYzcWNOA0ewAHpz0MxpYFvwg6yjy1NG3xteoqz644VCo/RPgnr1/GGt+ic3iJTzQ8Eu3TdM14SawnVUmGE6A== +emoji-regex@^9.2.2: + version "9.2.2" + resolved "https://registry.yarnpkg.com/emoji-regex/-/emoji-regex-9.2.2.tgz#840c8803b0d8047f4ff0cf963176b32d4ef3ed72" + integrity sha512-L18DaJsXSUk2+42pv8mLs5jJT2hqFkFE4j21wOmgbUqsZ2hL72NsUU785g9RXgo3s0ZNgVl42TiHp3ZtOv/Vyg== + +emojis-list@^3.0.0: + version "3.0.0" + resolved "https://registry.yarnpkg.com/emojis-list/-/emojis-list-3.0.0.tgz#5570662046ad29e2e916e71aae260abdff4f6a78" + integrity sha512-/kyM18EfinwXZbno9FyUGeFh87KC8HRQBQGildHZbEuRyWFOmv1U10o9BBp8XVZDVNNuQKyIGIu5ZYAAXJ0V2Q== + encodeurl@~1.0.2: version "1.0.2" resolved "https://registry.yarnpkg.com/encodeurl/-/encodeurl-1.0.2.tgz#ad3ff4c86ec2d029322f5a02c3a9a606c95b3f59" @@ -4168,6 +5652,13 @@ encoding-down@^6.3.0: level-codec "^9.0.0" level-errors "^2.0.0" +encoding@^0.1.13: + version "0.1.13" + resolved "https://registry.yarnpkg.com/encoding/-/encoding-0.1.13.tgz#56574afdd791f54a8e9b2785c0582a2d26210fa9" + integrity sha512-ETBauow1T35Y/WZMkio9jiM0Z5xjHHmJ4XmjZOq1l/dXz3lr2sRn87nJy20RupqSh1F2m3HHPSp8ShIPQJrJ3A== + dependencies: + iconv-lite "^0.6.2" + end-of-stream@^1.0.0, end-of-stream@^1.1.0: version "1.4.4" resolved "https://registry.yarnpkg.com/end-of-stream/-/end-of-stream-1.4.4.tgz#5ae64a5f45057baf3626ec14da0ca5e4b2431eb0" @@ -4182,6 +5673,16 @@ end-stream@~0.1.0: dependencies: write-stream "~0.4.3" +enhanced-resolve@^3.4.0: + version "3.4.1" + resolved "https://registry.yarnpkg.com/enhanced-resolve/-/enhanced-resolve-3.4.1.tgz#0421e339fd71419b3da13d129b3979040230476e" + integrity sha1-BCHjOf1xQZs9oT0Smzl5BAIwR24= + dependencies: + graceful-fs "^4.1.2" + memory-fs "^0.4.0" + object-assign "^4.0.1" + tapable "^0.2.7" + entities@1.0: version "1.0.0" resolved "https://registry.yarnpkg.com/entities/-/entities-1.0.0.tgz#b2987aa3821347fcde642b24fdfc9e4fb712bf26" @@ -4197,7 +5698,17 @@ entities@^2.0.0: resolved "https://registry.yarnpkg.com/entities/-/entities-2.2.0.tgz#098dc90ebb83d8dffa089d55256b351d34c4da55" integrity sha512-p92if5Nz619I0w+akJrLZH0MX0Pb5DX39XOwQTtXSdQQOaYH03S1uIQp4mhOZtAXrxq4ViO67YTiLBo2638o9A== -errno@~0.1.1: +err-code@^2.0.0, err-code@^2.0.3: + version "2.0.3" + resolved "https://registry.yarnpkg.com/err-code/-/err-code-2.0.3.tgz#23c2f3b756ffdfc608d30e27c9a941024807e7f9" + integrity sha512-2bmlRpNKBxT/CRmPOlyISQpNj+qSeYvcym/uT0Jx2bMOlKLtSy1ZmLuVxSEKKyor/N5yhvp/ZiG1oE3DEYMSFA== + +err-code@^3.0.0, err-code@^3.0.1: + version "3.0.1" + resolved "https://registry.yarnpkg.com/err-code/-/err-code-3.0.1.tgz#a444c7b992705f2b120ee320b09972eef331c920" + integrity sha512-GiaH0KJUewYok+eeY05IIgjtAe4Yltygk9Wqp1V5yVWLdhf0hYZchRjNIT9bb0mSwRcIusT3cx7PJUf3zEIfUA== + +errno@^0.1.3, errno@~0.1.1: version "0.1.8" resolved "https://registry.yarnpkg.com/errno/-/errno-0.1.8.tgz#8bb3e9c7d463be4976ff888f76b4809ebc2e811f" integrity sha512-dJ6oBr5SQ1VSd9qkk7ByRgb/1SH4JZjCHSW/mr63/QcXO9zLVxvJ6Oy13nio03rxpSnVDDjFor75SjVeZWPW/A== @@ -4275,7 +5786,7 @@ es6-denodeify@^0.1.1: resolved "https://registry.yarnpkg.com/es6-denodeify/-/es6-denodeify-0.1.5.tgz#31d4d5fe9c5503e125460439310e16a2a3f39c1f" integrity sha1-MdTV/pxVA+ElRgQ5MQ4WoqPznB8= -es6-iterator@^2.0.3, es6-iterator@~2.0.3: +es6-iterator@^2.0.3, es6-iterator@~2.0.1, es6-iterator@~2.0.3: version "2.0.3" resolved "https://registry.yarnpkg.com/es6-iterator/-/es6-iterator-2.0.3.tgz#a7de889141a05a94b0854403b2d0a0fbfa98f3b7" integrity sha1-p96IkUGgWpSwhUQDstCg+/qY87c= @@ -4284,7 +5795,38 @@ es6-iterator@^2.0.3, es6-iterator@~2.0.3: es5-ext "^0.10.35" es6-symbol "^3.1.1" -es6-symbol@^3.1.1, es6-symbol@~3.1.3: +es6-map@^0.1.3: + version "0.1.5" + resolved "https://registry.yarnpkg.com/es6-map/-/es6-map-0.1.5.tgz#9136e0503dcc06a301690f0bb14ff4e364e949f0" + integrity sha1-kTbgUD3MBqMBaQ8LsU/042TpSfA= + dependencies: + d "1" + es5-ext "~0.10.14" + es6-iterator "~2.0.1" + es6-set "~0.1.5" + es6-symbol "~3.1.1" + event-emitter "~0.3.5" + +es6-set@~0.1.5: + version "0.1.5" + resolved "https://registry.yarnpkg.com/es6-set/-/es6-set-0.1.5.tgz#d2b3ec5d4d800ced818db538d28974db0a73ccb1" + integrity sha1-0rPsXU2ADO2BjbU40ol02wpzzLE= + dependencies: + d "1" + es5-ext "~0.10.14" + es6-iterator "~2.0.1" + es6-symbol "3.1.1" + event-emitter "~0.3.5" + +es6-symbol@3.1.1: + version "3.1.1" + resolved "https://registry.yarnpkg.com/es6-symbol/-/es6-symbol-3.1.1.tgz#bf00ef4fdab6ba1b46ecb7b629b4c7ed5715cc77" + integrity sha1-vwDvT9q2uhtG7Le2KbTH7VcVzHc= + dependencies: + d "1" + es5-ext "~0.10.14" + +es6-symbol@^3.1.1, es6-symbol@~3.1.1, es6-symbol@~3.1.3: version "3.1.3" resolved "https://registry.yarnpkg.com/es6-symbol/-/es6-symbol-3.1.3.tgz#bad5d3c1bcdac28269f4cb331e431c78ac705d18" integrity sha512-NJ6Yn3FuDinBaBRWl/q5X/s4koRHBrgKAu+yGI6JCBeiu3qrcbJhwT2GeR/EXVfylRk8dpQVJoLEFhK+Mu31NA== @@ -4292,7 +5834,7 @@ es6-symbol@^3.1.1, es6-symbol@~3.1.3: d "^1.0.1" ext "^1.1.2" -es6-weak-map@^2.0.2: +es6-weak-map@^2.0.1, es6-weak-map@^2.0.2: version "2.0.3" resolved "https://registry.yarnpkg.com/es6-weak-map/-/es6-weak-map-2.0.3.tgz#b6da1f16cc2cc0d9be43e6bdbfc5e7dfcdf31d53" integrity sha512-p5um32HOTO1kP+w7PRnB+5lQ43Z6muuMuIMffvDN8ZB4GcnjLBV6zGStpbASIMk4DCAvEaamhe2zhyCb/QXXsA== @@ -4317,7 +5859,7 @@ escape-string-regexp@1.0.5, escape-string-regexp@^1.0.2, escape-string-regexp@^1 resolved "https://registry.yarnpkg.com/escape-string-regexp/-/escape-string-regexp-1.0.5.tgz#1b61c0562190a8dff6ae3bb2cf0200ca130b86d4" integrity sha1-G2HAViGQqN/2rjuyzwIAyhMLhtQ= -escape-string-regexp@4.0.0: +escape-string-regexp@4.0.0, escape-string-regexp@^4.0.0: version "4.0.0" resolved "https://registry.yarnpkg.com/escape-string-regexp/-/escape-string-regexp-4.0.0.tgz#14ba83a5d373e3d311e5afca29cf5bfad965bf34" integrity sha512-TtpcNJ3XAzx3Gq8sWRzJaVajRs0uVxA2YAkdb1jm2YkPz4G6egUFAyA3n5vtEIZefPk5Wa4UXbKuS5fKkJWdgA== @@ -4346,6 +5888,16 @@ escodegen@^1.6.1: optionalDependencies: source-map "~0.6.1" +escope@^3.6.0: + version "3.6.0" + resolved "https://registry.yarnpkg.com/escope/-/escope-3.6.0.tgz#e01975e812781a163a6dadfdd80398dc64c889c3" + integrity sha1-4Bl16BJ4GhY6ba392AOY3GTIicM= + dependencies: + es6-map "^0.1.3" + es6-weak-map "^2.0.1" + esrecurse "^4.1.0" + estraverse "^4.1.1" + esdoc@^1.0.4: version "1.1.0" resolved "https://registry.yarnpkg.com/esdoc/-/esdoc-1.1.0.tgz#07d40ebf791764cd537929c29111e20a857624f3" @@ -4373,16 +5925,28 @@ esprima@^4.0.0, esprima@^4.0.1: resolved "https://registry.yarnpkg.com/esprima/-/esprima-4.0.1.tgz#13b04cdb3e6c5d19df91ab6987a8695619b0aa71" integrity sha512-eGuFFw7Upda+g4p+QHvnW0RyTX/SVeJBDM/gCtMARO0cLuT2HcEKnTPvhjV6aGeqrCB/sbNop0Kszm0jsaWU4A== +esrecurse@^4.1.0: + version "4.3.0" + resolved "https://registry.yarnpkg.com/esrecurse/-/esrecurse-4.3.0.tgz#7ad7964d679abb28bee72cec63758b1c5d2c9921" + integrity sha512-KmfKL3b6G+RXvP8N1vr3Tq1kL/oCFgn2NYXEtqP8/L3pKapUA4G8cFVaoF3SU323CD4XypR/ffioHmkti6/Tag== + dependencies: + estraverse "^5.2.0" + estraverse@^1.9.1: version "1.9.3" resolved "https://registry.yarnpkg.com/estraverse/-/estraverse-1.9.3.tgz#af67f2dc922582415950926091a4005d29c9bb44" integrity sha1-r2fy3JIlgkFZUJJgkaQAXSnJu0Q= -estraverse@^4.2.0: +estraverse@^4.1.1, estraverse@^4.2.0: version "4.3.0" resolved "https://registry.yarnpkg.com/estraverse/-/estraverse-4.3.0.tgz#398ad3f3c5a24948be7725e83d11a7de28cdbd1d" integrity sha512-39nnKffWz8xN1BU/2c79n9nB9HDzo0niYUqx6xyqUnyoAnQyyWpOTdZEeiCch8BBu515t4wp9ZmgVfVhn9EBpw== +estraverse@^5.2.0: + version "5.2.0" + resolved "https://registry.yarnpkg.com/estraverse/-/estraverse-5.2.0.tgz#307df42547e6cc7324d3cf03c155d5cdb8c53880" + integrity sha512-BxbNGGNm0RyRYvUdHpIwv9IWzeM9XClbOxwoATuFdOE7ZE6wHL+HQ5T8hoPM+zHvmKzzsEqhgy0GrQ5X13afiQ== + esutils@^2.0.2: version "2.0.3" resolved "https://registry.yarnpkg.com/esutils/-/esutils-2.0.3.tgz#74d2eb4de0b8da1293711910d50775b9b710ef64" @@ -4393,7 +5957,7 @@ etag@~1.8.1: resolved "https://registry.yarnpkg.com/etag/-/etag-1.8.1.tgz#41ae2eeb65efa62268aebfea83ac7d79299b0887" integrity sha1-Qa4u62XvpiJorr/qg6x9eSmbCIc= -eth-ens-namehash@2.0.8: +eth-ens-namehash@2.0.8, eth-ens-namehash@^2.0.8: version "2.0.8" resolved "https://registry.yarnpkg.com/eth-ens-namehash/-/eth-ens-namehash-2.0.8.tgz#229ac46eca86d52e0c991e7cb2aef83ff0f68bcf" integrity sha1-IprEbsqG1S4MmR58sq74P/D2i88= @@ -4401,12 +5965,13 @@ eth-ens-namehash@2.0.8: idna-uts46-hx "^2.3.1" js-sha3 "^0.5.7" -eth-gas-reporter@^0.2.15: - version "0.2.15" - resolved "https://registry.yarnpkg.com/eth-gas-reporter/-/eth-gas-reporter-0.2.15.tgz#663752ac05bad1054c3c54d6fa611865a6a75fc1" - integrity sha512-nia5IswXUX9XQvc9b3t/PeS+uZFGeq2thzPOot4uLbovpoQRFjxOpo1lz8gbKIfsdOsKYC7pCaTdcScio8bX3Q== +eth-gas-reporter@^0.2.22: + version "0.2.22" + resolved "https://registry.yarnpkg.com/eth-gas-reporter/-/eth-gas-reporter-0.2.22.tgz#bbe91f5d7b22433d26f099eeb5b20118ced0e575" + integrity sha512-L1FlC792aTf3j/j+gGzSNlGrXKSxNPXQNk6TnV5NNZ2w3jnQCRyJjDl0zUo25Cq2t90IS5vGdbkwqFQK7Ce+kw== dependencies: - "@ethersproject/abi" "5.0.0-beta.142" + "@ethersproject/abi" "^5.0.0-beta.146" + "@solidity-parser/parser" "^0.12.0" cli-table3 "^0.5.0" colors "^1.1.2" ethereumjs-util "6.2.0" @@ -4414,12 +5979,11 @@ eth-gas-reporter@^0.2.15: fs-readdir-recursive "^1.1.0" lodash "^4.17.14" markdown-table "^1.1.3" - mocha "^5.2.0" + mocha "^7.1.1" req-cwd "^2.0.0" request "^2.88.0" request-promise-native "^1.0.5" sha1 "^1.1.1" - solidity-parser-diligence "^0.4.17" sync-request "^6.0.0" eth-lib@0.2.7: @@ -4498,6 +6062,13 @@ ethereumjs-common@^1.3.2, ethereumjs-common@^1.5.0: resolved "https://registry.yarnpkg.com/ethereumjs-common/-/ethereumjs-common-1.5.0.tgz#d3e82fc7c47c0cef95047f431a99485abc9bb1cd" integrity sha512-SZOjgK1356hIY7MRj3/ma5qtfr/4B5BL+G4rP/XSMYr2z1H5el4RX5GReYCKmQmYI/nSBmRnwrZ17IfHuG0viQ== +ethereumjs-testrpc@^6.0.3: + version "6.0.3" + resolved "https://registry.yarnpkg.com/ethereumjs-testrpc/-/ethereumjs-testrpc-6.0.3.tgz#7a0b87bf3670f92f607f98fa6a78801d9741b124" + integrity sha512-lAxxsxDKK69Wuwqym2K49VpXtBvLEsXr1sryNG4AkvL5DomMdeCBbu3D87UEevKenLHBiT8GTjARwN6Yj039gA== + dependencies: + webpack "^3.0.0" + ethereumjs-tx@^1.3.7: version "1.3.7" resolved "https://registry.yarnpkg.com/ethereumjs-tx/-/ethereumjs-tx-1.3.7.tgz#88323a2d875b10549b8347e09f4862b546f3d89a" @@ -4514,19 +6085,6 @@ ethereumjs-tx@^2.1.1: ethereumjs-common "^1.5.0" ethereumjs-util "^6.0.0" -ethereumjs-util@6.1.0: - version "6.1.0" - resolved "https://registry.yarnpkg.com/ethereumjs-util/-/ethereumjs-util-6.1.0.tgz#e9c51e5549e8ebd757a339cc00f5380507e799c8" - integrity sha512-URESKMFbDeJxnAxPppnk2fN6Y3BIatn9fwn76Lm8bQlt+s52TpG8dN9M66MLPuRAiAOIqL3dfwqWJf0sd0fL0Q== - dependencies: - bn.js "^4.11.0" - create-hash "^1.1.2" - ethjs-util "0.1.6" - keccak "^1.0.2" - rlp "^2.0.0" - safe-buffer "^5.1.1" - secp256k1 "^3.0.1" - ethereumjs-util@6.2.0, ethereumjs-util@^6.0.0: version "6.2.0" resolved "https://registry.yarnpkg.com/ethereumjs-util/-/ethereumjs-util-6.2.0.tgz#23ec79b2488a7d041242f01e25f24e5ad0357960" @@ -4566,6 +6124,18 @@ ethereumjs-util@^5.0.0: safe-buffer "^5.1.1" secp256k1 "^3.0.1" +ethereumjs-util@^7.0.10, ethereumjs-util@^7.1.0: + version "7.1.0" + resolved "https://registry.yarnpkg.com/ethereumjs-util/-/ethereumjs-util-7.1.0.tgz#e2b43a30bfcdbcb432a4eb42bd5f2393209b3fd5" + integrity sha512-kR+vhu++mUDARrsMMhsjjzPduRVAeundLGXucGRHF3B4oEltOUspfgCVco4kckucj3FMlLaZHUl9n7/kdmr6Tw== + dependencies: + "@types/bn.js" "^5.1.0" + bn.js "^5.1.2" + create-hash "^1.1.2" + ethereum-cryptography "^0.1.3" + ethjs-util "0.1.6" + rlp "^2.2.4" + ethers@4.0.0-beta.3: version "4.0.0-beta.3" resolved "https://registry.yarnpkg.com/ethers/-/ethers-4.0.0-beta.3.tgz#15bef14e57e94ecbeb7f9b39dd0a4bd435bc9066" @@ -4597,6 +6167,42 @@ ethers@^4.0.20, ethers@^4.0.27, ethers@^4.0.32, ethers@^4.0.40: uuid "2.0.1" xmlhttprequest "1.8.0" +ethers@^5.0.13: + version "5.4.5" + resolved "https://registry.yarnpkg.com/ethers/-/ethers-5.4.5.tgz#cec133b9f5b514dc55e2561ee7aa7218c33affd7" + integrity sha512-PPZ6flOAj230sXEWf/r/It6ZZ5c7EOVWx+PU87Glkbg79OtT7pLE1WgL4MRdwx6iF7HzSOvUUI+8cAmcdzo12w== + dependencies: + "@ethersproject/abi" "5.4.0" + "@ethersproject/abstract-provider" "5.4.1" + "@ethersproject/abstract-signer" "5.4.1" + "@ethersproject/address" "5.4.0" + "@ethersproject/base64" "5.4.0" + "@ethersproject/basex" "5.4.0" + "@ethersproject/bignumber" "5.4.1" + "@ethersproject/bytes" "5.4.0" + "@ethersproject/constants" "5.4.0" + "@ethersproject/contracts" "5.4.1" + "@ethersproject/hash" "5.4.0" + "@ethersproject/hdnode" "5.4.0" + "@ethersproject/json-wallets" "5.4.0" + "@ethersproject/keccak256" "5.4.0" + "@ethersproject/logger" "5.4.0" + "@ethersproject/networks" "5.4.2" + "@ethersproject/pbkdf2" "5.4.0" + "@ethersproject/properties" "5.4.0" + "@ethersproject/providers" "5.4.4" + "@ethersproject/random" "5.4.0" + "@ethersproject/rlp" "5.4.0" + "@ethersproject/sha2" "5.4.0" + "@ethersproject/signing-key" "5.4.0" + "@ethersproject/solidity" "5.4.0" + "@ethersproject/strings" "5.4.0" + "@ethersproject/transactions" "5.4.0" + "@ethersproject/units" "5.4.0" + "@ethersproject/wallet" "5.4.0" + "@ethersproject/web" "5.4.0" + "@ethersproject/wordlists" "5.4.0" + ethjs-unit@0.1.6, ethjs-unit@^0.1.6: version "0.1.6" resolved "https://registry.yarnpkg.com/ethjs-unit/-/ethjs-unit-0.1.6.tgz#c665921e476e87bce2a9d588a6fe0405b2c41699" @@ -4613,7 +6219,7 @@ ethjs-util@0.1.6, ethjs-util@^0.1.3: is-hex-prefixed "1.0.0" strip-hex-prefix "1.0.0" -event-emitter@^0.3.5: +event-emitter@^0.3.5, event-emitter@~0.3.5: version "0.3.5" resolved "https://registry.yarnpkg.com/event-emitter/-/event-emitter-0.3.5.tgz#df8c69eef1647923c7157b9ce83840610b02cc39" integrity sha1-34xp7vFkeSPHFXuc6DhAYQsCzDk= @@ -4621,6 +6227,16 @@ event-emitter@^0.3.5: d "1" es5-ext "~0.10.14" +event-iterator@^1.0.0: + version "1.2.0" + resolved "https://registry.yarnpkg.com/event-iterator/-/event-iterator-1.2.0.tgz#2e71dc6ca56f1cf8ebcb2b9be7fdfd10acabbb76" + integrity sha512-Daq7YUl0Mv1i4QEgzGQlz0jrx7hUFNyLGbiF+Ap7NCMCjDLCCnolyj6s0TAc6HmrBziO5rNVHsPwGMp7KdRPvw== + +event-iterator@^2.0.0: + version "2.0.0" + resolved "https://registry.yarnpkg.com/event-iterator/-/event-iterator-2.0.0.tgz#10f06740cc1e9fd6bc575f334c2bc1ae9d2dbf62" + integrity sha512-KGft0ldl31BZVV//jj+IAIGCxkvvUkkON+ScH6zfoX+l+omX6001ggyRSpI0Io2Hlro0ThXotswCtfzS8UkIiQ== + event-target-shim@^5.0.0: version "5.0.1" resolved "https://registry.yarnpkg.com/event-target-shim/-/event-target-shim-5.0.1.tgz#5d4d3ebdf9583d63a5333ce2deb7480ab2b05789" @@ -4631,7 +6247,7 @@ eventemitter3@3.1.0: resolved "https://registry.yarnpkg.com/eventemitter3/-/eventemitter3-3.1.0.tgz#090b4d6cdbd645ed10bf750d4b5407942d7ba163" integrity sha512-ivIvhpq/Y0uSjcHDcOIccjmYjGLcP09MFGE7ysAwkAvkXfpZlC985pH2/ui64DKazbTW/4kN3yqozUxlXzI6cA== -eventemitter3@3.1.2, eventemitter3@^3.1.0: +eventemitter3@3.1.2, eventemitter3@^3.1.0, eventemitter3@^3.1.2: version "3.1.2" resolved "https://registry.yarnpkg.com/eventemitter3/-/eventemitter3-3.1.2.tgz#2d3d48f9c346698fce83a85d7d664e98535df6e7" integrity sha512-tvtQIeLVHjDkJYnzf2dgVMxfuSGJeM/7UCG17TT4EumTfNtF+0nebF/4zWOIkCreAbtNqhGEboB6BWrwqNaw4Q== @@ -4646,6 +6262,11 @@ eventemitter3@^4.0.0: resolved "https://registry.yarnpkg.com/eventemitter3/-/eventemitter3-4.0.0.tgz#d65176163887ee59f386d64c82610b696a4a74eb" integrity sha512-qerSRB0p+UDEssxTtm6EDKcE7W4OaoisfIMl4CngyEhjpYglocpNg6UEqCvemdGhosAsg4sO2dXJOdyBifPGCg== +events@^3.0.0, events@^3.2.0, events@^3.3.0: + version "3.3.0" + resolved "https://registry.yarnpkg.com/events/-/events-3.3.0.tgz#31a95ad0a924e2d2c419a813aeb2c4e878ea7400" + integrity sha512-mQw+2fkQbALzQ7V0MY0IqdnXNOeTtP4r0lN9z7AAawCXgqea7bDii20AYrIBrFd/Hx0M2Ocz6S111CaFkUcb0Q== + eventsource@1.0.7: version "1.0.7" resolved "https://registry.yarnpkg.com/eventsource/-/eventsource-1.0.7.tgz#8fbc72c93fcd34088090bc0a4e64f4b5cee6d8d0" @@ -4661,6 +6282,19 @@ evp_bytestokey@^1.0.0, evp_bytestokey@^1.0.3: md5.js "^1.3.4" safe-buffer "^5.1.1" +execa@^0.7.0: + version "0.7.0" + resolved "https://registry.yarnpkg.com/execa/-/execa-0.7.0.tgz#944becd34cc41ee32a63a9faf27ad5a65fc59777" + integrity sha1-lEvs00zEHuMqY6n68nrVpl/Fl3c= + dependencies: + cross-spawn "^5.0.1" + get-stream "^3.0.0" + is-stream "^1.1.0" + npm-run-path "^2.0.0" + p-finally "^1.0.0" + signal-exit "^3.0.0" + strip-eof "^1.0.0" + execa@^1.0.0: version "1.0.0" resolved "https://registry.yarnpkg.com/execa/-/execa-1.0.0.tgz#c6236a5bb4df6d6f15e88e7f017798216749ddd8" @@ -4674,6 +6308,11 @@ execa@^1.0.0: signal-exit "^3.0.0" strip-eof "^1.0.0" +exit-on-epipe@~1.0.1: + version "1.0.1" + resolved "https://registry.yarnpkg.com/exit-on-epipe/-/exit-on-epipe-1.0.1.tgz#0bdd92e87d5285d267daa8171d0eb06159689692" + integrity sha512-h2z5mrROTxce56S+pnvAV890uu7ls7f1kEvVGJbw1OlFH3/mlJ5bkXu0KRyW94v37zzHPiUd55iLn3DA7TjWpw== + expand-brackets@^0.1.4: version "0.1.5" resolved "https://registry.yarnpkg.com/expand-brackets/-/expand-brackets-0.1.5.tgz#df07284e342a807cd733ac5af72411e581d1177b" @@ -4701,6 +6340,13 @@ expand-range@^1.8.1: dependencies: fill-range "^2.1.0" +expand-tilde@^2.0.0, expand-tilde@^2.0.2: + version "2.0.2" + resolved "https://registry.yarnpkg.com/expand-tilde/-/expand-tilde-2.0.2.tgz#97e801aa052df02454de46b02bf621642cdc8502" + integrity sha1-l+gBqgUt8CRU3kawK/YhZCzchQI= + dependencies: + homedir-polyfill "^1.0.1" + express@^4.0.0, express@^4.14.0, express@^4.17.1: version "4.17.1" resolved "https://registry.yarnpkg.com/express/-/express-4.17.1.tgz#4491fc38605cf51f8629d39c2b5d026f98a4c134" @@ -4817,6 +6463,11 @@ fast-deep-equal@^3.1.1: resolved "https://registry.yarnpkg.com/fast-deep-equal/-/fast-deep-equal-3.1.1.tgz#545145077c501491e33b15ec408c294376e94ae4" integrity sha512-8UEa58QDLauDNfpbrX55Q9jrGHThw2ZMdOky5Gl1CDtVeJDPVrG4Jxx1N8jw2gkWaff5UUuX1KJd+9zGe2B+ZA== +fast-fifo@^1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/fast-fifo/-/fast-fifo-1.0.0.tgz#9bc72e6860347bb045a876d1c5c0af11e9b984e7" + integrity sha512-4VEXmjxLj7sbs8J//cn2qhRap50dGzF5n8fjay8mau+Jn4hxSeR3xPFwxMaQq/pDaq7+KQk0PAbC2+nWDkJrmQ== + fast-future@~1.0.2: version "1.0.2" resolved "https://registry.yarnpkg.com/fast-future/-/fast-future-1.0.2.tgz#8435a9aaa02d79248d17d704e76259301d99280a" @@ -4856,6 +6507,16 @@ fast-levenshtein@~2.0.6: resolved "https://registry.yarnpkg.com/fast-levenshtein/-/fast-levenshtein-2.0.6.tgz#3d8a5c66883a16a30ca8643e851f19baa7797917" integrity sha1-PYpcZog6FqMMqGQ+hR8Zuqd5eRc= +fast-sha256@^1.3.0: + version "1.3.0" + resolved "https://registry.yarnpkg.com/fast-sha256/-/fast-sha256-1.3.0.tgz#7916ba2054eeb255982608cccd0f6660c79b7ae6" + integrity sha512-n11RGP/lrWEFI/bWdygLxhI+pVeo1ZYIVwvvPkW7azl/rOy+F3HYRZ2K5zeE9mmkhQppyv9sQFx0JM9UabnpPQ== + +fastestsmallesttextencoderdecoder@^1.0.22: + version "1.0.22" + resolved "https://registry.yarnpkg.com/fastestsmallesttextencoderdecoder/-/fastestsmallesttextencoderdecoder-1.0.22.tgz#59b47e7b965f45258629cc6c127bf783281c5e93" + integrity sha512-Pb8d48e+oIuY4MaM64Cd7OW1gt4nxCHs7/ddPPZ/Ic3sg8yVGM7O9wDvZ7us6ScaUupzM+pfBolwtYhN1IxBIw== + fastq@^1.6.0: version "1.6.1" resolved "https://registry.yarnpkg.com/fastq/-/fastq-1.6.1.tgz#4570c74f2ded173e71cf0beb08ac70bb85826791" @@ -4930,6 +6591,29 @@ file-uri-to-path@1.0.0: resolved "https://registry.yarnpkg.com/file-uri-to-path/-/file-uri-to-path-1.0.0.tgz#553a7b8446ff6f684359c445f1e37a05dacc33dd" integrity sha512-0Zt+s3L7Vf1biwWZ29aARiVYLx7iMGnEUl9x33fbB/j3jR81u/O2LbqK+Bm1CDSNDKVtJ/YjwY7TUd5SkeLQLw== +filecoin.js@^0.0.5-alpha: + version "0.0.5-alpha" + resolved "https://registry.yarnpkg.com/filecoin.js/-/filecoin.js-0.0.5-alpha.tgz#cf6f14ae0715e88c290aeacfe813ff48a69442cd" + integrity sha512-xPrB86vDnTPfmvtN/rJSrhl4M77694ruOgNXd0+5gP67mgmCDhStLCqcr+zHIDRgDpraf7rY+ELbwjXZcQNdpQ== + dependencies: + "@ledgerhq/hw-transport-webusb" "^5.22.0" + "@nodefactory/filsnap-adapter" "^0.2.1" + "@nodefactory/filsnap-types" "^0.2.1" + "@zondax/filecoin-signing-tools" "github:Digital-MOB-Filecoin/filecoin-signing-tools-js" + bignumber.js "^9.0.0" + bitcore-lib "^8.22.2" + bitcore-mnemonic "^8.22.2" + btoa-lite "^1.0.0" + events "^3.2.0" + isomorphic-ws "^4.0.1" + node-fetch "^2.6.0" + rpc-websockets "^5.3.1" + scrypt-async "^2.0.1" + tweetnacl "^1.0.3" + tweetnacl-util "^0.15.1" + websocket "^1.0.31" + ws "^7.3.1" + filename-regex@^2.0.0: version "2.0.1" resolved "https://registry.yarnpkg.com/filename-regex/-/filename-regex-2.0.1.tgz#c1c4b9bee3e09725ddb106b75c1e301fe2f18b26" @@ -4984,6 +6668,13 @@ find-replace@^1.0.3: array-back "^1.0.4" test-value "^2.1.0" +find-up@3.0.0, find-up@^3.0.0: + version "3.0.0" + resolved "https://registry.yarnpkg.com/find-up/-/find-up-3.0.0.tgz#49169f1d7993430646da61ecc5ae355c21c97b73" + integrity sha512-1yD6RmLI1XBfxugvORwlck6f75tYL+iR0jqwsOrOxMZyGYqUuDhJ0l4AXdO1iX/FTs9cBAMEk1gWSEx1kSbylg== + dependencies: + locate-path "^3.0.0" + find-up@5.0.0: version "5.0.0" resolved "https://registry.yarnpkg.com/find-up/-/find-up-5.0.0.tgz#4c92819ecb7083561e4f4a240a86be5198f536fc" @@ -5000,20 +6691,13 @@ find-up@^1.0.0: path-exists "^2.0.0" pinkie-promise "^2.0.0" -find-up@^2.1.0: +find-up@^2.0.0, find-up@^2.1.0: version "2.1.0" resolved "https://registry.yarnpkg.com/find-up/-/find-up-2.1.0.tgz#45d1b7e506c717ddd482775a2b77920a3c0c57a7" integrity sha1-RdG35QbHF93UgndaK3eSCjwMV6c= dependencies: locate-path "^2.0.0" -find-up@^3.0.0: - version "3.0.0" - resolved "https://registry.yarnpkg.com/find-up/-/find-up-3.0.0.tgz#49169f1d7993430646da61ecc5ae355c21c97b73" - integrity sha512-1yD6RmLI1XBfxugvORwlck6f75tYL+iR0jqwsOrOxMZyGYqUuDhJ0l4AXdO1iX/FTs9cBAMEk1gWSEx1kSbylg== - dependencies: - locate-path "^3.0.0" - find-up@^4.1.0: version "4.1.0" resolved "https://registry.yarnpkg.com/find-up/-/find-up-4.1.0.tgz#97afe7d6cdc0bc5928584b7c8d7b16e8a9aa5d19" @@ -5022,13 +6706,12 @@ find-up@^4.1.0: locate-path "^5.0.0" path-exists "^4.0.0" -find-yarn-workspace-root@^1.2.1: - version "1.2.1" - resolved "https://registry.yarnpkg.com/find-yarn-workspace-root/-/find-yarn-workspace-root-1.2.1.tgz#40eb8e6e7c2502ddfaa2577c176f221422f860db" - integrity sha512-dVtfb0WuQG+8Ag2uWkbG79hOUzEsRrhBzgfn86g2sJPkzmcpGdghbNTfUKGTxymFrY/tLIodDzLoW9nOJ4FY8Q== +find-yarn-workspace-root@^2.0.0: + version "2.0.0" + resolved "https://registry.yarnpkg.com/find-yarn-workspace-root/-/find-yarn-workspace-root-2.0.0.tgz#f47fb8d239c900eb78179aa81b66673eac88f7bd" + integrity sha512-1IMnbjt4KzsQfnhnzNd8wUEgXZ44IzZaZmnLYx7D5FZlaHt2gW20Cri8Q+E/t5tIj4+epTBub+2Zxu/vNILzqQ== dependencies: - fs-extra "^4.0.3" - micromatch "^3.1.4" + micromatch "^4.0.2" first-chunk-stream@^1.0.0: version "1.0.0" @@ -5049,6 +6732,11 @@ follow-redirects@1.5.10: dependencies: debug "=3.1.0" +follow-redirects@^1.10.0: + version "1.14.2" + resolved "https://registry.yarnpkg.com/follow-redirects/-/follow-redirects-1.14.2.tgz#cecb825047c00f5e66b142f90fed4f515dec789b" + integrity sha512-yLR6WaE2lbF0x4K2qE2p9PEXKLDjUjnR/xmjS3wHAYxtlsI9MLLBJUZirAHKzUZDGLxje7w/cXR49WOUo4rbsA== + for-each@^0.3.3: version "0.3.3" resolved "https://registry.yarnpkg.com/for-each/-/for-each-0.3.3.tgz#69b447e88a0a5d32c3e7084f3f1710034b21376e" @@ -5175,7 +6863,7 @@ fs-extra@^0.30.0: path-is-absolute "^1.0.0" rimraf "^2.2.8" -fs-extra@^4.0.2, fs-extra@^4.0.3: +fs-extra@^4.0.2: version "4.0.3" resolved "https://registry.yarnpkg.com/fs-extra/-/fs-extra-4.0.3.tgz#0d852122e5bc5beb453fb028e9c0c9bf36340c94" integrity sha512-q6rbdDd1o2mAnQreO7YADIxf/Whx4AHBiRf6d+/cVT8h44ss+lHgxf1FemcqDnQt9X3ct4McHr+JMGlYSsK7Cg== @@ -5202,7 +6890,7 @@ fs-extra@^8.0.1, fs-extra@^8.1.0: jsonfile "^4.0.0" universalify "^0.1.0" -fs-extra@^9.1.0: +fs-extra@^9.0.1, fs-extra@^9.1.0: version "9.1.0" resolved "https://registry.yarnpkg.com/fs-extra/-/fs-extra-9.1.0.tgz#5954460c764a8da2094ba3554bf839e6b9a7c86d" integrity sha512-hcg3ZmepS30/7BSFqRvoo3DOMQu7IjqxO5nCDt+zM9XWjb33Wg7ziNT+Qvqbuc3+gWpzO02JubVyk2G4Zvo1OQ== @@ -5229,11 +6917,24 @@ fs.realpath@^1.0.0: resolved "https://registry.yarnpkg.com/fs.realpath/-/fs.realpath-1.0.0.tgz#1504ad2523158caa40db4a2787cb01411994ea4f" integrity sha1-FQStJSMVjKpA20onh8sBQRmU6k8= -fsevents@~2.1.2: +fsevents@^1.2.7: + version "1.2.13" + resolved "https://registry.yarnpkg.com/fsevents/-/fsevents-1.2.13.tgz#f325cb0455592428bcf11b383370ef70e3bfcc38" + integrity sha512-oWb1Z6mkHIskLzEJ/XWX0srkpkTQ7vaopMQkyaEIoq0fmtFVxOthb8cCxeT+p3ynTdkk/RZwbgG4brR5BeWECw== + dependencies: + bindings "^1.5.0" + nan "^2.12.1" + +fsevents@~2.1.1, fsevents@~2.1.2: version "2.1.3" resolved "https://registry.yarnpkg.com/fsevents/-/fsevents-2.1.3.tgz#fb738703ae8d2f9fe900c33836ddebee8b97f23e" integrity sha512-Auw9a4AxqWpa9GUfj370BMPzzyncfBABW8Mab7BGWBYDj4Isgq+cDKtx0i6u9jcX9pQDnswsaaOTgTmA5pEjuQ== +fsevents@~2.3.2: + version "2.3.2" + resolved "https://registry.yarnpkg.com/fsevents/-/fsevents-2.3.2.tgz#8a526f78b8fdf4623b709e0b975c52c24c02fd1a" + integrity sha512-xiqMQR4xAeHTuB9uWm+fFRcIOgKBMiOBP+eXiyT7jsgVCq1bkVygt00oASowB7EdtpOHaaPgKt812P9ab+DDKA== + function-bind@^1.1.1: version "1.1.1" resolved "https://registry.yarnpkg.com/function-bind/-/function-bind-1.1.1.tgz#a56899d3ea3c9bab874bb9773b7c5ede92f4895d" @@ -5244,16 +6945,7 @@ functional-red-black-tree@^1.0.1: resolved "https://registry.yarnpkg.com/functional-red-black-tree/-/functional-red-black-tree-1.0.1.tgz#1b0ab3bd553b2a0d6399d29c0e3ea0b252078327" integrity sha1-GwqzvVU7Kg1jmdKcDj6gslIHgyc= -ganache-cli@6.9.0: - version "6.9.0" - resolved "https://registry.yarnpkg.com/ganache-cli/-/ganache-cli-6.9.0.tgz#94d7e26964dff80b7382a33829ec75e15709a948" - integrity sha512-ZdL6kPrApXF/O+f6uU431OJcwxMk69H3KPDSHHrMP82ZvZRNpDHbR+rVv7XX/YUeoQ5q6nZ2AFiGiFAVn9pfzA== - dependencies: - ethereumjs-util "6.1.0" - source-map-support "0.5.12" - yargs "13.2.4" - -ganache-cli@^6.12.2: +ganache-cli@^6.1.0, ganache-cli@^6.11.0, ganache-cli@^6.12.2: version "6.12.2" resolved "https://registry.yarnpkg.com/ganache-cli/-/ganache-cli-6.12.2.tgz#c0920f7db0d4ac062ffe2375cb004089806f627a" integrity sha512-bnmwnJDBDsOWBUP8E/BExWf85TsdDEFelQSzihSJm9VChVO1SHp94YXLP5BlA4j/OTxp0wR4R1Tje9OHOuAJVw== @@ -5281,6 +6973,11 @@ gensync@^1.0.0-beta.2: resolved "https://registry.yarnpkg.com/gensync/-/gensync-1.0.0-beta.2.tgz#32a6ee76c3d7f52d46b2b1ae5d93fea8580a25e0" integrity sha512-3hN7NaskYvMDLQY55gnW3NQ+mesEAepTqlg+VEbj7zzqEMBVNhzcGYYeqFo/TlYz6eQiFcp1HcsCZO+nGgS8zg== +get-caller-file@^1.0.1: + version "1.0.3" + resolved "https://registry.yarnpkg.com/get-caller-file/-/get-caller-file-1.0.3.tgz#f978fa4c90d1dfe7ff2d6beda2a515e713bdcf4a" + integrity sha512-3t6rVToeoZfYSGd8YoLFR2DJkiQrIiUrGcjvFX2mDw3bn6k2OtwHN0TNCLbBO+w8qTvimhDkv+LSscbJY1vE6w== + get-caller-file@^2.0.1: version "2.0.5" resolved "https://registry.yarnpkg.com/get-caller-file/-/get-caller-file-2.0.5.tgz#4f94412a82db32f36e3b0b9741f8a97feb031f7e" @@ -5291,6 +6988,20 @@ get-func-name@^2.0.0: resolved "https://registry.yarnpkg.com/get-func-name/-/get-func-name-2.0.0.tgz#ead774abee72e20409433a066366023dd6887a41" integrity sha1-6td0q+5y4gQJQzoGY2YCPdaIekE= +get-installed-path@^2.0.3: + version "2.1.1" + resolved "https://registry.yarnpkg.com/get-installed-path/-/get-installed-path-2.1.1.tgz#a1f33dc6b8af542c9331084e8edbe37fe2634152" + integrity sha512-Qkn9eq6tW5/q9BDVdMpB8tOHljX9OSP0jRC5TRNVA4qRc839t4g8KQaR8t0Uv0EFVL0MlyG7m/ofjEgAROtYsA== + dependencies: + global-modules "1.0.0" + +get-installed-path@^4.0.8: + version "4.0.8" + resolved "https://registry.yarnpkg.com/get-installed-path/-/get-installed-path-4.0.8.tgz#a4fee849f5f327c12c551bb37477acd5151e5f7d" + integrity sha512-PmANK1xElIHlHH2tXfOoTnSDUjX1X3GvKK6ZyLbUnSCCn1pADwu67eVWttuPzJWrXDDT2MfO6uAaKILOFfitmA== + dependencies: + global-modules "1.0.0" + get-intrinsic@^1.0.2, get-intrinsic@^1.1.0, get-intrinsic@^1.1.1: version "1.1.1" resolved "https://registry.yarnpkg.com/get-intrinsic/-/get-intrinsic-1.1.1.tgz#15f59f376f855c446963948f0d24cd3637b4abc6" @@ -5300,6 +7011,11 @@ get-intrinsic@^1.0.2, get-intrinsic@^1.1.0, get-intrinsic@^1.1.1: has "^1.0.3" has-symbols "^1.0.1" +get-iterator@^1.0.2: + version "1.0.2" + resolved "https://registry.yarnpkg.com/get-iterator/-/get-iterator-1.0.2.tgz#cd747c02b4c084461fac14f48f6b45a80ed25c82" + integrity sha512-v+dm9bNVfOYsY1OrhaCrmyOcYoSeVvbt+hHZ0Au+T+p1y+0Uyj9aMaGIeUTT6xdpRbWzDeYKvfOslPhggQMcsg== + get-params@^0.1.2: version "0.1.2" resolved "https://registry.yarnpkg.com/get-params/-/get-params-0.1.2.tgz#bae0dfaba588a0c60d7834c0d8dc2ff60eeef2fe" @@ -5310,6 +7026,11 @@ get-port@^3.1.0: resolved "https://registry.yarnpkg.com/get-port/-/get-port-3.2.0.tgz#dd7ce7de187c06c8bf353796ac71e099f0980ebc" integrity sha1-3Xzn3hh8Bsi/NTeWrHHgmfCYDrw= +get-prototype-of@0.0.0: + version "0.0.0" + resolved "https://registry.yarnpkg.com/get-prototype-of/-/get-prototype-of-0.0.0.tgz#98772bd10716d16deb4b322516c469efca28ac44" + integrity sha1-mHcr0QcW0W3rSzIlFsRp78oorEQ= + get-stream@^2.2.0: version "2.3.1" resolved "https://registry.yarnpkg.com/get-stream/-/get-stream-2.3.1.tgz#5f38f93f346009666ee0150a054167f91bdd95de" @@ -5372,7 +7093,7 @@ glob-parent@^2.0.0: dependencies: is-glob "^2.0.0" -glob-parent@^3.0.0: +glob-parent@^3.0.0, glob-parent@^3.1.0: version "3.1.0" resolved "https://registry.yarnpkg.com/glob-parent/-/glob-parent-3.1.0.tgz#9e6af6299d8d3bd2bd40430832bd113df906c5ae" integrity sha1-nmr2KZ2NO9K9QEMIMr0RPfkGxa4= @@ -5387,7 +7108,7 @@ glob-parent@^5.1.0: dependencies: is-glob "^4.0.1" -glob-parent@~5.1.0: +glob-parent@~5.1.0, glob-parent@~5.1.2: version "5.1.2" resolved "https://registry.yarnpkg.com/glob-parent/-/glob-parent-5.1.2.tgz#869832c58034fe68a4093c17dc15e8340d8401c4" integrity sha512-AOIgSQCepiJYwP3ARnGx+5VnTu2HBYdzbGP45eLw1vr3zB3vZLeyed1sC9hnbcOc9/SrMyM5RPQrkGz4aS9Zow== @@ -5408,10 +7129,10 @@ glob-stream@^5.3.2: to-absolute-glob "^0.1.1" unique-stream "^2.0.2" -glob@7.1.2: - version "7.1.2" - resolved "https://registry.yarnpkg.com/glob/-/glob-7.1.2.tgz#c19c9df9a028702d678612384a6552404c636d15" - integrity sha512-MJTUg1kjuLeQCJ+ccE4Vpa6kKVXkPYJ2mOCQyUuKLcLQsdrMCpBPUi8qVE6+YuaJkozeA9NusTAw3hLr8Xe5EQ== +glob@7.1.3: + version "7.1.3" + resolved "https://registry.yarnpkg.com/glob/-/glob-7.1.3.tgz#3960832d3f1574108342dafd3a67b332c0969df1" + integrity sha512-vcfuiIxogLV4DlGBHIUOwI0IbrJ8HWPc4MU7HzviGeNho/UJDfi6B5p3sHeWIQ0KGIU0Jpxi5ZHxemQfLkkAwQ== dependencies: fs.realpath "^1.0.0" inflight "^1.0.4" @@ -5443,6 +7164,27 @@ glob@^5.0.15, glob@^5.0.3: once "^1.3.0" path-is-absolute "^1.0.0" +glob@^7.1.6: + version "7.1.7" + resolved "https://registry.yarnpkg.com/glob/-/glob-7.1.7.tgz#3b193e9233f01d42d0b3f78294bbeeb418f94a90" + integrity sha512-OvD9ENzPLbegENnYP5UUfJIirTg4+XwMWGaQfQTY0JenxNvvIKP3U3/tAQSPIu/lHxXYSZmpXlUHeqAIdKzBLQ== + dependencies: + fs.realpath "^1.0.0" + inflight "^1.0.4" + inherits "2" + minimatch "^3.0.4" + once "^1.3.0" + path-is-absolute "^1.0.0" + +global-modules@1.0.0, global-modules@^1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/global-modules/-/global-modules-1.0.0.tgz#6d770f0eb523ac78164d72b5e71a8877265cc3ea" + integrity sha512-sKzpEkf11GpOFuw0Zzjzmt4B4UZwjOcG757PPvrfhxcLFbq0wpsgpOqxpxtxFiCG4DtG93M6XRVbF2oGdev7bg== + dependencies: + global-prefix "^1.0.1" + is-windows "^1.0.1" + resolve-dir "^1.0.0" + global-modules@^2.0.0: version "2.0.0" resolved "https://registry.yarnpkg.com/global-modules/-/global-modules-2.0.0.tgz#997605ad2345f27f51539bea26574421215c7780" @@ -5450,6 +7192,17 @@ global-modules@^2.0.0: dependencies: global-prefix "^3.0.0" +global-prefix@^1.0.1: + version "1.0.2" + resolved "https://registry.yarnpkg.com/global-prefix/-/global-prefix-1.0.2.tgz#dbf743c6c14992593c655568cb66ed32c0122ebe" + integrity sha1-2/dDxsFJklk8ZVVoy2btMsASLr4= + dependencies: + expand-tilde "^2.0.2" + homedir-polyfill "^1.0.1" + ini "^1.3.4" + is-windows "^1.0.1" + which "^1.2.14" + global-prefix@^3.0.0: version "3.0.0" resolved "https://registry.yarnpkg.com/global-prefix/-/global-prefix-3.0.0.tgz#fc85f73064df69f50421f47f883fe5b913ba9b97" @@ -5477,6 +7230,13 @@ globals@^9.18.0: resolved "https://registry.yarnpkg.com/globals/-/globals-9.18.0.tgz#aa3896b3e69b487f17e31ed2143d69a8e30c2d8a" integrity sha512-S0nG3CLEQiY/ILxqtztTWH/3iRRdyBLw6KMDxnKMchrtbj2OFmehVh0WUCfW3DUrIgx/qFrJPICrq4Z4sTR9UQ== +globalthis@^1.0.1: + version "1.0.2" + resolved "https://registry.yarnpkg.com/globalthis/-/globalthis-1.0.2.tgz#2a235d34f4d8036219f7e34929b5de9e18166b8b" + integrity sha512-ZQnSFO1la8P7auIOQECnm0sSuoMeaSq0EEdXMBFF2QJO4uNcwbyhSgG3MruWNbFTqCLmxVwGOl7LZ9kASvHdeQ== + dependencies: + define-properties "^1.1.3" + globby@11.0.2: version "11.0.2" resolved "https://registry.yarnpkg.com/globby/-/globby-11.0.2.tgz#1af538b766a3b540ebfb58a32b2e2d5897321d83" @@ -5503,6 +7263,11 @@ globby@^10.0.1: merge2 "^1.2.3" slash "^3.0.0" +google-protobuf@^3.13.0, google-protobuf@^3.17.3: + version "3.17.3" + resolved "https://registry.yarnpkg.com/google-protobuf/-/google-protobuf-3.17.3.tgz#f87595073545a77946c8f0b67c302c5f7646d700" + integrity sha512-OVPzcSWIAJ+d5yiHyeaLrdufQtrvaBrF4JQg+z8ynTkbO3uFcujqXszTumqg1cGsAsjkWnI+M5B1xZ19yR4Wyg== + got@9.6.0: version "9.6.0" resolved "https://registry.yarnpkg.com/got/-/got-9.6.0.tgz#edf45e7d67f99545705de1f7bbeeeb121765ed85" @@ -5555,6 +7320,11 @@ graceful-fs@^4.1.10, graceful-fs@^4.1.11, graceful-fs@^4.1.2, graceful-fs@^4.1.6 resolved "https://registry.yarnpkg.com/graceful-readlink/-/graceful-readlink-1.0.1.tgz#4cafad76bc62f02fa039b2f94e9a3dd3a391a725" integrity sha1-TK+tdrxi8C+gObL5Tpo906ORpyU= +grapheme-splitter@^1.0.4: + version "1.0.4" + resolved "https://registry.yarnpkg.com/grapheme-splitter/-/grapheme-splitter-1.0.4.tgz#9cf3a665c6247479896834af35cf1dbb4400767e" + integrity sha512-bzh50DW9kTPM00T8y4o8vQg89Di9oLJVLW/KaOGIXJWP/iqCN6WKYkbNOF04vFLJhwcpYUh9ydh/+5vpOqV4YQ== + graphql-extensions@^0.12.8: version "0.12.8" resolved "https://registry.yarnpkg.com/graphql-extensions/-/graphql-extensions-0.12.8.tgz#9cdc2c43d8fe5e0f6c3177a004ac011da2a8aa0f" @@ -5712,6 +7482,11 @@ has-flag@^1.0.0: resolved "https://registry.yarnpkg.com/has-flag/-/has-flag-1.0.0.tgz#9d9e793165ce017a00f00418c43f942a7b1d11fa" integrity sha1-nZ55MWXOAXoA8AQYxD+UKnsdEfo= +has-flag@^2.0.0: + version "2.0.0" + resolved "https://registry.yarnpkg.com/has-flag/-/has-flag-2.0.0.tgz#e8207af1cc7b30d446cc70b734b5e8be18f88d51" + integrity sha1-6CB68cx7MNRGzHC3NLXovhj4jVE= + has-flag@^3.0.0: version "3.0.0" resolved "https://registry.yarnpkg.com/has-flag/-/has-flag-3.0.0.tgz#b5d454dc2199ae225699f3467e5a07f3b955bafd" @@ -5798,7 +7573,7 @@ hash.js@1.1.3: inherits "^2.0.3" minimalistic-assert "^1.0.0" -hash.js@^1.0.0, hash.js@^1.0.3, hash.js@^1.1.7: +hash.js@1.1.7, hash.js@^1.0.0, hash.js@^1.0.3, hash.js@^1.1.7: version "1.1.7" resolved "https://registry.yarnpkg.com/hash.js/-/hash.js-1.1.7.tgz#0babca538e8d4ee4a0f8988d68866537a003cf42" integrity sha512-taOaskGt4z4SOANNseOviYDvjEJinIkRgmp7LbKP2YTTmVxWBl87s/uzK9r+44BclBSp2X7K1hqeNfz9JbBeXA== @@ -5806,12 +7581,7 @@ hash.js@^1.0.0, hash.js@^1.0.3, hash.js@^1.1.7: inherits "^2.0.3" minimalistic-assert "^1.0.1" -he@1.1.1: - version "1.1.1" - resolved "https://registry.yarnpkg.com/he/-/he-1.1.1.tgz#93410fd21b009735151f8868c2f271f3427e23fd" - integrity sha1-k0EP0hsAlzUVH4howvJx80J+I/0= - -he@1.2.0: +he@1.2.0, he@^1.1.1: version "1.2.0" resolved "https://registry.yarnpkg.com/he/-/he-1.2.0.tgz#84ae65fa7eafb165fddb61566ae14baf05664f0f" integrity sha512-F/1DnUGPopORZi0ni+CvrCgHQ5FyEAHRLSApuYWMmrbSwoN2Mn/7k+Gl38gJnR7yyDZk6WLXwiGod1JOWNDKGw== @@ -5824,6 +7594,16 @@ header-case@^1.0.0: no-case "^2.2.0" upper-case "^1.1.3" +highlight.js@^10.4.1: + version "10.7.3" + resolved "https://registry.yarnpkg.com/highlight.js/-/highlight.js-10.7.3.tgz#697272e3991356e40c3cac566a74eef681756531" + integrity sha512-tzcUFauisWKNHaRkN4Wjl/ZA07gENAjFl3J/c480dprkGTg5EQstgaNFqBfUqCq54kZRIEcreTsAgF/m2quD7A== + +highlightjs-solidity@^1.2.2: + version "1.2.2" + resolved "https://registry.yarnpkg.com/highlightjs-solidity/-/highlightjs-solidity-1.2.2.tgz#049a050c0d8009c99b373537a4e66bf55366de51" + integrity sha512-+cZ+1+nAO5Pi6c70TKuMcPmwqLECxiYhnQc1MxdXckK94zyWFMNZADzu98ECNlf5xCRdNh+XKp+eklmRU+Dniw== + hmac-drbg@^1.0.0, hmac-drbg@^1.0.1: version "1.0.1" resolved "https://registry.yarnpkg.com/hmac-drbg/-/hmac-drbg-1.0.1.tgz#d2745701025a6c775a6c545793ed502fc0c649a1" @@ -5840,6 +7620,13 @@ hoist-non-react-statics@^3.3.2: dependencies: react-is "^16.7.0" +homedir-polyfill@^1.0.1: + version "1.0.3" + resolved "https://registry.yarnpkg.com/homedir-polyfill/-/homedir-polyfill-1.0.3.tgz#743298cef4e5af3e194161fbadcc2151d3a058e8" + integrity sha512-eSmmWE5bZTK2Nou4g0AI3zZ9rswp7GRKoKXS1BLUkvPviOqs4YTN1djQIqrXy9k5gEtdLPy86JjRwsNM9tnDcA== + dependencies: + parse-passwd "^1.0.0" + hosted-git-info@^2.1.4: version "2.8.8" resolved "https://registry.yarnpkg.com/hosted-git-info/-/hosted-git-info-2.8.8.tgz#7539bd4bc1e0e0a895815a2e0262420b12858488" @@ -5862,6 +7649,16 @@ htmlparser2@^3.9.1: inherits "^2.0.1" readable-stream "^3.1.1" +htmlparser2@^6.1.0: + version "6.1.0" + resolved "https://registry.yarnpkg.com/htmlparser2/-/htmlparser2-6.1.0.tgz#c4d762b6c3371a05dbe65e94ae43a9f845fb8fb7" + integrity sha512-gyyPk6rgonLFEDGoeRgQNaEUvdJ4ktTmmUh/h2t7s+M8oPpIPxgNACWa+6ESR57kXstwqPiCut0V8NRpcwgU7A== + dependencies: + domelementtype "^2.0.1" + domhandler "^4.0.0" + domutils "^2.5.2" + entities "^2.0.0" + htmlparser2@~3.8.1: version "3.8.3" resolved "https://registry.yarnpkg.com/htmlparser2/-/htmlparser2-3.8.3.tgz#996c28b191516a8be86501a7d79757e5c70c1068" @@ -5942,6 +7739,11 @@ http-signature@~1.2.0: jsprim "^1.2.2" sshpk "^1.7.0" +https-browserify@^1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/https-browserify/-/https-browserify-1.0.0.tgz#ec06c10e0a34c0f2faf199f7fd7fc78fffd03c73" + integrity sha1-7AbBDgo0wPL68Zn3/X/Hj//QPHM= + ice-cap@0.0.4: version "0.0.4" resolved "https://registry.yarnpkg.com/ice-cap/-/ice-cap-0.0.4.tgz#8a6d31ab4cac8d4b56de4fa946df3352561b6e18" @@ -5957,6 +7759,13 @@ iconv-lite@0.4.24, iconv-lite@^0.4.4: dependencies: safer-buffer ">= 2.1.2 < 3" +iconv-lite@^0.6.2: + version "0.6.3" + resolved "https://registry.yarnpkg.com/iconv-lite/-/iconv-lite-0.6.3.tgz#a52f80bf38da1952eb5c681790719871a1a72501" + integrity sha512-4fCk79wshMdzMp2rH06qWrJE4iolqLhCUH+OiuIgU++RB0+94NlDL81atO7GX55uUKueo0txHNtvEyI6D7WdMw== + dependencies: + safer-buffer ">= 2.1.2 < 3.0.0" + idna-uts46-hx@^2.3.1: version "2.3.1" resolved "https://registry.yarnpkg.com/idna-uts46-hx/-/idna-uts46-hx-2.3.1.tgz#a1dc5c4df37eee522bf66d969cc980e00e8711f9" @@ -5964,7 +7773,7 @@ idna-uts46-hx@^2.3.1: dependencies: punycode "2.1.0" -ieee754@^1.1.13: +ieee754@^1.1.13, ieee754@^1.2.1: version "1.2.1" resolved "https://registry.yarnpkg.com/ieee754/-/ieee754-1.2.1.tgz#8eb7a10a63fff25d15a57b001586d177d1b0d352" integrity sha512-dcyqhDvX1C46lXZcVqCpK+FtMRQVdIMN6/Df5js2zouUsqG7I6sFxitIC+7KYK29KdXOLHdu9zL4sFnoVQnqaA== @@ -6006,10 +7815,10 @@ immediate@~3.2.3: resolved "https://registry.yarnpkg.com/immediate/-/immediate-3.2.3.tgz#d140fa8f614659bd6541233097ddaac25cdd991c" integrity sha1-0UD6j2FGWb1lQSMwl92qwlzdmRw= -immutable@^4.0.0-rc.12: - version "4.0.0-rc.12" - resolved "https://registry.yarnpkg.com/immutable/-/immutable-4.0.0-rc.12.tgz#ca59a7e4c19ae8d9bf74a97bdf0f6e2f2a5d0217" - integrity sha512-0M2XxkZLx/mi3t8NVwIm1g8nHoEmM9p9UBl/G9k4+hm0kBgOVdMV/B3CY5dQ8qG8qc80NN4gDV4HQv6FTJ5q7A== +immutable@^4.0.0-rc.14: + version "4.0.0-rc.14" + resolved "https://registry.yarnpkg.com/immutable/-/immutable-4.0.0-rc.14.tgz#29ba96631ec10867d1348515ac4e6bdba462f071" + integrity sha512-pfkvmRKJSoW7JFx0QeYlAmT+kNYvn5j0u7bnpNq4N2RCvHSTlLT208G8jgaquNe+Q8kCPHKOSpxJkyvLDpYq0w== immutable@~3.7.6: version "3.7.6" @@ -6041,21 +7850,26 @@ inherits@2, inherits@2.0.4, inherits@^2.0.1, inherits@^2.0.3, inherits@^2.0.4, i resolved "https://registry.yarnpkg.com/inherits/-/inherits-2.0.4.tgz#0fa2c64f932917c3433a0ded55363aae37416b7c" integrity sha512-k/vGaX4/Yla3WzyMCvTQOXYeIHvqOKtnqBduzTHpzpQZzAskKMhZ2K+EnBiSM9zGSoIFeMpXKxa4dYeZIQqewQ== +inherits@2.0.1, inherits@=2.0.1: + version "2.0.1" + resolved "https://registry.yarnpkg.com/inherits/-/inherits-2.0.1.tgz#b17d08d326b4423e568eff719f91b0b1cbdf69f1" + integrity sha1-sX0I0ya0Qj5Wjv9xn5GwscvfafE= + inherits@2.0.3: version "2.0.3" resolved "https://registry.yarnpkg.com/inherits/-/inherits-2.0.3.tgz#633c2c83e3da42a502f52466022480f4208261de" integrity sha1-Yzwsg+PaQqUC9SRmAiSA9CCCYd4= +ini@^1.3.4, ini@~1.3.0: + version "1.3.8" + resolved "https://registry.yarnpkg.com/ini/-/ini-1.3.8.tgz#a29da425b48806f34767a4efce397269af28432c" + integrity sha512-JV/yugV2uzW5iMRSiZAyDtQd+nxtUnjeLt0acNdw98kKLrvuRVyB80tsREOE7yvGVgalhZ6RNXCmEHkUKBKxew== + ini@^1.3.5: version "1.3.5" resolved "https://registry.yarnpkg.com/ini/-/ini-1.3.5.tgz#eee25f56db1c9ec6085e0c22778083f596abf927" integrity sha512-RZY5huIKCMRWDUqZlEi72f/lmXKMvuszcMBduliQ3nnWbx9X/ZBQO7DijMEYS9EhHBb2qacRUMtC7svLwe0lcw== -ini@~1.3.0: - version "1.3.8" - resolved "https://registry.yarnpkg.com/ini/-/ini-1.3.8.tgz#a29da425b48806f34767a4efce397269af28432c" - integrity sha512-JV/yugV2uzW5iMRSiZAyDtQd+nxtUnjeLt0acNdw98kKLrvuRVyB80tsREOE7yvGVgalhZ6RNXCmEHkUKBKxew== - interpret@^1.0.0: version "1.2.0" resolved "https://registry.yarnpkg.com/interpret/-/interpret-1.2.0.tgz#d5061a6224be58e8083985f5014d844359576296" @@ -6078,11 +7892,143 @@ invert-kv@^2.0.0: resolved "https://registry.yarnpkg.com/invert-kv/-/invert-kv-2.0.0.tgz#7393f5afa59ec9ff5f67a27620d11c226e3eec02" integrity sha512-wPVv/y/QQ/Uiirj/vh3oP+1Ww+AWehmi1g5fFWGPF6IpCBCDVrhgHRMvrLfdYcwDh3QJbGXDW4JAuzxElLSqKA== +ip-regex@^4.0.0: + version "4.3.0" + resolved "https://registry.yarnpkg.com/ip-regex/-/ip-regex-4.3.0.tgz#687275ab0f57fa76978ff8f4dddc8a23d5990db5" + integrity sha512-B9ZWJxHHOHUhUjCPrMpLD4xEq35bUTClHM1S6CBU5ixQnkZmwipwgc96vAd7AAGM9TGHvJR+Uss+/Ak6UphK+Q== + ipaddr.js@1.9.0: version "1.9.0" resolved "https://registry.yarnpkg.com/ipaddr.js/-/ipaddr.js-1.9.0.tgz#37df74e430a0e47550fe54a2defe30d8acd95f65" integrity sha512-M4Sjn6N/+O6/IXSJseKqHoFc+5FdGJ22sXqnjTpdZweHK64MzEPAyQZyEU3R/KRv2GLoa7nNtg/C2Ev6m7z+eA== +ipfs-core-types@^0.2.1: + version "0.2.1" + resolved "https://registry.yarnpkg.com/ipfs-core-types/-/ipfs-core-types-0.2.1.tgz#460bf2116477ce621995468c962c685dbdc4ac6f" + integrity sha512-q93+93qSybku6woZaajE9mCrHeVoMzNtZ7S5m/zx0+xHRhnoLlg8QNnGGsb5/+uFQt/RiBArsIw/Q61K9Jwkzw== + dependencies: + cids "^1.1.5" + multiaddr "^8.0.0" + peer-id "^0.14.1" + +ipfs-core-utils@^0.6.1: + version "0.6.1" + resolved "https://registry.yarnpkg.com/ipfs-core-utils/-/ipfs-core-utils-0.6.1.tgz#59d1ca9ff4a33bbf6497c4abe024573c3fd7d784" + integrity sha512-UFIklwE3CFcsNIhYFDuz0qB7E2QtdFauRfc76kskgiqhGWcjqqiDeND5zBCrAy0u8UMaDqAbFl02f/mIq1yKXw== + dependencies: + any-signal "^2.0.0" + blob-to-it "^1.0.1" + browser-readablestream-to-it "^1.0.1" + cids "^1.1.5" + err-code "^2.0.3" + ipfs-core-types "^0.2.1" + ipfs-utils "^5.0.0" + it-all "^1.0.4" + it-map "^1.0.4" + it-peekable "^1.0.1" + multiaddr "^8.0.0" + multiaddr-to-uri "^6.0.0" + parse-duration "^0.4.4" + timeout-abort-controller "^1.1.1" + uint8arrays "^1.1.0" + +ipfs-http-client@^48.2.2: + version "48.2.2" + resolved "https://registry.yarnpkg.com/ipfs-http-client/-/ipfs-http-client-48.2.2.tgz#b570fb99866f94df1c394a6101a2eb750ff46599" + integrity sha512-f3ppfWe913SJLvunm0UgqdA1dxVZSGQJPaEVJtqgjxPa5x0fPDiBDdo60g2MgkW1W6bhF9RGlxvHHIE9sv/tdg== + dependencies: + any-signal "^2.0.0" + bignumber.js "^9.0.0" + cids "^1.1.5" + debug "^4.1.1" + form-data "^3.0.0" + ipfs-core-types "^0.2.1" + ipfs-core-utils "^0.6.1" + ipfs-utils "^5.0.0" + ipld-block "^0.11.0" + ipld-dag-cbor "^0.17.0" + ipld-dag-pb "^0.20.0" + ipld-raw "^6.0.0" + it-last "^1.0.4" + it-map "^1.0.4" + it-tar "^1.2.2" + it-to-stream "^0.1.2" + merge-options "^2.0.0" + multiaddr "^8.0.0" + multibase "^3.0.0" + multicodec "^2.0.1" + multihashes "^3.0.1" + nanoid "^3.1.12" + native-abort-controller "~0.0.3" + parse-duration "^0.4.4" + stream-to-it "^0.2.2" + uint8arrays "^1.1.0" + +ipfs-utils@^5.0.0: + version "5.0.1" + resolved "https://registry.yarnpkg.com/ipfs-utils/-/ipfs-utils-5.0.1.tgz#7c0053d5e77686f45577257a73905d4523e6b4f7" + integrity sha512-28KZPgO4Uf5duT2ORLAYfboUp98iUshDD7yRAfbNxNAR8Dtidfn6o20rZfoXnkri2zKBVIPlJkuCPmPJB+6erg== + dependencies: + abort-controller "^3.0.0" + any-signal "^2.1.0" + buffer "^6.0.1" + electron-fetch "^1.7.2" + err-code "^2.0.0" + fs-extra "^9.0.1" + is-electron "^2.2.0" + iso-url "^1.0.0" + it-glob "0.0.10" + it-to-stream "^0.1.2" + merge-options "^2.0.0" + nanoid "^3.1.3" + native-abort-controller "0.0.3" + native-fetch "^2.0.0" + node-fetch "^2.6.0" + stream-to-it "^0.2.0" + +ipld-block@^0.11.0: + version "0.11.1" + resolved "https://registry.yarnpkg.com/ipld-block/-/ipld-block-0.11.1.tgz#c3a7b41aee3244187bd87a73f980e3565d299b6e" + integrity sha512-sDqqLqD5qh4QzGq6ssxLHUCnH4emCf/8F8IwjQM2cjEEIEHMUj57XhNYgmGbemdYPznUhffxFGEHsruh5+HQRw== + dependencies: + cids "^1.0.0" + +ipld-dag-cbor@^0.17.0: + version "0.17.1" + resolved "https://registry.yarnpkg.com/ipld-dag-cbor/-/ipld-dag-cbor-0.17.1.tgz#842e6c250603e5791049168831a425ec03471fb1" + integrity sha512-Bakj/cnxQBdscORyf4LRHxQJQfoaY8KWc7PWROQgX+aw5FCzBt8ga0VM/59K+ABOznsqNvyLR/wz/oYImOpXJw== + dependencies: + borc "^2.1.2" + cids "^1.0.0" + is-circular "^1.0.2" + multicodec "^3.0.1" + multihashing-async "^2.0.0" + uint8arrays "^2.1.3" + +ipld-dag-pb@^0.20.0: + version "0.20.0" + resolved "https://registry.yarnpkg.com/ipld-dag-pb/-/ipld-dag-pb-0.20.0.tgz#025c0343aafe6cb9db395dd1dc93c8c60a669360" + integrity sha512-zfM0EdaolqNjAxIrtpuGKvXxWk5YtH9jKinBuQGTcngOsWFQhyybGCTJHGNGGtRjHNJi2hz5Udy/8pzv4kcKyg== + dependencies: + cids "^1.0.0" + class-is "^1.1.0" + multicodec "^2.0.0" + multihashing-async "^2.0.0" + protons "^2.0.0" + reset "^0.1.0" + run "^1.4.0" + stable "^0.1.8" + uint8arrays "^1.0.0" + +ipld-raw@^6.0.0: + version "6.0.0" + resolved "https://registry.yarnpkg.com/ipld-raw/-/ipld-raw-6.0.0.tgz#74d947fcd2ce4e0e1d5bb650c1b5754ed8ea6da0" + integrity sha512-UK7fjncAzs59iu/o2kwYtb8jgTtW6B+cNWIiNpAJkfRwqoMk1xD/6i25ktzwe4qO8gQgoR9RxA5ibC23nq8BLg== + dependencies: + cids "^1.0.0" + multicodec "^2.0.0" + multihashing-async "^2.0.0" + is-accessor-descriptor@^0.1.6: version "0.1.6" resolved "https://registry.yarnpkg.com/is-accessor-descriptor/-/is-accessor-descriptor-0.1.6.tgz#a9e12cb3ae8d876727eeef3843f8a0897b5c98d6" @@ -6114,6 +8060,13 @@ is-bigint@^1.0.1: resolved "https://registry.yarnpkg.com/is-bigint/-/is-bigint-1.0.1.tgz#6923051dfcbc764278540b9ce0e6b3213aa5ebc2" integrity sha512-J0ELF4yHFxHy0cmSxZuheDOz2luOdVvqjwmEcj8H/L1JHeuEDSDbeRP+Dk9kFVk5RTFzbucJ2Kb9F7ixY2QaCg== +is-binary-path@^1.0.0: + version "1.0.1" + resolved "https://registry.yarnpkg.com/is-binary-path/-/is-binary-path-1.0.1.tgz#75f16642b480f187a711c814161fd3a4a7655898" + integrity sha1-dfFmQrSA8YenEcgUFh/TpKdlWJg= + dependencies: + binary-extensions "^1.0.0" + is-binary-path@~2.1.0: version "2.1.0" resolved "https://registry.yarnpkg.com/is-binary-path/-/is-binary-path-2.1.0.tgz#ea1f7f3b80f064236e83470f86c09c254fb45b09" @@ -6148,6 +8101,11 @@ is-callable@^1.1.3, is-callable@^1.1.4, is-callable@^1.2.3: resolved "https://registry.yarnpkg.com/is-callable/-/is-callable-1.2.3.tgz#8b1e0500b73a1d76c70487636f368e519de8db8e" integrity sha512-J1DcMe8UYTBSrKezuIUTUwjXsho29693unXM2YhJUTR2txK/eG47bvNa/wipPFmZFgr/N6f1GA66dv0mEyTIyQ== +is-capitalized@^1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/is-capitalized/-/is-capitalized-1.0.0.tgz#4c8464b4d91d3e4eeb44889dd2cd8f1b0ac4c136" + integrity sha1-TIRktNkdPk7rRIid0s2PGwrEwTY= + is-ci@^2.0.0: version "2.0.0" resolved "https://registry.yarnpkg.com/is-ci/-/is-ci-2.0.0.tgz#6bc6334181810e04b5c22b3d589fdca55026404c" @@ -6155,6 +8113,16 @@ is-ci@^2.0.0: dependencies: ci-info "^2.0.0" +is-circular@^1.0.2: + version "1.0.2" + resolved "https://registry.yarnpkg.com/is-circular/-/is-circular-1.0.2.tgz#2e0ab4e9835f4c6b0ea2b9855a84acd501b8366c" + integrity sha512-YttjnrswnUYRVJvxCvu8z+PGMUSzC2JttP0OEXezlAEdp3EXzhf7IZ3j0gRAybJBQupedIZFhY61Tga6E0qASA== + +is-class@0.0.4: + version "0.0.4" + resolved "https://registry.yarnpkg.com/is-class/-/is-class-0.0.4.tgz#e057451705bb34e39e3e33598c93a9837296b736" + integrity sha1-4FdFFwW7NOOePjNZjJOpg3KWtzY= + is-core-module@^2.2.0: version "2.2.0" resolved "https://registry.yarnpkg.com/is-core-module/-/is-core-module-2.2.0.tgz#97037ef3d52224d85163f5597b2b63d9afed981a" @@ -6199,11 +8167,21 @@ is-descriptor@^1.0.0, is-descriptor@^1.0.2: is-data-descriptor "^1.0.0" kind-of "^6.0.2" +is-docker@^2.0.0: + version "2.2.1" + resolved "https://registry.yarnpkg.com/is-docker/-/is-docker-2.2.1.tgz#33eeabe23cfe86f14bde4408a02c0cfb853acdaa" + integrity sha512-F+i2BKsFrH66iaUFc0woD8sLy8getkwTwtOBjvs56Cx4CgJDeKQeqfz8wAYiSb8JOprWhHH5p77PbmYCvvUuXQ== + is-dotfile@^1.0.0: version "1.0.3" resolved "https://registry.yarnpkg.com/is-dotfile/-/is-dotfile-1.0.3.tgz#a6a2f32ffd2dfb04f5ca25ecd0f6b83cf798a1e1" integrity sha1-pqLzL/0t+wT1yiXs0Pa4PPeYoeE= +is-electron@^2.2.0: + version "2.2.0" + resolved "https://registry.yarnpkg.com/is-electron/-/is-electron-2.2.0.tgz#8943084f09e8b731b3a7a0298a7b5d56f6b7eef0" + integrity sha512-SpMppC2XR3YdxSzczXReBjqs2zGscWQpBIKqwXYBFic0ERaxNVgwLCHwOLZeESfdJQjX0RDvrJ1lBXX2ij+G1Q== + is-equal-shallow@^0.1.3: version "0.1.3" resolved "https://registry.yarnpkg.com/is-equal-shallow/-/is-equal-shallow-0.1.3.tgz#2238098fc221de0bcfa5d9eac4c45d638aa1c534" @@ -6265,7 +8243,7 @@ is-generator-function@^1.0.7: resolved "https://registry.yarnpkg.com/is-generator-function/-/is-generator-function-1.0.8.tgz#dfb5c2b120e02b0a8d9d2c6806cd5621aa922f7b" integrity sha512-2Omr/twNtufVZFr1GhxjOMFPAj2sjc/dKaIqBhvo4qciXfJmITGH6ZGd8eZYNHza8t1y0e01AuqRhJwfWp26WQ== -is-glob@4.0.1, is-glob@^4.0.1, is-glob@~4.0.1: +is-glob@4.0.1, is-glob@^4.0.0, is-glob@^4.0.1, is-glob@~4.0.1: version "4.0.1" resolved "https://registry.yarnpkg.com/is-glob/-/is-glob-4.0.1.tgz#7567dbe9f2f5e2467bc77ab83c4a29482407a5dc" integrity sha512-5G0tKtBTFImOqDnLB2hG6Bp2qcKEFduo4tZu9MT/H6NQv/ghhy30o55ufafxJ/LdH79LLs2Kfrn85TLKyA7BUg== @@ -6291,6 +8269,13 @@ is-hex-prefixed@1.0.0: resolved "https://registry.yarnpkg.com/is-hex-prefixed/-/is-hex-prefixed-1.0.0.tgz#7d8d37e6ad77e5d127148913c573e082d777f554" integrity sha1-fY035q135dEnFIkTxXPggtd39VQ= +is-ip@^3.1.0: + version "3.1.0" + resolved "https://registry.yarnpkg.com/is-ip/-/is-ip-3.1.0.tgz#2ae5ddfafaf05cb8008a62093cf29734f657c5d8" + integrity sha512-35vd5necO7IitFPjd/YBeqwWnyDWbuLH9ZXQdMfDA8TEo7pv5X8yfrvVO3xbJbLUlERCMvf6X0hTUamQxCYJ9Q== + dependencies: + ip-regex "^4.0.0" + is-lower-case@^1.1.0: version "1.1.3" resolved "https://registry.yarnpkg.com/is-lower-case/-/is-lower-case-1.1.3.tgz#7e147be4768dc466db3bfb21cc60b31e6ad69393" @@ -6357,6 +8342,11 @@ is-plain-obj@^1.1.0: resolved "https://registry.yarnpkg.com/is-plain-obj/-/is-plain-obj-1.1.0.tgz#71a50c8429dfca773c92a390a4a03b39fcd51d3e" integrity sha1-caUMhCnfync8kqOQpKA7OfzVHT4= +is-plain-obj@^2.0.0: + version "2.1.0" + resolved "https://registry.yarnpkg.com/is-plain-obj/-/is-plain-obj-2.1.0.tgz#45e42e37fccf1f40da8e5f76ee21515840c09287" + 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.yarnpkg.com/is-plain-object/-/is-plain-object-2.0.4.tgz#2c163b3fafb1b606d9d17928f05c2a1c38e07677" @@ -6452,17 +8442,24 @@ is-valid-glob@^0.3.0: resolved "https://registry.yarnpkg.com/is-valid-glob/-/is-valid-glob-0.3.0.tgz#d4b55c69f51886f9b65c70d6c2622d37e29f48fe" integrity sha1-1LVcafUYhvm2XHDWwmItN+KfSP4= -is-windows@^1.0.2: +is-windows@^1.0.1, is-windows@^1.0.2: version "1.0.2" resolved "https://registry.yarnpkg.com/is-windows/-/is-windows-1.0.2.tgz#d1850eb9791ecd18e6182ce12a30f396634bb19d" integrity sha512-eXK1UInq2bPmjyX6e3VHIzMLobc4J94i4AWn+Hpq3OU5KkrRC96OAcR3PRJ/pGu6m8TRnBHP9dkXQVsT/COVIA== +is-wsl@^2.1.1: + version "2.2.0" + resolved "https://registry.yarnpkg.com/is-wsl/-/is-wsl-2.2.0.tgz#74a4c76e77ca9fd3f932f290c17ea326cd157271" + integrity sha512-fKzAra0rGJUUBwGBgNkHZuToZcn+TtXHpeCgmkMJMMYx1sQDYaCSyjJBSCa2nH1DGm7s3n1oBnohoVTBaN7Lww== + dependencies: + is-docker "^2.0.0" + isarray@0.0.1: version "0.0.1" resolved "https://registry.yarnpkg.com/isarray/-/isarray-0.0.1.tgz#8a18acfca9a8f4177e09abfc6038939b05d1eedf" integrity sha1-ihis/Kmo9Bd+Cav8YDiTmwXR7t8= -isarray@1.0.0, isarray@~1.0.0: +isarray@1.0.0, isarray@^1.0.0, isarray@~1.0.0: version "1.0.0" resolved "https://registry.yarnpkg.com/isarray/-/isarray-1.0.0.tgz#bb935d48582cba168c06834957a54a3e07124f11" integrity sha1-u5NdSFgsuhaMBoNJV6VKPgcSTxE= @@ -6477,6 +8474,29 @@ isexe@^2.0.0: resolved "https://registry.yarnpkg.com/isexe/-/isexe-2.0.0.tgz#e8fbf374dc556ff8947a10dcb0572d633f2cfa10" integrity sha1-6PvzdNxVb/iUehDcsFctYz8s+hA= +iso-constants@^0.1.2: + version "0.1.2" + resolved "https://registry.yarnpkg.com/iso-constants/-/iso-constants-0.1.2.tgz#3d2456ed5aeaa55d18564f285ba02a47a0d885b4" + integrity sha512-OTCM5ZCQsHBCI4Wdu4tSxvDIkmDHd5EwJDps5mKqnQnWJSKlnwMs3EDZ4n3Fh1tmkWkDlyd2vCDbEYuPbyrUNQ== + +iso-random-stream@^2.0.0: + version "2.0.0" + resolved "https://registry.yarnpkg.com/iso-random-stream/-/iso-random-stream-2.0.0.tgz#3f0118166d5443148bbc134345fb100002ad0f1d" + integrity sha512-lGuIu104KfBV9ubYTSaE3GeAr6I69iggXxBHbTBc5u/XKlwlWl0LCytnkIZissaKqvxablwRD9B3ktVnmIUnEg== + dependencies: + events "^3.3.0" + readable-stream "^3.4.0" + +iso-url@^1.0.0: + version "1.1.5" + resolved "https://registry.yarnpkg.com/iso-url/-/iso-url-1.1.5.tgz#875a0f2bf33fa1fc200f8d89e3f49eee57a8f0d9" + integrity sha512-+3JqoKdBTGmyv9vOkS6b9iHhvK34UajfTibrH/1HOK8TI7K2VsM0qOCd+aJdWKtSOA8g3PqZfcwDmnR0p3klqQ== + +iso-url@~0.4.7: + version "0.4.7" + resolved "https://registry.yarnpkg.com/iso-url/-/iso-url-0.4.7.tgz#de7e48120dae46921079fe78f325ac9e9217a385" + integrity sha512-27fFRDnPAMnHGLq36bWTpKET+eiXct3ENlCcdcMdk+mjXrb2kw3mhBUg1B7ewAC0kVzlOPhADzQgz1SE6Tglog== + isobject@^2.0.0: version "2.1.0" resolved "https://registry.yarnpkg.com/isobject/-/isobject-2.1.0.tgz#f065561096a3f1da2ef46272f815c840d87e0c89" @@ -6494,7 +8514,7 @@ isobject@^4.0.0: resolved "https://registry.yarnpkg.com/isobject/-/isobject-4.0.0.tgz#3f1c9155e73b192022a80819bacd0343711697b0" integrity sha512-S/2fF5wH8SJA/kmwr6HYhK/RI/OkhD84k8ntalo0iJjZikgq1XFvR5M8NPT1x5F7fBwCG3qHfnzeP/Vh/ZxCUA== -isomorphic-ws@4.0.1: +isomorphic-ws@4.0.1, isomorphic-ws@^4.0.1: version "4.0.1" resolved "https://registry.yarnpkg.com/isomorphic-ws/-/isomorphic-ws-4.0.1.tgz#55fd4cd6c5e6491e76dc125938dd863f5cd4f2dc" integrity sha512-BhBvN2MBpWTaSHdWRb/bwdZJ1WaehQ2L1KngkCkfLUGF0mAWAT1sQUQacEmQ0jXkFw/czDXPNQSL5u2/Krsz1w== @@ -6512,6 +8532,84 @@ isurl@^1.0.0-alpha5: has-to-string-tag-x "^1.2.0" is-object "^1.0.1" +it-all@^1.0.4: + version "1.0.5" + resolved "https://registry.yarnpkg.com/it-all/-/it-all-1.0.5.tgz#e880510d7e73ebb79063a76296a2eb3cb77bbbdb" + integrity sha512-ygD4kA4vp8fi+Y+NBgEKt6W06xSbv6Ub/0V8d1r3uCyJ9Izwa1UspkIOlqY9fOee0Z1w3WRo1+VWyAU4DgtufA== + +it-concat@^1.0.0: + version "1.0.3" + resolved "https://registry.yarnpkg.com/it-concat/-/it-concat-1.0.3.tgz#84db9376e4c77bf7bc1fd933bb90f184e7cef32b" + integrity sha512-sjeZQ1BWQ9U/W2oI09kZgUyvSWzQahTkOkLIsnEPgyqZFaF9ME5gV6An4nMjlyhXKWQMKEakQU8oRHs2SdmeyA== + dependencies: + bl "^4.0.0" + +it-drain@^1.0.3: + version "1.0.4" + resolved "https://registry.yarnpkg.com/it-drain/-/it-drain-1.0.4.tgz#15ee0e90fba4b5bc8cff1c61b8c59d4203293baa" + integrity sha512-coB7mcyZ4lWBQKoQGJuqM+P94pvpn2T3KY27vcVWPqeB1WmoysRC76VZnzAqrBWzpWcoEJMjZ+fsMBslxNaWfQ== + +it-glob@0.0.10: + version "0.0.10" + resolved "https://registry.yarnpkg.com/it-glob/-/it-glob-0.0.10.tgz#4defd9286f693847c3ff483d2ff65f22e1359ad8" + integrity sha512-p1PR15djgPV7pxdLOW9j4WcJdla8+91rJdUU2hU2Jm68vkxpIEXK55VHBeH8Lvqh2vqLtM83t8q4BuJxue6niA== + dependencies: + fs-extra "^9.0.1" + minimatch "^3.0.4" + +it-last@^1.0.4: + version "1.0.5" + resolved "https://registry.yarnpkg.com/it-last/-/it-last-1.0.5.tgz#5c711c7d58948bcbc8e0cb129af3a039ba2a585b" + integrity sha512-PV/2S4zg5g6dkVuKfgrQfN2rUN4wdTI1FzyAvU+i8RV96syut40pa2s9Dut5X7SkjwA3P0tOhLABLdnOJ0Y/4Q== + +it-map@^1.0.4: + version "1.0.5" + resolved "https://registry.yarnpkg.com/it-map/-/it-map-1.0.5.tgz#2f6a9b8f0ba1ed1aeadabf86e00b38c73a1dc299" + integrity sha512-EElupuWhHVStUgUY+OfTJIS2MZed96lDrAXzJUuqiiqLnIKoBRqtX1ZG2oR0bGDsSppmz83MtzCeKLZ9TVAUxQ== + +it-peekable@^1.0.1: + version "1.0.2" + resolved "https://registry.yarnpkg.com/it-peekable/-/it-peekable-1.0.2.tgz#3b2c7948b765f35b3bb07abbb9b2108c644e73c1" + integrity sha512-LRPLu94RLm+lxLZbChuc9iCXrKCOu1obWqxfaKhF00yIp30VGkl741b5P60U+rdBxuZD/Gt1bnmakernv7bVFg== + +it-reader@^2.0.0: + version "2.1.0" + resolved "https://registry.yarnpkg.com/it-reader/-/it-reader-2.1.0.tgz#b1164be343f8538d8775e10fb0339f61ccf71b0f" + integrity sha512-hSysqWTO9Tlwc5EGjVf8JYZzw0D2FsxD/g+eNNWrez9zODxWt6QlN6JAMmycK72Mv4jHEKEXoyzUN4FYGmJaZw== + dependencies: + bl "^4.0.0" + +it-tar@^1.2.2: + version "1.2.2" + resolved "https://registry.yarnpkg.com/it-tar/-/it-tar-1.2.2.tgz#8d79863dad27726c781a4bcc491f53c20f2866cf" + integrity sha512-M8V4a9I+x/vwXTjqvixcEZbQZHjwDIb8iUQ+D4M2QbhAdNs3WKVSl+45u5/F2XFx6jYMFOGzMVlKNK/uONgNIA== + dependencies: + bl "^4.0.0" + buffer "^5.4.3" + iso-constants "^0.1.2" + it-concat "^1.0.0" + it-reader "^2.0.0" + p-defer "^3.0.0" + +it-to-stream@^0.1.2: + version "0.1.2" + resolved "https://registry.yarnpkg.com/it-to-stream/-/it-to-stream-0.1.2.tgz#7163151f75b60445e86b8ab1a968666acaacfe7b" + integrity sha512-DTB5TJRZG3untmZehcaFN0kGWl2bNv7tnJRgQHAO9QEt8jfvVRrebZtnD5NZd4SCj4WVPjl0LSrugNWE/UaZRQ== + dependencies: + buffer "^5.6.0" + fast-fifo "^1.0.0" + get-iterator "^1.0.2" + p-defer "^3.0.0" + p-fifo "^1.0.0" + readable-stream "^3.6.0" + +iter-tools@^7.0.2: + version "7.1.3" + resolved "https://registry.yarnpkg.com/iter-tools/-/iter-tools-7.1.3.tgz#eeafa7cde16ae8ff3b67ce6890f5e2f745a65fe7" + integrity sha512-Pnd3FVHgKnDHrTVjggXLMq5O/P60fho5iL0a0kkdLcofxX8STHw6cgYZ4ZHQS3Zb4Hg/VeqeNUxDs4vlVwUL4A== + dependencies: + "@babel/runtime" "^7.12.1" + iterall@^1.1.3, iterall@^1.2.1, iterall@^1.3.0: version "1.3.0" resolved "https://registry.yarnpkg.com/iterall/-/iterall-1.3.0.tgz#afcb08492e2915cbd8a0884eb93a8c94d0d72fea" @@ -6550,18 +8648,18 @@ js-tokens@^3.0.2: resolved "https://registry.yarnpkg.com/js-tokens/-/js-tokens-3.0.2.tgz#9866df395102130e38f7f996bceb65443209c25b" integrity sha1-mGbfOVECEw449/mWvOtlRDIJwls= -js-yaml@3.14.0: - version "3.14.0" - resolved "https://registry.yarnpkg.com/js-yaml/-/js-yaml-3.14.0.tgz#a7a34170f26a21bb162424d8adacb4113a69e482" - integrity sha512-/4IbIeHcD9VMHFqDR/gQ7EdZdLimOvW2DdcxFjdyyZ9NsbS+ccrXqVWDtab/lRl5AlUqmpBx8EhPaWR+OtY17A== +js-yaml@3.13.1, js-yaml@3.x, js-yaml@^3.13.1: + version "3.13.1" + resolved "https://registry.yarnpkg.com/js-yaml/-/js-yaml-3.13.1.tgz#aff151b30bfdfa8e49e05da22e7415e9dfa37847" + integrity sha512-YfbcO7jXDdyj0DGxYVSlSeQNHbD7XPWvrVWeVUujrQEoZzWJIRrCPoyk6kL6IAjAG2IolMK4T0hNUe0HOUs5Jw== dependencies: argparse "^1.0.7" esprima "^4.0.0" -js-yaml@3.x, js-yaml@^3.13.1: - version "3.13.1" - resolved "https://registry.yarnpkg.com/js-yaml/-/js-yaml-3.13.1.tgz#aff151b30bfdfa8e49e05da22e7415e9dfa37847" - integrity sha512-YfbcO7jXDdyj0DGxYVSlSeQNHbD7XPWvrVWeVUujrQEoZzWJIRrCPoyk6kL6IAjAG2IolMK4T0hNUe0HOUs5Jw== +js-yaml@3.14.0: + version "3.14.0" + resolved "https://registry.yarnpkg.com/js-yaml/-/js-yaml-3.14.0.tgz#a7a34170f26a21bb162424d8adacb4113a69e482" + integrity sha512-/4IbIeHcD9VMHFqDR/gQ7EdZdLimOvW2DdcxFjdyyZ9NsbS+ccrXqVWDtab/lRl5AlUqmpBx8EhPaWR+OtY17A== dependencies: argparse "^1.0.7" esprima "^4.0.0" @@ -6612,6 +8710,11 @@ json-buffer@3.0.0: resolved "https://registry.yarnpkg.com/json-buffer/-/json-buffer-3.0.0.tgz#5b1f397afc75d677bde8bcfc0e47e1f9a3d9a898" integrity sha1-Wx85evx11ne96Lz8Dkfh+aPZqJg= +json-loader@^0.5.4: + version "0.5.7" + resolved "https://registry.yarnpkg.com/json-loader/-/json-loader-0.5.7.tgz#dca14a70235ff82f0ac9a3abeb60d337a365185d" + integrity sha512-QLPs8Dj7lnf3e3QYS1zkCo+4ZwqOiF9d/nZnYozTISxXWCfNs9yuky5rJw4/W34s7POaNlbZmQGaB5NiXCbP4w== + json-pointer@^0.6.0: version "0.6.1" resolved "https://registry.yarnpkg.com/json-pointer/-/json-pointer-0.6.1.tgz#3c6caa6ac139e2599f5a1659d39852154015054d" @@ -6646,13 +8749,33 @@ json-stringify-safe@~5.0.1: resolved "https://registry.yarnpkg.com/json-stringify-safe/-/json-stringify-safe-5.0.1.tgz#1296a2d58fd45f19a0f6ce01d65701e2c735b6eb" integrity sha1-Epai1Y/UXxmg9s4B1lcB4sc1tus= -json-text-sequence@^0.1: +json-text-sequence@^0.1, json-text-sequence@~0.1.0: version "0.1.1" resolved "https://registry.yarnpkg.com/json-text-sequence/-/json-text-sequence-0.1.1.tgz#a72f217dc4afc4629fff5feb304dc1bd51a2f3d2" integrity sha1-py8hfcSvxGKf/1/rME3BvVGi89I= dependencies: delimit-stream "0.1.0" +json-to-ast@^2.0.3: + version "2.1.0" + resolved "https://registry.yarnpkg.com/json-to-ast/-/json-to-ast-2.1.0.tgz#041a9fcd03c0845036acb670d29f425cea4faaf9" + integrity sha512-W9Lq347r8tA1DfMvAGn9QNcgYm4Wm7Yc+k8e6vezpMnRT+NHbtlxgNBXRVjXe9YM6eTn6+p/MKOlV/aABJcSnQ== + dependencies: + code-error-fragment "0.0.230" + grapheme-splitter "^1.0.4" + +json5@^0.5.1: + version "0.5.1" + resolved "https://registry.yarnpkg.com/json5/-/json5-0.5.1.tgz#1eade7acc012034ad84e2396767ead9fa5495821" + integrity sha1-Hq3nrMASA0rYTiOWdn6tn6VJWCE= + +json5@^1.0.1: + version "1.0.1" + resolved "https://registry.yarnpkg.com/json5/-/json5-1.0.1.tgz#779fb0018604fa854eacbf6252180d83543e3dbe" + integrity sha512-aKS4WQjPenRxiQsC93MNfjx+nbF4PAdYzmd/1JIj8HYzqfbu86beTuNgXDzPknWk0n0uARlyewZo4s++ES36Ow== + dependencies: + minimist "^1.2.0" + json5@^2.1.2: version "2.2.0" resolved "https://registry.yarnpkg.com/json5/-/json5-2.2.0.tgz#2dfefe720c6ba525d9ebd909950f0515316c89a3" @@ -6696,6 +8819,11 @@ jsonify@~0.0.0: resolved "https://registry.yarnpkg.com/jsonify/-/jsonify-0.0.0.tgz#2c74b6ee41d93ca51b7b5aaee8f503631d252a73" integrity sha1-LHS27kHZPKUbe1qu6PUDYx0lKnM= +jsonpointer@^4.0.1: + version "4.1.0" + resolved "https://registry.yarnpkg.com/jsonpointer/-/jsonpointer-4.1.0.tgz#501fb89986a2389765ba09e6053299ceb4f2c2cc" + integrity sha512-CXcRvMyTlnR53xMcKnuMzfCA5i/nfblTnnr74CZb6C4vG39eu6w51t7nKmU5MfLfbTgGItliNyjO/ciNPDqClg== + jsonschema@^1.2.4: version "1.2.5" resolved "https://registry.yarnpkg.com/jsonschema/-/jsonschema-1.2.5.tgz#bab69d97fa28946aec0a56a9cc266d23fe80ae61" @@ -6739,6 +8867,18 @@ keccak@^3.0.0: node-addon-api "^2.0.0" node-gyp-build "^4.2.0" +keypair@^1.0.1: + version "1.0.3" + resolved "https://registry.yarnpkg.com/keypair/-/keypair-1.0.3.tgz#4314109d94052a0acfd6b885695026ad29529c80" + integrity sha512-0wjZ2z/SfZZq01+3/8jYLd8aEShSa+aat1zyPGQY3IuKoEAp6DJGvu2zt6snELrQU9jbCkIlCyNOD7RdQbHhkQ== + +keypather@^1.10.2: + version "1.10.2" + resolved "https://registry.yarnpkg.com/keypather/-/keypather-1.10.2.tgz#e0449632d4b3e516f21cc014ce7c5644fddce614" + integrity sha1-4ESWMtSz5RbyHMAUznxWRP3c5hQ= + dependencies: + "101" "^1.0.0" + keyv@^3.0.0: version "3.1.0" resolved "https://registry.yarnpkg.com/keyv/-/keyv-3.1.0.tgz#ecc228486f69991e49e9476485a5be1e8fc5c4d9" @@ -6784,6 +8924,11 @@ klaw@^1.0.0: optionalDependencies: graceful-fs "^4.1.9" +lazy-cache@^1.0.3: + version "1.0.4" + resolved "https://registry.yarnpkg.com/lazy-cache/-/lazy-cache-1.0.4.tgz#a1d78fc3a50474cb80845d3b3b6e1da49a446e8e" + integrity sha1-odePw6UEdMuAhF07O24dpJpEbo4= + lazy-debug-legacy@0.0.X: version "0.0.1" resolved "https://registry.yarnpkg.com/lazy-debug-legacy/-/lazy-debug-legacy-0.0.1.tgz#537716c0776e4cf79e3ed1b621f7658c2911b1b1" @@ -6815,6 +8960,14 @@ lcov-parse@^1.0.0: resolved "https://registry.yarnpkg.com/lcov-parse/-/lcov-parse-1.0.0.tgz#eb0d46b54111ebc561acb4c408ef9363bdc8f7e0" integrity sha1-6w1GtUER68VhrLTECO+TY73I9+A= +leb128@0.0.5: + version "0.0.5" + resolved "https://registry.yarnpkg.com/leb128/-/leb128-0.0.5.tgz#84524a86ef7799fb3933ce41345f6490e27ac948" + integrity sha512-elbNtfmu3GndZbesVF6+iQAfVjOXW9bM/aax9WwMlABZW+oK9sbAZEXoewaPHmL34sxa8kVwWsru8cNE/yn2gg== + dependencies: + bn.js "^5.0.0" + buffer-pipe "0.0.3" + level-codec@9.0.1: version "9.0.1" resolved "https://registry.yarnpkg.com/level-codec/-/level-codec-9.0.1.tgz#042f4aa85e56d4328ace368c950811ba802b7247" @@ -6931,6 +9084,11 @@ levelup@4.4.0, levelup@^4.3.2: level-supports "~1.0.0" xtend "~4.0.0" +leven@^3.1.0: + version "3.1.0" + resolved "https://registry.yarnpkg.com/leven/-/leven-3.1.0.tgz#77891de834064cccba82ae7842bb6b14a13ed7f2" + integrity sha512-qsda+H8jTaUaN/x5vzW2rzc+8Rw4TAQ/4KjB46IwK5VH+IlVeeeje/EoZRpiXvIqjFgK84QffqPztGI3VBLG1A== + levn@~0.3.0: version "0.3.0" resolved "https://registry.yarnpkg.com/levn/-/levn-0.3.0.tgz#3b09924edf9f083c0490fdd4c0bc4421e04764ee" @@ -6939,6 +9097,23 @@ levn@~0.3.0: prelude-ls "~1.1.2" type-check "~0.3.2" +libp2p-crypto@^0.19.0: + version "0.19.7" + resolved "https://registry.yarnpkg.com/libp2p-crypto/-/libp2p-crypto-0.19.7.tgz#e96a95bd430e672a695209fe0fbd2bcbd348bc35" + integrity sha512-Qb5o/3WFKF2j6mYSt4UBPyi2kbKl3jYV0podBJoJCw70DlpM5Xc+oh3fFY9ToSunu8aSQQ5GY8nutjXgX/uGRA== + dependencies: + err-code "^3.0.1" + is-typedarray "^1.0.0" + iso-random-stream "^2.0.0" + keypair "^1.0.1" + multiformats "^9.4.5" + node-forge "^0.10.0" + pem-jwk "^2.0.0" + protobufjs "^6.11.2" + secp256k1 "^4.0.0" + uint8arrays "^3.0.0" + ursa-optional "^0.10.1" + linked-list@0.1.0: version "0.1.0" resolved "https://registry.yarnpkg.com/linked-list/-/linked-list-0.1.0.tgz#798b0ff97d1b92a4fd08480f55aea4e9d49d37bf" @@ -6955,6 +9130,30 @@ load-json-file@^1.0.0, load-json-file@^1.1.0: pinkie-promise "^2.0.0" strip-bom "^2.0.0" +load-json-file@^2.0.0: + version "2.0.0" + resolved "https://registry.yarnpkg.com/load-json-file/-/load-json-file-2.0.0.tgz#7947e42149af80d696cbf797bcaabcfe1fe29ca8" + integrity sha1-eUfkIUmvgNaWy/eXvKq8/h/inKg= + dependencies: + graceful-fs "^4.1.2" + parse-json "^2.2.0" + pify "^2.0.0" + strip-bom "^3.0.0" + +loader-runner@^2.3.0: + version "2.4.0" + resolved "https://registry.yarnpkg.com/loader-runner/-/loader-runner-2.4.0.tgz#ed47066bfe534d7e84c4c7b9998c2a75607d9357" + integrity sha512-Jsmr89RcXGIwivFY21FcRrisYZfvLMTWx5kOLc+JTxtpBOG6xML0vzbc6SEQG2FO9/4Fc3wW4LVcB5DmGflaRw== + +loader-utils@^1.1.0: + version "1.4.0" + resolved "https://registry.yarnpkg.com/loader-utils/-/loader-utils-1.4.0.tgz#c579b5e34cb34b1a74edc6c1fb36bfa371d5a613" + integrity sha512-qH0WSMBtn/oHuwjy/NucEgbx5dbxxnxup9s4PVXJUDHZBQY+s0NWA9rJf53RBnQZxfch7euUui7hpoAPvALZdA== + dependencies: + big.js "^5.2.2" + emojis-list "^3.0.0" + json5 "^1.0.1" + locate-path@^2.0.0: version "2.0.0" resolved "https://registry.yarnpkg.com/locate-path/-/locate-path-2.0.0.tgz#2b568b265eec944c6d9c0de9c3dbbbca0354cd8e" @@ -7015,71 +9214,26 @@ lodash.clonedeep@^4.5.0: resolved "https://registry.yarnpkg.com/lodash.clonedeep/-/lodash.clonedeep-4.5.0.tgz#e23f3f9c4f8fbdde872529c1071857a086e5ccef" integrity sha1-4j8/nE+Pvd6HJSnBBxhXoIblzO8= -lodash.concat@^4.5.0: - version "4.5.0" - resolved "https://registry.yarnpkg.com/lodash.concat/-/lodash.concat-4.5.0.tgz#b053ae02e4a8008582e7256b9d02bda6d0380395" - integrity sha1-sFOuAuSoAIWC5yVrnQK9ptA4A5U= - -lodash.difference@^4.5.0: - version "4.5.0" - resolved "https://registry.yarnpkg.com/lodash.difference/-/lodash.difference-4.5.0.tgz#9ccb4e505d486b91651345772885a2df27fd017c" - integrity sha1-nMtOUF1Ia5FlE0V3KIWi3yf9AXw= - lodash.escaperegexp@^4.1.2: version "4.1.2" resolved "https://registry.yarnpkg.com/lodash.escaperegexp/-/lodash.escaperegexp-4.1.2.tgz#64762c48618082518ac3df4ccf5d5886dae20347" integrity sha1-ZHYsSGGAglGKw99Mz11YhtriA0c= -lodash.every@^4.6.0: - version "4.6.0" - resolved "https://registry.yarnpkg.com/lodash.every/-/lodash.every-4.6.0.tgz#eb89984bebc4364279bb3aefbbd1ca19bfa6c6a7" - integrity sha1-64mYS+vENkJ5uzrvu9HKGb+mxqc= - -lodash.findlast@^4.6.0: - version "4.6.0" - resolved "https://registry.yarnpkg.com/lodash.findlast/-/lodash.findlast-4.6.0.tgz#ea8bb78cf2e7e7804fc8aeb7d1953e07fe31fbc8" - integrity sha1-6ou3jPLn54BPyK630ZU+B/4x+8g= - lodash.flatten@^4.4.0: version "4.4.0" resolved "https://registry.yarnpkg.com/lodash.flatten/-/lodash.flatten-4.4.0.tgz#f31c22225a9632d2bbf8e4addbef240aa765a61f" integrity sha1-8xwiIlqWMtK7+OSt2+8kCqdlph8= -lodash.includes@^4.3.0: - version "4.3.0" - resolved "https://registry.yarnpkg.com/lodash.includes/-/lodash.includes-4.3.0.tgz#60bb98a87cb923c68ca1e51325483314849f553f" - integrity sha1-YLuYqHy5I8aMoeUTJUgzFISfVT8= - -lodash.invertby@^4.7.0: - version "4.7.0" - resolved "https://registry.yarnpkg.com/lodash.invertby/-/lodash.invertby-4.7.0.tgz#cdebb6cd4942aa6b8df2c74be1c5d948682718b0" - integrity sha1-zeu2zUlCqmuN8sdL4cXZSGgnGLA= - -lodash.isempty@^4.4.0: - version "4.4.0" - resolved "https://registry.yarnpkg.com/lodash.isempty/-/lodash.isempty-4.4.0.tgz#6f86cbedd8be4ec987be9aaf33c9684db1b31e7e" - integrity sha1-b4bL7di+TsmHvpqvM8loTbGzHn4= - lodash.isequal@^4.0.0, lodash.isequal@^4.5.0: version "4.5.0" resolved "https://registry.yarnpkg.com/lodash.isequal/-/lodash.isequal-4.5.0.tgz#415c4478f2bcc30120c22ce10ed3226f7d3e18e0" integrity sha1-QVxEePK8wwEgwizhDtMib30+GOA= -lodash.isstring@^4.0.1: - version "4.0.1" - resolved "https://registry.yarnpkg.com/lodash.isstring/-/lodash.isstring-4.0.1.tgz#d527dfb5456eca7cc9bb95d5daeaf88ba54a5451" - integrity sha1-1SfftUVuynzJu5XV2ur4i6VKVFE= - lodash.keys@^4.0.0, lodash.keys@^4.2.0: version "4.2.0" resolved "https://registry.yarnpkg.com/lodash.keys/-/lodash.keys-4.2.0.tgz#a08602ac12e4fb83f91fc1fb7a360a4d9ba35205" integrity sha1-oIYCrBLk+4P5H8H7ejYKTZujUgU= -lodash.map@^4.6.0: - version "4.6.0" - resolved "https://registry.yarnpkg.com/lodash.map/-/lodash.map-4.6.0.tgz#771ec7839e3473d9c4cde28b19394c3562f4f6d3" - integrity sha1-dx7Hg540c9nEzeKLGTlMNWL09tM= - lodash.merge@^4.6.2: version "4.6.2" resolved "https://registry.yarnpkg.com/lodash.merge/-/lodash.merge-4.6.2.tgz#558aa53b43b661e1925a0afdfa36a9a1085fe57a" @@ -7100,31 +9254,11 @@ lodash.pick@^4.4.0: resolved "https://registry.yarnpkg.com/lodash.pick/-/lodash.pick-4.4.0.tgz#52f05610fff9ded422611441ed1fc123a03001b3" integrity sha1-UvBWEP/53tQiYRRB7R/BI6AwAbM= -lodash.pickby@^4.6.0: - version "4.6.0" - resolved "https://registry.yarnpkg.com/lodash.pickby/-/lodash.pickby-4.6.0.tgz#7dea21d8c18d7703a27c704c15d3b84a67e33aff" - integrity sha1-feoh2MGNdwOifHBMFdO4SmfjOv8= - -lodash.random@^3.2.0: - version "3.2.0" - resolved "https://registry.yarnpkg.com/lodash.random/-/lodash.random-3.2.0.tgz#96e24e763333199130d2c9e2fd57f91703cc262d" - integrity sha1-luJOdjMzGZEw0sni/Vf5FwPMJi0= - lodash.rest@^4.0.0: version "4.0.5" resolved "https://registry.yarnpkg.com/lodash.rest/-/lodash.rest-4.0.5.tgz#954ef75049262038c96d1fc98b28fdaf9f0772aa" integrity sha1-lU73UEkmIDjJbR/Jiyj9r58Hcqo= -lodash.reverse@^4.0.1: - version "4.0.1" - resolved "https://registry.yarnpkg.com/lodash.reverse/-/lodash.reverse-4.0.1.tgz#1f2afedace2e16e660f3aa7c59d3300a6f25d13c" - integrity sha1-Hyr+2s4uFuZg86p8WdMwCm8l0Tw= - -lodash.some@^4.6.0: - version "4.6.0" - resolved "https://registry.yarnpkg.com/lodash.some/-/lodash.some-4.6.0.tgz#1bb9f314ef6b8baded13b549169b2a945eb68e4d" - integrity sha1-G7nzFO9ri63tE7VJFpsqlF62jk0= - lodash.sortby@^4.7.0: version "4.7.0" resolved "https://registry.yarnpkg.com/lodash.sortby/-/lodash.sortby-4.7.0.tgz#edd14c824e2cc9c1e0b0a1b42bb5210516a42438" @@ -7164,32 +9298,27 @@ lodash.tostring@^4.0.0: resolved "https://registry.yarnpkg.com/lodash.tostring/-/lodash.tostring-4.1.4.tgz#560c27d1f8eadde03c2cce198fef5c031d8298fb" integrity sha1-Vgwn0fjq3eA8LM4Zj+9cAx2CmPs= -lodash.uniq@^4.5.0: - version "4.5.0" - resolved "https://registry.yarnpkg.com/lodash.uniq/-/lodash.uniq-4.5.0.tgz#d0225373aeb652adc1bc82e4945339a842754773" - integrity sha1-0CJTc662Uq3BvILklFM5qEJ1R3M= - -lodash.values@^4.3.0: - version "4.3.0" - resolved "https://registry.yarnpkg.com/lodash.values/-/lodash.values-4.3.0.tgz#a3a6c2b0ebecc5c2cba1c17e6e620fe81b53d347" - integrity sha1-o6bCsOvsxcLLocF+bmIP6BtT00c= - lodash.without@^4.4.0: version "4.4.0" resolved "https://registry.yarnpkg.com/lodash.without/-/lodash.without-4.4.0.tgz#3cd4574a00b67bae373a94b748772640507b7aac" integrity sha1-PNRXSgC2e643OpS3SHcmQFB7eqw= +lodash.xor@^4.5.0: + version "4.5.0" + resolved "https://registry.yarnpkg.com/lodash.xor/-/lodash.xor-4.5.0.tgz#4d48ed7e98095b0632582ba714d3ff8ae8fb1db6" + integrity sha1-TUjtfpgJWwYyWCunFNP/iuj7HbY= + lodash.zipwith@^4.2.0: version "4.2.0" resolved "https://registry.yarnpkg.com/lodash.zipwith/-/lodash.zipwith-4.2.0.tgz#afacf03fd2f384af29e263c3c6bda3b80e3f51fd" integrity sha1-r6zwP9LzhK8p4mPDxr2juA4/Uf0= -lodash@4.17.21, lodash@^4.1.0, lodash@^4.15.0, lodash@^4.17.19, lodash@^4.17.4, lodash@^4.2.1: +lodash@4.17.21, lodash@^4.1.0, lodash@^4.15.0, lodash@^4.17.19, lodash@^4.17.20, lodash@^4.17.4, lodash@^4.2.1: version "4.17.21" resolved "https://registry.yarnpkg.com/lodash/-/lodash-4.17.21.tgz#679591c564c3bffaae8454cf0b3df370c3d6911c" integrity sha512-v2kDEe57lecTulaDIuNTPy3Ry4gLGJ6Z1O3vE1krgXZNrsQ+LFTGHVxVjcXPs17LhbZVGedAJv8XZ1tvj5FvSg== -lodash@^4.17.11, lodash@^4.17.13, lodash@^4.17.14, lodash@^4.17.15: +lodash@^4.17.11, lodash@^4.17.14, lodash@^4.17.15: version "4.17.15" resolved "https://registry.yarnpkg.com/lodash/-/lodash-4.17.15.tgz#b447f6670a0455bbfeedd11392eff330ea097548" integrity sha512-8xOcRHvCjnocdS5cpwXQXVzmmh5e5+saE2QGoeQmbKmRS6J3VQppPOIt0MnmE+4xlZoumy0GPG0D0MVIQbNA1A== @@ -7199,6 +9328,13 @@ log-driver@^1.2.7: resolved "https://registry.yarnpkg.com/log-driver/-/log-driver-1.2.7.tgz#63b95021f0702fedfa2c9bb0a24e7797d71871d8" integrity sha512-U7KCmLdqsGHBLeWqYlFA0V0Sl6P08EE1ZrmA9cxjUE0WVqT9qnyVDPz1kzpFEP0jdJuFnasWIfSd7fsaNXkpbg== +log-symbols@3.0.0: + version "3.0.0" + resolved "https://registry.yarnpkg.com/log-symbols/-/log-symbols-3.0.0.tgz#f3a08516a5dea893336a7dee14d18a1cfdab77c4" + integrity sha512-dSkNGuI7iG3mfvDzUuYZyvk5dD9ocYCYzNU6CYDE6+Xqd+gwme6Z00NS3dUh8mq/73HaEtT7m6W+yUPtU6BZnQ== + dependencies: + chalk "^2.4.2" + log-symbols@4.0.0: version "4.0.0" resolved "https://registry.yarnpkg.com/log-symbols/-/log-symbols-4.0.0.tgz#69b3cc46d20f448eccdb75ea1fa733d9e821c920" @@ -7213,7 +9349,7 @@ log-symbols@^2.2.0: dependencies: chalk "^2.0.1" -loglevel@^1.6.7: +loglevel@^1.6.6, loglevel@^1.6.7, loglevel@^1.6.8, loglevel@^1.7.0: version "1.7.1" resolved "https://registry.yarnpkg.com/loglevel/-/loglevel-1.7.1.tgz#005fde2f5e6e47068f935ff28573e125ef72f197" integrity sha512-Hesni4s5UkWkwCGJMQGAh71PaLUmKFM60dHvq0zi/vDhhrzuk+4GgNbTXJ12YYQJn6ZKBDNIjYcuQGKudvqrIw== @@ -7223,6 +9359,11 @@ long@^4.0.0: resolved "https://registry.yarnpkg.com/long/-/long-4.0.0.tgz#9a7b71cfb7d361a194ea555241c92f7468d5bf28" integrity sha512-XsP+KhQif4bjX1kbuSiySJFNAehNxgLb6hPRGJ9QsUr8ajHkuXGdrHmFUTUUXhDwVX2R5bY4JNZEwbUiMhV+MA== +longest@^1.0.1: + version "1.0.1" + resolved "https://registry.yarnpkg.com/longest/-/longest-1.0.1.tgz#30a0b2da38f73770e8294a0d22e6625ed77d0097" + integrity sha1-MKCy2jj3N3DoKUoNIuZiXtd9AJc= + loose-envify@^1.0.0, loose-envify@^1.1.0, loose-envify@^1.4.0: version "1.4.0" resolved "https://registry.yarnpkg.com/loose-envify/-/loose-envify-1.4.0.tgz#71ee51fa7be4caec1a63839f7e682d8132d30caf" @@ -7259,6 +9400,14 @@ lowercase-keys@^2.0.0: resolved "https://registry.yarnpkg.com/lowercase-keys/-/lowercase-keys-2.0.0.tgz#2603e78b7b4b0006cbca2fbcc8a3202558ac9479" integrity sha512-tqNXrS78oMOE73NMxK4EMLQsQowWf8jKooH9g7xPavRT706R6bkQJ6DY2Te7QukaZsulxa30wQ7bk0pm4XiHmA== +lru-cache@^4.0.1: + version "4.1.5" + resolved "https://registry.yarnpkg.com/lru-cache/-/lru-cache-4.1.5.tgz#8bbe50ea85bed59bc9e33dcab8235ee9bcf443cd" + integrity sha512-sWZlbEP2OsHNkXrMl5GYk/jKk70MBng6UU4YI/qGDYbgf6YbP4EvmqISbXCoJiRKs+1bSpFHVgQxvJ17F2li5g== + dependencies: + pseudomap "^1.0.2" + yallist "^2.1.2" + lru-cache@^6.0.0: version "6.0.0" resolved "https://registry.yarnpkg.com/lru-cache/-/lru-cache-6.0.0.tgz#6d6fe6570ebd96aaf90fcad1dafa3b2566db3a94" @@ -7343,6 +9492,13 @@ media-typer@0.3.0: resolved "https://registry.yarnpkg.com/media-typer/-/media-typer-0.3.0.tgz#8710d7af0aa626f8fffa1ce00168545263255748" integrity sha1-hxDXrwqmJvj/+hzgAWhUUmMlV0g= +mem@^1.1.0: + version "1.1.0" + resolved "https://registry.yarnpkg.com/mem/-/mem-1.1.0.tgz#5edd52b485ca1d900fe64895505399a0dfa45f76" + integrity sha1-Xt1StIXKHZAP5kiVUFOZoN+kX3Y= + dependencies: + mimic-fn "^1.0.0" + mem@^4.0.0: version "4.3.0" resolved "https://registry.yarnpkg.com/mem/-/mem-4.3.0.tgz#461af497bc4ae09608cdb2e60eefb69bff744178" @@ -7378,6 +9534,14 @@ memoizee@^0.4.14: next-tick "1" timers-ext "^0.1.5" +memory-fs@^0.4.0, memory-fs@~0.4.1: + version "0.4.1" + resolved "https://registry.yarnpkg.com/memory-fs/-/memory-fs-0.4.1.tgz#3a9a20b8462523e447cfbc7e8bb80ed667bfc552" + integrity sha1-OpoguEYlI+RHz7x+i7gO1me/xVI= + dependencies: + errno "^0.1.3" + readable-stream "^2.0.1" + memorystream@^0.3.1: version "0.3.1" resolved "https://registry.yarnpkg.com/memorystream/-/memorystream-0.3.1.tgz#86d7090b30ce455d63fbae12dda51a47ddcaf9b2" @@ -7388,6 +9552,13 @@ merge-descriptors@1.0.1: resolved "https://registry.yarnpkg.com/merge-descriptors/-/merge-descriptors-1.0.1.tgz#b00aaa556dd8b44568150ec9d1b953f3f90cbb61" integrity sha1-sAqqVW3YtEVoFQ7J0blT8/kMu2E= +merge-options@^2.0.0: + version "2.0.0" + resolved "https://registry.yarnpkg.com/merge-options/-/merge-options-2.0.0.tgz#36ca5038badfc3974dbde5e58ba89d3df80882c3" + integrity sha512-S7xYIeWHl2ZUKF7SDeBhGg6rfv5bKxVBdk95s/I7wVF8d+hjLSztJ/B271cnUiF6CAFduEQ5Zn3HYwAjT16DlQ== + dependencies: + is-plain-obj "^2.0.0" + merge-stream@^1.0.0: version "1.0.1" resolved "https://registry.yarnpkg.com/merge-stream/-/merge-stream-1.0.1.tgz#4041202d508a342ba00174008df0c251b8c135e1" @@ -7424,7 +9595,7 @@ micromatch@^2.3.7: parse-glob "^3.0.4" regex-cache "^0.4.2" -micromatch@^3.1.4: +micromatch@^3.1.10, micromatch@^3.1.4: version "3.1.10" resolved "https://registry.yarnpkg.com/micromatch/-/micromatch-3.1.10.tgz#70859bc95c9840952f359a068a3fc49f9ecfac23" integrity sha512-MWikgl9n9M3w+bpsY3He8L+w9eF9338xRl8IAO5viDizwSzziFEyUzo2xrrloB64ADbTf8uA8vRqqttDTOmccg== @@ -7498,6 +9669,11 @@ min-document@^2.19.0: dependencies: dom-walk "^0.1.0" +min-indent@^1.0.0: + version "1.0.1" + resolved "https://registry.yarnpkg.com/min-indent/-/min-indent-1.0.1.tgz#a63f681673b30571fbe8bc25686ae746eefa9869" + integrity sha512-I9jwMn07Sy/IwOj3zVkVik2JTvgpaykDZEigL6Rx6N9LbMywwUSMtxET+7lVoDLLd3O3IXwJwvuuns8UB/HeAg== + minimalistic-assert@^1.0.0, minimalistic-assert@^1.0.1: version "1.0.1" resolved "https://registry.yarnpkg.com/minimalistic-assert/-/minimalistic-assert-1.0.1.tgz#2e194de044626d4a10e7f7fbc00ce73e83e4d5c7" @@ -7508,7 +9684,7 @@ minimalistic-crypto-utils@^1.0.0, minimalistic-crypto-utils@^1.0.1: resolved "https://registry.yarnpkg.com/minimalistic-crypto-utils/-/minimalistic-crypto-utils-1.0.1.tgz#f6c00c1c0b082246e5c4d99dfb8c7c083b2b582a" integrity sha1-9sAMHAsIIkblxNmd+4x8CDsrWCo= -"minimatch@2 || 3", minimatch@3.0.4, minimatch@^3.0.4: +minimatch@*, "minimatch@2 || 3", minimatch@3.0.4, minimatch@^3.0.4: version "3.0.4" resolved "https://registry.yarnpkg.com/minimatch/-/minimatch-3.0.4.tgz#5166e286457f03306064be5497e8dbb0c3d32083" integrity sha512-yJHVQEhyqPLUTgt9B83PXu6W3rx4MvvHvSUvToogpwoGDOUQ+yDrR0HRot+yOCdCO7u4hX3pWft6kWBBcqh0UA== @@ -7577,6 +9753,18 @@ mkdirp@0.5.1, mkdirp@0.5.x, mkdirp@^0.5.0, mkdirp@^0.5.1: dependencies: minimist "0.0.8" +mkdirp@0.5.5, mkdirp@^0.5.3, mkdirp@~0.5.0: + version "0.5.5" + resolved "https://registry.yarnpkg.com/mkdirp/-/mkdirp-0.5.5.tgz#d91cefd62d1436ca0f41620e251288d420099def" + integrity sha512-NKmAlESf6jMGym1++R0Ra7wvhV+wFW63FaSOFPwRahvea0gMUcGUhVeAg/0BC0wiv9ih5NYPB1Wn1UEI1/L+xQ== + dependencies: + minimist "^1.2.5" + +mkdirp@^1.0.4: + version "1.0.4" + resolved "https://registry.yarnpkg.com/mkdirp/-/mkdirp-1.0.4.tgz#3eb5ed62622756d79a5f0e2a221dfebad75c2f7e" + integrity sha512-vVqVZQyf3WLx2Shd0qJ9xuvqgAyKPLAiqITEtqW0oIUjzo3PePDd6fW9iFz30ef7Ysp/oiWqbhszeGWW2T6Gzw== + mocha@8.1.2: version "8.1.2" resolved "https://registry.yarnpkg.com/mocha/-/mocha-8.1.2.tgz#d67fad13300e4f5cd48135a935ea566f96caf827" @@ -7608,22 +9796,35 @@ mocha@8.1.2: yargs-parser "13.1.2" yargs-unparser "1.6.1" -mocha@^5.2.0: - version "5.2.0" - resolved "https://registry.yarnpkg.com/mocha/-/mocha-5.2.0.tgz#6d8ae508f59167f940f2b5b3c4a612ae50c90ae6" - integrity sha512-2IUgKDhc3J7Uug+FxMXuqIyYzH7gJjXECKe/w43IGgQHTSj3InJi+yAA7T24L9bQMRKiUEHxEX37G5JpVUGLcQ== +mocha@^7.1.1: + version "7.2.0" + resolved "https://registry.yarnpkg.com/mocha/-/mocha-7.2.0.tgz#01cc227b00d875ab1eed03a75106689cfed5a604" + integrity sha512-O9CIypScywTVpNaRrCAgoUnJgozpIofjKUYmJhiCIJMiuYnLI6otcb1/kpW9/n/tJODHGZ7i8aLQoDVsMtOKQQ== dependencies: + ansi-colors "3.2.3" browser-stdout "1.3.1" - commander "2.15.1" - debug "3.1.0" + chokidar "3.3.0" + debug "3.2.6" diff "3.5.0" escape-string-regexp "1.0.5" - glob "7.1.2" + find-up "3.0.0" + glob "7.1.3" growl "1.10.5" - he "1.1.1" + he "1.2.0" + js-yaml "3.13.1" + log-symbols "3.0.0" minimatch "3.0.4" - mkdirp "0.5.1" - supports-color "5.4.0" + 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.10.4" @@ -7663,6 +9864,27 @@ ms@2.1.2, ms@^2.1.1: resolved "https://registry.yarnpkg.com/ms/-/ms-2.1.2.tgz#d09d1f357b443f493382a8eb3ccd183872ae6009" integrity sha512-sGkPx+VjMtmA6MX27oA4FBFELFCZZ4S4XqeGOXCv68tT+jb3vk/RyaKWP0PTKyWtmLSM0b+adUTEvbs1PEaH2w== +multiaddr-to-uri@^6.0.0: + version "6.0.0" + resolved "https://registry.yarnpkg.com/multiaddr-to-uri/-/multiaddr-to-uri-6.0.0.tgz#8f08a75c6eeb2370d5d24b77b8413e3f0fa9bcc0" + integrity sha512-OjpkVHOXEmIKMO8WChzzQ7aZQcSQX8squxmvtDbRpy7/QNmJ3Z7jv6qyD74C28QtaeNie8O8ngW2AkeiMmKP7A== + dependencies: + multiaddr "^8.0.0" + +multiaddr@^8.0.0, multiaddr@^8.1.2: + version "8.1.2" + resolved "https://registry.yarnpkg.com/multiaddr/-/multiaddr-8.1.2.tgz#74060ff8636ba1c01b2cf0ffd53950b852fa9b1f" + integrity sha512-r13IzW8+Sv9zab9Gt8RPMIN2WkptIPq99EpAzg4IbJ/zTELhiEwXWr9bAmEatSCI4j/LSA6ESJzvz95JZ+ZYXQ== + dependencies: + cids "^1.0.0" + class-is "^1.1.0" + dns-over-http-resolver "^1.0.0" + err-code "^2.0.3" + is-ip "^3.1.0" + multibase "^3.0.0" + uint8arrays "^1.1.0" + varint "^5.0.0" + multibase@^0.7.0: version "0.7.0" resolved "https://registry.yarnpkg.com/multibase/-/multibase-0.7.0.tgz#1adfc1c50abe05eefeb5091ac0c2728d6b84581b" @@ -7671,6 +9893,21 @@ multibase@^0.7.0: base-x "^3.0.8" buffer "^5.5.0" +multibase@^3.0.0, multibase@^3.1.0: + version "3.1.2" + resolved "https://registry.yarnpkg.com/multibase/-/multibase-3.1.2.tgz#59314e1e2c35d018db38e4c20bb79026827f0f2f" + integrity sha512-bpklWHs70LO3smJUHOjcnzGceJJvn9ui0Vau6Za0B/GBepaXswmW8Ufea0uD9pROf/qCQ4N4lZ3sf3U+SNf0tw== + dependencies: + "@multiformats/base-x" "^4.0.1" + web-encoding "^1.0.6" + +multibase@^4.0.1: + version "4.0.5" + resolved "https://registry.yarnpkg.com/multibase/-/multibase-4.0.5.tgz#620293b524e01f504b750cef585c2bdc6ee1c64c" + integrity sha512-oqFkOYXdUkakxT8MqGyn5sE1KYeVt1zataOTvg688skQp6TVBv9XnouCcVO86XKFzh/UTiCGmEImTx6ZnPZ0qQ== + dependencies: + "@multiformats/base-x" "^4.0.1" + multibase@~0.6.0: version "0.6.1" resolved "https://registry.yarnpkg.com/multibase/-/multibase-0.6.1.tgz#b76df6298536cc17b9f6a6db53ec88f85f8cc12b" @@ -7694,6 +9931,36 @@ multicodec@^1.0.0: buffer "^5.6.0" varint "^5.0.0" +multicodec@^2.0.0, multicodec@^2.0.1: + version "2.1.3" + resolved "https://registry.yarnpkg.com/multicodec/-/multicodec-2.1.3.tgz#b9850635ad4e2a285a933151b55b4a2294152a5d" + integrity sha512-0tOH2Gtio39uO41o+2xl9UhRkCWxU5ZmZSbFCh/OjGzkWJI8e6lkN/s4Mj1YfyWoBod+2+S3W+6wO6nhkwN8pA== + dependencies: + uint8arrays "1.1.0" + varint "^6.0.0" + +multicodec@^3.0.1: + version "3.1.0" + resolved "https://registry.yarnpkg.com/multicodec/-/multicodec-3.1.0.tgz#bc96faee2118d1ff114a3ee9e870a030a3b65743" + integrity sha512-f6d4DhbQ9a8WiJ/wpbKgeJSeR0/juP/1wnjbKdZ0KAWDkC/z7Lb3xOegMUG+uTcfwSYf6j1eTvFf8HDgqPRGmQ== + dependencies: + uint8arrays "^2.1.5" + varint "^6.0.0" + +multiformats@^9.4.2, multiformats@^9.4.5: + version "9.4.5" + resolved "https://registry.yarnpkg.com/multiformats/-/multiformats-9.4.5.tgz#9ac47bbc87aadb09d4bd05e9cd3da6f4436414f6" + integrity sha512-zQxukxsHM34EJi3yT3MkUlycY9wEouyrAz0PSN+CyCj6cYchJZ4LrTH74YtlsxVyAK6waz/gnVLmJwi3P0knKg== + +multihashes@3.1.2, multihashes@^3.0.1: + version "3.1.2" + resolved "https://registry.yarnpkg.com/multihashes/-/multihashes-3.1.2.tgz#ffa5e50497aceb7911f7b4a3b6cada9b9730edfc" + integrity sha512-AP4IoV/YzkNrfbQKZE3OMPibrmy350OmCd6cJkwyM8oExaXIlOY4UnOOVSQtAEuq/LR01XfXKCESidzZvSwHCQ== + dependencies: + multibase "^3.1.0" + uint8arrays "^2.0.5" + varint "^6.0.0" + multihashes@^0.4.15, multihashes@~0.4.15: version "0.4.21" resolved "https://registry.yarnpkg.com/multihashes/-/multihashes-0.4.21.tgz#dc02d525579f334a7909ade8a122dabb58ccfcb5" @@ -7703,16 +9970,52 @@ multihashes@^0.4.15, multihashes@~0.4.15: multibase "^0.7.0" varint "^5.0.0" +multihashes@^4.0.1, multihashes@^4.0.2: + version "4.0.2" + resolved "https://registry.yarnpkg.com/multihashes/-/multihashes-4.0.2.tgz#d76aeac3a302a1bed9fe1ec964fb7a22fa662283" + integrity sha512-xpx++1iZr4ZQHjN1mcrXS6904R36LWLxX/CBifczjtmrtCXEX623DMWOF1eiNSg+pFpiZDFVBgou/4v6ayCHSQ== + dependencies: + multibase "^4.0.1" + uint8arrays "^2.1.3" + varint "^5.0.2" + +multihashing-async@^2.0.0: + version "2.1.3" + resolved "https://registry.yarnpkg.com/multihashing-async/-/multihashing-async-2.1.3.tgz#8b6a33a754dc02327a19adfaf1f1054625b1c470" + integrity sha512-z4dlnTgZLn4D8daBdMGn601aS3GLOMnW5+EKoaevLwa3Fu4FK64ofn9PdJ3s0bDkhGK2fdwSjrG/S8mWlW9bzQ== + dependencies: + blakejs "^1.1.0" + err-code "^3.0.0" + js-sha3 "^0.8.0" + multihashes "^4.0.1" + murmurhash3js-revisited "^3.0.0" + uint8arrays "^2.1.3" + +murmurhash3js-revisited@^3.0.0: + version "3.0.0" + resolved "https://registry.yarnpkg.com/murmurhash3js-revisited/-/murmurhash3js-revisited-3.0.0.tgz#6bd36e25de8f73394222adc6e41fa3fac08a5869" + integrity sha512-/sF3ee6zvScXMb1XFJ8gDsSnY+X8PbOyjIuBhtgis10W2Jx4ZjIhikUCIF9c4gpJxVnQIsPAFrSwTCuAjicP6g== + nan@^2.12.1: version "2.14.2" resolved "https://registry.yarnpkg.com/nan/-/nan-2.14.2.tgz#f5376400695168f4cc694ac9393d0c9585eeea19" integrity sha512-M2ufzIiINKCuDfBSAUr1vWQ+vuVcA9kqx8JJUsbQi6yf1uGRyb7HfpdfUr5qLXf3B/t8dPvcjhKMmlfnP47EzQ== +nan@^2.13.2, nan@^2.14.2: + version "2.15.0" + resolved "https://registry.yarnpkg.com/nan/-/nan-2.15.0.tgz#3f34a473ff18e15c1b5626b62903b5ad6e665fee" + integrity sha512-8ZtvEnA2c5aYCZYd1cvgdnU6cqwixRoYg70xPLWUws5ORTa/lnw+u4amixRS/Ac5U5mQVgp9pnlSUnbNWFaWZQ== + nan@^2.14.0, nan@^2.2.1: version "2.14.0" resolved "https://registry.yarnpkg.com/nan/-/nan-2.14.0.tgz#7818f722027b2459a86f0295d434d1fc2336c52c" integrity sha512-INOFj37C7k3AfaNTtX8RhsTw7qRy7eLET14cROi9+5HAVbbHuIWUHEauBv5qT4Av2tWasiTY1Jw6puUNqRJXQg== +nano-base32@^1.0.1: + version "1.0.1" + resolved "https://registry.yarnpkg.com/nano-base32/-/nano-base32-1.0.1.tgz#ba548c879efcfb90da1c4d9e097db4a46c9255ef" + integrity sha1-ulSMh578+5DaHE2eCX20pGySVe8= + nano-json-stream-parser@^0.1.2: version "0.1.2" resolved "https://registry.yarnpkg.com/nano-json-stream-parser/-/nano-json-stream-parser-0.1.2.tgz#0cc8f6d0e2b622b479c40d499c46d64b755c6f5f" @@ -7723,6 +10026,11 @@ nanoid@^2.0.0: resolved "https://registry.yarnpkg.com/nanoid/-/nanoid-2.1.11.tgz#ec24b8a758d591561531b4176a01e3ab4f0f0280" integrity sha512-s/snB+WGm6uwi0WjsZdaVcuf3KJXlfGl2LcxgwkEwJF0D/BWzVWAZW/XY4bFaiR7s0Jk3FPvlnepg1H1b1UwlA== +nanoid@^3.1.12, nanoid@^3.1.3: + version "3.1.25" + resolved "https://registry.yarnpkg.com/nanoid/-/nanoid-3.1.25.tgz#09ca32747c0e543f0e1814b7d3793477f9c8e152" + integrity sha512-rdwtIXaXCLFAQbnfqDRnI6jaRHp9fTcYBjtFKE8eezcZ7LuLjhUaQGNeMXf1HmRoCH32CLz6XwX0TtxEOS/A3Q== + nanomatch@^1.2.9: version "1.2.13" resolved "https://registry.yarnpkg.com/nanomatch/-/nanomatch-1.2.13.tgz#b87a8aa4fc0de8fe6be88895b38983ff265bd119" @@ -7745,10 +10053,34 @@ napi-macros@~1.8.1: resolved "https://registry.yarnpkg.com/napi-macros/-/napi-macros-1.8.2.tgz#299265c1d8aa401351ad0675107d751228c03eda" integrity sha512-Tr0DNY4RzTaBG2W2m3l7ZtFuJChTH6VZhXVhkGGjF/4cZTt+i8GcM9ozD+30Lmr4mDoZ5Xx34t2o4GJqYWDGcg== -napi-macros@~2.0.0: - version "2.0.0" - resolved "https://registry.yarnpkg.com/napi-macros/-/napi-macros-2.0.0.tgz#2b6bae421e7b96eb687aa6c77a7858640670001b" - integrity sha512-A0xLykHtARfueITVDernsAWdtIMbOJgKgcluwENp3AlsKN/PloyO10HtmoqnFAQAcxPkgZN7wdfPfEd0zNGxbg== +napi-macros@~2.0.0: + version "2.0.0" + resolved "https://registry.yarnpkg.com/napi-macros/-/napi-macros-2.0.0.tgz#2b6bae421e7b96eb687aa6c77a7858640670001b" + integrity sha512-A0xLykHtARfueITVDernsAWdtIMbOJgKgcluwENp3AlsKN/PloyO10HtmoqnFAQAcxPkgZN7wdfPfEd0zNGxbg== + +native-abort-controller@0.0.3, native-abort-controller@~0.0.3: + version "0.0.3" + resolved "https://registry.yarnpkg.com/native-abort-controller/-/native-abort-controller-0.0.3.tgz#4c528a6c9c7d3eafefdc2c196ac9deb1a5edf2f8" + integrity sha512-YIxU5nWqSHG1Xbu3eOu3pdFRD882ivQpIcu6AiPVe2oSVoRbfYW63DVkZm3g1gHiMtZSvZzF6THSzTGEBYl8YA== + dependencies: + globalthis "^1.0.1" + +native-abort-controller@^1.0.3: + version "1.0.3" + resolved "https://registry.yarnpkg.com/native-abort-controller/-/native-abort-controller-1.0.3.tgz#35974a2e189c0d91399c8767a989a5bf058c1435" + integrity sha512-fd5LY5q06mHKZPD5FmMrn7Lkd2H018oBGKNOAdLpctBDEPFKsfJ1nX9ke+XRa8PEJJpjqrpQkGjq2IZ27QNmYA== + +native-fetch@^2.0.0: + version "2.0.1" + resolved "https://registry.yarnpkg.com/native-fetch/-/native-fetch-2.0.1.tgz#319d53741a7040def92d5dc8ea5fe9416b1fad89" + integrity sha512-gv4Bea+ga9QdXINurpkEqun3ap3vnB+WYoe4c8ddqUYEH7B2h6iD39RF8uVN7OwmSfMY3RDxkvBnoI4e2/vLXQ== + dependencies: + globalthis "^1.0.1" + +native-fetch@^3.0.0: + version "3.0.0" + resolved "https://registry.yarnpkg.com/native-fetch/-/native-fetch-3.0.0.tgz#06ccdd70e79e171c365c75117959cf4fe14a09bb" + integrity sha512-G3Z7vx0IFb/FQ4JxvtqGABsOTIqRWvgQz6e+erkB+JJD6LrszQtMozEHI4EkmgZQvnGHrpLVzUWk7t4sJCIkVw== needle@^2.2.1: version "2.6.0" @@ -7764,11 +10096,23 @@ negotiator@0.6.2: resolved "https://registry.yarnpkg.com/negotiator/-/negotiator-0.6.2.tgz#feacf7ccf525a77ae9634436a64883ffeca346fb" integrity sha512-hZXc7K2e+PgeI1eDBe/10Ard4ekbfrrqG8Ep+8Jmf4JID2bNg7NvCPOZN+kfF574pFQI7mum2AUqDidoKqcTOw== +neo-async@^2.5.0: + version "2.6.2" + resolved "https://registry.yarnpkg.com/neo-async/-/neo-async-2.6.2.tgz#b4aafb93e3aeb2d8174ca53cf163ab7d7308305f" + integrity sha512-Yd3UES5mWCSqR+qNT93S3UoYUkqAZ9lLg8a7g9rimsWmYGK8cVToA4/sF3RrshdyV3sAGMXVUmpMYOw+dLpOuw== + neo-async@^2.6.0: version "2.6.1" resolved "https://registry.yarnpkg.com/neo-async/-/neo-async-2.6.1.tgz#ac27ada66167fa8849a6addd837f6b189ad2081c" integrity sha512-iyam8fBuCUpWeKPGpaNMetEocMt364qkCsfL9JuhjXX6dRnguRVOfk2GZaDpPjcOKiiXCPINZC1GczQ7iTq3Zw== +neodoc@^2.0.2: + version "2.0.2" + resolved "https://registry.yarnpkg.com/neodoc/-/neodoc-2.0.2.tgz#ad00b30b9758379dcd3cf752a0659bacbab2c4fb" + integrity sha512-NAppJ0YecKWdhSXFYCHbo6RutiX8vOt/Jo3l46mUg6pQlpJNaqc5cGxdrW2jITQm5JIYySbFVPDl3RrREXNyPw== + dependencies: + ansi-regex "^2.0.0" + next-tick@1: version "1.1.0" resolved "https://registry.yarnpkg.com/next-tick/-/next-tick-1.1.0.tgz#1836ee30ad56d67ef281b22bd199f709449b35eb" @@ -7811,6 +10155,14 @@ node-emoji@^1.10.0: dependencies: lodash.toarray "^4.4.0" +node-environment-flags@1.0.6: + version "1.0.6" + resolved "https://registry.yarnpkg.com/node-environment-flags/-/node-environment-flags-1.0.6.tgz#a30ac13621f6f7d674260a54dede048c3982c088" + integrity sha512-5Evy2epuL+6TM0lCQGpFIj6KwiEsGh1SrHUhTbNX+sLbBtjidPZFAnVK9y5yU1+h//RitLbRHTIMyxQPtxMdHw== + dependencies: + object.getownpropertydescriptors "^2.0.3" + semver "^5.7.0" + node-fetch@2.4.1: version "2.4.1" resolved "https://registry.yarnpkg.com/node-fetch/-/node-fetch-2.4.1.tgz#b2e38f1117b8acbedbe0524f041fb3177188255d" @@ -7821,11 +10173,16 @@ node-fetch@2.6.0: resolved "https://registry.yarnpkg.com/node-fetch/-/node-fetch-2.6.0.tgz#e633456386d4aa55863f676a7ab0daa8fdecb0fd" integrity sha512-8dG4H5ujfvFiqDmVu9fQ5bOHUC15JMjMY/Zumv26oOvvVJjM67KF8koCWIabKQ1GJIa9r2mMZscBq/TbdOcmNA== -node-fetch@2.6.1, node-fetch@^2.1.2, node-fetch@^2.2.0, node-fetch@^2.6.1: +node-fetch@2.6.1, node-fetch@^2.1.2, node-fetch@^2.2.0, node-fetch@^2.6.0, node-fetch@^2.6.1: version "2.6.1" resolved "https://registry.yarnpkg.com/node-fetch/-/node-fetch-2.6.1.tgz#045bd323631f76ed2e2b55573394416b639a0052" integrity sha512-V4aYg89jEoVRxRb2fJdAg8FHvI7cEyYdVAh94HH0UIK8oJxUfkjlDQN9RbMx+bEjP7+ggMiFRprSti032Oipxw== +node-forge@^0.10.0: + version "0.10.0" + resolved "https://registry.yarnpkg.com/node-forge/-/node-forge-0.10.0.tgz#32dea2afb3e9926f02ee5ce8794902691a676bf3" + integrity sha512-PPmu8eEeG9saEUvI97fm4OYxXVB6bFvyNTyiUOBichBpFG8A1Ljw3bY62+5oOjDEMHRnd0Y7HQ+x7uzxOzC6JA== + node-gyp-build@^4.2.0: version "4.2.3" resolved "https://registry.yarnpkg.com/node-gyp-build/-/node-gyp-build-4.2.3.tgz#ce6277f853835f718829efb47db20f3e4d9c4739" @@ -7853,6 +10210,35 @@ node-interval-tree@^1.3.3: dependencies: shallowequal "^1.0.2" +node-libs-browser@^2.0.0: + version "2.2.1" + resolved "https://registry.yarnpkg.com/node-libs-browser/-/node-libs-browser-2.2.1.tgz#b64f513d18338625f90346d27b0d235e631f6425" + integrity sha512-h/zcD8H9kaDZ9ALUWwlBUDo6TKF8a7qBSCSEGfjTVIYeqsioSKaAX+BN7NgiMGp6iSIXZ3PxgCu8KS3b71YK5Q== + dependencies: + assert "^1.1.1" + browserify-zlib "^0.2.0" + buffer "^4.3.0" + console-browserify "^1.1.0" + constants-browserify "^1.0.0" + crypto-browserify "^3.11.0" + domain-browser "^1.1.1" + events "^3.0.0" + https-browserify "^1.0.0" + os-browserify "^0.3.0" + path-browserify "0.0.1" + process "^0.11.10" + punycode "^1.2.4" + querystring-es3 "^0.2.0" + readable-stream "^2.3.3" + stream-browserify "^2.0.1" + stream-http "^2.7.2" + string_decoder "^1.0.0" + timers-browserify "^2.0.4" + tty-browserify "0.0.0" + url "^0.11.0" + util "^0.11.0" + vm-browserify "^1.0.1" + node-pre-gyp@^0.11.0: version "0.11.0" resolved "https://registry.yarnpkg.com/node-pre-gyp/-/node-pre-gyp-0.11.0.tgz#db1f33215272f692cd38f03238e3e9b47c5dd054" @@ -7978,6 +10364,13 @@ npmlog@^4.0.2: gauge "~2.7.3" set-blocking "~2.0.0" +nth-check@^2.0.0: + version "2.0.0" + resolved "https://registry.yarnpkg.com/nth-check/-/nth-check-2.0.0.tgz#1bb4f6dac70072fc313e8c9cd1417b5074c0a125" + integrity sha512-i4sc/Kj8htBrAiH1viZ0TgU8Y5XqCaV/FziYK6TBczxmeKm3AEFWqqF3195yKudrarqy7Zu80Ra5dobFjn9X/Q== + dependencies: + boolbase "^1.0.0" + nth-check@~1.0.1: version "1.0.2" resolved "https://registry.yarnpkg.com/nth-check/-/nth-check-1.0.2.tgz#b2bd295c37e3dd58a3bf0700376663ba4d9cf05c" @@ -8074,7 +10467,7 @@ object.assign@^4.1.0, object.assign@^4.1.2: has-symbols "^1.0.1" object-keys "^1.1.1" -object.getownpropertydescriptors@^2.1.1: +object.getownpropertydescriptors@^2.0.3, object.getownpropertydescriptors@^2.1.1: version "2.1.2" resolved "https://registry.yarnpkg.com/object.getownpropertydescriptors/-/object.getownpropertydescriptors-2.1.2.tgz#1bd63aeacf0d5d2d2f31b5e393b03a7c601a23f7" integrity sha512-WtxeKSzfBjlzL+F9b7M7hewDzMwy+C8NRssHd1YrNlzHzIDrXcXiNOMrezdAEM4UXixgV+vvnyBeN7Rygl2ttQ== @@ -8140,6 +10533,14 @@ onetime@^5.1.0: dependencies: mimic-fn "^2.1.0" +open@^7.4.2: + version "7.4.2" + resolved "https://registry.yarnpkg.com/open/-/open-7.4.2.tgz#b8147e26dcf3e426316c730089fd71edd29c2321" + integrity sha512-MVHddDVweXZF3awtlAS+6pgKLlm/JgxZ90+/NBurBoQctVOOB/zDdVjcyPzQ+0laDGbsWgrRkflI65sQeOgT9Q== + dependencies: + is-docker "^2.0.0" + is-wsl "^2.1.1" + opencollective-postinstall@^2.0.0: version "2.0.3" resolved "https://registry.yarnpkg.com/opencollective-postinstall/-/opencollective-postinstall-2.0.3.tgz#7a0fff978f6dbfa4d006238fbac98ed4198c3259" @@ -8205,6 +10606,11 @@ original@^1.0.0: dependencies: url-parse "^1.4.3" +os-browserify@^0.3.0: + version "0.3.0" + resolved "https://registry.yarnpkg.com/os-browserify/-/os-browserify-0.3.0.tgz#854373c7f5c2315914fc9bfc6bd8238fdda1ec27" + integrity sha1-hUNzx/XCMVkU/Jv8a9gjj92h7Cc= + os-homedir@^1.0.0: version "1.0.2" resolved "https://registry.yarnpkg.com/os-homedir/-/os-homedir-1.0.2.tgz#ffbc4988336e0e833de0c168c7ef152121aa7fb3" @@ -8217,6 +10623,15 @@ os-locale@^1.4.0: dependencies: lcid "^1.0.0" +os-locale@^2.0.0: + version "2.1.0" + resolved "https://registry.yarnpkg.com/os-locale/-/os-locale-2.1.0.tgz#42bc2900a6b5b8bd17376c8e882b65afccf24bf2" + integrity sha512-3sslG3zJbEYcaC4YVAvDorjGxc7tv6KVATnLPZONiljsUncvihe9BQoVCEs0RZ1kmf4Hk9OBqlZfJZWI4GanKA== + dependencies: + execa "^0.7.0" + lcid "^1.0.0" + mem "^1.1.0" + os-locale@^3.1.0: version "3.1.0" resolved "https://registry.yarnpkg.com/os-locale/-/os-locale-3.1.0.tgz#a802a6ee17f24c10483ab9935719cef4ed16bf1a" @@ -8254,6 +10669,19 @@ p-defer@^1.0.0: resolved "https://registry.yarnpkg.com/p-defer/-/p-defer-1.0.0.tgz#9f6eb182f6c9aa8cd743004a7d4f96b196b0fb0c" integrity sha1-n26xgvbJqozXQwBKfU+WsZaw+ww= +p-defer@^3.0.0: + version "3.0.0" + resolved "https://registry.yarnpkg.com/p-defer/-/p-defer-3.0.0.tgz#d1dceb4ee9b2b604b1d94ffec83760175d4e6f83" + integrity sha512-ugZxsxmtTln604yeYd29EGrNhazN2lywetzpKhfmQjW/VJmhpDmWbiX+h0zL8V91R0UXkhb3KtPmyq9PZw3aYw== + +p-fifo@^1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/p-fifo/-/p-fifo-1.0.0.tgz#e29d5cf17c239ba87f51dde98c1d26a9cfe20a63" + integrity sha512-IjoCxXW48tqdtDFz6fqo5q1UfFVjjVZe8TC1QRflvNUJtNfCUhxOUw6MOVZhDPjqhSzc26xKdugsO17gmzd5+A== + dependencies: + fast-fifo "^1.0.0" + p-defer "^3.0.0" + p-finally@^1.0.0: version "1.0.0" resolved "https://registry.yarnpkg.com/p-finally/-/p-finally-1.0.0.tgz#3fbcfb15b899a44123b34b6dcc18b724336a2cae" @@ -8337,6 +10765,11 @@ p-try@^2.0.0: resolved "https://registry.yarnpkg.com/p-try/-/p-try-2.2.0.tgz#cb2868540e313d61de58fafbe35ce9004d5540e6" integrity sha512-R4nPAVTAU0B9D35/Gk3uJf/7XYbQcyohSKdvAxIRSNghFl4e71hVoGnBNQz9cWaXxO2I10KTC+3jMdvvoKw6dQ== +pako@~1.0.5: + version "1.0.11" + resolved "https://registry.yarnpkg.com/pako/-/pako-1.0.11.tgz#6c9599d340d54dfd3946380252a35705a6b992bf" + integrity sha512-4hLB8Py4zZce5s4yd9XzopqwVv/yGNhV1Bl8NTmCq1763HeK2+EwVTv+leGeL13Dnh2wfbqowVPXCIO0z4taYw== + param-case@^2.1.0: version "2.1.1" resolved "https://registry.yarnpkg.com/param-case/-/param-case-2.1.1.tgz#df94fd8cf6531ecf75e6bef9a0858fbc72be2247" @@ -8344,6 +10777,13 @@ param-case@^2.1.0: dependencies: no-case "^2.2.0" +paramap-it@^0.1.1: + version "0.1.1" + resolved "https://registry.yarnpkg.com/paramap-it/-/paramap-it-0.1.1.tgz#dad5963c003315c0993b84402a9c08f8c36e80d9" + integrity sha512-3uZmCAN3xCw7Am/4ikGzjjR59aNMJVXGSU7CjG2Z6DfOAdhnLdCOd0S0m1sTkN4ov9QhlE3/jkzyu953hq0uwQ== + dependencies: + event-iterator "^1.0.0" + parse-asn1@^5.0.0: version "5.1.5" resolved "https://registry.yarnpkg.com/parse-asn1/-/parse-asn1-5.1.5.tgz#003271343da58dc94cace494faef3d2147ecea0e" @@ -8361,6 +10801,11 @@ parse-cache-control@^1.0.1: resolved "https://registry.yarnpkg.com/parse-cache-control/-/parse-cache-control-1.0.1.tgz#8eeab3e54fa56920fe16ba38f77fa21aacc2d74e" integrity sha1-juqz5U+laSD+Fro493+iGqzC104= +parse-duration@^0.4.4: + version "0.4.4" + resolved "https://registry.yarnpkg.com/parse-duration/-/parse-duration-0.4.4.tgz#11c0f51a689e97d06c57bd772f7fda7dc013243c" + integrity sha512-KbAJuYGUhZkB9gotDiKLnZ7Z3VTacK3fgwmDdB6ZVDtJbMBT6MfLga0WJaYpPDu0mzqT0NgHtHDt5PY4l0nidg== + parse-glob@^3.0.4: version "3.0.4" resolved "https://registry.yarnpkg.com/parse-glob/-/parse-glob-3.0.4.tgz#b2c376cfb11f35513badd173ef0bb6e3a388391c" @@ -8383,6 +10828,18 @@ parse-json@^2.2.0: dependencies: error-ex "^1.2.0" +parse-passwd@^1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/parse-passwd/-/parse-passwd-1.0.0.tgz#6d5b934a456993b23d37f40a382d6f1666a8e5c6" + integrity sha1-bVuTSkVpk7I9N/QKOC1vFmao5cY= + +parse5-htmlparser2-tree-adapter@^6.0.1: + version "6.0.1" + resolved "https://registry.yarnpkg.com/parse5-htmlparser2-tree-adapter/-/parse5-htmlparser2-tree-adapter-6.0.1.tgz#2cdf9ad823321140370d4dbf5d3e92c7c8ddc6e6" + integrity sha512-qPuWvbLgvDGilKc5BoicRovlT4MtYT6JfJyBOMDsKoiT+GiuP5qyrPCnR9HcPECIJJmZh5jRndyNThnhhb/vlA== + dependencies: + parse5 "^6.0.1" + parse5@^1.5.1: version "1.5.1" resolved "https://registry.yarnpkg.com/parse5/-/parse5-1.5.1.tgz#9b7f3b0de32be78dc2401b17573ccaf0f6f59d94" @@ -8395,6 +10852,11 @@ parse5@^3.0.1: dependencies: "@types/node" "*" +parse5@^6.0.1: + version "6.0.1" + resolved "https://registry.yarnpkg.com/parse5/-/parse5-6.0.1.tgz#e1a1c085c569b3dc08321184f19a39cc27f7c30b" + integrity sha512-Ofn/CTFzRGTTxwpNEs9PP93gXShHcTq255nzRYSKe8AkVpZY7e1fpmTfOyoIvjP5HG7Z2ZM7VS9PPhQGW2pOpw== + parseurl@^1.3.2, parseurl@~1.3.3: version "1.3.3" resolved "https://registry.yarnpkg.com/parseurl/-/parseurl-1.3.3.tgz#9da19e7bee8d12dff0513ed5b76957793bc2e8d4" @@ -8421,24 +10883,30 @@ pascalcase@^0.1.1: resolved "https://registry.yarnpkg.com/pascalcase/-/pascalcase-0.1.1.tgz#b363e55e8006ca6fe21784d2db22bd15d7917f14" integrity sha1-s2PlXoAGym/iF4TS2yK9FdeRfxQ= -patch-package@^6.2.1: - version "6.2.1" - resolved "https://registry.yarnpkg.com/patch-package/-/patch-package-6.2.1.tgz#e3c55cf09dffd3984dd300e30d842672b604307f" - integrity sha512-dfCtQor63PPij6DDYtCzBRoO5nNAcMSg7Cmh+DLhR+s3t0OLQBdvFxJksZHBe1J2MjsSWDjTF4+oQKFbdkssIg== +patch-package@^6.4.7: + version "6.4.7" + resolved "https://registry.yarnpkg.com/patch-package/-/patch-package-6.4.7.tgz#2282d53c397909a0d9ef92dae3fdeb558382b148" + integrity sha512-S0vh/ZEafZ17hbhgqdnpunKDfzHQibQizx9g8yEf5dcVk3KOflOfdufRXQX8CSEkyOQwuM/bNz1GwKvFj54kaQ== dependencies: "@yarnpkg/lockfile" "^1.1.0" chalk "^2.4.2" cross-spawn "^6.0.5" - find-yarn-workspace-root "^1.2.1" + 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" +path-browserify@0.0.1: + version "0.0.1" + resolved "https://registry.yarnpkg.com/path-browserify/-/path-browserify-0.0.1.tgz#e6c4ddd7ed3aa27c68a20cc4e50e1a4ee83bbc4a" + integrity sha512-BapA40NHICOS+USX9SN4tyhq+A2RrN/Ws5F0Z5aMHDp98Fl86lX8Oti8B7uN93L4Ifv4fHOEA+pQw87gmMO/lQ== + path-case@^2.1.0: version "2.1.1" resolved "https://registry.yarnpkg.com/path-case/-/path-case-2.1.1.tgz#94b8037c372d3fe2906e465bb45e25d226e8eea5" @@ -8497,15 +10965,22 @@ path-type@^1.0.0: pify "^2.0.0" pinkie-promise "^2.0.0" +path-type@^2.0.0: + version "2.0.0" + resolved "https://registry.yarnpkg.com/path-type/-/path-type-2.0.0.tgz#f012ccb8415b7096fc2daa1054c3d72389594c73" + integrity sha1-8BLMuEFbcJb8LaoQVMPXI4lZTHM= + dependencies: + pify "^2.0.0" + path-type@^4.0.0: version "4.0.0" resolved "https://registry.yarnpkg.com/path-type/-/path-type-4.0.0.tgz#84ed01c0a7ba380afe09d90a8c180dcd9d03043b" integrity sha512-gDKb8aZMDeD/tZWs9P6+q0J9Mwkdl6xMV8TjnGP3qJVJ06bdMgkbBlLU8IdfOsIsFz2BW1rNVT3XuNEl8zPAvw== -pathval@^1.1.0: - version "1.1.0" - resolved "https://registry.yarnpkg.com/pathval/-/pathval-1.1.0.tgz#b942e6d4bde653005ef6b71361def8727d0645e0" - integrity sha1-uULm1L3mUwBe9rcTYd74cn0GReA= +pathval@^1.1.1: + version "1.1.1" + resolved "https://registry.yarnpkg.com/pathval/-/pathval-1.1.1.tgz#8534e77a77ce7ac5a2512ea21e0fdb8fcf6c3d8d" + integrity sha512-Dp6zGqpTdETdR63lehJYPeIOqpiNBNtc7BpWSLrOje7UaIsE5aY92r/AunQA7rsXvet3lrJ3JnZX29UPTKXyKQ== pbkdf2@^3.0.17, pbkdf2@^3.0.3: version "3.0.17" @@ -8518,6 +10993,37 @@ pbkdf2@^3.0.17, pbkdf2@^3.0.3: safe-buffer "^5.0.1" sha.js "^2.4.8" +pbkdf2@^3.0.9: + version "3.1.2" + resolved "https://registry.yarnpkg.com/pbkdf2/-/pbkdf2-3.1.2.tgz#dd822aa0887580e52f1a039dc3eda108efae3075" + integrity sha512-iuh7L6jA7JEGu2WxDwtQP1ddOpaJNC4KlDEFfdQajSGgGPNi4OyDc2R7QnbY2bR9QjBVGwgvTdNJZoE7RaxUMA== + dependencies: + create-hash "^1.1.2" + create-hmac "^1.1.4" + ripemd160 "^2.0.1" + safe-buffer "^5.0.1" + sha.js "^2.4.8" + +peer-id@^0.14.1: + version "0.14.8" + resolved "https://registry.yarnpkg.com/peer-id/-/peer-id-0.14.8.tgz#667c6bedc8ab313c81376f6aca0baa2140266fab" + integrity sha512-GpuLpob/9FrEFvyZrKKsISEkaBYsON2u0WtiawLHj1ii6ewkoeRiSDFLyIefYhw0jGvQoeoZS05jaT52X7Bvig== + dependencies: + cids "^1.1.5" + class-is "^1.1.0" + libp2p-crypto "^0.19.0" + minimist "^1.2.5" + multihashes "^4.0.2" + protobufjs "^6.10.2" + uint8arrays "^2.0.5" + +pem-jwk@^2.0.0: + version "2.0.0" + resolved "https://registry.yarnpkg.com/pem-jwk/-/pem-jwk-2.0.0.tgz#1c5bb264612fc391340907f5c1de60c06d22f085" + integrity sha512-rFxu7rVoHgQ5H9YsP50dDWf0rHjreVA2z0yPiWr5WdH/UHb29hKtF7h6l8vNd1cbYR1t0QL+JKhW55a2ZV4KtA== + dependencies: + asn1.js "^5.0.1" + pend@~1.2.0: version "1.2.0" resolved "https://registry.yarnpkg.com/pend/-/pend-1.2.0.tgz#7a57eb550a6783f9115331fcf4663d5c8e007a50" @@ -8877,10 +11383,27 @@ preserve@^0.2.0: resolved "https://registry.yarnpkg.com/preserve/-/preserve-0.2.0.tgz#815ed1f6ebc65926f865b310c0713bcb3315ce4b" integrity sha1-gV7R9uvGWSb4ZbMQwHE7yzMVzks= -prettier@^1.14.2: - version "1.19.1" - resolved "https://registry.yarnpkg.com/prettier/-/prettier-1.19.1.tgz#f7d7f5ff8a9cd872a7be4ca142095956a60797cb" - integrity sha512-s7PoyDv/II1ObgQunCbB9PdLmUcBZcnWOcxDh7O0N/UwDEsHyqkW+Qh28jW+mVuCdx7gLB0BotYI1Y6uI9iyew== +prettier-plugin-solidity@^1.0.0-alpha.59: + version "1.0.0-beta.17" + resolved "https://registry.yarnpkg.com/prettier-plugin-solidity/-/prettier-plugin-solidity-1.0.0-beta.17.tgz#fc0fe977202b6503763a338383efeceaa6c7661e" + integrity sha512-YFkxV/rHi1mphi17/XKcJ9QjZlb+L/J0yY2erix21BZfzPv2BN9dfmSRGr/poDp/FBOFSW+jteP2BCMe7HndVQ== + dependencies: + "@solidity-parser/parser" "^0.13.2" + emoji-regex "^9.2.2" + escape-string-regexp "^4.0.0" + semver "^7.3.5" + solidity-comments-extractor "^0.0.7" + string-width "^4.2.2" + +prettier@^2.1.2: + version "2.3.2" + resolved "https://registry.yarnpkg.com/prettier/-/prettier-2.3.2.tgz#ef280a05ec253712e486233db5c6f23441e7342d" + integrity sha512-lnJzDfJ66zkMy58OL5/NY5zp70S7Nz6KqcKkXYzn2tMVrNxvbqaBpg7H3qHaLxCJ5lNMsGuM8+ohS7cZrthdLQ== + +printj@~1.1.0: + version "1.1.2" + resolved "https://registry.yarnpkg.com/printj/-/printj-1.1.2.tgz#d90deb2975a8b9f600fb3a1c94e3f4c53c78a222" + integrity sha512-zA2SmoLaxZyArQTOPj5LXecR+RagfPSU5Kw1qP+jkWeNlrq+eJZyY2oS68SU1Z/7/myXM4lo9716laOFAVStCQ== process-nextick-args@~1.0.6: version "1.0.7" @@ -8892,6 +11415,11 @@ process-nextick-args@~2.0.0: resolved "https://registry.yarnpkg.com/process-nextick-args/-/process-nextick-args-2.0.1.tgz#7820d9b16120cc55ca9ae7792680ae7dba6d7fe2" integrity sha512-3ouUOpQhtgrbOa17J7+uxOTpITYWaGP7/AhoR3+A+/1e9skrzelGi/dXzEYyvbxubEF6Wn2ypscTKiKJFFn1ag== +process@^0.11.10: + version "0.11.10" + resolved "https://registry.yarnpkg.com/process/-/process-0.11.10.tgz#7332300e840161bda3e69a1d1d91a7d4bc16f182" + integrity sha1-czIwDoQBYb2j5podHZGn1LwW8YI= + process@~0.5.1: version "0.5.2" resolved "https://registry.yarnpkg.com/process/-/process-0.5.2.tgz#1638d8a8e34c2f440a91db95ab9aeb677fc185cf" @@ -8931,6 +11459,40 @@ prop-types@^15.7.2: object-assign "^4.1.1" react-is "^16.8.1" +protobufjs@^6.10.2, protobufjs@^6.11.2: + version "6.11.2" + resolved "https://registry.yarnpkg.com/protobufjs/-/protobufjs-6.11.2.tgz#de39fabd4ed32beaa08e9bb1e30d08544c1edf8b" + integrity sha512-4BQJoPooKJl2G9j3XftkIXjoC9C0Av2NOrWmbLWT1vH32GcSUHjM0Arra6UfTsVyfMAuFzaLucXn1sadxJydAw== + dependencies: + "@protobufjs/aspromise" "^1.1.2" + "@protobufjs/base64" "^1.1.2" + "@protobufjs/codegen" "^2.0.4" + "@protobufjs/eventemitter" "^1.1.0" + "@protobufjs/fetch" "^1.1.0" + "@protobufjs/float" "^1.0.2" + "@protobufjs/inquire" "^1.1.0" + "@protobufjs/path" "^1.1.2" + "@protobufjs/pool" "^1.1.0" + "@protobufjs/utf8" "^1.1.0" + "@types/long" "^4.0.1" + "@types/node" ">=13.7.0" + long "^4.0.0" + +protocol-buffers-schema@^3.3.1: + version "3.5.2" + resolved "https://registry.yarnpkg.com/protocol-buffers-schema/-/protocol-buffers-schema-3.5.2.tgz#38ad35ba768607a5ed2375f8db4c2ecc5ea293c8" + integrity sha512-LPzSaBYp/TcbuSlpGwqT5jR9kvJ3Zp5ic2N5c2ybx6XB/lSfEHq2D7ja8AgoxHoMD91wXFALJoXsvshKPuXyew== + +protons@^2.0.0: + version "2.0.2" + resolved "https://registry.yarnpkg.com/protons/-/protons-2.0.2.tgz#f55ee68f6d183a7efaa80b4bee58e52444f7f1f7" + integrity sha512-EIPoT9ftVirJ9QJ3oFoueYUiBhmPqE1AoSBPypLSqbbvHvx+OcUeK9z84YIsk6jda+N3FL58dU1LcWmfGCZGHA== + dependencies: + protocol-buffers-schema "^3.3.1" + signed-varint "^2.0.1" + uint8arrays "^2.1.3" + varint "^5.0.0" + proxy-addr@~2.0.5: version "2.0.5" resolved "https://registry.yarnpkg.com/proxy-addr/-/proxy-addr-2.0.5.tgz#34cbd64a2d81f4b1fd21e76f9f06c8a45299ee34" @@ -8944,6 +11506,11 @@ prr@~1.0.1: resolved "https://registry.yarnpkg.com/prr/-/prr-1.0.1.tgz#d3fc114ba06995a45ec6893f484ceb1d78f5f476" integrity sha1-0/wRS6BplaRexok/SEzrHXj19HY= +pseudomap@^1.0.2: + version "1.0.2" + resolved "https://registry.yarnpkg.com/pseudomap/-/pseudomap-1.0.2.tgz#f052a28da70e618917ef0a8ac34c1ae5a68286b3" + integrity sha1-8FKijacOYYkX7wqKw0wa5aaChrM= + psl@^1.1.28: version "1.7.0" resolved "https://registry.yarnpkg.com/psl/-/psl-1.7.0.tgz#f1c4c47a8ef97167dea5d6bbf4816d736e884a3c" @@ -8974,11 +11541,21 @@ pump@^3.0.0: end-of-stream "^1.1.0" once "^1.3.1" +punycode@1.3.2: + version "1.3.2" + resolved "https://registry.yarnpkg.com/punycode/-/punycode-1.3.2.tgz#9653a036fb7c1ee42342f2325cceefea3926c48d" + integrity sha1-llOgNvt8HuQjQvIyXM7v6jkmxI0= + punycode@2.1.0: version "2.1.0" resolved "https://registry.yarnpkg.com/punycode/-/punycode-2.1.0.tgz#5f863edc89b96db09074bad7947bf09056ca4e7d" integrity sha1-X4Y+3Im5bbCQdLrXlHvwkFbKTn0= +punycode@^1.2.4: + version "1.4.1" + resolved "https://registry.yarnpkg.com/punycode/-/punycode-1.4.1.tgz#c0d5a63b2718800ad8e1eb0fa5269c84dd41845e" + integrity sha1-wNWmOycYgArY4esPpSachN1BhF4= + punycode@^2.1.0, punycode@^2.1.1: version "2.1.1" resolved "https://registry.yarnpkg.com/punycode/-/punycode-2.1.1.tgz#b58b010ac40c22c5657616c8d2c2c02c7bf479ec" @@ -9013,12 +11590,17 @@ query-string@^5.0.1: object-assign "^4.1.0" strict-uri-encode "^1.0.0" +querystring-es3@^0.2.0: + version "0.2.1" + resolved "https://registry.yarnpkg.com/querystring-es3/-/querystring-es3-0.2.1.tgz#9ec61f79049875707d69414596fd907a4d711e73" + integrity sha1-nsYfeQSYdXB9aUFFlv2Qek1xHnM= + querystring@0.2.0: version "0.2.0" resolved "https://registry.yarnpkg.com/querystring/-/querystring-0.2.0.tgz#b209849203bb25df820da756e747005878521620" integrity sha1-sgmEkgO7Jd+CDadW50cAWHhSFiA= -querystring@^0.2.0: +querystring@^0.2.0, querystring@^0.2.1: version "0.2.1" resolved "https://registry.yarnpkg.com/querystring/-/querystring-0.2.1.tgz#40d77615bb09d16902a85c3e38aa8b5ed761c2dd" integrity sha512-wkvS7mL/JMugcup3/rMitHmd9ecIGd2lhFhK9N3UUQ450h66d1r3Y9nvXzQAW1Lq+wyx61k/1pfKS5KuKiyEbg== @@ -9100,6 +11682,14 @@ read-pkg-up@^1.0.1: find-up "^1.0.0" read-pkg "^1.0.0" +read-pkg-up@^2.0.0: + version "2.0.0" + resolved "https://registry.yarnpkg.com/read-pkg-up/-/read-pkg-up-2.0.0.tgz#6b72a8048984e0c41e79510fd5e9fa99b3b549be" + integrity sha1-a3KoBImE4MQeeVEP1en6mbO1Sb4= + dependencies: + find-up "^2.0.0" + read-pkg "^2.0.0" + read-pkg@^1.0.0: version "1.1.0" resolved "https://registry.yarnpkg.com/read-pkg/-/read-pkg-1.1.0.tgz#f5ffaa5ecd29cb31c0474bca7d756b6bb29e3f28" @@ -9109,6 +11699,15 @@ read-pkg@^1.0.0: normalize-package-data "^2.3.2" path-type "^1.0.0" +read-pkg@^2.0.0: + version "2.0.0" + resolved "https://registry.yarnpkg.com/read-pkg/-/read-pkg-2.0.0.tgz#8ef1c0623c6a6db0dc6713c4bfac46332b2368f8" + integrity sha1-jvHAYjxqbbDcZxPEv6xGMysjaPg= + dependencies: + load-json-file "^2.0.0" + normalize-package-data "^2.3.2" + path-type "^2.0.0" + readable-stream@1.0.33: version "1.0.33" resolved "https://registry.yarnpkg.com/readable-stream/-/readable-stream-1.0.33.tgz#3a360dd66c1b1d7fd4705389860eda1d0f61126c" @@ -9139,7 +11738,7 @@ readable-stream@1.1.14: isarray "0.0.1" string_decoder "~0.10.x" -"readable-stream@2 || 3", readable-stream@^3.1.1, readable-stream@^3.4.0: +"readable-stream@2 || 3", readable-stream@^3.1.1, readable-stream@^3.4.0, readable-stream@^3.6.0: version "3.6.0" resolved "https://registry.yarnpkg.com/readable-stream/-/readable-stream-3.6.0.tgz#337bbda3adc0706bd3e024426a286d4b4b2c9198" integrity sha512-BViHy7LKeTz4oNnkcLJ+lVSL6vpiFeX6/d3oSH8zCW7UxP2onchk+vTGB143xuFjHS3deTgkKoXXymXqymiIdA== @@ -9158,7 +11757,7 @@ readable-stream@1.1.14: isarray "0.0.1" string_decoder "~0.10.x" -readable-stream@^2.0.0, readable-stream@^2.0.1, readable-stream@^2.0.4, readable-stream@^2.0.5, readable-stream@^2.0.6, readable-stream@^2.2.2, readable-stream@^2.3.0, readable-stream@^2.3.5, readable-stream@~2.3.6: +readable-stream@^2.0.0, readable-stream@^2.0.1, readable-stream@^2.0.2, readable-stream@^2.0.4, readable-stream@^2.0.5, readable-stream@^2.0.6, readable-stream@^2.2.2, readable-stream@^2.3.0, readable-stream@^2.3.3, readable-stream@^2.3.5, readable-stream@^2.3.6, readable-stream@~2.3.6: version "2.3.7" resolved "https://registry.yarnpkg.com/readable-stream/-/readable-stream-2.3.7.tgz#1eca1cf711aef814c04f62252a36a62f6cb23b57" integrity sha512-Ebho8K4jIbHAxnuxi7o42OrZgF/ZTNcsZj6nRKyUmkhLFq8CHItp/fy6hQZuZmP/n3yZ9VBUbp4zz/mX8hmYPw== @@ -9188,6 +11787,22 @@ readable-stream@~2.0.0: string_decoder "~0.10.x" util-deprecate "~1.0.1" +readdirp@^2.2.1: + version "2.2.1" + resolved "https://registry.yarnpkg.com/readdirp/-/readdirp-2.2.1.tgz#0e87622a3325aa33e892285caf8b4e846529a525" + integrity sha512-1JU/8q+VgFZyxwrJ+SVIOsh+KywWGpds3NTqikiKpDMZWScmAYyKIgqkO+ARvNWJfXeXR1zxz7aHF4u4CyH6vQ== + dependencies: + graceful-fs "^4.1.11" + micromatch "^3.1.10" + readable-stream "^2.0.2" + +readdirp@~3.2.0: + version "3.2.0" + resolved "https://registry.yarnpkg.com/readdirp/-/readdirp-3.2.0.tgz#c30c33352b12c96dfb4b895421a49fd5a9593839" + integrity sha512-crk4Qu3pmXwgxdSgGhgA/eXiJAPQiX4GMOZZMXnqKxHX7TaoL+3gQVo/WeuAiogr07DpnfjIMpXXa+PAIvwPGQ== + dependencies: + picomatch "^2.0.4" + readdirp@~3.4.0: version "3.4.0" resolved "https://registry.yarnpkg.com/readdirp/-/readdirp-3.4.0.tgz#9fdccdf9e9155805449221ac645e8303ab5b9ada" @@ -9195,6 +11810,20 @@ readdirp@~3.4.0: dependencies: picomatch "^2.2.1" +readdirp@~3.6.0: + version "3.6.0" + resolved "https://registry.yarnpkg.com/readdirp/-/readdirp-3.6.0.tgz#74a370bd857116e245b29cc97340cd431a02a6c7" + integrity sha512-hOS089on8RduqdbhvQ5Z37A0ESjsqz6qnRcffsMU3495FuTdqSm+7bhJ29JvIOsBDEEnan5DPu9t3To9VRlMzA== + dependencies: + picomatch "^2.2.1" + +receptacle@^1.3.2: + version "1.3.2" + resolved "https://registry.yarnpkg.com/receptacle/-/receptacle-1.3.2.tgz#a7994c7efafc7a01d0e2041839dab6c4951360d2" + integrity sha512-HrsFvqZZheusncQRiEE7GatOAETrARKV/lnfYicIm8lbvp/JQOdADOfhjBd2DajvoszEyxSM6RlAAIZgEoeu/A== + dependencies: + ms "^2.1.1" + rechoir@^0.6.2: version "0.6.2" resolved "https://registry.yarnpkg.com/rechoir/-/rechoir-0.6.2.tgz#85204b54dba82d5742e28c96756ef43af50e3384" @@ -9209,13 +11838,6 @@ recursive-readdir@^2.2.2: dependencies: minimatch "3.0.4" -redux-cli-logger@^2.0.1: - version "2.1.0" - resolved "https://registry.yarnpkg.com/redux-cli-logger/-/redux-cli-logger-2.1.0.tgz#7e546502a4b08c7fac4fe2faee2326a6326cb4a1" - integrity sha512-75mVsggAJRSykWy2qxdGI7osocDWvc3RCMeN93hlvS/FxgdRww12NaXslez+W6gBOrSJKO7W16V0IzuISSfCxg== - dependencies: - colors "^1.1.2" - redux-devtools-core@^0.2.1: version "0.2.1" resolved "https://registry.yarnpkg.com/redux-devtools-core/-/redux-devtools-core-0.2.1.tgz#4e43cbe590a1f18c13ee165d2d42e0bc77a164d8" @@ -9396,7 +12018,7 @@ request-promise-native@^1.0.5: stealthy-require "^1.1.1" tough-cookie "^2.3.3" -request@^2.55.0, request@^2.79.0, request@^2.85.0, request@^2.88.0: +request@^2.55.0, request@^2.79.0, request@^2.85.0, request@^2.88.0, request@^2.88.2: version "2.88.2" resolved "https://registry.yarnpkg.com/request/-/request-2.88.2.tgz#d73c918731cb5a87da047e207234146f664d12b3" integrity sha512-MsvtOrfG9ZcrOwAW+Qi+F6HbD0CWXEh9ou77uOb7FM2WPhwT7smM833PzanhJLsgXjN89Ir6V2PczXNnMpwKhw== @@ -9463,6 +12085,19 @@ reselect@^4.0.0: resolved "https://registry.yarnpkg.com/reselect/-/reselect-4.0.0.tgz#f2529830e5d3d0e021408b246a206ef4ea4437f7" integrity sha512-qUgANli03jjAyGlnbYVAV5vvnOmJnODyABz51RdBN7M4WaVu8mecZWgyQNkG8Yqe3KRGRt0l4K4B3XVEULC4CA== +reset@^0.1.0: + version "0.1.0" + resolved "https://registry.yarnpkg.com/reset/-/reset-0.1.0.tgz#9fc7314171995ae6cb0b7e58b06ce7522af4bafb" + integrity sha1-n8cxQXGZWubLC35YsGznUir0uvs= + +resolve-dir@^1.0.0: + version "1.0.1" + resolved "https://registry.yarnpkg.com/resolve-dir/-/resolve-dir-1.0.1.tgz#79a40644c362be82f26effe739c9bb5382046f43" + integrity sha1-eaQGRMNivoLybv/nOcm7U4IEb0M= + dependencies: + expand-tilde "^2.0.0" + global-modules "^1.0.0" + resolve-from@5.0.0, resolve-from@^5.0.0: version "5.0.0" resolved "https://registry.yarnpkg.com/resolve-from/-/resolve-from-5.0.0.tgz#c35225843df8f776df21c57557bc087e9dfdfc69" @@ -9483,7 +12118,7 @@ resolve@1.1.x: resolved "https://registry.yarnpkg.com/resolve/-/resolve-1.1.7.tgz#203114d82ad2c5ed9e8e0411b3932875e889e97b" integrity sha1-IDEU2CrSxe2ejgQRs5ModeiJ6Xs= -resolve@^1.1.6, resolve@^1.3.2, resolve@^1.8.1: +resolve@^1.1.6, resolve@^1.3.2: version "1.15.1" resolved "https://registry.yarnpkg.com/resolve/-/resolve-1.15.1.tgz#27bdcdeffeaf2d6244b95bb0f9f4b4653451f3e8" integrity sha512-84oo6ZTtoTUpjgNEr5SJyzQhzL72gaRodsSfyxC/AXRvwu0Yse9H8eF9IpGo7b8YetZhlI6v7ZQ6bKBFV/6S7w== @@ -9526,6 +12161,11 @@ ret@~0.1.10: resolved "https://registry.yarnpkg.com/ret/-/ret-0.1.15.tgz#b8a4825d5bdb1fc3f6f53c2bc33f81388681c7bc" integrity sha512-TTlYpa+OL+vMMNG24xSlQGEJ3B/RzEfUlLct7b5G/ytav+wPrplCpVMFuwzXbkecJrb6IYo1iFb0S9v37754mg== +retimer@^2.0.0: + version "2.0.0" + resolved "https://registry.yarnpkg.com/retimer/-/retimer-2.0.0.tgz#e8bd68c5e5a8ec2f49ccb5c636db84c04063bbca" + integrity sha512-KLXY85WkEq2V2bKex/LOO1ViXVn2KGYe4PYysAdYdjmraYIUsVkXu8O4am+8+5UbaaGl1qho4aqAAPHNQ4GSbg== + retry@0.12.0: version "0.12.0" resolved "https://registry.yarnpkg.com/retry/-/retry-0.12.0.tgz#1b42a6266a21f07421d1b0b54b7dc167b01c013b" @@ -9536,6 +12176,13 @@ reusify@^1.0.4: resolved "https://registry.yarnpkg.com/reusify/-/reusify-1.0.4.tgz#90da382b1e126efc02146e90845a88db12925d76" integrity sha512-U9nH88a3fc/ekCF1l0/UP1IosiuIjyTh7hBvXVMHYgVcfGvt897Xguj2UOLDeI5BG2m7/uwyaLVT6fbtCwTyzw== +right-align@^0.1.1: + version "0.1.3" + resolved "https://registry.yarnpkg.com/right-align/-/right-align-0.1.3.tgz#61339b722fe6a3515689210d24e14c96148613ef" + integrity sha1-YTObci/mo1FWiSENJOFMlhSGE+8= + dependencies: + align-text "^0.1.1" + rimraf@^2.2.8, rimraf@^2.6.1, rimraf@^2.6.3: version "2.7.1" resolved "https://registry.yarnpkg.com/rimraf/-/rimraf-2.7.1.tgz#35797f13a7fdadc566142c29d4f07ccad483e3ec" @@ -9543,7 +12190,12 @@ rimraf@^2.2.8, rimraf@^2.6.1, rimraf@^2.6.3: dependencies: glob "^7.1.3" -ripemd160@^2.0.0, ripemd160@^2.0.1: +ripemd160-min@0.0.6: + version "0.0.6" + resolved "https://registry.yarnpkg.com/ripemd160-min/-/ripemd160-min-0.0.6.tgz#a904b77658114474d02503e819dcc55853b67e62" + integrity sha512-+GcJgQivhs6S9qvLogusiTcS9kQUfgR75whKuy5jIhuiOfQuJ8fjqxV6EGD5duH1Y/FawFUMtMhyeq3Fbnib8A== + +ripemd160@^2.0.0, ripemd160@^2.0.1, ripemd160@^2.0.2: version "2.0.2" resolved "https://registry.yarnpkg.com/ripemd160/-/ripemd160-2.0.2.tgz#a1c1a6f624751577ba5d07914cbc92850585890c" integrity sha512-ii4iagi25WusVoiC4B4lq7pbXfAp3D9v5CwfkY33vffw2+pkDjY1D8GaN7spsxvCSx8dkPqOZCEZyfxcmJG2IA== @@ -9558,16 +12210,50 @@ rlp@^2.0.0, rlp@^2.2.3: dependencies: bn.js "^4.11.1" +rlp@^2.2.4: + version "2.2.6" + resolved "https://registry.yarnpkg.com/rlp/-/rlp-2.2.6.tgz#c80ba6266ac7a483ef1e69e8e2f056656de2fb2c" + integrity sha512-HAfAmL6SDYNWPUOJNrM500x4Thn4PZsEy5pijPh40U9WfNk0z15hUYzO9xVIMAdIHdFtD8CBDHd75Td1g36Mjg== + dependencies: + bn.js "^4.11.1" + rn-host-detect@^1.1.5: version "1.2.0" resolved "https://registry.yarnpkg.com/rn-host-detect/-/rn-host-detect-1.2.0.tgz#8b0396fc05631ec60c1cb8789e5070cdb04d0da0" integrity sha512-btNg5kzHcjZZ7t7mvvV/4wNJ9e3MPgrWivkRgWURzXL0JJ0pwWlU4zrbmdlz3HHzHOxhBhHB4D+/dbMFfu4/4A== +rpc-websockets@^5.3.1: + version "5.3.1" + resolved "https://registry.yarnpkg.com/rpc-websockets/-/rpc-websockets-5.3.1.tgz#678ca24315e4fe34a5f42ac7c2744764c056eb08" + integrity sha512-rIxEl1BbXRlIA9ON7EmY/2GUM7RLMy8zrUPTiLPFiYnYOz0I3PXfCmDDrge5vt4pW4oIcAXBDvgZuJ1jlY5+VA== + dependencies: + "@babel/runtime" "^7.8.7" + assert-args "^1.2.1" + babel-runtime "^6.26.0" + circular-json "^0.5.9" + eventemitter3 "^3.1.2" + uuid "^3.4.0" + ws "^5.2.2" + run-parallel@^1.1.9: version "1.1.9" resolved "https://registry.yarnpkg.com/run-parallel/-/run-parallel-1.1.9.tgz#c9dd3a7cf9f4b2c4b6244e173a6ed866e61dd679" integrity sha512-DEqnSRTDw/Tc3FXf49zedI638Z9onwUotBMiUFKmrO2sdFKIbXamXGQ3Axd4qgphxKB4kw/qP1w5kTxnfU1B9Q== +run@^1.4.0: + version "1.4.0" + resolved "https://registry.yarnpkg.com/run/-/run-1.4.0.tgz#e17d9e9043ab2fe17776cb299e1237f38f0b4ffa" + integrity sha1-4X2ekEOrL+F3dsspnhI3848LT/o= + dependencies: + minimatch "*" + +rxjs@6: + version "6.6.7" + resolved "https://registry.yarnpkg.com/rxjs/-/rxjs-6.6.7.tgz#90ac018acabf491bf65044235d5863c4dab804c9" + integrity sha512-hTdwr+7yYNIT5n4AMYp85KA6yw2Va0FLa3Rguvbpa4W3I5xynaBZo41cM3XM+4Q6fRMj3sBYIR1VAmZMXYJvRQ== + dependencies: + tslib "^1.9.0" + rxjs@^6.4.0: version "6.5.4" resolved "https://registry.yarnpkg.com/rxjs/-/rxjs-6.5.4.tgz#e0777fe0d184cec7872df147f303572d414e211c" @@ -9597,7 +12283,7 @@ safe-regex@^1.1.0: dependencies: ret "~0.1.10" -"safer-buffer@>= 2.1.2 < 3", safer-buffer@^2.0.2, safer-buffer@^2.1.0, safer-buffer@~2.1.0: +"safer-buffer@>= 2.1.2 < 3", "safer-buffer@>= 2.1.2 < 3.0.0", safer-buffer@^2.0.2, safer-buffer@^2.1.0, safer-buffer@~2.1.0: version "2.1.2" resolved "https://registry.yarnpkg.com/safer-buffer/-/safer-buffer-2.1.2.tgz#44fa161b0187b9549dd84bb91802f9bd8385cd6a" integrity sha512-YZo3K82SD7Riyi0E1EQPojLz7kpepnSQI9IyPbHHg1XXXevb5dJI7tpyN2ADxGcQbHG7vcyRHk0cbwqcQriUtg== @@ -9644,6 +12330,11 @@ sc-istanbul@^0.4.5: which "^1.1.1" wordwrap "^1.0.0" +scrypt-async@^2.0.1: + version "2.0.1" + resolved "https://registry.yarnpkg.com/scrypt-async/-/scrypt-async-2.0.1.tgz#4318dae48a8b7cc3b8fe05f75f4164a7d973d25d" + integrity sha512-wHR032jldwZNy7Tzrfu7RccOgGf8r5hyDMSP2uV6DpLiBUsR8JsDcx/in73o2UGVVrH5ivRFdNsFPcjtl3LErQ== + scrypt-js@2.0.3: version "2.0.3" resolved "https://registry.yarnpkg.com/scrypt-js/-/scrypt-js-2.0.3.tgz#bb0040be03043da9a012a2cea9fc9f852cfc87d4" @@ -9654,7 +12345,7 @@ scrypt-js@2.0.4: resolved "https://registry.yarnpkg.com/scrypt-js/-/scrypt-js-2.0.4.tgz#32f8c5149f0797672e551c07e230f834b6af5f16" integrity sha512-4KsaGcPnuhtCZQCxFxN3GVYIhKFPTdLd8PLC552XwbMndtD0cjRFAhDuuydXQ0h08ZfPgzqe6EKHozpuH74iDw== -scrypt-js@^3.0.0, scrypt-js@^3.0.1: +scrypt-js@3.0.1, scrypt-js@^3.0.0, scrypt-js@^3.0.1: version "3.0.1" resolved "https://registry.yarnpkg.com/scrypt-js/-/scrypt-js-3.0.1.tgz#d314a57c2aef69d1ad98a138a21fe9eafa9ee312" integrity sha512-cdwTTnqPu0Hyvf5in5asVdZocVDTNRmR7XEcJuIzMjJeSHybHl7vpB66AzwTaIg6CLSbtjcxc8fqcySfnTkccA== @@ -9685,7 +12376,7 @@ secp256k1@^3.0.1: nan "^2.14.0" safe-buffer "^5.1.2" -secp256k1@^4.0.1: +secp256k1@^4.0.0, secp256k1@^4.0.1: version "4.0.2" resolved "https://registry.yarnpkg.com/secp256k1/-/secp256k1-4.0.2.tgz#15dd57d0f0b9fdb54ac1fa1694f40e5e9a54f4a1" integrity sha512-UDar4sKvWAksIlfX3xIaQReADn+WFnHvbVujpcbr+9Sf/69odMwy2MUsz5CKLQgX9nsIyrjuxL2imVyoNHa3fg== @@ -9706,7 +12397,7 @@ seek-bzip@^1.0.5: dependencies: commander "~2.8.1" -"semver@2 || 3 || 4 || 5", semver@^5.3.0, semver@^5.5.0, semver@^5.5.1, semver@^5.6.0: +"semver@2 || 3 || 4 || 5", semver@^5.3.0, semver@^5.5.0, semver@^5.5.1, semver@^5.6.0, semver@^5.7.0: version "5.7.1" resolved "https://registry.yarnpkg.com/semver/-/semver-5.7.1.tgz#a954f931aeba508d307bbf069eff0c01c96116f7" integrity sha512-sauaDf/PZdVgrLTNYHRtpXa1iRiKcaebiKQ1BJdpQlWH2lCvexQdX55snPFyK7QzpudqbCI0qXFfOasHdyNDGQ== @@ -9728,6 +12419,13 @@ semver@^7.3.4: dependencies: lru-cache "^6.0.0" +semver@^7.3.5: + version "7.3.5" + resolved "https://registry.yarnpkg.com/semver/-/semver-7.3.5.tgz#0b621c879348d8998e4b0e4be94b3f12e6018ef7" + integrity sha512-PoeGJYh8HK4BTO/a9Tf6ZG3veo/A7ZVsYrSA6J8ny9nb3B1VrpkuN+z9OE5wfE5p6H4LchYZsegiQgbJD94ZFQ== + dependencies: + lru-cache "^6.0.0" + send@0.17.1: version "0.17.1" resolved "https://registry.yarnpkg.com/send/-/send-0.17.1.tgz#c1d8b059f7900f7466dd4938bdc44e11ddb376c8" @@ -9803,7 +12501,7 @@ setimmediate@1.0.4: resolved "https://registry.yarnpkg.com/setimmediate/-/setimmediate-1.0.4.tgz#20e81de622d4a02588ce0c8da8973cbcf1d3138f" integrity sha1-IOgd5iLUoCWIzgyNqJc8vPHTE48= -setimmediate@^1.0.5: +setimmediate@^1.0.4, setimmediate@^1.0.5: version "1.0.5" resolved "https://registry.yarnpkg.com/setimmediate/-/setimmediate-1.0.5.tgz#290cbb232e306942d7d7ea9b83732ab7856f8285" integrity sha1-KQy7Iy4waULX1+qbg3Mqt4VvgoU= @@ -9834,6 +12532,13 @@ sha1@^1.1.1: charenc ">= 0.0.1" crypt ">= 0.0.1" +sha3@^2.1.1: + version "2.1.4" + resolved "https://registry.yarnpkg.com/sha3/-/sha3-2.1.4.tgz#000fac0fe7c2feac1f48a25e7a31b52a6492cc8f" + integrity sha512-S8cNxbyb0UGUM2VhRD4Poe5N58gJnJsLJ5vC7FYWGUmGhcsj4++WaIOBFVDxlG0W3To6xBuiRh+i0Qp2oNCOtg== + dependencies: + buffer "6.0.3" + shallowequal@^1.0.2: version "1.1.0" resolved "https://registry.yarnpkg.com/shallowequal/-/shallowequal-1.1.0.tgz#188d521de95b9087404fd4dcb68b13df0ae4e7f8" @@ -9865,6 +12570,13 @@ signal-exit@^3.0.0, signal-exit@^3.0.2: resolved "https://registry.yarnpkg.com/signal-exit/-/signal-exit-3.0.2.tgz#b5fdc08f1287ea1178628e415e25132b73646c6d" integrity sha1-tf3AjxKH6hF4Yo5BXiUTK3NkbG0= +signed-varint@^2.0.1: + version "2.0.1" + resolved "https://registry.yarnpkg.com/signed-varint/-/signed-varint-2.0.1.tgz#50a9989da7c98c2c61dad119bc97470ef8528129" + integrity sha1-UKmYnafJjCxh2tEZvJdHDvhSgSk= + dependencies: + varint "~5.0.0" + signedsource@^1.0.0: version "1.0.0" resolved "https://registry.yarnpkg.com/signedsource/-/signedsource-1.0.0.tgz#1ddace4981798f93bd833973803d80d52e93ad6a" @@ -9947,7 +12659,7 @@ socketcluster-client@^14.2.1: uuid "3.2.1" ws "7.1.0" -sol-merger@1.1.1, sol-merger@2.0.1: +sol-merger@1.1.1: version "1.1.1" resolved "https://registry.yarnpkg.com/sol-merger/-/sol-merger-1.1.1.tgz#5ba48dd0e21982af3855daa7a4a1719ef6b6564d" integrity sha512-Wm0sFXauDzJmZgxZ3a3ATfRf8OvBIt1Q+lqJw/UO5aqRbXKnBCt7TzSSLvSWl91uqub4MUubFzq6Bk/tRKnO2Q== @@ -9959,7 +12671,7 @@ sol-merger@1.1.1, sol-merger@2.0.1: glob "^7.1.2" strip-json-comments "^3.0.1" -solc@0.5.17, solc@^0.5.17: +solc@0.5.17, solc@^0.4.20, solc@^0.5.17: version "0.5.17" resolved "https://registry.yarnpkg.com/solc/-/solc-0.5.17.tgz#8a76c50e98d49ca7610cca2fdc78ff3016540c67" integrity sha512-qpX+PGaU0Q3c6lh2vDzMoIbhv6bIrecI4bYsx+xUs01xsGFnY6Nr0L8y/QMyutTnrHN6Lb/Yl672ZVRqxka96w== @@ -9973,17 +12685,23 @@ solc@0.5.17, solc@^0.5.17: semver "^5.5.0" tmp "0.0.33" -solidity-coverage@^0.7.2: - version "0.7.2" - resolved "https://registry.yarnpkg.com/solidity-coverage/-/solidity-coverage-0.7.2.tgz#b8b3ade3f03e9d71940bc84fb319ba7706e35a64" - integrity sha512-LizgpcrkMRmZdvOmwYN7l/h9ak0Yq/5BuXjEaH0Phds1Gu5hZfHGyvplgWYDFmzLwGB7hZ6d0/IdkdYm4HK0mg== +solidity-comments-extractor@^0.0.7: + version "0.0.7" + resolved "https://registry.yarnpkg.com/solidity-comments-extractor/-/solidity-comments-extractor-0.0.7.tgz#99d8f1361438f84019795d928b931f4e5c39ca19" + integrity sha512-wciNMLg/Irp8OKGrh3S2tfvZiZ0NEyILfcRCXCD4mp7SgK/i9gzLfhY2hY7VMCQJ3kH9UB9BzNdibIVMchzyYw== + +solidity-coverage@^0.7.16: + version "0.7.16" + resolved "https://registry.yarnpkg.com/solidity-coverage/-/solidity-coverage-0.7.16.tgz#c8c8c46baa361e2817bbf275116ddd2ec90a55fb" + integrity sha512-ttBOStywE6ZOTJmmABSg4b8pwwZfYKG8zxu40Nz+sRF5bQX7JULXWj/XbX0KXps3Fsp8CJXg8P29rH3W54ipxw== dependencies: - "@truffle/provider" "^0.1.17" + "@solidity-parser/parser" "^0.12.0" + "@truffle/provider" "^0.2.24" chalk "^2.4.2" death "^1.1.0" detect-port "^1.3.0" fs-extra "^8.1.0" - ganache-cli "6.9.0" + ganache-cli "^6.11.0" ghost-testrpc "^0.0.2" global-modules "^2.0.0" globby "^10.0.1" @@ -9993,19 +12711,19 @@ solidity-coverage@^0.7.2: pify "^4.0.1" recursive-readdir "^2.2.2" sc-istanbul "^0.4.5" + semver "^7.3.4" shelljs "^0.8.3" - solidity-parser-diligence "^0.4.16" - web3 "1.2.6" + web3-utils "^1.3.0" solidity-parser-antlr@^0.4.11: version "0.4.11" resolved "https://registry.yarnpkg.com/solidity-parser-antlr/-/solidity-parser-antlr-0.4.11.tgz#af43e1f13b3b88309a875455f5d6e565b05ee5f1" integrity sha512-4jtxasNGmyC0midtjH/lTFPZYvTTUMy6agYcF+HoMnzW8+cqo3piFrINb4ZCzpPW+7tTVFCGa5ubP34zOzeuMg== -solidity-parser-diligence@^0.4.16, solidity-parser-diligence@^0.4.17: - version "0.4.18" - resolved "https://registry.yarnpkg.com/solidity-parser-diligence/-/solidity-parser-diligence-0.4.18.tgz#1ec8c29d320afe048db941828f142dec3e97f657" - integrity sha512-mauO/qG2v59W9sOn5TYV2dS7+fvFKqIHwiku+TH82e1Yca4H8s6EDG12ZpXO2cmgLlCKX3FOqqC73aYLB8WwNg== +source-list-map@^2.0.0: + version "2.0.1" + resolved "https://registry.yarnpkg.com/source-list-map/-/source-list-map-2.0.1.tgz#3993bd873bfc48479cca9ea3a547835c7c154b34" + integrity sha512-qnQ7gVMxGNxsiL4lEuJwe/To8UnK7fAnmbGEEH8RpLouuKbeEm0lhbQVFIrNSuB+G7tVrAlVsZgETT5nljf+Iw== source-map-resolve@^0.5.0, source-map-resolve@^0.5.2: version "0.5.3" @@ -10034,20 +12752,12 @@ source-map-support@^0.5.19, source-map-support@^0.5.3: buffer-from "^1.0.0" source-map "^0.6.0" -source-map-support@^0.5.6: - version "0.5.16" - resolved "https://registry.yarnpkg.com/source-map-support/-/source-map-support-0.5.16.tgz#0ae069e7fe3ba7538c64c98515e35339eac5a042" - integrity sha512-efyLRJDr68D9hBBNIPWFjhpFzURh+KJykQwvMyW5UiZzYwoF6l4YMMDIJJEyFWxWCqfyxLzz6tSfUFR+kXXsVQ== - dependencies: - buffer-from "^1.0.0" - source-map "^0.6.0" - source-map-url@^0.4.0: version "0.4.0" resolved "https://registry.yarnpkg.com/source-map-url/-/source-map-url-0.4.0.tgz#3e935d7ddd73631b97659956d55128e87b5084a3" integrity sha1-PpNdfd1zYxuXZZlW1VEo6HtQhKM= -source-map@^0.5.0, source-map@^0.5.6, source-map@^0.5.7: +source-map@^0.5.0, source-map@^0.5.3, source-map@^0.5.6, source-map@^0.5.7, source-map@~0.5.1: version "0.5.7" resolved "https://registry.yarnpkg.com/source-map/-/source-map-0.5.7.tgz#8a039d2d1021d22d1ea14c80d8ea468ba2ef3fcc" integrity sha1-igOdLRAh0i0eoUyA2OpGi6LvP8w= @@ -10109,6 +12819,15 @@ spinnies@^0.4.2: cli-cursor "^3.0.0" strip-ansi "^5.2.0" +spinnies@^0.5.1: + version "0.5.1" + resolved "https://registry.yarnpkg.com/spinnies/-/spinnies-0.5.1.tgz#6ac88455d9117c7712d52898a02c969811819a7e" + integrity sha512-WpjSXv9NQz0nU3yCT9TFEOfpFrXADY9C5fG6eAJqixLhvTX1jP3w92Y8IE5oafIe42nlF9otjhllnXN/QCaB3A== + dependencies: + chalk "^2.4.2" + cli-cursor "^3.0.0" + strip-ansi "^5.2.0" + split-string@^3.0.1, split-string@^3.0.2: version "3.1.0" resolved "https://registry.yarnpkg.com/split-string/-/split-string-3.1.0.tgz#7cb09dda3a86585705c64b39a6466038682e8fe2" @@ -10149,6 +12868,11 @@ sshpk@^1.7.0: safer-buffer "^2.0.2" tweetnacl "~0.14.0" +stable@^0.1.8: + version "0.1.8" + resolved "https://registry.yarnpkg.com/stable/-/stable-0.1.8.tgz#836eb3c8382fe2936feaf544631017ce7d47a3cf" + integrity sha512-ji9qxRnOVfcuLDySj9qzhGSEFVobyt1kIOSkj1qZzYLzq7Tos/oUUWvotUPQLlrsidqsK6tBH89Bc9kL5zHA6w== + static-extend@^0.1.1: version "0.1.2" resolved "https://registry.yarnpkg.com/static-extend/-/static-extend-0.1.2.tgz#60809c39cbff55337226fd5e0b520f341f1fb5c6" @@ -10172,11 +12896,37 @@ stoppable@^1.1.0: resolved "https://registry.yarnpkg.com/stoppable/-/stoppable-1.1.0.tgz#32da568e83ea488b08e4d7ea2c3bcc9d75015d5b" integrity sha512-KXDYZ9dszj6bzvnEMRYvxgeTHU74QBFL54XKtP3nyMuJ81CFYtABZ3bAzL2EdFUaEwJOBOgENyFj3R7oTzDyyw== +stream-browserify@^2.0.1: + version "2.0.2" + resolved "https://registry.yarnpkg.com/stream-browserify/-/stream-browserify-2.0.2.tgz#87521d38a44aa7ee91ce1cd2a47df0cb49dd660b" + integrity sha512-nX6hmklHs/gr2FuxYDltq8fJA1GDlxKQCz8O/IM4atRqBH8OORmBNgfvW5gG10GT/qQ9u0CzIvr2X5Pkt6ntqg== + dependencies: + inherits "~2.0.1" + readable-stream "^2.0.2" + +stream-http@^2.7.2: + version "2.8.3" + resolved "https://registry.yarnpkg.com/stream-http/-/stream-http-2.8.3.tgz#b2d242469288a5a27ec4fe8933acf623de6514fc" + integrity sha512-+TSkfINHDo4J+ZobQLWiMouQYB+UVYFttRA94FpEzzJ7ZdqcL4uUUQ7WkdkI4DSozGmgBUE/a47L+38PenXhUw== + dependencies: + builtin-status-codes "^3.0.0" + inherits "^2.0.1" + readable-stream "^2.3.6" + to-arraybuffer "^1.0.0" + xtend "^4.0.0" + stream-shift@^1.0.0: version "1.0.1" resolved "https://registry.yarnpkg.com/stream-shift/-/stream-shift-1.0.1.tgz#d7088281559ab2778424279b0877da3c392d5a3d" integrity sha512-AiisoFqQ0vbGcZgQPY1cdP2I76glaVA/RauYR4G4thNFgkTqr90yXTo4LYX60Jl+sIlPNHHdGSwo01AvbKUSVQ== +stream-to-it@^0.2.0, stream-to-it@^0.2.2: + version "0.2.4" + resolved "https://registry.yarnpkg.com/stream-to-it/-/stream-to-it-0.2.4.tgz#d2fd7bfbd4a899b4c0d6a7e6a533723af5749bd0" + integrity sha512-4vEbkSs83OahpmBybNJXlJd7d6/RxzkkSdT3I0mnGt79Xd2Kk+e1JqbvAvsQfCeKj3aKb0QIWkyK3/n0j506vQ== + dependencies: + get-iterator "^1.0.2" + streamsearch@0.1.2: version "0.1.2" resolved "https://registry.yarnpkg.com/streamsearch/-/streamsearch-0.1.2.tgz#808b9d0e56fc273d809ba57338e929919a1a9f1a" @@ -10196,7 +12946,7 @@ string-width@^1.0.1: is-fullwidth-code-point "^1.0.0" strip-ansi "^3.0.0" -"string-width@^1.0.2 || 2", string-width@^2.1.1: +"string-width@^1.0.2 || 2", string-width@^2.0.0, string-width@^2.1.1: version "2.1.1" resolved "https://registry.yarnpkg.com/string-width/-/string-width-2.1.1.tgz#ab93f27a8dc13d28cac815c462143a6d9012ae9e" integrity sha512-nOqH59deCq9SRHlxq1Aw85Jnt4w6KvLKqWVik6oA9ZklXLNIOlqg4F2yrT1MVaTjAqvVwdfeZ7w7aCvJD7ugkw== @@ -10213,7 +12963,7 @@ string-width@^3.0.0, string-width@^3.1.0: is-fullwidth-code-point "^2.0.0" strip-ansi "^5.1.0" -string-width@^4.1.0, string-width@^4.2.0: +string-width@^4.1.0, string-width@^4.2.0, string-width@^4.2.2: version "4.2.2" resolved "https://registry.yarnpkg.com/string-width/-/string-width-4.2.2.tgz#dafd4f9559a7585cfba529c6a0a4f73488ebd4c5" integrity sha512-XBJbT3N4JhVumXE0eoLU9DCjcaF92KLNqTmFCnG1pf8duUxFGwtP6AD6nkjw9a3IdiRtL3E2w3JDiE/xi3vOeA== @@ -10238,7 +12988,7 @@ string.prototype.trimstart@^1.0.4: call-bind "^1.0.2" define-properties "^1.1.3" -string_decoder@^1.1.1: +string_decoder@^1.0.0, string_decoder@^1.1.1: version "1.3.0" resolved "https://registry.yarnpkg.com/string_decoder/-/string_decoder-1.3.0.tgz#42f114594a46cf1a8e30b0a84f56c78c3edac21e" integrity sha512-hkRX8U1WjJFd8LsDJ2yQ/wWWxaopEsABU1XfkM8A+j0+85JAGppt16cr1Whg6KIbb4okU6Mql6BOj+uup/wKeA== @@ -10305,6 +13055,11 @@ strip-bom@2.X, strip-bom@^2.0.0: dependencies: is-utf8 "^0.2.0" +strip-bom@^3.0.0: + version "3.0.0" + resolved "https://registry.yarnpkg.com/strip-bom/-/strip-bom-3.0.0.tgz#2334c18e9c759f7bdd56fdef7e9ae3d588e68ed3" + integrity sha1-IzTBjpx1n3vdVv3vfprj1YjmjtM= + strip-dirs@^2.0.0: version "2.1.0" resolved "https://registry.yarnpkg.com/strip-dirs/-/strip-dirs-2.1.0.tgz#4987736264fc344cf20f6c34aca9d13d1d4ed6c5" @@ -10324,16 +13079,21 @@ strip-hex-prefix@1.0.0: dependencies: is-hex-prefixed "1.0.0" -strip-json-comments@3.0.1, strip-json-comments@^3.0.1: - version "3.0.1" - resolved "https://registry.yarnpkg.com/strip-json-comments/-/strip-json-comments-3.0.1.tgz#85713975a91fb87bf1b305cca77395e40d2a64a7" - integrity sha512-VTyMAUfdm047mwKl+u79WIdrZxtFtn+nBxHeb844XBQ9uMNTuTHdx2hc5RiAJYqwTj3wc/xe5HLSdJSkJ+WfZw== +strip-indent@^2.0.0: + version "2.0.0" + resolved "https://registry.yarnpkg.com/strip-indent/-/strip-indent-2.0.0.tgz#5ef8db295d01e6ed6cbf7aab96998d7822527b68" + integrity sha1-XvjbKV0B5u1sv3qrlpmNeCJSe2g= -strip-json-comments@~2.0.1: +strip-json-comments@2.0.1, strip-json-comments@~2.0.1: version "2.0.1" resolved "https://registry.yarnpkg.com/strip-json-comments/-/strip-json-comments-2.0.1.tgz#3c531942e908c2697c0ec344858c286c7ca0a60a" integrity sha1-PFMZQukIwml8DsNEhYwobHygpgo= +strip-json-comments@3.0.1, strip-json-comments@^3.0.1: + version "3.0.1" + resolved "https://registry.yarnpkg.com/strip-json-comments/-/strip-json-comments-3.0.1.tgz#85713975a91fb87bf1b305cca77395e40d2a64a7" + integrity sha512-VTyMAUfdm047mwKl+u79WIdrZxtFtn+nBxHeb844XBQ9uMNTuTHdx2hc5RiAJYqwTj3wc/xe5HLSdJSkJ+WfZw== + sublevel-pouchdb@7.2.2: version "7.2.2" resolved "https://registry.yarnpkg.com/sublevel-pouchdb/-/sublevel-pouchdb-7.2.2.tgz#49e46cd37883bf7ff5006d7c5b9bcc7bcc1f422f" @@ -10355,10 +13115,15 @@ subscriptions-transport-ws@^0.9.11, subscriptions-transport-ws@^0.9.16: symbol-observable "^1.0.4" ws "^5.2.0" -supports-color@5.4.0: - version "5.4.0" - resolved "https://registry.yarnpkg.com/supports-color/-/supports-color-5.4.0.tgz#1c6b337402c2137605efe19f10fec390f6faab54" - integrity sha512-zjaXglF5nnWpsq470jSv6P9DwPvgLkuapYmfDm3JWOm0vkNTVF2tI4UrN2r6jH1qM/uc/WtxYY1hYoA2dOKj5w== +super-split@^1.1.0: + version "1.1.0" + resolved "https://registry.yarnpkg.com/super-split/-/super-split-1.1.0.tgz#43b3ba719155f4d43891a32729d59b213d9155fc" + integrity sha512-I4bA5mgcb6Fw5UJ+EkpzqXfiuvVGS/7MuND+oBxNFmxu3ugLNrdIatzBLfhFRMVMLxgSsRy+TjIktgkF9RFSNQ== + +supports-color@6.0.0: + version "6.0.0" + resolved "https://registry.yarnpkg.com/supports-color/-/supports-color-6.0.0.tgz#76cfe742cf1f41bb9b1c29ad03068c05b4c0e40a" + integrity sha512-on9Kwidc1IUQo+bQdhi8+Tijpo0e1SS6RoGo2guUwn5vdaxw8RXOF9Vb2ws+ihWOmh4JnCJOvaziZWP1VABaLg== dependencies: has-flag "^3.0.0" @@ -10381,6 +13146,13 @@ supports-color@^3.1.0: dependencies: has-flag "^1.0.0" +supports-color@^4.2.1: + version "4.5.0" + resolved "https://registry.yarnpkg.com/supports-color/-/supports-color-4.5.0.tgz#be7a0de484dec5c5cddf8b3d59125044912f635b" + integrity sha1-vnoN5ITexcXN34s9WRJQRJEvY1s= + dependencies: + has-flag "^2.0.0" + supports-color@^5.3.0: version "5.5.0" resolved "https://registry.yarnpkg.com/supports-color/-/supports-color-5.5.0.tgz#e2e69a44ac8772f78a1ec0b35b689df6530efc8f" @@ -10487,6 +13259,11 @@ taffydb@2.7.3: resolved "https://registry.yarnpkg.com/taffydb/-/taffydb-2.7.3.tgz#2ad37169629498fca5bc84243096d3cde0ec3a34" integrity sha1-KtNxaWKUmPylvIQkMJbTzeDsOjQ= +tapable@^0.2.7: + version "0.2.9" + resolved "https://registry.yarnpkg.com/tapable/-/tapable-0.2.9.tgz#af2d8bbc9b04f74ee17af2b4d9048f807acd18a8" + integrity sha512-2wsvQ+4GwBvLPLWsNfLCDYGsW6xb7aeC6utq2Qh0PFwgEy7K7dsma9Jsmb2zSQj7GvYAyUGSntLtsv++GmgL1A== + tar-stream@^1.5.2: version "1.6.2" resolved "https://registry.yarnpkg.com/tar-stream/-/tar-stream-1.6.2.tgz#8ea55dab37972253d9a9af90fdcd559ae435c555" @@ -10521,6 +13298,11 @@ test-value@^2.1.0: array-back "^1.0.3" typical "^2.6.0" +testrpc@0.0.1: + version "0.0.1" + resolved "https://registry.yarnpkg.com/testrpc/-/testrpc-0.0.1.tgz#83e2195b1f5873aec7be1af8cbe6dcf39edb7aed" + integrity sha512-afH1hO+SQ/VPlmaLUFj2636QMeDvPCeQMc/9RBMW0IfjNe9gFD9Ra3ShqYkB7py0do1ZcCna/9acHyzTJ+GcNA== + then-request@^6.0.0: version "6.0.2" resolved "https://registry.yarnpkg.com/then-request/-/then-request-6.0.2.tgz#ec18dd8b5ca43aaee5cb92f7e4c1630e950d4f0c" @@ -10602,6 +13384,21 @@ timed-out@^4.0.0, timed-out@^4.0.1: resolved "https://registry.yarnpkg.com/timed-out/-/timed-out-4.0.1.tgz#f32eacac5a175bea25d7fab565ab3ed8741ef56f" integrity sha1-8y6srFoXW+ol1/q1Zas+2HQe9W8= +timeout-abort-controller@^1.1.1: + version "1.1.1" + resolved "https://registry.yarnpkg.com/timeout-abort-controller/-/timeout-abort-controller-1.1.1.tgz#2c3c3c66f13c783237987673c276cbd7a9762f29" + integrity sha512-BsF9i3NAJag6T0ZEjki9j654zoafI2X6ayuNd6Tp8+Ul6Tr5s4jo973qFeiWrRSweqvskC+AHDKUmIW4b7pdhQ== + dependencies: + abort-controller "^3.0.0" + retimer "^2.0.0" + +timers-browserify@^2.0.4: + version "2.0.12" + resolved "https://registry.yarnpkg.com/timers-browserify/-/timers-browserify-2.0.12.tgz#44a45c11fbf407f34f97bccd1577c652361b00ee" + integrity sha512-9phl76Cqm6FhSX9Xe1ZUAMLtm1BLkKj2Qd5ApyWkXzsMRaA7dgr81kf4wJmQf/hAvg8EEyJxDo3du/0KlhPiKQ== + dependencies: + setimmediate "^1.0.4" + timers-ext@^0.1.5: version "0.1.7" resolved "https://registry.yarnpkg.com/timers-ext/-/timers-ext-0.1.7.tgz#6f57ad8578e07a3fb9f91d9387d65647555e25c6" @@ -10615,6 +13412,17 @@ tiny-queue@^0.2.1: resolved "https://registry.yarnpkg.com/tiny-queue/-/tiny-queue-0.2.1.tgz#25a67f2c6e253b2ca941977b5ef7442ef97a6046" integrity sha1-JaZ/LG4lOyypQZd7XvdELvl6YEY= +tiny-secp256k1@^1.1.3: + version "1.1.6" + resolved "https://registry.yarnpkg.com/tiny-secp256k1/-/tiny-secp256k1-1.1.6.tgz#7e224d2bee8ab8283f284e40e6b4acb74ffe047c" + integrity sha512-FmqJZGduTyvsr2cF3375fqGHUovSwDi/QytexX1Se4BPuPZpTE5Ftp5fg+EFSuEf3lhZqgCRjEG3ydUQ/aNiwA== + dependencies: + bindings "^1.3.0" + bn.js "^4.11.8" + create-hmac "^1.1.7" + elliptic "^6.4.0" + nan "^2.13.2" + title-case@^2.1.0: version "2.1.1" resolved "https://registry.yarnpkg.com/title-case/-/title-case-2.1.1.tgz#3e127216da58d2bc5becf137ab91dae3a7cd8faa" @@ -10637,11 +13445,21 @@ to-absolute-glob@^0.1.1: dependencies: extend-shallow "^2.0.1" +to-arraybuffer@^1.0.0: + version "1.0.1" + resolved "https://registry.yarnpkg.com/to-arraybuffer/-/to-arraybuffer-1.0.1.tgz#7d229b1fcc637e466ca081180836a7aabff83f43" + integrity sha1-fSKbH8xjfkZsoIEYCDanqr/4P0M= + to-buffer@^1.1.1: version "1.1.1" resolved "https://registry.yarnpkg.com/to-buffer/-/to-buffer-1.1.1.tgz#493bd48f62d7c43fcded313a03dcadb2e1213a80" integrity sha512-lx9B5iv7msuFYE3dytT+KE5tap+rNYw+K4jVkb9R/asAb+pbBSM17jtunHplhBe6RRJdZx3Pn2Jph24O32mOVg== +to-data-view@^1.1.0: + version "1.1.0" + resolved "https://registry.yarnpkg.com/to-data-view/-/to-data-view-1.1.0.tgz#08d6492b0b8deb9b29bdf1f61c23eadfa8994d00" + integrity sha512-1eAdufMg6mwgmlojAx3QeMnzB/BTVp7Tbndi3U7ftcT2zCZadjxkkmLmd97zmaxWi+sgGcgWrokmpEoy0Dn0vQ== + to-fast-properties@^1.0.3: version "1.0.3" resolved "https://registry.yarnpkg.com/to-fast-properties/-/to-fast-properties-1.0.3.tgz#b83571fa4d8c25b82e231b06e3a3055de4ca1a47" @@ -10652,6 +13470,18 @@ to-fast-properties@^2.0.0: resolved "https://registry.yarnpkg.com/to-fast-properties/-/to-fast-properties-2.0.0.tgz#dc5e698cbd079265bc73e0377681a4e4e83f616e" integrity sha1-3F5pjL0HkmW8c+A3doGk5Og/YW4= +to-json-schema@^0.2.5: + version "0.2.5" + resolved "https://registry.yarnpkg.com/to-json-schema/-/to-json-schema-0.2.5.tgz#ef3c3f11ad64460dcfbdbafd0fd525d69d62a98f" + integrity sha512-jP1ievOee8pec3tV9ncxLSS48Bnw7DIybgy112rhMCEhf3K4uyVNZZHr03iQQBzbV5v5Hos+dlZRRyk6YSMNDw== + dependencies: + lodash.isequal "^4.5.0" + lodash.keys "^4.2.0" + lodash.merge "^4.6.2" + lodash.omit "^4.5.0" + lodash.without "^4.4.0" + lodash.xor "^4.5.0" + to-object-path@^0.3.0: version "0.3.0" resolved "https://registry.yarnpkg.com/to-object-path/-/to-object-path-0.3.0.tgz#297588b7b0e7e0ac08e04e672f85c1f4999e17af" @@ -10742,16 +13572,15 @@ truffle-hdwallet-provider@^1.0.17: web3 "1.2.1" websocket "^1.0.28" -truffle-plugin-verify@0.3.9: - version "0.3.9" - resolved "https://registry.yarnpkg.com/truffle-plugin-verify/-/truffle-plugin-verify-0.3.9.tgz#48eb7dbcb76b86e47936992cbe2f6af48cc6a797" - integrity sha512-eC6X1vWfE0TwuwHdFLZkddn4qyH7XbLm5hSaGR4Izpqd5Ostr1nGkFmAuJ8YaECV+QuMv7JipajBq6tLa35YTQ== +truffle-plugin-verify@0.5.11: + version "0.5.11" + resolved "https://registry.yarnpkg.com/truffle-plugin-verify/-/truffle-plugin-verify-0.5.11.tgz#f89db1870c1a86bbca913f3dc476aef310ad452d" + integrity sha512-IL8DDsA3YCUQcrRXtarTEXoZJeb2Rlj8jwNjdiWWyDZ7r/EQZndJooorWo19qDpZf9s8ydpvTE/Bb/uyna6Zag== dependencies: - axios "0.19.2" - cli-logger "0.5.40" - delay "4.3.0" - querystring "0.2.0" - sol-merger "2.0.1" + axios "^0.21.1" + cli-logger "^0.5.40" + delay "^5.0.0" + querystring "^0.2.1" truffle-typings@^1.0.8: version "1.0.8" @@ -10762,37 +13591,27 @@ truffle-typings@^1.0.8: "@types/mocha" "^5.2.5" "@types/web3" "^1.0.18" -truffle@^5.2.4: - version "5.2.4" - resolved "https://registry.yarnpkg.com/truffle/-/truffle-5.2.4.tgz#3012c50ab32afd87a65dd06aeb73981b88d33dc8" - integrity sha512-vgBsAb9VA3T6ngBCwn6OMf2oJwKnoZT5T1a2GRsjfZXuD7OtwY9GmZwHti4MFxuF/oHVjSqhnp2e5mIeJctk7w== +truffle@^5.4.7: + version "5.4.7" + resolved "https://registry.yarnpkg.com/truffle/-/truffle-5.4.7.tgz#401f0a32c974bfcd330f76f6d7cf76abb5288405" + integrity sha512-cNbCPBDjmeg6r+OS4ilJ59TVtu+sNfBN2C+EQbZwBdjKwzv0i1kWk6+CIdka8KTkyKhK9JviitmqA//ILu9uNw== dependencies: - "@truffle/debugger" "^8.0.18" + "@truffle/db-loader" "^0.0.6" + "@truffle/debugger" "^9.1.12" app-module-path "^2.2.0" mocha "8.1.2" original-require "^1.0.1" optionalDependencies: - "@truffle/db" "^0.5.4" + "@truffle/db" "^0.5.27" + "@truffle/preserve-fs" "^0.2.4" + "@truffle/preserve-to-buckets" "^0.2.4" + "@truffle/preserve-to-filecoin" "^0.2.4" + "@truffle/preserve-to-ipfs" "^0.2.4" -ts-essentials@^1.0.0: - version "1.0.4" - resolved "https://registry.yarnpkg.com/ts-essentials/-/ts-essentials-1.0.4.tgz#ce3b5dade5f5d97cf69889c11bf7d2da8555b15a" - integrity sha512-q3N1xS4vZpRouhYHDPwO0bDW3EZ6SK9CrrDHxi/D6BPReSjpVgWIOpLS2o0gSBZm+7q/wyKp6RVM1AeeW7uyfQ== - -ts-generator@^0.0.8: - version "0.0.8" - resolved "https://registry.yarnpkg.com/ts-generator/-/ts-generator-0.0.8.tgz#7bd48ca064db026d9520bcb682b69efc20971d6a" - integrity sha512-Gi+aZCELpVL7Mqb+GuMgM+n8JZ/arZZib1iD/R9Ok8JDjOCOCrqS9b1lr72ku7J45WeDCFZxyJoRsiQvhokCnw== - dependencies: - "@types/mkdirp" "^0.5.2" - "@types/prettier" "^1.13.2" - "@types/resolve" "^0.0.8" - chalk "^2.4.1" - glob "^7.1.2" - mkdirp "^0.5.1" - prettier "^1.14.2" - resolve "^1.8.1" - ts-essentials "^1.0.0" +ts-essentials@^7.0.1: + version "7.0.3" + resolved "https://registry.yarnpkg.com/ts-essentials/-/ts-essentials-7.0.3.tgz#686fd155a02133eedcc5362dc8b5056cde3e5a38" + integrity sha512-8+gr5+lqO3G84KdiTSMRLtuyJ+nTBVRKuCrK4lidMPdVeEp0uqC875uE5NMcaA7YYMN7XsNiFQuMvasF8HT/xQ== ts-invariant@^0.4.0: version "0.4.4" @@ -10810,15 +13629,22 @@ ts-invariant@^0.6.0: "@ungap/global-this" "^0.4.2" tslib "^1.9.3" -ts-node@^8.6.2: - version "8.6.2" - resolved "https://registry.yarnpkg.com/ts-node/-/ts-node-8.6.2.tgz#7419a01391a818fbafa6f826a33c1a13e9464e35" - integrity sha512-4mZEbofxGqLL2RImpe3zMJukvEvcO1XP8bj8ozBPySdCUXEcU5cIRwR0aM3R+VoZq7iXc8N86NC0FspGRqP4gg== - dependencies: +ts-node@^10.2.1: + version "10.2.1" + resolved "https://registry.yarnpkg.com/ts-node/-/ts-node-10.2.1.tgz#4cc93bea0a7aba2179497e65bb08ddfc198b3ab5" + integrity sha512-hCnyOyuGmD5wHleOQX6NIjJtYVIO8bPP8F2acWkB4W06wdlkgyvJtubO/I9NkI88hCFECbsEgoLc0VNkYmcSfw== + dependencies: + "@cspotcode/source-map-support" "0.6.1" + "@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" - source-map-support "^0.5.6" yn "3.1.1" tslib@^1.10.0, tslib@^1.8.1, tslib@^1.9.0: @@ -10826,7 +13652,7 @@ tslib@^1.10.0, tslib@^1.8.1, tslib@^1.9.0: resolved "https://registry.yarnpkg.com/tslib/-/tslib-1.10.0.tgz#c3c19f95973fb0a62973fb09d90d961ee43e5c8a" integrity sha512-qOebF53frne81cf0S9B41ByenJ3/IuH8yJKngAX35CmiZySA0khhkovshKK+jGCaMnVomla7gVlIcc3EvKPbTQ== -tslib@^1.14.1, tslib@^1.9.3: +tslib@^1.13.0, tslib@^1.14.1, tslib@^1.9.3: version "1.14.1" resolved "https://registry.yarnpkg.com/tslib/-/tslib-1.14.1.tgz#cf2d38bdc34a134bcaf1091c41f6619e2f672d00" integrity sha512-Xni35NKzjgMrwevysHTCArtLDpPvye8zV/0E4EyYn43P7/7qvQwPh9BGkHewbMulVntbigmcT7rdX3BNo9wRJg== @@ -10836,15 +13662,20 @@ tslib@^2.0.3, tslib@~2.1.0: resolved "https://registry.yarnpkg.com/tslib/-/tslib-2.1.0.tgz#da60860f1c2ecaa5703ab7d39bc05b6bf988b97a" integrity sha512-hcVC3wYEziELGGmEEXue7D75zbwIIVUMWAVbHItGPx0ziyXxrOMQx4rQEVEV45Ut/1IotuEvwqPopzIOkDMf0A== +tslib@^2.2.0: + version "2.3.1" + resolved "https://registry.yarnpkg.com/tslib/-/tslib-2.3.1.tgz#e8a335add5ceae51aa261d32a490158ef042ef01" + integrity sha512-77EbyPPpMz+FRFRuAFlWMtmgUWGe9UOG2Z25NqCwiIjRhOf5iKGuzSe5P2w1laq+FkRy4p+PCuVkJSGkzTEKVw== + tslib@~2.0.1: version "2.0.3" resolved "https://registry.yarnpkg.com/tslib/-/tslib-2.0.3.tgz#8e0741ac45fc0c226e58a17bfc3e64b9bc6ca61c" integrity sha512-uZtkfKblCEQtZKBF6EBXVZeQNl82yqtDQdv+eck8u7tdPxjLu2/lp5/uPW+um2tpuxINHWy3GhiccY7QgEaVHQ== -tslint@^6.1.0: - version "6.1.0" - resolved "https://registry.yarnpkg.com/tslint/-/tslint-6.1.0.tgz#c6c611b8ba0eed1549bf5a59ba05a7732133d851" - integrity sha512-fXjYd/61vU6da04E505OZQGb2VCN2Mq3doeWcOIryuG+eqdmFUXTYVwdhnbEu2k46LNLgUYt9bI5icQze/j0bQ== +tslint@^6.1.3: + version "6.1.3" + resolved "https://registry.yarnpkg.com/tslint/-/tslint-6.1.3.tgz#5c23b2eccc32487d5523bd3a470e9aa31789d904" + integrity sha512-IbR4nkT96EQOvKE2PW/djGz8iGNeJ4rF2mBfiYaR/nvUWYKJhLwimoJKgjIFEIDibBtOevj7BqCRL4oHeWWUCg== dependencies: "@babel/code-frame" "^7.0.0" builtin-modules "^1.1.1" @@ -10854,10 +13685,10 @@ tslint@^6.1.0: glob "^7.1.1" js-yaml "^3.13.1" minimatch "^3.0.4" - mkdirp "^0.5.1" + mkdirp "^0.5.3" resolve "^1.3.2" semver "^5.3.0" - tslib "^1.10.0" + tslib "^1.13.0" tsutils "^2.29.0" tsort@0.0.1: @@ -10872,6 +13703,11 @@ tsutils@^2.29.0: dependencies: tslib "^1.8.1" +tty-browserify@0.0.0: + version "0.0.0" + resolved "https://registry.yarnpkg.com/tty-browserify/-/tty-browserify-0.0.0.tgz#a157ba402da24e9bf957f9aa69d524eed42901a6" + integrity sha1-oVe6QC2iTpv5V/mqadUk7tQpAaY= + tunnel-agent@^0.6.0: version "0.6.0" resolved "https://registry.yarnpkg.com/tunnel-agent/-/tunnel-agent-0.6.0.tgz#27a5dea06b36b04a0a9966774b290868f0fc40fd" @@ -10879,6 +13715,16 @@ tunnel-agent@^0.6.0: dependencies: safe-buffer "^5.0.1" +tweetnacl-util@^0.15.1: + version "0.15.1" + resolved "https://registry.yarnpkg.com/tweetnacl-util/-/tweetnacl-util-0.15.1.tgz#b80fcdb5c97bcc508be18c44a4be50f022eea00b" + integrity sha512-RKJBIj8lySrShN4w6i/BonWp2Z/uxwC3h4y7xsRrpP59ZboCd0GpEVsOnMDYLMmKBpYhb5TgHzZXy7wTfYFBRw== + +tweetnacl@1.x.x, tweetnacl@^1.0.0, tweetnacl@^1.0.3: + version "1.0.3" + resolved "https://registry.yarnpkg.com/tweetnacl/-/tweetnacl-1.0.3.tgz#ac0af71680458d8a6378d0d0d050ab1407d35596" + integrity sha512-6rt+RN7aOi1nGMyC4Xa5DdYiukl2UWCbcJft7YhxReBGQD7OAM8Pbxw6YMo4r2diNEA8FEmu32YOn9rhaiE5yw== + tweetnacl@^0.14.3, tweetnacl@~0.14.0: version "0.14.5" resolved "https://registry.yarnpkg.com/tweetnacl/-/tweetnacl-0.14.5.tgz#5ae68177f192d4456269d108afa93ff8743f4f64" @@ -10891,6 +13737,11 @@ type-check@~0.3.2: dependencies: prelude-ls "~1.1.2" +type-detect@0.1.1: + version "0.1.1" + resolved "https://registry.yarnpkg.com/type-detect/-/type-detect-0.1.1.tgz#0ba5ec2a885640e470ea4e8505971900dac58822" + integrity sha1-C6XsKohWQORw6k6FBZcZANrFiCI= + type-detect@^4.0.0, type-detect@^4.0.5: version "4.0.8" resolved "https://registry.yarnpkg.com/type-detect/-/type-detect-4.0.8.tgz#7646fb5f18871cfbb7749e69bd39a6388eb7450c" @@ -10914,32 +13765,21 @@ type@^2.0.0: resolved "https://registry.yarnpkg.com/type/-/type-2.0.0.tgz#5f16ff6ef2eb44f260494dae271033b29c09a9c3" integrity sha512-KBt58xCHry4Cejnc2ISQAF7QY+ORngsWfxezO68+12hKV6lQY8P/psIkcbjeHWn7MqcgciWJyCCevFMJdIXpow== -typechain-target-truffle@^1.0.2: - version "1.0.2" - resolved "https://registry.yarnpkg.com/typechain-target-truffle/-/typechain-target-truffle-1.0.2.tgz#52ecbd8b7a854960567ad223660d60fcb42eaa17" - integrity sha512-XF3Iq2IzR+Pqvx6fcKIKGXNEk3lEcY24vYv9VqoVPfPB6vUM09PRLJCeLm1/ag6Pr2PICKUA0f4Es+YTR3ESKA== - dependencies: - lodash "^4.17.15" - -typechain-target-web3-v1@^1.0.4: - version "1.0.4" - resolved "https://registry.yarnpkg.com/typechain-target-web3-v1/-/typechain-target-web3-v1-1.0.4.tgz#0157359e534737c07fc62529d5d8570a2047a2da" - integrity sha512-jQ6eCfY7QorBq6kQDjSy5LMuImZGkp6IXR6FXZp7/ulITIxAfb6Dxh+yvh0NN/zboLnMPvvSJi6tHWCqlwfSDA== - dependencies: - lodash "^4.17.15" - web3 "^1.2.4" - -typechain@^1.0.5: - version "1.0.5" - resolved "https://registry.yarnpkg.com/typechain/-/typechain-1.0.5.tgz#797899d9dbce54a83b3aef04ce1727ddf07d2138" - integrity sha512-gbQmJXPKuYQ0p3tK+dMhpdQql/UPtSnkPQXw2QM/aqwCengI86z2vEM2e5rVQpmk/blFx1PYNdApSDxE12rR1Q== +typechain@^5.1.2: + version "5.1.2" + resolved "https://registry.yarnpkg.com/typechain/-/typechain-5.1.2.tgz#c8784d6155a8e69397ca47f438a3b4fb2aa939da" + integrity sha512-FuaCxJd7BD3ZAjVJoO+D6TnqKey3pQdsqOBsC83RKYWKli5BDhdf0TPkwfyjt20TUlZvOzJifz+lDwXsRkiSKA== dependencies: + "@types/prettier" "^2.1.1" command-line-args "^4.0.7" - debug "^3.0.1" + debug "^4.1.1" fs-extra "^7.0.0" + glob "^7.1.6" js-sha3 "^0.8.0" lodash "^4.17.15" - ts-generator "^0.0.8" + mkdirp "^1.0.4" + prettier "^2.1.2" + ts-essentials "^7.0.1" typedarray-to-buffer@^3.1.5, typedarray-to-buffer@~3.1.5: version "3.1.5" @@ -10953,6 +13793,11 @@ typedarray@^0.0.6, typedarray@~0.0.5: resolved "https://registry.yarnpkg.com/typedarray/-/typedarray-0.0.6.tgz#867ac74e3864187b1d3d47d996a78ec5c8830777" integrity sha1-hnrHTjhkGHsdPUfZlqeOxciDB3c= +typeforce@^1.11.5: + version "1.18.0" + resolved "https://registry.yarnpkg.com/typeforce/-/typeforce-1.18.0.tgz#d7416a2c5845e085034d70fcc5b6cc4a90edbfdc" + integrity sha512-7uc1O8h1M1g0rArakJdf0uLRSSgFcYexrVoKo+bzJd32gd4gDy2L/Z+8/FjPnU9ydY3pEnVPtr9FyscYY60K1g== + typescript-compare@^0.0.2: version "0.0.2" resolved "https://registry.yarnpkg.com/typescript-compare/-/typescript-compare-0.0.2.tgz#7ee40a400a406c2ea0a7e551efd3309021d5f425" @@ -10972,10 +13817,10 @@ typescript-tuple@^2.2.1: dependencies: typescript-compare "^0.0.2" -typescript@^3.8.3: - version "3.8.3" - resolved "https://registry.yarnpkg.com/typescript/-/typescript-3.8.3.tgz#409eb8544ea0335711205869ec458ab109ee1061" - integrity sha512-MYlEfn5VrLNsgudQTVJeNaQFUAI7DkhnOjdpAp4T+ku1TfQClewlbSuTVHiA+8skNBgaf02TL/kLOvig4y3G8w== +typescript@^4.3.5: + version "4.3.5" + resolved "https://registry.yarnpkg.com/typescript/-/typescript-4.3.5.tgz#4d1c37cc16e893973c45a06886b7113234f119f4" + integrity sha512-DqQgihaQ9cUrskJo9kIyW/+g0Vxsk8cDtZ52a3NGh0YNTfpUSArXSohyUGnvbPazEPLu398C0UxmKSOrPumUzA== typical@^2.6.0, typical@^2.6.1: version "2.6.1" @@ -10987,6 +13832,16 @@ ua-parser-js@^0.7.18: resolved "https://registry.yarnpkg.com/ua-parser-js/-/ua-parser-js-0.7.24.tgz#8d3ecea46ed4f1f1d63ec25f17d8568105dc027c" integrity sha512-yo+miGzQx5gakzVK3QFfN0/L9uVhosXBBO7qmnk7c2iw1IhL212wfA3zbnI54B0obGwC/5NWub/iT9sReMx+Fw== +uglify-js@^2.8.29: + version "2.8.29" + resolved "https://registry.yarnpkg.com/uglify-js/-/uglify-js-2.8.29.tgz#29c5733148057bb4e1f75df35b7a9cb72e6a59dd" + integrity sha1-KcVzMUgFe7Th913zW3qcty5qWd0= + dependencies: + source-map "~0.5.1" + yargs "~3.10.0" + optionalDependencies: + uglify-to-browserify "~1.0.0" + uglify-js@^3.1.4: version "3.8.0" resolved "https://registry.yarnpkg.com/uglify-js/-/uglify-js-3.8.0.tgz#f3541ae97b2f048d7e7e3aa4f39fd8a1f5d7a805" @@ -10995,6 +13850,42 @@ uglify-js@^3.1.4: commander "~2.20.3" source-map "~0.6.1" +uglify-to-browserify@~1.0.0: + version "1.0.2" + resolved "https://registry.yarnpkg.com/uglify-to-browserify/-/uglify-to-browserify-1.0.2.tgz#6e0924d6bda6b5afe349e39a6d632850a0f882b7" + integrity sha1-bgkk1r2mta/jSeOabWMoUKD4grc= + +uglifyjs-webpack-plugin@^0.4.6: + version "0.4.6" + resolved "https://registry.yarnpkg.com/uglifyjs-webpack-plugin/-/uglifyjs-webpack-plugin-0.4.6.tgz#b951f4abb6bd617e66f63eb891498e391763e309" + integrity sha1-uVH0q7a9YX5m9j64kUmOORdj4wk= + dependencies: + source-map "^0.5.6" + uglify-js "^2.8.29" + webpack-sources "^1.0.1" + +uint8arrays@1.1.0, uint8arrays@^1.0.0, uint8arrays@^1.1.0: + version "1.1.0" + resolved "https://registry.yarnpkg.com/uint8arrays/-/uint8arrays-1.1.0.tgz#d034aa65399a9fd213a1579e323f0b29f67d0ed2" + integrity sha512-cLdlZ6jnFczsKf5IH1gPHTtcHtPGho5r4CvctohmQjw8K7Q3gFdfIGHxSTdTaCKrL4w09SsPRJTqRS0drYeszA== + dependencies: + multibase "^3.0.0" + web-encoding "^1.0.2" + +uint8arrays@^2.0.5, uint8arrays@^2.1.3, uint8arrays@^2.1.5: + version "2.1.10" + resolved "https://registry.yarnpkg.com/uint8arrays/-/uint8arrays-2.1.10.tgz#34d023c843a327c676e48576295ca373c56e286a" + integrity sha512-Q9/hhJa2836nQfEJSZTmr+pg9+cDJS9XEAp7N2Vg5MzL3bK/mkMVfjscRGYruP9jNda6MAdf4QD/y78gSzkp6A== + dependencies: + multiformats "^9.4.2" + +uint8arrays@^3.0.0: + version "3.0.0" + resolved "https://registry.yarnpkg.com/uint8arrays/-/uint8arrays-3.0.0.tgz#260869efb8422418b6f04e3fac73a3908175c63b" + integrity sha512-HRCx0q6O9Bfbp+HHSfQQKD7wU70+lydKVt4EghkdOvlK/NlrF90z+eXV34mUd48rNvVJXwkrMSPpCATkct8fJA== + dependencies: + multiformats "^9.4.2" + ultron@~1.1.0: version "1.1.1" resolved "https://registry.yarnpkg.com/ultron/-/ultron-1.1.1.tgz#9fe1536a10a664a65266a1e3ccf85fd36302bc9c" @@ -11065,6 +13956,11 @@ unixify@1.0.0: dependencies: normalize-path "^2.1.1" +unorm@^1.4.1: + version "1.6.0" + resolved "https://registry.yarnpkg.com/unorm/-/unorm-1.6.0.tgz#029b289661fba714f1a9af439eb51d9b16c205af" + integrity sha512-b2/KCUlYZUeA7JFUuRJZPUtr4gZvBh7tavtv4fvk4+KV9pfGiR6CQAQAWl49ZpR3ts2dk4FYkP7EIgDJoiOLDA== + unpipe@1.0.0, unpipe@~1.0.0: version "1.0.0" resolved "https://registry.yarnpkg.com/unpipe/-/unpipe-1.0.0.tgz#b2bf4ee8514aae6165b4817829d21b2ef49904ec" @@ -11078,6 +13974,11 @@ unset-value@^1.0.0: has-value "^0.3.1" isobject "^3.0.0" +upath@^1.1.1: + version "1.2.0" + resolved "https://registry.yarnpkg.com/upath/-/upath-1.2.0.tgz#8f66dbcd55a883acdae4408af8b035a5044c1894" + integrity sha512-aZwGpamFO61g3OlfT7OQCHqhGnW43ieH9WZeP7QxN/G/jS4jfqUkZxoryvJgVPEcrl5NL/ggHsSmLMHuH64Lhg== + upper-case-first@^1.1.0, upper-case-first@^1.1.2: version "1.1.2" resolved "https://registry.yarnpkg.com/upper-case-first/-/upper-case-first-1.1.2.tgz#5d79bedcff14419518fd2edb0a0507c9b6859115" @@ -11142,6 +14043,22 @@ url-to-options@^1.0.1: resolved "https://registry.yarnpkg.com/url-to-options/-/url-to-options-1.0.1.tgz#1505a03a289a48cbd7a434efbaeec5055f5633a9" integrity sha1-FQWgOiiaSMvXpDTvuu7FBV9WM6k= +url@^0.11.0: + version "0.11.0" + resolved "https://registry.yarnpkg.com/url/-/url-0.11.0.tgz#3838e97cfc60521eb73c525a8e55bfdd9e2e28f1" + integrity sha1-ODjpfPxgUh63PFJajlW/3Z4uKPE= + dependencies: + punycode "1.3.2" + querystring "0.2.0" + +ursa-optional@^0.10.1: + version "0.10.2" + resolved "https://registry.yarnpkg.com/ursa-optional/-/ursa-optional-0.10.2.tgz#bd74e7d60289c22ac2a69a3c8dea5eb2817f9681" + integrity sha512-TKdwuLboBn7M34RcvVTuQyhvrA8gYKapuVdm0nBP0mnBc7oECOfUQZrY91cefL3/nm64ZyrejSRrhTVdX7NG/A== + dependencies: + bindings "^1.5.0" + nan "^2.14.2" + use@^3.1.0: version "3.1.1" resolved "https://registry.yarnpkg.com/use/-/use-3.1.1.tgz#d50c8cac79a19fbc20f2911f56eb973f4e10070f" @@ -11180,6 +14097,20 @@ util.promisify@^1.0.0: has-symbols "^1.0.1" object.getownpropertydescriptors "^2.1.1" +util@0.10.3: + version "0.10.3" + resolved "https://registry.yarnpkg.com/util/-/util-0.10.3.tgz#7afb1afe50805246489e3db7fe0ed379336ac0f9" + integrity sha1-evsa/lCAUkZInj23/g7TeTNqwPk= + dependencies: + inherits "2.0.1" + +util@^0.11.0: + version "0.11.1" + resolved "https://registry.yarnpkg.com/util/-/util-0.11.1.tgz#3236733720ec64bb27f6e26f421aaa2e1b588d61" + integrity sha512-HShAsny+zS2TZfaXxD9tYj4HQGlBezXZMZuM/S5PKLLoZkShZiGk9o5CzukI1LVHZvjdvZ2Sj1aW/Ndn2NB/HQ== + dependencies: + inherits "2.0.3" + util@^0.12.0: version "0.12.3" resolved "https://registry.yarnpkg.com/util/-/util-0.12.3.tgz#971bb0292d2cc0c892dab7c6a5d37c2bec707888" @@ -11192,6 +14123,18 @@ util@^0.12.0: safe-buffer "^5.1.2" which-typed-array "^1.1.2" +util@^0.12.3: + version "0.12.4" + resolved "https://registry.yarnpkg.com/util/-/util-0.12.4.tgz#66121a31420df8f01ca0c464be15dfa1d1850253" + integrity sha512-bxZ9qtSlGUWSOy9Qa9Xgk11kSslpuZwaxCg4sNIDj6FLucDab2JxnHwyNTCpHMtK1MjoQiWQ6DiUMZYbSrO+Sw== + dependencies: + inherits "^2.0.3" + is-arguments "^1.0.4" + is-generator-function "^1.0.7" + is-typed-array "^1.1.3" + safe-buffer "^5.1.2" + which-typed-array "^1.1.2" + utils-merge@1.0.1: version "1.0.1" resolved "https://registry.yarnpkg.com/utils-merge/-/utils-merge-1.0.1.tgz#9f95710f50a267947b2ccc124741c1028427e713" @@ -11217,7 +14160,7 @@ uuid@8.1.0: resolved "https://registry.yarnpkg.com/uuid/-/uuid-8.1.0.tgz#6f1536eb43249f473abc6bd58ff983da1ca30d8d" integrity sha512-CI18flHDznR0lq54xBycOVmphdCYnQLKn8abKn7PXUiKUGdEd+/l9LWNJmugXel4hXq7S+RMNl34ecyC9TntWg== -uuid@^3.1.0, uuid@^3.3.2: +uuid@^3.1.0, uuid@^3.3.2, uuid@^3.4.0: version "3.4.0" resolved "https://registry.yarnpkg.com/uuid/-/uuid-3.4.0.tgz#b23e4358afa8a202fe7a100af1f5f883f02007ee" integrity sha512-HjSDRw6gZE5JMggctHBcjVak08+KEVhSIiDzFnT9S9aegmp85S/bReBVTb4QTFaRNptJ9kuYaNhnbNEOkbKb/A== @@ -11245,11 +14188,16 @@ validate-npm-package-license@^3.0.1: spdx-correct "^3.0.0" spdx-expression-parse "^3.0.0" -varint@^5.0.0: +varint@^5.0.0, varint@^5.0.2, varint@~5.0.0: version "5.0.2" resolved "https://registry.yarnpkg.com/varint/-/varint-5.0.2.tgz#5b47f8a947eb668b848e034dcfa87d0ff8a7f7a4" integrity sha512-lKxKYG6H03yCZUpAGOPOsMcGxd1RHCu1iKvEHYDPmTyq2HueGhD73ssNBqqQWfvYs04G9iUFRvmAVLW20Jw6ow== +varint@^6.0.0: + version "6.0.0" + resolved "https://registry.yarnpkg.com/varint/-/varint-6.0.0.tgz#9881eb0ce8feaea6512439d19ddf84bf551661d0" + integrity sha512-cXEIW6cfr15lFv563k4GuVuW/fiwjknytD37jIOLSdSWuOI6WnO/oKwmP2FQTU2l01LP8/M5TSAJpzUaGe3uWg== + vary@^1, vary@~1.1.2: version "1.1.2" resolved "https://registry.yarnpkg.com/vary/-/vary-1.1.2.tgz#2299f02c6ded30d4a5961b0b9f74524a18f634fc" @@ -11303,11 +14251,34 @@ vinyl@1.X, vinyl@^1.0.0: clone-stats "^0.0.1" replace-ext "0.0.1" +vm-browserify@^1.0.1: + version "1.1.2" + resolved "https://registry.yarnpkg.com/vm-browserify/-/vm-browserify-1.1.2.tgz#78641c488b8e6ca91a75f511e7a3b32a86e5dda0" + integrity sha512-2ham8XPWTONajOR0ohOKOHXkm3+gaBmGut3SRuu75xLd/RRaY6vqgh8NBYYk7+RW3u5AtzPQZG8F10LHkl0lAQ== + vuvuzela@1.0.3: version "1.0.3" resolved "https://registry.yarnpkg.com/vuvuzela/-/vuvuzela-1.0.3.tgz#3be145e58271c73ca55279dd851f12a682114b0b" integrity sha1-O+FF5YJxxzylUnndhR8SpoIRSws= +watchpack-chokidar2@^2.0.1: + version "2.0.1" + resolved "https://registry.yarnpkg.com/watchpack-chokidar2/-/watchpack-chokidar2-2.0.1.tgz#38500072ee6ece66f3769936950ea1771be1c957" + integrity sha512-nCFfBIPKr5Sh61s4LPpy1Wtfi0HE8isJ3d2Yb5/Ppw2P2B/3eVSEBjKfN0fmHJSK14+31KwMKmcrzs2GM4P0Ww== + dependencies: + chokidar "^2.1.8" + +watchpack@^1.4.0: + version "1.7.5" + resolved "https://registry.yarnpkg.com/watchpack/-/watchpack-1.7.5.tgz#1267e6c55e0b9b5be44c2023aed5437a2c26c453" + integrity sha512-9P3MWk6SrKjHsGkLT2KHXdQ/9SNkyoJbabxnKOoJepsvJjJG8uYTR3yTPxPQvNDI3w4Nz1xnE0TLHK4RIVe/MQ== + dependencies: + graceful-fs "^4.1.2" + neo-async "^2.5.0" + optionalDependencies: + chokidar "^3.4.1" + watchpack-chokidar2 "^2.0.1" + wcwidth@^1.0.1: version "1.0.1" resolved "https://registry.yarnpkg.com/wcwidth/-/wcwidth-1.0.1.tgz#f0b0dcf915bc5ff1528afadb2c0e17b532da2fe8" @@ -11315,6 +14286,15 @@ wcwidth@^1.0.1: dependencies: defaults "^1.0.3" +web-encoding@^1.0.2, web-encoding@^1.0.6: + version "1.1.5" + resolved "https://registry.yarnpkg.com/web-encoding/-/web-encoding-1.1.5.tgz#fc810cf7667364a6335c939913f5051d3e0c4864" + integrity sha512-HYLeVCdJ0+lBYV2FvNZmv3HJ2Nt0QYXqZojk3d9FJOLkwnuhzM9tmamh8d7HPM8QqjKH8DeHkFTx+CFlWpZZDA== + dependencies: + util "^0.12.3" + optionalDependencies: + "@zxing/text-encoding" "0.9.0" + web3-bzz@1.2.1: version "1.2.1" resolved "https://registry.yarnpkg.com/web3-bzz/-/web3-bzz-1.2.1.tgz#c3bd1e8f0c02a13cd6d4e3c3e9e1713f144f6f0d" @@ -11344,15 +14324,14 @@ web3-bzz@1.2.6: swarm-js "0.1.39" underscore "1.9.1" -web3-bzz@1.2.9: - version "1.2.9" - resolved "https://registry.yarnpkg.com/web3-bzz/-/web3-bzz-1.2.9.tgz#25f8a373bc2dd019f47bf80523546f98b93c8790" - integrity sha512-ogVQr9jHodu9HobARtvUSmWG22cv2EUQzlPeejGWZ7j5h20HX40EDuWyomGY5VclIj5DdLY76Tmq88RTf/6nxA== +web3-bzz@1.5.2: + version "1.5.2" + resolved "https://registry.yarnpkg.com/web3-bzz/-/web3-bzz-1.5.2.tgz#a04feaa19462cff6d5a8c87dad1aca4619d9dfc8" + integrity sha512-W/sPCdA+XQ9duUYKHAwf/g69cbbV8gTCRsa1MpZwU7spXECiyJ2EvD/QzAZ+UpJk3GELXFF/fUByeZ3VRQKF2g== dependencies: - "@types/node" "^10.12.18" + "@types/node" "^12.12.6" got "9.6.0" swarm-js "^0.1.40" - underscore "1.9.1" web3-core-helpers@1.2.1: version "1.2.1" @@ -11381,23 +14360,13 @@ web3-core-helpers@1.2.6: web3-eth-iban "1.2.6" web3-utils "1.2.6" -web3-core-helpers@1.2.9: - version "1.2.9" - resolved "https://registry.yarnpkg.com/web3-core-helpers/-/web3-core-helpers-1.2.9.tgz#6381077c3e01c127018cb9e9e3d1422697123315" - integrity sha512-t0WAG3orLCE3lqi77ZoSRNFok3VQWZXTniZigDQjyOJYMAX7BU3F3js8HKbjVnAxlX3tiKoDxI0KBk9F3AxYuw== - dependencies: - underscore "1.9.1" - web3-eth-iban "1.2.9" - web3-utils "1.2.9" - -web3-core-helpers@1.3.4: - version "1.3.4" - resolved "https://registry.yarnpkg.com/web3-core-helpers/-/web3-core-helpers-1.3.4.tgz#b8549740bf24d5c71688d89c3cdd802d8d36b4e4" - integrity sha512-n7BqDalcTa1stncHMmrnFtyTgDhX5Fy+avNaHCf6qcOP2lwTQC8+mdHVBONWRJ6Yddvln+c8oY/TAaB6PzWK0A== +web3-core-helpers@1.5.2: + version "1.5.2" + resolved "https://registry.yarnpkg.com/web3-core-helpers/-/web3-core-helpers-1.5.2.tgz#b6bd5071ca099ba3f92dfafb552eed2b70af2795" + integrity sha512-U7LJoeUdQ3aY9t5gU7t/1XpcApsWm+4AcW5qKl/44ZxD44w0Dmsq1c5zJm3GuLr/a9MwQfXK4lpmvxVQWHHQRg== dependencies: - underscore "1.9.1" - web3-eth-iban "1.3.4" - web3-utils "1.3.4" + web3-eth-iban "1.5.2" + web3-utils "1.5.2" web3-core-helpers@2.0.0-alpha.1: version "2.0.0-alpha.1" @@ -11443,29 +14412,17 @@ web3-core-method@1.2.6: web3-core-subscriptions "1.2.6" web3-utils "1.2.6" -web3-core-method@1.2.9: - version "1.2.9" - resolved "https://registry.yarnpkg.com/web3-core-method/-/web3-core-method-1.2.9.tgz#3fb538751029bea570e4f86731e2fa5e4945e462" - integrity sha512-bjsIoqP3gs7A/gP8+QeLUCyOKJ8bopteCSNbCX36Pxk6TYfYWNuC6hP+2GzUuqdP3xaZNe+XEElQFUNpR3oyAg== - dependencies: - "@ethersproject/transactions" "^5.0.0-beta.135" - underscore "1.9.1" - web3-core-helpers "1.2.9" - web3-core-promievent "1.2.9" - web3-core-subscriptions "1.2.9" - web3-utils "1.2.9" - -web3-core-method@1.3.4: - version "1.3.4" - resolved "https://registry.yarnpkg.com/web3-core-method/-/web3-core-method-1.3.4.tgz#6c2812d96dd6c811b9e6c8a5d25050d2c22b9527" - integrity sha512-JxmQrujsAWYRRN77P/RY7XuZDCzxSiiQJrgX/60Lfyf7FF1Y0le4L/UMCi7vUJnuYkbU1Kfl9E0udnqwyPqlvQ== +web3-core-method@1.5.2: + version "1.5.2" + resolved "https://registry.yarnpkg.com/web3-core-method/-/web3-core-method-1.5.2.tgz#d1d602657be1000a29d11e3ca3bf7bc778dea9a5" + integrity sha512-/mC5t9UjjJoQmJJqO5nWK41YHo+tMzFaT7Tp7jDCQsBkinE68KsUJkt0jzygpheW84Zra0DVp6q19gf96+cugg== dependencies: + "@ethereumjs/common" "^2.4.0" "@ethersproject/transactions" "^5.0.0-beta.135" - underscore "1.9.1" - web3-core-helpers "1.3.4" - web3-core-promievent "1.3.4" - web3-core-subscriptions "1.3.4" - web3-utils "1.3.4" + web3-core-helpers "1.5.2" + web3-core-promievent "1.5.2" + web3-core-subscriptions "1.5.2" + web3-utils "1.5.2" web3-core-method@2.0.0-alpha.1: version "2.0.0-alpha.1" @@ -11505,17 +14462,10 @@ web3-core-promievent@1.2.6: any-promise "1.3.0" eventemitter3 "3.1.2" -web3-core-promievent@1.2.9: - version "1.2.9" - resolved "https://registry.yarnpkg.com/web3-core-promievent/-/web3-core-promievent-1.2.9.tgz#bb1c56aa6fac2f4b3c598510f06554d25c11c553" - integrity sha512-0eAUA2zjgXTleSrnc1wdoKQPPIHU6KHf4fAscu4W9kKrR+mqP1KsjYrxY9wUyjNnXxfQ+5M29ipvbiaK8OqdOw== - dependencies: - eventemitter3 "3.1.2" - -web3-core-promievent@1.3.4: - version "1.3.4" - resolved "https://registry.yarnpkg.com/web3-core-promievent/-/web3-core-promievent-1.3.4.tgz#d166239012d91496cdcbe91d5d54071ea818bc73" - integrity sha512-V61dZIeBwogg6hhZZUt0qL9hTp1WDhnsdjP++9fhTDr4vy/Gz8T5vibqT2LLg6lQC8i+Py33yOpMeMNjztaUaw== +web3-core-promievent@1.5.2: + version "1.5.2" + resolved "https://registry.yarnpkg.com/web3-core-promievent/-/web3-core-promievent-1.5.2.tgz#2dc9fe0e5bbeb7c360fc1aac5f12b32d9949a59b" + integrity sha512-5DacbJXe98ozSor7JlkTNCy6G8945VunRRkPxMk98rUrg60ECVEM/vuefk1atACzjQsKx6tmLZuHxbJQ64TQeQ== dependencies: eventemitter3 "4.0.4" @@ -11552,28 +14502,16 @@ web3-core-requestmanager@1.2.6: web3-providers-ipc "1.2.6" web3-providers-ws "1.2.6" -web3-core-requestmanager@1.2.9: - version "1.2.9" - resolved "https://registry.yarnpkg.com/web3-core-requestmanager/-/web3-core-requestmanager-1.2.9.tgz#dd6d855256c4dd681434fe0867f8cd742fe10503" - integrity sha512-1PwKV2m46ALUnIN5VPPgjOj8yMLJhhqZYvYJE34hTN5SErOkwhzx5zScvo5MN7v7KyQGFnpVCZKKGCiEnDmtFA== - dependencies: - underscore "1.9.1" - web3-core-helpers "1.2.9" - web3-providers-http "1.2.9" - web3-providers-ipc "1.2.9" - web3-providers-ws "1.2.9" - -web3-core-requestmanager@1.3.4: - version "1.3.4" - resolved "https://registry.yarnpkg.com/web3-core-requestmanager/-/web3-core-requestmanager-1.3.4.tgz#e105ced735c2b5fcedd5771e0ecf9879ae9c373f" - integrity sha512-xriouCrhVnVDYQ04TZXdEREZm0OOJzkSEsoN5bu4JYsA6e/HzROeU+RjDpMUxFMzN4wxmFZ+HWbpPndS3QwMag== +web3-core-requestmanager@1.5.2: + version "1.5.2" + resolved "https://registry.yarnpkg.com/web3-core-requestmanager/-/web3-core-requestmanager-1.5.2.tgz#43ccc00779394c941b28e6e07e217350fd1ded71" + integrity sha512-oRVW9OrAsXN2JIZt68OEg1Mb1A9a/L3JAGMv15zLEFEnJEGw0KQsGK1ET2kvZBzvpFd5G0EVkYCnx7WDe4HSNw== dependencies: - underscore "1.9.1" util "^0.12.0" - web3-core-helpers "1.3.4" - web3-providers-http "1.3.4" - web3-providers-ipc "1.3.4" - web3-providers-ws "1.3.4" + web3-core-helpers "1.5.2" + web3-providers-http "1.5.2" + web3-providers-ipc "1.5.2" + web3-providers-ws "1.5.2" web3-core-subscriptions@1.2.1: version "1.2.1" @@ -11602,23 +14540,13 @@ web3-core-subscriptions@1.2.6: underscore "1.9.1" web3-core-helpers "1.2.6" -web3-core-subscriptions@1.2.9: - version "1.2.9" - resolved "https://registry.yarnpkg.com/web3-core-subscriptions/-/web3-core-subscriptions-1.2.9.tgz#335fd7d15dfce5d78b4b7bef05ce4b3d7237b0e4" - integrity sha512-Y48TvXPSPxEM33OmXjGVDMzTd0j8X0t2+sDw66haeBS8eYnrEzasWuBZZXDq0zNUsqyxItgBGDn+cszkgEnFqg== - dependencies: - eventemitter3 "3.1.2" - underscore "1.9.1" - web3-core-helpers "1.2.9" - -web3-core-subscriptions@1.3.4: - version "1.3.4" - resolved "https://registry.yarnpkg.com/web3-core-subscriptions/-/web3-core-subscriptions-1.3.4.tgz#7b00e92bde21f792620cd02e6e508fcf4f4c31d3" - integrity sha512-drVHVDxh54hv7xmjIm44g4IXjfGj022fGw4/meB5R2D8UATFI40F73CdiBlyqk3DysP9njDOLTJFSQvEkLFUOg== +web3-core-subscriptions@1.5.2: + version "1.5.2" + resolved "https://registry.yarnpkg.com/web3-core-subscriptions/-/web3-core-subscriptions-1.5.2.tgz#8eaebde44f81fc13c45b555c4422fe79393da9cf" + integrity sha512-hapI4rKFk22yurtIv0BYvkraHsM7epA4iI8Np+HuH6P9DD0zj/llaps6TXLM9HyacLBRwmOLZmr+pHBsPopUnQ== dependencies: eventemitter3 "4.0.4" - underscore "1.9.1" - web3-core-helpers "1.3.4" + web3-core-helpers "1.5.2" web3-core-subscriptions@2.0.0-alpha.1: version "2.0.0-alpha.1" @@ -11663,18 +14591,18 @@ web3-core@1.2.6: web3-core-requestmanager "1.2.6" web3-utils "1.2.6" -web3-core@1.2.9: - version "1.2.9" - resolved "https://registry.yarnpkg.com/web3-core/-/web3-core-1.2.9.tgz#2cba57aa259b6409db532d21bdf57db8d504fd3e" - integrity sha512-fSYv21IP658Ty2wAuU9iqmW7V+75DOYMVZsDH/c14jcF/1VXnedOcxzxSj3vArsCvXZNe6XC5/wAuGZyQwR9RA== +web3-core@1.5.2, web3-core@^1.5.2: + version "1.5.2" + resolved "https://registry.yarnpkg.com/web3-core/-/web3-core-1.5.2.tgz#ca2b9b1ed3cf84d48b31c9bb91f7628f97cfdcd5" + integrity sha512-sebMpQbg3kbh3vHUbHrlKGKOxDWqjgt8KatmTBsTAWj/HwWYVDzeX+2Q84+swNYsm2DrTBVFlqTErFUwPBvyaA== dependencies: - "@types/bn.js" "^4.11.4" - "@types/node" "^12.6.1" + "@types/bn.js" "^4.11.5" + "@types/node" "^12.12.6" bignumber.js "^9.0.0" - web3-core-helpers "1.2.9" - web3-core-method "1.2.9" - web3-core-requestmanager "1.2.9" - web3-utils "1.2.9" + web3-core-helpers "1.5.2" + web3-core-method "1.5.2" + web3-core-requestmanager "1.5.2" + web3-utils "1.5.2" web3-core@2.0.0-alpha.1: version "2.0.0-alpha.1" @@ -11689,19 +14617,6 @@ web3-core@2.0.0-alpha.1: web3-providers "2.0.0-alpha.1" web3-utils "2.0.0-alpha.1" -web3-core@^1.3.4: - version "1.3.4" - resolved "https://registry.yarnpkg.com/web3-core/-/web3-core-1.3.4.tgz#2cc7ba7f35cc167f7a0a46fd5855f86e51d34ce8" - integrity sha512-7OJu46RpCEfTerl+gPvHXANR2RkLqAfW7l2DAvQ7wN0pnCzl9nEfdgW6tMhr31k3TR2fWucwKzCyyxMGzMHeSA== - dependencies: - "@types/bn.js" "^4.11.5" - "@types/node" "^12.12.6" - bignumber.js "^9.0.0" - web3-core-helpers "1.3.4" - web3-core-method "1.3.4" - web3-core-requestmanager "1.3.4" - web3-utils "1.3.4" - web3-eth-abi@1.2.1: version "1.2.1" resolved "https://registry.yarnpkg.com/web3-eth-abi/-/web3-eth-abi-1.2.1.tgz#9b915b1c9ebf82f70cca631147035d5419064689" @@ -11729,14 +14644,13 @@ web3-eth-abi@1.2.6: underscore "1.9.1" web3-utils "1.2.6" -web3-eth-abi@1.2.9: - version "1.2.9" - resolved "https://registry.yarnpkg.com/web3-eth-abi/-/web3-eth-abi-1.2.9.tgz#14bedd7e4be04fcca35b2ac84af1400574cd8280" - integrity sha512-3YwUYbh/DMfDbhMWEebAdjSd5bj3ZQieOjLzWFHU23CaLEqT34sUix1lba+hgUH/EN6A7bKAuKOhR3p0OvTn7Q== +web3-eth-abi@1.5.2: + version "1.5.2" + resolved "https://registry.yarnpkg.com/web3-eth-abi/-/web3-eth-abi-1.5.2.tgz#b627eada967f39ae4657ddd61b693cb00d55cb29" + integrity sha512-P3bJbDR5wib4kWGfVeBKBVi27T+AiHy4EJxYM6SMNbpm3DboLDdisu9YBd6INMs8rzxgnprBbGmmyn4jKIDKAA== dependencies: - "@ethersproject/abi" "5.0.0-beta.153" - underscore "1.9.1" - web3-utils "1.2.9" + "@ethersproject/abi" "5.0.7" + web3-utils "1.5.2" web3-eth-abi@2.0.0-alpha.1: version "2.0.0-alpha.1" @@ -11801,22 +14715,22 @@ web3-eth-accounts@1.2.6: web3-core-method "1.2.6" web3-utils "1.2.6" -web3-eth-accounts@1.2.9: - version "1.2.9" - resolved "https://registry.yarnpkg.com/web3-eth-accounts/-/web3-eth-accounts-1.2.9.tgz#7ec422df90fecb5243603ea49dc28726db7bdab6" - integrity sha512-jkbDCZoA1qv53mFcRHCinoCsgg8WH+M0YUO1awxmqWXRmCRws1wW0TsuSQ14UThih5Dxolgl+e+aGWxG58LMwg== +web3-eth-accounts@1.5.2: + version "1.5.2" + resolved "https://registry.yarnpkg.com/web3-eth-accounts/-/web3-eth-accounts-1.5.2.tgz#cf506c21037fa497fe42f1f055980ce4acf83731" + integrity sha512-F8mtzxgEhxfLc66vPi0Gqd6mpscvvk7Ua575bsJ1p9J2X/VtuKgDgpWcU4e4LKeROQ+ouCpAG9//0j9jQuij3A== dependencies: + "@ethereumjs/common" "^2.3.0" + "@ethereumjs/tx" "^3.2.1" crypto-browserify "3.12.0" - eth-lib "^0.2.8" - ethereumjs-common "^1.3.2" - ethereumjs-tx "^2.1.1" + eth-lib "0.2.8" + ethereumjs-util "^7.0.10" scrypt-js "^3.0.1" - underscore "1.9.1" uuid "3.3.2" - web3-core "1.2.9" - web3-core-helpers "1.2.9" - web3-core-method "1.2.9" - web3-utils "1.2.9" + web3-core "1.5.2" + web3-core-helpers "1.5.2" + web3-core-method "1.5.2" + web3-utils "1.5.2" web3-eth-accounts@2.0.0-alpha.1: version "2.0.0-alpha.1" @@ -11882,20 +14796,19 @@ web3-eth-contract@1.2.6: web3-eth-abi "1.2.6" web3-utils "1.2.6" -web3-eth-contract@1.2.9: - version "1.2.9" - resolved "https://registry.yarnpkg.com/web3-eth-contract/-/web3-eth-contract-1.2.9.tgz#713d9c6d502d8c8f22b696b7ffd8e254444e6bfd" - integrity sha512-PYMvJf7EG/HyssUZa+pXrc8IB06K/YFfWYyW4R7ed3sab+9wWUys1TlWxBCBuiBXOokSAyM6H6P6/cKEx8FT8Q== +web3-eth-contract@1.5.2: + version "1.5.2" + resolved "https://registry.yarnpkg.com/web3-eth-contract/-/web3-eth-contract-1.5.2.tgz#ffbd799fd01e36596aaadefba323e24a98a23c2f" + integrity sha512-4B8X/IPFxZCTmtENpdWXtyw5fskf2muyc3Jm5brBQRb4H3lVh1/ZyQy7vOIkdphyaXu4m8hBLHzeyKkd37mOUg== dependencies: - "@types/bn.js" "^4.11.4" - underscore "1.9.1" - web3-core "1.2.9" - web3-core-helpers "1.2.9" - web3-core-method "1.2.9" - web3-core-promievent "1.2.9" - web3-core-subscriptions "1.2.9" - web3-eth-abi "1.2.9" - web3-utils "1.2.9" + "@types/bn.js" "^4.11.5" + web3-core "1.5.2" + web3-core-helpers "1.5.2" + web3-core-method "1.5.2" + web3-core-promievent "1.5.2" + web3-core-subscriptions "1.5.2" + web3-eth-abi "1.5.2" + web3-utils "1.5.2" web3-eth-contract@2.0.0-alpha.1: version "2.0.0-alpha.1" @@ -11956,20 +14869,19 @@ web3-eth-ens@1.2.6: web3-eth-contract "1.2.6" web3-utils "1.2.6" -web3-eth-ens@1.2.9: - version "1.2.9" - resolved "https://registry.yarnpkg.com/web3-eth-ens/-/web3-eth-ens-1.2.9.tgz#577b9358c036337833fb2bdc59c11be7f6f731b6" - integrity sha512-kG4+ZRgZ8I1WYyOBGI8QVRHfUSbbJjvJAGA1AF/NOW7JXQ+x7gBGeJw6taDWJhSshMoEKWcsgvsiuoG4870YxQ== +web3-eth-ens@1.5.2: + version "1.5.2" + resolved "https://registry.yarnpkg.com/web3-eth-ens/-/web3-eth-ens-1.5.2.tgz#ecb3708f0e8e2e847e9d89e8428da12c30bba6a4" + integrity sha512-/UrLL42ZOCYge+BpFBdzG8ICugaRS4f6X7PxJKO+zAt+TwNgBpjuWfW/ZYNcuqJun/ZyfcTuj03TXqA1RlNhZQ== dependencies: content-hash "^2.5.2" eth-ens-namehash "2.0.8" - underscore "1.9.1" - web3-core "1.2.9" - web3-core-helpers "1.2.9" - web3-core-promievent "1.2.9" - web3-eth-abi "1.2.9" - web3-eth-contract "1.2.9" - web3-utils "1.2.9" + web3-core "1.5.2" + web3-core-helpers "1.5.2" + web3-core-promievent "1.5.2" + web3-eth-abi "1.5.2" + web3-eth-contract "1.5.2" + web3-utils "1.5.2" web3-eth-ens@2.0.0-alpha.1: version "2.0.0-alpha.1" @@ -12013,21 +14925,13 @@ web3-eth-iban@1.2.6: bn.js "4.11.8" web3-utils "1.2.6" -web3-eth-iban@1.2.9: - version "1.2.9" - resolved "https://registry.yarnpkg.com/web3-eth-iban/-/web3-eth-iban-1.2.9.tgz#4ebf3d8783f34d04c4740dc18938556466399f7a" - integrity sha512-RtdVvJE0pyg9dHLy0GzDiqgnLnssSzfz/JYguhC1wsj9+Gnq1M6Diy3NixACWUAp6ty/zafyOaZnNQ+JuH9TjQ== - dependencies: - bn.js "4.11.8" - web3-utils "1.2.9" - -web3-eth-iban@1.3.4: - version "1.3.4" - resolved "https://registry.yarnpkg.com/web3-eth-iban/-/web3-eth-iban-1.3.4.tgz#5eb7a564e0dcf68730d68f48f95dd207cd173d81" - integrity sha512-Y7/hLjVvIN/OhaAyZ8L/hxbTqVX6AFTl2RwUXR6EEU9oaLydPcMjAx/Fr8mghUvQS3QJSr+UGubP3W4SkyNiYw== +web3-eth-iban@1.5.2: + version "1.5.2" + resolved "https://registry.yarnpkg.com/web3-eth-iban/-/web3-eth-iban-1.5.2.tgz#f390ad244ef8a6c94de7c58736b0b80a484abc8e" + integrity sha512-C04YDXuSG/aDwOHSX+HySBGb0KraiAVt+/l1Mw7y/fCUrKC/K0yYzMYqY/uYOcvLtepBPsC4ZfUYWUBZ2PO8Vg== dependencies: bn.js "^4.11.9" - web3-utils "1.3.4" + web3-utils "1.5.2" web3-eth-iban@2.0.0-alpha.1: version "2.0.0-alpha.1" @@ -12073,17 +14977,17 @@ web3-eth-personal@1.2.6: web3-net "1.2.6" web3-utils "1.2.6" -web3-eth-personal@1.2.9: - version "1.2.9" - resolved "https://registry.yarnpkg.com/web3-eth-personal/-/web3-eth-personal-1.2.9.tgz#9b95eb159b950b83cd8ae15873e1d57711b7a368" - integrity sha512-cFiNrktxZ1C/rIdJFzQTvFn3/0zcsR3a+Jf8Y3KxeQDHszQtosjLWptP7bsUmDwEh4hzh0Cy3KpOxlYBWB8bJQ== +web3-eth-personal@1.5.2: + version "1.5.2" + resolved "https://registry.yarnpkg.com/web3-eth-personal/-/web3-eth-personal-1.5.2.tgz#043335a19ab59e119ba61e3bd6c3b8cde8120490" + integrity sha512-nH5N2GiVC0C5XeMEKU16PeFP3Hb3hkPvlR6Tf9WQ+pE+jw1c8eaXBO1CJQLr15ikhUF3s94ICyHcfjzkDsmRbA== dependencies: - "@types/node" "^12.6.1" - web3-core "1.2.9" - web3-core-helpers "1.2.9" - web3-core-method "1.2.9" - web3-net "1.2.9" - web3-utils "1.2.9" + "@types/node" "^12.12.6" + web3-core "1.5.2" + web3-core-helpers "1.5.2" + web3-core-method "1.5.2" + web3-net "1.5.2" + web3-utils "1.5.2" web3-eth-personal@2.0.0-alpha.1: version "2.0.0-alpha.1" @@ -12156,24 +15060,23 @@ web3-eth@1.2.6: web3-net "1.2.6" web3-utils "1.2.6" -web3-eth@1.2.9: - version "1.2.9" - resolved "https://registry.yarnpkg.com/web3-eth/-/web3-eth-1.2.9.tgz#e40e7b88baffc9b487193211c8b424dc944977b3" - integrity sha512-sIKO4iE9FEBa/CYUd6GdPd7GXt/wISqxUd8PlIld6+hvMJj02lgO7Z7p5T9mZIJcIZJGvZX81ogx8oJ9yif+Ag== - dependencies: - underscore "1.9.1" - web3-core "1.2.9" - web3-core-helpers "1.2.9" - web3-core-method "1.2.9" - web3-core-subscriptions "1.2.9" - web3-eth-abi "1.2.9" - web3-eth-accounts "1.2.9" - web3-eth-contract "1.2.9" - web3-eth-ens "1.2.9" - web3-eth-iban "1.2.9" - web3-eth-personal "1.2.9" - web3-net "1.2.9" - web3-utils "1.2.9" +web3-eth@1.5.2: + version "1.5.2" + resolved "https://registry.yarnpkg.com/web3-eth/-/web3-eth-1.5.2.tgz#0f6470df60a2a7d04df4423ca7721db8ed5ad72b" + integrity sha512-DwWQ6TCOUqvYyo7T20S7HpQDPveNHNqOn2Q2F3E8ZFyEjmqT4XsGiwvm08kB/VgQ4e/ANyq/i8PPFSYMT8JKHg== + dependencies: + web3-core "1.5.2" + web3-core-helpers "1.5.2" + web3-core-method "1.5.2" + web3-core-subscriptions "1.5.2" + web3-eth-abi "1.5.2" + web3-eth-accounts "1.5.2" + web3-eth-contract "1.5.2" + web3-eth-ens "1.5.2" + web3-eth-iban "1.5.2" + web3-eth-personal "1.5.2" + web3-net "1.5.2" + web3-utils "1.5.2" web3-eth@2.0.0-alpha.1: version "2.0.0-alpha.1" @@ -12224,14 +15127,14 @@ web3-net@1.2.6: web3-core-method "1.2.6" web3-utils "1.2.6" -web3-net@1.2.9: - version "1.2.9" - resolved "https://registry.yarnpkg.com/web3-net/-/web3-net-1.2.9.tgz#51d248ed1bc5c37713c4ac40c0073d9beacd87d3" - integrity sha512-d2mTn8jPlg+SI2hTj2b32Qan6DmtU9ap/IUlJTeQbZQSkTLf0u9suW8Vjwyr4poJYXTurdSshE7OZsPNn30/ZA== +web3-net@1.5.2: + version "1.5.2" + resolved "https://registry.yarnpkg.com/web3-net/-/web3-net-1.5.2.tgz#58915d7e2dad025d2a08f02c865f3abe61c48eff" + integrity sha512-VEc9c+jfoERhbJIxnx0VPlQDot8Lm4JW/tOWFU+ekHgIiu2zFKj5YxhURIth7RAbsaRsqCb79aE+M0eI8maxVQ== dependencies: - web3-core "1.2.9" - web3-core-method "1.2.9" - web3-utils "1.2.9" + web3-core "1.5.2" + web3-core-method "1.5.2" + web3-utils "1.5.2" web3-net@2.0.0-alpha.1: version "2.0.0-alpha.1" @@ -12270,20 +15173,12 @@ web3-providers-http@1.2.6: web3-core-helpers "1.2.6" xhr2-cookies "1.1.0" -web3-providers-http@1.2.9: - version "1.2.9" - resolved "https://registry.yarnpkg.com/web3-providers-http/-/web3-providers-http-1.2.9.tgz#e698aa5377e2019c24c5a1e6efa0f51018728934" - integrity sha512-F956tCIj60Ttr0UvEHWFIhx+be3He8msoPzyA44/kfzzYoMAsCFRn5cf0zQG6al0znE75g6HlWVSN6s3yAh51A== - dependencies: - web3-core-helpers "1.2.9" - xhr2-cookies "1.1.0" - -web3-providers-http@1.3.4: - version "1.3.4" - resolved "https://registry.yarnpkg.com/web3-providers-http/-/web3-providers-http-1.3.4.tgz#89389e18e27148faa2fef58842740ffadbdda8cc" - integrity sha512-aIg/xHXvxpqpFU70sqfp+JC3sGkLfAimRKTUhG4oJZ7U+tTcYTHoxBJj+4A3Id4JAoKiiv0k1/qeyQ8f3rMC3g== +web3-providers-http@1.5.2: + version "1.5.2" + resolved "https://registry.yarnpkg.com/web3-providers-http/-/web3-providers-http-1.5.2.tgz#94f95fe5572ca54aa2c2ffd42c63956436c9eb0a" + integrity sha512-dUNFJc9IMYDLZnkoQX3H4ZjvHjGO6VRVCqrBrdh84wPX/0da9dOA7DwIWnG0Gv3n9ybWwu5JHQxK4MNQ444lyA== dependencies: - web3-core-helpers "1.3.4" + web3-core-helpers "1.5.2" xhr2-cookies "1.1.0" web3-providers-ipc@1.2.1: @@ -12313,23 +15208,13 @@ web3-providers-ipc@1.2.6: underscore "1.9.1" web3-core-helpers "1.2.6" -web3-providers-ipc@1.2.9: - version "1.2.9" - resolved "https://registry.yarnpkg.com/web3-providers-ipc/-/web3-providers-ipc-1.2.9.tgz#6159eacfcd7ac31edc470d93ef10814fe874763b" - integrity sha512-NQ8QnBleoHA2qTJlqoWu7EJAD/FR5uimf7Ielzk4Z2z+m+6UAuJdJMSuQNj+Umhz9L/Ys6vpS1vHx9NizFl+aQ== - dependencies: - oboe "2.1.4" - underscore "1.9.1" - web3-core-helpers "1.2.9" - -web3-providers-ipc@1.3.4: - version "1.3.4" - resolved "https://registry.yarnpkg.com/web3-providers-ipc/-/web3-providers-ipc-1.3.4.tgz#b963518989b1b7847063cdd461ff73b83855834a" - integrity sha512-E0CvXEJElr/TIlG1YfJeO3Le5NI/4JZM+1SsEdiPIfBUAJN18oOoum138EBGKv5+YaLKZUtUuJSXWjIIOR/0Ig== +web3-providers-ipc@1.5.2: + version "1.5.2" + resolved "https://registry.yarnpkg.com/web3-providers-ipc/-/web3-providers-ipc-1.5.2.tgz#68a516883c998eeddf60df4cead77baca4fb4aaa" + integrity sha512-SJC4Sivt4g9LHKlRy7cs1jkJgp7bjrQeUndE6BKs0zNALKguxu6QYnzbmuHCTFW85GfMDjhvi24jyyZHMnBNXQ== dependencies: oboe "2.1.5" - underscore "1.9.1" - web3-core-helpers "1.3.4" + web3-core-helpers "1.5.2" web3-providers-ws@1.2.1: version "1.2.1" @@ -12358,24 +15243,13 @@ web3-providers-ws@1.2.6: underscore "1.9.1" web3-core-helpers "1.2.6" -web3-providers-ws@1.2.9: - version "1.2.9" - resolved "https://registry.yarnpkg.com/web3-providers-ws/-/web3-providers-ws-1.2.9.tgz#22c2006655ec44b4ad2b41acae62741a6ae7a88c" - integrity sha512-6+UpvINeI//dglZoAKStUXqxDOXJy6Iitv2z3dbgInG4zb8tkYl/VBDL80UjUg3ZvzWG0g7EKY2nRPEpON2TFA== - dependencies: - eventemitter3 "^4.0.0" - underscore "1.9.1" - web3-core-helpers "1.2.9" - websocket "^1.0.31" - -web3-providers-ws@1.3.4: - version "1.3.4" - resolved "https://registry.yarnpkg.com/web3-providers-ws/-/web3-providers-ws-1.3.4.tgz#b94c2e0ec51a0c472abdec53a472b5bf8176bec1" - integrity sha512-WBd9hk2fUAdrbA3kUyUk94ZeILtE6txLeoVVvIKAw2bPegx+RjkLyxC1Du0oceKgQ/qQWod8CCzl1E/GgTP+MQ== +web3-providers-ws@1.5.2: + version "1.5.2" + resolved "https://registry.yarnpkg.com/web3-providers-ws/-/web3-providers-ws-1.5.2.tgz#d336a93ed608b40cdcadfadd1f1bc8d32ea046e0" + integrity sha512-xy9RGlyO8MbJDuKv2vAMDkg+en+OvXG0CGTCM2BTl6l1vIdHpCa+6A/9KV2rK8aU9OBZ7/Pf+Y19517kHVl9RA== dependencies: eventemitter3 "4.0.4" - underscore "1.9.1" - web3-core-helpers "1.3.4" + web3-core-helpers "1.5.2" websocket "^1.0.32" web3-providers@2.0.0-alpha.1: @@ -12425,15 +15299,15 @@ web3-shh@1.2.6: web3-core-subscriptions "1.2.6" web3-net "1.2.6" -web3-shh@1.2.9: - version "1.2.9" - resolved "https://registry.yarnpkg.com/web3-shh/-/web3-shh-1.2.9.tgz#c4ba70d6142cfd61341a50752d8cace9a0370911" - integrity sha512-PWa8b/EaxaMinFaxy6cV0i0EOi2M7a/ST+9k9nhyhCjVa2vzXuNoBNo2IUOmeZ0WP2UQB8ByJ2+p4htlJaDOjA== +web3-shh@1.5.2: + version "1.5.2" + resolved "https://registry.yarnpkg.com/web3-shh/-/web3-shh-1.5.2.tgz#a72a3d903c0708a004db94a72d934a302d880aea" + integrity sha512-wOxOcYt4Sa0AHAI8gG7RulCwVuVjSRS/M/AbFsea3XfJdN6sU13/syY7OdZNjNYuKjYTzxKYrd3dU/K2iqffVw== dependencies: - web3-core "1.2.9" - web3-core-method "1.2.9" - web3-core-subscriptions "1.2.9" - web3-net "1.2.9" + web3-core "1.5.2" + web3-core-method "1.5.2" + web3-core-subscriptions "1.5.2" + web3-net "1.5.2" web3-shh@2.0.0-alpha.1: version "2.0.0-alpha.1" @@ -12504,10 +15378,10 @@ web3-utils@1.2.9: underscore "1.9.1" utf8 "3.0.0" -web3-utils@1.3.4: - version "1.3.4" - resolved "https://registry.yarnpkg.com/web3-utils/-/web3-utils-1.3.4.tgz#9b1aa30d7549f860b573e7bb7e690999e7192198" - integrity sha512-/vC2v0MaZNpWooJfpRw63u0Y3ag2gNjAWiLtMSL6QQLmCqCy4SQIndMt/vRyx0uMoeGt1YTwSXEcHjUzOhLg0A== +web3-utils@1.5.2, web3-utils@^1.0.0-beta.31, web3-utils@^1.3.0: + version "1.5.2" + resolved "https://registry.yarnpkg.com/web3-utils/-/web3-utils-1.5.2.tgz#150982dcb1918ffc54eba87528e28f009ebc03aa" + integrity sha512-quTtTeQJHYSxAwIBOCGEcQtqdVcFWX6mCFNoqnp+mRbq+Hxbs8CGgO/6oqfBx4OvxIOfCpgJWYVHswRXnbEu9Q== dependencies: bn.js "^4.11.9" eth-lib "0.2.8" @@ -12515,7 +15389,6 @@ web3-utils@1.3.4: 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@2.0.0-alpha.1, web3-utils@^2.0.0-alpha: @@ -12534,7 +15407,7 @@ web3-utils@2.0.0-alpha.1, web3-utils@^2.0.0-alpha: randombytes "^2.1.0" utf8 "2.1.1" -web3@*, web3@1.2.6, web3@^1.2.4: +web3@*: version "1.2.6" resolved "https://registry.yarnpkg.com/web3/-/web3-1.2.6.tgz#c497dcb14cdd8d6d9fb6b445b3b68ff83f8ccf68" integrity sha512-tpu9fLIComgxGrFsD8LUtA4s4aCZk7px8UfcdEy6kS2uDi/ZfR07KJqpXZMij7Jvlq+cQrTAhsPSiBVvoMaivA== @@ -12575,18 +15448,18 @@ web3@1.2.2: web3-shh "1.2.2" web3-utils "1.2.2" -web3@1.2.9: - version "1.2.9" - resolved "https://registry.yarnpkg.com/web3/-/web3-1.2.9.tgz#cbcf1c0fba5e213a6dfb1f2c1f4b37062e4ce337" - integrity sha512-Mo5aBRm0JrcNpN/g4VOrDzudymfOnHRC3s2VarhYxRA8aWgF5rnhQ0ziySaugpic1gksbXPe105pUWyRqw8HUA== - dependencies: - web3-bzz "1.2.9" - web3-core "1.2.9" - web3-eth "1.2.9" - web3-eth-personal "1.2.9" - web3-net "1.2.9" - web3-shh "1.2.9" - web3-utils "1.2.9" +web3@1.5.2: + version "1.5.2" + resolved "https://registry.yarnpkg.com/web3/-/web3-1.5.2.tgz#736ca2f39048c63964203dd811f519400973e78d" + integrity sha512-aapKLdO8t7Cos6tZLeeQUtCJvTiPMlLcHsHHDLSBZ/VaJEucSTxzun32M8sp3BmF4waDEmhY+iyUM1BKvtAcVQ== + dependencies: + web3-bzz "1.5.2" + web3-core "1.5.2" + web3-eth "1.5.2" + web3-eth-personal "1.5.2" + web3-net "1.5.2" + web3-shh "1.5.2" + web3-utils "1.5.2" web3@^2.0.0-alpha: version "2.0.0-alpha.1" @@ -12608,6 +15481,42 @@ webidl-conversions@^2.0.0: resolved "https://registry.yarnpkg.com/webidl-conversions/-/webidl-conversions-2.0.1.tgz#3bf8258f7d318c7443c36f2e169402a1a6703506" integrity sha1-O/glj30xjHRDw28uFpQCoaZwNQY= +webpack-sources@^1.0.1: + version "1.4.3" + resolved "https://registry.yarnpkg.com/webpack-sources/-/webpack-sources-1.4.3.tgz#eedd8ec0b928fbf1cbfe994e22d2d890f330a933" + integrity sha512-lgTS3Xhv1lCOKo7SA5TjKXMjpSM4sBjNV5+q2bqesbSPs5FjGmU6jjtBSkX9b4qW87vDIsCIlUPOEhbZrMdjeQ== + dependencies: + source-list-map "^2.0.0" + source-map "~0.6.1" + +webpack@^3.0.0: + version "3.12.0" + resolved "https://registry.yarnpkg.com/webpack/-/webpack-3.12.0.tgz#3f9e34360370602fcf639e97939db486f4ec0d74" + integrity sha512-Sw7MdIIOv/nkzPzee4o0EdvCuPmxT98+vVpIvwtcwcF1Q4SDSNp92vwcKc4REe7NItH9f1S4ra9FuQ7yuYZ8bQ== + dependencies: + acorn "^5.0.0" + acorn-dynamic-import "^2.0.0" + ajv "^6.1.0" + ajv-keywords "^3.1.0" + async "^2.1.2" + enhanced-resolve "^3.4.0" + escope "^3.6.0" + interpret "^1.0.0" + json-loader "^0.5.4" + json5 "^0.5.1" + loader-runner "^2.3.0" + loader-utils "^1.1.0" + memory-fs "~0.4.1" + mkdirp "~0.5.0" + node-libs-browser "^2.0.0" + source-map "^0.5.3" + supports-color "^4.2.1" + tapable "^0.2.7" + uglifyjs-webpack-plugin "^0.4.6" + watchpack "^1.4.0" + webpack-sources "^1.0.1" + yargs "^8.0.2" + websocket@^1.0.28: version "1.0.31" resolved "https://registry.yarnpkg.com/websocket/-/websocket-1.0.31.tgz#e5d0f16c3340ed87670e489ecae6144c79358730" @@ -12688,6 +15597,13 @@ which-typed-array@^1.1.2: has-symbols "^1.0.1" is-typed-array "^1.1.3" +which@1.3.1, which@^1.1.1, which@^1.2.14, which@^1.2.9, which@^1.3.1: + version "1.3.1" + resolved "https://registry.yarnpkg.com/which/-/which-1.3.1.tgz#a45043d54f5805316da8d62f9f50918d3da70b0a" + integrity sha512-HxJdYWq1MTIQbJ3nw0cqssHoTNU267KlrDuGZ1WYlxDStUtKUhOaJmh112/TZmHxxUfuJqPXSOm7tDyas0OSIQ== + dependencies: + isexe "^2.0.0" + which@2.0.2: version "2.0.2" resolved "https://registry.yarnpkg.com/which/-/which-2.0.2.tgz#7c6a8dd0a636a0327e10b59c9286eee93f3f51b1" @@ -12695,13 +15611,6 @@ which@2.0.2: dependencies: isexe "^2.0.0" -which@^1.1.1, which@^1.2.9, which@^1.3.1: - version "1.3.1" - resolved "https://registry.yarnpkg.com/which/-/which-1.3.1.tgz#a45043d54f5805316da8d62f9f50918d3da70b0a" - integrity sha512-HxJdYWq1MTIQbJ3nw0cqssHoTNU267KlrDuGZ1WYlxDStUtKUhOaJmh112/TZmHxxUfuJqPXSOm7tDyas0OSIQ== - dependencies: - isexe "^2.0.0" - wide-align@1.1.3, wide-align@^1.1.0: version "1.1.3" resolved "https://registry.yarnpkg.com/wide-align/-/wide-align-1.1.3.tgz#ae074e6bdc0c14a431e804e624549c633b000457" @@ -12709,6 +15618,18 @@ wide-align@1.1.3, wide-align@^1.1.0: dependencies: string-width "^1.0.2 || 2" +wif@^2.0.6: + version "2.0.6" + resolved "https://registry.yarnpkg.com/wif/-/wif-2.0.6.tgz#08d3f52056c66679299726fade0d432ae74b4704" + integrity sha1-CNP1IFbGZnkplyb63g1DKudLRwQ= + dependencies: + bs58check "<3.0.0" + +window-size@0.1.0: + version "0.1.0" + resolved "https://registry.yarnpkg.com/window-size/-/window-size-0.1.0.tgz#5438cd2ea93b202efa3a19fe8887aee7c94f9c9d" + integrity sha1-VDjNLqk7IC76Ohn+iIeu58lPnJ0= + window-size@^0.2.0: version "0.2.0" resolved "https://registry.yarnpkg.com/window-size/-/window-size-0.2.0.tgz#b4315bb4214a3d7058ebeee892e13fa24d98b075" @@ -12719,6 +15640,11 @@ word-wrap@~1.2.3: resolved "https://registry.yarnpkg.com/word-wrap/-/word-wrap-1.2.3.tgz#610636f6b1f703891bd34771ccb17fb93b47079c" integrity sha512-Hz/mrNwitNRh/HUAtM/VT/5VH+ygD6DV7mYKZAtHOrbs8U7lvPS6xf7EJKMF0uW1KJCl0H701g3ZGus+muE5vQ== +wordwrap@0.0.2: + version "0.0.2" + resolved "https://registry.yarnpkg.com/wordwrap/-/wordwrap-0.0.2.tgz#b79669bb42ecb409f83d583cad52ca17eaa1643f" + integrity sha1-t5Zpu0LstAn4PVg8rVLKF+qhZD8= + wordwrap@^1.0.0: version "1.0.0" resolved "https://registry.yarnpkg.com/wordwrap/-/wordwrap-1.0.0.tgz#27584810891456a4171c8d0226441ade90cbcaeb" @@ -12793,6 +15719,11 @@ ws@7.4.3: resolved "https://registry.yarnpkg.com/ws/-/ws-7.4.3.tgz#1f9643de34a543b8edb124bdcbc457ae55a6e5cd" integrity sha512-hr6vCR76GsossIRsr8OLR9acVVm1jyfEWvhbNjtgPOrfvAlKzvyeg/P6r8RuDjRyrcQoPQT7K0DGEPc7Ae6jzA== +ws@7.4.6: + version "7.4.6" + resolved "https://registry.yarnpkg.com/ws/-/ws-7.4.6.tgz#5654ca8ecdeee47c33a9a4bf6d28e2be2980377c" + integrity sha512-YmhHDO4MzaDLB+M9ym/mDA5z0naX8j7SIlT8f8z+I0VtzsRbekxEutHSme7NPS2qE8StCYQNUnfWdXta/Yu85A== + ws@^3.0.0: version "3.3.3" resolved "https://registry.yarnpkg.com/ws/-/ws-3.3.3.tgz#f1cf84fe2d5e901ebce94efaece785f187a228f2" @@ -12809,6 +15740,13 @@ ws@^5.2.0: dependencies: async-limiter "~1.0.0" +ws@^5.2.2: + version "5.2.3" + resolved "https://registry.yarnpkg.com/ws/-/ws-5.2.3.tgz#05541053414921bc29c63bee14b8b0dd50b07b3d" + integrity sha512-jZArVERrMsKUatIdnLzqvcfydI85dvd/Fp1u/VOpfdDWQ4c9qWXe+VIeAbQ5FrDwciAkr+lzofXLz3Kuf26AOA== + dependencies: + async-limiter "~1.0.0" + ws@^6.0.0: version "6.2.1" resolved "https://registry.yarnpkg.com/ws/-/ws-6.2.1.tgz#442fdf0a47ed64f59b6a5d8ff130f4748ed524fb" @@ -12816,6 +15754,11 @@ ws@^6.0.0: dependencies: async-limiter "~1.0.0" +ws@^7.2.1, ws@^7.3.1, ws@^7.4.3: + version "7.5.3" + resolved "https://registry.yarnpkg.com/ws/-/ws-7.5.3.tgz#160835b63c7d97bfab418fc1b8a9fced2ac01a74" + integrity sha512-kQ/dHIzuLrS6Je9+uv81ueZomEwH0qVYstcAQ4/Z93K8zeko9gtAbttJWzoC5ukqXY1PpoouV3+VSOqEAFt5wg== + xdg-basedir@^3.0.0: version "3.0.0" resolved "https://registry.yarnpkg.com/xdg-basedir/-/xdg-basedir-3.0.0.tgz#496b2cc109eca8dbacfe2dc72b603c17c5870ad4" @@ -12896,6 +15839,11 @@ yaeti@^0.0.6: resolved "https://registry.yarnpkg.com/yaeti/-/yaeti-0.0.6.tgz#f26f484d72684cf42bedfb76970aa1608fbf9577" integrity sha1-8m9ITXJoTPQr7ft2lwqhYI+/lXc= +yallist@^2.1.2: + version "2.1.2" + resolved "https://registry.yarnpkg.com/yallist/-/yallist-2.1.2.tgz#1c11f9218f076089a47dd512f93c6699a6a81d52" + integrity sha1-HBH5IY8HYImkfdUS+TxmmaaoHVI= + yallist@^3.0.0, yallist@^3.0.3: version "3.1.1" resolved "https://registry.yarnpkg.com/yallist/-/yallist-3.1.1.tgz#dbb7daf9bfd8bac9ab45ebf602b8cbad0d5d08fd" @@ -12946,6 +15894,22 @@ yargs-parser@^2.4.0: camelcase "^3.0.0" lodash.assign "^4.0.6" +yargs-parser@^7.0.0: + version "7.0.0" + resolved "https://registry.yarnpkg.com/yargs-parser/-/yargs-parser-7.0.0.tgz#8d0ac42f16ea55debd332caf4c4038b3e3f5dfd9" + integrity sha1-jQrELxbqVd69MyyvTEA4s+P139k= + dependencies: + camelcase "^4.1.0" + +yargs-unparser@1.6.0: + version "1.6.0" + resolved "https://registry.yarnpkg.com/yargs-unparser/-/yargs-unparser-1.6.0.tgz#ef25c2c769ff6bd09e4b0f9d7c605fb27846ea9f" + integrity sha512-W9tKgmSn0DpSatfri0nx52Joq5hVXgeLiqR/5G0sZNDoLZFOr/xjBUDcShCOGNsBnEMNo1KAMBkTej1Hm62HTw== + dependencies: + flat "^4.1.0" + lodash "^4.17.15" + yargs "^13.3.0" + yargs-unparser@1.6.1: version "1.6.1" resolved "https://registry.yarnpkg.com/yargs-unparser/-/yargs-unparser-1.6.1.tgz#bd4b0ee05b4c94d058929c32cb09e3fce71d3c5f" @@ -12974,7 +15938,7 @@ yargs@13.2.4: y18n "^4.0.0" yargs-parser "^13.1.0" -yargs@13.3.2: +yargs@13.3.2, yargs@^13.3.0: version "13.3.2" resolved "https://registry.yarnpkg.com/yargs/-/yargs-13.3.2.tgz#ad7ffefec1aa59565ac915f82dccb38a9c31a2dd" integrity sha512-AX3Zw5iPruN5ie6xGRIDgqkT+ZhnRlZMLMHAs8tg7nRruy2Nb+i5o9bwghAogtM08q1dpr2LVoS8KSTMYpWXUw== @@ -13042,6 +16006,35 @@ yargs@^15.3.1: y18n "^4.0.0" yargs-parser "^18.1.2" +yargs@^8.0.2: + version "8.0.2" + resolved "https://registry.yarnpkg.com/yargs/-/yargs-8.0.2.tgz#6299a9055b1cefc969ff7e79c1d918dceb22c360" + integrity sha1-YpmpBVsc78lp/355wdkY3Osiw2A= + dependencies: + camelcase "^4.1.0" + cliui "^3.2.0" + decamelize "^1.1.1" + get-caller-file "^1.0.1" + os-locale "^2.0.0" + read-pkg-up "^2.0.0" + require-directory "^2.1.1" + require-main-filename "^1.0.1" + set-blocking "^2.0.0" + string-width "^2.0.0" + which-module "^2.0.0" + y18n "^3.2.1" + yargs-parser "^7.0.0" + +yargs@~3.10.0: + version "3.10.0" + resolved "https://registry.yarnpkg.com/yargs/-/yargs-3.10.0.tgz#f7ee7bd857dd7c1d2d38c0e74efbd681d1431fd1" + integrity sha1-9+572FfdfB0tOMDnTvvWgdFDH9E= + dependencies: + camelcase "^1.0.2" + cliui "^2.1.0" + decamelize "^1.0.0" + window-size "0.1.0" + yauzl@^2.4.2: version "2.10.0" resolved "https://registry.yarnpkg.com/yauzl/-/yauzl-2.10.0.tgz#c7eb17c93e112cb1086fa6d8e51fb0667b79a5f9" From 525504fa66fe92b13a884f9c740d592f8c097f7c Mon Sep 17 00:00:00 2001 From: noiach Date: Mon, 23 Aug 2021 14:37:33 +1000 Subject: [PATCH 09/13] fix(ci): update node version --- .circleci/config.yml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.circleci/config.yml b/.circleci/config.yml index 5f4b05b1..e2814a8b 100644 --- a/.circleci/config.yml +++ b/.circleci/config.yml @@ -7,7 +7,7 @@ version: 2.1 executors: default: docker: - - image: circleci/node:10.16 + - image: circleci/node:12.22 working_directory: ~/darknode-sol commands: From d04ab71241d8b66ae16ff9946f6047c682155a00 Mon Sep 17 00:00:00 2001 From: noiach Date: Mon, 23 Aug 2021 15:01:01 +1000 Subject: [PATCH 10/13] chore: removed patches for previous dependency versions --- patches/truffle-typings+1.0.8.patch | 13 -- patches/typechain-target-truffle+1.0.2.patch | 145 ------------------- patches/typechain-target-web3-v1+1.0.4.patch | 24 --- 3 files changed, 182 deletions(-) delete mode 100644 patches/truffle-typings+1.0.8.patch delete mode 100644 patches/typechain-target-truffle+1.0.2.patch delete mode 100644 patches/typechain-target-web3-v1+1.0.4.patch diff --git a/patches/truffle-typings+1.0.8.patch b/patches/truffle-typings+1.0.8.patch deleted file mode 100644 index f8891935..00000000 --- a/patches/truffle-typings+1.0.8.patch +++ /dev/null @@ -1,13 +0,0 @@ -diff --git a/node_modules/truffle-typings/index.d.ts b/node_modules/truffle-typings/index.d.ts -index eae5e74..4511ef2 100644 ---- a/node_modules/truffle-typings/index.d.ts -+++ b/node_modules/truffle-typings/index.d.ts -@@ -5,7 +5,7 @@ - /// - - declare type BN = import("bn.js"); --declare type Web3 = import("web3"); -+declare type Web3 = import("web3").default; - - declare const assert: Chai.AssertStatic; - declare const expect: Chai.ExpectStatic; diff --git a/patches/typechain-target-truffle+1.0.2.patch b/patches/typechain-target-truffle+1.0.2.patch deleted file mode 100644 index f109ef01..00000000 --- a/patches/typechain-target-truffle+1.0.2.patch +++ /dev/null @@ -1,145 +0,0 @@ -diff --git a/node_modules/typechain-target-truffle/dist/generation.js b/node_modules/typechain-target-truffle/dist/generation.js -index 9c66899..b62db8a 100644 ---- a/node_modules/typechain-target-truffle/dist/generation.js -+++ b/node_modules/typechain-target-truffle/dist/generation.js -@@ -5,7 +5,8 @@ const lodash_1 = require("lodash"); - function codegen(contracts) { - const template = ` - /// --import { BigNumber } from "bignumber.js"; -+import BN from "bn.js"; -+type BigNumber = string | number | BN; - - ${contracts.map(generateContractInterface).join("\n")} - -@@ -24,8 +25,8 @@ function generateArtifactHeaders(contracts) { - namespace Truffle { - interface Artifacts { - ${contracts -- .map(f => `require(name: "${f.name}"): TruffleContracts.${f.name}Contract;`) -- .join("\n")} -+ .map(f => `require(name: "${f.name}"): TruffleContracts.${f.name}Contract;`) -+ .join("\n")} - } - } - } -@@ -36,8 +37,8 @@ function generateContractInterface(c) { - return ` - export interface ${c.name}Contract extends Truffle.Contract<${c.name}Instance> { - ${c.constructor && c.constructor[0] -- ? `"new"(${generateInputTypes(c.constructor[0].inputs)} meta?: Truffle.TransactionDetails): Promise<${c.name}Instance>;` -- : `"new"(meta?: Truffle.TransactionDetails): Promise<${c.name}Instance>;`} -+ ? `"new"(${generateInputTypes(c.constructor[0].inputs)} meta?: Truffle.TransactionDetails): Promise<${c.name}Instance>;` -+ : `"new"(meta?: Truffle.TransactionDetails): Promise<${c.name}Instance>;`} - } - `; - } -@@ -45,9 +46,9 @@ function generateContractInstanceInterface(c) { - return ` - export interface ${c.name}Instance extends Truffle.ContractInstance { - ${lodash_1.values(c.functions) -- .map(v => v[0]) -- .map(generateFunction) -- .join("\n")} -+ .map(v => v[0]) -+ .map(generateFunction) -+ .join("\n")} - } - `; - } -@@ -66,7 +67,7 @@ function generateFunction(fn) { - } - function generateConstantFunction(fn) { - return ` -- ${fn.name}(${generateInputTypes(fn.inputs)} txDetails?: Truffle.TransactionDetails): Promise<${generateOutputTypes(fn.outputs)}>; -+ ${fn.name}: { call(${generateInputTypes(fn.inputs)} txDetails?: Truffle.TransactionDetails): Promise<${generateOutputTypes(fn.outputs)}> }; - `; - } - function generateInputTypes(input) { -diff --git a/node_modules/typechain-target-truffle/lib/generation.ts b/node_modules/typechain-target-truffle/lib/generation.ts -index fcb22ce..46e87f3 100644 ---- a/node_modules/typechain-target-truffle/lib/generation.ts -+++ b/node_modules/typechain-target-truffle/lib/generation.ts -@@ -14,7 +14,8 @@ import { values } from "lodash"; - export function codegen(contracts: Contract[]) { - const template = ` - /// --import { BigNumber } from "bignumber.js"; -+import BN from "bn.js"; -+type BigNumber = string | number | BN; - - ${contracts.map(generateContractInterface).join("\n")} - -@@ -34,8 +35,8 @@ export function generateArtifactHeaders(contracts: Contract[]): string { - namespace Truffle { - interface Artifacts { - ${contracts -- .map(f => `require(name: "${f.name}"): TruffleContracts.${f.name}Contract;`) -- .join("\n")} -+ .map(f => `require(name: "${f.name}"): TruffleContracts.${f.name}Contract;`) -+ .join("\n")} - } - } - } -@@ -48,10 +49,10 @@ export interface ${c.name}Contract extends Truffle.Contract<${c.name}Instance> { - ${ - c.constructor && c.constructor[0] - ? `"new"(${generateInputTypes( -- c.constructor[0].inputs, -- )} meta?: Truffle.TransactionDetails): Promise<${c.name}Instance>;` -+ c.constructor[0].inputs, -+ )} meta?: Truffle.TransactionDetails): Promise<${c.name}Instance>;` - : `"new"(meta?: Truffle.TransactionDetails): Promise<${c.name}Instance>;` -- } -+ } - } - `; - } -@@ -60,9 +61,9 @@ function generateContractInstanceInterface(c: Contract): string { - return ` - export interface ${c.name}Instance extends Truffle.ContractInstance { - ${values(c.functions) -- .map(v => v[0]) -- .map(generateFunction) -- .join("\n")} -+ .map(v => v[0]) -+ .map(generateFunction) -+ .join("\n")} - } - `; - } -@@ -75,8 +76,8 @@ function generateFunction(fn: FunctionDeclaration): string { - return ` - ${fn.name}: { - (${generateInputTypes( -- fn.inputs, -- )} txDetails?: Truffle.TransactionDetails): Promise; -+ fn.inputs, -+ )} txDetails?: Truffle.TransactionDetails): Promise; - call(${generateInputTypes( - fn.inputs, - )} txDetails?: Truffle.TransactionDetails): Promise<${generateOutputTypes(fn.outputs)}>; -@@ -91,10 +92,22 @@ function generateFunction(fn: FunctionDeclaration): string { - } - - function generateConstantFunction(fn: FunctionDeclaration): string { -+ // return ` -+ // { -+ // ${fn.name}(${generateInputTypes( -+ // fn.inputs, -+ // )} txDetails?: Truffle.TransactionDetails): Promise<${generateOutputTypes(fn.outputs)}>; -+ // call(${generateInputTypes( -+ // fn.inputs, -+ // )} txDetails?: Truffle.TransactionDetails): Promise<${generateOutputTypes(fn.outputs)}>; -+ // } -+ // `; - return ` -- ${fn.name}(${generateInputTypes( -+ { -+ call(${generateInputTypes( - fn.inputs, - )} txDetails?: Truffle.TransactionDetails): Promise<${generateOutputTypes(fn.outputs)}>; -+ } - `; - } - diff --git a/patches/typechain-target-web3-v1+1.0.4.patch b/patches/typechain-target-web3-v1+1.0.4.patch deleted file mode 100644 index b02b4e34..00000000 --- a/patches/typechain-target-web3-v1+1.0.4.patch +++ /dev/null @@ -1,24 +0,0 @@ -diff --git a/node_modules/typechain-target-web3-v1/dist/generation.js b/node_modules/typechain-target-web3-v1/dist/generation.js -index 39d0e80..811bafc 100644 ---- a/node_modules/typechain-target-web3-v1/dist/generation.js -+++ b/node_modules/typechain-target-web3-v1/dist/generation.js -@@ -18,6 +18,7 @@ function codegen(contract) { - export class ${contract.name} extends Contract { - constructor(jsonInterface: any[], address?: string, options?: ContractOptions); - clone(): ${contract.name}; -+ address: string; - methods: { - ${codegenForFunctions(contract.functions)} - }; -diff --git a/node_modules/typechain-target-web3-v1/lib/generation.ts b/node_modules/typechain-target-web3-v1/lib/generation.ts -index 70cb4bb..1fa729c 100644 ---- a/node_modules/typechain-target-web3-v1/lib/generation.ts -+++ b/node_modules/typechain-target-web3-v1/lib/generation.ts -@@ -28,6 +28,7 @@ export function codegen(contract: Contract) { - export class ${contract.name} extends Contract { - constructor(jsonInterface: any[], address?: string, options?: ContractOptions); - clone(): ${contract.name}; -+ address: string; - methods: { - ${codegenForFunctions(contract.functions)} - }; From 1c0a3c99dbbed344d667b4106c2c2976cf2fecaf Mon Sep 17 00:00:00 2001 From: noiach Date: Mon, 23 Aug 2021 17:05:56 +1000 Subject: [PATCH 11/13] feat: started v2.0.0 refactor --- .circleci/config.yml | 44 - .editorconfig | 12 + .eslintignore | 7 + .eslintrc.js | 22 + .gitattributes | 2 +- .github/ISSUE_TEMPLATE | 19 - .github/PULL_REQUEST_TEMPLATE | 17 - .github/workflows/main.yml | 38 + .gitignore | 17 +- .npmignore | 44 - .prettierignore | 7 + .prettierrc.js | 15 + .solcover.js | 33 - .solhint.json | 20 + .solhintignore | 7 + .vscode/extensions.json.default | 10 + .vscode/launch.json.default | 14 + .vscode/settings.json | 20 +- .vscode/settings.json.default | 19 + README.md | 132 +- cache/solidity-files-cache.json | 1142 + config/.mocharc.js | 19 + config/.setup.js | 14 + config/_scripts.js | 164 + contracts/Bindings.sol | 17 - .../DarknodePayment/ClaimlessRewards.sol | 706 - contracts/DarknodePayment/DarknodePayment.sol | 521 - .../DarknodePaymentMigrator.sol | 69 - .../DarknodePayment/DarknodePaymentStore.sol | 125 - .../DarknodeRegistryForwarder.sol | 45 - contracts/DarknodePayment/ValidString.sol | 27 - .../DarknodeRegistry/DarknodeRegistry.sol | 795 - .../DarknodeRegistryStore.sol | 195 - .../DarknodeRegistry/GetOperatorDarknodes.sol | 42 - contracts/DarknodeSlasher/DarknodeSlasher.sol | 199 - contracts/Governance/Claimable.sol | 38 - contracts/Governance/RenProxyAdmin.sol | 14 - contracts/Protocol/Protocol.sol | 49 - contracts/RenToken/RenToken.sol | 38 - contracts/libraries/CanReclaimTokens.sol | 40 - contracts/libraries/Compare.sol | 19 - contracts/libraries/ERC20WithFees.sol | 25 - contracts/libraries/LinkedList.sol | 239 - contracts/libraries/String.sol | 67 - contracts/libraries/Validate.sol | 244 - contracts/migrations/Migrations.sol | 25 - contracts/test/Claimer.sol | 27 - contracts/test/CompareTest.sol | 14 - contracts/test/CycleChanger.sol | 23 - contracts/test/ERC20WithFeesTest.sol | 58 - contracts/test/ForceSend.sol | 7 - contracts/test/LinkedListTest.sol | 62 - contracts/test/StringTest.sol | 27 - contracts/test/ValidateTest.sol | 152 - contracts/test/tokens/ImpreciseToken.sol | 23 - contracts/test/tokens/NonCompliantToken.sol | 104 - contracts/test/tokens/NormalToken.sol | 28 - contracts/test/tokens/PaymentToken.sol | 18 - contracts/test/tokens/ReturnsFalseToken.sol | 114 - .../test/tokens/SelfDestructingToken.sol | 26 - contracts/test/tokens/TokenWithFees.sol | 45 - deploy/001_deploy.ts | 94 + deployments/kovan/.chainId | 1 + deployments/kovan/ClaimRewardsProxy.json | 230 + deployments/kovan/ClaimRewardsV1.json | 200 + deployments/kovan/GetOperatorDarknodes.json | 100 + deployments/kovan/Protocol.json | 645 + .../1d1b33ebee20e0af945d784a55de102c.json | 104 + hardhat.config.ts | 86 + migrations/1_darknodes.js | 520 - migrations/encode.js | 8 - migrations/networks.js | 98 - package.json | 138 +- patches/@openzeppelin+contracts+2.5.1.patch | 27 - ...lin+contracts-ethereum-package+2.5.0.patch | 27 - patches/solidity-coverage+0.7.16.patch | 21 + scripts/fundingFromCoinbase.ts | 72 + src/Bindings.sol | 11 + .../DarknodePayment => src}/ClaimRewards.sol | 63 +- src/GetOperatorDarknodes.sol | 41 + src/Protocol.sol | 41 + src/RenProxyAdmin.sol | 7 + src/ValidString.sol | 23 + templates/contract.hbs | 121 - templates/helpers.js | 13 - templates/prelude.sample.hbs | 3 - test/ClaimlessRewards/ClaimlessRewards.ts | 1217 - test/ClaimlessRewards/steps.ts | 487 - test/Compare.ts | 55 - test/DarknodePayment.ts | 1109 - test/DarknodeRegistry.ts | 1108 - test/DarknodeSlasher.ts | 764 - test/ERC20WithFees.ts | 233 - test/LinkedList.ts | 186 - test/Protocol.test.ts | 29 + test/Protocol.ts | 73 - test/String.ts | 53 - test/Validate.ts | 277 - test/chai-setup.ts | 4 + test/helper/logs.ts | 155 - test/helper/testUtils.ts | 251 - test/utils/index.ts | 25 + truffle.js | 116 - tsconfig.json | 32 +- tslint.json | 39 - types/chai/index.d.ts | 53 - utils/network.ts | 48 + yarn.lock | 20159 +++++----------- 108 files changed, 9529 insertions(+), 25743 deletions(-) delete mode 100644 .circleci/config.yml create mode 100644 .editorconfig create mode 100644 .eslintignore create mode 100644 .eslintrc.js delete mode 100644 .github/ISSUE_TEMPLATE delete mode 100644 .github/PULL_REQUEST_TEMPLATE create mode 100644 .github/workflows/main.yml delete mode 100644 .npmignore create mode 100644 .prettierignore create mode 100644 .prettierrc.js delete mode 100644 .solcover.js create mode 100644 .solhint.json create mode 100644 .solhintignore create mode 100644 .vscode/extensions.json.default create mode 100644 .vscode/launch.json.default create mode 100644 .vscode/settings.json.default create mode 100644 cache/solidity-files-cache.json create mode 100644 config/.mocharc.js create mode 100644 config/.setup.js create mode 100644 config/_scripts.js delete mode 100644 contracts/Bindings.sol delete mode 100644 contracts/DarknodePayment/ClaimlessRewards.sol delete mode 100644 contracts/DarknodePayment/DarknodePayment.sol delete mode 100644 contracts/DarknodePayment/DarknodePaymentMigrator.sol delete mode 100644 contracts/DarknodePayment/DarknodePaymentStore.sol delete mode 100644 contracts/DarknodePayment/DarknodeRegistryForwarder.sol delete mode 100644 contracts/DarknodePayment/ValidString.sol delete mode 100644 contracts/DarknodeRegistry/DarknodeRegistry.sol delete mode 100644 contracts/DarknodeRegistry/DarknodeRegistryStore.sol delete mode 100644 contracts/DarknodeRegistry/GetOperatorDarknodes.sol delete mode 100644 contracts/DarknodeSlasher/DarknodeSlasher.sol delete mode 100644 contracts/Governance/Claimable.sol delete mode 100644 contracts/Governance/RenProxyAdmin.sol delete mode 100644 contracts/Protocol/Protocol.sol delete mode 100644 contracts/RenToken/RenToken.sol delete mode 100644 contracts/libraries/CanReclaimTokens.sol delete mode 100644 contracts/libraries/Compare.sol delete mode 100644 contracts/libraries/ERC20WithFees.sol delete mode 100644 contracts/libraries/LinkedList.sol delete mode 100644 contracts/libraries/String.sol delete mode 100644 contracts/libraries/Validate.sol delete mode 100644 contracts/migrations/Migrations.sol delete mode 100644 contracts/test/Claimer.sol delete mode 100644 contracts/test/CompareTest.sol delete mode 100644 contracts/test/CycleChanger.sol delete mode 100644 contracts/test/ERC20WithFeesTest.sol delete mode 100644 contracts/test/ForceSend.sol delete mode 100644 contracts/test/LinkedListTest.sol delete mode 100644 contracts/test/StringTest.sol delete mode 100644 contracts/test/ValidateTest.sol delete mode 100644 contracts/test/tokens/ImpreciseToken.sol delete mode 100644 contracts/test/tokens/NonCompliantToken.sol delete mode 100644 contracts/test/tokens/NormalToken.sol delete mode 100644 contracts/test/tokens/PaymentToken.sol delete mode 100644 contracts/test/tokens/ReturnsFalseToken.sol delete mode 100644 contracts/test/tokens/SelfDestructingToken.sol delete mode 100644 contracts/test/tokens/TokenWithFees.sol create mode 100644 deploy/001_deploy.ts create mode 100644 deployments/kovan/.chainId create mode 100644 deployments/kovan/ClaimRewardsProxy.json create mode 100644 deployments/kovan/ClaimRewardsV1.json create mode 100644 deployments/kovan/GetOperatorDarknodes.json create mode 100644 deployments/kovan/Protocol.json create mode 100644 deployments/kovan/solcInputs/1d1b33ebee20e0af945d784a55de102c.json create mode 100644 hardhat.config.ts delete mode 100644 migrations/1_darknodes.js delete mode 100644 migrations/encode.js delete mode 100644 migrations/networks.js delete mode 100644 patches/@openzeppelin+contracts+2.5.1.patch delete mode 100644 patches/@openzeppelin+contracts-ethereum-package+2.5.0.patch create mode 100644 patches/solidity-coverage+0.7.16.patch create mode 100644 scripts/fundingFromCoinbase.ts create mode 100644 src/Bindings.sol rename {contracts/DarknodePayment => src}/ClaimRewards.sol (74%) create mode 100644 src/GetOperatorDarknodes.sol create mode 100644 src/Protocol.sol create mode 100644 src/RenProxyAdmin.sol create mode 100644 src/ValidString.sol delete mode 100644 templates/contract.hbs delete mode 100644 templates/helpers.js delete mode 100644 templates/prelude.sample.hbs delete mode 100644 test/ClaimlessRewards/ClaimlessRewards.ts delete mode 100644 test/ClaimlessRewards/steps.ts delete mode 100644 test/Compare.ts delete mode 100644 test/DarknodePayment.ts delete mode 100644 test/DarknodeRegistry.ts delete mode 100644 test/DarknodeSlasher.ts delete mode 100644 test/ERC20WithFees.ts delete mode 100644 test/LinkedList.ts create mode 100644 test/Protocol.test.ts delete mode 100644 test/Protocol.ts delete mode 100644 test/String.ts delete mode 100644 test/Validate.ts create mode 100644 test/chai-setup.ts delete mode 100644 test/helper/logs.ts delete mode 100644 test/helper/testUtils.ts create mode 100644 test/utils/index.ts delete mode 100644 truffle.js delete mode 100644 tslint.json delete mode 100644 types/chai/index.d.ts create mode 100644 utils/network.ts diff --git a/.circleci/config.yml b/.circleci/config.yml deleted file mode 100644 index e2814a8b..00000000 --- a/.circleci/config.yml +++ /dev/null @@ -1,44 +0,0 @@ -# Javascript Node CircleCI 2.0 configuration file -# -# Check https://circleci.com/docs/2.0/language-javascript/ for more details -# -version: 2.1 - -executors: - default: - docker: - - image: circleci/node:12.22 - working_directory: ~/darknode-sol - -commands: - install_deps: - description: "Install dependencies" - steps: - # Download and cache dependencies - - restore_cache: - name: Restore node_modules - keys: - - v2-dependencies-{{ checksum "yarn.lock" }} - - run: - name: Install Dependencies - command: yarn install - - save_cache: - name: Save node_modules - paths: - - node_modules - key: v2-dependencies-{{ checksum "yarn.lock" }} - -jobs: - build: - executor: default - steps: - - checkout - - install_deps - - run: - name: Run tests - command: NODE_OPTIONS=--max_old_space_size=4096 yarn run coverage && yarn run coveralls - -workflows: - build: - jobs: - - build diff --git a/.editorconfig b/.editorconfig new file mode 100644 index 00000000..e15b2b1d --- /dev/null +++ b/.editorconfig @@ -0,0 +1,12 @@ +root = true + +[*] +end_of_line = lf +insert_final_newline = true +charset = utf-8 +indent_style = space +indent_size = 2 +trim_trailing_whitespace = true + +[*.sol] +indent_size = 4 diff --git a/.eslintignore b/.eslintignore new file mode 100644 index 00000000..b45499ac --- /dev/null +++ b/.eslintignore @@ -0,0 +1,7 @@ +export/ +deployments/ +artifacts/ +cache/ +coverage/ +node_modules/ +typechain/ diff --git a/.eslintrc.js b/.eslintrc.js new file mode 100644 index 00000000..086aadd6 --- /dev/null +++ b/.eslintrc.js @@ -0,0 +1,22 @@ +module.exports = { + root: true, + parser: '@typescript-eslint/parser', + parserOptions: { + ecmaVersion: 2020, // Allows for the parsing of modern ECMAScript features + sourceType: 'module', // Allows for the use of imports + }, + env: { + commonjs: true, + }, + plugins: ['@typescript-eslint'], + extends: [ + 'eslint:recommended', + 'plugin:@typescript-eslint/recommended', + 'prettier', + ], + rules: { + 'no-empty': 'off', + 'no-empty-function': 'off', + '@typescript-eslint/no-empty-function': 'off', + }, +}; diff --git a/.gitattributes b/.gitattributes index 7cc88f06..6313b56c 100644 --- a/.gitattributes +++ b/.gitattributes @@ -1 +1 @@ -*.sol linguist-language=Solidity \ No newline at end of file +* text=auto eol=lf diff --git a/.github/ISSUE_TEMPLATE b/.github/ISSUE_TEMPLATE deleted file mode 100644 index 2b4d7bc1..00000000 --- a/.github/ISSUE_TEMPLATE +++ /dev/null @@ -1,19 +0,0 @@ -**Description** - -Describe the issue in as much detail as you can. - -**Expected Behavior** - -What is the expected behavior, compared to the behavior you are experiencing? - -**Steps to reproduce** - -Describe the steps to reproduce this issue. - -**Version** - -What version of the software is this issue relevant to? - -**Operating system** - -What operating system (and which version) are you using? diff --git a/.github/PULL_REQUEST_TEMPLATE b/.github/PULL_REQUEST_TEMPLATE deleted file mode 100644 index a198c54d..00000000 --- a/.github/PULL_REQUEST_TEMPLATE +++ /dev/null @@ -1,17 +0,0 @@ -**Description** - -What is being addressed by this PR? - -**Motivation** - -What is the motivation for this change? - -**Design** - -- How is the change going to be implemented? (Design) -- What packages that will be affected by this change? (Related work) -- What PRs will be affected by this change? (Related work) - -**Unresolved Issues** - -What is not addressed by this PR? \ No newline at end of file diff --git a/.github/workflows/main.yml b/.github/workflows/main.yml new file mode 100644 index 00000000..aefc5478 --- /dev/null +++ b/.github/workflows/main.yml @@ -0,0 +1,38 @@ +name: CI +on: push +jobs: + test: + runs-on: ubuntu-latest + steps: + - uses: actions/checkout@v1 + with: + fetch-depth: 1 + + - name: Setup Node.js + uses: actions/setup-node@v1 + with: + node-version: 12.18.0 + + - name: Get yarn cache directory path + id: yarn-cache-dir-path + run: echo "::set-output name=dir::$(yarn cache dir)" + + - uses: actions/cache@v2 + id: yarn-cache # use this to check for `cache-hit` (`steps.yarn-cache.outputs.cache-hit != 'true'`) + with: + path: ${{ steps.yarn-cache-dir-path.outputs.dir }} + key: ${{ runner.os }}-yarn-${{ hashFiles('**/yarn.lock') }} + restore-keys: | + ${{ runner.os }}-yarn- + + - name: Installing dependencies + run: yarn install --frozen-lockfile + + - name: Linting + run: yarn lint + + - name: Formatting + run: yarn format + + - name: Running tests + run: yarn test diff --git a/.gitignore b/.gitignore index 61efc5cb..cda5ea30 100644 --- a/.gitignore +++ b/.gitignore @@ -1,11 +1,12 @@ # Node / NPM / Yarn -node_modules +node_modules/ npm-debug.log* yarn-debug.log* yarn-error.log* # Build / test artifacts -coverage +coverage* +artifacts* dist coverageEnv coverage.json @@ -13,6 +14,10 @@ coverage.json .coverage_artifacts .coverage_contracts *output.log +typechain/ +contractsInfo.json +deployments/hardhat +deployments/localhost # Configuration files *.env @@ -30,3 +35,11 @@ build/development local_* bindings.go types + +.vscode/* +!.vscode/settings.json.default +!.vscode/launch.json.default +!.vscode/extensions.json.default + +.yalc +yalc.lock diff --git a/.npmignore b/.npmignore deleted file mode 100644 index 5d79c369..00000000 --- a/.npmignore +++ /dev/null @@ -1,44 +0,0 @@ -# Node / NPM / Yarn -node_modules -npm-debug.log* -yarn-debug.log* -yarn-error.log* - -# Build / test artifacts -coverage -dist -coverageEnv -coverage.json -.coveralls.yml -.coverage_artifacts -.coverage_contracts -*output.log - -# Configuration files -*.env -.env* - -# OS files -.DS_Store - -# Solidity -.node-xmlhttprequest-sync-* -scTopics -allFiredEvents -in_complete_tests -build/development -local_* -bindings.go -types - - -# npmignore - content above this line is automatically generated and modifications may be omitted -# see npmjs.com/npmignore for more details. -test -.circleci -.github -.vscode -.gitattributes -.solcover.js -tsconfig.json -tslint.json \ No newline at end of file diff --git a/.prettierignore b/.prettierignore new file mode 100644 index 00000000..b45499ac --- /dev/null +++ b/.prettierignore @@ -0,0 +1,7 @@ +export/ +deployments/ +artifacts/ +cache/ +coverage/ +node_modules/ +typechain/ diff --git a/.prettierrc.js b/.prettierrc.js new file mode 100644 index 00000000..3ab80ddc --- /dev/null +++ b/.prettierrc.js @@ -0,0 +1,15 @@ +module.exports = { + singleQuote: true, + bracketSpacing: false, + overrides: [ + { + files: '*.sol', + options: { + printWidth: 120, + tabWidth: 4, + singleQuote: false, + explicitTypes: 'always', + }, + }, + ], +}; diff --git a/.solcover.js b/.solcover.js deleted file mode 100644 index e05016bd..00000000 --- a/.solcover.js +++ /dev/null @@ -1,33 +0,0 @@ -module.exports = { - copyPackages: ["@openzeppelin/contracts-ethereum-package"], // needed to import from node_modules. - testrpcOptions: "-d --accounts 10 --port 8555", - skipFiles: [ - // REN token. - "RenToken/RenToken.sol", - - // Contract for building bindings. - "test/Bindings.sol", - - // Migration contract. - "migrations/Migrations.sol", - - // Examples - "Gateway/adapters/BasicAdapter.sol", - "Gateway/examples/Vesting.sol", - - // Contracts for assisting the tests. - "test/ERC20WithFeesTest.sol", - "test/tokens/ImpreciseToken.sol", - "test/tokens/SelfDestructingToken.sol", - "test/tokens/NonCompliantToken.sol", - "test/tokens/NormalToken.sol", - "test/tokens/ReturnsFalseToken.sol", - "test/tokens/TokenWithFees.sol", - "test/LinkedListTest.sol", - "test/ValidateTest.sol", - "test/StringTest.sol", - "test/CompareTest.sol", - "test/tokens/PaymentToken.sol", - "test/CycleChanger.sol" - ] -}; diff --git a/.solhint.json b/.solhint.json new file mode 100644 index 00000000..1d1de4c1 --- /dev/null +++ b/.solhint.json @@ -0,0 +1,20 @@ +{ + "extends": "solhint:recommended", + "plugins": ["prettier"], + "rules": { + "prettier/prettier": [ + "error", + { + "endOfLine": "auto" + } + ], + "code-complexity": ["error", 7], + "compiler-version": ["error", "^0.8.7"], + "const-name-snakecase": "off", + "func-name-mixedcase": "off", + "constructor-syntax": "error", + "func-visibility": ["error", {"ignoreConstructors": true}], + "not-rely-on-time": "off", + "reason-string": ["warn", {"maxLength": 64}] + } +} diff --git a/.solhintignore b/.solhintignore new file mode 100644 index 00000000..b45499ac --- /dev/null +++ b/.solhintignore @@ -0,0 +1,7 @@ +export/ +deployments/ +artifacts/ +cache/ +coverage/ +node_modules/ +typechain/ diff --git a/.vscode/extensions.json.default b/.vscode/extensions.json.default new file mode 100644 index 00000000..ff1dad39 --- /dev/null +++ b/.vscode/extensions.json.default @@ -0,0 +1,10 @@ +{ +"recommendations": [ + "dbaeumer.vscode-eslint", + "editorconfig.editorconfig", + "esbenp.prettier-vscode", + "hbenl.vscode-mocha-test-adapter", + "juanblanco.solidity" + ], + "unwantedRecommendations": [] +} diff --git a/.vscode/launch.json.default b/.vscode/launch.json.default new file mode 100644 index 00000000..cb581904 --- /dev/null +++ b/.vscode/launch.json.default @@ -0,0 +1,14 @@ +{ + "version": "0.2.0", + "configurations": [ + { + "type": "node", + "request": "launch", + "name": "hardhat node", + "skipFiles": ["/**"], + "runtimeExecutable": "${workspaceFolder}/node_modules/.bin/hardhat", + "args": ["node"], + "cwd": "${workspaceFolder}" + } + ] +} diff --git a/.vscode/settings.json b/.vscode/settings.json index 5436a0e9..1e79b19a 100644 --- a/.vscode/settings.json +++ b/.vscode/settings.json @@ -1,3 +1,19 @@ { - "solidity.packageDefaultDependenciesContractsDirectory": "" -} \ No newline at end of file + "editor.formatOnSave": true, + "editor.defaultFormatter": "esbenp.prettier-vscode", + "editor.codeActionsOnSave": { + "source.fixAll": true + }, + "solidity.linter": "solhint", + "solidity.defaultCompiler": "remote", + "solidity.compileUsingRemoteVersion": "v0.8.7+commit.e28d00a7", + "solidity.packageDefaultDependenciesContractsDirectory": "", + "solidity.enabledAsYouTypeCompilationErrorCheck": true, + "solidity.validationDelay": 1500, + "solidity.packageDefaultDependenciesDirectory": "node_modules", + "mochaExplorer.env": { + "HARDHAT_CONFIG": "hardhat.config.ts", + "HARDHAT_COMPILE": "true" + }, + "mochaExplorer.require": ["ts-node/register/transpile-only"] +} diff --git a/.vscode/settings.json.default b/.vscode/settings.json.default new file mode 100644 index 00000000..1e79b19a --- /dev/null +++ b/.vscode/settings.json.default @@ -0,0 +1,19 @@ +{ + "editor.formatOnSave": true, + "editor.defaultFormatter": "esbenp.prettier-vscode", + "editor.codeActionsOnSave": { + "source.fixAll": true + }, + "solidity.linter": "solhint", + "solidity.defaultCompiler": "remote", + "solidity.compileUsingRemoteVersion": "v0.8.7+commit.e28d00a7", + "solidity.packageDefaultDependenciesContractsDirectory": "", + "solidity.enabledAsYouTypeCompilationErrorCheck": true, + "solidity.validationDelay": 1500, + "solidity.packageDefaultDependenciesDirectory": "node_modules", + "mochaExplorer.env": { + "HARDHAT_CONFIG": "hardhat.config.ts", + "HARDHAT_COMPILE": "true" + }, + "mochaExplorer.require": ["ts-node/register/transpile-only"] +} diff --git a/README.md b/README.md index 3361bffd..f9a4a361 100644 --- a/README.md +++ b/README.md @@ -7,84 +7,126 @@ Ren has two repositories for its Solidity contract: -- `darknode-sol` (this repository) - contracts on Ethereum for managing darknode registrations. -- [`gateway-sol`](https://github.com/renproject/gateway-sol) - contracts on multiple EVM chains for minting and burning of ren-assets. +- `darknode-sol` (this repository) - contracts on Ethereum for managing darknode registrations. +- [`gateway-sol`](https://github.com/renproject/gateway-sol) - contracts on multiple EVM chains for minting and burning of ren-assets. Ren bootstraps off Ethereum to handle the REN token and darknode registrations. ## ~ [Documentation](https://renproject.github.io/ren-client-docs/contracts/) ~ -- For the latest contract addresses, see the [contract addresses](https://renproject.github.io/ren-client-docs/contracts/deployments) page. -- For a summary of each contract, see the [summary of contracts](https://renproject.github.io/ren-client-docs/contracts/summary) page. +- For the latest contract addresses, see the [contract addresses](https://renproject.github.io/ren-client-docs/contracts/deployments) page. +- For a summary of each contract, see the [summary of contracts](https://renproject.github.io/ren-client-docs/contracts/summary) page.
Development notes -## Tests +# Boilerplate for ethereum solidity smart contract development -Install the dependencies. +## INSTALL -``` -yarn install +```bash +yarn ``` -Run the `ganache-cli` or an alternate Ethereum test RPC server on port 8545. The `-d` flag will use a deterministic mnemonic for reproducibility. +## TEST -```sh -yarn ganache-cli -d +```bash +yarn test ``` -Run the Truffle test suite. +## SCRIPTS -```sh -yarn run test -``` +Here is the list of npm scripts you can execute: -## Coverage +Some of them relies on [./config/\_scripts.js](./config/_scripts.js) to allow parameterizing it via command line argument (have a look inside if you need modifications) +

-Run the Truffle test suite with coverage. +`yarn prepare` -```sh -yarn run coverage -``` +As a standard lifecycle npm script, it is executed automatically upon install. It generate config file and typechain to get you started with type safe contract interactions +

-Open the coverage file. +`yarn lint`, `yarn lint:fix`, `yarn format` and `yarn format:fix` -```sh -open ./coverage/index.html -``` +These will lint and format check your code. the `:fix` version will modifiy the files to match the requirement specified in `.eslintrc` and `.prettierrc.` +

-## Deploying +`yarn compile` -Add a `.env`, filling in the mnemonic and Infura key: +These will compile your contracts +

-```sh -MNEMONIC_KOVAN="..." -MNEMONIC_MAINNET="..." -INFURA_KEY="..." -``` +`yarn void:deploy` -Deploy to Kovan: +This will deploy your contracts on the in-memory hardhat network and exit, leaving no trace. quick way to ensure deployments work as intended without consequences +

-```sh -NETWORK=kovan yarn run deploy -``` +`yarn test [mocha args...]` -See `1_darknodes.js` for additional instructions. +These will execute your tests using mocha. you can pass extra arguments to mocha +

-## Verifying Contract Code +`yarn coverage` -Add an Etherscan API key to your `.env`: +These will produce a coverage report in the `coverage/` folder +

-``` -ETHERSCAN_KEY="..." -``` +`yarn gas` -Run the following (replacing the network and contract name): +These will produce a gas report for function used in the tests +

-```sh -NETWORK=mainnet yarn run verify Contract1 Contract2 -``` +`yarn dev` + +These will run a local hardhat network on `localhost:8545` and deploy your contracts on it. Plus it will watch for any changes and redeploy them. +

+ +`yarn local:dev` + +This assumes a local node it running on `localhost:8545`. It will deploy your contracts on it. Plus it will watch for any changes and redeploy them. +

+ +`yarn execute [args...]` + +This will execute the script `` against the specified network +

+ +`yarn deploy [args...]` + +This will deploy the contract on the specified network. + +Behind the scene it uses `hardhat deploy` command so you can append any argument for it +

+ +`yarn export ` + +This will export the abi+address of deployed contract to `` +

+ +`yarn fork:execute [--blockNumber ] [--deploy] [args...]` + +This will execute the script `` against a temporary fork of the specified network + +if `--deploy` is used, deploy scripts will be executed +

+ +`yarn fork:deploy [--blockNumber ] [args...]` + +This will deploy the contract against a temporary fork of the specified network. + +Behind the scene it uses `hardhat deploy` command so you can append any argument for it +

+ +`yarn fork:test [--blockNumber ] [mocha args...]` + +This will test the contract against a temporary fork of the specified network. +

+ +`yarn fork:dev [--blockNumber ] [args...]` + +This will deploy the contract against a fork of the specified network and it will keep running as a node. + +Behind the scene it uses `hardhat node` command so you can append any argument for it
diff --git a/cache/solidity-files-cache.json b/cache/solidity-files-cache.json new file mode 100644 index 00000000..ebf1b211 --- /dev/null +++ b/cache/solidity-files-cache.json @@ -0,0 +1,1142 @@ +{ + "_format": "hh-sol-cache-2", + "files": { + "/home/user/github/renproject/solidity/darknode-sol-v2/src/Bindings.sol": { + "lastModificationDate": 1629697399452, + "contentHash": "79790405364d1f5902251728ab35c510", + "sourceName": "src/Bindings.sol", + "solcConfig": { + "version": "0.8.7", + "settings": { + "optimizer": { + "enabled": false, + "runs": 200 + }, + "outputSelection": { + "*": { + "*": [ + "abi", + "evm.bytecode", + "evm.deployedBytecode", + "evm.methodIdentifiers", + "metadata", + "devdoc", + "userdoc", + "storageLayout", + "evm.gasEstimates" + ], + "": [ + "ast" + ] + } + }, + "metadata": { + "useLiteralContent": true + } + } + }, + "imports": [ + "./RenProxyAdmin.sol" + ], + "versionPragmas": [ + "^0.8.7" + ], + "artifacts": [ + "Bindings" + ] + }, + "/home/user/github/renproject/solidity/darknode-sol-v2/src/RenProxyAdmin.sol": { + "lastModificationDate": 1629697415468, + "contentHash": "aa0b27420e8dd93421e10f3ac68c7cac", + "sourceName": "src/RenProxyAdmin.sol", + "solcConfig": { + "version": "0.8.7", + "settings": { + "optimizer": { + "enabled": false, + "runs": 200 + }, + "outputSelection": { + "*": { + "*": [ + "abi", + "evm.bytecode", + "evm.deployedBytecode", + "evm.methodIdentifiers", + "metadata", + "devdoc", + "userdoc", + "storageLayout", + "evm.gasEstimates" + ], + "": [ + "ast" + ] + } + }, + "metadata": { + "useLiteralContent": true + } + } + }, + "imports": [ + "@openzeppelin/contracts/proxy/transparent/ProxyAdmin.sol" + ], + "versionPragmas": [ + "^0.8.7" + ], + "artifacts": [ + "RenProxyAdmin" + ] + }, + "/home/user/github/renproject/solidity/darknode-sol-v2/node_modules/@openzeppelin/contracts/proxy/transparent/ProxyAdmin.sol": { + "lastModificationDate": 1629696809276, + "contentHash": "229133ca3246b191261ba5bdfa2ab91a", + "sourceName": "@openzeppelin/contracts/proxy/transparent/ProxyAdmin.sol", + "solcConfig": { + "version": "0.8.7", + "settings": { + "optimizer": { + "enabled": false, + "runs": 200 + }, + "outputSelection": { + "*": { + "*": [ + "abi", + "evm.bytecode", + "evm.deployedBytecode", + "evm.methodIdentifiers", + "metadata", + "devdoc", + "userdoc", + "storageLayout", + "evm.gasEstimates" + ], + "": [ + "ast" + ] + } + }, + "metadata": { + "useLiteralContent": true + } + } + }, + "imports": [ + "./TransparentUpgradeableProxy.sol", + "../../access/Ownable.sol" + ], + "versionPragmas": [ + "^0.8.0" + ], + "artifacts": [ + "ProxyAdmin" + ] + }, + "/home/user/github/renproject/solidity/darknode-sol-v2/node_modules/@openzeppelin/contracts/proxy/transparent/TransparentUpgradeableProxy.sol": { + "lastModificationDate": 1629696809276, + "contentHash": "9a6e31a38e04c942d525824b7be729f1", + "sourceName": "@openzeppelin/contracts/proxy/transparent/TransparentUpgradeableProxy.sol", + "solcConfig": { + "version": "0.8.7", + "settings": { + "optimizer": { + "enabled": false, + "runs": 200 + }, + "outputSelection": { + "*": { + "*": [ + "abi", + "evm.bytecode", + "evm.deployedBytecode", + "evm.methodIdentifiers", + "metadata", + "devdoc", + "userdoc", + "storageLayout", + "evm.gasEstimates" + ], + "": [ + "ast" + ] + } + }, + "metadata": { + "useLiteralContent": true + } + } + }, + "imports": [ + "../ERC1967/ERC1967Proxy.sol" + ], + "versionPragmas": [ + "^0.8.0" + ], + "artifacts": [ + "TransparentUpgradeableProxy" + ] + }, + "/home/user/github/renproject/solidity/darknode-sol-v2/node_modules/@openzeppelin/contracts/access/Ownable.sol": { + "lastModificationDate": 1629696802084, + "contentHash": "4fe56b59ced59d87df6b796758f62895", + "sourceName": "@openzeppelin/contracts/access/Ownable.sol", + "solcConfig": { + "version": "0.8.7", + "settings": { + "optimizer": { + "enabled": false, + "runs": 200 + }, + "outputSelection": { + "*": { + "*": [ + "abi", + "evm.bytecode", + "evm.deployedBytecode", + "evm.methodIdentifiers", + "metadata", + "devdoc", + "userdoc", + "storageLayout", + "evm.gasEstimates" + ], + "": [ + "ast" + ] + } + }, + "metadata": { + "useLiteralContent": true + } + } + }, + "imports": [ + "../utils/Context.sol" + ], + "versionPragmas": [ + "^0.8.0" + ], + "artifacts": [ + "Ownable" + ] + }, + "/home/user/github/renproject/solidity/darknode-sol-v2/node_modules/@openzeppelin/contracts/proxy/ERC1967/ERC1967Proxy.sol": { + "lastModificationDate": 1629696809276, + "contentHash": "b12e929a2313d46515ebcecdcb157283", + "sourceName": "@openzeppelin/contracts/proxy/ERC1967/ERC1967Proxy.sol", + "solcConfig": { + "version": "0.8.7", + "settings": { + "optimizer": { + "enabled": false, + "runs": 200 + }, + "outputSelection": { + "*": { + "*": [ + "abi", + "evm.bytecode", + "evm.deployedBytecode", + "evm.methodIdentifiers", + "metadata", + "devdoc", + "userdoc", + "storageLayout", + "evm.gasEstimates" + ], + "": [ + "ast" + ] + } + }, + "metadata": { + "useLiteralContent": true + } + } + }, + "imports": [ + "../Proxy.sol", + "./ERC1967Upgrade.sol" + ], + "versionPragmas": [ + "^0.8.0" + ], + "artifacts": [ + "ERC1967Proxy" + ] + }, + "/home/user/github/renproject/solidity/darknode-sol-v2/node_modules/@openzeppelin/contracts/proxy/Proxy.sol": { + "lastModificationDate": 1629696802096, + "contentHash": "39dead889de1329620d1634e0b499e30", + "sourceName": "@openzeppelin/contracts/proxy/Proxy.sol", + "solcConfig": { + "version": "0.8.7", + "settings": { + "optimizer": { + "enabled": false, + "runs": 200 + }, + "outputSelection": { + "*": { + "*": [ + "abi", + "evm.bytecode", + "evm.deployedBytecode", + "evm.methodIdentifiers", + "metadata", + "devdoc", + "userdoc", + "storageLayout", + "evm.gasEstimates" + ], + "": [ + "ast" + ] + } + }, + "metadata": { + "useLiteralContent": true + } + } + }, + "imports": [], + "versionPragmas": [ + "^0.8.0" + ], + "artifacts": [ + "Proxy" + ] + }, + "/home/user/github/renproject/solidity/darknode-sol-v2/node_modules/@openzeppelin/contracts/proxy/ERC1967/ERC1967Upgrade.sol": { + "lastModificationDate": 1629696809276, + "contentHash": "0a0f799e1bf1527d28cfe1bd43fbab7f", + "sourceName": "@openzeppelin/contracts/proxy/ERC1967/ERC1967Upgrade.sol", + "solcConfig": { + "version": "0.8.7", + "settings": { + "optimizer": { + "enabled": false, + "runs": 200 + }, + "outputSelection": { + "*": { + "*": [ + "abi", + "evm.bytecode", + "evm.deployedBytecode", + "evm.methodIdentifiers", + "metadata", + "devdoc", + "userdoc", + "storageLayout", + "evm.gasEstimates" + ], + "": [ + "ast" + ] + } + }, + "metadata": { + "useLiteralContent": true + } + } + }, + "imports": [ + "../beacon/IBeacon.sol", + "../../utils/Address.sol", + "../../utils/StorageSlot.sol" + ], + "versionPragmas": [ + "^0.8.2" + ], + "artifacts": [ + "ERC1967Upgrade" + ] + }, + "/home/user/github/renproject/solidity/darknode-sol-v2/node_modules/@openzeppelin/contracts/proxy/beacon/IBeacon.sol": { + "lastModificationDate": 1629696809276, + "contentHash": "e1e6df7276b048c6b544c757c6e179ec", + "sourceName": "@openzeppelin/contracts/proxy/beacon/IBeacon.sol", + "solcConfig": { + "version": "0.8.7", + "settings": { + "optimizer": { + "enabled": false, + "runs": 200 + }, + "outputSelection": { + "*": { + "*": [ + "abi", + "evm.bytecode", + "evm.deployedBytecode", + "evm.methodIdentifiers", + "metadata", + "devdoc", + "userdoc", + "storageLayout", + "evm.gasEstimates" + ], + "": [ + "ast" + ] + } + }, + "metadata": { + "useLiteralContent": true + } + } + }, + "imports": [], + "versionPragmas": [ + "^0.8.0" + ], + "artifacts": [ + "IBeacon" + ] + }, + "/home/user/github/renproject/solidity/darknode-sol-v2/node_modules/@openzeppelin/contracts/utils/Address.sol": { + "lastModificationDate": 1629696802096, + "contentHash": "c5f6c4e4df069c789e7d84b4c3011913", + "sourceName": "@openzeppelin/contracts/utils/Address.sol", + "solcConfig": { + "version": "0.8.7", + "settings": { + "optimizer": { + "enabled": false, + "runs": 200 + }, + "outputSelection": { + "*": { + "*": [ + "abi", + "evm.bytecode", + "evm.deployedBytecode", + "evm.methodIdentifiers", + "metadata", + "devdoc", + "userdoc", + "storageLayout", + "evm.gasEstimates" + ], + "": [ + "ast" + ] + } + }, + "metadata": { + "useLiteralContent": true + } + } + }, + "imports": [], + "versionPragmas": [ + "^0.8.0" + ], + "artifacts": [ + "Address" + ] + }, + "/home/user/github/renproject/solidity/darknode-sol-v2/node_modules/@openzeppelin/contracts/utils/StorageSlot.sol": { + "lastModificationDate": 1629696802096, + "contentHash": "dcfdd37663042ccb99d67060a9eaebec", + "sourceName": "@openzeppelin/contracts/utils/StorageSlot.sol", + "solcConfig": { + "version": "0.8.7", + "settings": { + "optimizer": { + "enabled": false, + "runs": 200 + }, + "outputSelection": { + "*": { + "*": [ + "abi", + "evm.bytecode", + "evm.deployedBytecode", + "evm.methodIdentifiers", + "metadata", + "devdoc", + "userdoc", + "storageLayout", + "evm.gasEstimates" + ], + "": [ + "ast" + ] + } + }, + "metadata": { + "useLiteralContent": true + } + } + }, + "imports": [], + "versionPragmas": [ + "^0.8.0" + ], + "artifacts": [ + "StorageSlot" + ] + }, + "/home/user/github/renproject/solidity/darknode-sol-v2/node_modules/@openzeppelin/contracts/utils/Context.sol": { + "lastModificationDate": 1629696802096, + "contentHash": "851485d5b925529b1a2f34a0be077891", + "sourceName": "@openzeppelin/contracts/utils/Context.sol", + "solcConfig": { + "version": "0.8.7", + "settings": { + "optimizer": { + "enabled": false, + "runs": 200 + }, + "outputSelection": { + "*": { + "*": [ + "abi", + "evm.bytecode", + "evm.deployedBytecode", + "evm.methodIdentifiers", + "metadata", + "devdoc", + "userdoc", + "storageLayout", + "evm.gasEstimates" + ], + "": [ + "ast" + ] + } + }, + "metadata": { + "useLiteralContent": true + } + } + }, + "imports": [], + "versionPragmas": [ + "^0.8.0" + ], + "artifacts": [ + "Context" + ] + }, + "/home/user/github/renproject/solidity/darknode-sol-v2/src/ClaimRewards.sol": { + "lastModificationDate": 1629697415468, + "contentHash": "521d1bbc3f50aa7a34173154a87b8e65", + "sourceName": "src/ClaimRewards.sol", + "solcConfig": { + "version": "0.8.7", + "settings": { + "optimizer": { + "enabled": false, + "runs": 200 + }, + "outputSelection": { + "*": { + "*": [ + "abi", + "evm.bytecode", + "evm.deployedBytecode", + "evm.methodIdentifiers", + "metadata", + "devdoc", + "userdoc", + "storageLayout", + "evm.gasEstimates" + ], + "": [ + "ast" + ] + } + }, + "metadata": { + "useLiteralContent": true + } + } + }, + "imports": [ + "@openzeppelin/contracts/proxy/transparent/TransparentUpgradeableProxy.sol", + "./ValidString.sol" + ], + "versionPragmas": [ + "^0.8.7" + ], + "artifacts": [ + "ClaimRewardsProxy", + "ClaimRewardsV1" + ] + }, + "/home/user/github/renproject/solidity/darknode-sol-v2/src/ValidString.sol": { + "lastModificationDate": 1629697415468, + "contentHash": "3f44e7a2d9add00676e35599e96056f8", + "sourceName": "src/ValidString.sol", + "solcConfig": { + "version": "0.8.7", + "settings": { + "optimizer": { + "enabled": false, + "runs": 200 + }, + "outputSelection": { + "*": { + "*": [ + "abi", + "evm.bytecode", + "evm.deployedBytecode", + "evm.methodIdentifiers", + "metadata", + "devdoc", + "userdoc", + "storageLayout", + "evm.gasEstimates" + ], + "": [ + "ast" + ] + } + }, + "metadata": { + "useLiteralContent": true + } + } + }, + "imports": [], + "versionPragmas": [ + "^0.8.7" + ], + "artifacts": [ + "ValidString" + ] + }, + "/home/user/github/renproject/solidity/darknode-sol-v2/src/GetOperatorDarknodes.sol": { + "lastModificationDate": 1629697415468, + "contentHash": "08242bd0601f8303e473e3f3e86ecb4c", + "sourceName": "src/GetOperatorDarknodes.sol", + "solcConfig": { + "version": "0.8.7", + "settings": { + "optimizer": { + "enabled": false, + "runs": 200 + }, + "outputSelection": { + "*": { + "*": [ + "abi", + "evm.bytecode", + "evm.deployedBytecode", + "evm.methodIdentifiers", + "metadata", + "devdoc", + "userdoc", + "storageLayout", + "evm.gasEstimates" + ], + "": [ + "ast" + ] + } + }, + "metadata": { + "useLiteralContent": true + } + } + }, + "imports": [], + "versionPragmas": [ + "^0.8.7" + ], + "artifacts": [ + "GetOperatorDarknodes", + "IDarknodeRegistry" + ] + }, + "/home/user/github/renproject/solidity/darknode-sol-v2/src/Protocol.sol": { + "lastModificationDate": 1629697415468, + "contentHash": "fabd08492ee03e1a7d56c32e57bf17cf", + "sourceName": "src/Protocol.sol", + "solcConfig": { + "version": "0.8.7", + "settings": { + "optimizer": { + "enabled": false, + "runs": 200 + }, + "outputSelection": { + "*": { + "*": [ + "abi", + "evm.bytecode", + "evm.deployedBytecode", + "evm.methodIdentifiers", + "metadata", + "devdoc", + "userdoc", + "storageLayout", + "evm.gasEstimates" + ], + "": [ + "ast" + ] + } + }, + "metadata": { + "useLiteralContent": true + } + } + }, + "imports": [ + "@openzeppelin/contracts-upgradeable/access/AccessControlEnumerableUpgradeable.sol", + "@openzeppelin/contracts-upgradeable/access/AccessControlUpgradeable.sol", + "@openzeppelin/contracts-upgradeable/proxy/utils/Initializable.sol" + ], + "versionPragmas": [ + "^0.8.7" + ], + "artifacts": [ + "Protocol" + ] + }, + "/home/user/github/renproject/solidity/darknode-sol-v2/node_modules/@openzeppelin/contracts-upgradeable/access/AccessControlEnumerableUpgradeable.sol": { + "lastModificationDate": 1629696802036, + "contentHash": "564330c1f0463b7bfcb1d21e2b6242e6", + "sourceName": "@openzeppelin/contracts-upgradeable/access/AccessControlEnumerableUpgradeable.sol", + "solcConfig": { + "version": "0.8.7", + "settings": { + "optimizer": { + "enabled": false, + "runs": 200 + }, + "outputSelection": { + "*": { + "*": [ + "abi", + "evm.bytecode", + "evm.deployedBytecode", + "evm.methodIdentifiers", + "metadata", + "devdoc", + "userdoc", + "storageLayout", + "evm.gasEstimates" + ], + "": [ + "ast" + ] + } + }, + "metadata": { + "useLiteralContent": true + } + } + }, + "imports": [ + "./IAccessControlEnumerableUpgradeable.sol", + "./AccessControlUpgradeable.sol", + "../utils/structs/EnumerableSetUpgradeable.sol", + "../proxy/utils/Initializable.sol" + ], + "versionPragmas": [ + "^0.8.0" + ], + "artifacts": [ + "AccessControlEnumerableUpgradeable" + ] + }, + "/home/user/github/renproject/solidity/darknode-sol-v2/node_modules/@openzeppelin/contracts-upgradeable/access/AccessControlUpgradeable.sol": { + "lastModificationDate": 1629696802044, + "contentHash": "d512f0f42dd210288ac9843654910074", + "sourceName": "@openzeppelin/contracts-upgradeable/access/AccessControlUpgradeable.sol", + "solcConfig": { + "version": "0.8.7", + "settings": { + "optimizer": { + "enabled": false, + "runs": 200 + }, + "outputSelection": { + "*": { + "*": [ + "abi", + "evm.bytecode", + "evm.deployedBytecode", + "evm.methodIdentifiers", + "metadata", + "devdoc", + "userdoc", + "storageLayout", + "evm.gasEstimates" + ], + "": [ + "ast" + ] + } + }, + "metadata": { + "useLiteralContent": true + } + } + }, + "imports": [ + "./IAccessControlUpgradeable.sol", + "../utils/ContextUpgradeable.sol", + "../utils/StringsUpgradeable.sol", + "../utils/introspection/ERC165Upgradeable.sol", + "../proxy/utils/Initializable.sol" + ], + "versionPragmas": [ + "^0.8.0" + ], + "artifacts": [ + "AccessControlUpgradeable" + ] + }, + "/home/user/github/renproject/solidity/darknode-sol-v2/node_modules/@openzeppelin/contracts-upgradeable/proxy/utils/Initializable.sol": { + "lastModificationDate": 1629696809148, + "contentHash": "cbb8386f0120d46d66ff42dffbbc16c1", + "sourceName": "@openzeppelin/contracts-upgradeable/proxy/utils/Initializable.sol", + "solcConfig": { + "version": "0.8.7", + "settings": { + "optimizer": { + "enabled": false, + "runs": 200 + }, + "outputSelection": { + "*": { + "*": [ + "abi", + "evm.bytecode", + "evm.deployedBytecode", + "evm.methodIdentifiers", + "metadata", + "devdoc", + "userdoc", + "storageLayout", + "evm.gasEstimates" + ], + "": [ + "ast" + ] + } + }, + "metadata": { + "useLiteralContent": true + } + } + }, + "imports": [], + "versionPragmas": [ + "^0.8.0" + ], + "artifacts": [ + "Initializable" + ] + }, + "/home/user/github/renproject/solidity/darknode-sol-v2/node_modules/@openzeppelin/contracts-upgradeable/utils/structs/EnumerableSetUpgradeable.sol": { + "lastModificationDate": 1629696809152, + "contentHash": "3281c8bbb6f992e3b738a4e249b51e4c", + "sourceName": "@openzeppelin/contracts-upgradeable/utils/structs/EnumerableSetUpgradeable.sol", + "solcConfig": { + "version": "0.8.7", + "settings": { + "optimizer": { + "enabled": false, + "runs": 200 + }, + "outputSelection": { + "*": { + "*": [ + "abi", + "evm.bytecode", + "evm.deployedBytecode", + "evm.methodIdentifiers", + "metadata", + "devdoc", + "userdoc", + "storageLayout", + "evm.gasEstimates" + ], + "": [ + "ast" + ] + } + }, + "metadata": { + "useLiteralContent": true + } + } + }, + "imports": [], + "versionPragmas": [ + "^0.8.0" + ], + "artifacts": [ + "EnumerableSetUpgradeable" + ] + }, + "/home/user/github/renproject/solidity/darknode-sol-v2/node_modules/@openzeppelin/contracts-upgradeable/utils/ContextUpgradeable.sol": { + "lastModificationDate": 1629696802084, + "contentHash": "3eaa562e66c40d85f919cc6ee5059ebe", + "sourceName": "@openzeppelin/contracts-upgradeable/utils/ContextUpgradeable.sol", + "solcConfig": { + "version": "0.8.7", + "settings": { + "optimizer": { + "enabled": false, + "runs": 200 + }, + "outputSelection": { + "*": { + "*": [ + "abi", + "evm.bytecode", + "evm.deployedBytecode", + "evm.methodIdentifiers", + "metadata", + "devdoc", + "userdoc", + "storageLayout", + "evm.gasEstimates" + ], + "": [ + "ast" + ] + } + }, + "metadata": { + "useLiteralContent": true + } + } + }, + "imports": [ + "../proxy/utils/Initializable.sol" + ], + "versionPragmas": [ + "^0.8.0" + ], + "artifacts": [ + "ContextUpgradeable" + ] + }, + "/home/user/github/renproject/solidity/darknode-sol-v2/node_modules/@openzeppelin/contracts-upgradeable/utils/StringsUpgradeable.sol": { + "lastModificationDate": 1629696802084, + "contentHash": "80d3ad01fbd728e8a0dcde979c610377", + "sourceName": "@openzeppelin/contracts-upgradeable/utils/StringsUpgradeable.sol", + "solcConfig": { + "version": "0.8.7", + "settings": { + "optimizer": { + "enabled": false, + "runs": 200 + }, + "outputSelection": { + "*": { + "*": [ + "abi", + "evm.bytecode", + "evm.deployedBytecode", + "evm.methodIdentifiers", + "metadata", + "devdoc", + "userdoc", + "storageLayout", + "evm.gasEstimates" + ], + "": [ + "ast" + ] + } + }, + "metadata": { + "useLiteralContent": true + } + } + }, + "imports": [], + "versionPragmas": [ + "^0.8.0" + ], + "artifacts": [ + "StringsUpgradeable" + ] + }, + "/home/user/github/renproject/solidity/darknode-sol-v2/node_modules/@openzeppelin/contracts-upgradeable/utils/introspection/ERC165Upgradeable.sol": { + "lastModificationDate": 1629696809152, + "contentHash": "3649e7528117ffc7d8a3ccf199b0c6d8", + "sourceName": "@openzeppelin/contracts-upgradeable/utils/introspection/ERC165Upgradeable.sol", + "solcConfig": { + "version": "0.8.7", + "settings": { + "optimizer": { + "enabled": false, + "runs": 200 + }, + "outputSelection": { + "*": { + "*": [ + "abi", + "evm.bytecode", + "evm.deployedBytecode", + "evm.methodIdentifiers", + "metadata", + "devdoc", + "userdoc", + "storageLayout", + "evm.gasEstimates" + ], + "": [ + "ast" + ] + } + }, + "metadata": { + "useLiteralContent": true + } + } + }, + "imports": [ + "./IERC165Upgradeable.sol", + "../../proxy/utils/Initializable.sol" + ], + "versionPragmas": [ + "^0.8.0" + ], + "artifacts": [ + "ERC165Upgradeable" + ] + }, + "/home/user/github/renproject/solidity/darknode-sol-v2/node_modules/@openzeppelin/contracts-upgradeable/utils/introspection/IERC165Upgradeable.sol": { + "lastModificationDate": 1629696809152, + "contentHash": "4db71815975139b4bcedb3b615131302", + "sourceName": "@openzeppelin/contracts-upgradeable/utils/introspection/IERC165Upgradeable.sol", + "solcConfig": { + "version": "0.8.7", + "settings": { + "optimizer": { + "enabled": false, + "runs": 200 + }, + "outputSelection": { + "*": { + "*": [ + "abi", + "evm.bytecode", + "evm.deployedBytecode", + "evm.methodIdentifiers", + "metadata", + "devdoc", + "userdoc", + "storageLayout", + "evm.gasEstimates" + ], + "": [ + "ast" + ] + } + }, + "metadata": { + "useLiteralContent": true + } + } + }, + "imports": [], + "versionPragmas": [ + "^0.8.0" + ], + "artifacts": [ + "IERC165Upgradeable" + ] + }, + "/home/user/github/renproject/solidity/darknode-sol-v2/node_modules/@openzeppelin/contracts-upgradeable/access/IAccessControlEnumerableUpgradeable.sol": { + "lastModificationDate": 1629696802024, + "contentHash": "91e654b7cc2afc1bb19144cf3634d65a", + "sourceName": "@openzeppelin/contracts-upgradeable/access/IAccessControlEnumerableUpgradeable.sol", + "solcConfig": { + "version": "0.8.7", + "settings": { + "optimizer": { + "enabled": false, + "runs": 200 + }, + "outputSelection": { + "*": { + "*": [ + "abi", + "evm.bytecode", + "evm.deployedBytecode", + "evm.methodIdentifiers", + "metadata", + "devdoc", + "userdoc", + "storageLayout", + "evm.gasEstimates" + ], + "": [ + "ast" + ] + } + }, + "metadata": { + "useLiteralContent": true + } + } + }, + "imports": [ + "./IAccessControlUpgradeable.sol" + ], + "versionPragmas": [ + "^0.8.0" + ], + "artifacts": [ + "IAccessControlEnumerableUpgradeable" + ] + }, + "/home/user/github/renproject/solidity/darknode-sol-v2/node_modules/@openzeppelin/contracts-upgradeable/access/IAccessControlUpgradeable.sol": { + "lastModificationDate": 1629696802024, + "contentHash": "1712dd281e6d713718f5f08fbb020589", + "sourceName": "@openzeppelin/contracts-upgradeable/access/IAccessControlUpgradeable.sol", + "solcConfig": { + "version": "0.8.7", + "settings": { + "optimizer": { + "enabled": false, + "runs": 200 + }, + "outputSelection": { + "*": { + "*": [ + "abi", + "evm.bytecode", + "evm.deployedBytecode", + "evm.methodIdentifiers", + "metadata", + "devdoc", + "userdoc", + "storageLayout", + "evm.gasEstimates" + ], + "": [ + "ast" + ] + } + }, + "metadata": { + "useLiteralContent": true + } + } + }, + "imports": [], + "versionPragmas": [ + "^0.8.0" + ], + "artifacts": [ + "IAccessControlUpgradeable" + ] + } + } +} diff --git a/config/.mocharc.js b/config/.mocharc.js new file mode 100644 index 00000000..0f6439bf --- /dev/null +++ b/config/.mocharc.js @@ -0,0 +1,19 @@ +'use strict'; +process.env.TS_NODE_FILES = true; +module.exports = { + 'allow-uncaught': true, + diff: true, + extension: ['ts'], + recursive: true, + reporter: 'spec', + require: ['ts-node/register', 'hardhat/register'], // ['ts-node/register/transpile-only'], (for yarn link ) + slow: 300, + spec: 'test/**/*.test.ts', + timeout: 20000, + ui: 'bdd', + watch: false, + exit: true, + 'watch-files': ['src/**/*.sol', 'test/**/*.ts'], + bail: true, + recursive: true, +}; diff --git a/config/.setup.js b/config/.setup.js new file mode 100644 index 00000000..9cdc9fee --- /dev/null +++ b/config/.setup.js @@ -0,0 +1,14 @@ +#!/usr/bin/env node +const fs = require('fs'); +function copyFromDefault(p) { + if (!fs.existsSync(p)) { + const defaultFile = `${p}.default`; + if (fs.existsSync(defaultFile)) { + fs.copyFileSync(`${p}.default`, p); + } + } +} + +['.vscode/settings.json', '.vscode/extensions.json', '.vscode/launch.json'].map( + copyFromDefault +); diff --git a/config/_scripts.js b/config/_scripts.js new file mode 100644 index 00000000..94a92559 --- /dev/null +++ b/config/_scripts.js @@ -0,0 +1,164 @@ +#!/usr/bin/env node +'use strict'; +/* eslint-disable no-undef */ +/* eslint-disable @typescript-eslint/no-var-requires */ +const {spawn} = require('child_process'); +require('dotenv').config(); + +const commandlineArgs = process.argv.slice(2); + +function parseArgs(rawArgs, numFixedArgs, expectedOptions) { + const fixedArgs = []; + const options = {}; + const extra = []; + const alreadyCounted = {}; + for (let i = 0; i < rawArgs.length; i++) { + const rawArg = rawArgs[i]; + if (rawArg.startsWith('--')) { + const optionName = rawArg.slice(2); + const optionDetected = expectedOptions[optionName]; + if (!alreadyCounted[optionName] && optionDetected) { + alreadyCounted[optionName] = true; + if (optionDetected === 'boolean') { + options[optionName] = true; + } else { + i++; + options[optionName] = rawArgs[i]; + } + } else { + if (fixedArgs.length < numFixedArgs) { + throw new Error( + `expected ${numFixedArgs} fixed args, got only ${fixedArgs.length}` + ); + } else { + extra.push(rawArg); + } + } + } else { + if (fixedArgs.length < numFixedArgs) { + fixedArgs.push(rawArg); + } else { + for (const opt of Object.keys(expectedOptions)) { + alreadyCounted[opt] = true; + } + extra.push(rawArg); + } + } + } + return {options, extra, fixedArgs}; +} + +function execute(command) { + return new Promise((resolve, reject) => { + const onExit = (error) => { + if (error) { + return reject(error); + } + resolve(); + }; + spawn(command.split(' ')[0], command.split(' ').slice(1), { + stdio: 'inherit', + shell: true, + }).on('exit', onExit); + }); +} + +async function performAction(rawArgs) { + const firstArg = rawArgs[0]; + const args = rawArgs.slice(1); + if (firstArg === 'run') { + const {fixedArgs, extra} = parseArgs(args, 2, {}); + await execute( + `cross-env HARDHAT_DEPLOY_LOG=true HARDHAT_NETWORK=${ + fixedArgs[0] + } ts-node --files ${fixedArgs[1]} ${extra.join(' ')}` + ); + } else if (firstArg === 'deploy') { + const {fixedArgs, extra} = parseArgs(args, 1, {}); + await execute( + `hardhat --network ${fixedArgs[0]} deploy ${extra.join(' ')}` + ); + } else if (firstArg === 'export') { + const {fixedArgs} = parseArgs(args, 2, {}); + await execute( + `hardhat --network ${fixedArgs[0]} export --export ${fixedArgs[1]}` + ); + } else if (firstArg === 'fork:run') { + const {fixedArgs, options, extra} = parseArgs(args, 2, { + deploy: 'boolean', + blockNumber: 'string', + 'no-impersonation': 'boolean', + }); + await execute( + `cross-env ${ + options.deploy ? 'HARDHAT_DEPLOY_FIXTURE=true' : '' + } HARDHAT_DEPLOY_LOG=true HARDHAT_FORK=${fixedArgs[0]} ${ + options.blockNumber ? `HARDHAT_FORK_NUMBER=${options.blockNumber}` : '' + } ${ + options['no-impersonation'] + ? `HARDHAT_DEPLOY_NO_IMPERSONATION=true` + : '' + } ts-node --files ${fixedArgs[1]} ${extra.join(' ')}` + ); + } else if (firstArg === 'fork:deploy') { + const {fixedArgs, options, extra} = parseArgs(args, 1, { + blockNumber: 'string', + 'no-impersonation': 'boolean', + }); + await execute( + `cross-env HARDHAT_FORK=${fixedArgs[0]} ${ + options.blockNumber ? `HARDHAT_FORK_NUMBER=${options.blockNumber}` : '' + } ${ + options['no-impersonation'] + ? `HARDHAT_DEPLOY_NO_IMPERSONATION=true` + : '' + } hardhat deploy ${extra.join(' ')}` + ); + } else if (firstArg === 'fork:node') { + const {fixedArgs, options, extra} = parseArgs(args, 1, { + blockNumber: 'string', + 'no-impersonation': 'boolean', + }); + await execute( + `cross-env HARDHAT_FORK=${fixedArgs[0]} ${ + options.blockNumber ? `HARDHAT_FORK_NUMBER=${options.blockNumber}` : '' + } ${ + options['no-impersonation'] + ? `HARDHAT_DEPLOY_NO_IMPERSONATION=true` + : '' + } hardhat node ${extra.join(' ')}` + ); + } else if (firstArg === 'fork:test') { + const {fixedArgs, options, extra} = parseArgs(args, 1, { + blockNumber: 'string', + 'no-impersonation': 'boolean', + }); + await execute( + `cross-env HARDHAT_FORK=${fixedArgs[0]} ${ + options.blockNumber ? `HARDHAT_FORK_NUMBER=${options.blockNumber}` : '' + } ${ + options['no-impersonation'] + ? `HARDHAT_DEPLOY_NO_IMPERSONATION=true` + : '' + } HARDHAT_DEPLOY_FIXTURE=true HARDHAT_COMPILE=true mocha --bail --recursive test ${extra.join( + ' ' + )}` + ); + } else if (firstArg === 'fork:dev') { + const {fixedArgs, options, extra} = parseArgs(args, 1, { + blockNumber: 'string', + 'no-impersonation': 'boolean', + }); + await execute( + `cross-env HARDHAT_FORK=${fixedArgs[0]} ${ + options.blockNumber ? `HARDHAT_FORK_NUMBER=${options.blockNumber}` : '' + } ${ + options['no-impersonation'] + ? `HARDHAT_DEPLOY_NO_IMPERSONATION=true` + : '' + } hardhat node --watch --export contractsInfo.json ${extra.join(' ')}` + ); + } +} + +performAction(commandlineArgs); diff --git a/contracts/Bindings.sol b/contracts/Bindings.sol deleted file mode 100644 index 1b1b281e..00000000 --- a/contracts/Bindings.sol +++ /dev/null @@ -1,17 +0,0 @@ -pragma solidity 0.5.17; - -import "./DarknodePayment/ClaimRewards.sol"; -import "./DarknodePayment/DarknodePayment.sol"; -import "./DarknodePayment/DarknodePaymentStore.sol"; -import "./DarknodeRegistry/DarknodeRegistry.sol"; -import "./DarknodeRegistry/DarknodeRegistryStore.sol"; -import "./DarknodeRegistry/GetOperatorDarknodes.sol"; -import "./DarknodeSlasher/DarknodeSlasher.sol"; -import "./RenToken/RenToken.sol"; -import "./Protocol/Protocol.sol"; - -/// @notice Bindings imports all of the contracts for generating bindings. -/* solium-disable-next-line no-empty-blocks */ -contract Bindings { - -} diff --git a/contracts/DarknodePayment/ClaimlessRewards.sol b/contracts/DarknodePayment/ClaimlessRewards.sol deleted file mode 100644 index 21d9049a..00000000 --- a/contracts/DarknodePayment/ClaimlessRewards.sol +++ /dev/null @@ -1,706 +0,0 @@ -pragma solidity ^0.5.17; - -import "@openzeppelin/contracts-ethereum-package/contracts/math/SafeMath.sol"; -import "@openzeppelin/contracts-ethereum-package/contracts/token/ERC20/ERC20.sol"; -import "@openzeppelin/contracts-ethereum-package/contracts/token/ERC20/SafeERC20.sol"; - -import "../DarknodeRegistry/DarknodeRegistry.sol"; -import "./DarknodePaymentStore.sol"; -import "../libraries/LinkedList.sol"; -import "../Governance/Claimable.sol"; - -contract ClaimlessRewardsEvents { - /// @notice Emitted when a node calls withdraw - /// @param _payee The address of the node which withdrew - /// @param _value The amount of DAI withdrawn - /// @param _token The address of the token that was withdrawn - event LogDarknodeWithdrew( - address indexed _payee, - uint256 _value, - address indexed _token - ); - - /// @notice Emitted when the cycle is changed. - /// @param _newTimestamp The start timestamp of the new cycle. - /// @param _previousTimestamp The start timestamp of the previous cycle. - /// @param _shareCount The number of darknodes at the end of the previous - /// cycle. - event LogCycleChanged( - uint256 _newTimestamp, - uint256 _previousTimestamp, - uint256 _shareCount - ); - - /// @notice Emitted when the node payout percent changes. - /// @param _newNumerator The new numerator. - /// @param _oldNumerator The old numerator. - event LogHourlyPayoutChanged(uint256 _newNumerator, uint256 _oldNumerator); - - /// @notice Emitted when the community fund percent changes. - /// @param _newNumerator The new numerator. - /// @param _oldNumerator The old numerator. - event LogCommunityFundNumeratorChanged( - uint256 _newNumerator, - uint256 _oldNumerator - ); - - /// @notice Emitted when a new token is registered. - /// @param _token The token that was registered. - event LogTokenRegistered(address indexed _token); - - /// @notice Emitted when a token is deregistered. - /// @param _token The token that was deregistered. - event LogTokenDeregistered(address indexed _token); - - /// @notice Emitted when the DarknodeRegistry is updated. - /// @param _previousDarknodeRegistry The address of the old registry. - /// @param _nextDarknodeRegistry The address of the new registry. - event LogDarknodeRegistryUpdated( - DarknodeRegistryLogicV1 indexed _previousDarknodeRegistry, - DarknodeRegistryLogicV1 indexed _nextDarknodeRegistry - ); - - /// @notice Emitted when the community fund recipient is updated. - /// @param _previousCommunityFund The address of the old community fund. - /// @param _nextCommunityFund The address of the new community fund. - event LogCommunityFundUpdated( - address indexed _previousCommunityFund, - address indexed _nextCommunityFund - ); -} - -contract ClaimlessRewardsState { - using LinkedList for LinkedList.List; - - /// @notice The special address for the collective funds that haven't been - /// withdrawn yet. - address public constant POOLED_REWARDS = address(0); - - /// @notice The address of the Darknode Registry, used to look up the - /// operators of nodes and the number of registered nodes. - /// Passed in as a constructor parameter. - DarknodeRegistryLogicV1 public darknodeRegistry; - - /// @notice DarknodePaymentStore stores the rewards until they are paid out. - DarknodePaymentStore public store; // Passed in as a constructor parameter. - - /// @notice Mapping from token -> amount. - /// The amount of rewards allocated for each node. - mapping(uint256 => mapping(address => uint256)) - public cycleCumulativeTokenShares; - - /// @notice Mapping of node -> token -> last claimed timestamp - /// Used to keep track of which nodes have already claimed their rewards. - mapping(address => mapping(address => uint256)) public rewardsLastClaimed; - - uint256 public latestCycleTimestamp; - uint256[] public epochTimestamps; - - /// @notice The list of tokens which are already registered and rewards can - /// be claimed for. - LinkedList.List internal registeredTokens; - - /// @notice The list of deregistered tokens, tracked to ensure that users - /// can still withdraw rewards for tokens that have been deregistered. - LinkedList.List internal deregisteredTokens; - - /// @notice The recipient of a proportion of rewards. The proportion can be - /// updated, allowing this to be governed by a DAO. - address public communityFund; - - /// @notice The denominator used by `hourlyPayoutWithheldNumerator` and - /// `communityFundNumerator`. - uint256 public constant HOURLY_PAYOUT_WITHHELD_DENOMINATOR = 1000000; - - /// @notice The proportion of the payout that is withheld each hour to be - /// paid out over future cycles. - /// The target payout is 50% over 28 days, so the following was calculated - /// as `0.5 ** (1 / (28 * 24))`. - /// Rounding is done in favor of the current cycle payout instead of the - /// rewards withheld for future cycles. - uint256 public hourlyPayoutWithheldNumerator = 998969; - - /// @notice The proportion of the reward pool that goes to the community - /// fund. `communityFundNumerator` can be set to 0 to disable rewards going - /// to the fund. - uint256 public communityFundNumerator; -} - -contract ClaimlessRewardsTokenHandler is - Ownable, - ClaimlessRewardsEvents, - ClaimlessRewardsState -{ - using SafeERC20 for ERC20; - - /// @notice Adds tokens to be payable. Registration is pending until next - /// cycle. - /// - /// @param _token The address of the token to be registered. - function registerToken(address _token) external onlyOwner { - require( - !registeredTokens.isInList(_token), - "ClaimlessRewards: token already registered" - ); - registeredTokens.append(_token); - - // Remove from deregistered tokens. - if (deregisteredTokens.isInList(_token)) { - deregisteredTokens.remove(_token); - } - } - - /// @notice Removes a token from the list of supported tokens. - /// Deregistration is pending until next cycle. - /// - /// @param _token The address of the token to be deregistered. - function deregisterToken(address _token) external onlyOwner { - require( - registeredTokens.isInList(_token), - "ClaimlessRewards: token not registered" - ); - registeredTokens.remove(_token); - - // Add to deregistered tokens. This check should always be true. - if (!deregisteredTokens.isInList(_token)) { - deregisteredTokens.append(_token); - } - } - - /// @notice (external view) Returns the full list of registered tokens. - function getRegisteredTokens() external view returns (address[] memory) { - address[] memory tokens = new address[](registeredTokens.length); - address nextToken = registeredTokens.begin(); - for (uint256 i = 0; i < tokens.length; i++) { - tokens[i] = nextToken; - - // Take next token. - nextToken = registeredTokens.next(nextToken); - } - return tokens; - } - - /// @notice (external view) Returns whether a token is registered. - function isRegistered(address _token) external view returns (bool) { - return registeredTokens.isInList(_token); - } - - /// @notice Forwards any balance held by this contract on to the store. - /// - /// @param _token The token to forward. For ETH, this is 0xeeee... . - function forward(address _token) external { - // If no token has been provided, forward ETH. - if (_token == address(0x0)) { - address(store).transfer(address(this).balance); - } else { - ERC20(_token).safeTransfer( - address(store), - ERC20(_token).balanceOf(address(this)) - ); - } - } -} - -contract ClaimlessRewardsAdminHandler is - Ownable, - ClaimlessRewardsEvents, - ClaimlessRewardsState -{ - /// @notice Allows the contract owner to update the address of the - /// Darknode Registry contract. - /// @param _darknodeRegistry The address of the new Darknode Registry - /// contract. - function updateDarknodeRegistry(DarknodeRegistryLogicV1 _darknodeRegistry) - external - onlyOwner - { - _updateDarknodeRegistry(_darknodeRegistry); - } - - /// @notice Allows the contract owner to update the address of the new dev - /// fund. - /// @param _communityFund The address of new community fund address. - function updateCommunityFund(address _communityFund) external onlyOwner { - _updateCommunityFund(_communityFund); - } - - /// @notice Updates the proportion of the rewards that are withheld to be - /// paid out over future cycles. - /// - /// @param _numerator The numerator of payout for darknodes. - function updateHourlyPayoutWithheld(uint256 _numerator) external onlyOwner { - require( - _numerator <= HOURLY_PAYOUT_WITHHELD_DENOMINATOR, - "ClaimlessRewards: invalid numerator" - ); - - // Emit before updating so that the old payout can be logged. - emit LogHourlyPayoutChanged(_numerator, hourlyPayoutWithheldNumerator); - hourlyPayoutWithheldNumerator = _numerator; - } - - /// @notice Updates the proportion of the rewards that are withheld to be - /// sent to the community fund. - /// - /// @param _numerator The numerator of payout for darknodes. - function updateCommunityFundNumerator(uint256 _numerator) - external - onlyOwner - { - _updateCommunityFundNumerator(_numerator); - } - - /// @notice Allows the contract owner to initiate an ownership transfer of - /// the DarknodePaymentStore. - /// - /// @param _newOwner The address to transfer the ownership to. - function transferStoreOwnership(ClaimlessRewardsAdminHandler _newOwner) - external - onlyOwner - { - store.transferOwnership(address(_newOwner)); - _newOwner.claimStoreOwnership(); - } - - /// @notice Claims ownership of the store passed in to the constructor. - /// `transferStoreOwnership` must have previously been called when - /// transferring from another DarknodePaymentStore. - function claimStoreOwnership() external { - store.claimOwnership(); - } - - /// @notice See `updateDarknodeRegistry`. - function _updateDarknodeRegistry(DarknodeRegistryLogicV1 _darknodeRegistry) - internal - { - require( - address(_darknodeRegistry) != address(0x0), - "ClaimlessRewards: invalid Darknode Registry address" - ); - - // Emit before updating so that the old registry can be logged. - emit LogDarknodeRegistryUpdated(_darknodeRegistry, darknodeRegistry); - darknodeRegistry = _darknodeRegistry; - } - - /// @notice See `updateCommunityFund`. - function _updateCommunityFund(address _communityFund) internal { - // Ensure that the community fund is set properly, and that it's not the - // POOLED_REWARDS address, which would allow the darknode rewards to - // be withdrawn to the community fund. - require( - address(_communityFund) != address(0x0), - "ClaimlessRewards: invalid community fund address" - ); - - // Ensure that the community fund isn't a registered node (this would - // allow anyone to withdraw the node's legacy rewards to the node's - // address - not a big issue, but disallowed nonetheless). - require( - darknodeRegistry.getDarknodeOperator(_communityFund) == - address(0x0), - "ClaimlessRewards: community fund must not be a registered darknode" - ); - - // Emit before updating so that the old registry can be logged. - emit LogCommunityFundUpdated(_communityFund, communityFund); - communityFund = _communityFund; - } - - /// @notice See `_updateCommunityFundNumerator`. - function _updateCommunityFundNumerator(uint256 _numerator) internal { - require( - _numerator <= HOURLY_PAYOUT_WITHHELD_DENOMINATOR, - "ClaimlessRewards: invalid numerator" - ); - - // Emit before updating so that the old payout can be logged. - emit LogCommunityFundNumeratorChanged( - _numerator, - communityFundNumerator - ); - communityFundNumerator = _numerator; - } -} - -contract ClaimlessRewardsCycleHandler is - ClaimlessRewardsEvents, - ClaimlessRewardsState -{ - using SafeMath for uint256; - - /// @notice (external view) Return the length of the array of cycle - /// timestamps. This makes it easier for clients to loop through them. - function epochTimestampsLength() external view returns (uint256) { - return epochTimestamps.length; - } - - /// @notice (external view) Returns the full array of timestamps. If this - /// grows too large to return, they should be fetched one-by-one or by - /// fetching tx logs. - function getEpochTimestamps() external view returns (uint256[] memory) { - return epochTimestamps; - } - - /// @notice Changes the current cycle. - /// Callable by anyone. - function changeCycle() external returns (uint256) { - uint256 numerator = hourlyPayoutWithheldNumerator; - uint256 denominator = HOURLY_PAYOUT_WITHHELD_DENOMINATOR; - - uint256 newCycleTimestamp; - uint256 rewardsWithheldNumerator = denominator; - uint256 cycleTimestamp = latestCycleTimestamp; - uint256 currentCommunityFundNumerator = communityFundNumerator; - - for ( - uint256 hour = cycleTimestamp; - hour <= block.timestamp; - hour += 1 hours - ) { - rewardsWithheldNumerator = rewardsWithheldNumerator - .mul(numerator) - .div(denominator); - newCycleTimestamp = hour; - } - - // If the caller is the Darknode Registry, set the cycle timestamp to be - // the current timestamp so that the cycle and epoch are in sync - // (instead of rounding down by up to an hour). This ensures that any - // newly registered darknodes don't lose the fees until the next cycle. - // The difference in time won't get counted in the rewards paiout - // schedule. - // Also, if the caller is the darknode registry, use the number of - // darknodes in the previous epoch instead of the new once, since the - // implementation calls `changeCycle` at the end of the epoch update, - // not the start. - uint256 shareCount; - if (msg.sender == address(darknodeRegistry)) { - newCycleTimestamp = block.timestamp; - shareCount = darknodeRegistry.numDarknodesPreviousEpoch(); - epochTimestamps.push(newCycleTimestamp); - } else { - shareCount = darknodeRegistry.numDarknodes(); - } - - // Require that at least an hour has passed since the last cycle, or, - // if being called from the epoch function, that cycle wasn't called - // previously in the same block. - require( - newCycleTimestamp > cycleTimestamp, - "ClaimlessRewards: previous cycle too recent" - ); - - // Snapshot balances for the past cycle - address nextToken = registeredTokens.begin(); - while (nextToken != address(0x0)) { - { - uint256 total = store.availableBalance(nextToken); - uint256 totalWithheld = - (total.mul(rewardsWithheldNumerator)).div(denominator); - - // The amount being paid out to the darknodes and the community - // fund. - uint256 totalPayout = total.sub(totalWithheld); - - // The amount being paid out to the community fund. - uint256 communityFundPayout = - totalPayout.mul(currentCommunityFundNumerator).div( - denominator - ); - - // The amount being paid out to the darknodes. - uint256 nodePayout = totalPayout.sub(communityFundPayout); - - // The amount being paid out to each indidivual darknode. - uint256 share = - shareCount == 0 ? 0 : nodePayout.div(shareCount); - - // The amount being paid out to the darknodes after ignoring - // the amount left-over from dividing. - uint256 nodePayoutAdjusted = share.mul(shareCount); - - // Store funds that can now be withdrawn by darknodes. - if (nodePayoutAdjusted > 0) { - store.incrementDarknodeBalance( - POOLED_REWARDS, - nextToken, - nodePayoutAdjusted - ); - } - - // Store funds that can be withdrawn to the community fund. - if (communityFundPayout > 0) { - store.incrementDarknodeBalance( - communityFund, - nextToken, - communityFundPayout - ); - } - - cycleCumulativeTokenShares[newCycleTimestamp][ - nextToken - ] = cycleCumulativeTokenShares[cycleTimestamp][nextToken].add( - share - ); - } - - // Take next token. - nextToken = registeredTokens.next(nextToken); - } - - // Keep track of deregistered token amounts. - address nextDeregisteredToken = deregisteredTokens.begin(); - while (nextDeregisteredToken != address(0x0)) { - { - cycleCumulativeTokenShares[newCycleTimestamp][ - nextDeregisteredToken - ] = cycleCumulativeTokenShares[cycleTimestamp][ - nextDeregisteredToken - ]; - } - - // Take next token. - nextDeregisteredToken = deregisteredTokens.next( - nextDeregisteredToken - ); - } - - // Start a new cycle - latestCycleTimestamp = newCycleTimestamp; - - emit LogCycleChanged(newCycleTimestamp, cycleTimestamp, shareCount); - - return newCycleTimestamp; - } -} - -contract ClaimlessRewardsWithdrawHandler is - ClaimlessRewardsEvents, - ClaimlessRewardsState, - ClaimlessRewardsCycleHandler -{ - using SafeMath for uint256; - using SafeERC20 for ERC20; - - // Return the next cycle with a timestamp greater than or equal to the - // passed in timestamp. - function getNextEpochFromTimestamp(uint256 _target) - public - view - returns (uint256) - { - uint256 start = 0; - uint256 end = epochTimestamps.length.sub(1); - - // Binary search. Relies on `epochTimestamps` being sorted. - while (start <= end) { - // Check if the middle element satisfies the conditions. - uint256 mid = (start + end) / 2; - if ( - epochTimestamps[mid] >= _target && - (mid == 0 || epochTimestamps[mid - 1] < _target) - ) { - return epochTimestamps[mid]; - } - // Restrict the search space. - else if (epochTimestamps[mid] < _target) { - start = mid + 1; - } else { - end = mid.sub(1); - } - } - return 0; - } - - function darknodeBalances(address _node, address _token) - external - view - returns (uint256) - { - uint256 nodeRegistered = darknodeRegistry.darknodeRegisteredAt(_node); - - uint256 newWithdrawable = 0; - if (nodeRegistered > 0) { - (newWithdrawable, ) = _calculateNewWithdrawable(_node, _token); - } - uint256 legacyWithdrawable = store.darknodeBalances(_node, _token); - - return newWithdrawable.add(legacyWithdrawable); - } - - /// @notice Withdraw the provided asset for each node in the list. - function withdrawToken(address[] memory _nodes, address _token) public { - uint256 withdrawTotal = 0; - - for (uint256 i = 0; i < _nodes.length; i++) { - address _node = _nodes[i]; - - // The Darknode Registry already prevents IDs from being 0x0, but a - // user could attempt to register the communityFund address as a - // darknode and then withdraw the pending community fund rewards. - require( - _node != POOLED_REWARDS && _node != communityFund, - "ClaimlessRewards: invalid node ID" - ); - - require( - darknodeRegistry.getDarknodeOperator(_node) == msg.sender, - "ClaimlessRewards: not operator" - ); - - (uint256 newRewards, uint256 claimUntil) = - _calculateNewWithdrawable(_node, _token); - - withdrawTotal = withdrawTotal.add(newRewards); - rewardsLastClaimed[_node][_token] = claimUntil; - emit LogDarknodeWithdrew(_node, newRewards, _token); - - // Check if there's a legacy amount to withdraw. This only has - // to be withdrawn once. - uint256 legacyAmount = store.darknodeBalances(_node, _token); - if (legacyAmount > 0) { - store.transfer(_node, _token, legacyAmount, msg.sender); - emit LogDarknodeWithdrew(_node, legacyAmount, _token); - } - } - - store.transfer(POOLED_REWARDS, _token, withdrawTotal, msg.sender); - } - - /// @notice Withdraw multiple assets for each darknode in the list. - /// The interface has been kept the same as the DarknodePayment contract - /// for backward-compatibility. - function withdrawMultiple(address[] memory _nodes, address[] memory _tokens) - public - { - for (uint256 i = 0; i < _tokens.length; i++) { - withdrawToken(_nodes, _tokens[i]); - } - } - - /// @notice Withdraw the provided asset for the given darknode. - /// The interface has been kept the same as the DarknodePayment contract - /// for backward-compatibility. - function withdraw(address _node, address _token) public { - address[] memory nodes = new address[](1); - nodes[0] = _node; - return withdrawToken(nodes, _token); - } - - function withdrawToCommunityFund(address[] memory _tokens) public { - // Access storage outside of loop. - address memoryCommunityFund = communityFund; - address payable communityFundPayable = - address(uint160(address(memoryCommunityFund))); - - for (uint256 i = 0; i < _tokens.length; i++) { - address _token = _tokens[i]; - uint256 amount = - store.darknodeBalances(memoryCommunityFund, _token); - - if (amount > 0) { - store.transfer( - memoryCommunityFund, - _token, - amount, - communityFundPayable - ); - } - } - } - - function _calculateNewWithdrawable(address _node, address _token) - internal - view - returns (uint256, uint256) - { - uint256 nodeRegistered = darknodeRegistry.darknodeRegisteredAt(_node); - - require(nodeRegistered > 0, "ClaimlessRewards: not registered"); - - uint256 nodeDeregistered = - darknodeRegistry.darknodeDeregisteredAt(_node); - - uint256 claimFrom = rewardsLastClaimed[_node][_token]; - if (claimFrom < nodeRegistered) { - claimFrom = getNextEpochFromTimestamp(nodeRegistered); - - // A node can start claiming from the first epoch after (or at) its - // registration time. If this is 0, then the node is still in the - // pending-registration state. - require(claimFrom > 0, "ClaimlessRewards: registration pending"); - } - - uint256 claimUntil = latestCycleTimestamp; - if (nodeDeregistered != 0) { - uint256 deregisteredCycle = - getNextEpochFromTimestamp(nodeDeregistered); - - // A node can only claim up until the next epoch after (or at) its - // deregistration time. If this is 0, then the node is still - // in the pending-deregistration state. - if (deregisteredCycle != 0) { - claimUntil = deregisteredCycle; - } - } - - uint256 lastCumulativeShare = - cycleCumulativeTokenShares[claimFrom][_token]; - uint256 currentCumulativeShare = - cycleCumulativeTokenShares[claimUntil][_token]; - - return ( - currentCumulativeShare.sub( - lastCumulativeShare, - "ClaimlessRewards: error calculating withdrawable balance" - ), - claimUntil - ); - } -} - -/// @notice ClaimlessRewards is intended to replace the DarknodePayment -/// contract. It's to main improvements are: -/// 1) no longer requiring nodes to call `claim` each epoch, and -/// 2) allowing for a community fund to earn a proportion of the rewards. -contract ClaimlessRewards is - Claimable, - ClaimlessRewardsEvents, - ClaimlessRewardsState, - ClaimlessRewardsTokenHandler, - ClaimlessRewardsAdminHandler, - ClaimlessRewardsCycleHandler, - ClaimlessRewardsWithdrawHandler -{ - /// @notice The contract constructor. Starts the current cycle using the - /// latest epoch. - /// - /// @dev The DarknodeRegistry should be set to point to the - /// ClaimlessRewards contract before the next epoch is called. - /// - /// @param _darknodeRegistry The address of the DarknodeRegistry contract - /// @param _darknodePaymentStore The address of the DarknodePaymentStore - /// contract. Can be updated by the contract owner. - /// @param _communityFund The address to which the community fund balances - /// can be withdrawn to. Can be updated by the contract owner. - /// @param _communityFundNumerator The portion of the rewards that are paid - /// to the community fund. Can be updated by the contract owner. - constructor( - DarknodeRegistryLogicV1 _darknodeRegistry, - DarknodePaymentStore _darknodePaymentStore, - address _communityFund, - uint256 _communityFundNumerator - ) public Claimable() { - Claimable.initialize(msg.sender); - - store = _darknodePaymentStore; - _updateDarknodeRegistry(_darknodeRegistry); - _updateCommunityFund(_communityFund); - _updateCommunityFundNumerator(_communityFundNumerator); - - // Initialize the current cycle to the start of the Registry's epoch. - (, latestCycleTimestamp) = darknodeRegistry.currentEpoch(); - epochTimestamps.push(latestCycleTimestamp); - } -} diff --git a/contracts/DarknodePayment/DarknodePayment.sol b/contracts/DarknodePayment/DarknodePayment.sol deleted file mode 100644 index 3ce105df..00000000 --- a/contracts/DarknodePayment/DarknodePayment.sol +++ /dev/null @@ -1,521 +0,0 @@ -pragma solidity 0.5.17; - -import "@openzeppelin/contracts-ethereum-package/contracts/math/SafeMath.sol"; -import "@openzeppelin/contracts-ethereum-package/contracts/token/ERC20/ERC20.sol"; -import "@openzeppelin/contracts-ethereum-package/contracts/token/ERC20/SafeERC20.sol"; - -import "../libraries/ERC20WithFees.sol"; -import "../DarknodeRegistry/DarknodeRegistry.sol"; -import "./DarknodePaymentStore.sol"; - -/// @notice DarknodePayment is responsible for paying off darknodes for their -/// computation. -contract DarknodePayment is Claimable { - using SafeMath for uint256; - using SafeERC20 for ERC20; - using ERC20WithFees for ERC20; - - string public VERSION; // Passed in as a constructor parameter. - - /// @notice The special address for Ether. - address public constant ETHEREUM = - 0xEeeeeEeeeEeEeeEeEeEeeEEEeeeeEeeeeeeeEEeE; - - DarknodeRegistryLogicV1 public darknodeRegistry; // Passed in as a constructor parameter. - - /// @notice DarknodePaymentStore is the storage contract for darknode - /// payments. - DarknodePaymentStore public store; // Passed in as a constructor parameter. - - /// @notice The address that can call changeCycle() - // This defaults to the owner but should be changed to the DarknodeRegistry. - address public cycleChanger; - - uint256 public currentCycle; - uint256 public previousCycle; - - /// @notice The list of tokens that will be registered next cycle. - /// We only update the shareCount at the change of cycle to - /// prevent the number of shares from changing. - address[] public pendingTokens; - - /// @notice The list of tokens which are already registered and rewards can - /// be claimed for. - address[] public registeredTokens; - - /// @notice Mapping from token -> index. Index starts from 1. 0 means not in - /// list. - mapping(address => uint256) public registeredTokenIndex; - - /// @notice Mapping from token -> amount. - /// The amount of rewards allocated for all darknodes to claim into - /// their account. - mapping(address => uint256) public unclaimedRewards; - - /// @notice Mapping from token -> amount. - /// The amount of rewards allocated for each darknode. - mapping(address => uint256) public previousCycleRewardShare; - - /// @notice The time that the current cycle started. - uint256 public cycleStartTime; - - /// @notice The staged payout percentage to the darknodes per cycle. - uint256 public nextCyclePayoutPercent; - - /// @notice The current cycle payout percentage to the darknodes. - uint256 public currentCyclePayoutPercent; - - /// @notice Mapping of darknode -> cycle -> already_claimed. - /// Used to keep track of which darknodes have already claimed their - /// rewards. - mapping(address => mapping(uint256 => bool)) public rewardClaimed; - - /// @notice Emitted when a darknode claims their share of reward. - /// @param _darknode The darknode which claimed. - /// @param _cycle The cycle that the darknode claimed for. - event LogDarknodeClaim(address indexed _darknode, uint256 _cycle); - - /// @notice Emitted when someone pays the DarknodePayment contract. - /// @param _payer The darknode which claimed. - /// @param _amount The cycle that the darknode claimed for. - /// @param _token The address of the token that was transferred. - event LogPaymentReceived( - address indexed _payer, - address indexed _token, - uint256 _amount - ); - - /// @notice Emitted when a darknode calls withdraw. - /// @param _darknodeOperator The address of the darknode's operator. - /// @param _darknodeID The address of the darknode which withdrew. - /// @param _value The amount of DAI withdrawn. - /// @param _token The address of the token that was withdrawn. - event LogDarknodeWithdrew( - address indexed _darknodeOperator, - address indexed _darknodeID, - address indexed _token, - uint256 _value - ); - - /// @notice Emitted when the payout percent changes. - /// @param _newPercent The new percent. - /// @param _oldPercent The old percent. - event LogPayoutPercentChanged(uint256 _newPercent, uint256 _oldPercent); - - /// @notice Emitted when the CycleChanger address changes. - /// @param _newCycleChanger The new CycleChanger. - /// @param _oldCycleChanger The old CycleChanger. - event LogCycleChangerChanged( - address indexed _newCycleChanger, - address indexed _oldCycleChanger - ); - - /// @notice Emitted when a new token is registered. - /// @param _token The token that was registered. - event LogTokenRegistered(address indexed _token); - - /// @notice Emitted when a token is deregistered. - /// @param _token The token that was deregistered. - event LogTokenDeregistered(address indexed _token); - - /// @notice Emitted when the DarknodeRegistry is updated. - /// @param _previousDarknodeRegistry The address of the old registry. - /// @param _nextDarknodeRegistry The address of the new registry. - event LogDarknodeRegistryUpdated( - DarknodeRegistryLogicV1 indexed _previousDarknodeRegistry, - DarknodeRegistryLogicV1 indexed _nextDarknodeRegistry - ); - - /// @notice Restrict a function registered dark nodes to call a function. - modifier onlyDarknode(address _darknode) { - require( - darknodeRegistry.isRegistered(_darknode), - "DarknodePayment: darknode is not registered" - ); - _; - } - - /// @notice Restrict a function to have a valid percentage. - modifier validPercent(uint256 _percent) { - require(_percent <= 100, "DarknodePayment: invalid percentage"); - _; - } - - /// @notice Restrict a function to be called by cycleChanger. - modifier onlyCycleChanger { - require( - msg.sender == cycleChanger, - "DarknodePayment: not cycle changer" - ); - _; - } - - /// @notice The contract constructor. Starts the current cycle using the - /// time of deploy. - /// - /// @param _VERSION A string defining the contract version. - /// @param _darknodeRegistry The address of the DarknodeRegistry contract. - /// @param _darknodePaymentStore The address of the DarknodePaymentStore - /// contract. - constructor( - string memory _VERSION, - DarknodeRegistryLogicV1 _darknodeRegistry, - DarknodePaymentStore _darknodePaymentStore, - uint256 _cyclePayoutPercent - ) public validPercent(_cyclePayoutPercent) { - Claimable.initialize(msg.sender); - VERSION = _VERSION; - darknodeRegistry = _darknodeRegistry; - store = _darknodePaymentStore; - nextCyclePayoutPercent = _cyclePayoutPercent; - // Default the cycleChanger to owner. - cycleChanger = msg.sender; - - // Start the current cycle - (currentCycle, cycleStartTime) = darknodeRegistry.currentEpoch(); - currentCyclePayoutPercent = nextCyclePayoutPercent; - } - - /// @notice Allows the contract owner to update the address of the - /// darknode registry contract. - /// @param _darknodeRegistry The address of the Darknode Registry - /// contract. - function updateDarknodeRegistry(DarknodeRegistryLogicV1 _darknodeRegistry) - external - onlyOwner - { - require( - address(_darknodeRegistry) != address(0x0), - "DarknodePayment: invalid Darknode Registry address" - ); - DarknodeRegistryLogicV1 previousDarknodeRegistry = darknodeRegistry; - darknodeRegistry = _darknodeRegistry; - emit LogDarknodeRegistryUpdated( - previousDarknodeRegistry, - darknodeRegistry - ); - } - - /// @notice Transfers the funds allocated to the darknode to the darknode - /// owner. - /// - /// @param _darknode The address of the darknode. - /// @param _token Which token to transfer. - function withdraw(address _darknode, address _token) public { - address payable darknodeOperator = - darknodeRegistry.getDarknodeOperator(_darknode); - require( - darknodeOperator != address(0x0), - "DarknodePayment: invalid darknode owner" - ); - - uint256 amount = store.darknodeBalances(_darknode, _token); - - // Skip if amount is zero. - if (amount > 0) { - store.transfer(_darknode, _token, amount, darknodeOperator); - emit LogDarknodeWithdrew( - darknodeOperator, - _darknode, - _token, - amount - ); - } - } - - function withdrawMultiple( - address[] calldata _darknodes, - address[] calldata _tokens - ) external { - for (uint256 i = 0; i < _darknodes.length; i++) { - for (uint256 j = 0; j < _tokens.length; j++) { - withdraw(_darknodes[i], _tokens[j]); - } - } - } - - /// @notice Forward all payments to the DarknodePaymentStore. - function() external payable { - address(store).transfer(msg.value); - emit LogPaymentReceived(msg.sender, ETHEREUM, msg.value); - } - - /// @notice The current balance of the contract available as reward for the - /// current cycle. - function currentCycleRewardPool(address _token) - external - view - returns (uint256) - { - uint256 total = - store.availableBalance(_token).sub( - unclaimedRewards[_token], - "DarknodePayment: unclaimed rewards exceed total rewards" - ); - return total.div(100).mul(currentCyclePayoutPercent); - } - - function darknodeBalances(address _darknodeID, address _token) - external - view - returns (uint256) - { - return store.darknodeBalances(_darknodeID, _token); - } - - /// @notice Changes the current cycle. - function changeCycle() external onlyCycleChanger returns (uint256) { - // Snapshot balances for the past cycle. - uint256 arrayLength = registeredTokens.length; - for (uint256 i = 0; i < arrayLength; i++) { - _snapshotBalance(registeredTokens[i]); - } - - // Start a new cycle. - previousCycle = currentCycle; - (currentCycle, cycleStartTime) = darknodeRegistry.currentEpoch(); - currentCyclePayoutPercent = nextCyclePayoutPercent; - - // Update the list of registeredTokens. - _updateTokenList(); - return currentCycle; - } - - /// @notice Deposits token into the contract to be paid to the Darknodes. - /// - /// @param _value The amount of token deposit in the token's smallest unit. - /// @param _token The token address. - function deposit(uint256 _value, address _token) external payable { - uint256 receivedValue; - if (_token == ETHEREUM) { - require( - _value == msg.value, - "DarknodePayment: mismatched deposit value" - ); - receivedValue = msg.value; - address(store).transfer(msg.value); - } else { - require( - msg.value == 0, - "DarknodePayment: unexpected ether transfer" - ); - require( - registeredTokenIndex[_token] != 0, - "DarknodePayment: token not registered" - ); - // Forward the funds to the store. - receivedValue = ERC20(_token).safeTransferFromWithFees( - msg.sender, - address(store), - _value - ); - } - emit LogPaymentReceived(msg.sender, _token, receivedValue); - } - - /// @notice Forwards any tokens that have been sent to the DarknodePayment contract - /// probably by mistake, to the DarknodePaymentStore. - /// - /// @param _token The token address. - function forward(address _token) external { - if (_token == ETHEREUM) { - // Its unlikely that ETH will need to be forwarded, but it is - // possible. For example - if ETH had already been sent to the - // contract's address before it was deployed, or if funds are sent - // to it as part of a contract's self-destruct. - address(store).transfer(address(this).balance); - } else { - ERC20(_token).safeTransfer( - address(store), - ERC20(_token).balanceOf(address(this)) - ); - } - } - - /// @notice Claims the rewards allocated to the darknode last epoch. - /// @param _darknode The address of the darknode to claim. - function claim(address _darknode) external onlyDarknode(_darknode) { - require( - darknodeRegistry.isRegisteredInPreviousEpoch(_darknode), - "DarknodePayment: cannot claim for this epoch" - ); - // Claim share of rewards allocated for last cycle. - _claimDarknodeReward(_darknode); - emit LogDarknodeClaim(_darknode, previousCycle); - } - - /// @notice Adds tokens to be payable. Registration is pending until next - /// cycle. - /// - /// @param _token The address of the token to be registered. - function registerToken(address _token) external onlyOwner { - require( - registeredTokenIndex[_token] == 0, - "DarknodePayment: token already registered" - ); - require( - !tokenPendingRegistration(_token), - "DarknodePayment: token already pending registration" - ); - pendingTokens.push(_token); - } - - function tokenPendingRegistration(address _token) - public - view - returns (bool) - { - uint256 arrayLength = pendingTokens.length; - for (uint256 i = 0; i < arrayLength; i++) { - if (pendingTokens[i] == _token) { - return true; - } - } - return false; - } - - /// @notice Removes a token from the list of supported tokens. - /// Deregistration is pending until next cycle. - /// - /// @param _token The address of the token to be deregistered. - function deregisterToken(address _token) external onlyOwner { - require( - registeredTokenIndex[_token] > 0, - "DarknodePayment: token not registered" - ); - _deregisterToken(_token); - } - - /// @notice Updates the CycleChanger contract address. - /// - /// @param _addr The new CycleChanger contract address. - function updateCycleChanger(address _addr) external onlyOwner { - require( - _addr != address(0), - "DarknodePayment: invalid contract address" - ); - emit LogCycleChangerChanged(_addr, cycleChanger); - cycleChanger = _addr; - } - - /// @notice Updates payout percentage. - /// - /// @param _percent The percentage of payout for darknodes. - function updatePayoutPercentage(uint256 _percent) - external - onlyOwner - validPercent(_percent) - { - uint256 oldPayoutPercent = nextCyclePayoutPercent; - nextCyclePayoutPercent = _percent; - emit LogPayoutPercentChanged(nextCyclePayoutPercent, oldPayoutPercent); - } - - /// @notice Allows the contract owner to initiate an ownership transfer of - /// the DarknodePaymentStore. - /// - /// @param _newOwner The address to transfer the ownership to. - function transferStoreOwnership(DarknodePayment _newOwner) - external - onlyOwner - { - store.transferOwnership(address(_newOwner)); - _newOwner.claimStoreOwnership(); - } - - /// @notice Claims ownership of the store passed in to the constructor. - /// `transferStoreOwnership` must have previously been called when - /// transferring from another DarknodePaymentStore. - function claimStoreOwnership() external { - store.claimOwnership(); - } - - /// @notice Claims the darknode reward for all registered tokens into - /// darknodeBalances in the DarknodePaymentStore. - /// Rewards can only be claimed once per cycle. - /// - /// @param _darknode The address to the darknode to claim rewards for. - function _claimDarknodeReward(address _darknode) private { - require( - !rewardClaimed[_darknode][previousCycle], - "DarknodePayment: reward already claimed" - ); - rewardClaimed[_darknode][previousCycle] = true; - uint256 arrayLength = registeredTokens.length; - for (uint256 i = 0; i < arrayLength; i++) { - address token = registeredTokens[i]; - - // Only increment balance if shares were allocated last cycle - if (previousCycleRewardShare[token] > 0) { - unclaimedRewards[token] = unclaimedRewards[token].sub( - previousCycleRewardShare[token], - "DarknodePayment: share exceeds unclaimed rewards" - ); - store.incrementDarknodeBalance( - _darknode, - token, - previousCycleRewardShare[token] - ); - } - } - } - - /// @notice Snapshots the current balance of the tokens, for all registered - /// tokens. - /// - /// @param _token The address the token to snapshot. - function _snapshotBalance(address _token) private { - uint256 shareCount = darknodeRegistry.numDarknodesPreviousEpoch(); - if (shareCount == 0) { - unclaimedRewards[_token] = 0; - previousCycleRewardShare[_token] = 0; - } else { - // Lock up the current balance for darknode reward allocation - uint256 total = store.availableBalance(_token); - unclaimedRewards[_token] = total.div(100).mul( - currentCyclePayoutPercent - ); - previousCycleRewardShare[_token] = unclaimedRewards[_token].div( - shareCount - ); - } - } - - /// @notice Deregisters a token, removing it from the list of - /// registeredTokens. - /// - /// @param _token The address of the token to deregister. - function _deregisterToken(address _token) private { - address lastToken = - registeredTokens[ - registeredTokens.length.sub( - 1, - "DarknodePayment: no tokens registered" - ) - ]; - uint256 deletedTokenIndex = registeredTokenIndex[_token].sub(1); - // Move the last token to _token's position and update it's index - registeredTokens[deletedTokenIndex] = lastToken; - registeredTokenIndex[lastToken] = registeredTokenIndex[_token]; - // Decreasing the length will clean up the storage for us - // So we don't need to manually delete the element - registeredTokens.pop(); - registeredTokenIndex[_token] = 0; - - emit LogTokenDeregistered(_token); - } - - /// @notice Updates the list of registeredTokens adding tokens that are to be registered. - /// The list of tokens that are pending registration are emptied afterwards. - function _updateTokenList() private { - // Register tokens - uint256 arrayLength = pendingTokens.length; - for (uint256 i = 0; i < arrayLength; i++) { - address token = pendingTokens[i]; - registeredTokens.push(token); - registeredTokenIndex[token] = registeredTokens.length; - emit LogTokenRegistered(token); - } - pendingTokens.length = 0; - } -} diff --git a/contracts/DarknodePayment/DarknodePaymentMigrator.sol b/contracts/DarknodePayment/DarknodePaymentMigrator.sol deleted file mode 100644 index 68e63e90..00000000 --- a/contracts/DarknodePayment/DarknodePaymentMigrator.sol +++ /dev/null @@ -1,69 +0,0 @@ -pragma solidity 0.5.17; - -import "@openzeppelin/contracts-ethereum-package/contracts/math/SafeMath.sol"; -import "@openzeppelin/contracts-ethereum-package/contracts/token/ERC20/ERC20.sol"; -import "@openzeppelin/contracts-ethereum-package/contracts/token/ERC20/SafeERC20.sol"; - -import "../Governance/Claimable.sol"; -import "./DarknodePaymentStore.sol"; -import "./DarknodePayment.sol"; - -/// @notice The DarknodePaymentMigrator migrates unclaimed funds from the -/// DarknodePayment contract. In a single transaction, it claims the store -/// ownership from the DNP contract, migrates unclaimed fees and then returns -/// the store ownership back to the DNP. -contract DarknodePaymentMigrator is Claimable { - DarknodePayment public dnp; - address[] public tokens; - - constructor(DarknodePayment _dnp, address[] memory _tokens) public { - Claimable.initialize(msg.sender); - dnp = _dnp; - tokens = _tokens; - } - - function setTokens(address[] memory _tokens) public onlyOwner { - tokens = _tokens; - } - - function claimStoreOwnership() external { - require(msg.sender == address(dnp), "Not darknode payment contract"); - DarknodePaymentStore store = dnp.store(); - - store.claimOwnership(); - - for (uint256 i = 0; i < tokens.length; i++) { - address token = tokens[i]; - - uint256 unclaimed = store.availableBalance(token); - - if (unclaimed > 0) { - store.incrementDarknodeBalance(address(0x0), token, unclaimed); - - store.transfer( - address(0x0), - token, - unclaimed, - _payableAddress(owner()) - ); - } - } - - store.transferOwnership(address(dnp)); - dnp.claimStoreOwnership(); - - require( - store.owner() == address(dnp), - "Store ownership not transferred back." - ); - } - - // Cast an address to a payable address - function _payableAddress(address a) - internal - pure - returns (address payable) - { - return address(uint160(address(a))); - } -} diff --git a/contracts/DarknodePayment/DarknodePaymentStore.sol b/contracts/DarknodePayment/DarknodePaymentStore.sol deleted file mode 100644 index c54b1e8e..00000000 --- a/contracts/DarknodePayment/DarknodePaymentStore.sol +++ /dev/null @@ -1,125 +0,0 @@ -pragma solidity 0.5.17; - -import "@openzeppelin/contracts-ethereum-package/contracts/math/SafeMath.sol"; -import "@openzeppelin/contracts-ethereum-package/contracts/token/ERC20/ERC20.sol"; -import "@openzeppelin/contracts-ethereum-package/contracts/token/ERC20/SafeERC20.sol"; - -import "../Governance/Claimable.sol"; -import "../libraries/ERC20WithFees.sol"; - -/// @notice DarknodePaymentStore is responsible for tracking balances which have -/// been allocated to the darknodes. It is also responsible for holding -/// the tokens to be paid out to darknodes. -contract DarknodePaymentStore is Claimable { - using SafeMath for uint256; - using SafeERC20 for ERC20; - using ERC20WithFees for ERC20; - - string public VERSION; // Passed in as a constructor parameter. - - /// @notice The special address for Ether. - address public constant ETHEREUM = - 0xEeeeeEeeeEeEeeEeEeEeeEEEeeeeEeeeeeeeEEeE; - - /// @notice Mapping of darknode -> token -> balance. - mapping(address => mapping(address => uint256)) public darknodeBalances; - - /// @notice Mapping of token -> lockedAmount. - mapping(address => uint256) public lockedBalances; - - /// @notice The contract constructor. - /// - /// @param _VERSION A string defining the contract version. - constructor(string memory _VERSION) public { - Claimable.initialize(msg.sender); - VERSION = _VERSION; - } - - /// @notice Allow direct ETH payments to be made to the DarknodePaymentStore. - function() external payable {} - - /// @notice Get the total balance of the contract for a particular token. - /// - /// @param _token The token to check balance of. - /// @return The total balance of the contract. - function totalBalance(address _token) public view returns (uint256) { - if (_token == ETHEREUM) { - return address(this).balance; - } else { - return ERC20(_token).balanceOf(address(this)); - } - } - - /// @notice Get the available balance of the contract for a particular token - /// This is the free amount which has not yet been allocated to - /// darknodes. - /// - /// @param _token The token to check balance of. - /// @return The available balance of the contract. - function availableBalance(address _token) public view returns (uint256) { - return - totalBalance(_token).sub( - lockedBalances[_token], - "DarknodePaymentStore: locked balance exceed total balance" - ); - } - - /// @notice Increments the amount of funds allocated to a particular - /// darknode. - /// - /// @param _darknode The address of the darknode to increase balance of. - /// @param _token The token which the balance should be incremented. - /// @param _amount The amount that the balance should be incremented by. - function incrementDarknodeBalance( - address _darknode, - address _token, - uint256 _amount - ) external onlyOwner { - require(_amount > 0, "DarknodePaymentStore: invalid amount"); - require( - availableBalance(_token) >= _amount, - "DarknodePaymentStore: insufficient contract balance" - ); - - darknodeBalances[_darknode][_token] = darknodeBalances[_darknode][ - _token - ] - .add(_amount); - lockedBalances[_token] = lockedBalances[_token].add(_amount); - } - - /// @notice Transfers an amount out of balance to a specified address. - /// - /// @param _darknode The address of the darknode. - /// @param _token Which token to transfer. - /// @param _amount The amount to transfer. - /// @param _recipient The address to withdraw it to. - function transfer( - address _darknode, - address _token, - uint256 _amount, - address payable _recipient - ) external onlyOwner { - require( - darknodeBalances[_darknode][_token] >= _amount, - "DarknodePaymentStore: insufficient darknode balance" - ); - darknodeBalances[_darknode][_token] = darknodeBalances[_darknode][ - _token - ] - .sub( - _amount, - "DarknodePaymentStore: insufficient darknode balance for transfer" - ); - lockedBalances[_token] = lockedBalances[_token].sub( - _amount, - "DarknodePaymentStore: insufficient token balance for transfer" - ); - - if (_token == ETHEREUM) { - _recipient.transfer(_amount); - } else { - ERC20(_token).safeTransfer(_recipient, _amount); - } - } -} diff --git a/contracts/DarknodePayment/DarknodeRegistryForwarder.sol b/contracts/DarknodePayment/DarknodeRegistryForwarder.sol deleted file mode 100644 index 55af44cf..00000000 --- a/contracts/DarknodePayment/DarknodeRegistryForwarder.sol +++ /dev/null @@ -1,45 +0,0 @@ -pragma solidity 0.5.17; - -import "../DarknodeRegistry/DarknodeRegistry.sol"; - -/// @notice DarknodeRegistryForwarder implements the DNR's methods that are used -/// by the DNP, and it forwards them all to the DNR except -/// `isRegisteredInPreviousEpoch`, for which it returns false in order to make -/// calls to `claim` revert. -contract DarknodeRegistryForwarder { - DarknodeRegistryLogicV1 dnr; - - constructor(DarknodeRegistryLogicV1 _dnr) public { - dnr = _dnr; - } - - /// @notice Returns if a darknode is in the registered state. - function isRegistered(address _darknodeID) public view returns (bool) { - return dnr.isRegistered(_darknodeID); - } - - function currentEpoch() public view returns (uint256, uint256) { - return dnr.currentEpoch(); - } - - function getDarknodeOperator(address _darknodeID) - public - view - returns (address payable) - { - return dnr.getDarknodeOperator(_darknodeID); - } - - function isRegisteredInPreviousEpoch(address _darknodeID) - public - view - returns (bool) - { - // return dnr.isRegisteredInPreviousEpoch(_darknodeID); - return false; - } - - function numDarknodesPreviousEpoch() public view returns (uint256) { - return dnr.numDarknodesPreviousEpoch(); - } -} diff --git a/contracts/DarknodePayment/ValidString.sol b/contracts/DarknodePayment/ValidString.sol deleted file mode 100644 index 2cbc0fe8..00000000 --- a/contracts/DarknodePayment/ValidString.sol +++ /dev/null @@ -1,27 +0,0 @@ -// SPDX-License-Identifier: MIT - -pragma solidity 0.5.17; - -library ValidString { - function isAlphanumeric(string memory _string) - internal - pure - returns (bool) - { - for (uint256 i = 0; i < bytes(_string).length; i++) { - uint8 char = uint8(bytes(_string)[i]); - if ( - !((char >= 65 && char <= 90) || - (char >= 97 && char <= 122) || - (char >= 48 && char <= 57)) - ) { - return false; - } - } - return true; - } - - function isNotEmpty(string memory _string) internal pure returns (bool) { - return bytes(_string).length > 0; - } -} diff --git a/contracts/DarknodeRegistry/DarknodeRegistry.sol b/contracts/DarknodeRegistry/DarknodeRegistry.sol deleted file mode 100644 index 35898db9..00000000 --- a/contracts/DarknodeRegistry/DarknodeRegistry.sol +++ /dev/null @@ -1,795 +0,0 @@ -pragma solidity 0.5.17; - -import "@openzeppelin/contracts-ethereum-package/contracts/math/SafeMath.sol"; -import "@openzeppelin/upgrades/contracts/upgradeability/InitializableAdminUpgradeabilityProxy.sol"; -import "@openzeppelin/upgrades/contracts/Initializable.sol"; - -import "../RenToken/RenToken.sol"; -import "./DarknodeRegistryStore.sol"; -import "../Governance/Claimable.sol"; -import "../libraries/CanReclaimTokens.sol"; - -interface IDarknodePaymentStore {} - -interface IDarknodePayment { - function changeCycle() external returns (uint256); - - function store() external view returns (IDarknodePaymentStore); -} - -interface IDarknodeSlasher {} - -contract DarknodeRegistryStateV1 { - using SafeMath for uint256; - - string public VERSION; // Passed in as a constructor parameter. - - /// @notice Darknode pods are shuffled after a fixed number of blocks. - /// An Epoch stores an epoch hash used as an (insecure) RNG seed, and the - /// blocknumber which restricts when the next epoch can be called. - struct Epoch { - uint256 epochhash; - uint256 blocktime; - } - - uint256 public numDarknodes; - uint256 public numDarknodesNextEpoch; - uint256 public numDarknodesPreviousEpoch; - - /// Variables used to parameterize behavior. - uint256 public minimumBond; - uint256 public minimumPodSize; - uint256 public minimumEpochInterval; - uint256 public deregistrationInterval; - - /// When one of the above variables is modified, it is only updated when the - /// next epoch is called. These variables store the values for the next - /// epoch. - uint256 public nextMinimumBond; - uint256 public nextMinimumPodSize; - uint256 public nextMinimumEpochInterval; - - /// The current and previous epoch. - Epoch public currentEpoch; - Epoch public previousEpoch; - - /// REN ERC20 contract used to transfer bonds. - RenToken public ren; - - /// Darknode Registry Store is the storage contract for darknodes. - DarknodeRegistryStore public store; - - /// The Darknode Payment contract for changing cycle. - IDarknodePayment public darknodePayment; - - /// Darknode Slasher allows darknodes to vote on bond slashing. - IDarknodeSlasher public slasher; - IDarknodeSlasher public nextSlasher; -} - -/// @notice DarknodeRegistry is responsible for the registration and -/// deregistration of Darknodes. -contract DarknodeRegistryLogicV1 is - Claimable, - CanReclaimTokens, - DarknodeRegistryStateV1 -{ - /// @notice Emitted when a darknode is registered. - /// @param _darknodeOperator The owner of the darknode. - /// @param _darknodeID The ID of the darknode that was registered. - /// @param _bond The amount of REN that was transferred as bond. - event LogDarknodeRegistered( - address indexed _darknodeOperator, - address indexed _darknodeID, - uint256 _bond - ); - - /// @notice Emitted when a darknode is deregistered. - /// @param _darknodeOperator The owner of the darknode. - /// @param _darknodeID The ID of the darknode that was deregistered. - event LogDarknodeDeregistered( - address indexed _darknodeOperator, - address indexed _darknodeID - ); - - /// @notice Emitted when a refund has been made. - /// @param _darknodeOperator The owner of the darknode. - /// @param _amount The amount of REN that was refunded. - event LogDarknodeRefunded( - address indexed _darknodeOperator, - address indexed _darknodeID, - uint256 _amount - ); - - /// @notice Emitted when a darknode's bond is slashed. - /// @param _darknodeOperator The owner of the darknode. - /// @param _darknodeID The ID of the darknode that was slashed. - /// @param _challenger The address of the account that submitted the challenge. - /// @param _percentage The total percentage of bond slashed. - event LogDarknodeSlashed( - address indexed _darknodeOperator, - address indexed _darknodeID, - address indexed _challenger, - uint256 _percentage - ); - - /// @notice Emitted when a new epoch has begun. - event LogNewEpoch(uint256 indexed epochhash); - - /// @notice Emitted when a constructor parameter has been updated. - event LogMinimumBondUpdated( - uint256 _previousMinimumBond, - uint256 _nextMinimumBond - ); - event LogMinimumPodSizeUpdated( - uint256 _previousMinimumPodSize, - uint256 _nextMinimumPodSize - ); - event LogMinimumEpochIntervalUpdated( - uint256 _previousMinimumEpochInterval, - uint256 _nextMinimumEpochInterval - ); - event LogSlasherUpdated( - address indexed _previousSlasher, - address indexed _nextSlasher - ); - event LogDarknodePaymentUpdated( - IDarknodePayment indexed _previousDarknodePayment, - IDarknodePayment indexed _nextDarknodePayment - ); - - /// @notice Restrict a function to the owner that registered the darknode. - modifier onlyDarknodeOperator(address _darknodeID) { - require( - store.darknodeOperator(_darknodeID) == msg.sender, - "DarknodeRegistry: must be darknode owner" - ); - _; - } - - /// @notice Restrict a function to unregistered darknodes. - modifier onlyRefunded(address _darknodeID) { - require( - isRefunded(_darknodeID), - "DarknodeRegistry: must be refunded or never registered" - ); - _; - } - - /// @notice Restrict a function to refundable darknodes. - modifier onlyRefundable(address _darknodeID) { - require( - isRefundable(_darknodeID), - "DarknodeRegistry: must be deregistered for at least one epoch" - ); - _; - } - - /// @notice Restrict a function to registered nodes without a pending - /// deregistration. - modifier onlyDeregisterable(address _darknodeID) { - require( - isDeregisterable(_darknodeID), - "DarknodeRegistry: must be deregisterable" - ); - _; - } - - /// @notice Restrict a function to the Slasher contract. - modifier onlySlasher() { - require( - address(slasher) == msg.sender, - "DarknodeRegistry: must be slasher" - ); - _; - } - - /// @notice Restrict a function to registered nodes without a pending - /// deregistration. - modifier onlyDarknode(address _darknodeID) { - require( - isRegistered(_darknodeID), - "DarknodeRegistry: invalid darknode" - ); - _; - } - - /// @notice The contract constructor. - /// - /// @param _VERSION A string defining the contract version. - /// @param _renAddress The address of the RenToken contract. - /// @param _storeAddress The address of the DarknodeRegistryStore contract. - /// @param _minimumBond The minimum bond amount that can be submitted by a - /// Darknode. - /// @param _minimumPodSize The minimum size of a Darknode pod. - /// @param _minimumEpochIntervalSeconds The minimum number of seconds between epochs. - function initialize( - string memory _VERSION, - RenToken _renAddress, - DarknodeRegistryStore _storeAddress, - uint256 _minimumBond, - uint256 _minimumPodSize, - uint256 _minimumEpochIntervalSeconds, - uint256 _deregistrationIntervalSeconds - ) public initializer { - Claimable.initialize(msg.sender); - CanReclaimTokens.initialize(msg.sender); - VERSION = _VERSION; - - store = _storeAddress; - ren = _renAddress; - - minimumBond = _minimumBond; - nextMinimumBond = minimumBond; - - minimumPodSize = _minimumPodSize; - nextMinimumPodSize = minimumPodSize; - - minimumEpochInterval = _minimumEpochIntervalSeconds; - nextMinimumEpochInterval = minimumEpochInterval; - deregistrationInterval = _deregistrationIntervalSeconds; - - uint256 epochhash = uint256(blockhash(block.number - 1)); - currentEpoch = Epoch({ - epochhash: epochhash, - blocktime: block.timestamp - }); - emit LogNewEpoch(epochhash); - } - - /// @notice Register a darknode and transfer the bond to this contract. - /// Before registering, the bond transfer must be approved in the REN - /// contract. The caller must provide a public encryption key for the - /// darknode. The darknode will remain pending registration until the next - /// epoch. Only after this period can the darknode be deregistered. The - /// caller of this method will be stored as the owner of the darknode. - /// - /// @param _darknodeID The darknode ID that will be registered. - /// @param _publicKey The public key of the darknode. It is stored to allow - /// other darknodes and traders to encrypt messages to the trader. - function register(address _darknodeID, bytes calldata _publicKey) - external - onlyRefunded(_darknodeID) - { - require( - _darknodeID != address(0), - "DarknodeRegistry: darknode address cannot be zero" - ); - - // Use the current minimum bond as the darknode's bond and transfer bond to store - require( - ren.transferFrom(msg.sender, address(store), minimumBond), - "DarknodeRegistry: bond transfer failed" - ); - - // Flag this darknode for registration - store.appendDarknode( - _darknodeID, - msg.sender, - minimumBond, - _publicKey, - currentEpoch.blocktime.add(minimumEpochInterval), - 0 - ); - - numDarknodesNextEpoch = numDarknodesNextEpoch.add(1); - - // Emit an event. - emit LogDarknodeRegistered(msg.sender, _darknodeID, minimumBond); - } - - /// @notice Deregister a darknode. The darknode will not be deregistered - /// until the end of the epoch. After another epoch, the bond can be - /// refunded by calling the refund method. - /// @param _darknodeID The darknode ID that will be deregistered. The caller - /// of this method must be the owner of this darknode. - function deregister(address _darknodeID) - external - onlyDeregisterable(_darknodeID) - onlyDarknodeOperator(_darknodeID) - { - deregisterDarknode(_darknodeID); - } - - /// @notice Progress the epoch if it is possible to do so. This captures - /// the current timestamp and current blockhash and overrides the current - /// epoch. - function epoch() external { - if (previousEpoch.blocktime == 0) { - // The first epoch must be called by the owner of the contract - require( - msg.sender == owner(), - "DarknodeRegistry: not authorized to call first epoch" - ); - } - - // Require that the epoch interval has passed - require( - block.timestamp >= currentEpoch.blocktime.add(minimumEpochInterval), - "DarknodeRegistry: epoch interval has not passed" - ); - uint256 epochhash = uint256(blockhash(block.number - 1)); - - // Update the epoch hash and timestamp - previousEpoch = currentEpoch; - currentEpoch = Epoch({ - epochhash: epochhash, - blocktime: block.timestamp - }); - - // Update the registry information - numDarknodesPreviousEpoch = numDarknodes; - numDarknodes = numDarknodesNextEpoch; - - // If any update functions have been called, update the values now - if (nextMinimumBond != minimumBond) { - minimumBond = nextMinimumBond; - emit LogMinimumBondUpdated(minimumBond, nextMinimumBond); - } - if (nextMinimumPodSize != minimumPodSize) { - minimumPodSize = nextMinimumPodSize; - emit LogMinimumPodSizeUpdated(minimumPodSize, nextMinimumPodSize); - } - if (nextMinimumEpochInterval != minimumEpochInterval) { - minimumEpochInterval = nextMinimumEpochInterval; - emit LogMinimumEpochIntervalUpdated( - minimumEpochInterval, - nextMinimumEpochInterval - ); - } - if (nextSlasher != slasher) { - slasher = nextSlasher; - emit LogSlasherUpdated(address(slasher), address(nextSlasher)); - } - if (address(darknodePayment) != address(0x0)) { - darknodePayment.changeCycle(); - } - - // Emit an event - emit LogNewEpoch(epochhash); - } - - /// @notice Allows the contract owner to initiate an ownership transfer of - /// the DarknodeRegistryStore. - /// @param _newOwner The address to transfer the ownership to. - function transferStoreOwnership(DarknodeRegistryLogicV1 _newOwner) - external - onlyOwner - { - store.transferOwnership(address(_newOwner)); - _newOwner.claimStoreOwnership(); - } - - /// @notice Claims ownership of the store passed in to the constructor. - /// `transferStoreOwnership` must have previously been called when - /// transferring from another Darknode Registry. - function claimStoreOwnership() external { - store.claimOwnership(); - - // Sync state with new store. - // Note: numDarknodesPreviousEpoch is set to 0 for a newly deployed DNR. - ( - numDarknodesPreviousEpoch, - numDarknodes, - numDarknodesNextEpoch - ) = getDarknodeCountFromEpochs(); - } - - /// @notice Allows the contract owner to update the address of the - /// darknode payment contract. - /// @param _darknodePayment The address of the Darknode Payment - /// contract. - function updateDarknodePayment(IDarknodePayment _darknodePayment) - external - onlyOwner - { - require( - address(_darknodePayment) != address(0x0), - "DarknodeRegistry: invalid Darknode Payment address" - ); - IDarknodePayment previousDarknodePayment = darknodePayment; - darknodePayment = _darknodePayment; - emit LogDarknodePaymentUpdated( - previousDarknodePayment, - darknodePayment - ); - } - - /// @notice Allows the contract owner to update the minimum bond. - /// @param _nextMinimumBond The minimum bond amount that can be submitted by - /// a darknode. - function updateMinimumBond(uint256 _nextMinimumBond) external onlyOwner { - // Will be updated next epoch - nextMinimumBond = _nextMinimumBond; - } - - /// @notice Allows the contract owner to update the minimum pod size. - /// @param _nextMinimumPodSize The minimum size of a pod. - function updateMinimumPodSize(uint256 _nextMinimumPodSize) - external - onlyOwner - { - // Will be updated next epoch - nextMinimumPodSize = _nextMinimumPodSize; - } - - /// @notice Allows the contract owner to update the minimum epoch interval. - /// @param _nextMinimumEpochInterval The minimum number of blocks between epochs. - function updateMinimumEpochInterval(uint256 _nextMinimumEpochInterval) - external - onlyOwner - { - // Will be updated next epoch - nextMinimumEpochInterval = _nextMinimumEpochInterval; - } - - /// @notice Allow the contract owner to update the DarknodeSlasher contract - /// address. - /// @param _slasher The new slasher address. - function updateSlasher(IDarknodeSlasher _slasher) external onlyOwner { - require( - address(_slasher) != address(0), - "DarknodeRegistry: invalid slasher address" - ); - nextSlasher = _slasher; - } - - /// @notice Allow the DarknodeSlasher contract to slash a portion of darknode's - /// bond and deregister it. - /// @param _guilty The guilty prover whose bond is being slashed. - /// @param _challenger The challenger who should receive a portion of the bond as reward. - /// @param _percentage The total percentage of bond to be slashed. - function slash( - address _guilty, - address _challenger, - uint256 _percentage - ) external onlySlasher onlyDarknode(_guilty) { - require(_percentage <= 100, "DarknodeRegistry: invalid percent"); - - // If the darknode has not been deregistered then deregister it - if (isDeregisterable(_guilty)) { - deregisterDarknode(_guilty); - } - - uint256 totalBond = store.darknodeBond(_guilty); - uint256 penalty = totalBond.div(100).mul(_percentage); - uint256 challengerReward = penalty.div(2); - uint256 darknodePaymentReward = penalty.sub(challengerReward); - if (challengerReward > 0) { - // Slash the bond of the failed prover - store.updateDarknodeBond(_guilty, totalBond.sub(penalty)); - - // Distribute the remaining bond into the darknode payment reward pool - require( - address(darknodePayment) != address(0x0), - "DarknodeRegistry: invalid payment address" - ); - require( - ren.transfer( - address(darknodePayment.store()), - darknodePaymentReward - ), - "DarknodeRegistry: reward transfer failed" - ); - require( - ren.transfer(_challenger, challengerReward), - "DarknodeRegistry: reward transfer failed" - ); - } - - emit LogDarknodeSlashed( - store.darknodeOperator(_guilty), - _guilty, - _challenger, - _percentage - ); - } - - /// @notice Refund the bond of a deregistered darknode. This will make the - /// darknode available for registration again. Anyone can call this function - /// but the bond will always be refunded to the darknode operator. - /// - /// @param _darknodeID The darknode ID that will be refunded. - function refund(address _darknodeID) external onlyRefundable(_darknodeID) { - address darknodeOperator = store.darknodeOperator(_darknodeID); - - // Remember the bond amount - uint256 amount = store.darknodeBond(_darknodeID); - - // Erase the darknode from the registry - store.removeDarknode(_darknodeID); - - // Refund the operator by transferring REN - require( - ren.transfer(darknodeOperator, amount), - "DarknodeRegistry: bond transfer failed" - ); - - // Emit an event. - emit LogDarknodeRefunded(darknodeOperator, _darknodeID, amount); - } - - /// @notice Retrieves the address of the account that registered a darknode. - /// @param _darknodeID The ID of the darknode to retrieve the owner for. - function getDarknodeOperator(address _darknodeID) - external - view - returns (address payable) - { - return store.darknodeOperator(_darknodeID); - } - - /// @notice Retrieves the bond amount of a darknode in 10^-18 REN. - /// @param _darknodeID The ID of the darknode to retrieve the bond for. - function getDarknodeBond(address _darknodeID) - external - view - returns (uint256) - { - return store.darknodeBond(_darknodeID); - } - - /// @notice Retrieves the encryption public key of the darknode. - /// @param _darknodeID The ID of the darknode to retrieve the public key for. - function getDarknodePublicKey(address _darknodeID) - external - view - returns (bytes memory) - { - return store.darknodePublicKey(_darknodeID); - } - - /// @notice Retrieves a list of darknodes which are registered for the - /// current epoch. - /// @param _start A darknode ID used as an offset for the list. If _start is - /// 0x0, the first dark node will be used. _start won't be - /// included it is not registered for the epoch. - /// @param _count The number of darknodes to retrieve starting from _start. - /// If _count is 0, all of the darknodes from _start are - /// retrieved. If _count is more than the remaining number of - /// registered darknodes, the rest of the list will contain - /// 0x0s. - function getDarknodes(address _start, uint256 _count) - external - view - returns (address[] memory) - { - uint256 count = _count; - if (count == 0) { - count = numDarknodes; - } - return getDarknodesFromEpochs(_start, count, false); - } - - /// @notice Retrieves a list of darknodes which were registered for the - /// previous epoch. See `getDarknodes` for the parameter documentation. - function getPreviousDarknodes(address _start, uint256 _count) - external - view - returns (address[] memory) - { - uint256 count = _count; - if (count == 0) { - count = numDarknodesPreviousEpoch; - } - return getDarknodesFromEpochs(_start, count, true); - } - - /// @notice Returns whether a darknode is scheduled to become registered - /// at next epoch. - /// @param _darknodeID The ID of the darknode to return. - function isPendingRegistration(address _darknodeID) - public - view - returns (bool) - { - uint256 registeredAt = store.darknodeRegisteredAt(_darknodeID); - return registeredAt != 0 && registeredAt > currentEpoch.blocktime; - } - - /// @notice Returns if a darknode is in the pending deregistered state. In - /// this state a darknode is still considered registered. - function isPendingDeregistration(address _darknodeID) - public - view - returns (bool) - { - uint256 deregisteredAt = store.darknodeDeregisteredAt(_darknodeID); - return deregisteredAt != 0 && deregisteredAt > currentEpoch.blocktime; - } - - /// @notice Returns if a darknode is in the deregistered state. - function isDeregistered(address _darknodeID) public view returns (bool) { - uint256 deregisteredAt = store.darknodeDeregisteredAt(_darknodeID); - return deregisteredAt != 0 && deregisteredAt <= currentEpoch.blocktime; - } - - /// @notice Returns if a darknode can be deregistered. This is true if the - /// darknodes is in the registered state and has not attempted to - /// deregister yet. - function isDeregisterable(address _darknodeID) public view returns (bool) { - uint256 deregisteredAt = store.darknodeDeregisteredAt(_darknodeID); - // The Darknode is currently in the registered state and has not been - // transitioned to the pending deregistration, or deregistered, state - return isRegistered(_darknodeID) && deregisteredAt == 0; - } - - /// @notice Returns if a darknode is in the refunded state. This is true - /// for darknodes that have never been registered, or darknodes that have - /// been deregistered and refunded. - function isRefunded(address _darknodeID) public view returns (bool) { - uint256 registeredAt = store.darknodeRegisteredAt(_darknodeID); - uint256 deregisteredAt = store.darknodeDeregisteredAt(_darknodeID); - return registeredAt == 0 && deregisteredAt == 0; - } - - /// @notice Returns if a darknode is refundable. This is true for darknodes - /// that have been in the deregistered state for one full epoch. - function isRefundable(address _darknodeID) public view returns (bool) { - return - isDeregistered(_darknodeID) && - store.darknodeDeregisteredAt(_darknodeID) <= - (previousEpoch.blocktime - deregistrationInterval); - } - - /// @notice Returns the registration time of a given darknode. - function darknodeRegisteredAt(address darknodeID) - external - view - returns (uint256) - { - return store.darknodeRegisteredAt(darknodeID); - } - - /// @notice Returns the deregistration time of a given darknode. - function darknodeDeregisteredAt(address darknodeID) - external - view - returns (uint256) - { - return store.darknodeDeregisteredAt(darknodeID); - } - - /// @notice Returns if a darknode is in the registered state. - function isRegistered(address _darknodeID) public view returns (bool) { - return isRegisteredInEpoch(_darknodeID, currentEpoch); - } - - /// @notice Returns if a darknode was in the registered state last epoch. - function isRegisteredInPreviousEpoch(address _darknodeID) - public - view - returns (bool) - { - return isRegisteredInEpoch(_darknodeID, previousEpoch); - } - - /// @notice Returns if a darknode was in the registered state for a given - /// epoch. - /// @param _darknodeID The ID of the darknode. - /// @param _epoch One of currentEpoch, previousEpoch. - function isRegisteredInEpoch(address _darknodeID, Epoch memory _epoch) - private - view - returns (bool) - { - uint256 registeredAt = store.darknodeRegisteredAt(_darknodeID); - uint256 deregisteredAt = store.darknodeDeregisteredAt(_darknodeID); - bool registered = registeredAt != 0 && registeredAt <= _epoch.blocktime; - bool notDeregistered = - deregisteredAt == 0 || deregisteredAt > _epoch.blocktime; - // The Darknode has been registered and has not yet been deregistered, - // although it might be pending deregistration - return registered && notDeregistered; - } - - /// @notice Returns a list of darknodes registered for either the current - /// or the previous epoch. See `getDarknodes` for documentation on the - /// parameters `_start` and `_count`. - /// @param _usePreviousEpoch If true, use the previous epoch, otherwise use - /// the current epoch. - function getDarknodesFromEpochs( - address _start, - uint256 _count, - bool _usePreviousEpoch - ) private view returns (address[] memory) { - uint256 count = _count; - if (count == 0) { - count = numDarknodes; - } - - address[] memory nodes = new address[](count); - - // Begin with the first node in the list - uint256 n = 0; - address next = _start; - if (next == address(0)) { - next = store.begin(); - } - - // Iterate until all registered Darknodes have been collected - while (n < count) { - if (next == address(0)) { - break; - } - // Only include Darknodes that are currently registered - bool includeNext; - if (_usePreviousEpoch) { - includeNext = isRegisteredInPreviousEpoch(next); - } else { - includeNext = isRegistered(next); - } - if (!includeNext) { - next = store.next(next); - continue; - } - nodes[n] = next; - next = store.next(next); - n += 1; - } - return nodes; - } - - /// Private function called by `deregister` and `slash` - function deregisterDarknode(address _darknodeID) private { - address darknodeOperator = store.darknodeOperator(_darknodeID); - - // Flag the darknode for deregistration - store.updateDarknodeDeregisteredAt( - _darknodeID, - currentEpoch.blocktime.add(minimumEpochInterval) - ); - numDarknodesNextEpoch = numDarknodesNextEpoch.sub(1); - - // Emit an event - emit LogDarknodeDeregistered(darknodeOperator, _darknodeID); - } - - function getDarknodeCountFromEpochs() - private - view - returns ( - uint256, - uint256, - uint256 - ) - { - // Begin with the first node in the list - uint256 nPreviousEpoch = 0; - uint256 nCurrentEpoch = 0; - uint256 nNextEpoch = 0; - address next = store.begin(); - - // Iterate until all registered Darknodes have been collected - while (true) { - // End of darknode list. - if (next == address(0)) { - break; - } - - if (isRegisteredInPreviousEpoch(next)) { - nPreviousEpoch += 1; - } - - if (isRegistered(next)) { - nCurrentEpoch += 1; - } - - // Darknode is registered and has not deregistered, or is pending - // becoming registered. - if ( - ((isRegistered(next) && !isPendingDeregistration(next)) || - isPendingRegistration(next)) - ) { - nNextEpoch += 1; - } - next = store.next(next); - } - return (nPreviousEpoch, nCurrentEpoch, nNextEpoch); - } -} - -/* solium-disable-next-line no-empty-blocks */ -contract DarknodeRegistryProxy is InitializableAdminUpgradeabilityProxy { - -} diff --git a/contracts/DarknodeRegistry/DarknodeRegistryStore.sol b/contracts/DarknodeRegistry/DarknodeRegistryStore.sol deleted file mode 100644 index b6790eac..00000000 --- a/contracts/DarknodeRegistry/DarknodeRegistryStore.sol +++ /dev/null @@ -1,195 +0,0 @@ -pragma solidity 0.5.17; - -import "@openzeppelin/contracts-ethereum-package/contracts/math/SafeMath.sol"; - -import "../Governance/Claimable.sol"; -import "../libraries/LinkedList.sol"; -import "../RenToken/RenToken.sol"; -import "../libraries/CanReclaimTokens.sol"; - -/// @notice This contract stores data and funds for the DarknodeRegistry -/// contract. The data / fund logic and storage have been separated to improve -/// upgradability. -contract DarknodeRegistryStore is Claimable, CanReclaimTokens { - using SafeMath for uint256; - - string public VERSION; // Passed in as a constructor parameter. - - /// @notice Darknodes are stored in the darknode struct. The owner is the - /// address that registered the darknode, the bond is the amount of REN that - /// was transferred during registration, and the public key is the - /// encryption key that should be used when sending sensitive information to - /// the darknode. - struct Darknode { - // The owner of a Darknode is the address that called the register - // function. The owner is the only address that is allowed to - // deregister the Darknode, unless the Darknode is slashed for - // malicious behavior. - address payable owner; - // The bond is the amount of REN submitted as a bond by the Darknode. - // This amount is reduced when the Darknode is slashed for malicious - // behavior. - uint256 bond; - // The block number at which the Darknode is considered registered. - uint256 registeredAt; - // The block number at which the Darknode is considered deregistered. - uint256 deregisteredAt; - // The public key used by this Darknode for encrypting sensitive data - // off chain. It is assumed that the Darknode has access to the - // respective private key, and that there is an agreement on the format - // of the public key. - bytes publicKey; - } - - /// Registry data. - mapping(address => Darknode) private darknodeRegistry; - LinkedList.List private darknodes; - - // RenToken. - RenToken public ren; - - /// @notice The contract constructor. - /// - /// @param _VERSION A string defining the contract version. - /// @param _ren The address of the RenToken contract. - constructor(string memory _VERSION, RenToken _ren) public { - Claimable.initialize(msg.sender); - CanReclaimTokens.initialize(msg.sender); - VERSION = _VERSION; - ren = _ren; - blacklistRecoverableToken(address(ren)); - } - - /// @notice Instantiates a darknode and appends it to the darknodes - /// linked-list. - /// - /// @param _darknodeID The darknode's ID. - /// @param _darknodeOperator The darknode's owner's address. - /// @param _bond The darknode's bond value. - /// @param _publicKey The darknode's public key. - /// @param _registeredAt The time stamp when the darknode is registered. - /// @param _deregisteredAt The time stamp when the darknode is deregistered. - function appendDarknode( - address _darknodeID, - address payable _darknodeOperator, - uint256 _bond, - bytes calldata _publicKey, - uint256 _registeredAt, - uint256 _deregisteredAt - ) external onlyOwner { - Darknode memory darknode = - Darknode({ - owner: _darknodeOperator, - bond: _bond, - publicKey: _publicKey, - registeredAt: _registeredAt, - deregisteredAt: _deregisteredAt - }); - darknodeRegistry[_darknodeID] = darknode; - LinkedList.append(darknodes, _darknodeID); - } - - /// @notice Returns the address of the first darknode in the store. - function begin() external view onlyOwner returns (address) { - return LinkedList.begin(darknodes); - } - - /// @notice Returns the address of the next darknode in the store after the - /// given address. - function next(address darknodeID) - external - view - onlyOwner - returns (address) - { - return LinkedList.next(darknodes, darknodeID); - } - - /// @notice Removes a darknode from the store and transfers its bond to the - /// owner of this contract. - function removeDarknode(address darknodeID) external onlyOwner { - uint256 bond = darknodeRegistry[darknodeID].bond; - delete darknodeRegistry[darknodeID]; - LinkedList.remove(darknodes, darknodeID); - require( - ren.transfer(owner(), bond), - "DarknodeRegistryStore: bond transfer failed" - ); - } - - /// @notice Updates the bond of a darknode. The new bond must be smaller - /// than the previous bond of the darknode. - function updateDarknodeBond(address darknodeID, uint256 decreasedBond) - external - onlyOwner - { - uint256 previousBond = darknodeRegistry[darknodeID].bond; - require( - decreasedBond < previousBond, - "DarknodeRegistryStore: bond not decreased" - ); - darknodeRegistry[darknodeID].bond = decreasedBond; - require( - ren.transfer(owner(), previousBond.sub(decreasedBond)), - "DarknodeRegistryStore: bond transfer failed" - ); - } - - /// @notice Updates the deregistration timestamp of a darknode. - function updateDarknodeDeregisteredAt( - address darknodeID, - uint256 deregisteredAt - ) external onlyOwner { - darknodeRegistry[darknodeID].deregisteredAt = deregisteredAt; - } - - /// @notice Returns the owner of a given darknode. - function darknodeOperator(address darknodeID) - external - view - onlyOwner - returns (address payable) - { - return darknodeRegistry[darknodeID].owner; - } - - /// @notice Returns the bond of a given darknode. - function darknodeBond(address darknodeID) - external - view - onlyOwner - returns (uint256) - { - return darknodeRegistry[darknodeID].bond; - } - - /// @notice Returns the registration time of a given darknode. - function darknodeRegisteredAt(address darknodeID) - external - view - onlyOwner - returns (uint256) - { - return darknodeRegistry[darknodeID].registeredAt; - } - - /// @notice Returns the deregistration time of a given darknode. - function darknodeDeregisteredAt(address darknodeID) - external - view - onlyOwner - returns (uint256) - { - return darknodeRegistry[darknodeID].deregisteredAt; - } - - /// @notice Returns the encryption public key of a given darknode. - function darknodePublicKey(address darknodeID) - external - view - onlyOwner - returns (bytes memory) - { - return darknodeRegistry[darknodeID].publicKey; - } -} diff --git a/contracts/DarknodeRegistry/GetOperatorDarknodes.sol b/contracts/DarknodeRegistry/GetOperatorDarknodes.sol deleted file mode 100644 index c26e692a..00000000 --- a/contracts/DarknodeRegistry/GetOperatorDarknodes.sol +++ /dev/null @@ -1,42 +0,0 @@ -pragma solidity 0.5.17; - -import "./DarknodeRegistry.sol"; - -contract GetOperatorDarknodes { - DarknodeRegistryLogicV1 public darknodeRegistry; - - constructor(DarknodeRegistryLogicV1 _darknodeRegistry) public { - darknodeRegistry = _darknodeRegistry; - } - - function getOperatorDarknodes(address _operator) - public - view - returns (address[] memory) - { - uint256 numDarknodes = darknodeRegistry.numDarknodes(); - address[] memory nodesPadded = new address[](numDarknodes); - - address[] memory allNodes = darknodeRegistry.getDarknodes( - address(0), - 0 - ); - - uint256 j = 0; - for (uint256 i = 0; i < allNodes.length; i++) { - if ( - darknodeRegistry.getDarknodeOperator(allNodes[i]) == _operator - ) { - nodesPadded[j] = (allNodes[i]); - j++; - } - } - - address[] memory nodes = new address[](j); - for (uint256 i = 0; i < j; i++) { - nodes[i] = nodesPadded[i]; - } - - return nodes; - } -} diff --git a/contracts/DarknodeSlasher/DarknodeSlasher.sol b/contracts/DarknodeSlasher/DarknodeSlasher.sol deleted file mode 100644 index 1ffc0280..00000000 --- a/contracts/DarknodeSlasher/DarknodeSlasher.sol +++ /dev/null @@ -1,199 +0,0 @@ -pragma solidity 0.5.17; - -import "../Governance/Claimable.sol"; -import "../libraries/Validate.sol"; -import "../DarknodeRegistry/DarknodeRegistry.sol"; - -/// @notice DarknodeSlasher will become a voting system for darknodes to -/// deregister other misbehaving darknodes. -/// Right now, it is a placeholder. -contract DarknodeSlasher is Claimable { - DarknodeRegistryLogicV1 public darknodeRegistry; - - uint256 public blacklistSlashPercent; - uint256 public maliciousSlashPercent; - uint256 public secretRevealSlashPercent; - - // Malicious Darknodes can be slashed for each height and round - // mapping of height -> round -> guilty address -> slashed - mapping(uint256 => mapping(uint256 => mapping(address => bool))) - public slashed; - - // mapping of darknodes which have revealed their secret - mapping(address => bool) public secretRevealed; - - // mapping of address to whether the darknode has been blacklisted - mapping(address => bool) public blacklisted; - - /// @notice Emitted when the DarknodeRegistry is updated. - /// @param _previousDarknodeRegistry The address of the old registry. - /// @param _nextDarknodeRegistry The address of the new registry. - event LogDarknodeRegistryUpdated( - DarknodeRegistryLogicV1 indexed _previousDarknodeRegistry, - DarknodeRegistryLogicV1 indexed _nextDarknodeRegistry - ); - - /// @notice Restrict a function to have a valid percentage. - modifier validPercent(uint256 _percent) { - require(_percent <= 100, "DarknodeSlasher: invalid percentage"); - _; - } - - constructor(DarknodeRegistryLogicV1 _darknodeRegistry) public { - Claimable.initialize(msg.sender); - darknodeRegistry = _darknodeRegistry; - } - - /// @notice Allows the contract owner to update the address of the - /// darknode registry contract. - /// @param _darknodeRegistry The address of the Darknode Registry - /// contract. - function updateDarknodeRegistry(DarknodeRegistryLogicV1 _darknodeRegistry) - external - onlyOwner - { - require( - address(_darknodeRegistry) != address(0x0), - "DarknodeSlasher: invalid Darknode Registry address" - ); - DarknodeRegistryLogicV1 previousDarknodeRegistry = darknodeRegistry; - darknodeRegistry = _darknodeRegistry; - emit LogDarknodeRegistryUpdated( - previousDarknodeRegistry, - darknodeRegistry - ); - } - - function setBlacklistSlashPercent(uint256 _percentage) - public - validPercent(_percentage) - onlyOwner - { - blacklistSlashPercent = _percentage; - } - - function setMaliciousSlashPercent(uint256 _percentage) - public - validPercent(_percentage) - onlyOwner - { - maliciousSlashPercent = _percentage; - } - - function setSecretRevealSlashPercent(uint256 _percentage) - public - validPercent(_percentage) - onlyOwner - { - secretRevealSlashPercent = _percentage; - } - - function slash( - address _guilty, - address _challenger, - uint256 _percentage - ) external onlyOwner { - darknodeRegistry.slash(_guilty, _challenger, _percentage); - } - - function blacklist(address _guilty) external onlyOwner { - require(!blacklisted[_guilty], "DarknodeSlasher: already blacklisted"); - blacklisted[_guilty] = true; - darknodeRegistry.slash(_guilty, owner(), blacklistSlashPercent); - } - - function slashDuplicatePropose( - uint256 _height, - uint256 _round, - bytes calldata _blockhash1, - uint256 _validRound1, - bytes calldata _signature1, - bytes calldata _blockhash2, - uint256 _validRound2, - bytes calldata _signature2 - ) external { - address signer = - Validate.duplicatePropose( - _height, - _round, - _blockhash1, - _validRound1, - _signature1, - _blockhash2, - _validRound2, - _signature2 - ); - require( - !slashed[_height][_round][signer], - "DarknodeSlasher: already slashed" - ); - slashed[_height][_round][signer] = true; - darknodeRegistry.slash(signer, msg.sender, maliciousSlashPercent); - } - - function slashDuplicatePrevote( - uint256 _height, - uint256 _round, - bytes calldata _blockhash1, - bytes calldata _signature1, - bytes calldata _blockhash2, - bytes calldata _signature2 - ) external { - address signer = - Validate.duplicatePrevote( - _height, - _round, - _blockhash1, - _signature1, - _blockhash2, - _signature2 - ); - require( - !slashed[_height][_round][signer], - "DarknodeSlasher: already slashed" - ); - slashed[_height][_round][signer] = true; - darknodeRegistry.slash(signer, msg.sender, maliciousSlashPercent); - } - - function slashDuplicatePrecommit( - uint256 _height, - uint256 _round, - bytes calldata _blockhash1, - bytes calldata _signature1, - bytes calldata _blockhash2, - bytes calldata _signature2 - ) external { - address signer = - Validate.duplicatePrecommit( - _height, - _round, - _blockhash1, - _signature1, - _blockhash2, - _signature2 - ); - require( - !slashed[_height][_round][signer], - "DarknodeSlasher: already slashed" - ); - slashed[_height][_round][signer] = true; - darknodeRegistry.slash(signer, msg.sender, maliciousSlashPercent); - } - - function slashSecretReveal( - uint256 _a, - uint256 _b, - uint256 _c, - uint256 _d, - uint256 _e, - uint256 _f, - bytes calldata _signature - ) external { - address signer = - Validate.recoverSecret(_a, _b, _c, _d, _e, _f, _signature); - require(!secretRevealed[signer], "DarknodeSlasher: already slashed"); - secretRevealed[signer] = true; - darknodeRegistry.slash(signer, msg.sender, secretRevealSlashPercent); - } -} diff --git a/contracts/Governance/Claimable.sol b/contracts/Governance/Claimable.sol deleted file mode 100644 index 7b1f73e5..00000000 --- a/contracts/Governance/Claimable.sol +++ /dev/null @@ -1,38 +0,0 @@ -pragma solidity 0.5.17; - -import "@openzeppelin/contracts-ethereum-package/contracts/ownership/Ownable.sol"; -import "@openzeppelin/upgrades/contracts/Initializable.sol"; - -/** - * @title Claimable - * @dev Extension for the Ownable contract, where the ownership needs to be claimed. - * This allows the new owner to accept the transfer. - */ -contract Claimable is Initializable, Ownable { - address public pendingOwner; - - function initialize(address _nextOwner) public initializer { - Ownable.initialize(_nextOwner); - } - - modifier onlyPendingOwner() { - require( - _msgSender() == pendingOwner, - "Claimable: caller is not the pending owner" - ); - _; - } - - function transferOwnership(address newOwner) public onlyOwner { - require( - newOwner != owner() && newOwner != pendingOwner, - "Claimable: invalid new owner" - ); - pendingOwner = newOwner; - } - - function claimOwnership() public onlyPendingOwner { - _transferOwnership(pendingOwner); - delete pendingOwner; - } -} diff --git a/contracts/Governance/RenProxyAdmin.sol b/contracts/Governance/RenProxyAdmin.sol deleted file mode 100644 index 321059e8..00000000 --- a/contracts/Governance/RenProxyAdmin.sol +++ /dev/null @@ -1,14 +0,0 @@ -pragma solidity 0.5.17; - -import "@openzeppelin/upgrades/contracts/upgradeability/ProxyAdmin.sol"; - -/** - * @title RenProxyAdmin - * @dev Proxies restrict the proxy's owner from calling functions from the - * delegate contract logic. The ProxyAdmin contract allows single account to be - * the governance address of both the proxy and the delegate contract logic. - */ -/* solium-disable-next-line no-empty-blocks */ -contract RenProxyAdmin is ProxyAdmin { - -} diff --git a/contracts/Protocol/Protocol.sol b/contracts/Protocol/Protocol.sol deleted file mode 100644 index a5ddb643..00000000 --- a/contracts/Protocol/Protocol.sol +++ /dev/null @@ -1,49 +0,0 @@ -pragma solidity 0.5.17; - -import "@openzeppelin/upgrades/contracts/Initializable.sol"; -import "../Governance/Claimable.sol"; - -/** The Protocol contract is used to look-up other Ren contracts. */ -contract Protocol is Initializable, Claimable { - event LogContractUpdated( - string contractName, - address indexed contractAddress, - string indexed contractNameIndexed - ); - - mapping(string => address) internal contractMap; - - function __Protocol_init(address adminAddress_) public initializer { - Claimable.initialize(adminAddress_); - } - - function addContract(string memory contractName, address contractAddress) - public - onlyOwner - { - require( - contractMap[contractName] == address(0x0), - "Protocol: contract entry already exists" - ); - contractMap[contractName] = contractAddress; - - emit LogContractUpdated(contractName, contractAddress, contractName); - } - - function updateContract(string memory contractName, address contractAddress) - public - onlyOwner - { - contractMap[contractName] = contractAddress; - - emit LogContractUpdated(contractName, contractAddress, contractName); - } - - function getContract(string memory contractName) - public - view - returns (address) - { - return contractMap[contractName]; - } -} diff --git a/contracts/RenToken/RenToken.sol b/contracts/RenToken/RenToken.sol deleted file mode 100644 index fd9b12a7..00000000 --- a/contracts/RenToken/RenToken.sol +++ /dev/null @@ -1,38 +0,0 @@ -pragma solidity 0.5.17; - -import "@openzeppelin/contracts-ethereum-package/contracts/ownership/Ownable.sol"; -import "@openzeppelin/contracts-ethereum-package/contracts/token/ERC20/ERC20Detailed.sol"; -import "@openzeppelin/contracts-ethereum-package/contracts/token/ERC20/ERC20Pausable.sol"; -import "@openzeppelin/contracts-ethereum-package/contracts/token/ERC20/ERC20Burnable.sol"; - -contract RenToken is Ownable, ERC20Detailed, ERC20Pausable, ERC20Burnable { - string private constant _name = "REN"; - string private constant _symbol = "REN"; - uint8 private constant _decimals = 18; - - uint256 public constant INITIAL_SUPPLY = - 1000000000 * 10**uint256(_decimals); - - /// @notice The RenToken Constructor. - constructor() public { - ERC20Pausable.initialize(msg.sender); - ERC20Detailed.initialize(_name, _symbol, _decimals); - Ownable.initialize(msg.sender); - _mint(msg.sender, INITIAL_SUPPLY); - } - - function transferTokens(address beneficiary, uint256 amount) - public - onlyOwner - returns (bool) - { - // Note: The deployed version has no revert reason - /* solium-disable-next-line error-reason */ - require(amount > 0); - - _transfer(msg.sender, beneficiary, amount); - emit Transfer(msg.sender, beneficiary, amount); - - return true; - } -} diff --git a/contracts/libraries/CanReclaimTokens.sol b/contracts/libraries/CanReclaimTokens.sol deleted file mode 100644 index 12ad7430..00000000 --- a/contracts/libraries/CanReclaimTokens.sol +++ /dev/null @@ -1,40 +0,0 @@ -pragma solidity 0.5.17; - -import "@openzeppelin/contracts-ethereum-package/contracts/ownership/Ownable.sol"; -import "@openzeppelin/contracts-ethereum-package/contracts/token/ERC20/ERC20.sol"; -import "@openzeppelin/contracts-ethereum-package/contracts/token/ERC20/SafeERC20.sol"; -import "@openzeppelin/upgrades/contracts/Initializable.sol"; - -import "../Governance/Claimable.sol"; - -contract CanReclaimTokens is Claimable { - using SafeERC20 for ERC20; - - mapping(address => bool) private recoverableTokensBlacklist; - - function initialize(address _nextOwner) public initializer { - Claimable.initialize(_nextOwner); - } - - function blacklistRecoverableToken(address _token) public onlyOwner { - recoverableTokensBlacklist[_token] = true; - } - - /// @notice Allow the owner of the contract to recover funds accidentally - /// sent to the contract. To withdraw ETH, the token should be set to `0x0`. - function recoverTokens(address _token) external onlyOwner { - require( - !recoverableTokensBlacklist[_token], - "CanReclaimTokens: token is not recoverable" - ); - - if (_token == address(0x0)) { - msg.sender.transfer(address(this).balance); - } else { - ERC20(_token).safeTransfer( - msg.sender, - ERC20(_token).balanceOf(address(this)) - ); - } - } -} diff --git a/contracts/libraries/Compare.sol b/contracts/libraries/Compare.sol deleted file mode 100644 index 5593430e..00000000 --- a/contracts/libraries/Compare.sol +++ /dev/null @@ -1,19 +0,0 @@ -pragma solidity 0.5.17; - -library Compare { - function bytesEqual(bytes memory a, bytes memory b) - internal - pure - returns (bool) - { - if (a.length != b.length) { - return false; - } - for (uint256 i = 0; i < a.length; i++) { - if (a[i] != b[i]) { - return false; - } - } - return true; - } -} diff --git a/contracts/libraries/ERC20WithFees.sol b/contracts/libraries/ERC20WithFees.sol deleted file mode 100644 index d3c791cd..00000000 --- a/contracts/libraries/ERC20WithFees.sol +++ /dev/null @@ -1,25 +0,0 @@ -pragma solidity 0.5.17; - -import "@openzeppelin/contracts-ethereum-package/contracts/token/ERC20/IERC20.sol"; -import "@openzeppelin/contracts-ethereum-package/contracts/token/ERC20/SafeERC20.sol"; -import "@openzeppelin/contracts-ethereum-package/contracts/math/Math.sol"; -import "@openzeppelin/contracts-ethereum-package/contracts/math/SafeMath.sol"; - -library ERC20WithFees { - using SafeMath for uint256; - using SafeERC20 for IERC20; - - /// @notice Calls transferFrom on the token, returning the value transferred - /// after fees. - function safeTransferFromWithFees( - IERC20 token, - address from, - address to, - uint256 value - ) internal returns (uint256) { - uint256 balancesBefore = token.balanceOf(to); - token.safeTransferFrom(from, to, value); - uint256 balancesAfter = token.balanceOf(to); - return Math.min(value, balancesAfter.sub(balancesBefore)); - } -} diff --git a/contracts/libraries/LinkedList.sol b/contracts/libraries/LinkedList.sol deleted file mode 100644 index 52232243..00000000 --- a/contracts/libraries/LinkedList.sol +++ /dev/null @@ -1,239 +0,0 @@ -pragma solidity 0.5.17; - -/** - * @notice LinkedList is a library for a circular double linked list. - */ -library LinkedList { - /* - * @notice A permanent NULL node (0x0) in the circular double linked list. - * NULL.next is the head, and NULL.previous is the tail. - */ - address public constant NULL = address(0); - - /** - * @notice A node points to the node before it, and the node after it. If - * node.previous = NULL, then the node is the head of the list. If - * node.next = NULL, then the node is the tail of the list. - */ - struct Node { - bool inList; - address previous; - address next; - } - - /** - * @notice LinkedList uses a mapping from address to nodes. Each address - * uniquely identifies a node, and in this way they are used like pointers. - */ - struct List { - mapping(address => Node) list; - uint256 length; - } - - /** - * @notice Insert a new node before an existing node. - * - * @param self The list being used. - * @param target The existing node in the list. - * @param newNode The next node to insert before the target. - */ - function insertBefore( - List storage self, - address target, - address newNode - ) internal { - require(newNode != address(0), "LinkedList: invalid address"); - require(!isInList(self, newNode), "LinkedList: already in list"); - require( - isInList(self, target) || target == NULL, - "LinkedList: not in list" - ); - - // It is expected that this value is sometimes NULL. - address prev = self.list[target].previous; - - self.list[newNode].next = target; - self.list[newNode].previous = prev; - self.list[target].previous = newNode; - self.list[prev].next = newNode; - - self.list[newNode].inList = true; - - self.length += 1; - } - - /** - * @notice Insert a new node after an existing node. - * - * @param self The list being used. - * @param target The existing node in the list. - * @param newNode The next node to insert after the target. - */ - function insertAfter( - List storage self, - address target, - address newNode - ) internal { - require(newNode != address(0), "LinkedList: invalid address"); - require(!isInList(self, newNode), "LinkedList: already in list"); - require( - isInList(self, target) || target == NULL, - "LinkedList: not in list" - ); - - // It is expected that this value is sometimes NULL. - address n = self.list[target].next; - - self.list[newNode].previous = target; - self.list[newNode].next = n; - self.list[target].next = newNode; - self.list[n].previous = newNode; - - self.list[newNode].inList = true; - - self.length += 1; - } - - /** - * @notice Remove a node from the list, and fix the previous and next - * pointers that are pointing to the removed node. Removing anode that is not - * in the list will do nothing. - * - * @param self The list being using. - * @param node The node in the list to be removed. - */ - function remove(List storage self, address node) internal { - require(isInList(self, node), "LinkedList: not in list"); - - address p = self.list[node].previous; - address n = self.list[node].next; - - self.list[p].next = n; - self.list[n].previous = p; - - // Deleting the node should set this value to false, but we set it here for - // explicitness. - self.list[node].inList = false; - delete self.list[node]; - - self.length -= 1; - } - - /** - * @notice Insert a node at the beginning of the list. - * - * @param self The list being used. - * @param node The node to insert at the beginning of the list. - */ - function prepend(List storage self, address node) internal { - // isInList(node) is checked in insertBefore - - insertBefore(self, begin(self), node); - } - - /** - * @notice Insert a node at the end of the list. - * - * @param self The list being used. - * @param node The node to insert at the end of the list. - */ - function append(List storage self, address node) internal { - // isInList(node) is checked in insertBefore - - insertAfter(self, end(self), node); - } - - function swap( - List storage self, - address left, - address right - ) internal { - // isInList(left) and isInList(right) are checked in remove - - address previousRight = self.list[right].previous; - remove(self, right); - insertAfter(self, left, right); - remove(self, left); - insertAfter(self, previousRight, left); - } - - function isInList(List storage self, address node) - internal - view - returns (bool) - { - return self.list[node].inList; - } - - /** - * @notice Get the node at the beginning of a double linked list. - * - * @param self The list being used. - * - * @return A address identifying the node at the beginning of the double - * linked list. - */ - function begin(List storage self) internal view returns (address) { - return self.list[NULL].next; - } - - /** - * @notice Get the node at the end of a double linked list. - * - * @param self The list being used. - * - * @return A address identifying the node at the end of the double linked - * list. - */ - function end(List storage self) internal view returns (address) { - return self.list[NULL].previous; - } - - function next(List storage self, address node) - internal - view - returns (address) - { - require(isInList(self, node), "LinkedList: not in list"); - return self.list[node].next; - } - - function previous(List storage self, address node) - internal - view - returns (address) - { - require(isInList(self, node), "LinkedList: not in list"); - return self.list[node].previous; - } - - function elements( - List storage self, - address _start, - uint256 _count - ) internal view returns (address[] memory) { - require(_count > 0, "LinkedList: invalid count"); - require( - isInList(self, _start) || _start == address(0), - "LinkedList: not in list" - ); - address[] memory elems = new address[](_count); - - // Begin with the first node in the list - uint256 n = 0; - address nextItem = _start; - if (nextItem == address(0)) { - nextItem = begin(self); - } - - while (n < _count) { - if (nextItem == address(0)) { - break; - } - elems[n] = nextItem; - nextItem = next(self, nextItem); - n += 1; - } - return elems; - } -} diff --git a/contracts/libraries/String.sol b/contracts/libraries/String.sol deleted file mode 100644 index d4798104..00000000 --- a/contracts/libraries/String.sol +++ /dev/null @@ -1,67 +0,0 @@ -pragma solidity 0.5.17; - -library String { - /// @notice Convert a uint value to its decimal string representation - // solium-disable-next-line security/no-assign-params - function fromUint(uint256 _i) internal pure returns (string memory) { - if (_i == 0) { - return "0"; - } - uint256 j = _i; - uint256 len; - while (j != 0) { - len++; - j /= 10; - } - bytes memory bstr = new bytes(len); - uint256 k = len - 1; - while (_i != 0) { - bstr[k--] = bytes1(uint8(48 + (_i % 10))); - _i /= 10; - } - return string(bstr); - } - - /// @notice Convert a bytes32 value to its hex string representation. - function fromBytes32(bytes32 _value) internal pure returns (string memory) { - bytes memory alphabet = "0123456789abcdef"; - - bytes memory str = new bytes(32 * 2 + 2); - str[0] = "0"; - str[1] = "x"; - for (uint256 i = 0; i < 32; i++) { - str[2 + i * 2] = alphabet[uint256(uint8(_value[i] >> 4))]; - str[3 + i * 2] = alphabet[uint256(uint8(_value[i] & 0x0f))]; - } - return string(str); - } - - /// @notice Convert an address to its hex string representation. - function fromAddress(address _addr) internal pure returns (string memory) { - bytes32 value = bytes32(uint256(_addr)); - bytes memory alphabet = "0123456789abcdef"; - - bytes memory str = new bytes(20 * 2 + 2); - str[0] = "0"; - str[1] = "x"; - for (uint256 i = 0; i < 20; i++) { - str[2 + i * 2] = alphabet[uint256(uint8(value[i + 12] >> 4))]; - str[3 + i * 2] = alphabet[uint256(uint8(value[i + 12] & 0x0f))]; - } - return string(str); - } - - /// @notice Append eight strings. - function add8( - string memory a, - string memory b, - string memory c, - string memory d, - string memory e, - string memory f, - string memory g, - string memory h - ) internal pure returns (string memory) { - return string(abi.encodePacked(a, b, c, d, e, f, g, h)); - } -} diff --git a/contracts/libraries/Validate.sol b/contracts/libraries/Validate.sol deleted file mode 100644 index b520a7bd..00000000 --- a/contracts/libraries/Validate.sol +++ /dev/null @@ -1,244 +0,0 @@ -pragma solidity 0.5.17; - -import "@openzeppelin/contracts-ethereum-package/contracts/cryptography/ECDSA.sol"; - -import "../libraries/String.sol"; -import "../libraries/Compare.sol"; - -/// @notice Validate is a library for validating malicious darknode behaviour. -library Validate { - /// @notice Recovers two propose messages and checks if they were signed by - /// the same darknode. If they were different but the height and - /// round were the same, then the darknode was behaving maliciously. - /// @return The address of the signer if and only if propose messages were - /// different. - function duplicatePropose( - uint256 _height, - uint256 _round, - bytes memory _blockhash1, - uint256 _validRound1, - bytes memory _signature1, - bytes memory _blockhash2, - uint256 _validRound2, - bytes memory _signature2 - ) internal pure returns (address) { - require( - !Compare.bytesEqual(_signature1, _signature2), - "Validate: same signature" - ); - address signer1 = - recoverPropose( - _height, - _round, - _blockhash1, - _validRound1, - _signature1 - ); - address signer2 = - recoverPropose( - _height, - _round, - _blockhash2, - _validRound2, - _signature2 - ); - require(signer1 == signer2, "Validate: different signer"); - return signer1; - } - - function recoverPropose( - uint256 _height, - uint256 _round, - bytes memory _blockhash, - uint256 _validRound, - bytes memory _signature - ) internal pure returns (address) { - return - ECDSA.recover( - sha256( - proposeMessage(_height, _round, _blockhash, _validRound) - ), - _signature - ); - } - - function proposeMessage( - uint256 _height, - uint256 _round, - bytes memory _blockhash, - uint256 _validRound - ) internal pure returns (bytes memory) { - return - abi.encodePacked( - "Propose(Height=", - String.fromUint(_height), - ",Round=", - String.fromUint(_round), - ",BlockHash=", - string(_blockhash), - ",ValidRound=", - String.fromUint(_validRound), - ")" - ); - } - - /// @notice Recovers two prevote messages and checks if they were signed by - /// the same darknode. If they were different but the height and - /// round were the same, then the darknode was behaving maliciously. - /// @return The address of the signer if and only if prevote messages were - /// different. - function duplicatePrevote( - uint256 _height, - uint256 _round, - bytes memory _blockhash1, - bytes memory _signature1, - bytes memory _blockhash2, - bytes memory _signature2 - ) internal pure returns (address) { - require( - !Compare.bytesEqual(_signature1, _signature2), - "Validate: same signature" - ); - address signer1 = - recoverPrevote(_height, _round, _blockhash1, _signature1); - address signer2 = - recoverPrevote(_height, _round, _blockhash2, _signature2); - require(signer1 == signer2, "Validate: different signer"); - return signer1; - } - - function recoverPrevote( - uint256 _height, - uint256 _round, - bytes memory _blockhash, - bytes memory _signature - ) internal pure returns (address) { - return - ECDSA.recover( - sha256(prevoteMessage(_height, _round, _blockhash)), - _signature - ); - } - - function prevoteMessage( - uint256 _height, - uint256 _round, - bytes memory _blockhash - ) internal pure returns (bytes memory) { - return - abi.encodePacked( - "Prevote(Height=", - String.fromUint(_height), - ",Round=", - String.fromUint(_round), - ",BlockHash=", - string(_blockhash), - ")" - ); - } - - /// @notice Recovers two precommit messages and checks if they were signed - /// by the same darknode. If they were different but the height and - /// round were the same, then the darknode was behaving maliciously. - /// @return The address of the signer if and only if precommit messages were - /// different. - function duplicatePrecommit( - uint256 _height, - uint256 _round, - bytes memory _blockhash1, - bytes memory _signature1, - bytes memory _blockhash2, - bytes memory _signature2 - ) internal pure returns (address) { - require( - !Compare.bytesEqual(_signature1, _signature2), - "Validate: same signature" - ); - address signer1 = - recoverPrecommit(_height, _round, _blockhash1, _signature1); - address signer2 = - recoverPrecommit(_height, _round, _blockhash2, _signature2); - require(signer1 == signer2, "Validate: different signer"); - return signer1; - } - - function recoverPrecommit( - uint256 _height, - uint256 _round, - bytes memory _blockhash, - bytes memory _signature - ) internal pure returns (address) { - return - ECDSA.recover( - sha256(precommitMessage(_height, _round, _blockhash)), - _signature - ); - } - - function precommitMessage( - uint256 _height, - uint256 _round, - bytes memory _blockhash - ) internal pure returns (bytes memory) { - return - abi.encodePacked( - "Precommit(Height=", - String.fromUint(_height), - ",Round=", - String.fromUint(_round), - ",BlockHash=", - string(_blockhash), - ")" - ); - } - - function recoverSecret( - uint256 _a, - uint256 _b, - uint256 _c, - uint256 _d, - uint256 _e, - uint256 _f, - bytes memory _signature - ) internal pure returns (address) { - return - ECDSA.recover( - sha256(secretMessage(_a, _b, _c, _d, _e, _f)), - _signature - ); - } - - function secretMessage( - uint256 _a, - uint256 _b, - uint256 _c, - uint256 _d, - uint256 _e, - uint256 _f - ) internal pure returns (bytes memory) { - return - abi.encodePacked( - "Secret(", - "ShamirShare(", - String.fromUint(_a), - ",", - String.fromUint(_b), - ",S256N(", - String.fromUint(_c), - "),", - "S256PrivKey(", - "S256N(", - String.fromUint(_d), - "),", - "S256P(", - String.fromUint(_e), - "),", - "S256P(", - String.fromUint(_f), - ")", - ")", - ")", - ")" - ); - } -} diff --git a/contracts/migrations/Migrations.sol b/contracts/migrations/Migrations.sol deleted file mode 100644 index 39ba168c..00000000 --- a/contracts/migrations/Migrations.sol +++ /dev/null @@ -1,25 +0,0 @@ -pragma solidity 0.5.17; - -contract Migrations { - address public owner; - uint256 public last_completed_migration; - - modifier restricted() { - if (msg.sender == owner) { - _; - } - } - - constructor() public { - owner = msg.sender; - } - - function setCompleted(uint256 completed) public restricted { - last_completed_migration = completed; - } - - function upgrade(address new_address) public restricted { - Migrations upgraded = Migrations(new_address); - upgraded.setCompleted(last_completed_migration); - } -} diff --git a/contracts/test/Claimer.sol b/contracts/test/Claimer.sol deleted file mode 100644 index a6f43e4a..00000000 --- a/contracts/test/Claimer.sol +++ /dev/null @@ -1,27 +0,0 @@ -pragma solidity 0.5.17; - -import "../Governance/Claimable.sol"; - -contract Claimer { - Claimable child; - - constructor(Claimable _child) public { - child = _child; - } - - function transferStoreOwnership(address _newOwner) external { - child.transferOwnership(_newOwner); - } - - function claimStoreOwnership() external { - child.claimOwnership(); - } - - function claimTokenOwnership() public { - child.claimOwnership(); - } - - function transferTokenOwnership(address _newOwner) public { - child.transferOwnership(address(_newOwner)); - } -} diff --git a/contracts/test/CompareTest.sol b/contracts/test/CompareTest.sol deleted file mode 100644 index 7fbc65d1..00000000 --- a/contracts/test/CompareTest.sol +++ /dev/null @@ -1,14 +0,0 @@ -pragma solidity 0.5.17; - -import {Compare} from "../libraries/Compare.sol"; - -/// @dev CompareTest exposes the internal functions of Compare.sol. -contract CompareTest { - function bytesEqual(bytes memory a, bytes memory b) - public - pure - returns (bool) - { - return Compare.bytesEqual(a, b); - } -} diff --git a/contracts/test/CycleChanger.sol b/contracts/test/CycleChanger.sol deleted file mode 100644 index 85e4f57f..00000000 --- a/contracts/test/CycleChanger.sol +++ /dev/null @@ -1,23 +0,0 @@ -pragma solidity 0.5.17; - -import "../DarknodePayment/DarknodePayment.sol"; - -/// @notice CycleChanger attempts to change the cycle twice in the same block. -contract CycleChanger { - DarknodePayment public darknodePayment; // Passed in as a constructor parameter. - - /// @notice The contract constructor. - /// @param _darknodePayment The address of the DarknodePaymentStore contract. - constructor(DarknodePayment _darknodePayment) public { - darknodePayment = _darknodePayment; - } - - function changeCycle() public { - darknodePayment.changeCycle(); - darknodePayment.changeCycle(); - } - - function time() public view returns (uint256) { - return block.timestamp; - } -} diff --git a/contracts/test/ERC20WithFeesTest.sol b/contracts/test/ERC20WithFeesTest.sol deleted file mode 100644 index 4fe25134..00000000 --- a/contracts/test/ERC20WithFeesTest.sol +++ /dev/null @@ -1,58 +0,0 @@ -pragma solidity 0.5.17; - -import "@openzeppelin/contracts-ethereum-package/contracts/math/SafeMath.sol"; -import "@openzeppelin/contracts-ethereum-package/contracts/token/ERC20/ERC20.sol"; -import "@openzeppelin/contracts-ethereum-package/contracts/token/ERC20/SafeERC20.sol"; - -import "../libraries/ERC20WithFees.sol"; - -contract ERC20WithFeesTest { - using SafeMath for uint256; - using SafeERC20 for ERC20; - using ERC20WithFees for ERC20; - - // Stores its own balance amount - mapping(address => uint256) public balances; - - function deposit(address _token, uint256 _value) external { - balances[_token] = ERC20(_token).balanceOf(address(this)); - - uint256 newValue = - ERC20(_token).safeTransferFromWithFees( - msg.sender, - address(this), - _value - ); - balances[_token] = balances[_token].add(newValue); - require( - ERC20(_token).balanceOf(address(this)) == balances[_token], - "ERC20WithFeesTest: incorrect balance in deposit" - ); - } - - function withdraw(address _token, uint256 _value) external { - balances[_token] = ERC20(_token).balanceOf(address(this)); - - ERC20(_token).safeTransfer(msg.sender, _value); - balances[_token] = balances[_token].sub(_value); - require( - ERC20(_token).balanceOf(address(this)) == balances[_token], - "ERC20WithFeesTest: incorrect balance in withdraw" - ); - } - - function approve(address _token, uint256 _value) external { - ERC20(_token).safeApprove(msg.sender, _value); - } - - function naiveDeposit(address _token, uint256 _value) external { - balances[_token] = ERC20(_token).balanceOf(address(this)); - - ERC20(_token).safeTransferFrom(msg.sender, address(this), _value); - balances[_token] = balances[_token].add(_value); - require( - ERC20(_token).balanceOf(address(this)) == balances[_token], - "ERC20WithFeesTest: incorrect balance in deposit" - ); - } -} diff --git a/contracts/test/ForceSend.sol b/contracts/test/ForceSend.sol deleted file mode 100644 index 196a749d..00000000 --- a/contracts/test/ForceSend.sol +++ /dev/null @@ -1,7 +0,0 @@ -pragma solidity 0.5.17; - -contract ForceSend { - function send(address payable recipient) public payable { - selfdestruct(recipient); - } -} diff --git a/contracts/test/LinkedListTest.sol b/contracts/test/LinkedListTest.sol deleted file mode 100644 index 385b3b85..00000000 --- a/contracts/test/LinkedListTest.sol +++ /dev/null @@ -1,62 +0,0 @@ -pragma solidity 0.5.17; - -import "../libraries/LinkedList.sol"; - -/// @notice A token that exposes the LinkedList library for testing. -contract LinkedListTest { - using LinkedList for LinkedList.List; - - LinkedList.List private ll; - - function isInList(address node) public view returns (bool) { - return ll.isInList(node); - } - - function next(address node) public view returns (address) { - return ll.next(node); - } - - function previous(address node) public view returns (address) { - return ll.previous(node); - } - - function begin() public view returns (address) { - return ll.begin(); - } - - function end() public view returns (address) { - return ll.end(); - } - - function insertBefore(address target, address newNode) public { - ll.insertBefore(target, newNode); - } - - function insertAfter(address target, address newNode) public { - ll.insertAfter(target, newNode); - } - - function remove(address node) public { - ll.remove(node); - } - - function prepend(address newNode) public { - ll.prepend(newNode); - } - - function append(address newNode) public { - ll.append(newNode); - } - - function swap(address node1, address node2) public { - ll.swap(node1, node2); - } - - function elements(address _start, uint256 _count) - public - view - returns (address[] memory) - { - return ll.elements(_start, _count); - } -} diff --git a/contracts/test/StringTest.sol b/contracts/test/StringTest.sol deleted file mode 100644 index a93ad75f..00000000 --- a/contracts/test/StringTest.sol +++ /dev/null @@ -1,27 +0,0 @@ -pragma solidity 0.5.17; - -import {String} from "../libraries/String.sol"; - -/// @dev StringTest exposes the internal functions of String.sol. -contract StringTest { - function fromUint(uint256 _i) public pure returns (string memory) { - return String.fromUint(_i); - } - - function fromBytes32(bytes32 _value) public pure returns (string memory) { - return String.fromBytes32(_value); - } - - function fromAddress(address _addr) public pure returns (string memory) { - return String.fromAddress(_addr); - } - - function add4( - string memory a, - string memory b, - string memory c, - string memory d - ) public pure returns (string memory) { - return String.add8(a, b, c, d, "", "", "", ""); - } -} diff --git a/contracts/test/ValidateTest.sol b/contracts/test/ValidateTest.sol deleted file mode 100644 index e1a194fb..00000000 --- a/contracts/test/ValidateTest.sol +++ /dev/null @@ -1,152 +0,0 @@ -pragma solidity 0.5.17; - -import "../libraries/Validate.sol"; - -/// @notice Validate is a library for validating malicious darknode behaviour. -contract ValidateTest { - function duplicatePropose( - uint256 _height, - uint256 _round, - bytes memory _blockhash1, - uint256 _validRound1, - bytes memory _signature1, - bytes memory _blockhash2, - uint256 _validRound2, - bytes memory _signature2 - ) public pure returns (address) { - return - Validate.duplicatePropose( - _height, - _round, - _blockhash1, - _validRound1, - _signature1, - _blockhash2, - _validRound2, - _signature2 - ); - } - - function recoverPropose( - uint256 _height, - uint256 _round, - bytes memory _blockhash, - uint256 _validRound, - bytes memory _signature - ) public pure returns (address) { - return - Validate.recoverPropose( - _height, - _round, - _blockhash, - _validRound, - _signature - ); - } - - function duplicatePrevote( - uint256 _height, - uint256 _round, - bytes memory _blockhash1, - bytes memory _signature1, - bytes memory _blockhash2, - bytes memory _signature2 - ) public pure returns (address) { - return - Validate.duplicatePrevote( - _height, - _round, - _blockhash1, - _signature1, - _blockhash2, - _signature2 - ); - } - - function recoverPrevote( - uint256 _height, - uint256 _round, - bytes memory _blockhash, - bytes memory _signature - ) public pure returns (address) { - return Validate.recoverPrevote(_height, _round, _blockhash, _signature); - } - - function duplicatePrecommit( - uint256 _height, - uint256 _round, - bytes memory _blockhash1, - bytes memory _signature1, - bytes memory _blockhash2, - bytes memory _signature2 - ) public pure returns (address) { - return - Validate.duplicatePrecommit( - _height, - _round, - _blockhash1, - _signature1, - _blockhash2, - _signature2 - ); - } - - function recoverPrecommit( - uint256 _height, - uint256 _round, - bytes memory _blockhash, - bytes memory _signature - ) public pure returns (address) { - return - Validate.recoverPrecommit(_height, _round, _blockhash, _signature); - } - - function proposeMessage( - uint256 _height, - uint256 _round, - bytes memory _blockhash, - uint256 _validRound - ) public pure returns (bytes memory) { - return - Validate.proposeMessage(_height, _round, _blockhash, _validRound); - } - - function prevoteMessage( - uint256 _height, - uint256 _round, - bytes memory _blockhash - ) public pure returns (bytes memory) { - return Validate.prevoteMessage(_height, _round, _blockhash); - } - - function precommitMessage( - uint256 _height, - uint256 _round, - bytes memory _blockhash - ) public pure returns (bytes memory) { - return Validate.precommitMessage(_height, _round, _blockhash); - } - - function recoverSecret( - uint256 _a, - uint256 _b, - uint256 _c, - uint256 _d, - uint256 _e, - uint256 _f, - bytes memory _signature - ) public pure returns (address) { - return Validate.recoverSecret(_a, _b, _c, _d, _e, _f, _signature); - } - - function secretMessage( - uint256 _a, - uint256 _b, - uint256 _c, - uint256 _d, - uint256 _e, - uint256 _f - ) public pure returns (bytes memory) { - return Validate.secretMessage(_a, _b, _c, _d, _e, _f); - } -} diff --git a/contracts/test/tokens/ImpreciseToken.sol b/contracts/test/tokens/ImpreciseToken.sol deleted file mode 100644 index b6d24d7f..00000000 --- a/contracts/test/tokens/ImpreciseToken.sol +++ /dev/null @@ -1,23 +0,0 @@ -pragma solidity 0.5.17; - -import "@openzeppelin/contracts-ethereum-package/contracts/token/ERC20/ERC20.sol"; -import "@openzeppelin/contracts-ethereum-package/contracts/token/ERC20/ERC20Detailed.sol"; - -/// @notice A test ERC20 token with 12 decimals. -contract ImpreciseToken is ERC20, ERC20Detailed { - string private constant _name = "Imprecise Token"; // solium-disable-line uppercase - string private constant _symbol = "IPT"; // solium-disable-line uppercase - uint8 private constant _decimals = 9; // solium-disable-line uppercase - - uint256 public constant INITIAL_SUPPLY = - 1000000000 * (10**uint256(_decimals)); - - /** - * @dev Constructor that gives msg.sender all of existing tokens. - */ - /// @notice The RenToken Constructor. - constructor() public { - ERC20Detailed.initialize(_name, _symbol, _decimals); - _mint(msg.sender, INITIAL_SUPPLY); - } -} diff --git a/contracts/test/tokens/NonCompliantToken.sol b/contracts/test/tokens/NonCompliantToken.sol deleted file mode 100644 index b1aae52d..00000000 --- a/contracts/test/tokens/NonCompliantToken.sol +++ /dev/null @@ -1,104 +0,0 @@ -pragma solidity 0.5.17; - -import "@openzeppelin/contracts-ethereum-package/contracts/math/SafeMath.sol"; - -contract NCT_ERC20Basic { - uint256 public totalSupply; - - function balanceOf(address who) public view returns (uint256); - - function transfer(address to, uint256 value) public; - - event Transfer(address indexed from, address indexed to, uint256 value); -} - -contract NCT_BasicToken is NCT_ERC20Basic { - using SafeMath for uint256; - - mapping(address => uint256) balances; - - modifier onlyPayloadSize(uint256 size) { - if (msg.data.length < size + 4) { - revert(); - } - _; - } - - function transfer(address _to, uint256 _value) - public - onlyPayloadSize(2 * 32) - { - balances[msg.sender] = balances[msg.sender].sub(_value); - balances[_to] = balances[_to].add(_value); - emit Transfer(msg.sender, _to, _value); - } - - function balanceOf(address _owner) public view returns (uint256 balance) { - return balances[_owner]; - } -} - -contract NCT_ERC20 is NCT_ERC20Basic { - function allowance(address owner, address spender) - public - view - returns (uint256); - - function transferFrom( - address from, - address to, - uint256 value - ) public; - - function approve(address spender, uint256 value) public; - - event Approval( - address indexed owner, - address indexed spender, - uint256 value - ); -} - -contract NCT_StandardToken is NCT_BasicToken, NCT_ERC20 { - mapping(address => mapping(address => uint256)) allowed; - - function transferFrom( - address _from, - address _to, - uint256 _value - ) public onlyPayloadSize(3 * 32) { - uint256 _allowance = allowed[_from][msg.sender]; - - balances[_to] = balances[_to].add(_value); - balances[_from] = balances[_from].sub(_value); - allowed[_from][msg.sender] = _allowance.sub(_value); - emit Transfer(_from, _to, _value); - } - - function approve(address _spender, uint256 _value) public { - if ((_value != 0) && (allowed[msg.sender][_spender] != 0)) revert(); - - allowed[msg.sender][_spender] = _value; - emit Approval(msg.sender, _spender, _value); - } - - function allowance(address _owner, address _spender) - public - view - returns (uint256 remaining) - { - return allowed[_owner][_spender]; - } -} - -contract NonCompliantToken is NCT_StandardToken { - string public constant name = "Non Compliant Token"; - string public constant symbol = "NCT"; - uint8 public constant decimals = 18; - uint256 public constant INITIAL_SUPPLY = 1000000000 * 10**uint256(decimals); - - constructor() public { - totalSupply = INITIAL_SUPPLY; - balances[msg.sender] = INITIAL_SUPPLY; - } -} diff --git a/contracts/test/tokens/NormalToken.sol b/contracts/test/tokens/NormalToken.sol deleted file mode 100644 index b8a5bc3c..00000000 --- a/contracts/test/tokens/NormalToken.sol +++ /dev/null @@ -1,28 +0,0 @@ -pragma solidity 0.5.17; - -import "@openzeppelin/contracts-ethereum-package/contracts/token/ERC20/ERC20.sol"; -import "@openzeppelin/contracts-ethereum-package/contracts/token/ERC20/ERC20Detailed.sol"; - -contract NormalToken is ERC20, ERC20Detailed { - string private constant _name = "Normal Token"; - string private constant _symbol = "NML"; - uint8 private constant _decimals = 18; - - uint256 public constant INITIAL_SUPPLY = - 1000000000 * 10**uint256(_decimals); - - constructor() public { - ERC20Detailed.initialize(_name, _symbol, _decimals); - _mint(msg.sender, INITIAL_SUPPLY); - } - - function approve(address _spender, uint256 _value) - public - returns (bool success) - { - if ((_value != 0) && (allowance(msg.sender, _spender) != 0)) - revert("approve with previous allowance"); - - return super.approve(_spender, _value); - } -} diff --git a/contracts/test/tokens/PaymentToken.sol b/contracts/test/tokens/PaymentToken.sol deleted file mode 100644 index 6a0c67e6..00000000 --- a/contracts/test/tokens/PaymentToken.sol +++ /dev/null @@ -1,18 +0,0 @@ -pragma solidity 0.5.17; - -import "@openzeppelin/contracts-ethereum-package/contracts/token/ERC20/ERC20Detailed.sol"; -import "@openzeppelin/contracts-ethereum-package/contracts/token/ERC20/ERC20Pausable.sol"; -import "@openzeppelin/contracts-ethereum-package/contracts/token/ERC20/ERC20Burnable.sol"; - -contract PaymentToken is ERC20Pausable, ERC20Burnable, ERC20Detailed { - uint8 private constant _decimals = 18; - - uint256 public constant INITIAL_SUPPLY = - 1000000000 * 10**uint256(_decimals); - - constructor(string memory symbol) public { - ERC20Pausable.initialize(msg.sender); - ERC20Detailed.initialize(symbol, symbol, _decimals); - _mint(msg.sender, INITIAL_SUPPLY); - } -} diff --git a/contracts/test/tokens/ReturnsFalseToken.sol b/contracts/test/tokens/ReturnsFalseToken.sol deleted file mode 100644 index 8b686801..00000000 --- a/contracts/test/tokens/ReturnsFalseToken.sol +++ /dev/null @@ -1,114 +0,0 @@ -pragma solidity 0.5.17; - -contract RFT_Token { - uint256 public totalSupply; - - function balanceOf(address _owner) public view returns (uint256 balance); - - function transfer(address _to, uint256 _value) - public - returns (bool success); - - function transferFrom( - address _from, - address _to, - uint256 _value - ) public returns (bool success); - - function approve(address _spender, uint256 _value) - public - returns (bool success); - - function allowance(address _owner, address _spender) - public - view - returns (uint256 remaining); - - event Transfer(address indexed _from, address indexed _to, uint256 _value); - event Approval( - address indexed _owner, - address indexed _spender, - uint256 _value - ); -} - -contract RFT_StandardToken is RFT_Token { - function transfer(address _to, uint256 _value) - public - returns (bool success) - { - if (balances[msg.sender] >= _value && _value > 0) { - balances[msg.sender] -= _value; - balances[_to] += _value; - emit Transfer(msg.sender, _to, _value); - return true; - } else { - return false; - } - } - - function transferFrom( - address _from, - address _to, - uint256 _value - ) public returns (bool success) { - if ( - balances[_from] >= _value && - allowed[_from][msg.sender] >= _value && - _value > 0 - ) { - balances[_to] += _value; - balances[_from] -= _value; - allowed[_from][msg.sender] -= _value; - emit Transfer(_from, _to, _value); - return true; - } else { - return false; - } - } - - function balanceOf(address _owner) public view returns (uint256 balance) { - return balances[_owner]; - } - - function approve(address _spender, uint256 _value) - public - returns (bool success) - { - allowed[msg.sender][_spender] = _value; - emit Approval(msg.sender, _spender, _value); - return true; - } - - function allowance(address _owner, address _spender) - public - view - returns (uint256 remaining) - { - return allowed[_owner][_spender]; - } - - mapping(address => uint256) balances; - mapping(address => mapping(address => uint256)) allowed; -} - -contract ReturnsFalseToken is RFT_StandardToken { - string public constant name = "Returns False Token"; - string public constant symbol = "RFT"; - uint8 public constant decimals = 18; - uint256 public constant INITIAL_SUPPLY = 1000000000 * 10**uint256(decimals); - - constructor() public { - totalSupply = INITIAL_SUPPLY; - balances[msg.sender] = INITIAL_SUPPLY; - } - - function approve(address _spender, uint256 _value) - public - returns (bool success) - { - if ((_value != 0) && (allowed[msg.sender][_spender] != 0)) return false; - - return super.approve(_spender, _value); - } -} diff --git a/contracts/test/tokens/SelfDestructingToken.sol b/contracts/test/tokens/SelfDestructingToken.sol deleted file mode 100644 index ccf97f8d..00000000 --- a/contracts/test/tokens/SelfDestructingToken.sol +++ /dev/null @@ -1,26 +0,0 @@ -pragma solidity 0.5.17; - -import "@openzeppelin/contracts-ethereum-package/contracts/ownership/Ownable.sol"; -import "@openzeppelin/contracts-ethereum-package/contracts/token/ERC20/ERC20.sol"; -import "@openzeppelin/contracts-ethereum-package/contracts/token/ERC20/ERC20Detailed.sol"; - -/// @notice A test ERC20 token that can destroy itself. -contract SelfDestructingToken is ERC20, ERC20Detailed, Ownable { - string private constant _name = "Self Destructing Token"; - string private constant _symbol = "SDT"; - uint8 private constant _decimals = 18; - - uint256 public constant INITIAL_SUPPLY = - 1000000000 * 10**uint256(_decimals); - - /// @notice The SelfDestructingToken Constructor. - constructor() public { - ERC20Detailed.initialize(_name, _symbol, _decimals); - Ownable.initialize(msg.sender); - _mint(msg.sender, INITIAL_SUPPLY); - } - - function destruct() public onlyOwner { - selfdestruct(msg.sender); - } -} diff --git a/contracts/test/tokens/TokenWithFees.sol b/contracts/test/tokens/TokenWithFees.sol deleted file mode 100644 index 69670c06..00000000 --- a/contracts/test/tokens/TokenWithFees.sol +++ /dev/null @@ -1,45 +0,0 @@ -pragma solidity 0.5.17; - -import "@openzeppelin/contracts-ethereum-package/contracts/token/ERC20/ERC20.sol"; -import "@openzeppelin/contracts-ethereum-package/contracts/token/ERC20/ERC20Detailed.sol"; - -contract TokenWithFees is ERC20, ERC20Detailed { - string private constant _name = "Token With Fees"; - string private constant _symbol = "TWF"; - uint8 private constant _decimals = 18; - - uint256 public constant INITIAL_SUPPLY = - 1000000000 * 10**uint256(_decimals); - - constructor() public { - ERC20Detailed.initialize(_name, _symbol, _decimals); - _mint(msg.sender, INITIAL_SUPPLY); - } - - function approve(address _spender, uint256 _value) - public - returns (bool success) - { - if ((_value != 0) && (allowance(msg.sender, _spender) != 0)) - revert("approve with previous allowance"); - - return super.approve(_spender, _value); - } - - function transfer(address to, uint256 value) public returns (bool) { - uint256 fee = (value * 3) / 1000; - _burn(msg.sender, fee); - return super.transfer(to, value - fee); - } - - function transferFrom( - address from, - address to, - uint256 value - ) public returns (bool) { - uint256 fee = (value * 3) / 1000; - bool ret = super.transferFrom(from, to, value); - _burn(to, fee); - return ret; - } -} diff --git a/deploy/001_deploy.ts b/deploy/001_deploy.ts new file mode 100644 index 00000000..1e7b20a8 --- /dev/null +++ b/deploy/001_deploy.ts @@ -0,0 +1,94 @@ +import {HardhatRuntimeEnvironment} from 'hardhat/types'; +import {DeployFunction} from 'hardhat-deploy/types'; +import {keccak256} from 'ethers/lib/utils'; +import {BaseContract} from 'ethers'; +import {GetOperatorDarknodes} from '../typechain/GetOperatorDarknodes'; +import {Protocol} from '../typechain/Protocol'; +import {ClaimRewardsProxy} from '../typechain/ClaimRewardsProxy'; +import {ClaimRewardsV1} from '../typechain/ClaimRewardsV1'; +import {RenProxyAdmin} from '../typechain'; + +const CREATE2_SALT = keccak256(Buffer.from('REN-0001')); + +const setupCreate2 = + (hre: HardhatRuntimeEnvironment) => + async (name: string, args: any[]): Promise => { + const {deployments, getNamedAccounts, ethers} = hre; + const {deploy} = deployments; + + const {deployer} = await getNamedAccounts(); + console.log(`Deploying ${name} from ${deployer}`); + + const result = await deploy(name, { + from: deployer, + args: args, + log: true, + deterministicDeployment: CREATE2_SALT, + }); + console.log(`Deployed ${name} from ${deployer}!`); + const contract = await ethers.getContractAt( + name, + result.address, + deployer + ); + console.log(`Got contract!`); + return contract; + }; + +const func: DeployFunction = async function (hre: HardhatRuntimeEnvironment) { + const {getNamedAccounts, ethers} = hre; + + const create2 = await setupCreate2(hre); + + const {deployer} = await getNamedAccounts(); + + console.log('deployer', deployer); + + // Testnet + const darknodeRegistry = { + address: '0x9954C9F839b31E82bc9CA98F234313112D269712', + }; + let renProxyAdmin = {address: '0x4C695C4Aa6238f0A7092733180328c2E64C912C7'}; + + if (!renProxyAdmin.address) { + renProxyAdmin = await create2('RenProxyAdmin', []); + } + + const getOperatorDarknodes = await create2( + 'GetOperatorDarknodes', + [darknodeRegistry.address] + ); + + const claimRewardsV1 = await create2('ClaimRewardsV1', []); + + const claimRewardsProxy = await create2( + 'ClaimRewardsProxy', + [claimRewardsV1.address, renProxyAdmin.address, '0x'] + ); + + const claimRewards = await ethers.getContractAt( + 'ClaimRewardsV1', + claimRewardsProxy.address, + deployer + ); + + // Deploy Protocol //////////////////////////////////////////////// + const protocol = await create2('Protocol', []); + await protocol.__Protocol_init(deployer); + await protocol.addContract('DarknodeRegistry', darknodeRegistry.address); + await protocol.addContract('ClaimRewards', claimRewards.address); + await protocol.addContract( + 'GetOperatorDarknodes', + getOperatorDarknodes.address + ); +}; + +export default func; + +func.tags = [ + 'RenProxyAdmin', + 'GetOperatorDarknodes', + 'ClaimRewardsV1', + 'ClaimRewardsProxy', + 'Protocol', +]; diff --git a/deployments/kovan/.chainId b/deployments/kovan/.chainId new file mode 100644 index 00000000..f70d7bba --- /dev/null +++ b/deployments/kovan/.chainId @@ -0,0 +1 @@ +42 \ No newline at end of file diff --git a/deployments/kovan/ClaimRewardsProxy.json b/deployments/kovan/ClaimRewardsProxy.json new file mode 100644 index 00000000..54ce69a5 --- /dev/null +++ b/deployments/kovan/ClaimRewardsProxy.json @@ -0,0 +1,230 @@ +{ + "address": "0x1B9aa8c993Aa9a2996113F9e5d73c2fE1783f7F4", + "abi": [ + { + "inputs": [ + { + "internalType": "address", + "name": "_logic", + "type": "address" + }, + { + "internalType": "address", + "name": "admin_", + "type": "address" + }, + { + "internalType": "bytes", + "name": "_data", + "type": "bytes" + } + ], + "stateMutability": "nonpayable", + "type": "constructor" + }, + { + "anonymous": false, + "inputs": [ + { + "indexed": false, + "internalType": "address", + "name": "previousAdmin", + "type": "address" + }, + { + "indexed": false, + "internalType": "address", + "name": "newAdmin", + "type": "address" + } + ], + "name": "AdminChanged", + "type": "event" + }, + { + "anonymous": false, + "inputs": [ + { + "indexed": true, + "internalType": "address", + "name": "beacon", + "type": "address" + } + ], + "name": "BeaconUpgraded", + "type": "event" + }, + { + "anonymous": false, + "inputs": [ + { + "indexed": true, + "internalType": "address", + "name": "implementation", + "type": "address" + } + ], + "name": "Upgraded", + "type": "event" + }, + { + "stateMutability": "payable", + "type": "fallback" + }, + { + "inputs": [], + "name": "admin", + "outputs": [ + { + "internalType": "address", + "name": "admin_", + "type": "address" + } + ], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "address", + "name": "newAdmin", + "type": "address" + } + ], + "name": "changeAdmin", + "outputs": [], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [], + "name": "implementation", + "outputs": [ + { + "internalType": "address", + "name": "implementation_", + "type": "address" + } + ], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "address", + "name": "newImplementation", + "type": "address" + } + ], + "name": "upgradeTo", + "outputs": [], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "address", + "name": "newImplementation", + "type": "address" + }, + { + "internalType": "bytes", + "name": "data", + "type": "bytes" + } + ], + "name": "upgradeToAndCall", + "outputs": [], + "stateMutability": "payable", + "type": "function" + }, + { + "stateMutability": "payable", + "type": "receive" + } + ], + "transactionHash": "0xc8f6a076648afeea989a41b3c34277d55c5219a09cf7bdd1bfffdf96d68e17f8", + "receipt": { + "to": "0x4e59b44847b379578588920cA78FbF26c0B4956C", + "from": "0xD5B5b26521665Cb37623DCA0E49c553b41dbF076", + "contractAddress": null, + "transactionIndex": 2, + "gasUsed": "931947", + "logsBloom": "0x00000000000002000000000000000000400000100000000000000000000000000000400000000000000000000000000000000000000000000000000000000000000000000000000000000000000002000000000000000000000000000000000000000000000000000000000000010000000000800000000000000000000000000000000000000000000000000000000000000000000000000000000000800000000000000000000000000000000000000000000000000000000000000000000800000020000000000000000000000000000000000400000000000000000000000000000000000000000000000002000000000000000000000000000000000000", + "blockHash": "0xee2a3b6906fb01683cd5c18f10cfa16b3cd2ea84252b22652bfe9dfaf79f1dff", + "transactionHash": "0xc8f6a076648afeea989a41b3c34277d55c5219a09cf7bdd1bfffdf96d68e17f8", + "logs": [ + { + "transactionIndex": 2, + "blockNumber": 26840785, + "transactionHash": "0xc8f6a076648afeea989a41b3c34277d55c5219a09cf7bdd1bfffdf96d68e17f8", + "address": "0x1B9aa8c993Aa9a2996113F9e5d73c2fE1783f7F4", + "topics": [ + "0xbc7cd75a20ee27fd9adebab32041f755214dbc6bffa90cc0225b39da2e5c2d3b", + "0x000000000000000000000000388b58f74fd2010e70418ae92ae090df9ecaad8b" + ], + "data": "0x", + "logIndex": 2, + "blockHash": "0xee2a3b6906fb01683cd5c18f10cfa16b3cd2ea84252b22652bfe9dfaf79f1dff" + }, + { + "transactionIndex": 2, + "blockNumber": 26840785, + "transactionHash": "0xc8f6a076648afeea989a41b3c34277d55c5219a09cf7bdd1bfffdf96d68e17f8", + "address": "0x1B9aa8c993Aa9a2996113F9e5d73c2fE1783f7F4", + "topics": [ + "0x7e644d79422f17c01e4894b5f4f588d331ebfa28653d42ae832dc59e38c9798f" + ], + "data": "0x00000000000000000000000000000000000000000000000000000000000000000000000000000000000000004c695c4aa6238f0a7092733180328c2e64c912c7", + "logIndex": 3, + "blockHash": "0xee2a3b6906fb01683cd5c18f10cfa16b3cd2ea84252b22652bfe9dfaf79f1dff" + } + ], + "blockNumber": 26840785, + "cumulativeGasUsed": "1159595", + "status": 1, + "byzantium": true + }, + "args": [ + "0x388B58f74Fd2010e70418AE92aE090df9Ecaad8B", + "0x4C695C4Aa6238f0A7092733180328c2E64C912C7", + "0x" + ], + "solcInputHash": "1d1b33ebee20e0af945d784a55de102c", + "metadata": "{\"compiler\":{\"version\":\"0.8.6+commit.11564f7e\"},\"language\":\"Solidity\",\"output\":{\"abi\":[{\"inputs\":[{\"internalType\":\"address\",\"name\":\"_logic\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"admin_\",\"type\":\"address\"},{\"internalType\":\"bytes\",\"name\":\"_data\",\"type\":\"bytes\"}],\"stateMutability\":\"nonpayable\",\"type\":\"constructor\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"address\",\"name\":\"previousAdmin\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"address\",\"name\":\"newAdmin\",\"type\":\"address\"}],\"name\":\"AdminChanged\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"beacon\",\"type\":\"address\"}],\"name\":\"BeaconUpgraded\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"implementation\",\"type\":\"address\"}],\"name\":\"Upgraded\",\"type\":\"event\"},{\"stateMutability\":\"payable\",\"type\":\"fallback\"},{\"inputs\":[],\"name\":\"admin\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"admin_\",\"type\":\"address\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"newAdmin\",\"type\":\"address\"}],\"name\":\"changeAdmin\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"implementation\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"implementation_\",\"type\":\"address\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"newImplementation\",\"type\":\"address\"}],\"name\":\"upgradeTo\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"newImplementation\",\"type\":\"address\"},{\"internalType\":\"bytes\",\"name\":\"data\",\"type\":\"bytes\"}],\"name\":\"upgradeToAndCall\",\"outputs\":[],\"stateMutability\":\"payable\",\"type\":\"function\"},{\"stateMutability\":\"payable\",\"type\":\"receive\"}],\"devdoc\":{\"kind\":\"dev\",\"methods\":{\"admin()\":{\"details\":\"Returns the current admin. NOTE: Only the admin can call this function. See {ProxyAdmin-getProxyAdmin}. TIP: To get this value clients can read directly from the storage slot shown below (specified by EIP1967) using the https://eth.wiki/json-rpc/API#eth_getstorageat[`eth_getStorageAt`] RPC call. `0xb53127684a568b3173ae13b9f8a6016e243e63b6e8ee1178d6a717850b5d6103`\"},\"changeAdmin(address)\":{\"details\":\"Changes the admin of the proxy. Emits an {AdminChanged} event. NOTE: Only the admin can call this function. See {ProxyAdmin-changeProxyAdmin}.\"},\"implementation()\":{\"details\":\"Returns the current implementation. NOTE: Only the admin can call this function. See {ProxyAdmin-getProxyImplementation}. TIP: To get this value clients can read directly from the storage slot shown below (specified by EIP1967) using the https://eth.wiki/json-rpc/API#eth_getstorageat[`eth_getStorageAt`] RPC call. `0x360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc`\"},\"upgradeTo(address)\":{\"details\":\"Upgrade the implementation of the proxy. NOTE: Only the admin can call this function. See {ProxyAdmin-upgrade}.\"},\"upgradeToAndCall(address,bytes)\":{\"details\":\"Upgrade the implementation of the proxy, and then call a function from the new implementation as specified by `data`, which should be an encoded function call. This is useful to initialize new storage variables in the proxied contract. NOTE: Only the admin can call this function. See {ProxyAdmin-upgradeAndCall}.\"}},\"version\":1},\"userdoc\":{\"kind\":\"user\",\"methods\":{},\"version\":1}},\"settings\":{\"compilationTarget\":{\"src/ClaimRewards.sol\":\"ClaimRewardsProxy\"},\"evmVersion\":\"berlin\",\"libraries\":{},\"metadata\":{\"bytecodeHash\":\"ipfs\",\"useLiteralContent\":true},\"optimizer\":{\"enabled\":false,\"runs\":200},\"remappings\":[]},\"sources\":{\"@openzeppelin/contracts/proxy/ERC1967/ERC1967Proxy.sol\":{\"content\":\"// SPDX-License-Identifier: MIT\\n\\npragma solidity ^0.8.0;\\n\\nimport \\\"../Proxy.sol\\\";\\nimport \\\"./ERC1967Upgrade.sol\\\";\\n\\n/**\\n * @dev This contract implements an upgradeable proxy. It is upgradeable because calls are delegated to an\\n * implementation address that can be changed. This address is stored in storage in the location specified by\\n * https://eips.ethereum.org/EIPS/eip-1967[EIP1967], so that it doesn't conflict with the storage layout of the\\n * implementation behind the proxy.\\n */\\ncontract ERC1967Proxy is Proxy, ERC1967Upgrade {\\n /**\\n * @dev Initializes the upgradeable proxy with an initial implementation specified by `_logic`.\\n *\\n * If `_data` is nonempty, it's used as data in a delegate call to `_logic`. This will typically be an encoded\\n * function call, and allows initializating the storage of the proxy like a Solidity constructor.\\n */\\n constructor(address _logic, bytes memory _data) payable {\\n assert(_IMPLEMENTATION_SLOT == bytes32(uint256(keccak256(\\\"eip1967.proxy.implementation\\\")) - 1));\\n _upgradeToAndCall(_logic, _data, false);\\n }\\n\\n /**\\n * @dev Returns the current implementation address.\\n */\\n function _implementation() internal view virtual override returns (address impl) {\\n return ERC1967Upgrade._getImplementation();\\n }\\n}\\n\",\"keccak256\":\"0xca2eb23a188f213d914fad982985d07e491dbc9960a387d4469bfce5c48911b1\",\"license\":\"MIT\"},\"@openzeppelin/contracts/proxy/ERC1967/ERC1967Upgrade.sol\":{\"content\":\"// SPDX-License-Identifier: MIT\\n\\npragma solidity ^0.8.2;\\n\\nimport \\\"../beacon/IBeacon.sol\\\";\\nimport \\\"../../utils/Address.sol\\\";\\nimport \\\"../../utils/StorageSlot.sol\\\";\\n\\n/**\\n * @dev This abstract contract provides getters and event emitting update functions for\\n * https://eips.ethereum.org/EIPS/eip-1967[EIP1967] slots.\\n *\\n * _Available since v4.1._\\n *\\n * @custom:oz-upgrades-unsafe-allow delegatecall\\n */\\nabstract contract ERC1967Upgrade {\\n // This is the keccak-256 hash of \\\"eip1967.proxy.rollback\\\" subtracted by 1\\n bytes32 private constant _ROLLBACK_SLOT = 0x4910fdfa16fed3260ed0e7147f7cc6da11a60208b5b9406d12a635614ffd9143;\\n\\n /**\\n * @dev Storage slot with the address of the current implementation.\\n * This is the keccak-256 hash of \\\"eip1967.proxy.implementation\\\" subtracted by 1, and is\\n * validated in the constructor.\\n */\\n bytes32 internal constant _IMPLEMENTATION_SLOT = 0x360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc;\\n\\n /**\\n * @dev Emitted when the implementation is upgraded.\\n */\\n event Upgraded(address indexed implementation);\\n\\n /**\\n * @dev Returns the current implementation address.\\n */\\n function _getImplementation() internal view returns (address) {\\n return StorageSlot.getAddressSlot(_IMPLEMENTATION_SLOT).value;\\n }\\n\\n /**\\n * @dev Stores a new address in the EIP1967 implementation slot.\\n */\\n function _setImplementation(address newImplementation) private {\\n require(Address.isContract(newImplementation), \\\"ERC1967: new implementation is not a contract\\\");\\n StorageSlot.getAddressSlot(_IMPLEMENTATION_SLOT).value = newImplementation;\\n }\\n\\n /**\\n * @dev Perform implementation upgrade\\n *\\n * Emits an {Upgraded} event.\\n */\\n function _upgradeTo(address newImplementation) internal {\\n _setImplementation(newImplementation);\\n emit Upgraded(newImplementation);\\n }\\n\\n /**\\n * @dev Perform implementation upgrade with additional setup call.\\n *\\n * Emits an {Upgraded} event.\\n */\\n function _upgradeToAndCall(\\n address newImplementation,\\n bytes memory data,\\n bool forceCall\\n ) internal {\\n _upgradeTo(newImplementation);\\n if (data.length > 0 || forceCall) {\\n Address.functionDelegateCall(newImplementation, data);\\n }\\n }\\n\\n /**\\n * @dev Perform implementation upgrade with security checks for UUPS proxies, and additional setup call.\\n *\\n * Emits an {Upgraded} event.\\n */\\n function _upgradeToAndCallSecure(\\n address newImplementation,\\n bytes memory data,\\n bool forceCall\\n ) internal {\\n address oldImplementation = _getImplementation();\\n\\n // Initial upgrade and setup call\\n _setImplementation(newImplementation);\\n if (data.length > 0 || forceCall) {\\n Address.functionDelegateCall(newImplementation, data);\\n }\\n\\n // Perform rollback test if not already in progress\\n StorageSlot.BooleanSlot storage rollbackTesting = StorageSlot.getBooleanSlot(_ROLLBACK_SLOT);\\n if (!rollbackTesting.value) {\\n // Trigger rollback using upgradeTo from the new implementation\\n rollbackTesting.value = true;\\n Address.functionDelegateCall(\\n newImplementation,\\n abi.encodeWithSignature(\\\"upgradeTo(address)\\\", oldImplementation)\\n );\\n rollbackTesting.value = false;\\n // Check rollback was effective\\n require(oldImplementation == _getImplementation(), \\\"ERC1967Upgrade: upgrade breaks further upgrades\\\");\\n // Finally reset to the new implementation and log the upgrade\\n _upgradeTo(newImplementation);\\n }\\n }\\n\\n /**\\n * @dev Storage slot with the admin of the contract.\\n * This is the keccak-256 hash of \\\"eip1967.proxy.admin\\\" subtracted by 1, and is\\n * validated in the constructor.\\n */\\n bytes32 internal constant _ADMIN_SLOT = 0xb53127684a568b3173ae13b9f8a6016e243e63b6e8ee1178d6a717850b5d6103;\\n\\n /**\\n * @dev Emitted when the admin account has changed.\\n */\\n event AdminChanged(address previousAdmin, address newAdmin);\\n\\n /**\\n * @dev Returns the current admin.\\n */\\n function _getAdmin() internal view returns (address) {\\n return StorageSlot.getAddressSlot(_ADMIN_SLOT).value;\\n }\\n\\n /**\\n * @dev Stores a new address in the EIP1967 admin slot.\\n */\\n function _setAdmin(address newAdmin) private {\\n require(newAdmin != address(0), \\\"ERC1967: new admin is the zero address\\\");\\n StorageSlot.getAddressSlot(_ADMIN_SLOT).value = newAdmin;\\n }\\n\\n /**\\n * @dev Changes the admin of the proxy.\\n *\\n * Emits an {AdminChanged} event.\\n */\\n function _changeAdmin(address newAdmin) internal {\\n emit AdminChanged(_getAdmin(), newAdmin);\\n _setAdmin(newAdmin);\\n }\\n\\n /**\\n * @dev The storage slot of the UpgradeableBeacon contract which defines the implementation for this proxy.\\n * This is bytes32(uint256(keccak256('eip1967.proxy.beacon')) - 1)) and is validated in the constructor.\\n */\\n bytes32 internal constant _BEACON_SLOT = 0xa3f0ad74e5423aebfd80d3ef4346578335a9a72aeaee59ff6cb3582b35133d50;\\n\\n /**\\n * @dev Emitted when the beacon is upgraded.\\n */\\n event BeaconUpgraded(address indexed beacon);\\n\\n /**\\n * @dev Returns the current beacon.\\n */\\n function _getBeacon() internal view returns (address) {\\n return StorageSlot.getAddressSlot(_BEACON_SLOT).value;\\n }\\n\\n /**\\n * @dev Stores a new beacon in the EIP1967 beacon slot.\\n */\\n function _setBeacon(address newBeacon) private {\\n require(Address.isContract(newBeacon), \\\"ERC1967: new beacon is not a contract\\\");\\n require(\\n Address.isContract(IBeacon(newBeacon).implementation()),\\n \\\"ERC1967: beacon implementation is not a contract\\\"\\n );\\n StorageSlot.getAddressSlot(_BEACON_SLOT).value = newBeacon;\\n }\\n\\n /**\\n * @dev Perform beacon upgrade with additional setup call. Note: This upgrades the address of the beacon, it does\\n * not upgrade the implementation contained in the beacon (see {UpgradeableBeacon-_setImplementation} for that).\\n *\\n * Emits a {BeaconUpgraded} event.\\n */\\n function _upgradeBeaconToAndCall(\\n address newBeacon,\\n bytes memory data,\\n bool forceCall\\n ) internal {\\n _setBeacon(newBeacon);\\n emit BeaconUpgraded(newBeacon);\\n if (data.length > 0 || forceCall) {\\n Address.functionDelegateCall(IBeacon(newBeacon).implementation(), data);\\n }\\n }\\n}\\n\",\"keccak256\":\"0xcbccf806d646bd9e2594650917208245d45998b887d5fc914de424247f5f9f9d\",\"license\":\"MIT\"},\"@openzeppelin/contracts/proxy/Proxy.sol\":{\"content\":\"// SPDX-License-Identifier: MIT\\n\\npragma solidity ^0.8.0;\\n\\n/**\\n * @dev This abstract contract provides a fallback function that delegates all calls to another contract using the EVM\\n * instruction `delegatecall`. We refer to the second contract as the _implementation_ behind the proxy, and it has to\\n * be specified by overriding the virtual {_implementation} function.\\n *\\n * Additionally, delegation to the implementation can be triggered manually through the {_fallback} function, or to a\\n * different contract through the {_delegate} function.\\n *\\n * The success and return data of the delegated call will be returned back to the caller of the proxy.\\n */\\nabstract contract Proxy {\\n /**\\n * @dev Delegates the current call to `implementation`.\\n *\\n * This function does not return to its internall call site, it will return directly to the external caller.\\n */\\n function _delegate(address implementation) internal virtual {\\n assembly {\\n // Copy msg.data. We take full control of memory in this inline assembly\\n // block because it will not return to Solidity code. We overwrite the\\n // Solidity scratch pad at memory position 0.\\n calldatacopy(0, 0, calldatasize())\\n\\n // Call the implementation.\\n // out and outsize are 0 because we don't know the size yet.\\n let result := delegatecall(gas(), implementation, 0, calldatasize(), 0, 0)\\n\\n // Copy the returned data.\\n returndatacopy(0, 0, returndatasize())\\n\\n switch result\\n // delegatecall returns 0 on error.\\n case 0 {\\n revert(0, returndatasize())\\n }\\n default {\\n return(0, returndatasize())\\n }\\n }\\n }\\n\\n /**\\n * @dev This is a virtual function that should be overriden so it returns the address to which the fallback function\\n * and {_fallback} should delegate.\\n */\\n function _implementation() internal view virtual returns (address);\\n\\n /**\\n * @dev Delegates the current call to the address returned by `_implementation()`.\\n *\\n * This function does not return to its internall call site, it will return directly to the external caller.\\n */\\n function _fallback() internal virtual {\\n _beforeFallback();\\n _delegate(_implementation());\\n }\\n\\n /**\\n * @dev Fallback function that delegates calls to the address returned by `_implementation()`. Will run if no other\\n * function in the contract matches the call data.\\n */\\n fallback() external payable virtual {\\n _fallback();\\n }\\n\\n /**\\n * @dev Fallback function that delegates calls to the address returned by `_implementation()`. Will run if call data\\n * is empty.\\n */\\n receive() external payable virtual {\\n _fallback();\\n }\\n\\n /**\\n * @dev Hook that is called before falling back to the implementation. Can happen as part of a manual `_fallback`\\n * call, or as part of the Solidity `fallback` or `receive` functions.\\n *\\n * If overriden should call `super._beforeFallback()`.\\n */\\n function _beforeFallback() internal virtual {}\\n}\\n\",\"keccak256\":\"0x8ddea9f930f26e588ea606f44c90d2623560c908e38614a03a4ca78aea8f9202\",\"license\":\"MIT\"},\"@openzeppelin/contracts/proxy/beacon/IBeacon.sol\":{\"content\":\"// SPDX-License-Identifier: MIT\\n\\npragma solidity ^0.8.0;\\n\\n/**\\n * @dev This is the interface that {BeaconProxy} expects of its beacon.\\n */\\ninterface IBeacon {\\n /**\\n * @dev Must return an address that can be used as a delegate call target.\\n *\\n * {BeaconProxy} will check that this address is a contract.\\n */\\n function implementation() external view returns (address);\\n}\\n\",\"keccak256\":\"0x5615339d191e77be7e46319b67856f9355786f705b7b3c4a7237ab70c1864ab1\",\"license\":\"MIT\"},\"@openzeppelin/contracts/proxy/transparent/TransparentUpgradeableProxy.sol\":{\"content\":\"// SPDX-License-Identifier: MIT\\n\\npragma solidity ^0.8.0;\\n\\nimport \\\"../ERC1967/ERC1967Proxy.sol\\\";\\n\\n/**\\n * @dev This contract implements a proxy that is upgradeable by an admin.\\n *\\n * To avoid https://medium.com/nomic-labs-blog/malicious-backdoors-in-ethereum-proxies-62629adf3357[proxy selector\\n * clashing], which can potentially be used in an attack, this contract uses the\\n * https://blog.openzeppelin.com/the-transparent-proxy-pattern/[transparent proxy pattern]. This pattern implies two\\n * things that go hand in hand:\\n *\\n * 1. If any account other than the admin calls the proxy, the call will be forwarded to the implementation, even if\\n * that call matches one of the admin functions exposed by the proxy itself.\\n * 2. If the admin calls the proxy, it can access the admin functions, but its calls will never be forwarded to the\\n * implementation. If the admin tries to call a function on the implementation it will fail with an error that says\\n * \\\"admin cannot fallback to proxy target\\\".\\n *\\n * These properties mean that the admin account can only be used for admin actions like upgrading the proxy or changing\\n * the admin, so it's best if it's a dedicated account that is not used for anything else. This will avoid headaches due\\n * to sudden errors when trying to call a function from the proxy implementation.\\n *\\n * Our recommendation is for the dedicated account to be an instance of the {ProxyAdmin} contract. If set up this way,\\n * you should think of the `ProxyAdmin` instance as the real administrative interface of your proxy.\\n */\\ncontract TransparentUpgradeableProxy is ERC1967Proxy {\\n /**\\n * @dev Initializes an upgradeable proxy managed by `_admin`, backed by the implementation at `_logic`, and\\n * optionally initialized with `_data` as explained in {ERC1967Proxy-constructor}.\\n */\\n constructor(\\n address _logic,\\n address admin_,\\n bytes memory _data\\n ) payable ERC1967Proxy(_logic, _data) {\\n assert(_ADMIN_SLOT == bytes32(uint256(keccak256(\\\"eip1967.proxy.admin\\\")) - 1));\\n _changeAdmin(admin_);\\n }\\n\\n /**\\n * @dev Modifier used internally that will delegate the call to the implementation unless the sender is the admin.\\n */\\n modifier ifAdmin() {\\n if (msg.sender == _getAdmin()) {\\n _;\\n } else {\\n _fallback();\\n }\\n }\\n\\n /**\\n * @dev Returns the current admin.\\n *\\n * NOTE: Only the admin can call this function. See {ProxyAdmin-getProxyAdmin}.\\n *\\n * TIP: To get this value clients can read directly from the storage slot shown below (specified by EIP1967) using the\\n * https://eth.wiki/json-rpc/API#eth_getstorageat[`eth_getStorageAt`] RPC call.\\n * `0xb53127684a568b3173ae13b9f8a6016e243e63b6e8ee1178d6a717850b5d6103`\\n */\\n function admin() external ifAdmin returns (address admin_) {\\n admin_ = _getAdmin();\\n }\\n\\n /**\\n * @dev Returns the current implementation.\\n *\\n * NOTE: Only the admin can call this function. See {ProxyAdmin-getProxyImplementation}.\\n *\\n * TIP: To get this value clients can read directly from the storage slot shown below (specified by EIP1967) using the\\n * https://eth.wiki/json-rpc/API#eth_getstorageat[`eth_getStorageAt`] RPC call.\\n * `0x360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc`\\n */\\n function implementation() external ifAdmin returns (address implementation_) {\\n implementation_ = _implementation();\\n }\\n\\n /**\\n * @dev Changes the admin of the proxy.\\n *\\n * Emits an {AdminChanged} event.\\n *\\n * NOTE: Only the admin can call this function. See {ProxyAdmin-changeProxyAdmin}.\\n */\\n function changeAdmin(address newAdmin) external virtual ifAdmin {\\n _changeAdmin(newAdmin);\\n }\\n\\n /**\\n * @dev Upgrade the implementation of the proxy.\\n *\\n * NOTE: Only the admin can call this function. See {ProxyAdmin-upgrade}.\\n */\\n function upgradeTo(address newImplementation) external ifAdmin {\\n _upgradeToAndCall(newImplementation, bytes(\\\"\\\"), false);\\n }\\n\\n /**\\n * @dev Upgrade the implementation of the proxy, and then call a function from the new implementation as specified\\n * by `data`, which should be an encoded function call. This is useful to initialize new storage variables in the\\n * proxied contract.\\n *\\n * NOTE: Only the admin can call this function. See {ProxyAdmin-upgradeAndCall}.\\n */\\n function upgradeToAndCall(address newImplementation, bytes calldata data) external payable ifAdmin {\\n _upgradeToAndCall(newImplementation, data, true);\\n }\\n\\n /**\\n * @dev Returns the current admin.\\n */\\n function _admin() internal view virtual returns (address) {\\n return _getAdmin();\\n }\\n\\n /**\\n * @dev Makes sure the admin cannot access the fallback function. See {Proxy-_beforeFallback}.\\n */\\n function _beforeFallback() internal virtual override {\\n require(msg.sender != _getAdmin(), \\\"TransparentUpgradeableProxy: admin cannot fallback to proxy target\\\");\\n super._beforeFallback();\\n }\\n}\\n\",\"keccak256\":\"0x2bf89a0dae89f861c5e8013478e650e918d98d376e75393867ccec88b0bf2b90\",\"license\":\"MIT\"},\"@openzeppelin/contracts/utils/Address.sol\":{\"content\":\"// SPDX-License-Identifier: MIT\\n\\npragma solidity ^0.8.0;\\n\\n/**\\n * @dev Collection of functions related to the address type\\n */\\nlibrary Address {\\n /**\\n * @dev Returns true if `account` is a contract.\\n *\\n * [IMPORTANT]\\n * ====\\n * It is unsafe to assume that an address for which this function returns\\n * false is an externally-owned account (EOA) and not a contract.\\n *\\n * Among others, `isContract` will return false for the following\\n * types of addresses:\\n *\\n * - an externally-owned account\\n * - a contract in construction\\n * - an address where a contract will be created\\n * - an address where a contract lived, but was destroyed\\n * ====\\n */\\n function isContract(address account) internal view returns (bool) {\\n // This method relies on extcodesize, which returns 0 for contracts in\\n // construction, since the code is only stored at the end of the\\n // constructor execution.\\n\\n uint256 size;\\n assembly {\\n size := extcodesize(account)\\n }\\n return size > 0;\\n }\\n\\n /**\\n * @dev Replacement for Solidity's `transfer`: sends `amount` wei to\\n * `recipient`, forwarding all available gas and reverting on errors.\\n *\\n * https://eips.ethereum.org/EIPS/eip-1884[EIP1884] increases the gas cost\\n * of certain opcodes, possibly making contracts go over the 2300 gas limit\\n * imposed by `transfer`, making them unable to receive funds via\\n * `transfer`. {sendValue} removes this limitation.\\n *\\n * https://diligence.consensys.net/posts/2019/09/stop-using-soliditys-transfer-now/[Learn more].\\n *\\n * IMPORTANT: because control is transferred to `recipient`, care must be\\n * taken to not create reentrancy vulnerabilities. Consider using\\n * {ReentrancyGuard} or the\\n * https://solidity.readthedocs.io/en/v0.5.11/security-considerations.html#use-the-checks-effects-interactions-pattern[checks-effects-interactions pattern].\\n */\\n function sendValue(address payable recipient, uint256 amount) internal {\\n require(address(this).balance >= amount, \\\"Address: insufficient balance\\\");\\n\\n (bool success, ) = recipient.call{value: amount}(\\\"\\\");\\n require(success, \\\"Address: unable to send value, recipient may have reverted\\\");\\n }\\n\\n /**\\n * @dev Performs a Solidity function call using a low level `call`. A\\n * plain `call` is an unsafe replacement for a function call: use this\\n * function instead.\\n *\\n * If `target` reverts with a revert reason, it is bubbled up by this\\n * function (like regular Solidity function calls).\\n *\\n * Returns the raw returned data. To convert to the expected return value,\\n * use https://solidity.readthedocs.io/en/latest/units-and-global-variables.html?highlight=abi.decode#abi-encoding-and-decoding-functions[`abi.decode`].\\n *\\n * Requirements:\\n *\\n * - `target` must be a contract.\\n * - calling `target` with `data` must not revert.\\n *\\n * _Available since v3.1._\\n */\\n function functionCall(address target, bytes memory data) internal returns (bytes memory) {\\n return functionCall(target, data, \\\"Address: low-level call failed\\\");\\n }\\n\\n /**\\n * @dev Same as {xref-Address-functionCall-address-bytes-}[`functionCall`], but with\\n * `errorMessage` as a fallback revert reason when `target` reverts.\\n *\\n * _Available since v3.1._\\n */\\n function functionCall(\\n address target,\\n bytes memory data,\\n string memory errorMessage\\n ) internal returns (bytes memory) {\\n return functionCallWithValue(target, data, 0, errorMessage);\\n }\\n\\n /**\\n * @dev Same as {xref-Address-functionCall-address-bytes-}[`functionCall`],\\n * but also transferring `value` wei to `target`.\\n *\\n * Requirements:\\n *\\n * - the calling contract must have an ETH balance of at least `value`.\\n * - the called Solidity function must be `payable`.\\n *\\n * _Available since v3.1._\\n */\\n function functionCallWithValue(\\n address target,\\n bytes memory data,\\n uint256 value\\n ) internal returns (bytes memory) {\\n return functionCallWithValue(target, data, value, \\\"Address: low-level call with value failed\\\");\\n }\\n\\n /**\\n * @dev Same as {xref-Address-functionCallWithValue-address-bytes-uint256-}[`functionCallWithValue`], but\\n * with `errorMessage` as a fallback revert reason when `target` reverts.\\n *\\n * _Available since v3.1._\\n */\\n function functionCallWithValue(\\n address target,\\n bytes memory data,\\n uint256 value,\\n string memory errorMessage\\n ) internal returns (bytes memory) {\\n require(address(this).balance >= value, \\\"Address: insufficient balance for call\\\");\\n require(isContract(target), \\\"Address: call to non-contract\\\");\\n\\n (bool success, bytes memory returndata) = target.call{value: value}(data);\\n return _verifyCallResult(success, returndata, errorMessage);\\n }\\n\\n /**\\n * @dev Same as {xref-Address-functionCall-address-bytes-}[`functionCall`],\\n * but performing a static call.\\n *\\n * _Available since v3.3._\\n */\\n function functionStaticCall(address target, bytes memory data) internal view returns (bytes memory) {\\n return functionStaticCall(target, data, \\\"Address: low-level static call failed\\\");\\n }\\n\\n /**\\n * @dev Same as {xref-Address-functionCall-address-bytes-string-}[`functionCall`],\\n * but performing a static call.\\n *\\n * _Available since v3.3._\\n */\\n function functionStaticCall(\\n address target,\\n bytes memory data,\\n string memory errorMessage\\n ) internal view returns (bytes memory) {\\n require(isContract(target), \\\"Address: static call to non-contract\\\");\\n\\n (bool success, bytes memory returndata) = target.staticcall(data);\\n return _verifyCallResult(success, returndata, errorMessage);\\n }\\n\\n /**\\n * @dev Same as {xref-Address-functionCall-address-bytes-}[`functionCall`],\\n * but performing a delegate call.\\n *\\n * _Available since v3.4._\\n */\\n function functionDelegateCall(address target, bytes memory data) internal returns (bytes memory) {\\n return functionDelegateCall(target, data, \\\"Address: low-level delegate call failed\\\");\\n }\\n\\n /**\\n * @dev Same as {xref-Address-functionCall-address-bytes-string-}[`functionCall`],\\n * but performing a delegate call.\\n *\\n * _Available since v3.4._\\n */\\n function functionDelegateCall(\\n address target,\\n bytes memory data,\\n string memory errorMessage\\n ) internal returns (bytes memory) {\\n require(isContract(target), \\\"Address: delegate call to non-contract\\\");\\n\\n (bool success, bytes memory returndata) = target.delegatecall(data);\\n return _verifyCallResult(success, returndata, errorMessage);\\n }\\n\\n function _verifyCallResult(\\n bool success,\\n bytes memory returndata,\\n string memory errorMessage\\n ) private pure returns (bytes memory) {\\n if (success) {\\n return returndata;\\n } else {\\n // Look for revert reason and bubble it up if present\\n if (returndata.length > 0) {\\n // The easiest way to bubble the revert reason is using memory via assembly\\n\\n assembly {\\n let returndata_size := mload(returndata)\\n revert(add(32, returndata), returndata_size)\\n }\\n } else {\\n revert(errorMessage);\\n }\\n }\\n }\\n}\\n\",\"keccak256\":\"0x3b4820cac4f127869f6eb496c1d74fa6ac86ed24071e0f94742e6aef20e7252c\",\"license\":\"MIT\"},\"@openzeppelin/contracts/utils/StorageSlot.sol\":{\"content\":\"// SPDX-License-Identifier: MIT\\n\\npragma solidity ^0.8.0;\\n\\n/**\\n * @dev Library for reading and writing primitive types to specific storage slots.\\n *\\n * Storage slots are often used to avoid storage conflict when dealing with upgradeable contracts.\\n * This library helps with reading and writing to such slots without the need for inline assembly.\\n *\\n * The functions in this library return Slot structs that contain a `value` member that can be used to read or write.\\n *\\n * Example usage to set ERC1967 implementation slot:\\n * ```\\n * contract ERC1967 {\\n * bytes32 internal constant _IMPLEMENTATION_SLOT = 0x360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc;\\n *\\n * function _getImplementation() internal view returns (address) {\\n * return StorageSlot.getAddressSlot(_IMPLEMENTATION_SLOT).value;\\n * }\\n *\\n * function _setImplementation(address newImplementation) internal {\\n * require(Address.isContract(newImplementation), \\\"ERC1967: new implementation is not a contract\\\");\\n * StorageSlot.getAddressSlot(_IMPLEMENTATION_SLOT).value = newImplementation;\\n * }\\n * }\\n * ```\\n *\\n * _Available since v4.1 for `address`, `bool`, `bytes32`, and `uint256`._\\n */\\nlibrary StorageSlot {\\n struct AddressSlot {\\n address value;\\n }\\n\\n struct BooleanSlot {\\n bool value;\\n }\\n\\n struct Bytes32Slot {\\n bytes32 value;\\n }\\n\\n struct Uint256Slot {\\n uint256 value;\\n }\\n\\n /**\\n * @dev Returns an `AddressSlot` with member `value` located at `slot`.\\n */\\n function getAddressSlot(bytes32 slot) internal pure returns (AddressSlot storage r) {\\n assembly {\\n r.slot := slot\\n }\\n }\\n\\n /**\\n * @dev Returns an `BooleanSlot` with member `value` located at `slot`.\\n */\\n function getBooleanSlot(bytes32 slot) internal pure returns (BooleanSlot storage r) {\\n assembly {\\n r.slot := slot\\n }\\n }\\n\\n /**\\n * @dev Returns an `Bytes32Slot` with member `value` located at `slot`.\\n */\\n function getBytes32Slot(bytes32 slot) internal pure returns (Bytes32Slot storage r) {\\n assembly {\\n r.slot := slot\\n }\\n }\\n\\n /**\\n * @dev Returns an `Uint256Slot` with member `value` located at `slot`.\\n */\\n function getUint256Slot(bytes32 slot) internal pure returns (Uint256Slot storage r) {\\n assembly {\\n r.slot := slot\\n }\\n }\\n}\\n\",\"keccak256\":\"0x5d15d280d1f868f59a8264dc73f7ea8c51f10d78aac864b2f2ad29412d187ff5\",\"license\":\"MIT\"},\"src/ClaimRewards.sol\":{\"content\":\"//SPDX-License-Identifier: MIT\\n\\npragma solidity ^0.8.6;\\n\\nimport {TransparentUpgradeableProxy} from \\\"@openzeppelin/contracts/proxy/transparent/TransparentUpgradeableProxy.sol\\\";\\n\\nimport {ValidString} from \\\"./ValidString.sol\\\";\\n\\ncontract ClaimRewardsV1 {\\n uint256 public constant BPS_DENOMINATOR = 10000;\\n\\n event LogClaimRewards(\\n address indexed operatorAddress_,\\n string assetSymbol_,\\n string recipientAddress_,\\n string recipientChain_,\\n bytes recipientPayload_,\\n uint256 fractionInBps_,\\n // Repeated values for indexing.\\n string indexed assetSymbolIndexed_,\\n string indexed recipientAddressIndexed_\\n );\\n\\n modifier validFractionInBps(uint256 fraction_) {\\n require(fraction_ <= BPS_DENOMINATOR, \\\"ClaimRewards: invalid fractionInBps\\\");\\n _;\\n }\\n\\n /**\\n * claimRewardsToChain allows darknode operators to withdraw darknode\\n * earnings, as an on-chain alternative to the JSON-RPC claim method.\\n *\\n * It will the operators total sum of rewards, for all of their nodes.\\n *\\n * @param assetSymbol_ The token symbol.\\n * E.g. \\\"BTC\\\", \\\"DOGE\\\" or \\\"FIL\\\".\\n * @param recipientAddress_ An address on the asset's native chain, for\\n * receiving the withdrawn rewards. This should be a string as\\n * provided by the user - no encoding or decoding required.\\n * E.g.: \\\"miMi2VET41YV1j6SDNTeZoPBbmH8B4nEx6\\\" for BTC.\\n * @param recipientChain_ A string indicating which chain the rewards should\\n * be withdrawn to. It should be the name of the chain as expected by\\n * RenVM (e.g. \\\"Ethereum\\\" or \\\"Solana\\\"). Support for different chains\\n * will be rolled out after this contract is deployed, starting with\\n * \\\"Ethereum\\\", then other host chains (e.g. \\\"Polygon\\\" or \\\"Solana\\\")\\n * and then lock chains (e.g. \\\"Bitcoin\\\" for \\\"BTC\\\"), also represented\\n * by an empty string \\\"\\\".\\n * @param recipientPayload_ An associated payload that can be provided along\\n * with the recipient chain and address. Should be empty if not\\n * required.\\n * @param fractionInBps_ A value between 0 and 10000 (inclusive) that\\n * indicates the percent to withdraw from each of the operator's\\n * darknodes. The value should be in BPS, meaning 10000 represents\\n * 100%, 5000 represents 50%, etc.\\n */\\n function claimRewardsToChain(\\n string memory assetSymbol_,\\n string memory recipientAddress_,\\n string memory recipientChain_,\\n bytes memory recipientPayload_,\\n uint256 fractionInBps_\\n ) public validFractionInBps(fractionInBps_) {\\n // Validate asset symbol.\\n require(ValidString.isNotEmpty(assetSymbol_), \\\"ClaimRewards: invalid empty asset\\\");\\n require(ValidString.isAlphanumeric(assetSymbol_), \\\"ClaimRewards: invalid asset\\\");\\n\\n // Validate recipient address.\\n require(ValidString.isNotEmpty(recipientAddress_), \\\"ClaimRewards: invalid empty recipient address\\\");\\n require(ValidString.isAlphanumeric(recipientAddress_), \\\"ClaimRewards: invalid recipient address\\\");\\n\\n // Validate recipient chain.\\n // Note that the chain can be empty - which is planned to represent the\\n // asset's native lock chain.\\n require(ValidString.isAlphanumeric(recipientChain_), \\\"ClaimRewards: invalid recipient chain\\\");\\n\\n address operatorAddress = msg.sender;\\n\\n // Emit event.\\n emit LogClaimRewards(\\n operatorAddress,\\n assetSymbol_,\\n recipientAddress_,\\n recipientChain_,\\n recipientPayload_,\\n fractionInBps_,\\n // Indexed\\n assetSymbol_,\\n recipientAddress_\\n );\\n }\\n\\n /**\\n * `claimRewardsToEthereum` calls `claimRewardsToChain` internally\\n */\\n function claimRewardsToEthereum(\\n string memory assetSymbol_,\\n address recipientAddress_,\\n uint256 fractionInBps_\\n ) public {\\n return claimRewardsToChain(assetSymbol_, addressToString(recipientAddress_), \\\"Ethereum\\\", \\\"\\\", fractionInBps_);\\n }\\n\\n // From https://ethereum.stackexchange.com/questions/8346/convert-address-to-string\\n function addressToString(address address_) public pure returns (string memory) {\\n bytes memory data = abi.encodePacked(address_);\\n\\n bytes memory alphabet = \\\"0123456789abcdef\\\";\\n\\n bytes memory str = new bytes(2 + data.length * 2);\\n str[0] = \\\"0\\\";\\n str[1] = \\\"x\\\";\\n for (uint256 i = 0; i < data.length; i++) {\\n str[2 + i * 2] = alphabet[uint256(uint8(data[i] >> 4))];\\n str[3 + i * 2] = alphabet[uint256(uint8(data[i] & 0x0f))];\\n }\\n return string(str);\\n }\\n}\\n\\ncontract ClaimRewardsProxy is TransparentUpgradeableProxy {\\n constructor(\\n address _logic,\\n address admin_,\\n bytes memory _data\\n ) TransparentUpgradeableProxy(_logic, admin_, _data) {}\\n}\\n\",\"keccak256\":\"0x4fcb46acbb984a9667e367eed2b385b122fdb5aa7e14afd146fda926015d19f5\",\"license\":\"MIT\"},\"src/ValidString.sol\":{\"content\":\"// SPDX-License-Identifier: MIT\\n\\npragma solidity ^0.8.6;\\n\\nlibrary ValidString {\\n function isAlphanumeric(string memory _string) internal pure returns (bool) {\\n for (uint256 i = 0; i < bytes(_string).length; i++) {\\n uint8 char = uint8(bytes(_string)[i]);\\n if (!((char >= 65 && char <= 90) || (char >= 97 && char <= 122) || (char >= 48 && char <= 57))) {\\n return false;\\n }\\n }\\n return true;\\n }\\n\\n function isNotEmpty(string memory _string) internal pure returns (bool) {\\n return bytes(_string).length > 0;\\n }\\n\\n function isValidString(string memory _string) internal pure returns (bool) {\\n return isAlphanumeric(_string) && isNotEmpty(_string);\\n }\\n}\\n\",\"keccak256\":\"0xdd884f31a974bc8ac0fef4f6b5046f62db8ff21143307fdc572f8ddf9c8f9c2f\",\"license\":\"MIT\"}},\"version\":1}", + "bytecode": "0x60806040523480156200001157600080fd5b5060405162001a7138038062001a7183398181016040528101906200003791906200069e565b828282828160017f360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbd60001c6200006e919062000978565b60001b7f360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc60001b14620000a657620000a562000a5d565b5b620000ba828260006200014360201b60201c565b505060017fb53127684a568b3173ae13b9f8a6016e243e63b6e8ee1178d6a717850b5d610460001c620000ee919062000978565b60001b7fb53127684a568b3173ae13b9f8a6016e243e63b6e8ee1178d6a717850b5d610360001b1462000126576200012562000a5d565b5b62000137826200018660201b60201c565b50505050505062000c16565b6200015483620001e460201b60201c565b600082511180620001625750805b1562000181576200017f83836200023b60201b6200034f1760201c565b505b505050565b7f7e644d79422f17c01e4894b5f4f588d331ebfa28653d42ae832dc59e38c9798f620001b76200027160201b60201c565b82604051620001c892919062000830565b60405180910390a1620001e181620002d560201b60201c565b50565b620001f581620003c660201b60201c565b8073ffffffffffffffffffffffffffffffffffffffff167fbc7cd75a20ee27fd9adebab32041f755214dbc6bffa90cc0225b39da2e5c2d3b60405160405180910390a250565b606062000269838360405180606001604052806027815260200162001a4a602791396200049c60201b60201c565b905092915050565b6000620002ac7fb53127684a568b3173ae13b9f8a6016e243e63b6e8ee1178d6a717850b5d610360001b6200058060201b6200037c1760201c565b60000160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905090565b600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff16141562000348576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016200033f9062000881565b60405180910390fd5b80620003827fb53127684a568b3173ae13b9f8a6016e243e63b6e8ee1178d6a717850b5d610360001b6200058060201b6200037c1760201c565b60000160006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555050565b620003dc816200058a60201b620003861760201c565b6200041e576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016200041590620008a3565b60405180910390fd5b80620004587f360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc60001b6200058060201b6200037c1760201c565b60000160006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555050565b6060620004af846200058a60201b60201c565b620004f1576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401620004e890620008c5565b60405180910390fd5b6000808573ffffffffffffffffffffffffffffffffffffffff16856040516200051b919062000817565b600060405180830381855af49150503d806000811462000558576040519150601f19603f3d011682016040523d82523d6000602084013e6200055d565b606091505b5091509150620005758282866200059d60201b60201c565b925050509392505050565b6000819050919050565b600080823b905060008111915050919050565b60608315620005af5782905062000602565b600083511115620005c35782518084602001fd5b816040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401620005f991906200085d565b60405180910390fd5b9392505050565b6000620006206200061a8462000910565b620008e7565b9050828152602081018484840111156200063f576200063e62000aef565b5b6200064c848285620009f1565b509392505050565b600081519050620006658162000bfc565b92915050565b600082601f83011262000683576200068262000aea565b5b81516200069584826020860162000609565b91505092915050565b600080600060608486031215620006ba57620006b962000af9565b5b6000620006ca8682870162000654565b9350506020620006dd8682870162000654565b925050604084015167ffffffffffffffff81111562000701576200070062000af4565b5b6200070f868287016200066b565b9150509250925092565b6200072481620009b3565b82525050565b6000620007378262000946565b6200074381856200095c565b935062000755818560208601620009f1565b80840191505092915050565b60006200076e8262000951565b6200077a818562000967565b93506200078c818560208601620009f1565b620007978162000afe565b840191505092915050565b6000620007b160268362000967565b9150620007be8262000b0f565b604082019050919050565b6000620007d8602d8362000967565b9150620007e58262000b5e565b604082019050919050565b6000620007ff60268362000967565b91506200080c8262000bad565b604082019050919050565b60006200082582846200072a565b915081905092915050565b600060408201905062000847600083018562000719565b62000856602083018462000719565b9392505050565b6000602082019050818103600083015262000879818462000761565b905092915050565b600060208201905081810360008301526200089c81620007a2565b9050919050565b60006020820190508181036000830152620008be81620007c9565b9050919050565b60006020820190508181036000830152620008e081620007f0565b9050919050565b6000620008f362000906565b905062000901828262000a27565b919050565b6000604051905090565b600067ffffffffffffffff8211156200092e576200092d62000abb565b5b620009398262000afe565b9050602081019050919050565b600081519050919050565b600081519050919050565b600081905092915050565b600082825260208201905092915050565b60006200098582620009e7565b91506200099283620009e7565b925082821015620009a857620009a762000a8c565b5b828203905092915050565b6000620009c082620009c7565b9050919050565b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b6000819050919050565b60005b8381101562000a11578082015181840152602081019050620009f4565b8381111562000a21576000848401525b50505050565b62000a328262000afe565b810181811067ffffffffffffffff8211171562000a545762000a5362000abb565b5b80604052505050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052600160045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b600080fd5b600080fd5b600080fd5b600080fd5b6000601f19601f8301169050919050565b7f455243313936373a206e65772061646d696e20697320746865207a65726f206160008201527f6464726573730000000000000000000000000000000000000000000000000000602082015250565b7f455243313936373a206e657720696d706c656d656e746174696f6e206973206e60008201527f6f74206120636f6e747261637400000000000000000000000000000000000000602082015250565b7f416464726573733a2064656c65676174652063616c6c20746f206e6f6e2d636f60008201527f6e74726163740000000000000000000000000000000000000000000000000000602082015250565b62000c0781620009b3565b811462000c1357600080fd5b50565b610e248062000c266000396000f3fe60806040526004361061004e5760003560e01c80633659cfe6146100675780634f1ef286146100905780635c60da1b146100ac5780638f283970146100d7578063f851a440146101005761005d565b3661005d5761005b61012b565b005b61006561012b565b005b34801561007357600080fd5b5061008e600480360381019061008991906108fe565b610145565b005b6100aa60048036038101906100a5919061092b565b6101ac565b005b3480156100b857600080fd5b506100c161024a565b6040516100ce9190610aa7565b60405180910390f35b3480156100e357600080fd5b506100fe60048036038101906100f991906108fe565b6102a2565b005b34801561010c57600080fd5b506101156102f7565b6040516101229190610aa7565b60405180910390f35b610133610399565b61014361013e610419565b610428565b565b61014d61044e565b73ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff1614156101a05761019b816040518060200160405280600081525060006104a5565b6101a9565b6101a861012b565b5b50565b6101b461044e565b73ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff16141561023c576102378383838080601f016020809104026020016040519081016040528093929190818152602001838380828437600081840152601f19601f8201169050808301925050505050505060016104a5565b610245565b61024461012b565b5b505050565b600061025461044e565b73ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff1614156102965761028f610419565b905061029f565b61029e61012b565b5b90565b6102aa61044e565b73ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff1614156102eb576102e6816104d1565b6102f4565b6102f361012b565b5b50565b600061030161044e565b73ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff1614156103435761033c61044e565b905061034c565b61034b61012b565b5b90565b60606103748383604051806060016040528060278152602001610dc86027913961051d565b905092915050565b6000819050919050565b600080823b905060008111915050919050565b6103a161044e565b73ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff16141561040f576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161040690610b6d565b60405180910390fd5b6104176105ea565b565b60006104236105ec565b905090565b3660008037600080366000845af43d6000803e8060008114610449573d6000f35b3d6000fd5b600061047c7fb53127684a568b3173ae13b9f8a6016e243e63b6e8ee1178d6a717850b5d610360001b61037c565b60000160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905090565b6104ae83610643565b6000825111806104bb5750805b156104cc576104ca838361034f565b505b505050565b7f7e644d79422f17c01e4894b5f4f588d331ebfa28653d42ae832dc59e38c9798f6104fa61044e565b82604051610509929190610ac2565b60405180910390a161051a81610692565b50565b606061052884610386565b610567576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161055e90610b4d565b60405180910390fd5b6000808573ffffffffffffffffffffffffffffffffffffffff168560405161058f9190610a90565b600060405180830381855af49150503d80600081146105ca576040519150601f19603f3d011682016040523d82523d6000602084013e6105cf565b606091505b50915091506105df828286610773565b925050509392505050565b565b600061061a7f360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc60001b61037c565b60000160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905090565b61064c816107da565b8073ffffffffffffffffffffffffffffffffffffffff167fbc7cd75a20ee27fd9adebab32041f755214dbc6bffa90cc0225b39da2e5c2d3b60405160405180910390a250565b600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff161415610702576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016106f990610b0d565b60405180910390fd5b8061072f7fb53127684a568b3173ae13b9f8a6016e243e63b6e8ee1178d6a717850b5d610360001b61037c565b60000160006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555050565b60608315610783578290506107d3565b6000835111156107965782518084602001fd5b816040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016107ca9190610aeb565b60405180910390fd5b9392505050565b6107e381610386565b610822576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161081990610b2d565b60405180910390fd5b8061084f7f360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc60001b61037c565b60000160006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555050565b6000813590506108a281610db0565b92915050565b60008083601f8401126108be576108bd610c29565b5b8235905067ffffffffffffffff8111156108db576108da610c24565b5b6020830191508360018202830111156108f7576108f6610c2e565b5b9250929050565b60006020828403121561091457610913610c38565b5b600061092284828501610893565b91505092915050565b60008060006040848603121561094457610943610c38565b5b600061095286828701610893565b935050602084013567ffffffffffffffff81111561097357610972610c33565b5b61097f868287016108a8565b92509250509250925092565b61099481610bbf565b82525050565b60006109a582610b8d565b6109af8185610ba3565b93506109bf818560208601610bf1565b80840191505092915050565b60006109d682610b98565b6109e08185610bae565b93506109f0818560208601610bf1565b6109f981610c3d565b840191505092915050565b6000610a11602683610bae565b9150610a1c82610c4e565b604082019050919050565b6000610a34602d83610bae565b9150610a3f82610c9d565b604082019050919050565b6000610a57602683610bae565b9150610a6282610cec565b604082019050919050565b6000610a7a604283610bae565b9150610a8582610d3b565b606082019050919050565b6000610a9c828461099a565b915081905092915050565b6000602082019050610abc600083018461098b565b92915050565b6000604082019050610ad7600083018561098b565b610ae4602083018461098b565b9392505050565b60006020820190508181036000830152610b0581846109cb565b905092915050565b60006020820190508181036000830152610b2681610a04565b9050919050565b60006020820190508181036000830152610b4681610a27565b9050919050565b60006020820190508181036000830152610b6681610a4a565b9050919050565b60006020820190508181036000830152610b8681610a6d565b9050919050565b600081519050919050565b600081519050919050565b600081905092915050565b600082825260208201905092915050565b6000610bca82610bd1565b9050919050565b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b60005b83811015610c0f578082015181840152602081019050610bf4565b83811115610c1e576000848401525b50505050565b600080fd5b600080fd5b600080fd5b600080fd5b600080fd5b6000601f19601f8301169050919050565b7f455243313936373a206e65772061646d696e20697320746865207a65726f206160008201527f6464726573730000000000000000000000000000000000000000000000000000602082015250565b7f455243313936373a206e657720696d706c656d656e746174696f6e206973206e60008201527f6f74206120636f6e747261637400000000000000000000000000000000000000602082015250565b7f416464726573733a2064656c65676174652063616c6c20746f206e6f6e2d636f60008201527f6e74726163740000000000000000000000000000000000000000000000000000602082015250565b7f5472616e73706172656e745570677261646561626c6550726f78793a2061646d60008201527f696e2063616e6e6f742066616c6c6261636b20746f2070726f7879207461726760208201527f6574000000000000000000000000000000000000000000000000000000000000604082015250565b610db981610bbf565b8114610dc457600080fd5b5056fe416464726573733a206c6f772d6c6576656c2064656c65676174652063616c6c206661696c6564a2646970667358221220a68c8678005d639fc67104da8dc3e3e5a526df39317efbf85af5168dc13710fc64736f6c63430008060033416464726573733a206c6f772d6c6576656c2064656c65676174652063616c6c206661696c6564", + "deployedBytecode": "0x60806040526004361061004e5760003560e01c80633659cfe6146100675780634f1ef286146100905780635c60da1b146100ac5780638f283970146100d7578063f851a440146101005761005d565b3661005d5761005b61012b565b005b61006561012b565b005b34801561007357600080fd5b5061008e600480360381019061008991906108fe565b610145565b005b6100aa60048036038101906100a5919061092b565b6101ac565b005b3480156100b857600080fd5b506100c161024a565b6040516100ce9190610aa7565b60405180910390f35b3480156100e357600080fd5b506100fe60048036038101906100f991906108fe565b6102a2565b005b34801561010c57600080fd5b506101156102f7565b6040516101229190610aa7565b60405180910390f35b610133610399565b61014361013e610419565b610428565b565b61014d61044e565b73ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff1614156101a05761019b816040518060200160405280600081525060006104a5565b6101a9565b6101a861012b565b5b50565b6101b461044e565b73ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff16141561023c576102378383838080601f016020809104026020016040519081016040528093929190818152602001838380828437600081840152601f19601f8201169050808301925050505050505060016104a5565b610245565b61024461012b565b5b505050565b600061025461044e565b73ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff1614156102965761028f610419565b905061029f565b61029e61012b565b5b90565b6102aa61044e565b73ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff1614156102eb576102e6816104d1565b6102f4565b6102f361012b565b5b50565b600061030161044e565b73ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff1614156103435761033c61044e565b905061034c565b61034b61012b565b5b90565b60606103748383604051806060016040528060278152602001610dc86027913961051d565b905092915050565b6000819050919050565b600080823b905060008111915050919050565b6103a161044e565b73ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff16141561040f576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161040690610b6d565b60405180910390fd5b6104176105ea565b565b60006104236105ec565b905090565b3660008037600080366000845af43d6000803e8060008114610449573d6000f35b3d6000fd5b600061047c7fb53127684a568b3173ae13b9f8a6016e243e63b6e8ee1178d6a717850b5d610360001b61037c565b60000160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905090565b6104ae83610643565b6000825111806104bb5750805b156104cc576104ca838361034f565b505b505050565b7f7e644d79422f17c01e4894b5f4f588d331ebfa28653d42ae832dc59e38c9798f6104fa61044e565b82604051610509929190610ac2565b60405180910390a161051a81610692565b50565b606061052884610386565b610567576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161055e90610b4d565b60405180910390fd5b6000808573ffffffffffffffffffffffffffffffffffffffff168560405161058f9190610a90565b600060405180830381855af49150503d80600081146105ca576040519150601f19603f3d011682016040523d82523d6000602084013e6105cf565b606091505b50915091506105df828286610773565b925050509392505050565b565b600061061a7f360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc60001b61037c565b60000160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905090565b61064c816107da565b8073ffffffffffffffffffffffffffffffffffffffff167fbc7cd75a20ee27fd9adebab32041f755214dbc6bffa90cc0225b39da2e5c2d3b60405160405180910390a250565b600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff161415610702576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016106f990610b0d565b60405180910390fd5b8061072f7fb53127684a568b3173ae13b9f8a6016e243e63b6e8ee1178d6a717850b5d610360001b61037c565b60000160006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555050565b60608315610783578290506107d3565b6000835111156107965782518084602001fd5b816040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016107ca9190610aeb565b60405180910390fd5b9392505050565b6107e381610386565b610822576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161081990610b2d565b60405180910390fd5b8061084f7f360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc60001b61037c565b60000160006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555050565b6000813590506108a281610db0565b92915050565b60008083601f8401126108be576108bd610c29565b5b8235905067ffffffffffffffff8111156108db576108da610c24565b5b6020830191508360018202830111156108f7576108f6610c2e565b5b9250929050565b60006020828403121561091457610913610c38565b5b600061092284828501610893565b91505092915050565b60008060006040848603121561094457610943610c38565b5b600061095286828701610893565b935050602084013567ffffffffffffffff81111561097357610972610c33565b5b61097f868287016108a8565b92509250509250925092565b61099481610bbf565b82525050565b60006109a582610b8d565b6109af8185610ba3565b93506109bf818560208601610bf1565b80840191505092915050565b60006109d682610b98565b6109e08185610bae565b93506109f0818560208601610bf1565b6109f981610c3d565b840191505092915050565b6000610a11602683610bae565b9150610a1c82610c4e565b604082019050919050565b6000610a34602d83610bae565b9150610a3f82610c9d565b604082019050919050565b6000610a57602683610bae565b9150610a6282610cec565b604082019050919050565b6000610a7a604283610bae565b9150610a8582610d3b565b606082019050919050565b6000610a9c828461099a565b915081905092915050565b6000602082019050610abc600083018461098b565b92915050565b6000604082019050610ad7600083018561098b565b610ae4602083018461098b565b9392505050565b60006020820190508181036000830152610b0581846109cb565b905092915050565b60006020820190508181036000830152610b2681610a04565b9050919050565b60006020820190508181036000830152610b4681610a27565b9050919050565b60006020820190508181036000830152610b6681610a4a565b9050919050565b60006020820190508181036000830152610b8681610a6d565b9050919050565b600081519050919050565b600081519050919050565b600081905092915050565b600082825260208201905092915050565b6000610bca82610bd1565b9050919050565b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b60005b83811015610c0f578082015181840152602081019050610bf4565b83811115610c1e576000848401525b50505050565b600080fd5b600080fd5b600080fd5b600080fd5b600080fd5b6000601f19601f8301169050919050565b7f455243313936373a206e65772061646d696e20697320746865207a65726f206160008201527f6464726573730000000000000000000000000000000000000000000000000000602082015250565b7f455243313936373a206e657720696d706c656d656e746174696f6e206973206e60008201527f6f74206120636f6e747261637400000000000000000000000000000000000000602082015250565b7f416464726573733a2064656c65676174652063616c6c20746f206e6f6e2d636f60008201527f6e74726163740000000000000000000000000000000000000000000000000000602082015250565b7f5472616e73706172656e745570677261646561626c6550726f78793a2061646d60008201527f696e2063616e6e6f742066616c6c6261636b20746f2070726f7879207461726760208201527f6574000000000000000000000000000000000000000000000000000000000000604082015250565b610db981610bbf565b8114610dc457600080fd5b5056fe416464726573733a206c6f772d6c6576656c2064656c65676174652063616c6c206661696c6564a2646970667358221220a68c8678005d639fc67104da8dc3e3e5a526df39317efbf85af5168dc13710fc64736f6c63430008060033", + "devdoc": { + "kind": "dev", + "methods": { + "admin()": { + "details": "Returns the current admin. NOTE: Only the admin can call this function. See {ProxyAdmin-getProxyAdmin}. TIP: To get this value clients can read directly from the storage slot shown below (specified by EIP1967) using the https://eth.wiki/json-rpc/API#eth_getstorageat[`eth_getStorageAt`] RPC call. `0xb53127684a568b3173ae13b9f8a6016e243e63b6e8ee1178d6a717850b5d6103`" + }, + "changeAdmin(address)": { + "details": "Changes the admin of the proxy. Emits an {AdminChanged} event. NOTE: Only the admin can call this function. See {ProxyAdmin-changeProxyAdmin}." + }, + "implementation()": { + "details": "Returns the current implementation. NOTE: Only the admin can call this function. See {ProxyAdmin-getProxyImplementation}. TIP: To get this value clients can read directly from the storage slot shown below (specified by EIP1967) using the https://eth.wiki/json-rpc/API#eth_getstorageat[`eth_getStorageAt`] RPC call. `0x360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc`" + }, + "upgradeTo(address)": { + "details": "Upgrade the implementation of the proxy. NOTE: Only the admin can call this function. See {ProxyAdmin-upgrade}." + }, + "upgradeToAndCall(address,bytes)": { + "details": "Upgrade the implementation of the proxy, and then call a function from the new implementation as specified by `data`, which should be an encoded function call. This is useful to initialize new storage variables in the proxied contract. NOTE: Only the admin can call this function. See {ProxyAdmin-upgradeAndCall}." + } + }, + "version": 1 + }, + "userdoc": { + "kind": "user", + "methods": {}, + "version": 1 + }, + "storageLayout": { + "storage": [], + "types": null + } +} \ No newline at end of file diff --git a/deployments/kovan/ClaimRewardsV1.json b/deployments/kovan/ClaimRewardsV1.json new file mode 100644 index 00000000..b5ad1511 --- /dev/null +++ b/deployments/kovan/ClaimRewardsV1.json @@ -0,0 +1,200 @@ +{ + "address": "0x388B58f74Fd2010e70418AE92aE090df9Ecaad8B", + "abi": [ + { + "anonymous": false, + "inputs": [ + { + "indexed": true, + "internalType": "address", + "name": "operatorAddress_", + "type": "address" + }, + { + "indexed": false, + "internalType": "string", + "name": "assetSymbol_", + "type": "string" + }, + { + "indexed": false, + "internalType": "string", + "name": "recipientAddress_", + "type": "string" + }, + { + "indexed": false, + "internalType": "string", + "name": "recipientChain_", + "type": "string" + }, + { + "indexed": false, + "internalType": "bytes", + "name": "recipientPayload_", + "type": "bytes" + }, + { + "indexed": false, + "internalType": "uint256", + "name": "fractionInBps_", + "type": "uint256" + }, + { + "indexed": true, + "internalType": "string", + "name": "assetSymbolIndexed_", + "type": "string" + }, + { + "indexed": true, + "internalType": "string", + "name": "recipientAddressIndexed_", + "type": "string" + } + ], + "name": "LogClaimRewards", + "type": "event" + }, + { + "inputs": [], + "name": "BPS_DENOMINATOR", + "outputs": [ + { + "internalType": "uint256", + "name": "", + "type": "uint256" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "address", + "name": "address_", + "type": "address" + } + ], + "name": "addressToString", + "outputs": [ + { + "internalType": "string", + "name": "", + "type": "string" + } + ], + "stateMutability": "pure", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "string", + "name": "assetSymbol_", + "type": "string" + }, + { + "internalType": "string", + "name": "recipientAddress_", + "type": "string" + }, + { + "internalType": "string", + "name": "recipientChain_", + "type": "string" + }, + { + "internalType": "bytes", + "name": "recipientPayload_", + "type": "bytes" + }, + { + "internalType": "uint256", + "name": "fractionInBps_", + "type": "uint256" + } + ], + "name": "claimRewardsToChain", + "outputs": [], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "string", + "name": "assetSymbol_", + "type": "string" + }, + { + "internalType": "address", + "name": "recipientAddress_", + "type": "address" + }, + { + "internalType": "uint256", + "name": "fractionInBps_", + "type": "uint256" + } + ], + "name": "claimRewardsToEthereum", + "outputs": [], + "stateMutability": "nonpayable", + "type": "function" + } + ], + "transactionHash": "0x4835f748c3b258b48ae6b6e79925ec6ba4de5058002e640b2477a6185522ccf5", + "receipt": { + "to": "0x4e59b44847b379578588920cA78FbF26c0B4956C", + "from": "0xD5B5b26521665Cb37623DCA0E49c553b41dbF076", + "contractAddress": null, + "transactionIndex": 1, + "gasUsed": "1077200", + "logsBloom": "0x00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000", + "blockHash": "0x4ad038b6dce0e1212dde92cb72e01355a309a22d86467204ac167278e0d9b377", + "transactionHash": "0x4835f748c3b258b48ae6b6e79925ec6ba4de5058002e640b2477a6185522ccf5", + "logs": [], + "blockNumber": 26840778, + "cumulativeGasUsed": "1152854", + "status": 1, + "byzantium": true + }, + "args": [], + "solcInputHash": "1d1b33ebee20e0af945d784a55de102c", + "metadata": "{\"compiler\":{\"version\":\"0.8.6+commit.11564f7e\"},\"language\":\"Solidity\",\"output\":{\"abi\":[{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"operatorAddress_\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"string\",\"name\":\"assetSymbol_\",\"type\":\"string\"},{\"indexed\":false,\"internalType\":\"string\",\"name\":\"recipientAddress_\",\"type\":\"string\"},{\"indexed\":false,\"internalType\":\"string\",\"name\":\"recipientChain_\",\"type\":\"string\"},{\"indexed\":false,\"internalType\":\"bytes\",\"name\":\"recipientPayload_\",\"type\":\"bytes\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"fractionInBps_\",\"type\":\"uint256\"},{\"indexed\":true,\"internalType\":\"string\",\"name\":\"assetSymbolIndexed_\",\"type\":\"string\"},{\"indexed\":true,\"internalType\":\"string\",\"name\":\"recipientAddressIndexed_\",\"type\":\"string\"}],\"name\":\"LogClaimRewards\",\"type\":\"event\"},{\"inputs\":[],\"name\":\"BPS_DENOMINATOR\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"address_\",\"type\":\"address\"}],\"name\":\"addressToString\",\"outputs\":[{\"internalType\":\"string\",\"name\":\"\",\"type\":\"string\"}],\"stateMutability\":\"pure\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"string\",\"name\":\"assetSymbol_\",\"type\":\"string\"},{\"internalType\":\"string\",\"name\":\"recipientAddress_\",\"type\":\"string\"},{\"internalType\":\"string\",\"name\":\"recipientChain_\",\"type\":\"string\"},{\"internalType\":\"bytes\",\"name\":\"recipientPayload_\",\"type\":\"bytes\"},{\"internalType\":\"uint256\",\"name\":\"fractionInBps_\",\"type\":\"uint256\"}],\"name\":\"claimRewardsToChain\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"string\",\"name\":\"assetSymbol_\",\"type\":\"string\"},{\"internalType\":\"address\",\"name\":\"recipientAddress_\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"fractionInBps_\",\"type\":\"uint256\"}],\"name\":\"claimRewardsToEthereum\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"}],\"devdoc\":{\"kind\":\"dev\",\"methods\":{\"claimRewardsToChain(string,string,string,bytes,uint256)\":{\"params\":{\"assetSymbol_\":\"The token symbol. E.g. \\\"BTC\\\", \\\"DOGE\\\" or \\\"FIL\\\".\",\"fractionInBps_\":\"A value between 0 and 10000 (inclusive) that indicates the percent to withdraw from each of the operator's darknodes. The value should be in BPS, meaning 10000 represents 100%, 5000 represents 50%, etc.\",\"recipientAddress_\":\"An address on the asset's native chain, for receiving the withdrawn rewards. This should be a string as provided by the user - no encoding or decoding required. E.g.: \\\"miMi2VET41YV1j6SDNTeZoPBbmH8B4nEx6\\\" for BTC.\",\"recipientChain_\":\"A string indicating which chain the rewards should be withdrawn to. It should be the name of the chain as expected by RenVM (e.g. \\\"Ethereum\\\" or \\\"Solana\\\"). Support for different chains will be rolled out after this contract is deployed, starting with \\\"Ethereum\\\", then other host chains (e.g. \\\"Polygon\\\" or \\\"Solana\\\") and then lock chains (e.g. \\\"Bitcoin\\\" for \\\"BTC\\\"), also represented by an empty string \\\"\\\".\",\"recipientPayload_\":\"An associated payload that can be provided along with the recipient chain and address. Should be empty if not required.\"}}},\"version\":1},\"userdoc\":{\"kind\":\"user\",\"methods\":{\"claimRewardsToChain(string,string,string,bytes,uint256)\":{\"notice\":\"claimRewardsToChain allows darknode operators to withdraw darknode earnings, as an on-chain alternative to the JSON-RPC claim method. It will the operators total sum of rewards, for all of their nodes.\"},\"claimRewardsToEthereum(string,address,uint256)\":{\"notice\":\"`claimRewardsToEthereum` calls `claimRewardsToChain` internally\"}},\"version\":1}},\"settings\":{\"compilationTarget\":{\"src/ClaimRewards.sol\":\"ClaimRewardsV1\"},\"evmVersion\":\"berlin\",\"libraries\":{},\"metadata\":{\"bytecodeHash\":\"ipfs\",\"useLiteralContent\":true},\"optimizer\":{\"enabled\":false,\"runs\":200},\"remappings\":[]},\"sources\":{\"@openzeppelin/contracts/proxy/ERC1967/ERC1967Proxy.sol\":{\"content\":\"// SPDX-License-Identifier: MIT\\n\\npragma solidity ^0.8.0;\\n\\nimport \\\"../Proxy.sol\\\";\\nimport \\\"./ERC1967Upgrade.sol\\\";\\n\\n/**\\n * @dev This contract implements an upgradeable proxy. It is upgradeable because calls are delegated to an\\n * implementation address that can be changed. This address is stored in storage in the location specified by\\n * https://eips.ethereum.org/EIPS/eip-1967[EIP1967], so that it doesn't conflict with the storage layout of the\\n * implementation behind the proxy.\\n */\\ncontract ERC1967Proxy is Proxy, ERC1967Upgrade {\\n /**\\n * @dev Initializes the upgradeable proxy with an initial implementation specified by `_logic`.\\n *\\n * If `_data` is nonempty, it's used as data in a delegate call to `_logic`. This will typically be an encoded\\n * function call, and allows initializating the storage of the proxy like a Solidity constructor.\\n */\\n constructor(address _logic, bytes memory _data) payable {\\n assert(_IMPLEMENTATION_SLOT == bytes32(uint256(keccak256(\\\"eip1967.proxy.implementation\\\")) - 1));\\n _upgradeToAndCall(_logic, _data, false);\\n }\\n\\n /**\\n * @dev Returns the current implementation address.\\n */\\n function _implementation() internal view virtual override returns (address impl) {\\n return ERC1967Upgrade._getImplementation();\\n }\\n}\\n\",\"keccak256\":\"0xca2eb23a188f213d914fad982985d07e491dbc9960a387d4469bfce5c48911b1\",\"license\":\"MIT\"},\"@openzeppelin/contracts/proxy/ERC1967/ERC1967Upgrade.sol\":{\"content\":\"// SPDX-License-Identifier: MIT\\n\\npragma solidity ^0.8.2;\\n\\nimport \\\"../beacon/IBeacon.sol\\\";\\nimport \\\"../../utils/Address.sol\\\";\\nimport \\\"../../utils/StorageSlot.sol\\\";\\n\\n/**\\n * @dev This abstract contract provides getters and event emitting update functions for\\n * https://eips.ethereum.org/EIPS/eip-1967[EIP1967] slots.\\n *\\n * _Available since v4.1._\\n *\\n * @custom:oz-upgrades-unsafe-allow delegatecall\\n */\\nabstract contract ERC1967Upgrade {\\n // This is the keccak-256 hash of \\\"eip1967.proxy.rollback\\\" subtracted by 1\\n bytes32 private constant _ROLLBACK_SLOT = 0x4910fdfa16fed3260ed0e7147f7cc6da11a60208b5b9406d12a635614ffd9143;\\n\\n /**\\n * @dev Storage slot with the address of the current implementation.\\n * This is the keccak-256 hash of \\\"eip1967.proxy.implementation\\\" subtracted by 1, and is\\n * validated in the constructor.\\n */\\n bytes32 internal constant _IMPLEMENTATION_SLOT = 0x360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc;\\n\\n /**\\n * @dev Emitted when the implementation is upgraded.\\n */\\n event Upgraded(address indexed implementation);\\n\\n /**\\n * @dev Returns the current implementation address.\\n */\\n function _getImplementation() internal view returns (address) {\\n return StorageSlot.getAddressSlot(_IMPLEMENTATION_SLOT).value;\\n }\\n\\n /**\\n * @dev Stores a new address in the EIP1967 implementation slot.\\n */\\n function _setImplementation(address newImplementation) private {\\n require(Address.isContract(newImplementation), \\\"ERC1967: new implementation is not a contract\\\");\\n StorageSlot.getAddressSlot(_IMPLEMENTATION_SLOT).value = newImplementation;\\n }\\n\\n /**\\n * @dev Perform implementation upgrade\\n *\\n * Emits an {Upgraded} event.\\n */\\n function _upgradeTo(address newImplementation) internal {\\n _setImplementation(newImplementation);\\n emit Upgraded(newImplementation);\\n }\\n\\n /**\\n * @dev Perform implementation upgrade with additional setup call.\\n *\\n * Emits an {Upgraded} event.\\n */\\n function _upgradeToAndCall(\\n address newImplementation,\\n bytes memory data,\\n bool forceCall\\n ) internal {\\n _upgradeTo(newImplementation);\\n if (data.length > 0 || forceCall) {\\n Address.functionDelegateCall(newImplementation, data);\\n }\\n }\\n\\n /**\\n * @dev Perform implementation upgrade with security checks for UUPS proxies, and additional setup call.\\n *\\n * Emits an {Upgraded} event.\\n */\\n function _upgradeToAndCallSecure(\\n address newImplementation,\\n bytes memory data,\\n bool forceCall\\n ) internal {\\n address oldImplementation = _getImplementation();\\n\\n // Initial upgrade and setup call\\n _setImplementation(newImplementation);\\n if (data.length > 0 || forceCall) {\\n Address.functionDelegateCall(newImplementation, data);\\n }\\n\\n // Perform rollback test if not already in progress\\n StorageSlot.BooleanSlot storage rollbackTesting = StorageSlot.getBooleanSlot(_ROLLBACK_SLOT);\\n if (!rollbackTesting.value) {\\n // Trigger rollback using upgradeTo from the new implementation\\n rollbackTesting.value = true;\\n Address.functionDelegateCall(\\n newImplementation,\\n abi.encodeWithSignature(\\\"upgradeTo(address)\\\", oldImplementation)\\n );\\n rollbackTesting.value = false;\\n // Check rollback was effective\\n require(oldImplementation == _getImplementation(), \\\"ERC1967Upgrade: upgrade breaks further upgrades\\\");\\n // Finally reset to the new implementation and log the upgrade\\n _upgradeTo(newImplementation);\\n }\\n }\\n\\n /**\\n * @dev Storage slot with the admin of the contract.\\n * This is the keccak-256 hash of \\\"eip1967.proxy.admin\\\" subtracted by 1, and is\\n * validated in the constructor.\\n */\\n bytes32 internal constant _ADMIN_SLOT = 0xb53127684a568b3173ae13b9f8a6016e243e63b6e8ee1178d6a717850b5d6103;\\n\\n /**\\n * @dev Emitted when the admin account has changed.\\n */\\n event AdminChanged(address previousAdmin, address newAdmin);\\n\\n /**\\n * @dev Returns the current admin.\\n */\\n function _getAdmin() internal view returns (address) {\\n return StorageSlot.getAddressSlot(_ADMIN_SLOT).value;\\n }\\n\\n /**\\n * @dev Stores a new address in the EIP1967 admin slot.\\n */\\n function _setAdmin(address newAdmin) private {\\n require(newAdmin != address(0), \\\"ERC1967: new admin is the zero address\\\");\\n StorageSlot.getAddressSlot(_ADMIN_SLOT).value = newAdmin;\\n }\\n\\n /**\\n * @dev Changes the admin of the proxy.\\n *\\n * Emits an {AdminChanged} event.\\n */\\n function _changeAdmin(address newAdmin) internal {\\n emit AdminChanged(_getAdmin(), newAdmin);\\n _setAdmin(newAdmin);\\n }\\n\\n /**\\n * @dev The storage slot of the UpgradeableBeacon contract which defines the implementation for this proxy.\\n * This is bytes32(uint256(keccak256('eip1967.proxy.beacon')) - 1)) and is validated in the constructor.\\n */\\n bytes32 internal constant _BEACON_SLOT = 0xa3f0ad74e5423aebfd80d3ef4346578335a9a72aeaee59ff6cb3582b35133d50;\\n\\n /**\\n * @dev Emitted when the beacon is upgraded.\\n */\\n event BeaconUpgraded(address indexed beacon);\\n\\n /**\\n * @dev Returns the current beacon.\\n */\\n function _getBeacon() internal view returns (address) {\\n return StorageSlot.getAddressSlot(_BEACON_SLOT).value;\\n }\\n\\n /**\\n * @dev Stores a new beacon in the EIP1967 beacon slot.\\n */\\n function _setBeacon(address newBeacon) private {\\n require(Address.isContract(newBeacon), \\\"ERC1967: new beacon is not a contract\\\");\\n require(\\n Address.isContract(IBeacon(newBeacon).implementation()),\\n \\\"ERC1967: beacon implementation is not a contract\\\"\\n );\\n StorageSlot.getAddressSlot(_BEACON_SLOT).value = newBeacon;\\n }\\n\\n /**\\n * @dev Perform beacon upgrade with additional setup call. Note: This upgrades the address of the beacon, it does\\n * not upgrade the implementation contained in the beacon (see {UpgradeableBeacon-_setImplementation} for that).\\n *\\n * Emits a {BeaconUpgraded} event.\\n */\\n function _upgradeBeaconToAndCall(\\n address newBeacon,\\n bytes memory data,\\n bool forceCall\\n ) internal {\\n _setBeacon(newBeacon);\\n emit BeaconUpgraded(newBeacon);\\n if (data.length > 0 || forceCall) {\\n Address.functionDelegateCall(IBeacon(newBeacon).implementation(), data);\\n }\\n }\\n}\\n\",\"keccak256\":\"0xcbccf806d646bd9e2594650917208245d45998b887d5fc914de424247f5f9f9d\",\"license\":\"MIT\"},\"@openzeppelin/contracts/proxy/Proxy.sol\":{\"content\":\"// SPDX-License-Identifier: MIT\\n\\npragma solidity ^0.8.0;\\n\\n/**\\n * @dev This abstract contract provides a fallback function that delegates all calls to another contract using the EVM\\n * instruction `delegatecall`. We refer to the second contract as the _implementation_ behind the proxy, and it has to\\n * be specified by overriding the virtual {_implementation} function.\\n *\\n * Additionally, delegation to the implementation can be triggered manually through the {_fallback} function, or to a\\n * different contract through the {_delegate} function.\\n *\\n * The success and return data of the delegated call will be returned back to the caller of the proxy.\\n */\\nabstract contract Proxy {\\n /**\\n * @dev Delegates the current call to `implementation`.\\n *\\n * This function does not return to its internall call site, it will return directly to the external caller.\\n */\\n function _delegate(address implementation) internal virtual {\\n assembly {\\n // Copy msg.data. We take full control of memory in this inline assembly\\n // block because it will not return to Solidity code. We overwrite the\\n // Solidity scratch pad at memory position 0.\\n calldatacopy(0, 0, calldatasize())\\n\\n // Call the implementation.\\n // out and outsize are 0 because we don't know the size yet.\\n let result := delegatecall(gas(), implementation, 0, calldatasize(), 0, 0)\\n\\n // Copy the returned data.\\n returndatacopy(0, 0, returndatasize())\\n\\n switch result\\n // delegatecall returns 0 on error.\\n case 0 {\\n revert(0, returndatasize())\\n }\\n default {\\n return(0, returndatasize())\\n }\\n }\\n }\\n\\n /**\\n * @dev This is a virtual function that should be overriden so it returns the address to which the fallback function\\n * and {_fallback} should delegate.\\n */\\n function _implementation() internal view virtual returns (address);\\n\\n /**\\n * @dev Delegates the current call to the address returned by `_implementation()`.\\n *\\n * This function does not return to its internall call site, it will return directly to the external caller.\\n */\\n function _fallback() internal virtual {\\n _beforeFallback();\\n _delegate(_implementation());\\n }\\n\\n /**\\n * @dev Fallback function that delegates calls to the address returned by `_implementation()`. Will run if no other\\n * function in the contract matches the call data.\\n */\\n fallback() external payable virtual {\\n _fallback();\\n }\\n\\n /**\\n * @dev Fallback function that delegates calls to the address returned by `_implementation()`. Will run if call data\\n * is empty.\\n */\\n receive() external payable virtual {\\n _fallback();\\n }\\n\\n /**\\n * @dev Hook that is called before falling back to the implementation. Can happen as part of a manual `_fallback`\\n * call, or as part of the Solidity `fallback` or `receive` functions.\\n *\\n * If overriden should call `super._beforeFallback()`.\\n */\\n function _beforeFallback() internal virtual {}\\n}\\n\",\"keccak256\":\"0x8ddea9f930f26e588ea606f44c90d2623560c908e38614a03a4ca78aea8f9202\",\"license\":\"MIT\"},\"@openzeppelin/contracts/proxy/beacon/IBeacon.sol\":{\"content\":\"// SPDX-License-Identifier: MIT\\n\\npragma solidity ^0.8.0;\\n\\n/**\\n * @dev This is the interface that {BeaconProxy} expects of its beacon.\\n */\\ninterface IBeacon {\\n /**\\n * @dev Must return an address that can be used as a delegate call target.\\n *\\n * {BeaconProxy} will check that this address is a contract.\\n */\\n function implementation() external view returns (address);\\n}\\n\",\"keccak256\":\"0x5615339d191e77be7e46319b67856f9355786f705b7b3c4a7237ab70c1864ab1\",\"license\":\"MIT\"},\"@openzeppelin/contracts/proxy/transparent/TransparentUpgradeableProxy.sol\":{\"content\":\"// SPDX-License-Identifier: MIT\\n\\npragma solidity ^0.8.0;\\n\\nimport \\\"../ERC1967/ERC1967Proxy.sol\\\";\\n\\n/**\\n * @dev This contract implements a proxy that is upgradeable by an admin.\\n *\\n * To avoid https://medium.com/nomic-labs-blog/malicious-backdoors-in-ethereum-proxies-62629adf3357[proxy selector\\n * clashing], which can potentially be used in an attack, this contract uses the\\n * https://blog.openzeppelin.com/the-transparent-proxy-pattern/[transparent proxy pattern]. This pattern implies two\\n * things that go hand in hand:\\n *\\n * 1. If any account other than the admin calls the proxy, the call will be forwarded to the implementation, even if\\n * that call matches one of the admin functions exposed by the proxy itself.\\n * 2. If the admin calls the proxy, it can access the admin functions, but its calls will never be forwarded to the\\n * implementation. If the admin tries to call a function on the implementation it will fail with an error that says\\n * \\\"admin cannot fallback to proxy target\\\".\\n *\\n * These properties mean that the admin account can only be used for admin actions like upgrading the proxy or changing\\n * the admin, so it's best if it's a dedicated account that is not used for anything else. This will avoid headaches due\\n * to sudden errors when trying to call a function from the proxy implementation.\\n *\\n * Our recommendation is for the dedicated account to be an instance of the {ProxyAdmin} contract. If set up this way,\\n * you should think of the `ProxyAdmin` instance as the real administrative interface of your proxy.\\n */\\ncontract TransparentUpgradeableProxy is ERC1967Proxy {\\n /**\\n * @dev Initializes an upgradeable proxy managed by `_admin`, backed by the implementation at `_logic`, and\\n * optionally initialized with `_data` as explained in {ERC1967Proxy-constructor}.\\n */\\n constructor(\\n address _logic,\\n address admin_,\\n bytes memory _data\\n ) payable ERC1967Proxy(_logic, _data) {\\n assert(_ADMIN_SLOT == bytes32(uint256(keccak256(\\\"eip1967.proxy.admin\\\")) - 1));\\n _changeAdmin(admin_);\\n }\\n\\n /**\\n * @dev Modifier used internally that will delegate the call to the implementation unless the sender is the admin.\\n */\\n modifier ifAdmin() {\\n if (msg.sender == _getAdmin()) {\\n _;\\n } else {\\n _fallback();\\n }\\n }\\n\\n /**\\n * @dev Returns the current admin.\\n *\\n * NOTE: Only the admin can call this function. See {ProxyAdmin-getProxyAdmin}.\\n *\\n * TIP: To get this value clients can read directly from the storage slot shown below (specified by EIP1967) using the\\n * https://eth.wiki/json-rpc/API#eth_getstorageat[`eth_getStorageAt`] RPC call.\\n * `0xb53127684a568b3173ae13b9f8a6016e243e63b6e8ee1178d6a717850b5d6103`\\n */\\n function admin() external ifAdmin returns (address admin_) {\\n admin_ = _getAdmin();\\n }\\n\\n /**\\n * @dev Returns the current implementation.\\n *\\n * NOTE: Only the admin can call this function. See {ProxyAdmin-getProxyImplementation}.\\n *\\n * TIP: To get this value clients can read directly from the storage slot shown below (specified by EIP1967) using the\\n * https://eth.wiki/json-rpc/API#eth_getstorageat[`eth_getStorageAt`] RPC call.\\n * `0x360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc`\\n */\\n function implementation() external ifAdmin returns (address implementation_) {\\n implementation_ = _implementation();\\n }\\n\\n /**\\n * @dev Changes the admin of the proxy.\\n *\\n * Emits an {AdminChanged} event.\\n *\\n * NOTE: Only the admin can call this function. See {ProxyAdmin-changeProxyAdmin}.\\n */\\n function changeAdmin(address newAdmin) external virtual ifAdmin {\\n _changeAdmin(newAdmin);\\n }\\n\\n /**\\n * @dev Upgrade the implementation of the proxy.\\n *\\n * NOTE: Only the admin can call this function. See {ProxyAdmin-upgrade}.\\n */\\n function upgradeTo(address newImplementation) external ifAdmin {\\n _upgradeToAndCall(newImplementation, bytes(\\\"\\\"), false);\\n }\\n\\n /**\\n * @dev Upgrade the implementation of the proxy, and then call a function from the new implementation as specified\\n * by `data`, which should be an encoded function call. This is useful to initialize new storage variables in the\\n * proxied contract.\\n *\\n * NOTE: Only the admin can call this function. See {ProxyAdmin-upgradeAndCall}.\\n */\\n function upgradeToAndCall(address newImplementation, bytes calldata data) external payable ifAdmin {\\n _upgradeToAndCall(newImplementation, data, true);\\n }\\n\\n /**\\n * @dev Returns the current admin.\\n */\\n function _admin() internal view virtual returns (address) {\\n return _getAdmin();\\n }\\n\\n /**\\n * @dev Makes sure the admin cannot access the fallback function. See {Proxy-_beforeFallback}.\\n */\\n function _beforeFallback() internal virtual override {\\n require(msg.sender != _getAdmin(), \\\"TransparentUpgradeableProxy: admin cannot fallback to proxy target\\\");\\n super._beforeFallback();\\n }\\n}\\n\",\"keccak256\":\"0x2bf89a0dae89f861c5e8013478e650e918d98d376e75393867ccec88b0bf2b90\",\"license\":\"MIT\"},\"@openzeppelin/contracts/utils/Address.sol\":{\"content\":\"// SPDX-License-Identifier: MIT\\n\\npragma solidity ^0.8.0;\\n\\n/**\\n * @dev Collection of functions related to the address type\\n */\\nlibrary Address {\\n /**\\n * @dev Returns true if `account` is a contract.\\n *\\n * [IMPORTANT]\\n * ====\\n * It is unsafe to assume that an address for which this function returns\\n * false is an externally-owned account (EOA) and not a contract.\\n *\\n * Among others, `isContract` will return false for the following\\n * types of addresses:\\n *\\n * - an externally-owned account\\n * - a contract in construction\\n * - an address where a contract will be created\\n * - an address where a contract lived, but was destroyed\\n * ====\\n */\\n function isContract(address account) internal view returns (bool) {\\n // This method relies on extcodesize, which returns 0 for contracts in\\n // construction, since the code is only stored at the end of the\\n // constructor execution.\\n\\n uint256 size;\\n assembly {\\n size := extcodesize(account)\\n }\\n return size > 0;\\n }\\n\\n /**\\n * @dev Replacement for Solidity's `transfer`: sends `amount` wei to\\n * `recipient`, forwarding all available gas and reverting on errors.\\n *\\n * https://eips.ethereum.org/EIPS/eip-1884[EIP1884] increases the gas cost\\n * of certain opcodes, possibly making contracts go over the 2300 gas limit\\n * imposed by `transfer`, making them unable to receive funds via\\n * `transfer`. {sendValue} removes this limitation.\\n *\\n * https://diligence.consensys.net/posts/2019/09/stop-using-soliditys-transfer-now/[Learn more].\\n *\\n * IMPORTANT: because control is transferred to `recipient`, care must be\\n * taken to not create reentrancy vulnerabilities. Consider using\\n * {ReentrancyGuard} or the\\n * https://solidity.readthedocs.io/en/v0.5.11/security-considerations.html#use-the-checks-effects-interactions-pattern[checks-effects-interactions pattern].\\n */\\n function sendValue(address payable recipient, uint256 amount) internal {\\n require(address(this).balance >= amount, \\\"Address: insufficient balance\\\");\\n\\n (bool success, ) = recipient.call{value: amount}(\\\"\\\");\\n require(success, \\\"Address: unable to send value, recipient may have reverted\\\");\\n }\\n\\n /**\\n * @dev Performs a Solidity function call using a low level `call`. A\\n * plain `call` is an unsafe replacement for a function call: use this\\n * function instead.\\n *\\n * If `target` reverts with a revert reason, it is bubbled up by this\\n * function (like regular Solidity function calls).\\n *\\n * Returns the raw returned data. To convert to the expected return value,\\n * use https://solidity.readthedocs.io/en/latest/units-and-global-variables.html?highlight=abi.decode#abi-encoding-and-decoding-functions[`abi.decode`].\\n *\\n * Requirements:\\n *\\n * - `target` must be a contract.\\n * - calling `target` with `data` must not revert.\\n *\\n * _Available since v3.1._\\n */\\n function functionCall(address target, bytes memory data) internal returns (bytes memory) {\\n return functionCall(target, data, \\\"Address: low-level call failed\\\");\\n }\\n\\n /**\\n * @dev Same as {xref-Address-functionCall-address-bytes-}[`functionCall`], but with\\n * `errorMessage` as a fallback revert reason when `target` reverts.\\n *\\n * _Available since v3.1._\\n */\\n function functionCall(\\n address target,\\n bytes memory data,\\n string memory errorMessage\\n ) internal returns (bytes memory) {\\n return functionCallWithValue(target, data, 0, errorMessage);\\n }\\n\\n /**\\n * @dev Same as {xref-Address-functionCall-address-bytes-}[`functionCall`],\\n * but also transferring `value` wei to `target`.\\n *\\n * Requirements:\\n *\\n * - the calling contract must have an ETH balance of at least `value`.\\n * - the called Solidity function must be `payable`.\\n *\\n * _Available since v3.1._\\n */\\n function functionCallWithValue(\\n address target,\\n bytes memory data,\\n uint256 value\\n ) internal returns (bytes memory) {\\n return functionCallWithValue(target, data, value, \\\"Address: low-level call with value failed\\\");\\n }\\n\\n /**\\n * @dev Same as {xref-Address-functionCallWithValue-address-bytes-uint256-}[`functionCallWithValue`], but\\n * with `errorMessage` as a fallback revert reason when `target` reverts.\\n *\\n * _Available since v3.1._\\n */\\n function functionCallWithValue(\\n address target,\\n bytes memory data,\\n uint256 value,\\n string memory errorMessage\\n ) internal returns (bytes memory) {\\n require(address(this).balance >= value, \\\"Address: insufficient balance for call\\\");\\n require(isContract(target), \\\"Address: call to non-contract\\\");\\n\\n (bool success, bytes memory returndata) = target.call{value: value}(data);\\n return _verifyCallResult(success, returndata, errorMessage);\\n }\\n\\n /**\\n * @dev Same as {xref-Address-functionCall-address-bytes-}[`functionCall`],\\n * but performing a static call.\\n *\\n * _Available since v3.3._\\n */\\n function functionStaticCall(address target, bytes memory data) internal view returns (bytes memory) {\\n return functionStaticCall(target, data, \\\"Address: low-level static call failed\\\");\\n }\\n\\n /**\\n * @dev Same as {xref-Address-functionCall-address-bytes-string-}[`functionCall`],\\n * but performing a static call.\\n *\\n * _Available since v3.3._\\n */\\n function functionStaticCall(\\n address target,\\n bytes memory data,\\n string memory errorMessage\\n ) internal view returns (bytes memory) {\\n require(isContract(target), \\\"Address: static call to non-contract\\\");\\n\\n (bool success, bytes memory returndata) = target.staticcall(data);\\n return _verifyCallResult(success, returndata, errorMessage);\\n }\\n\\n /**\\n * @dev Same as {xref-Address-functionCall-address-bytes-}[`functionCall`],\\n * but performing a delegate call.\\n *\\n * _Available since v3.4._\\n */\\n function functionDelegateCall(address target, bytes memory data) internal returns (bytes memory) {\\n return functionDelegateCall(target, data, \\\"Address: low-level delegate call failed\\\");\\n }\\n\\n /**\\n * @dev Same as {xref-Address-functionCall-address-bytes-string-}[`functionCall`],\\n * but performing a delegate call.\\n *\\n * _Available since v3.4._\\n */\\n function functionDelegateCall(\\n address target,\\n bytes memory data,\\n string memory errorMessage\\n ) internal returns (bytes memory) {\\n require(isContract(target), \\\"Address: delegate call to non-contract\\\");\\n\\n (bool success, bytes memory returndata) = target.delegatecall(data);\\n return _verifyCallResult(success, returndata, errorMessage);\\n }\\n\\n function _verifyCallResult(\\n bool success,\\n bytes memory returndata,\\n string memory errorMessage\\n ) private pure returns (bytes memory) {\\n if (success) {\\n return returndata;\\n } else {\\n // Look for revert reason and bubble it up if present\\n if (returndata.length > 0) {\\n // The easiest way to bubble the revert reason is using memory via assembly\\n\\n assembly {\\n let returndata_size := mload(returndata)\\n revert(add(32, returndata), returndata_size)\\n }\\n } else {\\n revert(errorMessage);\\n }\\n }\\n }\\n}\\n\",\"keccak256\":\"0x3b4820cac4f127869f6eb496c1d74fa6ac86ed24071e0f94742e6aef20e7252c\",\"license\":\"MIT\"},\"@openzeppelin/contracts/utils/StorageSlot.sol\":{\"content\":\"// SPDX-License-Identifier: MIT\\n\\npragma solidity ^0.8.0;\\n\\n/**\\n * @dev Library for reading and writing primitive types to specific storage slots.\\n *\\n * Storage slots are often used to avoid storage conflict when dealing with upgradeable contracts.\\n * This library helps with reading and writing to such slots without the need for inline assembly.\\n *\\n * The functions in this library return Slot structs that contain a `value` member that can be used to read or write.\\n *\\n * Example usage to set ERC1967 implementation slot:\\n * ```\\n * contract ERC1967 {\\n * bytes32 internal constant _IMPLEMENTATION_SLOT = 0x360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc;\\n *\\n * function _getImplementation() internal view returns (address) {\\n * return StorageSlot.getAddressSlot(_IMPLEMENTATION_SLOT).value;\\n * }\\n *\\n * function _setImplementation(address newImplementation) internal {\\n * require(Address.isContract(newImplementation), \\\"ERC1967: new implementation is not a contract\\\");\\n * StorageSlot.getAddressSlot(_IMPLEMENTATION_SLOT).value = newImplementation;\\n * }\\n * }\\n * ```\\n *\\n * _Available since v4.1 for `address`, `bool`, `bytes32`, and `uint256`._\\n */\\nlibrary StorageSlot {\\n struct AddressSlot {\\n address value;\\n }\\n\\n struct BooleanSlot {\\n bool value;\\n }\\n\\n struct Bytes32Slot {\\n bytes32 value;\\n }\\n\\n struct Uint256Slot {\\n uint256 value;\\n }\\n\\n /**\\n * @dev Returns an `AddressSlot` with member `value` located at `slot`.\\n */\\n function getAddressSlot(bytes32 slot) internal pure returns (AddressSlot storage r) {\\n assembly {\\n r.slot := slot\\n }\\n }\\n\\n /**\\n * @dev Returns an `BooleanSlot` with member `value` located at `slot`.\\n */\\n function getBooleanSlot(bytes32 slot) internal pure returns (BooleanSlot storage r) {\\n assembly {\\n r.slot := slot\\n }\\n }\\n\\n /**\\n * @dev Returns an `Bytes32Slot` with member `value` located at `slot`.\\n */\\n function getBytes32Slot(bytes32 slot) internal pure returns (Bytes32Slot storage r) {\\n assembly {\\n r.slot := slot\\n }\\n }\\n\\n /**\\n * @dev Returns an `Uint256Slot` with member `value` located at `slot`.\\n */\\n function getUint256Slot(bytes32 slot) internal pure returns (Uint256Slot storage r) {\\n assembly {\\n r.slot := slot\\n }\\n }\\n}\\n\",\"keccak256\":\"0x5d15d280d1f868f59a8264dc73f7ea8c51f10d78aac864b2f2ad29412d187ff5\",\"license\":\"MIT\"},\"src/ClaimRewards.sol\":{\"content\":\"//SPDX-License-Identifier: MIT\\n\\npragma solidity ^0.8.6;\\n\\nimport {TransparentUpgradeableProxy} from \\\"@openzeppelin/contracts/proxy/transparent/TransparentUpgradeableProxy.sol\\\";\\n\\nimport {ValidString} from \\\"./ValidString.sol\\\";\\n\\ncontract ClaimRewardsV1 {\\n uint256 public constant BPS_DENOMINATOR = 10000;\\n\\n event LogClaimRewards(\\n address indexed operatorAddress_,\\n string assetSymbol_,\\n string recipientAddress_,\\n string recipientChain_,\\n bytes recipientPayload_,\\n uint256 fractionInBps_,\\n // Repeated values for indexing.\\n string indexed assetSymbolIndexed_,\\n string indexed recipientAddressIndexed_\\n );\\n\\n modifier validFractionInBps(uint256 fraction_) {\\n require(fraction_ <= BPS_DENOMINATOR, \\\"ClaimRewards: invalid fractionInBps\\\");\\n _;\\n }\\n\\n /**\\n * claimRewardsToChain allows darknode operators to withdraw darknode\\n * earnings, as an on-chain alternative to the JSON-RPC claim method.\\n *\\n * It will the operators total sum of rewards, for all of their nodes.\\n *\\n * @param assetSymbol_ The token symbol.\\n * E.g. \\\"BTC\\\", \\\"DOGE\\\" or \\\"FIL\\\".\\n * @param recipientAddress_ An address on the asset's native chain, for\\n * receiving the withdrawn rewards. This should be a string as\\n * provided by the user - no encoding or decoding required.\\n * E.g.: \\\"miMi2VET41YV1j6SDNTeZoPBbmH8B4nEx6\\\" for BTC.\\n * @param recipientChain_ A string indicating which chain the rewards should\\n * be withdrawn to. It should be the name of the chain as expected by\\n * RenVM (e.g. \\\"Ethereum\\\" or \\\"Solana\\\"). Support for different chains\\n * will be rolled out after this contract is deployed, starting with\\n * \\\"Ethereum\\\", then other host chains (e.g. \\\"Polygon\\\" or \\\"Solana\\\")\\n * and then lock chains (e.g. \\\"Bitcoin\\\" for \\\"BTC\\\"), also represented\\n * by an empty string \\\"\\\".\\n * @param recipientPayload_ An associated payload that can be provided along\\n * with the recipient chain and address. Should be empty if not\\n * required.\\n * @param fractionInBps_ A value between 0 and 10000 (inclusive) that\\n * indicates the percent to withdraw from each of the operator's\\n * darknodes. The value should be in BPS, meaning 10000 represents\\n * 100%, 5000 represents 50%, etc.\\n */\\n function claimRewardsToChain(\\n string memory assetSymbol_,\\n string memory recipientAddress_,\\n string memory recipientChain_,\\n bytes memory recipientPayload_,\\n uint256 fractionInBps_\\n ) public validFractionInBps(fractionInBps_) {\\n // Validate asset symbol.\\n require(ValidString.isNotEmpty(assetSymbol_), \\\"ClaimRewards: invalid empty asset\\\");\\n require(ValidString.isAlphanumeric(assetSymbol_), \\\"ClaimRewards: invalid asset\\\");\\n\\n // Validate recipient address.\\n require(ValidString.isNotEmpty(recipientAddress_), \\\"ClaimRewards: invalid empty recipient address\\\");\\n require(ValidString.isAlphanumeric(recipientAddress_), \\\"ClaimRewards: invalid recipient address\\\");\\n\\n // Validate recipient chain.\\n // Note that the chain can be empty - which is planned to represent the\\n // asset's native lock chain.\\n require(ValidString.isAlphanumeric(recipientChain_), \\\"ClaimRewards: invalid recipient chain\\\");\\n\\n address operatorAddress = msg.sender;\\n\\n // Emit event.\\n emit LogClaimRewards(\\n operatorAddress,\\n assetSymbol_,\\n recipientAddress_,\\n recipientChain_,\\n recipientPayload_,\\n fractionInBps_,\\n // Indexed\\n assetSymbol_,\\n recipientAddress_\\n );\\n }\\n\\n /**\\n * `claimRewardsToEthereum` calls `claimRewardsToChain` internally\\n */\\n function claimRewardsToEthereum(\\n string memory assetSymbol_,\\n address recipientAddress_,\\n uint256 fractionInBps_\\n ) public {\\n return claimRewardsToChain(assetSymbol_, addressToString(recipientAddress_), \\\"Ethereum\\\", \\\"\\\", fractionInBps_);\\n }\\n\\n // From https://ethereum.stackexchange.com/questions/8346/convert-address-to-string\\n function addressToString(address address_) public pure returns (string memory) {\\n bytes memory data = abi.encodePacked(address_);\\n\\n bytes memory alphabet = \\\"0123456789abcdef\\\";\\n\\n bytes memory str = new bytes(2 + data.length * 2);\\n str[0] = \\\"0\\\";\\n str[1] = \\\"x\\\";\\n for (uint256 i = 0; i < data.length; i++) {\\n str[2 + i * 2] = alphabet[uint256(uint8(data[i] >> 4))];\\n str[3 + i * 2] = alphabet[uint256(uint8(data[i] & 0x0f))];\\n }\\n return string(str);\\n }\\n}\\n\\ncontract ClaimRewardsProxy is TransparentUpgradeableProxy {\\n constructor(\\n address _logic,\\n address admin_,\\n bytes memory _data\\n ) TransparentUpgradeableProxy(_logic, admin_, _data) {}\\n}\\n\",\"keccak256\":\"0x4fcb46acbb984a9667e367eed2b385b122fdb5aa7e14afd146fda926015d19f5\",\"license\":\"MIT\"},\"src/ValidString.sol\":{\"content\":\"// SPDX-License-Identifier: MIT\\n\\npragma solidity ^0.8.6;\\n\\nlibrary ValidString {\\n function isAlphanumeric(string memory _string) internal pure returns (bool) {\\n for (uint256 i = 0; i < bytes(_string).length; i++) {\\n uint8 char = uint8(bytes(_string)[i]);\\n if (!((char >= 65 && char <= 90) || (char >= 97 && char <= 122) || (char >= 48 && char <= 57))) {\\n return false;\\n }\\n }\\n return true;\\n }\\n\\n function isNotEmpty(string memory _string) internal pure returns (bool) {\\n return bytes(_string).length > 0;\\n }\\n\\n function isValidString(string memory _string) internal pure returns (bool) {\\n return isAlphanumeric(_string) && isNotEmpty(_string);\\n }\\n}\\n\",\"keccak256\":\"0xdd884f31a974bc8ac0fef4f6b5046f62db8ff21143307fdc572f8ddf9c8f9c2f\",\"license\":\"MIT\"}},\"version\":1}", + "bytecode": "0x608060405234801561001057600080fd5b50611296806100206000396000f3fe608060405234801561001057600080fd5b506004361061004c5760003560e01c80635e57966d14610051578063a430147f14610081578063ad42bdb01461009d578063e1a45218146100b9575b600080fd5b61006b60048036038101906100669190610869565b6100d7565b6040516100789190610bbd565b60405180910390f35b61009b60048036038101906100969190610896565b6103f6565b005b6100b760048036038101906100b29190610905565b610454565b005b6100c1610692565b6040516100ce9190610d0e565b60405180910390f35b60606000826040516020016100ec9190610b8b565b604051602081830303815290604052905060006040518060400160405280601081526020017f303132333435363738396162636465660000000000000000000000000000000081525090506000600283516101479190610e49565b60026101539190610df3565b67ffffffffffffffff81111561016c5761016b61101d565b5b6040519080825280601f01601f19166020018201604052801561019e5781602001600182028036833780820191505090505b5090507f3000000000000000000000000000000000000000000000000000000000000000816000815181106101d6576101d5610fee565b5b60200101907effffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916908160001a9053507f78000000000000000000000000000000000000000000000000000000000000008160018151811061023a57610239610fee565b5b60200101907effffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916908160001a90535060005b83518110156103ea5782600485838151811061028b5761028a610fee565b5b602001015160f81c60f81b7effffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916901c60f81c60ff16815181106102d1576102d0610fee565b5b602001015160f81c60f81b826002836102ea9190610e49565b60026102f69190610df3565b8151811061030757610306610fee565b5b60200101907effffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916908160001a90535082600f60f81b85838151811061034f5761034e610fee565b5b602001015160f81c60f81b1660f81c60ff168151811061037257610371610fee565b5b602001015160f81c60f81b8260028361038b9190610e49565b60036103979190610df3565b815181106103a8576103a7610fee565b5b60200101907effffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916908160001a90535080806103e290610f52565b91505061026c565b50809350505050919050565b61044f83610403846100d7565b6040518060400160405280600881526020017f457468657265756d0000000000000000000000000000000000000000000000008152506040518060200160405280600081525085610454565b505050565b8061271081111561049a576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161049190610c4e565b60405180910390fd5b6104a386610698565b6104e2576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016104d990610c8e565b60405180910390fd5b6104eb866106a5565b61052a576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161052190610c6e565b60405180910390fd5b61053385610698565b610572576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161056990610cce565b60405180910390fd5b61057b856106a5565b6105ba576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016105b190610cee565b60405180910390fd5b6105c3846106a5565b610602576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016105f990610cae565b60405180910390fd5b6000339050856040516106159190610ba6565b60405180910390208760405161062b9190610ba6565b60405180910390208273ffffffffffffffffffffffffffffffffffffffff167ffdd1f0907500042d1105ddaf0e1811ccb6412b37936eda2427598ad72e0fdcbb8a8a8a8a8a604051610681959493929190610bdf565b60405180910390a450505050505050565b61271081565b6000808251119050919050565b600080600090505b82518110156107545760008382815181106106cb576106ca610fee565b5b602001015160f81c60f81b60f81c905060418160ff16101580156106f35750605a8160ff1611155b80610712575060618160ff16101580156107115750607a8160ff1611155b5b80610731575060308160ff1610158015610730575060398160ff1611155b5b6107405760009250505061075a565b50808061074c90610f52565b9150506106ad565b50600190505b919050565b600061077261076d84610d4e565b610d29565b90508281526020810184848401111561078e5761078d611051565b5b610799848285610edf565b509392505050565b60006107b46107af84610d7f565b610d29565b9050828152602081018484840111156107d0576107cf611051565b5b6107db848285610edf565b509392505050565b6000813590506107f281611232565b92915050565b600082601f83011261080d5761080c61104c565b5b813561081d84826020860161075f565b91505092915050565b600082601f83011261083b5761083a61104c565b5b813561084b8482602086016107a1565b91505092915050565b60008135905061086381611249565b92915050565b60006020828403121561087f5761087e61105b565b5b600061088d848285016107e3565b91505092915050565b6000806000606084860312156108af576108ae61105b565b5b600084013567ffffffffffffffff8111156108cd576108cc611056565b5b6108d986828701610826565b93505060206108ea868287016107e3565b92505060406108fb86828701610854565b9150509250925092565b600080600080600060a086880312156109215761092061105b565b5b600086013567ffffffffffffffff81111561093f5761093e611056565b5b61094b88828901610826565b955050602086013567ffffffffffffffff81111561096c5761096b611056565b5b61097888828901610826565b945050604086013567ffffffffffffffff81111561099957610998611056565b5b6109a588828901610826565b935050606086013567ffffffffffffffff8111156109c6576109c5611056565b5b6109d2888289016107f8565b92505060806109e388828901610854565b9150509295509295909350565b610a016109fc82610ea3565b610f9b565b82525050565b6000610a1282610db0565b610a1c8185610dc6565b9350610a2c818560208601610eee565b610a3581611060565b840191505092915050565b6000610a4b82610dbb565b610a558185610dd7565b9350610a65818560208601610eee565b610a6e81611060565b840191505092915050565b6000610a8482610dbb565b610a8e8185610de8565b9350610a9e818560208601610eee565b80840191505092915050565b6000610ab7602383610dd7565b9150610ac28261107e565b604082019050919050565b6000610ada601b83610dd7565b9150610ae5826110cd565b602082019050919050565b6000610afd602183610dd7565b9150610b08826110f6565b604082019050919050565b6000610b20602583610dd7565b9150610b2b82611145565b604082019050919050565b6000610b43602d83610dd7565b9150610b4e82611194565b604082019050919050565b6000610b66602783610dd7565b9150610b71826111e3565b604082019050919050565b610b8581610ed5565b82525050565b6000610b9782846109f0565b60148201915081905092915050565b6000610bb28284610a79565b915081905092915050565b60006020820190508181036000830152610bd78184610a40565b905092915050565b600060a0820190508181036000830152610bf98188610a40565b90508181036020830152610c0d8187610a40565b90508181036040830152610c218186610a40565b90508181036060830152610c358185610a07565b9050610c446080830184610b7c565b9695505050505050565b60006020820190508181036000830152610c6781610aaa565b9050919050565b60006020820190508181036000830152610c8781610acd565b9050919050565b60006020820190508181036000830152610ca781610af0565b9050919050565b60006020820190508181036000830152610cc781610b13565b9050919050565b60006020820190508181036000830152610ce781610b36565b9050919050565b60006020820190508181036000830152610d0781610b59565b9050919050565b6000602082019050610d236000830184610b7c565b92915050565b6000610d33610d44565b9050610d3f8282610f21565b919050565b6000604051905090565b600067ffffffffffffffff821115610d6957610d6861101d565b5b610d7282611060565b9050602081019050919050565b600067ffffffffffffffff821115610d9a57610d9961101d565b5b610da382611060565b9050602081019050919050565b600081519050919050565b600081519050919050565b600082825260208201905092915050565b600082825260208201905092915050565b600081905092915050565b6000610dfe82610ed5565b9150610e0983610ed5565b9250827fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff03821115610e3e57610e3d610fbf565b5b828201905092915050565b6000610e5482610ed5565b9150610e5f83610ed5565b9250817fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0483118215151615610e9857610e97610fbf565b5b828202905092915050565b6000610eae82610eb5565b9050919050565b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b6000819050919050565b82818337600083830152505050565b60005b83811015610f0c578082015181840152602081019050610ef1565b83811115610f1b576000848401525b50505050565b610f2a82611060565b810181811067ffffffffffffffff82111715610f4957610f4861101d565b5b80604052505050565b6000610f5d82610ed5565b91507fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff821415610f9057610f8f610fbf565b5b600182019050919050565b6000610fa682610fad565b9050919050565b6000610fb882611071565b9050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b600080fd5b600080fd5b600080fd5b600080fd5b6000601f19601f8301169050919050565b60008160601b9050919050565b7f436c61696d526577617264733a20696e76616c6964206672616374696f6e496e60008201527f4270730000000000000000000000000000000000000000000000000000000000602082015250565b7f436c61696d526577617264733a20696e76616c69642061737365740000000000600082015250565b7f436c61696d526577617264733a20696e76616c696420656d707479206173736560008201527f7400000000000000000000000000000000000000000000000000000000000000602082015250565b7f436c61696d526577617264733a20696e76616c696420726563697069656e742060008201527f636861696e000000000000000000000000000000000000000000000000000000602082015250565b7f436c61696d526577617264733a20696e76616c696420656d707479207265636960008201527f7069656e74206164647265737300000000000000000000000000000000000000602082015250565b7f436c61696d526577617264733a20696e76616c696420726563697069656e742060008201527f6164647265737300000000000000000000000000000000000000000000000000602082015250565b61123b81610ea3565b811461124657600080fd5b50565b61125281610ed5565b811461125d57600080fd5b5056fea26469706673582212207783e015ab589f0b9f2d8e81da12df7cb154e4af1784ea7c75dad57901d0f31864736f6c63430008060033", + "deployedBytecode": "0x608060405234801561001057600080fd5b506004361061004c5760003560e01c80635e57966d14610051578063a430147f14610081578063ad42bdb01461009d578063e1a45218146100b9575b600080fd5b61006b60048036038101906100669190610869565b6100d7565b6040516100789190610bbd565b60405180910390f35b61009b60048036038101906100969190610896565b6103f6565b005b6100b760048036038101906100b29190610905565b610454565b005b6100c1610692565b6040516100ce9190610d0e565b60405180910390f35b60606000826040516020016100ec9190610b8b565b604051602081830303815290604052905060006040518060400160405280601081526020017f303132333435363738396162636465660000000000000000000000000000000081525090506000600283516101479190610e49565b60026101539190610df3565b67ffffffffffffffff81111561016c5761016b61101d565b5b6040519080825280601f01601f19166020018201604052801561019e5781602001600182028036833780820191505090505b5090507f3000000000000000000000000000000000000000000000000000000000000000816000815181106101d6576101d5610fee565b5b60200101907effffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916908160001a9053507f78000000000000000000000000000000000000000000000000000000000000008160018151811061023a57610239610fee565b5b60200101907effffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916908160001a90535060005b83518110156103ea5782600485838151811061028b5761028a610fee565b5b602001015160f81c60f81b7effffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916901c60f81c60ff16815181106102d1576102d0610fee565b5b602001015160f81c60f81b826002836102ea9190610e49565b60026102f69190610df3565b8151811061030757610306610fee565b5b60200101907effffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916908160001a90535082600f60f81b85838151811061034f5761034e610fee565b5b602001015160f81c60f81b1660f81c60ff168151811061037257610371610fee565b5b602001015160f81c60f81b8260028361038b9190610e49565b60036103979190610df3565b815181106103a8576103a7610fee565b5b60200101907effffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916908160001a90535080806103e290610f52565b91505061026c565b50809350505050919050565b61044f83610403846100d7565b6040518060400160405280600881526020017f457468657265756d0000000000000000000000000000000000000000000000008152506040518060200160405280600081525085610454565b505050565b8061271081111561049a576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161049190610c4e565b60405180910390fd5b6104a386610698565b6104e2576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016104d990610c8e565b60405180910390fd5b6104eb866106a5565b61052a576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161052190610c6e565b60405180910390fd5b61053385610698565b610572576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161056990610cce565b60405180910390fd5b61057b856106a5565b6105ba576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016105b190610cee565b60405180910390fd5b6105c3846106a5565b610602576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016105f990610cae565b60405180910390fd5b6000339050856040516106159190610ba6565b60405180910390208760405161062b9190610ba6565b60405180910390208273ffffffffffffffffffffffffffffffffffffffff167ffdd1f0907500042d1105ddaf0e1811ccb6412b37936eda2427598ad72e0fdcbb8a8a8a8a8a604051610681959493929190610bdf565b60405180910390a450505050505050565b61271081565b6000808251119050919050565b600080600090505b82518110156107545760008382815181106106cb576106ca610fee565b5b602001015160f81c60f81b60f81c905060418160ff16101580156106f35750605a8160ff1611155b80610712575060618160ff16101580156107115750607a8160ff1611155b5b80610731575060308160ff1610158015610730575060398160ff1611155b5b6107405760009250505061075a565b50808061074c90610f52565b9150506106ad565b50600190505b919050565b600061077261076d84610d4e565b610d29565b90508281526020810184848401111561078e5761078d611051565b5b610799848285610edf565b509392505050565b60006107b46107af84610d7f565b610d29565b9050828152602081018484840111156107d0576107cf611051565b5b6107db848285610edf565b509392505050565b6000813590506107f281611232565b92915050565b600082601f83011261080d5761080c61104c565b5b813561081d84826020860161075f565b91505092915050565b600082601f83011261083b5761083a61104c565b5b813561084b8482602086016107a1565b91505092915050565b60008135905061086381611249565b92915050565b60006020828403121561087f5761087e61105b565b5b600061088d848285016107e3565b91505092915050565b6000806000606084860312156108af576108ae61105b565b5b600084013567ffffffffffffffff8111156108cd576108cc611056565b5b6108d986828701610826565b93505060206108ea868287016107e3565b92505060406108fb86828701610854565b9150509250925092565b600080600080600060a086880312156109215761092061105b565b5b600086013567ffffffffffffffff81111561093f5761093e611056565b5b61094b88828901610826565b955050602086013567ffffffffffffffff81111561096c5761096b611056565b5b61097888828901610826565b945050604086013567ffffffffffffffff81111561099957610998611056565b5b6109a588828901610826565b935050606086013567ffffffffffffffff8111156109c6576109c5611056565b5b6109d2888289016107f8565b92505060806109e388828901610854565b9150509295509295909350565b610a016109fc82610ea3565b610f9b565b82525050565b6000610a1282610db0565b610a1c8185610dc6565b9350610a2c818560208601610eee565b610a3581611060565b840191505092915050565b6000610a4b82610dbb565b610a558185610dd7565b9350610a65818560208601610eee565b610a6e81611060565b840191505092915050565b6000610a8482610dbb565b610a8e8185610de8565b9350610a9e818560208601610eee565b80840191505092915050565b6000610ab7602383610dd7565b9150610ac28261107e565b604082019050919050565b6000610ada601b83610dd7565b9150610ae5826110cd565b602082019050919050565b6000610afd602183610dd7565b9150610b08826110f6565b604082019050919050565b6000610b20602583610dd7565b9150610b2b82611145565b604082019050919050565b6000610b43602d83610dd7565b9150610b4e82611194565b604082019050919050565b6000610b66602783610dd7565b9150610b71826111e3565b604082019050919050565b610b8581610ed5565b82525050565b6000610b9782846109f0565b60148201915081905092915050565b6000610bb28284610a79565b915081905092915050565b60006020820190508181036000830152610bd78184610a40565b905092915050565b600060a0820190508181036000830152610bf98188610a40565b90508181036020830152610c0d8187610a40565b90508181036040830152610c218186610a40565b90508181036060830152610c358185610a07565b9050610c446080830184610b7c565b9695505050505050565b60006020820190508181036000830152610c6781610aaa565b9050919050565b60006020820190508181036000830152610c8781610acd565b9050919050565b60006020820190508181036000830152610ca781610af0565b9050919050565b60006020820190508181036000830152610cc781610b13565b9050919050565b60006020820190508181036000830152610ce781610b36565b9050919050565b60006020820190508181036000830152610d0781610b59565b9050919050565b6000602082019050610d236000830184610b7c565b92915050565b6000610d33610d44565b9050610d3f8282610f21565b919050565b6000604051905090565b600067ffffffffffffffff821115610d6957610d6861101d565b5b610d7282611060565b9050602081019050919050565b600067ffffffffffffffff821115610d9a57610d9961101d565b5b610da382611060565b9050602081019050919050565b600081519050919050565b600081519050919050565b600082825260208201905092915050565b600082825260208201905092915050565b600081905092915050565b6000610dfe82610ed5565b9150610e0983610ed5565b9250827fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff03821115610e3e57610e3d610fbf565b5b828201905092915050565b6000610e5482610ed5565b9150610e5f83610ed5565b9250817fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0483118215151615610e9857610e97610fbf565b5b828202905092915050565b6000610eae82610eb5565b9050919050565b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b6000819050919050565b82818337600083830152505050565b60005b83811015610f0c578082015181840152602081019050610ef1565b83811115610f1b576000848401525b50505050565b610f2a82611060565b810181811067ffffffffffffffff82111715610f4957610f4861101d565b5b80604052505050565b6000610f5d82610ed5565b91507fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff821415610f9057610f8f610fbf565b5b600182019050919050565b6000610fa682610fad565b9050919050565b6000610fb882611071565b9050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b600080fd5b600080fd5b600080fd5b600080fd5b6000601f19601f8301169050919050565b60008160601b9050919050565b7f436c61696d526577617264733a20696e76616c6964206672616374696f6e496e60008201527f4270730000000000000000000000000000000000000000000000000000000000602082015250565b7f436c61696d526577617264733a20696e76616c69642061737365740000000000600082015250565b7f436c61696d526577617264733a20696e76616c696420656d707479206173736560008201527f7400000000000000000000000000000000000000000000000000000000000000602082015250565b7f436c61696d526577617264733a20696e76616c696420726563697069656e742060008201527f636861696e000000000000000000000000000000000000000000000000000000602082015250565b7f436c61696d526577617264733a20696e76616c696420656d707479207265636960008201527f7069656e74206164647265737300000000000000000000000000000000000000602082015250565b7f436c61696d526577617264733a20696e76616c696420726563697069656e742060008201527f6164647265737300000000000000000000000000000000000000000000000000602082015250565b61123b81610ea3565b811461124657600080fd5b50565b61125281610ed5565b811461125d57600080fd5b5056fea26469706673582212207783e015ab589f0b9f2d8e81da12df7cb154e4af1784ea7c75dad57901d0f31864736f6c63430008060033", + "devdoc": { + "kind": "dev", + "methods": { + "claimRewardsToChain(string,string,string,bytes,uint256)": { + "params": { + "assetSymbol_": "The token symbol. E.g. \"BTC\", \"DOGE\" or \"FIL\".", + "fractionInBps_": "A value between 0 and 10000 (inclusive) that indicates the percent to withdraw from each of the operator's darknodes. The value should be in BPS, meaning 10000 represents 100%, 5000 represents 50%, etc.", + "recipientAddress_": "An address on the asset's native chain, for receiving the withdrawn rewards. This should be a string as provided by the user - no encoding or decoding required. E.g.: \"miMi2VET41YV1j6SDNTeZoPBbmH8B4nEx6\" for BTC.", + "recipientChain_": "A string indicating which chain the rewards should be withdrawn to. It should be the name of the chain as expected by RenVM (e.g. \"Ethereum\" or \"Solana\"). Support for different chains will be rolled out after this contract is deployed, starting with \"Ethereum\", then other host chains (e.g. \"Polygon\" or \"Solana\") and then lock chains (e.g. \"Bitcoin\" for \"BTC\"), also represented by an empty string \"\".", + "recipientPayload_": "An associated payload that can be provided along with the recipient chain and address. Should be empty if not required." + } + } + }, + "version": 1 + }, + "userdoc": { + "kind": "user", + "methods": { + "claimRewardsToChain(string,string,string,bytes,uint256)": { + "notice": "claimRewardsToChain allows darknode operators to withdraw darknode earnings, as an on-chain alternative to the JSON-RPC claim method. It will the operators total sum of rewards, for all of their nodes." + }, + "claimRewardsToEthereum(string,address,uint256)": { + "notice": "`claimRewardsToEthereum` calls `claimRewardsToChain` internally" + } + }, + "version": 1 + }, + "storageLayout": { + "storage": [], + "types": null + } +} \ No newline at end of file diff --git a/deployments/kovan/GetOperatorDarknodes.json b/deployments/kovan/GetOperatorDarknodes.json new file mode 100644 index 00000000..82594976 --- /dev/null +++ b/deployments/kovan/GetOperatorDarknodes.json @@ -0,0 +1,100 @@ +{ + "address": "0x505Bd0e3692C7f053591B76D1E671f795436116a", + "abi": [ + { + "inputs": [ + { + "internalType": "address", + "name": "_darknodeRegistry", + "type": "address" + } + ], + "stateMutability": "nonpayable", + "type": "constructor" + }, + { + "inputs": [], + "name": "darknodeRegistry", + "outputs": [ + { + "internalType": "contract IDarknodeRegistry", + "name": "", + "type": "address" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "address", + "name": "_operator", + "type": "address" + } + ], + "name": "getOperatorDarknodes", + "outputs": [ + { + "internalType": "address[]", + "name": "", + "type": "address[]" + } + ], + "stateMutability": "view", + "type": "function" + } + ], + "transactionHash": "0x54d98c7cd2bcdff8507e7dcc2eea8f5c78e8e0204c654b4871282aa6e8446b95", + "receipt": { + "to": "0x4e59b44847b379578588920cA78FbF26c0B4956C", + "from": "0xD5B5b26521665Cb37623DCA0E49c553b41dbF076", + "contractAddress": null, + "transactionIndex": 1, + "gasUsed": "656885", + "logsBloom": "0x00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000", + "blockHash": "0x605c4acf9d27300e74429a9f07301183ae46b1a34372c009b288237ee54d4bb1", + "transactionHash": "0x54d98c7cd2bcdff8507e7dcc2eea8f5c78e8e0204c654b4871282aa6e8446b95", + "logs": [], + "blockNumber": 26840770, + "cumulativeGasUsed": "726971", + "status": 1, + "byzantium": true + }, + "args": [ + "0x9954C9F839b31E82bc9CA98F234313112D269712" + ], + "solcInputHash": "1d1b33ebee20e0af945d784a55de102c", + "metadata": "{\"compiler\":{\"version\":\"0.8.6+commit.11564f7e\"},\"language\":\"Solidity\",\"output\":{\"abi\":[{\"inputs\":[{\"internalType\":\"address\",\"name\":\"_darknodeRegistry\",\"type\":\"address\"}],\"stateMutability\":\"nonpayable\",\"type\":\"constructor\"},{\"inputs\":[],\"name\":\"darknodeRegistry\",\"outputs\":[{\"internalType\":\"contract IDarknodeRegistry\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"_operator\",\"type\":\"address\"}],\"name\":\"getOperatorDarknodes\",\"outputs\":[{\"internalType\":\"address[]\",\"name\":\"\",\"type\":\"address[]\"}],\"stateMutability\":\"view\",\"type\":\"function\"}],\"devdoc\":{\"kind\":\"dev\",\"methods\":{},\"version\":1},\"userdoc\":{\"kind\":\"user\",\"methods\":{},\"version\":1}},\"settings\":{\"compilationTarget\":{\"src/GetOperatorDarknodes.sol\":\"GetOperatorDarknodes\"},\"evmVersion\":\"berlin\",\"libraries\":{},\"metadata\":{\"bytecodeHash\":\"ipfs\",\"useLiteralContent\":true},\"optimizer\":{\"enabled\":false,\"runs\":200},\"remappings\":[]},\"sources\":{\"src/GetOperatorDarknodes.sol\":{\"content\":\"// SPDX-License-Identifier: MIT\\n\\npragma solidity ^0.8.6;\\n\\ninterface IDarknodeRegistry {\\n function numDarknodes() external view returns (uint256);\\n\\n function getDarknodes(address _start, uint256 _count) external view returns (address[] memory);\\n\\n function getDarknodeOperator(address _darknodeID) external view returns (address payable);\\n}\\n\\ncontract GetOperatorDarknodes {\\n IDarknodeRegistry public darknodeRegistry;\\n\\n constructor(address _darknodeRegistry) {\\n darknodeRegistry = IDarknodeRegistry(_darknodeRegistry);\\n }\\n\\n function getOperatorDarknodes(address _operator) public view returns (address[] memory) {\\n uint256 numDarknodes = darknodeRegistry.numDarknodes();\\n address[] memory nodesPadded = new address[](numDarknodes);\\n\\n address[] memory allNodes = darknodeRegistry.getDarknodes(address(0), 0);\\n\\n uint256 j = 0;\\n for (uint256 i = 0; i < allNodes.length; i++) {\\n if (darknodeRegistry.getDarknodeOperator(allNodes[i]) == _operator) {\\n nodesPadded[j] = (allNodes[i]);\\n j++;\\n }\\n }\\n\\n address[] memory nodes = new address[](j);\\n for (uint256 i = 0; i < j; i++) {\\n nodes[i] = nodesPadded[i];\\n }\\n\\n return nodes;\\n }\\n}\\n\",\"keccak256\":\"0x7d53ef5978c31577a5f5d8257b1734ea848df34df9f4c986dd52e09a524bb7b3\",\"license\":\"MIT\"}},\"version\":1}", + "bytecode": "0x608060405234801561001057600080fd5b50604051610b85380380610b858339818101604052810190610032919061008d565b806000806101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555050610108565b600081519050610087816100f1565b92915050565b6000602082840312156100a3576100a26100ec565b5b60006100b184828501610078565b91505092915050565b60006100c5826100cc565b9050919050565b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b600080fd5b6100fa816100ba565b811461010557600080fd5b50565b610a6e806101176000396000f3fe608060405234801561001057600080fd5b50600436106100365760003560e01c80639e45e0d01461003b578063c22eb9df14610059575b600080fd5b610043610089565b604051610050919061079e565b60405180910390f35b610073600480360381019061006e91906105b6565b6100ad565b604051610080919061077c565b60405180910390f35b60008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b606060008060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16631460e6036040518163ffffffff1660e01b815260040160206040518083038186803b15801561011857600080fd5b505afa15801561012c573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906101509190610659565b905060008167ffffffffffffffff81111561016e5761016d61099f565b5b60405190808252806020026020018201604052801561019c5781602001602082028036833780820191505090505b50905060008060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663ec5325c16000806040518363ffffffff1660e01b81526004016101fe929190610753565b60006040518083038186803b15801561021657600080fd5b505afa15801561022a573d6000803e3d6000fd5b505050506040513d6000823e3d601f19601f820116820180604052508101906102539190610610565b90506000805b82518110156103e2578673ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166345f02dc28584815181106102c8576102c7610970565b5b60200260200101516040518263ffffffff1660e01b81526004016102ec9190610738565b60206040518083038186803b15801561030457600080fd5b505afa158015610318573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061033c91906105e3565b73ffffffffffffffffffffffffffffffffffffffff1614156103cf5782818151811061036b5761036a610970565b5b602002602001015184838151811061038657610385610970565b5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff168152505081806103cb906108f8565b9250505b80806103da906108f8565b915050610259565b5060008167ffffffffffffffff8111156103ff576103fe61099f565b5b60405190808252806020026020018201604052801561042d5781602001602082028036833780820191505090505b50905060005b828110156104b65784818151811061044e5761044d610970565b5b602002602001015182828151811061046957610468610970565b5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff168152505080806104ae906108f8565b915050610433565b508095505050505050919050565b60006104d76104d2846107de565b6107b9565b905080838252602082019050828560208602820111156104fa576104f96109d3565b5b60005b8581101561052a57816105108882610549565b8452602084019350602083019250506001810190506104fd565b5050509392505050565b600081359050610543816109f3565b92915050565b600081519050610558816109f3565b92915050565b60008151905061056d81610a0a565b92915050565b600082601f830112610588576105876109ce565b5b81516105988482602086016104c4565b91505092915050565b6000815190506105b081610a21565b92915050565b6000602082840312156105cc576105cb6109dd565b5b60006105da84828501610534565b91505092915050565b6000602082840312156105f9576105f86109dd565b5b60006106078482850161055e565b91505092915050565b600060208284031215610626576106256109dd565b5b600082015167ffffffffffffffff811115610644576106436109d8565b5b61065084828501610573565b91505092915050565b60006020828403121561066f5761066e6109dd565b5b600061067d848285016105a1565b91505092915050565b6000610692838361069e565b60208301905092915050565b6106a781610843565b82525050565b6106b681610843565b82525050565b60006106c78261081a565b6106d18185610832565b93506106dc8361080a565b8060005b8381101561070d5781516106f48882610686565b97506106ff83610825565b9250506001810190506106e0565b5085935050505092915050565b61072381610891565b82525050565b610732816108b5565b82525050565b600060208201905061074d60008301846106ad565b92915050565b600060408201905061076860008301856106ad565b6107756020830184610729565b9392505050565b6000602082019050818103600083015261079681846106bc565b905092915050565b60006020820190506107b3600083018461071a565b92915050565b60006107c36107d4565b90506107cf82826108c7565b919050565b6000604051905090565b600067ffffffffffffffff8211156107f9576107f861099f565b5b602082029050602081019050919050565b6000819050602082019050919050565b600081519050919050565b6000602082019050919050565b600082825260208201905092915050565b600061084e82610867565b9050919050565b600061086082610867565b9050919050565b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b6000819050919050565b600061089c826108a3565b9050919050565b60006108ae82610867565b9050919050565b60006108c082610887565b9050919050565b6108d0826109e2565b810181811067ffffffffffffffff821117156108ef576108ee61099f565b5b80604052505050565b600061090382610887565b91507fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff82141561093657610935610941565b5b600182019050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b600080fd5b600080fd5b600080fd5b600080fd5b6000601f19601f8301169050919050565b6109fc81610843565b8114610a0757600080fd5b50565b610a1381610855565b8114610a1e57600080fd5b50565b610a2a81610887565b8114610a3557600080fd5b5056fea264697066735822122097583e09740ae6929b364ca2ceae65d756d6734bff8f9cb1fa4f6ff97e1ebbb064736f6c63430008060033", + "deployedBytecode": "0x608060405234801561001057600080fd5b50600436106100365760003560e01c80639e45e0d01461003b578063c22eb9df14610059575b600080fd5b610043610089565b604051610050919061079e565b60405180910390f35b610073600480360381019061006e91906105b6565b6100ad565b604051610080919061077c565b60405180910390f35b60008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b606060008060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16631460e6036040518163ffffffff1660e01b815260040160206040518083038186803b15801561011857600080fd5b505afa15801561012c573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906101509190610659565b905060008167ffffffffffffffff81111561016e5761016d61099f565b5b60405190808252806020026020018201604052801561019c5781602001602082028036833780820191505090505b50905060008060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663ec5325c16000806040518363ffffffff1660e01b81526004016101fe929190610753565b60006040518083038186803b15801561021657600080fd5b505afa15801561022a573d6000803e3d6000fd5b505050506040513d6000823e3d601f19601f820116820180604052508101906102539190610610565b90506000805b82518110156103e2578673ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166345f02dc28584815181106102c8576102c7610970565b5b60200260200101516040518263ffffffff1660e01b81526004016102ec9190610738565b60206040518083038186803b15801561030457600080fd5b505afa158015610318573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061033c91906105e3565b73ffffffffffffffffffffffffffffffffffffffff1614156103cf5782818151811061036b5761036a610970565b5b602002602001015184838151811061038657610385610970565b5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff168152505081806103cb906108f8565b9250505b80806103da906108f8565b915050610259565b5060008167ffffffffffffffff8111156103ff576103fe61099f565b5b60405190808252806020026020018201604052801561042d5781602001602082028036833780820191505090505b50905060005b828110156104b65784818151811061044e5761044d610970565b5b602002602001015182828151811061046957610468610970565b5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff168152505080806104ae906108f8565b915050610433565b508095505050505050919050565b60006104d76104d2846107de565b6107b9565b905080838252602082019050828560208602820111156104fa576104f96109d3565b5b60005b8581101561052a57816105108882610549565b8452602084019350602083019250506001810190506104fd565b5050509392505050565b600081359050610543816109f3565b92915050565b600081519050610558816109f3565b92915050565b60008151905061056d81610a0a565b92915050565b600082601f830112610588576105876109ce565b5b81516105988482602086016104c4565b91505092915050565b6000815190506105b081610a21565b92915050565b6000602082840312156105cc576105cb6109dd565b5b60006105da84828501610534565b91505092915050565b6000602082840312156105f9576105f86109dd565b5b60006106078482850161055e565b91505092915050565b600060208284031215610626576106256109dd565b5b600082015167ffffffffffffffff811115610644576106436109d8565b5b61065084828501610573565b91505092915050565b60006020828403121561066f5761066e6109dd565b5b600061067d848285016105a1565b91505092915050565b6000610692838361069e565b60208301905092915050565b6106a781610843565b82525050565b6106b681610843565b82525050565b60006106c78261081a565b6106d18185610832565b93506106dc8361080a565b8060005b8381101561070d5781516106f48882610686565b97506106ff83610825565b9250506001810190506106e0565b5085935050505092915050565b61072381610891565b82525050565b610732816108b5565b82525050565b600060208201905061074d60008301846106ad565b92915050565b600060408201905061076860008301856106ad565b6107756020830184610729565b9392505050565b6000602082019050818103600083015261079681846106bc565b905092915050565b60006020820190506107b3600083018461071a565b92915050565b60006107c36107d4565b90506107cf82826108c7565b919050565b6000604051905090565b600067ffffffffffffffff8211156107f9576107f861099f565b5b602082029050602081019050919050565b6000819050602082019050919050565b600081519050919050565b6000602082019050919050565b600082825260208201905092915050565b600061084e82610867565b9050919050565b600061086082610867565b9050919050565b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b6000819050919050565b600061089c826108a3565b9050919050565b60006108ae82610867565b9050919050565b60006108c082610887565b9050919050565b6108d0826109e2565b810181811067ffffffffffffffff821117156108ef576108ee61099f565b5b80604052505050565b600061090382610887565b91507fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff82141561093657610935610941565b5b600182019050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b600080fd5b600080fd5b600080fd5b600080fd5b6000601f19601f8301169050919050565b6109fc81610843565b8114610a0757600080fd5b50565b610a1381610855565b8114610a1e57600080fd5b50565b610a2a81610887565b8114610a3557600080fd5b5056fea264697066735822122097583e09740ae6929b364ca2ceae65d756d6734bff8f9cb1fa4f6ff97e1ebbb064736f6c63430008060033", + "devdoc": { + "kind": "dev", + "methods": {}, + "version": 1 + }, + "userdoc": { + "kind": "user", + "methods": {}, + "version": 1 + }, + "storageLayout": { + "storage": [ + { + "astId": 3012, + "contract": "src/GetOperatorDarknodes.sol:GetOperatorDarknodes", + "label": "darknodeRegistry", + "offset": 0, + "slot": "0", + "type": "t_contract(IDarknodeRegistry)3009" + } + ], + "types": { + "t_contract(IDarknodeRegistry)3009": { + "encoding": "inplace", + "label": "contract IDarknodeRegistry", + "numberOfBytes": "20" + } + } + } +} \ No newline at end of file diff --git a/deployments/kovan/Protocol.json b/deployments/kovan/Protocol.json new file mode 100644 index 00000000..6bb7d990 --- /dev/null +++ b/deployments/kovan/Protocol.json @@ -0,0 +1,645 @@ +{ + "address": "0x9e2Ed544eE281FBc4c00f8cE7fC2Ff8AbB4899D1", + "abi": [ + { + "anonymous": false, + "inputs": [ + { + "indexed": false, + "internalType": "string", + "name": "contractName", + "type": "string" + }, + { + "indexed": true, + "internalType": "address", + "name": "contractAddress", + "type": "address" + }, + { + "indexed": true, + "internalType": "string", + "name": "contractNameIndexed", + "type": "string" + } + ], + "name": "LogContractUpdated", + "type": "event" + }, + { + "anonymous": false, + "inputs": [ + { + "indexed": true, + "internalType": "bytes32", + "name": "role", + "type": "bytes32" + }, + { + "indexed": true, + "internalType": "bytes32", + "name": "previousAdminRole", + "type": "bytes32" + }, + { + "indexed": true, + "internalType": "bytes32", + "name": "newAdminRole", + "type": "bytes32" + } + ], + "name": "RoleAdminChanged", + "type": "event" + }, + { + "anonymous": false, + "inputs": [ + { + "indexed": true, + "internalType": "bytes32", + "name": "role", + "type": "bytes32" + }, + { + "indexed": true, + "internalType": "address", + "name": "account", + "type": "address" + }, + { + "indexed": true, + "internalType": "address", + "name": "sender", + "type": "address" + } + ], + "name": "RoleGranted", + "type": "event" + }, + { + "anonymous": false, + "inputs": [ + { + "indexed": true, + "internalType": "bytes32", + "name": "role", + "type": "bytes32" + }, + { + "indexed": true, + "internalType": "address", + "name": "account", + "type": "address" + }, + { + "indexed": true, + "internalType": "address", + "name": "sender", + "type": "address" + } + ], + "name": "RoleRevoked", + "type": "event" + }, + { + "inputs": [], + "name": "CAN_ADD_CONTRACTS", + "outputs": [ + { + "internalType": "bytes32", + "name": "", + "type": "bytes32" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [], + "name": "CAN_UPDATE_CONTRACTS", + "outputs": [ + { + "internalType": "bytes32", + "name": "", + "type": "bytes32" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [], + "name": "DEFAULT_ADMIN_ROLE", + "outputs": [ + { + "internalType": "bytes32", + "name": "", + "type": "bytes32" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "address", + "name": "adminAddress_", + "type": "address" + } + ], + "name": "__Protocol_init", + "outputs": [], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "string", + "name": "contractName", + "type": "string" + }, + { + "internalType": "address", + "name": "contractAddress", + "type": "address" + } + ], + "name": "addContract", + "outputs": [], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "string", + "name": "contractName", + "type": "string" + } + ], + "name": "getContract", + "outputs": [ + { + "internalType": "address", + "name": "", + "type": "address" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "bytes32", + "name": "role", + "type": "bytes32" + } + ], + "name": "getRoleAdmin", + "outputs": [ + { + "internalType": "bytes32", + "name": "", + "type": "bytes32" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "bytes32", + "name": "role", + "type": "bytes32" + }, + { + "internalType": "uint256", + "name": "index", + "type": "uint256" + } + ], + "name": "getRoleMember", + "outputs": [ + { + "internalType": "address", + "name": "", + "type": "address" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "bytes32", + "name": "role", + "type": "bytes32" + } + ], + "name": "getRoleMemberCount", + "outputs": [ + { + "internalType": "uint256", + "name": "", + "type": "uint256" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "bytes32", + "name": "role", + "type": "bytes32" + }, + { + "internalType": "address", + "name": "account", + "type": "address" + } + ], + "name": "grantRole", + "outputs": [], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "bytes32", + "name": "role", + "type": "bytes32" + }, + { + "internalType": "address", + "name": "account", + "type": "address" + } + ], + "name": "hasRole", + "outputs": [ + { + "internalType": "bool", + "name": "", + "type": "bool" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "bytes32", + "name": "role", + "type": "bytes32" + }, + { + "internalType": "address", + "name": "account", + "type": "address" + } + ], + "name": "renounceRole", + "outputs": [], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "bytes32", + "name": "role", + "type": "bytes32" + }, + { + "internalType": "address", + "name": "account", + "type": "address" + } + ], + "name": "revokeRole", + "outputs": [], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "bytes4", + "name": "interfaceId", + "type": "bytes4" + } + ], + "name": "supportsInterface", + "outputs": [ + { + "internalType": "bool", + "name": "", + "type": "bool" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "string", + "name": "contractName", + "type": "string" + }, + { + "internalType": "address", + "name": "contractAddress", + "type": "address" + } + ], + "name": "updateContract", + "outputs": [], + "stateMutability": "nonpayable", + "type": "function" + } + ], + "transactionHash": "0x5d9a4b1ba658551f65cb0ebe0f35fedbb7359f94b184fce7160a1935fdfd2eb1", + "receipt": { + "to": "0x4e59b44847b379578588920cA78FbF26c0B4956C", + "from": "0xD5B5b26521665Cb37623DCA0E49c553b41dbF076", + "contractAddress": null, + "transactionIndex": 3, + "gasUsed": "1904113", + "logsBloom": "0x00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000", + "blockHash": "0xa0eb7df487f3fed9c6092f15ba461a6d909939f747b468442ae00b053a1716a2", + "transactionHash": "0x5d9a4b1ba658551f65cb0ebe0f35fedbb7359f94b184fce7160a1935fdfd2eb1", + "logs": [], + "blockNumber": 26840797, + "cumulativeGasUsed": "2974645", + "status": 1, + "byzantium": true + }, + "args": [], + "solcInputHash": "1d1b33ebee20e0af945d784a55de102c", + "metadata": "{\"compiler\":{\"version\":\"0.8.6+commit.11564f7e\"},\"language\":\"Solidity\",\"output\":{\"abi\":[{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"string\",\"name\":\"contractName\",\"type\":\"string\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"contractAddress\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"string\",\"name\":\"contractNameIndexed\",\"type\":\"string\"}],\"name\":\"LogContractUpdated\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"bytes32\",\"name\":\"role\",\"type\":\"bytes32\"},{\"indexed\":true,\"internalType\":\"bytes32\",\"name\":\"previousAdminRole\",\"type\":\"bytes32\"},{\"indexed\":true,\"internalType\":\"bytes32\",\"name\":\"newAdminRole\",\"type\":\"bytes32\"}],\"name\":\"RoleAdminChanged\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"bytes32\",\"name\":\"role\",\"type\":\"bytes32\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"account\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"sender\",\"type\":\"address\"}],\"name\":\"RoleGranted\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"bytes32\",\"name\":\"role\",\"type\":\"bytes32\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"account\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"sender\",\"type\":\"address\"}],\"name\":\"RoleRevoked\",\"type\":\"event\"},{\"inputs\":[],\"name\":\"CAN_ADD_CONTRACTS\",\"outputs\":[{\"internalType\":\"bytes32\",\"name\":\"\",\"type\":\"bytes32\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"CAN_UPDATE_CONTRACTS\",\"outputs\":[{\"internalType\":\"bytes32\",\"name\":\"\",\"type\":\"bytes32\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"DEFAULT_ADMIN_ROLE\",\"outputs\":[{\"internalType\":\"bytes32\",\"name\":\"\",\"type\":\"bytes32\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"adminAddress_\",\"type\":\"address\"}],\"name\":\"__Protocol_init\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"string\",\"name\":\"contractName\",\"type\":\"string\"},{\"internalType\":\"address\",\"name\":\"contractAddress\",\"type\":\"address\"}],\"name\":\"addContract\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"string\",\"name\":\"contractName\",\"type\":\"string\"}],\"name\":\"getContract\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes32\",\"name\":\"role\",\"type\":\"bytes32\"}],\"name\":\"getRoleAdmin\",\"outputs\":[{\"internalType\":\"bytes32\",\"name\":\"\",\"type\":\"bytes32\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes32\",\"name\":\"role\",\"type\":\"bytes32\"},{\"internalType\":\"uint256\",\"name\":\"index\",\"type\":\"uint256\"}],\"name\":\"getRoleMember\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes32\",\"name\":\"role\",\"type\":\"bytes32\"}],\"name\":\"getRoleMemberCount\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes32\",\"name\":\"role\",\"type\":\"bytes32\"},{\"internalType\":\"address\",\"name\":\"account\",\"type\":\"address\"}],\"name\":\"grantRole\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes32\",\"name\":\"role\",\"type\":\"bytes32\"},{\"internalType\":\"address\",\"name\":\"account\",\"type\":\"address\"}],\"name\":\"hasRole\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes32\",\"name\":\"role\",\"type\":\"bytes32\"},{\"internalType\":\"address\",\"name\":\"account\",\"type\":\"address\"}],\"name\":\"renounceRole\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes32\",\"name\":\"role\",\"type\":\"bytes32\"},{\"internalType\":\"address\",\"name\":\"account\",\"type\":\"address\"}],\"name\":\"revokeRole\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes4\",\"name\":\"interfaceId\",\"type\":\"bytes4\"}],\"name\":\"supportsInterface\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"string\",\"name\":\"contractName\",\"type\":\"string\"},{\"internalType\":\"address\",\"name\":\"contractAddress\",\"type\":\"address\"}],\"name\":\"updateContract\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"}],\"devdoc\":{\"kind\":\"dev\",\"methods\":{\"getRoleAdmin(bytes32)\":{\"details\":\"Returns the admin role that controls `role`. See {grantRole} and {revokeRole}. To change a role's admin, use {_setRoleAdmin}.\"},\"getRoleMember(bytes32,uint256)\":{\"details\":\"Returns one of the accounts that have `role`. `index` must be a value between 0 and {getRoleMemberCount}, non-inclusive. Role bearers are not sorted in any particular way, and their ordering may change at any point. WARNING: When using {getRoleMember} and {getRoleMemberCount}, make sure you perform all queries on the same block. See the following https://forum.openzeppelin.com/t/iterating-over-elements-on-enumerableset-in-openzeppelin-contracts/2296[forum post] for more information.\"},\"getRoleMemberCount(bytes32)\":{\"details\":\"Returns the number of accounts that have `role`. Can be used together with {getRoleMember} to enumerate all bearers of a role.\"},\"grantRole(bytes32,address)\":{\"details\":\"Overload {grantRole} to track enumerable memberships\"},\"hasRole(bytes32,address)\":{\"details\":\"Returns `true` if `account` has been granted `role`.\"},\"renounceRole(bytes32,address)\":{\"details\":\"Overload {renounceRole} to track enumerable memberships\"},\"revokeRole(bytes32,address)\":{\"details\":\"Overload {revokeRole} to track enumerable memberships\"},\"supportsInterface(bytes4)\":{\"details\":\"See {IERC165-supportsInterface}.\"}},\"version\":1},\"userdoc\":{\"kind\":\"user\",\"methods\":{},\"notice\":\"The Protocol contract is used to look-up other Ren contracts. \",\"version\":1}},\"settings\":{\"compilationTarget\":{\"src/Protocol.sol\":\"Protocol\"},\"evmVersion\":\"berlin\",\"libraries\":{},\"metadata\":{\"bytecodeHash\":\"ipfs\",\"useLiteralContent\":true},\"optimizer\":{\"enabled\":false,\"runs\":200},\"remappings\":[]},\"sources\":{\"@openzeppelin/contracts-upgradeable/access/AccessControlEnumerableUpgradeable.sol\":{\"content\":\"// SPDX-License-Identifier: MIT\\n\\npragma solidity ^0.8.0;\\n\\nimport \\\"./AccessControlUpgradeable.sol\\\";\\nimport \\\"../utils/structs/EnumerableSetUpgradeable.sol\\\";\\nimport \\\"../proxy/utils/Initializable.sol\\\";\\n\\n/**\\n * @dev External interface of AccessControlEnumerable declared to support ERC165 detection.\\n */\\ninterface IAccessControlEnumerableUpgradeable {\\n function getRoleMember(bytes32 role, uint256 index) external view returns (address);\\n\\n function getRoleMemberCount(bytes32 role) external view returns (uint256);\\n}\\n\\n/**\\n * @dev Extension of {AccessControl} that allows enumerating the members of each role.\\n */\\nabstract contract AccessControlEnumerableUpgradeable is Initializable, IAccessControlEnumerableUpgradeable, AccessControlUpgradeable {\\n function __AccessControlEnumerable_init() internal initializer {\\n __Context_init_unchained();\\n __ERC165_init_unchained();\\n __AccessControl_init_unchained();\\n __AccessControlEnumerable_init_unchained();\\n }\\n\\n function __AccessControlEnumerable_init_unchained() internal initializer {\\n }\\n using EnumerableSetUpgradeable for EnumerableSetUpgradeable.AddressSet;\\n\\n mapping(bytes32 => EnumerableSetUpgradeable.AddressSet) private _roleMembers;\\n\\n /**\\n * @dev See {IERC165-supportsInterface}.\\n */\\n function supportsInterface(bytes4 interfaceId) public view virtual override returns (bool) {\\n return interfaceId == type(IAccessControlEnumerableUpgradeable).interfaceId || super.supportsInterface(interfaceId);\\n }\\n\\n /**\\n * @dev Returns one of the accounts that have `role`. `index` must be a\\n * value between 0 and {getRoleMemberCount}, non-inclusive.\\n *\\n * Role bearers are not sorted in any particular way, and their ordering may\\n * change at any point.\\n *\\n * WARNING: When using {getRoleMember} and {getRoleMemberCount}, make sure\\n * you perform all queries on the same block. See the following\\n * https://forum.openzeppelin.com/t/iterating-over-elements-on-enumerableset-in-openzeppelin-contracts/2296[forum post]\\n * for more information.\\n */\\n function getRoleMember(bytes32 role, uint256 index) public view override returns (address) {\\n return _roleMembers[role].at(index);\\n }\\n\\n /**\\n * @dev Returns the number of accounts that have `role`. Can be used\\n * together with {getRoleMember} to enumerate all bearers of a role.\\n */\\n function getRoleMemberCount(bytes32 role) public view override returns (uint256) {\\n return _roleMembers[role].length();\\n }\\n\\n /**\\n * @dev Overload {grantRole} to track enumerable memberships\\n */\\n function grantRole(bytes32 role, address account) public virtual override {\\n super.grantRole(role, account);\\n _roleMembers[role].add(account);\\n }\\n\\n /**\\n * @dev Overload {revokeRole} to track enumerable memberships\\n */\\n function revokeRole(bytes32 role, address account) public virtual override {\\n super.revokeRole(role, account);\\n _roleMembers[role].remove(account);\\n }\\n\\n /**\\n * @dev Overload {renounceRole} to track enumerable memberships\\n */\\n function renounceRole(bytes32 role, address account) public virtual override {\\n super.renounceRole(role, account);\\n _roleMembers[role].remove(account);\\n }\\n\\n /**\\n * @dev Overload {_setupRole} to track enumerable memberships\\n */\\n function _setupRole(bytes32 role, address account) internal virtual override {\\n super._setupRole(role, account);\\n _roleMembers[role].add(account);\\n }\\n uint256[49] private __gap;\\n}\\n\",\"keccak256\":\"0xf8210b83516a66b0d6e0faefa7b27eb208729a173ef8888aed9e4fbcaeb242e5\",\"license\":\"MIT\"},\"@openzeppelin/contracts-upgradeable/access/AccessControlUpgradeable.sol\":{\"content\":\"// SPDX-License-Identifier: MIT\\n\\npragma solidity ^0.8.0;\\n\\nimport \\\"../utils/ContextUpgradeable.sol\\\";\\nimport \\\"../utils/StringsUpgradeable.sol\\\";\\nimport \\\"../utils/introspection/ERC165Upgradeable.sol\\\";\\nimport \\\"../proxy/utils/Initializable.sol\\\";\\n\\n/**\\n * @dev External interface of AccessControl declared to support ERC165 detection.\\n */\\ninterface IAccessControlUpgradeable {\\n function hasRole(bytes32 role, address account) external view returns (bool);\\n\\n function getRoleAdmin(bytes32 role) external view returns (bytes32);\\n\\n function grantRole(bytes32 role, address account) external;\\n\\n function revokeRole(bytes32 role, address account) external;\\n\\n function renounceRole(bytes32 role, address account) external;\\n}\\n\\n/**\\n * @dev Contract module that allows children to implement role-based access\\n * control mechanisms. This is a lightweight version that doesn't allow enumerating role\\n * members except through off-chain means by accessing the contract event logs. Some\\n * applications may benefit from on-chain enumerability, for those cases see\\n * {AccessControlEnumerable}.\\n *\\n * Roles are referred to by their `bytes32` identifier. These should be exposed\\n * in the external API and be unique. The best way to achieve this is by\\n * using `public constant` hash digests:\\n *\\n * ```\\n * bytes32 public constant MY_ROLE = keccak256(\\\"MY_ROLE\\\");\\n * ```\\n *\\n * Roles can be used to represent a set of permissions. To restrict access to a\\n * function call, use {hasRole}:\\n *\\n * ```\\n * function foo() public {\\n * require(hasRole(MY_ROLE, msg.sender));\\n * ...\\n * }\\n * ```\\n *\\n * Roles can be granted and revoked dynamically via the {grantRole} and\\n * {revokeRole} functions. Each role has an associated admin role, and only\\n * accounts that have a role's admin role can call {grantRole} and {revokeRole}.\\n *\\n * By default, the admin role for all roles is `DEFAULT_ADMIN_ROLE`, which means\\n * that only accounts with this role will be able to grant or revoke other\\n * roles. More complex role relationships can be created by using\\n * {_setRoleAdmin}.\\n *\\n * WARNING: The `DEFAULT_ADMIN_ROLE` is also its own admin: it has permission to\\n * grant and revoke this role. Extra precautions should be taken to secure\\n * accounts that have been granted it.\\n */\\nabstract contract AccessControlUpgradeable is Initializable, ContextUpgradeable, IAccessControlUpgradeable, ERC165Upgradeable {\\n function __AccessControl_init() internal initializer {\\n __Context_init_unchained();\\n __ERC165_init_unchained();\\n __AccessControl_init_unchained();\\n }\\n\\n function __AccessControl_init_unchained() internal initializer {\\n }\\n struct RoleData {\\n mapping(address => bool) members;\\n bytes32 adminRole;\\n }\\n\\n mapping(bytes32 => RoleData) private _roles;\\n\\n bytes32 public constant DEFAULT_ADMIN_ROLE = 0x00;\\n\\n /**\\n * @dev Emitted when `newAdminRole` is set as ``role``'s admin role, replacing `previousAdminRole`\\n *\\n * `DEFAULT_ADMIN_ROLE` is the starting admin for all roles, despite\\n * {RoleAdminChanged} not being emitted signaling this.\\n *\\n * _Available since v3.1._\\n */\\n event RoleAdminChanged(bytes32 indexed role, bytes32 indexed previousAdminRole, bytes32 indexed newAdminRole);\\n\\n /**\\n * @dev Emitted when `account` is granted `role`.\\n *\\n * `sender` is the account that originated the contract call, an admin role\\n * bearer except when using {_setupRole}.\\n */\\n event RoleGranted(bytes32 indexed role, address indexed account, address indexed sender);\\n\\n /**\\n * @dev Emitted when `account` is revoked `role`.\\n *\\n * `sender` is the account that originated the contract call:\\n * - if using `revokeRole`, it is the admin role bearer\\n * - if using `renounceRole`, it is the role bearer (i.e. `account`)\\n */\\n event RoleRevoked(bytes32 indexed role, address indexed account, address indexed sender);\\n\\n /**\\n * @dev Modifier that checks that an account has a specific role. Reverts\\n * with a standardized message including the required role.\\n *\\n * The format of the revert reason is given by the following regular expression:\\n *\\n * /^AccessControl: account (0x[0-9a-f]{20}) is missing role (0x[0-9a-f]{32})$/\\n *\\n * _Available since v4.1._\\n */\\n modifier onlyRole(bytes32 role) {\\n _checkRole(role, _msgSender());\\n _;\\n }\\n\\n /**\\n * @dev See {IERC165-supportsInterface}.\\n */\\n function supportsInterface(bytes4 interfaceId) public view virtual override returns (bool) {\\n return interfaceId == type(IAccessControlUpgradeable).interfaceId || super.supportsInterface(interfaceId);\\n }\\n\\n /**\\n * @dev Returns `true` if `account` has been granted `role`.\\n */\\n function hasRole(bytes32 role, address account) public view override returns (bool) {\\n return _roles[role].members[account];\\n }\\n\\n /**\\n * @dev Revert with a standard message if `account` is missing `role`.\\n *\\n * The format of the revert reason is given by the following regular expression:\\n *\\n * /^AccessControl: account (0x[0-9a-f]{20}) is missing role (0x[0-9a-f]{32})$/\\n */\\n function _checkRole(bytes32 role, address account) internal view {\\n if (!hasRole(role, account)) {\\n revert(\\n string(\\n abi.encodePacked(\\n \\\"AccessControl: account \\\",\\n StringsUpgradeable.toHexString(uint160(account), 20),\\n \\\" is missing role \\\",\\n StringsUpgradeable.toHexString(uint256(role), 32)\\n )\\n )\\n );\\n }\\n }\\n\\n /**\\n * @dev Returns the admin role that controls `role`. See {grantRole} and\\n * {revokeRole}.\\n *\\n * To change a role's admin, use {_setRoleAdmin}.\\n */\\n function getRoleAdmin(bytes32 role) public view override returns (bytes32) {\\n return _roles[role].adminRole;\\n }\\n\\n /**\\n * @dev Grants `role` to `account`.\\n *\\n * If `account` had not been already granted `role`, emits a {RoleGranted}\\n * event.\\n *\\n * Requirements:\\n *\\n * - the caller must have ``role``'s admin role.\\n */\\n function grantRole(bytes32 role, address account) public virtual override onlyRole(getRoleAdmin(role)) {\\n _grantRole(role, account);\\n }\\n\\n /**\\n * @dev Revokes `role` from `account`.\\n *\\n * If `account` had been granted `role`, emits a {RoleRevoked} event.\\n *\\n * Requirements:\\n *\\n * - the caller must have ``role``'s admin role.\\n */\\n function revokeRole(bytes32 role, address account) public virtual override onlyRole(getRoleAdmin(role)) {\\n _revokeRole(role, account);\\n }\\n\\n /**\\n * @dev Revokes `role` from the calling account.\\n *\\n * Roles are often managed via {grantRole} and {revokeRole}: this function's\\n * purpose is to provide a mechanism for accounts to lose their privileges\\n * if they are compromised (such as when a trusted device is misplaced).\\n *\\n * If the calling account had been granted `role`, emits a {RoleRevoked}\\n * event.\\n *\\n * Requirements:\\n *\\n * - the caller must be `account`.\\n */\\n function renounceRole(bytes32 role, address account) public virtual override {\\n require(account == _msgSender(), \\\"AccessControl: can only renounce roles for self\\\");\\n\\n _revokeRole(role, account);\\n }\\n\\n /**\\n * @dev Grants `role` to `account`.\\n *\\n * If `account` had not been already granted `role`, emits a {RoleGranted}\\n * event. Note that unlike {grantRole}, this function doesn't perform any\\n * checks on the calling account.\\n *\\n * [WARNING]\\n * ====\\n * This function should only be called from the constructor when setting\\n * up the initial roles for the system.\\n *\\n * Using this function in any other way is effectively circumventing the admin\\n * system imposed by {AccessControl}.\\n * ====\\n */\\n function _setupRole(bytes32 role, address account) internal virtual {\\n _grantRole(role, account);\\n }\\n\\n /**\\n * @dev Sets `adminRole` as ``role``'s admin role.\\n *\\n * Emits a {RoleAdminChanged} event.\\n */\\n function _setRoleAdmin(bytes32 role, bytes32 adminRole) internal virtual {\\n emit RoleAdminChanged(role, getRoleAdmin(role), adminRole);\\n _roles[role].adminRole = adminRole;\\n }\\n\\n function _grantRole(bytes32 role, address account) private {\\n if (!hasRole(role, account)) {\\n _roles[role].members[account] = true;\\n emit RoleGranted(role, account, _msgSender());\\n }\\n }\\n\\n function _revokeRole(bytes32 role, address account) private {\\n if (hasRole(role, account)) {\\n _roles[role].members[account] = false;\\n emit RoleRevoked(role, account, _msgSender());\\n }\\n }\\n uint256[49] private __gap;\\n}\\n\",\"keccak256\":\"0xa51e24ce76a2fe7a63627bb0a11e23ab04ccc6a1bb1dd3e1a61ffbe3e419de7c\",\"license\":\"MIT\"},\"@openzeppelin/contracts-upgradeable/proxy/utils/Initializable.sol\":{\"content\":\"// SPDX-License-Identifier: MIT\\n\\npragma solidity ^0.8.0;\\n\\n/**\\n * @dev This is a base contract to aid in writing upgradeable contracts, or any kind of contract that will be deployed\\n * behind a proxy. Since a proxied contract can't have a constructor, it's common to move constructor logic to an\\n * external initializer function, usually called `initialize`. It then becomes necessary to protect this initializer\\n * function so it can only be called once. The {initializer} modifier provided by this contract will have this effect.\\n *\\n * TIP: To avoid leaving the proxy in an uninitialized state, the initializer function should be called as early as\\n * possible by providing the encoded function call as the `_data` argument to {ERC1967Proxy-constructor}.\\n *\\n * CAUTION: When used with inheritance, manual care must be taken to not invoke a parent initializer twice, or to ensure\\n * that all initializers are idempotent. This is not verified automatically as constructors are by Solidity.\\n */\\nabstract contract Initializable {\\n /**\\n * @dev Indicates that the contract has been initialized.\\n */\\n bool private _initialized;\\n\\n /**\\n * @dev Indicates that the contract is in the process of being initialized.\\n */\\n bool private _initializing;\\n\\n /**\\n * @dev Modifier to protect an initializer function from being invoked twice.\\n */\\n modifier initializer() {\\n require(_initializing || !_initialized, \\\"Initializable: contract is already initialized\\\");\\n\\n bool isTopLevelCall = !_initializing;\\n if (isTopLevelCall) {\\n _initializing = true;\\n _initialized = true;\\n }\\n\\n _;\\n\\n if (isTopLevelCall) {\\n _initializing = false;\\n }\\n }\\n}\\n\",\"keccak256\":\"0x8b2abd85d0ece7e866e100e9d47ca9cbec93c87cf71a8d267b2b93eb81f7d5e9\",\"license\":\"MIT\"},\"@openzeppelin/contracts-upgradeable/utils/ContextUpgradeable.sol\":{\"content\":\"// SPDX-License-Identifier: MIT\\n\\npragma solidity ^0.8.0;\\nimport \\\"../proxy/utils/Initializable.sol\\\";\\n\\n/*\\n * @dev Provides information about the current execution context, including the\\n * sender of the transaction and its data. While these are generally available\\n * via msg.sender and msg.data, they should not be accessed in such a direct\\n * manner, since when dealing with meta-transactions the account sending and\\n * paying for execution may not be the actual sender (as far as an application\\n * is concerned).\\n *\\n * This contract is only required for intermediate, library-like contracts.\\n */\\nabstract contract ContextUpgradeable is Initializable {\\n function __Context_init() internal initializer {\\n __Context_init_unchained();\\n }\\n\\n function __Context_init_unchained() internal initializer {\\n }\\n function _msgSender() internal view virtual returns (address) {\\n return msg.sender;\\n }\\n\\n function _msgData() internal view virtual returns (bytes calldata) {\\n return msg.data;\\n }\\n uint256[50] private __gap;\\n}\\n\",\"keccak256\":\"0x828a6fb02c79a63dc5867427f355c0a9c65b4359fecadae73883154da550f6f8\",\"license\":\"MIT\"},\"@openzeppelin/contracts-upgradeable/utils/StringsUpgradeable.sol\":{\"content\":\"// SPDX-License-Identifier: MIT\\n\\npragma solidity ^0.8.0;\\n\\n/**\\n * @dev String operations.\\n */\\nlibrary StringsUpgradeable {\\n bytes16 private constant _HEX_SYMBOLS = \\\"0123456789abcdef\\\";\\n\\n /**\\n * @dev Converts a `uint256` to its ASCII `string` decimal representation.\\n */\\n function toString(uint256 value) internal pure returns (string memory) {\\n // Inspired by OraclizeAPI's implementation - MIT licence\\n // https://github.com/oraclize/ethereum-api/blob/b42146b063c7d6ee1358846c198246239e9360e8/oraclizeAPI_0.4.25.sol\\n\\n if (value == 0) {\\n return \\\"0\\\";\\n }\\n uint256 temp = value;\\n uint256 digits;\\n while (temp != 0) {\\n digits++;\\n temp /= 10;\\n }\\n bytes memory buffer = new bytes(digits);\\n while (value != 0) {\\n digits -= 1;\\n buffer[digits] = bytes1(uint8(48 + uint256(value % 10)));\\n value /= 10;\\n }\\n return string(buffer);\\n }\\n\\n /**\\n * @dev Converts a `uint256` to its ASCII `string` hexadecimal representation.\\n */\\n function toHexString(uint256 value) internal pure returns (string memory) {\\n if (value == 0) {\\n return \\\"0x00\\\";\\n }\\n uint256 temp = value;\\n uint256 length = 0;\\n while (temp != 0) {\\n length++;\\n temp >>= 8;\\n }\\n return toHexString(value, length);\\n }\\n\\n /**\\n * @dev Converts a `uint256` to its ASCII `string` hexadecimal representation with fixed length.\\n */\\n function toHexString(uint256 value, uint256 length) internal pure returns (string memory) {\\n bytes memory buffer = new bytes(2 * length + 2);\\n buffer[0] = \\\"0\\\";\\n buffer[1] = \\\"x\\\";\\n for (uint256 i = 2 * length + 1; i > 1; --i) {\\n buffer[i] = _HEX_SYMBOLS[value & 0xf];\\n value >>= 4;\\n }\\n require(value == 0, \\\"Strings: hex length insufficient\\\");\\n return string(buffer);\\n }\\n}\\n\",\"keccak256\":\"0xc7af08df3d3e818ce36f95aa879c13245772fed21b553e6033292ea4edc2a9f3\",\"license\":\"MIT\"},\"@openzeppelin/contracts-upgradeable/utils/introspection/ERC165Upgradeable.sol\":{\"content\":\"// SPDX-License-Identifier: MIT\\n\\npragma solidity ^0.8.0;\\n\\nimport \\\"./IERC165Upgradeable.sol\\\";\\nimport \\\"../../proxy/utils/Initializable.sol\\\";\\n\\n/**\\n * @dev Implementation of the {IERC165} interface.\\n *\\n * Contracts that want to implement ERC165 should inherit from this contract and override {supportsInterface} to check\\n * for the additional interface id that will be supported. For example:\\n *\\n * ```solidity\\n * function supportsInterface(bytes4 interfaceId) public view virtual override returns (bool) {\\n * return interfaceId == type(MyInterface).interfaceId || super.supportsInterface(interfaceId);\\n * }\\n * ```\\n *\\n * Alternatively, {ERC165Storage} provides an easier to use but more expensive implementation.\\n */\\nabstract contract ERC165Upgradeable is Initializable, IERC165Upgradeable {\\n function __ERC165_init() internal initializer {\\n __ERC165_init_unchained();\\n }\\n\\n function __ERC165_init_unchained() internal initializer {\\n }\\n /**\\n * @dev See {IERC165-supportsInterface}.\\n */\\n function supportsInterface(bytes4 interfaceId) public view virtual override returns (bool) {\\n return interfaceId == type(IERC165Upgradeable).interfaceId;\\n }\\n uint256[50] private __gap;\\n}\\n\",\"keccak256\":\"0x17c9c5d2d6b56527215ee7b3da6dde66b6f23f1b3d5c66cc436e753ef349a97a\",\"license\":\"MIT\"},\"@openzeppelin/contracts-upgradeable/utils/introspection/IERC165Upgradeable.sol\":{\"content\":\"// SPDX-License-Identifier: MIT\\n\\npragma solidity ^0.8.0;\\n\\n/**\\n * @dev Interface of the ERC165 standard, as defined in the\\n * https://eips.ethereum.org/EIPS/eip-165[EIP].\\n *\\n * Implementers can declare support of contract interfaces, which can then be\\n * queried by others ({ERC165Checker}).\\n *\\n * For an implementation, see {ERC165}.\\n */\\ninterface IERC165Upgradeable {\\n /**\\n * @dev Returns true if this contract implements the interface defined by\\n * `interfaceId`. See the corresponding\\n * https://eips.ethereum.org/EIPS/eip-165#how-interfaces-are-identified[EIP section]\\n * to learn more about how these ids are created.\\n *\\n * This function call must use less than 30 000 gas.\\n */\\n function supportsInterface(bytes4 interfaceId) external view returns (bool);\\n}\\n\",\"keccak256\":\"0x1c4860acd323e34a67b3e97faab9aaa55fe8e92b1dcf08b5f47f3468d58ce75c\",\"license\":\"MIT\"},\"@openzeppelin/contracts-upgradeable/utils/structs/EnumerableSetUpgradeable.sol\":{\"content\":\"// SPDX-License-Identifier: MIT\\n\\npragma solidity ^0.8.0;\\n\\n/**\\n * @dev Library for managing\\n * https://en.wikipedia.org/wiki/Set_(abstract_data_type)[sets] of primitive\\n * types.\\n *\\n * Sets have the following properties:\\n *\\n * - Elements are added, removed, and checked for existence in constant time\\n * (O(1)).\\n * - Elements are enumerated in O(n). No guarantees are made on the ordering.\\n *\\n * ```\\n * contract Example {\\n * // Add the library methods\\n * using EnumerableSet for EnumerableSet.AddressSet;\\n *\\n * // Declare a set state variable\\n * EnumerableSet.AddressSet private mySet;\\n * }\\n * ```\\n *\\n * As of v3.3.0, sets of type `bytes32` (`Bytes32Set`), `address` (`AddressSet`)\\n * and `uint256` (`UintSet`) are supported.\\n */\\nlibrary EnumerableSetUpgradeable {\\n // To implement this library for multiple types with as little code\\n // repetition as possible, we write it in terms of a generic Set type with\\n // bytes32 values.\\n // The Set implementation uses private functions, and user-facing\\n // implementations (such as AddressSet) are just wrappers around the\\n // underlying Set.\\n // This means that we can only create new EnumerableSets for types that fit\\n // in bytes32.\\n\\n struct Set {\\n // Storage of set values\\n bytes32[] _values;\\n // Position of the value in the `values` array, plus 1 because index 0\\n // means a value is not in the set.\\n mapping(bytes32 => uint256) _indexes;\\n }\\n\\n /**\\n * @dev Add a value to a set. O(1).\\n *\\n * Returns true if the value was added to the set, that is if it was not\\n * already present.\\n */\\n function _add(Set storage set, bytes32 value) private returns (bool) {\\n if (!_contains(set, value)) {\\n set._values.push(value);\\n // The value is stored at length-1, but we add 1 to all indexes\\n // and use 0 as a sentinel value\\n set._indexes[value] = set._values.length;\\n return true;\\n } else {\\n return false;\\n }\\n }\\n\\n /**\\n * @dev Removes a value from a set. O(1).\\n *\\n * Returns true if the value was removed from the set, that is if it was\\n * present.\\n */\\n function _remove(Set storage set, bytes32 value) private returns (bool) {\\n // We read and store the value's index to prevent multiple reads from the same storage slot\\n uint256 valueIndex = set._indexes[value];\\n\\n if (valueIndex != 0) {\\n // Equivalent to contains(set, value)\\n // To delete an element from the _values array in O(1), we swap the element to delete with the last one in\\n // the array, and then remove the last element (sometimes called as 'swap and pop').\\n // This modifies the order of the array, as noted in {at}.\\n\\n uint256 toDeleteIndex = valueIndex - 1;\\n uint256 lastIndex = set._values.length - 1;\\n\\n if (lastIndex != toDeleteIndex) {\\n bytes32 lastvalue = set._values[lastIndex];\\n\\n // Move the last value to the index where the value to delete is\\n set._values[toDeleteIndex] = lastvalue;\\n // Update the index for the moved value\\n set._indexes[lastvalue] = valueIndex; // Replace lastvalue's index to valueIndex\\n }\\n\\n // Delete the slot where the moved value was stored\\n set._values.pop();\\n\\n // Delete the index for the deleted slot\\n delete set._indexes[value];\\n\\n return true;\\n } else {\\n return false;\\n }\\n }\\n\\n /**\\n * @dev Returns true if the value is in the set. O(1).\\n */\\n function _contains(Set storage set, bytes32 value) private view returns (bool) {\\n return set._indexes[value] != 0;\\n }\\n\\n /**\\n * @dev Returns the number of values on the set. O(1).\\n */\\n function _length(Set storage set) private view returns (uint256) {\\n return set._values.length;\\n }\\n\\n /**\\n * @dev Returns the value stored at position `index` in the set. O(1).\\n *\\n * Note that there are no guarantees on the ordering of values inside the\\n * array, and it may change when more values are added or removed.\\n *\\n * Requirements:\\n *\\n * - `index` must be strictly less than {length}.\\n */\\n function _at(Set storage set, uint256 index) private view returns (bytes32) {\\n return set._values[index];\\n }\\n\\n // Bytes32Set\\n\\n struct Bytes32Set {\\n Set _inner;\\n }\\n\\n /**\\n * @dev Add a value to a set. O(1).\\n *\\n * Returns true if the value was added to the set, that is if it was not\\n * already present.\\n */\\n function add(Bytes32Set storage set, bytes32 value) internal returns (bool) {\\n return _add(set._inner, value);\\n }\\n\\n /**\\n * @dev Removes a value from a set. O(1).\\n *\\n * Returns true if the value was removed from the set, that is if it was\\n * present.\\n */\\n function remove(Bytes32Set storage set, bytes32 value) internal returns (bool) {\\n return _remove(set._inner, value);\\n }\\n\\n /**\\n * @dev Returns true if the value is in the set. O(1).\\n */\\n function contains(Bytes32Set storage set, bytes32 value) internal view returns (bool) {\\n return _contains(set._inner, value);\\n }\\n\\n /**\\n * @dev Returns the number of values in the set. O(1).\\n */\\n function length(Bytes32Set storage set) internal view returns (uint256) {\\n return _length(set._inner);\\n }\\n\\n /**\\n * @dev Returns the value stored at position `index` in the set. O(1).\\n *\\n * Note that there are no guarantees on the ordering of values inside the\\n * array, and it may change when more values are added or removed.\\n *\\n * Requirements:\\n *\\n * - `index` must be strictly less than {length}.\\n */\\n function at(Bytes32Set storage set, uint256 index) internal view returns (bytes32) {\\n return _at(set._inner, index);\\n }\\n\\n // AddressSet\\n\\n struct AddressSet {\\n Set _inner;\\n }\\n\\n /**\\n * @dev Add a value to a set. O(1).\\n *\\n * Returns true if the value was added to the set, that is if it was not\\n * already present.\\n */\\n function add(AddressSet storage set, address value) internal returns (bool) {\\n return _add(set._inner, bytes32(uint256(uint160(value))));\\n }\\n\\n /**\\n * @dev Removes a value from a set. O(1).\\n *\\n * Returns true if the value was removed from the set, that is if it was\\n * present.\\n */\\n function remove(AddressSet storage set, address value) internal returns (bool) {\\n return _remove(set._inner, bytes32(uint256(uint160(value))));\\n }\\n\\n /**\\n * @dev Returns true if the value is in the set. O(1).\\n */\\n function contains(AddressSet storage set, address value) internal view returns (bool) {\\n return _contains(set._inner, bytes32(uint256(uint160(value))));\\n }\\n\\n /**\\n * @dev Returns the number of values in the set. O(1).\\n */\\n function length(AddressSet storage set) internal view returns (uint256) {\\n return _length(set._inner);\\n }\\n\\n /**\\n * @dev Returns the value stored at position `index` in the set. O(1).\\n *\\n * Note that there are no guarantees on the ordering of values inside the\\n * array, and it may change when more values are added or removed.\\n *\\n * Requirements:\\n *\\n * - `index` must be strictly less than {length}.\\n */\\n function at(AddressSet storage set, uint256 index) internal view returns (address) {\\n return address(uint160(uint256(_at(set._inner, index))));\\n }\\n\\n // UintSet\\n\\n struct UintSet {\\n Set _inner;\\n }\\n\\n /**\\n * @dev Add a value to a set. O(1).\\n *\\n * Returns true if the value was added to the set, that is if it was not\\n * already present.\\n */\\n function add(UintSet storage set, uint256 value) internal returns (bool) {\\n return _add(set._inner, bytes32(value));\\n }\\n\\n /**\\n * @dev Removes a value from a set. O(1).\\n *\\n * Returns true if the value was removed from the set, that is if it was\\n * present.\\n */\\n function remove(UintSet storage set, uint256 value) internal returns (bool) {\\n return _remove(set._inner, bytes32(value));\\n }\\n\\n /**\\n * @dev Returns true if the value is in the set. O(1).\\n */\\n function contains(UintSet storage set, uint256 value) internal view returns (bool) {\\n return _contains(set._inner, bytes32(value));\\n }\\n\\n /**\\n * @dev Returns the number of values on the set. O(1).\\n */\\n function length(UintSet storage set) internal view returns (uint256) {\\n return _length(set._inner);\\n }\\n\\n /**\\n * @dev Returns the value stored at position `index` in the set. O(1).\\n *\\n * Note that there are no guarantees on the ordering of values inside the\\n * array, and it may change when more values are added or removed.\\n *\\n * Requirements:\\n *\\n * - `index` must be strictly less than {length}.\\n */\\n function at(UintSet storage set, uint256 index) internal view returns (uint256) {\\n return uint256(_at(set._inner, index));\\n }\\n}\\n\",\"keccak256\":\"0xa8eded8062871a4b146c437c8e0e5ba96b1fec87c9f303a461a727b3fd5856d9\",\"license\":\"MIT\"},\"src/Protocol.sol\":{\"content\":\"pragma solidity ^0.8.6;\\n\\nimport {AccessControlEnumerableUpgradeable} from \\\"@openzeppelin/contracts-upgradeable/access/AccessControlEnumerableUpgradeable.sol\\\";\\nimport {AccessControlUpgradeable} from \\\"@openzeppelin/contracts-upgradeable/access/AccessControlUpgradeable.sol\\\";\\nimport {Initializable} from \\\"@openzeppelin/contracts-upgradeable/proxy/utils/Initializable.sol\\\";\\n\\n/** The Protocol contract is used to look-up other Ren contracts. */\\ncontract Protocol is Initializable, AccessControlEnumerableUpgradeable {\\n event LogContractUpdated(string contractName, address indexed contractAddress, string indexed contractNameIndexed);\\n\\n mapping(string => address) internal contractMap;\\n\\n bytes32 public constant CAN_ADD_CONTRACTS = keccak256(\\\"CAN_ADD_CONTRACTS\\\");\\n bytes32 public constant CAN_UPDATE_CONTRACTS = keccak256(\\\"CAN_UPDATE_CONTRACTS\\\");\\n\\n function __Protocol_init(address adminAddress_) public initializer {\\n __AccessControlEnumerable_init();\\n _setupRole(AccessControlUpgradeable.DEFAULT_ADMIN_ROLE, adminAddress_);\\n _setupRole(CAN_ADD_CONTRACTS, adminAddress_);\\n _setupRole(CAN_UPDATE_CONTRACTS, adminAddress_);\\n }\\n\\n function addContract(string memory contractName, address contractAddress) public onlyRole(CAN_ADD_CONTRACTS) {\\n require(contractMap[contractName] == address(0x0), \\\"Protocol: contract entry already exists\\\");\\n contractMap[contractName] = contractAddress;\\n\\n emit LogContractUpdated(contractName, contractAddress, contractName);\\n }\\n\\n function updateContract(string memory contractName, address contractAddress) public onlyRole(CAN_UPDATE_CONTRACTS) {\\n contractMap[contractName] = contractAddress;\\n\\n emit LogContractUpdated(contractName, contractAddress, contractName);\\n }\\n\\n function getContract(string memory contractName) public view returns (address) {\\n return contractMap[contractName];\\n }\\n}\\n\",\"keccak256\":\"0xfebfa8577616b29dff8e9edf2c31c76d2cadccf87271de455daca22a672fafa4\"}},\"version\":1}", + "bytecode": "0x608060405234801561001057600080fd5b50612193806100206000396000f3fe608060405234801561001057600080fd5b50600436106100f55760003560e01c8063697a60b311610097578063a998e68c11610066578063a998e68c14610296578063bf5b6016146102b4578063ca15c873146102d0578063d547741f14610300576100f5565b8063697a60b3146101fc5780639010d07c1461021857806391d1485414610248578063a217fddf14610278576100f5565b806335817773116100d3578063358177731461017657806336568abe146101a657806341ef6341146101c257806361acb9f9146101e0576100f5565b806301ffc9a7146100fa578063248a9ca31461012a5780632f2ff15d1461015a575b600080fd5b610114600480360381019061010f9190611893565b61031c565b6040516101219190611b49565b60405180910390f35b610144600480360381019061013f91906117e6565b610396565b6040516101519190611b64565b60405180910390f35b610174600480360381019061016f9190611813565b6103b6565b005b610190600480360381019061018b91906118c0565b6103ea565b60405161019d9190611b2e565b60405180910390f35b6101c060048036038101906101bb9190611813565b610432565b005b6101ca610466565b6040516101d79190611b64565b60405180910390f35b6101fa60048036038101906101f591906117b9565b61048a565b005b61021660048036038101906102119190611909565b6105cd565b005b610232600480360381019061022d9190611853565b6106c5565b60405161023f9190611b2e565b60405180910390f35b610262600480360381019061025d9190611813565b6106f4565b60405161026f9190611b49565b60405180910390f35b61028061075f565b60405161028d9190611b64565b60405180910390f35b61029e610766565b6040516102ab9190611b64565b60405180910390f35b6102ce60048036038101906102c99190611909565b61078a565b005b6102ea60048036038101906102e591906117e6565b61092f565b6040516102f79190611c21565b60405180910390f35b61031a60048036038101906103159190611813565b610953565b005b60007f5a05180f000000000000000000000000000000000000000000000000000000007bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916827bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916148061038f575061038e82610987565b5b9050919050565b600060656000838152602001908152602001600020600101549050919050565b6103c08282610a01565b6103e58160976000858152602001908152602001600020610a2a90919063ffffffff16565b505050565b600060c9826040516103fc9190611add565b908152602001604051809103902060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff169050919050565b61043c8282610a5a565b6104618160976000858152602001908152602001600020610add90919063ffffffff16565b505050565b7fe49c047bb55d3ff2214c3b783f2745d7eb19d881f26fd9be3a7ad758e9c8e0ba81565b600060019054906101000a900460ff16806104b0575060008054906101000a900460ff16155b6104ef576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016104e690611be1565b60405180910390fd5b60008060019054906101000a900460ff16159050801561053f576001600060016101000a81548160ff02191690831515021790555060016000806101000a81548160ff0219169083151502179055505b610547610b0d565b6105546000801b83610c06565b61057e7fe49c047bb55d3ff2214c3b783f2745d7eb19d881f26fd9be3a7ad758e9c8e0ba83610c06565b6105a87f2aef9b77c90d04dd060c046e9227383cf5160639bb332573032d8617a34e2eb383610c06565b80156105c95760008060016101000a81548160ff0219169083151502179055505b5050565b7f2aef9b77c90d04dd060c046e9227383cf5160639bb332573032d8617a34e2eb36105ff816105fa610c3a565b610c42565b8160c9846040516106109190611add565b908152602001604051809103902060006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055508260405161066a9190611add565b60405180910390208273ffffffffffffffffffffffffffffffffffffffff167fae7f9cd1ac7fecf86fc9ddeb29c59c8f56b09339c1214feadef285d4e5b7b2b3856040516106b89190611b7f565b60405180910390a3505050565b60006106ec8260976000868152602001908152602001600020610cdf90919063ffffffff16565b905092915050565b60006065600084815260200190815260200160002060000160008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16905092915050565b6000801b81565b7f2aef9b77c90d04dd060c046e9227383cf5160639bb332573032d8617a34e2eb381565b7fe49c047bb55d3ff2214c3b783f2745d7eb19d881f26fd9be3a7ad758e9c8e0ba6107bc816107b7610c3a565b610c42565b600073ffffffffffffffffffffffffffffffffffffffff1660c9846040516107e49190611add565b908152602001604051809103902060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614610869576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161086090611bc1565b60405180910390fd5b8160c98460405161087a9190611add565b908152602001604051809103902060006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550826040516108d49190611add565b60405180910390208273ffffffffffffffffffffffffffffffffffffffff167fae7f9cd1ac7fecf86fc9ddeb29c59c8f56b09339c1214feadef285d4e5b7b2b3856040516109229190611b7f565b60405180910390a3505050565b600061094c60976000848152602001908152602001600020610cf9565b9050919050565b61095d8282610d0e565b6109828160976000858152602001908152602001600020610add90919063ffffffff16565b505050565b60007f7965db0b000000000000000000000000000000000000000000000000000000007bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916827bffffffffffffffffffffffffffffffffffffffffffffffffffffffff191614806109fa57506109f982610d37565b5b9050919050565b610a0a82610396565b610a1b81610a16610c3a565b610c42565b610a258383610da1565b505050565b6000610a52836000018373ffffffffffffffffffffffffffffffffffffffff1660001b610e82565b905092915050565b610a62610c3a565b73ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff1614610acf576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610ac690611c01565b60405180910390fd5b610ad98282610ef2565b5050565b6000610b05836000018373ffffffffffffffffffffffffffffffffffffffff1660001b610fd4565b905092915050565b600060019054906101000a900460ff1680610b33575060008054906101000a900460ff16155b610b72576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610b6990611be1565b60405180910390fd5b60008060019054906101000a900460ff161590508015610bc2576001600060016101000a81548160ff02191690831515021790555060016000806101000a81548160ff0219169083151502179055505b610bca6110e8565b610bd26111c1565b610bda61129a565b610be2611373565b8015610c035760008060016101000a81548160ff0219169083151502179055505b50565b610c10828261144c565b610c358160976000858152602001908152602001600020610a2a90919063ffffffff16565b505050565b600033905090565b610c4c82826106f4565b610cdb57610c718173ffffffffffffffffffffffffffffffffffffffff16601461145a565b610c7f8360001c602061145a565b604051602001610c90929190611af4565b6040516020818303038152906040526040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610cd29190611b7f565b60405180910390fd5b5050565b6000610cee8360000183611696565b60001c905092915050565b6000610d07826000016116c1565b9050919050565b610d1782610396565b610d2881610d23610c3a565b610c42565b610d328383610ef2565b505050565b60007f01ffc9a7000000000000000000000000000000000000000000000000000000007bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916827bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916149050919050565b610dab82826106f4565b610e7e5760016065600084815260200190815260200160002060000160008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff021916908315150217905550610e23610c3a565b73ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff16837f2f8788117e7eff1d82e926ec794901d17c78024a50270940304540a733656f0d60405160405180910390a45b5050565b6000610e8e83836116d2565b610ee7578260000182908060018154018082558091505060019003906000526020600020016000909190919091505582600001805490508360010160008481526020019081526020016000208190555060019050610eec565b600090505b92915050565b610efc82826106f4565b15610fd05760006065600084815260200190815260200160002060000160008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff021916908315150217905550610f75610c3a565b73ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff16837ff6391f5c32d9c69d2a47ea670b442974b53935d1edc7fd64eb21e047a839171b60405160405180910390a45b5050565b600080836001016000848152602001908152602001600020549050600081146110dc5760006001826110069190611d69565b905060006001866000018054905061101e9190611d69565b905081811461108d57600086600001828154811061103f5761103e611f16565b5b906000526020600020015490508087600001848154811061106357611062611f16565b5b90600052602060002001819055508387600101600083815260200190815260200160002081905550505b856000018054806110a1576110a0611ee7565b5b6001900381819060005260206000200160009055905585600101600086815260200190815260200160002060009055600193505050506110e2565b60009150505b92915050565b600060019054906101000a900460ff168061110e575060008054906101000a900460ff16155b61114d576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161114490611be1565b60405180910390fd5b60008060019054906101000a900460ff16159050801561119d576001600060016101000a81548160ff02191690831515021790555060016000806101000a81548160ff0219169083151502179055505b80156111be5760008060016101000a81548160ff0219169083151502179055505b50565b600060019054906101000a900460ff16806111e7575060008054906101000a900460ff16155b611226576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161121d90611be1565b60405180910390fd5b60008060019054906101000a900460ff161590508015611276576001600060016101000a81548160ff02191690831515021790555060016000806101000a81548160ff0219169083151502179055505b80156112975760008060016101000a81548160ff0219169083151502179055505b50565b600060019054906101000a900460ff16806112c0575060008054906101000a900460ff16155b6112ff576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016112f690611be1565b60405180910390fd5b60008060019054906101000a900460ff16159050801561134f576001600060016101000a81548160ff02191690831515021790555060016000806101000a81548160ff0219169083151502179055505b80156113705760008060016101000a81548160ff0219169083151502179055505b50565b600060019054906101000a900460ff1680611399575060008054906101000a900460ff16155b6113d8576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016113cf90611be1565b60405180910390fd5b60008060019054906101000a900460ff161590508015611428576001600060016101000a81548160ff02191690831515021790555060016000806101000a81548160ff0219169083151502179055505b80156114495760008060016101000a81548160ff0219169083151502179055505b50565b6114568282610da1565b5050565b60606000600283600261146d9190611d0f565b6114779190611cb9565b67ffffffffffffffff8111156114905761148f611f45565b5b6040519080825280601f01601f1916602001820160405280156114c25781602001600182028036833780820191505090505b5090507f3000000000000000000000000000000000000000000000000000000000000000816000815181106114fa576114f9611f16565b5b60200101907effffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916908160001a9053507f78000000000000000000000000000000000000000000000000000000000000008160018151811061155e5761155d611f16565b5b60200101907effffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916908160001a9053506000600184600261159e9190611d0f565b6115a89190611cb9565b90505b6001811115611648577f3031323334353637383961626364656600000000000000000000000000000000600f8616601081106115ea576115e9611f16565b5b1a60f81b82828151811061160157611600611f16565b5b60200101907effffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916908160001a905350600485901c94508061164190611e5d565b90506115ab565b506000841461168c576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161168390611ba1565b60405180910390fd5b8091505092915050565b60008260000182815481106116ae576116ad611f16565b5b9060005260206000200154905092915050565b600081600001805490509050919050565b600080836001016000848152602001908152602001600020541415905092915050565b600061170861170384611c61565b611c3c565b90508281526020810184848401111561172457611723611f79565b5b61172f848285611e1b565b509392505050565b60008135905061174681612101565b92915050565b60008135905061175b81612118565b92915050565b6000813590506117708161212f565b92915050565b600082601f83011261178b5761178a611f74565b5b813561179b8482602086016116f5565b91505092915050565b6000813590506117b381612146565b92915050565b6000602082840312156117cf576117ce611f83565b5b60006117dd84828501611737565b91505092915050565b6000602082840312156117fc576117fb611f83565b5b600061180a8482850161174c565b91505092915050565b6000806040838503121561182a57611829611f83565b5b60006118388582860161174c565b925050602061184985828601611737565b9150509250929050565b6000806040838503121561186a57611869611f83565b5b60006118788582860161174c565b9250506020611889858286016117a4565b9150509250929050565b6000602082840312156118a9576118a8611f83565b5b60006118b784828501611761565b91505092915050565b6000602082840312156118d6576118d5611f83565b5b600082013567ffffffffffffffff8111156118f4576118f3611f7e565b5b61190084828501611776565b91505092915050565b600080604083850312156119205761191f611f83565b5b600083013567ffffffffffffffff81111561193e5761193d611f7e565b5b61194a85828601611776565b925050602061195b85828601611737565b9150509250929050565b61196e81611d9d565b82525050565b61197d81611daf565b82525050565b61198c81611dbb565b82525050565b600061199d82611c92565b6119a78185611c9d565b93506119b7818560208601611e2a565b6119c081611f88565b840191505092915050565b60006119d682611c92565b6119e08185611cae565b93506119f0818560208601611e2a565b80840191505092915050565b6000611a09602083611c9d565b9150611a1482611f99565b602082019050919050565b6000611a2c602783611c9d565b9150611a3782611fc2565b604082019050919050565b6000611a4f602e83611c9d565b9150611a5a82612011565b604082019050919050565b6000611a72601783611cae565b9150611a7d82612060565b601782019050919050565b6000611a95601183611cae565b9150611aa082612089565b601182019050919050565b6000611ab8602f83611c9d565b9150611ac3826120b2565b604082019050919050565b611ad781611e11565b82525050565b6000611ae982846119cb565b915081905092915050565b6000611aff82611a65565b9150611b0b82856119cb565b9150611b1682611a88565b9150611b2282846119cb565b91508190509392505050565b6000602082019050611b436000830184611965565b92915050565b6000602082019050611b5e6000830184611974565b92915050565b6000602082019050611b796000830184611983565b92915050565b60006020820190508181036000830152611b998184611992565b905092915050565b60006020820190508181036000830152611bba816119fc565b9050919050565b60006020820190508181036000830152611bda81611a1f565b9050919050565b60006020820190508181036000830152611bfa81611a42565b9050919050565b60006020820190508181036000830152611c1a81611aab565b9050919050565b6000602082019050611c366000830184611ace565b92915050565b6000611c46611c57565b9050611c528282611e87565b919050565b6000604051905090565b600067ffffffffffffffff821115611c7c57611c7b611f45565b5b611c8582611f88565b9050602081019050919050565b600081519050919050565b600082825260208201905092915050565b600081905092915050565b6000611cc482611e11565b9150611ccf83611e11565b9250827fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff03821115611d0457611d03611eb8565b5b828201905092915050565b6000611d1a82611e11565b9150611d2583611e11565b9250817fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0483118215151615611d5e57611d5d611eb8565b5b828202905092915050565b6000611d7482611e11565b9150611d7f83611e11565b925082821015611d9257611d91611eb8565b5b828203905092915050565b6000611da882611df1565b9050919050565b60008115159050919050565b6000819050919050565b60007fffffffff0000000000000000000000000000000000000000000000000000000082169050919050565b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b6000819050919050565b82818337600083830152505050565b60005b83811015611e48578082015181840152602081019050611e2d565b83811115611e57576000848401525b50505050565b6000611e6882611e11565b91506000821415611e7c57611e7b611eb8565b5b600182039050919050565b611e9082611f88565b810181811067ffffffffffffffff82111715611eaf57611eae611f45565b5b80604052505050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052603160045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b600080fd5b600080fd5b600080fd5b600080fd5b6000601f19601f8301169050919050565b7f537472696e67733a20686578206c656e67746820696e73756666696369656e74600082015250565b7f50726f746f636f6c3a20636f6e747261637420656e74727920616c726561647960008201527f2065786973747300000000000000000000000000000000000000000000000000602082015250565b7f496e697469616c697a61626c653a20636f6e747261637420697320616c72656160008201527f647920696e697469616c697a6564000000000000000000000000000000000000602082015250565b7f416363657373436f6e74726f6c3a206163636f756e7420000000000000000000600082015250565b7f206973206d697373696e6720726f6c6520000000000000000000000000000000600082015250565b7f416363657373436f6e74726f6c3a2063616e206f6e6c792072656e6f756e636560008201527f20726f6c657320666f722073656c660000000000000000000000000000000000602082015250565b61210a81611d9d565b811461211557600080fd5b50565b61212181611dbb565b811461212c57600080fd5b50565b61213881611dc5565b811461214357600080fd5b50565b61214f81611e11565b811461215a57600080fd5b5056fea2646970667358221220fcd5e8c37d7a2e2d0f5f26e6e865a55c0deac8f5aef287430e29acfa4a6515fc64736f6c63430008060033", + "deployedBytecode": "0x608060405234801561001057600080fd5b50600436106100f55760003560e01c8063697a60b311610097578063a998e68c11610066578063a998e68c14610296578063bf5b6016146102b4578063ca15c873146102d0578063d547741f14610300576100f5565b8063697a60b3146101fc5780639010d07c1461021857806391d1485414610248578063a217fddf14610278576100f5565b806335817773116100d3578063358177731461017657806336568abe146101a657806341ef6341146101c257806361acb9f9146101e0576100f5565b806301ffc9a7146100fa578063248a9ca31461012a5780632f2ff15d1461015a575b600080fd5b610114600480360381019061010f9190611893565b61031c565b6040516101219190611b49565b60405180910390f35b610144600480360381019061013f91906117e6565b610396565b6040516101519190611b64565b60405180910390f35b610174600480360381019061016f9190611813565b6103b6565b005b610190600480360381019061018b91906118c0565b6103ea565b60405161019d9190611b2e565b60405180910390f35b6101c060048036038101906101bb9190611813565b610432565b005b6101ca610466565b6040516101d79190611b64565b60405180910390f35b6101fa60048036038101906101f591906117b9565b61048a565b005b61021660048036038101906102119190611909565b6105cd565b005b610232600480360381019061022d9190611853565b6106c5565b60405161023f9190611b2e565b60405180910390f35b610262600480360381019061025d9190611813565b6106f4565b60405161026f9190611b49565b60405180910390f35b61028061075f565b60405161028d9190611b64565b60405180910390f35b61029e610766565b6040516102ab9190611b64565b60405180910390f35b6102ce60048036038101906102c99190611909565b61078a565b005b6102ea60048036038101906102e591906117e6565b61092f565b6040516102f79190611c21565b60405180910390f35b61031a60048036038101906103159190611813565b610953565b005b60007f5a05180f000000000000000000000000000000000000000000000000000000007bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916827bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916148061038f575061038e82610987565b5b9050919050565b600060656000838152602001908152602001600020600101549050919050565b6103c08282610a01565b6103e58160976000858152602001908152602001600020610a2a90919063ffffffff16565b505050565b600060c9826040516103fc9190611add565b908152602001604051809103902060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff169050919050565b61043c8282610a5a565b6104618160976000858152602001908152602001600020610add90919063ffffffff16565b505050565b7fe49c047bb55d3ff2214c3b783f2745d7eb19d881f26fd9be3a7ad758e9c8e0ba81565b600060019054906101000a900460ff16806104b0575060008054906101000a900460ff16155b6104ef576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016104e690611be1565b60405180910390fd5b60008060019054906101000a900460ff16159050801561053f576001600060016101000a81548160ff02191690831515021790555060016000806101000a81548160ff0219169083151502179055505b610547610b0d565b6105546000801b83610c06565b61057e7fe49c047bb55d3ff2214c3b783f2745d7eb19d881f26fd9be3a7ad758e9c8e0ba83610c06565b6105a87f2aef9b77c90d04dd060c046e9227383cf5160639bb332573032d8617a34e2eb383610c06565b80156105c95760008060016101000a81548160ff0219169083151502179055505b5050565b7f2aef9b77c90d04dd060c046e9227383cf5160639bb332573032d8617a34e2eb36105ff816105fa610c3a565b610c42565b8160c9846040516106109190611add565b908152602001604051809103902060006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055508260405161066a9190611add565b60405180910390208273ffffffffffffffffffffffffffffffffffffffff167fae7f9cd1ac7fecf86fc9ddeb29c59c8f56b09339c1214feadef285d4e5b7b2b3856040516106b89190611b7f565b60405180910390a3505050565b60006106ec8260976000868152602001908152602001600020610cdf90919063ffffffff16565b905092915050565b60006065600084815260200190815260200160002060000160008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16905092915050565b6000801b81565b7f2aef9b77c90d04dd060c046e9227383cf5160639bb332573032d8617a34e2eb381565b7fe49c047bb55d3ff2214c3b783f2745d7eb19d881f26fd9be3a7ad758e9c8e0ba6107bc816107b7610c3a565b610c42565b600073ffffffffffffffffffffffffffffffffffffffff1660c9846040516107e49190611add565b908152602001604051809103902060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614610869576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161086090611bc1565b60405180910390fd5b8160c98460405161087a9190611add565b908152602001604051809103902060006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550826040516108d49190611add565b60405180910390208273ffffffffffffffffffffffffffffffffffffffff167fae7f9cd1ac7fecf86fc9ddeb29c59c8f56b09339c1214feadef285d4e5b7b2b3856040516109229190611b7f565b60405180910390a3505050565b600061094c60976000848152602001908152602001600020610cf9565b9050919050565b61095d8282610d0e565b6109828160976000858152602001908152602001600020610add90919063ffffffff16565b505050565b60007f7965db0b000000000000000000000000000000000000000000000000000000007bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916827bffffffffffffffffffffffffffffffffffffffffffffffffffffffff191614806109fa57506109f982610d37565b5b9050919050565b610a0a82610396565b610a1b81610a16610c3a565b610c42565b610a258383610da1565b505050565b6000610a52836000018373ffffffffffffffffffffffffffffffffffffffff1660001b610e82565b905092915050565b610a62610c3a565b73ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff1614610acf576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610ac690611c01565b60405180910390fd5b610ad98282610ef2565b5050565b6000610b05836000018373ffffffffffffffffffffffffffffffffffffffff1660001b610fd4565b905092915050565b600060019054906101000a900460ff1680610b33575060008054906101000a900460ff16155b610b72576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610b6990611be1565b60405180910390fd5b60008060019054906101000a900460ff161590508015610bc2576001600060016101000a81548160ff02191690831515021790555060016000806101000a81548160ff0219169083151502179055505b610bca6110e8565b610bd26111c1565b610bda61129a565b610be2611373565b8015610c035760008060016101000a81548160ff0219169083151502179055505b50565b610c10828261144c565b610c358160976000858152602001908152602001600020610a2a90919063ffffffff16565b505050565b600033905090565b610c4c82826106f4565b610cdb57610c718173ffffffffffffffffffffffffffffffffffffffff16601461145a565b610c7f8360001c602061145a565b604051602001610c90929190611af4565b6040516020818303038152906040526040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610cd29190611b7f565b60405180910390fd5b5050565b6000610cee8360000183611696565b60001c905092915050565b6000610d07826000016116c1565b9050919050565b610d1782610396565b610d2881610d23610c3a565b610c42565b610d328383610ef2565b505050565b60007f01ffc9a7000000000000000000000000000000000000000000000000000000007bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916827bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916149050919050565b610dab82826106f4565b610e7e5760016065600084815260200190815260200160002060000160008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff021916908315150217905550610e23610c3a565b73ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff16837f2f8788117e7eff1d82e926ec794901d17c78024a50270940304540a733656f0d60405160405180910390a45b5050565b6000610e8e83836116d2565b610ee7578260000182908060018154018082558091505060019003906000526020600020016000909190919091505582600001805490508360010160008481526020019081526020016000208190555060019050610eec565b600090505b92915050565b610efc82826106f4565b15610fd05760006065600084815260200190815260200160002060000160008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff021916908315150217905550610f75610c3a565b73ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff16837ff6391f5c32d9c69d2a47ea670b442974b53935d1edc7fd64eb21e047a839171b60405160405180910390a45b5050565b600080836001016000848152602001908152602001600020549050600081146110dc5760006001826110069190611d69565b905060006001866000018054905061101e9190611d69565b905081811461108d57600086600001828154811061103f5761103e611f16565b5b906000526020600020015490508087600001848154811061106357611062611f16565b5b90600052602060002001819055508387600101600083815260200190815260200160002081905550505b856000018054806110a1576110a0611ee7565b5b6001900381819060005260206000200160009055905585600101600086815260200190815260200160002060009055600193505050506110e2565b60009150505b92915050565b600060019054906101000a900460ff168061110e575060008054906101000a900460ff16155b61114d576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161114490611be1565b60405180910390fd5b60008060019054906101000a900460ff16159050801561119d576001600060016101000a81548160ff02191690831515021790555060016000806101000a81548160ff0219169083151502179055505b80156111be5760008060016101000a81548160ff0219169083151502179055505b50565b600060019054906101000a900460ff16806111e7575060008054906101000a900460ff16155b611226576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161121d90611be1565b60405180910390fd5b60008060019054906101000a900460ff161590508015611276576001600060016101000a81548160ff02191690831515021790555060016000806101000a81548160ff0219169083151502179055505b80156112975760008060016101000a81548160ff0219169083151502179055505b50565b600060019054906101000a900460ff16806112c0575060008054906101000a900460ff16155b6112ff576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016112f690611be1565b60405180910390fd5b60008060019054906101000a900460ff16159050801561134f576001600060016101000a81548160ff02191690831515021790555060016000806101000a81548160ff0219169083151502179055505b80156113705760008060016101000a81548160ff0219169083151502179055505b50565b600060019054906101000a900460ff1680611399575060008054906101000a900460ff16155b6113d8576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016113cf90611be1565b60405180910390fd5b60008060019054906101000a900460ff161590508015611428576001600060016101000a81548160ff02191690831515021790555060016000806101000a81548160ff0219169083151502179055505b80156114495760008060016101000a81548160ff0219169083151502179055505b50565b6114568282610da1565b5050565b60606000600283600261146d9190611d0f565b6114779190611cb9565b67ffffffffffffffff8111156114905761148f611f45565b5b6040519080825280601f01601f1916602001820160405280156114c25781602001600182028036833780820191505090505b5090507f3000000000000000000000000000000000000000000000000000000000000000816000815181106114fa576114f9611f16565b5b60200101907effffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916908160001a9053507f78000000000000000000000000000000000000000000000000000000000000008160018151811061155e5761155d611f16565b5b60200101907effffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916908160001a9053506000600184600261159e9190611d0f565b6115a89190611cb9565b90505b6001811115611648577f3031323334353637383961626364656600000000000000000000000000000000600f8616601081106115ea576115e9611f16565b5b1a60f81b82828151811061160157611600611f16565b5b60200101907effffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916908160001a905350600485901c94508061164190611e5d565b90506115ab565b506000841461168c576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161168390611ba1565b60405180910390fd5b8091505092915050565b60008260000182815481106116ae576116ad611f16565b5b9060005260206000200154905092915050565b600081600001805490509050919050565b600080836001016000848152602001908152602001600020541415905092915050565b600061170861170384611c61565b611c3c565b90508281526020810184848401111561172457611723611f79565b5b61172f848285611e1b565b509392505050565b60008135905061174681612101565b92915050565b60008135905061175b81612118565b92915050565b6000813590506117708161212f565b92915050565b600082601f83011261178b5761178a611f74565b5b813561179b8482602086016116f5565b91505092915050565b6000813590506117b381612146565b92915050565b6000602082840312156117cf576117ce611f83565b5b60006117dd84828501611737565b91505092915050565b6000602082840312156117fc576117fb611f83565b5b600061180a8482850161174c565b91505092915050565b6000806040838503121561182a57611829611f83565b5b60006118388582860161174c565b925050602061184985828601611737565b9150509250929050565b6000806040838503121561186a57611869611f83565b5b60006118788582860161174c565b9250506020611889858286016117a4565b9150509250929050565b6000602082840312156118a9576118a8611f83565b5b60006118b784828501611761565b91505092915050565b6000602082840312156118d6576118d5611f83565b5b600082013567ffffffffffffffff8111156118f4576118f3611f7e565b5b61190084828501611776565b91505092915050565b600080604083850312156119205761191f611f83565b5b600083013567ffffffffffffffff81111561193e5761193d611f7e565b5b61194a85828601611776565b925050602061195b85828601611737565b9150509250929050565b61196e81611d9d565b82525050565b61197d81611daf565b82525050565b61198c81611dbb565b82525050565b600061199d82611c92565b6119a78185611c9d565b93506119b7818560208601611e2a565b6119c081611f88565b840191505092915050565b60006119d682611c92565b6119e08185611cae565b93506119f0818560208601611e2a565b80840191505092915050565b6000611a09602083611c9d565b9150611a1482611f99565b602082019050919050565b6000611a2c602783611c9d565b9150611a3782611fc2565b604082019050919050565b6000611a4f602e83611c9d565b9150611a5a82612011565b604082019050919050565b6000611a72601783611cae565b9150611a7d82612060565b601782019050919050565b6000611a95601183611cae565b9150611aa082612089565b601182019050919050565b6000611ab8602f83611c9d565b9150611ac3826120b2565b604082019050919050565b611ad781611e11565b82525050565b6000611ae982846119cb565b915081905092915050565b6000611aff82611a65565b9150611b0b82856119cb565b9150611b1682611a88565b9150611b2282846119cb565b91508190509392505050565b6000602082019050611b436000830184611965565b92915050565b6000602082019050611b5e6000830184611974565b92915050565b6000602082019050611b796000830184611983565b92915050565b60006020820190508181036000830152611b998184611992565b905092915050565b60006020820190508181036000830152611bba816119fc565b9050919050565b60006020820190508181036000830152611bda81611a1f565b9050919050565b60006020820190508181036000830152611bfa81611a42565b9050919050565b60006020820190508181036000830152611c1a81611aab565b9050919050565b6000602082019050611c366000830184611ace565b92915050565b6000611c46611c57565b9050611c528282611e87565b919050565b6000604051905090565b600067ffffffffffffffff821115611c7c57611c7b611f45565b5b611c8582611f88565b9050602081019050919050565b600081519050919050565b600082825260208201905092915050565b600081905092915050565b6000611cc482611e11565b9150611ccf83611e11565b9250827fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff03821115611d0457611d03611eb8565b5b828201905092915050565b6000611d1a82611e11565b9150611d2583611e11565b9250817fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0483118215151615611d5e57611d5d611eb8565b5b828202905092915050565b6000611d7482611e11565b9150611d7f83611e11565b925082821015611d9257611d91611eb8565b5b828203905092915050565b6000611da882611df1565b9050919050565b60008115159050919050565b6000819050919050565b60007fffffffff0000000000000000000000000000000000000000000000000000000082169050919050565b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b6000819050919050565b82818337600083830152505050565b60005b83811015611e48578082015181840152602081019050611e2d565b83811115611e57576000848401525b50505050565b6000611e6882611e11565b91506000821415611e7c57611e7b611eb8565b5b600182039050919050565b611e9082611f88565b810181811067ffffffffffffffff82111715611eaf57611eae611f45565b5b80604052505050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052603160045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b600080fd5b600080fd5b600080fd5b600080fd5b6000601f19601f8301169050919050565b7f537472696e67733a20686578206c656e67746820696e73756666696369656e74600082015250565b7f50726f746f636f6c3a20636f6e747261637420656e74727920616c726561647960008201527f2065786973747300000000000000000000000000000000000000000000000000602082015250565b7f496e697469616c697a61626c653a20636f6e747261637420697320616c72656160008201527f647920696e697469616c697a6564000000000000000000000000000000000000602082015250565b7f416363657373436f6e74726f6c3a206163636f756e7420000000000000000000600082015250565b7f206973206d697373696e6720726f6c6520000000000000000000000000000000600082015250565b7f416363657373436f6e74726f6c3a2063616e206f6e6c792072656e6f756e636560008201527f20726f6c657320666f722073656c660000000000000000000000000000000000602082015250565b61210a81611d9d565b811461211557600080fd5b50565b61212181611dbb565b811461212c57600080fd5b50565b61213881611dc5565b811461214357600080fd5b50565b61214f81611e11565b811461215a57600080fd5b5056fea2646970667358221220fcd5e8c37d7a2e2d0f5f26e6e865a55c0deac8f5aef287430e29acfa4a6515fc64736f6c63430008060033", + "devdoc": { + "kind": "dev", + "methods": { + "getRoleAdmin(bytes32)": { + "details": "Returns the admin role that controls `role`. See {grantRole} and {revokeRole}. To change a role's admin, use {_setRoleAdmin}." + }, + "getRoleMember(bytes32,uint256)": { + "details": "Returns one of the accounts that have `role`. `index` must be a value between 0 and {getRoleMemberCount}, non-inclusive. Role bearers are not sorted in any particular way, and their ordering may change at any point. WARNING: When using {getRoleMember} and {getRoleMemberCount}, make sure you perform all queries on the same block. See the following https://forum.openzeppelin.com/t/iterating-over-elements-on-enumerableset-in-openzeppelin-contracts/2296[forum post] for more information." + }, + "getRoleMemberCount(bytes32)": { + "details": "Returns the number of accounts that have `role`. Can be used together with {getRoleMember} to enumerate all bearers of a role." + }, + "grantRole(bytes32,address)": { + "details": "Overload {grantRole} to track enumerable memberships" + }, + "hasRole(bytes32,address)": { + "details": "Returns `true` if `account` has been granted `role`." + }, + "renounceRole(bytes32,address)": { + "details": "Overload {renounceRole} to track enumerable memberships" + }, + "revokeRole(bytes32,address)": { + "details": "Overload {revokeRole} to track enumerable memberships" + }, + "supportsInterface(bytes4)": { + "details": "See {IERC165-supportsInterface}." + } + }, + "version": 1 + }, + "userdoc": { + "kind": "user", + "methods": {}, + "notice": "The Protocol contract is used to look-up other Ren contracts. ", + "version": 1 + }, + "storageLayout": { + "storage": [ + { + "astId": 622, + "contract": "src/Protocol.sol:Protocol", + "label": "_initialized", + "offset": 0, + "slot": "0", + "type": "t_bool" + }, + { + "astId": 625, + "contract": "src/Protocol.sol:Protocol", + "label": "_initializing", + "offset": 1, + "slot": "0", + "type": "t_bool" + }, + { + "astId": 704, + "contract": "src/Protocol.sol:Protocol", + "label": "__gap", + "offset": 0, + "slot": "1", + "type": "t_array(t_uint256)50_storage" + }, + { + "astId": 953, + "contract": "src/Protocol.sol:Protocol", + "label": "__gap", + "offset": 0, + "slot": "51", + "type": "t_array(t_uint256)50_storage" + }, + { + "astId": 307, + "contract": "src/Protocol.sol:Protocol", + "label": "_roles", + "offset": 0, + "slot": "101", + "type": "t_mapping(t_bytes32,t_struct(RoleData)302_storage)" + }, + { + "astId": 615, + "contract": "src/Protocol.sol:Protocol", + "label": "__gap", + "offset": 0, + "slot": "102", + "type": "t_array(t_uint256)49_storage" + }, + { + "astId": 62, + "contract": "src/Protocol.sol:Protocol", + "label": "_roleMembers", + "offset": 0, + "slot": "151", + "type": "t_mapping(t_bytes32,t_struct(AddressSet)1248_storage)" + }, + { + "astId": 219, + "contract": "src/Protocol.sol:Protocol", + "label": "__gap", + "offset": 0, + "slot": "152", + "type": "t_array(t_uint256)49_storage" + }, + { + "astId": 3162, + "contract": "src/Protocol.sol:Protocol", + "label": "contractMap", + "offset": 0, + "slot": "201", + "type": "t_mapping(t_string_memory_ptr,t_address)" + } + ], + "types": { + "t_address": { + "encoding": "inplace", + "label": "address", + "numberOfBytes": "20" + }, + "t_array(t_bytes32)dyn_storage": { + "base": "t_bytes32", + "encoding": "dynamic_array", + "label": "bytes32[]", + "numberOfBytes": "32" + }, + "t_array(t_uint256)49_storage": { + "base": "t_uint256", + "encoding": "inplace", + "label": "uint256[49]", + "numberOfBytes": "1568" + }, + "t_array(t_uint256)50_storage": { + "base": "t_uint256", + "encoding": "inplace", + "label": "uint256[50]", + "numberOfBytes": "1600" + }, + "t_bool": { + "encoding": "inplace", + "label": "bool", + "numberOfBytes": "1" + }, + "t_bytes32": { + "encoding": "inplace", + "label": "bytes32", + "numberOfBytes": "32" + }, + "t_mapping(t_address,t_bool)": { + "encoding": "mapping", + "key": "t_address", + "label": "mapping(address => bool)", + "numberOfBytes": "32", + "value": "t_bool" + }, + "t_mapping(t_bytes32,t_struct(AddressSet)1248_storage)": { + "encoding": "mapping", + "key": "t_bytes32", + "label": "mapping(bytes32 => struct EnumerableSetUpgradeable.AddressSet)", + "numberOfBytes": "32", + "value": "t_struct(AddressSet)1248_storage" + }, + "t_mapping(t_bytes32,t_struct(RoleData)302_storage)": { + "encoding": "mapping", + "key": "t_bytes32", + "label": "mapping(bytes32 => struct AccessControlUpgradeable.RoleData)", + "numberOfBytes": "32", + "value": "t_struct(RoleData)302_storage" + }, + "t_mapping(t_bytes32,t_uint256)": { + "encoding": "mapping", + "key": "t_bytes32", + "label": "mapping(bytes32 => uint256)", + "numberOfBytes": "32", + "value": "t_uint256" + }, + "t_mapping(t_string_memory_ptr,t_address)": { + "encoding": "mapping", + "key": "t_string_memory_ptr", + "label": "mapping(string => address)", + "numberOfBytes": "32", + "value": "t_address" + }, + "t_string_memory_ptr": { + "encoding": "bytes", + "label": "string", + "numberOfBytes": "32" + }, + "t_struct(AddressSet)1248_storage": { + "encoding": "inplace", + "label": "struct EnumerableSetUpgradeable.AddressSet", + "members": [ + { + "astId": 1247, + "contract": "src/Protocol.sol:Protocol", + "label": "_inner", + "offset": 0, + "slot": "0", + "type": "t_struct(Set)977_storage" + } + ], + "numberOfBytes": "64" + }, + "t_struct(RoleData)302_storage": { + "encoding": "inplace", + "label": "struct AccessControlUpgradeable.RoleData", + "members": [ + { + "astId": 299, + "contract": "src/Protocol.sol:Protocol", + "label": "members", + "offset": 0, + "slot": "0", + "type": "t_mapping(t_address,t_bool)" + }, + { + "astId": 301, + "contract": "src/Protocol.sol:Protocol", + "label": "adminRole", + "offset": 0, + "slot": "1", + "type": "t_bytes32" + } + ], + "numberOfBytes": "64" + }, + "t_struct(Set)977_storage": { + "encoding": "inplace", + "label": "struct EnumerableSetUpgradeable.Set", + "members": [ + { + "astId": 972, + "contract": "src/Protocol.sol:Protocol", + "label": "_values", + "offset": 0, + "slot": "0", + "type": "t_array(t_bytes32)dyn_storage" + }, + { + "astId": 976, + "contract": "src/Protocol.sol:Protocol", + "label": "_indexes", + "offset": 0, + "slot": "1", + "type": "t_mapping(t_bytes32,t_uint256)" + } + ], + "numberOfBytes": "64" + }, + "t_uint256": { + "encoding": "inplace", + "label": "uint256", + "numberOfBytes": "32" + } + } + } +} \ No newline at end of file diff --git a/deployments/kovan/solcInputs/1d1b33ebee20e0af945d784a55de102c.json b/deployments/kovan/solcInputs/1d1b33ebee20e0af945d784a55de102c.json new file mode 100644 index 00000000..d3a32220 --- /dev/null +++ b/deployments/kovan/solcInputs/1d1b33ebee20e0af945d784a55de102c.json @@ -0,0 +1,104 @@ +{ + "language": "Solidity", + "sources": { + "src/Bindings.sol": { + "content": "pragma solidity ^0.8.6;\n\nimport \"./RenProxyAdmin.sol\";\n\n/// @notice Bindings imports all of the contracts for generating bindings.\n/* solium-disable-next-line no-empty-blocks */\ncontract Bindings {\n\n}\n" + }, + "src/RenProxyAdmin.sol": { + "content": "// SPDX-License-Identifier: MIT\n\npragma solidity ^0.8.6;\n\nimport {ProxyAdmin} from \"@openzeppelin/contracts/proxy/transparent/ProxyAdmin.sol\";\n\ncontract RenProxyAdmin is ProxyAdmin {}\n" + }, + "@openzeppelin/contracts/proxy/transparent/ProxyAdmin.sol": { + "content": "// SPDX-License-Identifier: MIT\n\npragma solidity ^0.8.0;\n\nimport \"./TransparentUpgradeableProxy.sol\";\nimport \"../../access/Ownable.sol\";\n\n/**\n * @dev This is an auxiliary contract meant to be assigned as the admin of a {TransparentUpgradeableProxy}. For an\n * explanation of why you would want to use this see the documentation for {TransparentUpgradeableProxy}.\n */\ncontract ProxyAdmin is Ownable {\n /**\n * @dev Returns the current implementation of `proxy`.\n *\n * Requirements:\n *\n * - This contract must be the admin of `proxy`.\n */\n function getProxyImplementation(TransparentUpgradeableProxy proxy) public view virtual returns (address) {\n // We need to manually run the static call since the getter cannot be flagged as view\n // bytes4(keccak256(\"implementation()\")) == 0x5c60da1b\n (bool success, bytes memory returndata) = address(proxy).staticcall(hex\"5c60da1b\");\n require(success);\n return abi.decode(returndata, (address));\n }\n\n /**\n * @dev Returns the current admin of `proxy`.\n *\n * Requirements:\n *\n * - This contract must be the admin of `proxy`.\n */\n function getProxyAdmin(TransparentUpgradeableProxy proxy) public view virtual returns (address) {\n // We need to manually run the static call since the getter cannot be flagged as view\n // bytes4(keccak256(\"admin()\")) == 0xf851a440\n (bool success, bytes memory returndata) = address(proxy).staticcall(hex\"f851a440\");\n require(success);\n return abi.decode(returndata, (address));\n }\n\n /**\n * @dev Changes the admin of `proxy` to `newAdmin`.\n *\n * Requirements:\n *\n * - This contract must be the current admin of `proxy`.\n */\n function changeProxyAdmin(TransparentUpgradeableProxy proxy, address newAdmin) public virtual onlyOwner {\n proxy.changeAdmin(newAdmin);\n }\n\n /**\n * @dev Upgrades `proxy` to `implementation`. See {TransparentUpgradeableProxy-upgradeTo}.\n *\n * Requirements:\n *\n * - This contract must be the admin of `proxy`.\n */\n function upgrade(TransparentUpgradeableProxy proxy, address implementation) public virtual onlyOwner {\n proxy.upgradeTo(implementation);\n }\n\n /**\n * @dev Upgrades `proxy` to `implementation` and calls a function on the new implementation. See\n * {TransparentUpgradeableProxy-upgradeToAndCall}.\n *\n * Requirements:\n *\n * - This contract must be the admin of `proxy`.\n */\n function upgradeAndCall(\n TransparentUpgradeableProxy proxy,\n address implementation,\n bytes memory data\n ) public payable virtual onlyOwner {\n proxy.upgradeToAndCall{value: msg.value}(implementation, data);\n }\n}\n" + }, + "@openzeppelin/contracts/proxy/transparent/TransparentUpgradeableProxy.sol": { + "content": "// SPDX-License-Identifier: MIT\n\npragma solidity ^0.8.0;\n\nimport \"../ERC1967/ERC1967Proxy.sol\";\n\n/**\n * @dev This contract implements a proxy that is upgradeable by an admin.\n *\n * To avoid https://medium.com/nomic-labs-blog/malicious-backdoors-in-ethereum-proxies-62629adf3357[proxy selector\n * clashing], which can potentially be used in an attack, this contract uses the\n * https://blog.openzeppelin.com/the-transparent-proxy-pattern/[transparent proxy pattern]. This pattern implies two\n * things that go hand in hand:\n *\n * 1. If any account other than the admin calls the proxy, the call will be forwarded to the implementation, even if\n * that call matches one of the admin functions exposed by the proxy itself.\n * 2. If the admin calls the proxy, it can access the admin functions, but its calls will never be forwarded to the\n * implementation. If the admin tries to call a function on the implementation it will fail with an error that says\n * \"admin cannot fallback to proxy target\".\n *\n * These properties mean that the admin account can only be used for admin actions like upgrading the proxy or changing\n * the admin, so it's best if it's a dedicated account that is not used for anything else. This will avoid headaches due\n * to sudden errors when trying to call a function from the proxy implementation.\n *\n * Our recommendation is for the dedicated account to be an instance of the {ProxyAdmin} contract. If set up this way,\n * you should think of the `ProxyAdmin` instance as the real administrative interface of your proxy.\n */\ncontract TransparentUpgradeableProxy is ERC1967Proxy {\n /**\n * @dev Initializes an upgradeable proxy managed by `_admin`, backed by the implementation at `_logic`, and\n * optionally initialized with `_data` as explained in {ERC1967Proxy-constructor}.\n */\n constructor(\n address _logic,\n address admin_,\n bytes memory _data\n ) payable ERC1967Proxy(_logic, _data) {\n assert(_ADMIN_SLOT == bytes32(uint256(keccak256(\"eip1967.proxy.admin\")) - 1));\n _changeAdmin(admin_);\n }\n\n /**\n * @dev Modifier used internally that will delegate the call to the implementation unless the sender is the admin.\n */\n modifier ifAdmin() {\n if (msg.sender == _getAdmin()) {\n _;\n } else {\n _fallback();\n }\n }\n\n /**\n * @dev Returns the current admin.\n *\n * NOTE: Only the admin can call this function. See {ProxyAdmin-getProxyAdmin}.\n *\n * TIP: To get this value clients can read directly from the storage slot shown below (specified by EIP1967) using the\n * https://eth.wiki/json-rpc/API#eth_getstorageat[`eth_getStorageAt`] RPC call.\n * `0xb53127684a568b3173ae13b9f8a6016e243e63b6e8ee1178d6a717850b5d6103`\n */\n function admin() external ifAdmin returns (address admin_) {\n admin_ = _getAdmin();\n }\n\n /**\n * @dev Returns the current implementation.\n *\n * NOTE: Only the admin can call this function. See {ProxyAdmin-getProxyImplementation}.\n *\n * TIP: To get this value clients can read directly from the storage slot shown below (specified by EIP1967) using the\n * https://eth.wiki/json-rpc/API#eth_getstorageat[`eth_getStorageAt`] RPC call.\n * `0x360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc`\n */\n function implementation() external ifAdmin returns (address implementation_) {\n implementation_ = _implementation();\n }\n\n /**\n * @dev Changes the admin of the proxy.\n *\n * Emits an {AdminChanged} event.\n *\n * NOTE: Only the admin can call this function. See {ProxyAdmin-changeProxyAdmin}.\n */\n function changeAdmin(address newAdmin) external virtual ifAdmin {\n _changeAdmin(newAdmin);\n }\n\n /**\n * @dev Upgrade the implementation of the proxy.\n *\n * NOTE: Only the admin can call this function. See {ProxyAdmin-upgrade}.\n */\n function upgradeTo(address newImplementation) external ifAdmin {\n _upgradeToAndCall(newImplementation, bytes(\"\"), false);\n }\n\n /**\n * @dev Upgrade the implementation of the proxy, and then call a function from the new implementation as specified\n * by `data`, which should be an encoded function call. This is useful to initialize new storage variables in the\n * proxied contract.\n *\n * NOTE: Only the admin can call this function. See {ProxyAdmin-upgradeAndCall}.\n */\n function upgradeToAndCall(address newImplementation, bytes calldata data) external payable ifAdmin {\n _upgradeToAndCall(newImplementation, data, true);\n }\n\n /**\n * @dev Returns the current admin.\n */\n function _admin() internal view virtual returns (address) {\n return _getAdmin();\n }\n\n /**\n * @dev Makes sure the admin cannot access the fallback function. See {Proxy-_beforeFallback}.\n */\n function _beforeFallback() internal virtual override {\n require(msg.sender != _getAdmin(), \"TransparentUpgradeableProxy: admin cannot fallback to proxy target\");\n super._beforeFallback();\n }\n}\n" + }, + "@openzeppelin/contracts/access/Ownable.sol": { + "content": "// SPDX-License-Identifier: MIT\n\npragma solidity ^0.8.0;\n\nimport \"../utils/Context.sol\";\n\n/**\n * @dev Contract module which provides a basic access control mechanism, where\n * there is an account (an owner) that can be granted exclusive access to\n * specific functions.\n *\n * By default, the owner account will be the one that deploys the contract. This\n * can later be changed with {transferOwnership}.\n *\n * This module is used through inheritance. It will make available the modifier\n * `onlyOwner`, which can be applied to your functions to restrict their use to\n * the owner.\n */\nabstract contract Ownable is Context {\n address private _owner;\n\n event OwnershipTransferred(address indexed previousOwner, address indexed newOwner);\n\n /**\n * @dev Initializes the contract setting the deployer as the initial owner.\n */\n constructor() {\n _setOwner(_msgSender());\n }\n\n /**\n * @dev Returns the address of the current owner.\n */\n function owner() public view virtual returns (address) {\n return _owner;\n }\n\n /**\n * @dev Throws if called by any account other than the owner.\n */\n modifier onlyOwner() {\n require(owner() == _msgSender(), \"Ownable: caller is not the owner\");\n _;\n }\n\n /**\n * @dev Leaves the contract without owner. It will not be possible to call\n * `onlyOwner` functions anymore. Can only be called by the current owner.\n *\n * NOTE: Renouncing ownership will leave the contract without an owner,\n * thereby removing any functionality that is only available to the owner.\n */\n function renounceOwnership() public virtual onlyOwner {\n _setOwner(address(0));\n }\n\n /**\n * @dev Transfers ownership of the contract to a new account (`newOwner`).\n * Can only be called by the current owner.\n */\n function transferOwnership(address newOwner) public virtual onlyOwner {\n require(newOwner != address(0), \"Ownable: new owner is the zero address\");\n _setOwner(newOwner);\n }\n\n function _setOwner(address newOwner) private {\n address oldOwner = _owner;\n _owner = newOwner;\n emit OwnershipTransferred(oldOwner, newOwner);\n }\n}\n" + }, + "@openzeppelin/contracts/proxy/ERC1967/ERC1967Proxy.sol": { + "content": "// SPDX-License-Identifier: MIT\n\npragma solidity ^0.8.0;\n\nimport \"../Proxy.sol\";\nimport \"./ERC1967Upgrade.sol\";\n\n/**\n * @dev This contract implements an upgradeable proxy. It is upgradeable because calls are delegated to an\n * implementation address that can be changed. This address is stored in storage in the location specified by\n * https://eips.ethereum.org/EIPS/eip-1967[EIP1967], so that it doesn't conflict with the storage layout of the\n * implementation behind the proxy.\n */\ncontract ERC1967Proxy is Proxy, ERC1967Upgrade {\n /**\n * @dev Initializes the upgradeable proxy with an initial implementation specified by `_logic`.\n *\n * If `_data` is nonempty, it's used as data in a delegate call to `_logic`. This will typically be an encoded\n * function call, and allows initializating the storage of the proxy like a Solidity constructor.\n */\n constructor(address _logic, bytes memory _data) payable {\n assert(_IMPLEMENTATION_SLOT == bytes32(uint256(keccak256(\"eip1967.proxy.implementation\")) - 1));\n _upgradeToAndCall(_logic, _data, false);\n }\n\n /**\n * @dev Returns the current implementation address.\n */\n function _implementation() internal view virtual override returns (address impl) {\n return ERC1967Upgrade._getImplementation();\n }\n}\n" + }, + "@openzeppelin/contracts/proxy/Proxy.sol": { + "content": "// SPDX-License-Identifier: MIT\n\npragma solidity ^0.8.0;\n\n/**\n * @dev This abstract contract provides a fallback function that delegates all calls to another contract using the EVM\n * instruction `delegatecall`. We refer to the second contract as the _implementation_ behind the proxy, and it has to\n * be specified by overriding the virtual {_implementation} function.\n *\n * Additionally, delegation to the implementation can be triggered manually through the {_fallback} function, or to a\n * different contract through the {_delegate} function.\n *\n * The success and return data of the delegated call will be returned back to the caller of the proxy.\n */\nabstract contract Proxy {\n /**\n * @dev Delegates the current call to `implementation`.\n *\n * This function does not return to its internall call site, it will return directly to the external caller.\n */\n function _delegate(address implementation) internal virtual {\n assembly {\n // Copy msg.data. We take full control of memory in this inline assembly\n // block because it will not return to Solidity code. We overwrite the\n // Solidity scratch pad at memory position 0.\n calldatacopy(0, 0, calldatasize())\n\n // Call the implementation.\n // out and outsize are 0 because we don't know the size yet.\n let result := delegatecall(gas(), implementation, 0, calldatasize(), 0, 0)\n\n // Copy the returned data.\n returndatacopy(0, 0, returndatasize())\n\n switch result\n // delegatecall returns 0 on error.\n case 0 {\n revert(0, returndatasize())\n }\n default {\n return(0, returndatasize())\n }\n }\n }\n\n /**\n * @dev This is a virtual function that should be overriden so it returns the address to which the fallback function\n * and {_fallback} should delegate.\n */\n function _implementation() internal view virtual returns (address);\n\n /**\n * @dev Delegates the current call to the address returned by `_implementation()`.\n *\n * This function does not return to its internall call site, it will return directly to the external caller.\n */\n function _fallback() internal virtual {\n _beforeFallback();\n _delegate(_implementation());\n }\n\n /**\n * @dev Fallback function that delegates calls to the address returned by `_implementation()`. Will run if no other\n * function in the contract matches the call data.\n */\n fallback() external payable virtual {\n _fallback();\n }\n\n /**\n * @dev Fallback function that delegates calls to the address returned by `_implementation()`. Will run if call data\n * is empty.\n */\n receive() external payable virtual {\n _fallback();\n }\n\n /**\n * @dev Hook that is called before falling back to the implementation. Can happen as part of a manual `_fallback`\n * call, or as part of the Solidity `fallback` or `receive` functions.\n *\n * If overriden should call `super._beforeFallback()`.\n */\n function _beforeFallback() internal virtual {}\n}\n" + }, + "@openzeppelin/contracts/proxy/ERC1967/ERC1967Upgrade.sol": { + "content": "// SPDX-License-Identifier: MIT\n\npragma solidity ^0.8.2;\n\nimport \"../beacon/IBeacon.sol\";\nimport \"../../utils/Address.sol\";\nimport \"../../utils/StorageSlot.sol\";\n\n/**\n * @dev This abstract contract provides getters and event emitting update functions for\n * https://eips.ethereum.org/EIPS/eip-1967[EIP1967] slots.\n *\n * _Available since v4.1._\n *\n * @custom:oz-upgrades-unsafe-allow delegatecall\n */\nabstract contract ERC1967Upgrade {\n // This is the keccak-256 hash of \"eip1967.proxy.rollback\" subtracted by 1\n bytes32 private constant _ROLLBACK_SLOT = 0x4910fdfa16fed3260ed0e7147f7cc6da11a60208b5b9406d12a635614ffd9143;\n\n /**\n * @dev Storage slot with the address of the current implementation.\n * This is the keccak-256 hash of \"eip1967.proxy.implementation\" subtracted by 1, and is\n * validated in the constructor.\n */\n bytes32 internal constant _IMPLEMENTATION_SLOT = 0x360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc;\n\n /**\n * @dev Emitted when the implementation is upgraded.\n */\n event Upgraded(address indexed implementation);\n\n /**\n * @dev Returns the current implementation address.\n */\n function _getImplementation() internal view returns (address) {\n return StorageSlot.getAddressSlot(_IMPLEMENTATION_SLOT).value;\n }\n\n /**\n * @dev Stores a new address in the EIP1967 implementation slot.\n */\n function _setImplementation(address newImplementation) private {\n require(Address.isContract(newImplementation), \"ERC1967: new implementation is not a contract\");\n StorageSlot.getAddressSlot(_IMPLEMENTATION_SLOT).value = newImplementation;\n }\n\n /**\n * @dev Perform implementation upgrade\n *\n * Emits an {Upgraded} event.\n */\n function _upgradeTo(address newImplementation) internal {\n _setImplementation(newImplementation);\n emit Upgraded(newImplementation);\n }\n\n /**\n * @dev Perform implementation upgrade with additional setup call.\n *\n * Emits an {Upgraded} event.\n */\n function _upgradeToAndCall(\n address newImplementation,\n bytes memory data,\n bool forceCall\n ) internal {\n _upgradeTo(newImplementation);\n if (data.length > 0 || forceCall) {\n Address.functionDelegateCall(newImplementation, data);\n }\n }\n\n /**\n * @dev Perform implementation upgrade with security checks for UUPS proxies, and additional setup call.\n *\n * Emits an {Upgraded} event.\n */\n function _upgradeToAndCallSecure(\n address newImplementation,\n bytes memory data,\n bool forceCall\n ) internal {\n address oldImplementation = _getImplementation();\n\n // Initial upgrade and setup call\n _setImplementation(newImplementation);\n if (data.length > 0 || forceCall) {\n Address.functionDelegateCall(newImplementation, data);\n }\n\n // Perform rollback test if not already in progress\n StorageSlot.BooleanSlot storage rollbackTesting = StorageSlot.getBooleanSlot(_ROLLBACK_SLOT);\n if (!rollbackTesting.value) {\n // Trigger rollback using upgradeTo from the new implementation\n rollbackTesting.value = true;\n Address.functionDelegateCall(\n newImplementation,\n abi.encodeWithSignature(\"upgradeTo(address)\", oldImplementation)\n );\n rollbackTesting.value = false;\n // Check rollback was effective\n require(oldImplementation == _getImplementation(), \"ERC1967Upgrade: upgrade breaks further upgrades\");\n // Finally reset to the new implementation and log the upgrade\n _upgradeTo(newImplementation);\n }\n }\n\n /**\n * @dev Storage slot with the admin of the contract.\n * This is the keccak-256 hash of \"eip1967.proxy.admin\" subtracted by 1, and is\n * validated in the constructor.\n */\n bytes32 internal constant _ADMIN_SLOT = 0xb53127684a568b3173ae13b9f8a6016e243e63b6e8ee1178d6a717850b5d6103;\n\n /**\n * @dev Emitted when the admin account has changed.\n */\n event AdminChanged(address previousAdmin, address newAdmin);\n\n /**\n * @dev Returns the current admin.\n */\n function _getAdmin() internal view returns (address) {\n return StorageSlot.getAddressSlot(_ADMIN_SLOT).value;\n }\n\n /**\n * @dev Stores a new address in the EIP1967 admin slot.\n */\n function _setAdmin(address newAdmin) private {\n require(newAdmin != address(0), \"ERC1967: new admin is the zero address\");\n StorageSlot.getAddressSlot(_ADMIN_SLOT).value = newAdmin;\n }\n\n /**\n * @dev Changes the admin of the proxy.\n *\n * Emits an {AdminChanged} event.\n */\n function _changeAdmin(address newAdmin) internal {\n emit AdminChanged(_getAdmin(), newAdmin);\n _setAdmin(newAdmin);\n }\n\n /**\n * @dev The storage slot of the UpgradeableBeacon contract which defines the implementation for this proxy.\n * This is bytes32(uint256(keccak256('eip1967.proxy.beacon')) - 1)) and is validated in the constructor.\n */\n bytes32 internal constant _BEACON_SLOT = 0xa3f0ad74e5423aebfd80d3ef4346578335a9a72aeaee59ff6cb3582b35133d50;\n\n /**\n * @dev Emitted when the beacon is upgraded.\n */\n event BeaconUpgraded(address indexed beacon);\n\n /**\n * @dev Returns the current beacon.\n */\n function _getBeacon() internal view returns (address) {\n return StorageSlot.getAddressSlot(_BEACON_SLOT).value;\n }\n\n /**\n * @dev Stores a new beacon in the EIP1967 beacon slot.\n */\n function _setBeacon(address newBeacon) private {\n require(Address.isContract(newBeacon), \"ERC1967: new beacon is not a contract\");\n require(\n Address.isContract(IBeacon(newBeacon).implementation()),\n \"ERC1967: beacon implementation is not a contract\"\n );\n StorageSlot.getAddressSlot(_BEACON_SLOT).value = newBeacon;\n }\n\n /**\n * @dev Perform beacon upgrade with additional setup call. Note: This upgrades the address of the beacon, it does\n * not upgrade the implementation contained in the beacon (see {UpgradeableBeacon-_setImplementation} for that).\n *\n * Emits a {BeaconUpgraded} event.\n */\n function _upgradeBeaconToAndCall(\n address newBeacon,\n bytes memory data,\n bool forceCall\n ) internal {\n _setBeacon(newBeacon);\n emit BeaconUpgraded(newBeacon);\n if (data.length > 0 || forceCall) {\n Address.functionDelegateCall(IBeacon(newBeacon).implementation(), data);\n }\n }\n}\n" + }, + "@openzeppelin/contracts/proxy/beacon/IBeacon.sol": { + "content": "// SPDX-License-Identifier: MIT\n\npragma solidity ^0.8.0;\n\n/**\n * @dev This is the interface that {BeaconProxy} expects of its beacon.\n */\ninterface IBeacon {\n /**\n * @dev Must return an address that can be used as a delegate call target.\n *\n * {BeaconProxy} will check that this address is a contract.\n */\n function implementation() external view returns (address);\n}\n" + }, + "@openzeppelin/contracts/utils/Address.sol": { + "content": "// SPDX-License-Identifier: MIT\n\npragma solidity ^0.8.0;\n\n/**\n * @dev Collection of functions related to the address type\n */\nlibrary Address {\n /**\n * @dev Returns true if `account` is a contract.\n *\n * [IMPORTANT]\n * ====\n * It is unsafe to assume that an address for which this function returns\n * false is an externally-owned account (EOA) and not a contract.\n *\n * Among others, `isContract` will return false for the following\n * types of addresses:\n *\n * - an externally-owned account\n * - a contract in construction\n * - an address where a contract will be created\n * - an address where a contract lived, but was destroyed\n * ====\n */\n function isContract(address account) internal view returns (bool) {\n // This method relies on extcodesize, which returns 0 for contracts in\n // construction, since the code is only stored at the end of the\n // constructor execution.\n\n uint256 size;\n assembly {\n size := extcodesize(account)\n }\n return size > 0;\n }\n\n /**\n * @dev Replacement for Solidity's `transfer`: sends `amount` wei to\n * `recipient`, forwarding all available gas and reverting on errors.\n *\n * https://eips.ethereum.org/EIPS/eip-1884[EIP1884] increases the gas cost\n * of certain opcodes, possibly making contracts go over the 2300 gas limit\n * imposed by `transfer`, making them unable to receive funds via\n * `transfer`. {sendValue} removes this limitation.\n *\n * https://diligence.consensys.net/posts/2019/09/stop-using-soliditys-transfer-now/[Learn more].\n *\n * IMPORTANT: because control is transferred to `recipient`, care must be\n * taken to not create reentrancy vulnerabilities. Consider using\n * {ReentrancyGuard} or the\n * https://solidity.readthedocs.io/en/v0.5.11/security-considerations.html#use-the-checks-effects-interactions-pattern[checks-effects-interactions pattern].\n */\n function sendValue(address payable recipient, uint256 amount) internal {\n require(address(this).balance >= amount, \"Address: insufficient balance\");\n\n (bool success, ) = recipient.call{value: amount}(\"\");\n require(success, \"Address: unable to send value, recipient may have reverted\");\n }\n\n /**\n * @dev Performs a Solidity function call using a low level `call`. A\n * plain `call` is an unsafe replacement for a function call: use this\n * function instead.\n *\n * If `target` reverts with a revert reason, it is bubbled up by this\n * function (like regular Solidity function calls).\n *\n * Returns the raw returned data. To convert to the expected return value,\n * use https://solidity.readthedocs.io/en/latest/units-and-global-variables.html?highlight=abi.decode#abi-encoding-and-decoding-functions[`abi.decode`].\n *\n * Requirements:\n *\n * - `target` must be a contract.\n * - calling `target` with `data` must not revert.\n *\n * _Available since v3.1._\n */\n function functionCall(address target, bytes memory data) internal returns (bytes memory) {\n return functionCall(target, data, \"Address: low-level call failed\");\n }\n\n /**\n * @dev Same as {xref-Address-functionCall-address-bytes-}[`functionCall`], but with\n * `errorMessage` as a fallback revert reason when `target` reverts.\n *\n * _Available since v3.1._\n */\n function functionCall(\n address target,\n bytes memory data,\n string memory errorMessage\n ) internal returns (bytes memory) {\n return functionCallWithValue(target, data, 0, errorMessage);\n }\n\n /**\n * @dev Same as {xref-Address-functionCall-address-bytes-}[`functionCall`],\n * but also transferring `value` wei to `target`.\n *\n * Requirements:\n *\n * - the calling contract must have an ETH balance of at least `value`.\n * - the called Solidity function must be `payable`.\n *\n * _Available since v3.1._\n */\n function functionCallWithValue(\n address target,\n bytes memory data,\n uint256 value\n ) internal returns (bytes memory) {\n return functionCallWithValue(target, data, value, \"Address: low-level call with value failed\");\n }\n\n /**\n * @dev Same as {xref-Address-functionCallWithValue-address-bytes-uint256-}[`functionCallWithValue`], but\n * with `errorMessage` as a fallback revert reason when `target` reverts.\n *\n * _Available since v3.1._\n */\n function functionCallWithValue(\n address target,\n bytes memory data,\n uint256 value,\n string memory errorMessage\n ) internal returns (bytes memory) {\n require(address(this).balance >= value, \"Address: insufficient balance for call\");\n require(isContract(target), \"Address: call to non-contract\");\n\n (bool success, bytes memory returndata) = target.call{value: value}(data);\n return _verifyCallResult(success, returndata, errorMessage);\n }\n\n /**\n * @dev Same as {xref-Address-functionCall-address-bytes-}[`functionCall`],\n * but performing a static call.\n *\n * _Available since v3.3._\n */\n function functionStaticCall(address target, bytes memory data) internal view returns (bytes memory) {\n return functionStaticCall(target, data, \"Address: low-level static call failed\");\n }\n\n /**\n * @dev Same as {xref-Address-functionCall-address-bytes-string-}[`functionCall`],\n * but performing a static call.\n *\n * _Available since v3.3._\n */\n function functionStaticCall(\n address target,\n bytes memory data,\n string memory errorMessage\n ) internal view returns (bytes memory) {\n require(isContract(target), \"Address: static call to non-contract\");\n\n (bool success, bytes memory returndata) = target.staticcall(data);\n return _verifyCallResult(success, returndata, errorMessage);\n }\n\n /**\n * @dev Same as {xref-Address-functionCall-address-bytes-}[`functionCall`],\n * but performing a delegate call.\n *\n * _Available since v3.4._\n */\n function functionDelegateCall(address target, bytes memory data) internal returns (bytes memory) {\n return functionDelegateCall(target, data, \"Address: low-level delegate call failed\");\n }\n\n /**\n * @dev Same as {xref-Address-functionCall-address-bytes-string-}[`functionCall`],\n * but performing a delegate call.\n *\n * _Available since v3.4._\n */\n function functionDelegateCall(\n address target,\n bytes memory data,\n string memory errorMessage\n ) internal returns (bytes memory) {\n require(isContract(target), \"Address: delegate call to non-contract\");\n\n (bool success, bytes memory returndata) = target.delegatecall(data);\n return _verifyCallResult(success, returndata, errorMessage);\n }\n\n function _verifyCallResult(\n bool success,\n bytes memory returndata,\n string memory errorMessage\n ) private pure returns (bytes memory) {\n if (success) {\n return returndata;\n } else {\n // Look for revert reason and bubble it up if present\n if (returndata.length > 0) {\n // The easiest way to bubble the revert reason is using memory via assembly\n\n assembly {\n let returndata_size := mload(returndata)\n revert(add(32, returndata), returndata_size)\n }\n } else {\n revert(errorMessage);\n }\n }\n }\n}\n" + }, + "@openzeppelin/contracts/utils/StorageSlot.sol": { + "content": "// SPDX-License-Identifier: MIT\n\npragma solidity ^0.8.0;\n\n/**\n * @dev Library for reading and writing primitive types to specific storage slots.\n *\n * Storage slots are often used to avoid storage conflict when dealing with upgradeable contracts.\n * This library helps with reading and writing to such slots without the need for inline assembly.\n *\n * The functions in this library return Slot structs that contain a `value` member that can be used to read or write.\n *\n * Example usage to set ERC1967 implementation slot:\n * ```\n * contract ERC1967 {\n * bytes32 internal constant _IMPLEMENTATION_SLOT = 0x360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc;\n *\n * function _getImplementation() internal view returns (address) {\n * return StorageSlot.getAddressSlot(_IMPLEMENTATION_SLOT).value;\n * }\n *\n * function _setImplementation(address newImplementation) internal {\n * require(Address.isContract(newImplementation), \"ERC1967: new implementation is not a contract\");\n * StorageSlot.getAddressSlot(_IMPLEMENTATION_SLOT).value = newImplementation;\n * }\n * }\n * ```\n *\n * _Available since v4.1 for `address`, `bool`, `bytes32`, and `uint256`._\n */\nlibrary StorageSlot {\n struct AddressSlot {\n address value;\n }\n\n struct BooleanSlot {\n bool value;\n }\n\n struct Bytes32Slot {\n bytes32 value;\n }\n\n struct Uint256Slot {\n uint256 value;\n }\n\n /**\n * @dev Returns an `AddressSlot` with member `value` located at `slot`.\n */\n function getAddressSlot(bytes32 slot) internal pure returns (AddressSlot storage r) {\n assembly {\n r.slot := slot\n }\n }\n\n /**\n * @dev Returns an `BooleanSlot` with member `value` located at `slot`.\n */\n function getBooleanSlot(bytes32 slot) internal pure returns (BooleanSlot storage r) {\n assembly {\n r.slot := slot\n }\n }\n\n /**\n * @dev Returns an `Bytes32Slot` with member `value` located at `slot`.\n */\n function getBytes32Slot(bytes32 slot) internal pure returns (Bytes32Slot storage r) {\n assembly {\n r.slot := slot\n }\n }\n\n /**\n * @dev Returns an `Uint256Slot` with member `value` located at `slot`.\n */\n function getUint256Slot(bytes32 slot) internal pure returns (Uint256Slot storage r) {\n assembly {\n r.slot := slot\n }\n }\n}\n" + }, + "@openzeppelin/contracts/utils/Context.sol": { + "content": "// SPDX-License-Identifier: MIT\n\npragma solidity ^0.8.0;\n\n/*\n * @dev Provides information about the current execution context, including the\n * sender of the transaction and its data. While these are generally available\n * via msg.sender and msg.data, they should not be accessed in such a direct\n * manner, since when dealing with meta-transactions the account sending and\n * paying for execution may not be the actual sender (as far as an application\n * is concerned).\n *\n * This contract is only required for intermediate, library-like contracts.\n */\nabstract contract Context {\n function _msgSender() internal view virtual returns (address) {\n return msg.sender;\n }\n\n function _msgData() internal view virtual returns (bytes calldata) {\n return msg.data;\n }\n}\n" + }, + "src/ClaimRewards.sol": { + "content": "//SPDX-License-Identifier: MIT\n\npragma solidity ^0.8.6;\n\nimport {TransparentUpgradeableProxy} from \"@openzeppelin/contracts/proxy/transparent/TransparentUpgradeableProxy.sol\";\n\nimport {ValidString} from \"./ValidString.sol\";\n\ncontract ClaimRewardsV1 {\n uint256 public constant BPS_DENOMINATOR = 10000;\n\n event LogClaimRewards(\n address indexed operatorAddress_,\n string assetSymbol_,\n string recipientAddress_,\n string recipientChain_,\n bytes recipientPayload_,\n uint256 fractionInBps_,\n // Repeated values for indexing.\n string indexed assetSymbolIndexed_,\n string indexed recipientAddressIndexed_\n );\n\n modifier validFractionInBps(uint256 fraction_) {\n require(fraction_ <= BPS_DENOMINATOR, \"ClaimRewards: invalid fractionInBps\");\n _;\n }\n\n /**\n * claimRewardsToChain allows darknode operators to withdraw darknode\n * earnings, as an on-chain alternative to the JSON-RPC claim method.\n *\n * It will the operators total sum of rewards, for all of their nodes.\n *\n * @param assetSymbol_ The token symbol.\n * E.g. \"BTC\", \"DOGE\" or \"FIL\".\n * @param recipientAddress_ An address on the asset's native chain, for\n * receiving the withdrawn rewards. This should be a string as\n * provided by the user - no encoding or decoding required.\n * E.g.: \"miMi2VET41YV1j6SDNTeZoPBbmH8B4nEx6\" for BTC.\n * @param recipientChain_ A string indicating which chain the rewards should\n * be withdrawn to. It should be the name of the chain as expected by\n * RenVM (e.g. \"Ethereum\" or \"Solana\"). Support for different chains\n * will be rolled out after this contract is deployed, starting with\n * \"Ethereum\", then other host chains (e.g. \"Polygon\" or \"Solana\")\n * and then lock chains (e.g. \"Bitcoin\" for \"BTC\"), also represented\n * by an empty string \"\".\n * @param recipientPayload_ An associated payload that can be provided along\n * with the recipient chain and address. Should be empty if not\n * required.\n * @param fractionInBps_ A value between 0 and 10000 (inclusive) that\n * indicates the percent to withdraw from each of the operator's\n * darknodes. The value should be in BPS, meaning 10000 represents\n * 100%, 5000 represents 50%, etc.\n */\n function claimRewardsToChain(\n string memory assetSymbol_,\n string memory recipientAddress_,\n string memory recipientChain_,\n bytes memory recipientPayload_,\n uint256 fractionInBps_\n ) public validFractionInBps(fractionInBps_) {\n // Validate asset symbol.\n require(ValidString.isNotEmpty(assetSymbol_), \"ClaimRewards: invalid empty asset\");\n require(ValidString.isAlphanumeric(assetSymbol_), \"ClaimRewards: invalid asset\");\n\n // Validate recipient address.\n require(ValidString.isNotEmpty(recipientAddress_), \"ClaimRewards: invalid empty recipient address\");\n require(ValidString.isAlphanumeric(recipientAddress_), \"ClaimRewards: invalid recipient address\");\n\n // Validate recipient chain.\n // Note that the chain can be empty - which is planned to represent the\n // asset's native lock chain.\n require(ValidString.isAlphanumeric(recipientChain_), \"ClaimRewards: invalid recipient chain\");\n\n address operatorAddress = msg.sender;\n\n // Emit event.\n emit LogClaimRewards(\n operatorAddress,\n assetSymbol_,\n recipientAddress_,\n recipientChain_,\n recipientPayload_,\n fractionInBps_,\n // Indexed\n assetSymbol_,\n recipientAddress_\n );\n }\n\n /**\n * `claimRewardsToEthereum` calls `claimRewardsToChain` internally\n */\n function claimRewardsToEthereum(\n string memory assetSymbol_,\n address recipientAddress_,\n uint256 fractionInBps_\n ) public {\n return claimRewardsToChain(assetSymbol_, addressToString(recipientAddress_), \"Ethereum\", \"\", fractionInBps_);\n }\n\n // From https://ethereum.stackexchange.com/questions/8346/convert-address-to-string\n function addressToString(address address_) public pure returns (string memory) {\n bytes memory data = abi.encodePacked(address_);\n\n bytes memory alphabet = \"0123456789abcdef\";\n\n bytes memory str = new bytes(2 + data.length * 2);\n str[0] = \"0\";\n str[1] = \"x\";\n for (uint256 i = 0; i < data.length; i++) {\n str[2 + i * 2] = alphabet[uint256(uint8(data[i] >> 4))];\n str[3 + i * 2] = alphabet[uint256(uint8(data[i] & 0x0f))];\n }\n return string(str);\n }\n}\n\ncontract ClaimRewardsProxy is TransparentUpgradeableProxy {\n constructor(\n address _logic,\n address admin_,\n bytes memory _data\n ) TransparentUpgradeableProxy(_logic, admin_, _data) {}\n}\n" + }, + "src/ValidString.sol": { + "content": "// SPDX-License-Identifier: MIT\n\npragma solidity ^0.8.6;\n\nlibrary ValidString {\n function isAlphanumeric(string memory _string) internal pure returns (bool) {\n for (uint256 i = 0; i < bytes(_string).length; i++) {\n uint8 char = uint8(bytes(_string)[i]);\n if (!((char >= 65 && char <= 90) || (char >= 97 && char <= 122) || (char >= 48 && char <= 57))) {\n return false;\n }\n }\n return true;\n }\n\n function isNotEmpty(string memory _string) internal pure returns (bool) {\n return bytes(_string).length > 0;\n }\n\n function isValidString(string memory _string) internal pure returns (bool) {\n return isAlphanumeric(_string) && isNotEmpty(_string);\n }\n}\n" + }, + "src/GetOperatorDarknodes.sol": { + "content": "// SPDX-License-Identifier: MIT\n\npragma solidity ^0.8.6;\n\ninterface IDarknodeRegistry {\n function numDarknodes() external view returns (uint256);\n\n function getDarknodes(address _start, uint256 _count) external view returns (address[] memory);\n\n function getDarknodeOperator(address _darknodeID) external view returns (address payable);\n}\n\ncontract GetOperatorDarknodes {\n IDarknodeRegistry public darknodeRegistry;\n\n constructor(address _darknodeRegistry) {\n darknodeRegistry = IDarknodeRegistry(_darknodeRegistry);\n }\n\n function getOperatorDarknodes(address _operator) public view returns (address[] memory) {\n uint256 numDarknodes = darknodeRegistry.numDarknodes();\n address[] memory nodesPadded = new address[](numDarknodes);\n\n address[] memory allNodes = darknodeRegistry.getDarknodes(address(0), 0);\n\n uint256 j = 0;\n for (uint256 i = 0; i < allNodes.length; i++) {\n if (darknodeRegistry.getDarknodeOperator(allNodes[i]) == _operator) {\n nodesPadded[j] = (allNodes[i]);\n j++;\n }\n }\n\n address[] memory nodes = new address[](j);\n for (uint256 i = 0; i < j; i++) {\n nodes[i] = nodesPadded[i];\n }\n\n return nodes;\n }\n}\n" + }, + "src/Protocol.sol": { + "content": "pragma solidity ^0.8.6;\n\nimport {AccessControlEnumerableUpgradeable} from \"@openzeppelin/contracts-upgradeable/access/AccessControlEnumerableUpgradeable.sol\";\nimport {AccessControlUpgradeable} from \"@openzeppelin/contracts-upgradeable/access/AccessControlUpgradeable.sol\";\nimport {Initializable} from \"@openzeppelin/contracts-upgradeable/proxy/utils/Initializable.sol\";\n\n/** The Protocol contract is used to look-up other Ren contracts. */\ncontract Protocol is Initializable, AccessControlEnumerableUpgradeable {\n event LogContractUpdated(string contractName, address indexed contractAddress, string indexed contractNameIndexed);\n\n mapping(string => address) internal contractMap;\n\n bytes32 public constant CAN_ADD_CONTRACTS = keccak256(\"CAN_ADD_CONTRACTS\");\n bytes32 public constant CAN_UPDATE_CONTRACTS = keccak256(\"CAN_UPDATE_CONTRACTS\");\n\n function __Protocol_init(address adminAddress_) public initializer {\n __AccessControlEnumerable_init();\n _setupRole(AccessControlUpgradeable.DEFAULT_ADMIN_ROLE, adminAddress_);\n _setupRole(CAN_ADD_CONTRACTS, adminAddress_);\n _setupRole(CAN_UPDATE_CONTRACTS, adminAddress_);\n }\n\n function addContract(string memory contractName, address contractAddress) public onlyRole(CAN_ADD_CONTRACTS) {\n require(contractMap[contractName] == address(0x0), \"Protocol: contract entry already exists\");\n contractMap[contractName] = contractAddress;\n\n emit LogContractUpdated(contractName, contractAddress, contractName);\n }\n\n function updateContract(string memory contractName, address contractAddress) public onlyRole(CAN_UPDATE_CONTRACTS) {\n contractMap[contractName] = contractAddress;\n\n emit LogContractUpdated(contractName, contractAddress, contractName);\n }\n\n function getContract(string memory contractName) public view returns (address) {\n return contractMap[contractName];\n }\n}\n" + }, + "@openzeppelin/contracts-upgradeable/access/AccessControlEnumerableUpgradeable.sol": { + "content": "// SPDX-License-Identifier: MIT\n\npragma solidity ^0.8.0;\n\nimport \"./AccessControlUpgradeable.sol\";\nimport \"../utils/structs/EnumerableSetUpgradeable.sol\";\nimport \"../proxy/utils/Initializable.sol\";\n\n/**\n * @dev External interface of AccessControlEnumerable declared to support ERC165 detection.\n */\ninterface IAccessControlEnumerableUpgradeable {\n function getRoleMember(bytes32 role, uint256 index) external view returns (address);\n\n function getRoleMemberCount(bytes32 role) external view returns (uint256);\n}\n\n/**\n * @dev Extension of {AccessControl} that allows enumerating the members of each role.\n */\nabstract contract AccessControlEnumerableUpgradeable is Initializable, IAccessControlEnumerableUpgradeable, AccessControlUpgradeable {\n function __AccessControlEnumerable_init() internal initializer {\n __Context_init_unchained();\n __ERC165_init_unchained();\n __AccessControl_init_unchained();\n __AccessControlEnumerable_init_unchained();\n }\n\n function __AccessControlEnumerable_init_unchained() internal initializer {\n }\n using EnumerableSetUpgradeable for EnumerableSetUpgradeable.AddressSet;\n\n mapping(bytes32 => EnumerableSetUpgradeable.AddressSet) private _roleMembers;\n\n /**\n * @dev See {IERC165-supportsInterface}.\n */\n function supportsInterface(bytes4 interfaceId) public view virtual override returns (bool) {\n return interfaceId == type(IAccessControlEnumerableUpgradeable).interfaceId || super.supportsInterface(interfaceId);\n }\n\n /**\n * @dev Returns one of the accounts that have `role`. `index` must be a\n * value between 0 and {getRoleMemberCount}, non-inclusive.\n *\n * Role bearers are not sorted in any particular way, and their ordering may\n * change at any point.\n *\n * WARNING: When using {getRoleMember} and {getRoleMemberCount}, make sure\n * you perform all queries on the same block. See the following\n * https://forum.openzeppelin.com/t/iterating-over-elements-on-enumerableset-in-openzeppelin-contracts/2296[forum post]\n * for more information.\n */\n function getRoleMember(bytes32 role, uint256 index) public view override returns (address) {\n return _roleMembers[role].at(index);\n }\n\n /**\n * @dev Returns the number of accounts that have `role`. Can be used\n * together with {getRoleMember} to enumerate all bearers of a role.\n */\n function getRoleMemberCount(bytes32 role) public view override returns (uint256) {\n return _roleMembers[role].length();\n }\n\n /**\n * @dev Overload {grantRole} to track enumerable memberships\n */\n function grantRole(bytes32 role, address account) public virtual override {\n super.grantRole(role, account);\n _roleMembers[role].add(account);\n }\n\n /**\n * @dev Overload {revokeRole} to track enumerable memberships\n */\n function revokeRole(bytes32 role, address account) public virtual override {\n super.revokeRole(role, account);\n _roleMembers[role].remove(account);\n }\n\n /**\n * @dev Overload {renounceRole} to track enumerable memberships\n */\n function renounceRole(bytes32 role, address account) public virtual override {\n super.renounceRole(role, account);\n _roleMembers[role].remove(account);\n }\n\n /**\n * @dev Overload {_setupRole} to track enumerable memberships\n */\n function _setupRole(bytes32 role, address account) internal virtual override {\n super._setupRole(role, account);\n _roleMembers[role].add(account);\n }\n uint256[49] private __gap;\n}\n" + }, + "@openzeppelin/contracts-upgradeable/access/AccessControlUpgradeable.sol": { + "content": "// SPDX-License-Identifier: MIT\n\npragma solidity ^0.8.0;\n\nimport \"../utils/ContextUpgradeable.sol\";\nimport \"../utils/StringsUpgradeable.sol\";\nimport \"../utils/introspection/ERC165Upgradeable.sol\";\nimport \"../proxy/utils/Initializable.sol\";\n\n/**\n * @dev External interface of AccessControl declared to support ERC165 detection.\n */\ninterface IAccessControlUpgradeable {\n function hasRole(bytes32 role, address account) external view returns (bool);\n\n function getRoleAdmin(bytes32 role) external view returns (bytes32);\n\n function grantRole(bytes32 role, address account) external;\n\n function revokeRole(bytes32 role, address account) external;\n\n function renounceRole(bytes32 role, address account) external;\n}\n\n/**\n * @dev Contract module that allows children to implement role-based access\n * control mechanisms. This is a lightweight version that doesn't allow enumerating role\n * members except through off-chain means by accessing the contract event logs. Some\n * applications may benefit from on-chain enumerability, for those cases see\n * {AccessControlEnumerable}.\n *\n * Roles are referred to by their `bytes32` identifier. These should be exposed\n * in the external API and be unique. The best way to achieve this is by\n * using `public constant` hash digests:\n *\n * ```\n * bytes32 public constant MY_ROLE = keccak256(\"MY_ROLE\");\n * ```\n *\n * Roles can be used to represent a set of permissions. To restrict access to a\n * function call, use {hasRole}:\n *\n * ```\n * function foo() public {\n * require(hasRole(MY_ROLE, msg.sender));\n * ...\n * }\n * ```\n *\n * Roles can be granted and revoked dynamically via the {grantRole} and\n * {revokeRole} functions. Each role has an associated admin role, and only\n * accounts that have a role's admin role can call {grantRole} and {revokeRole}.\n *\n * By default, the admin role for all roles is `DEFAULT_ADMIN_ROLE`, which means\n * that only accounts with this role will be able to grant or revoke other\n * roles. More complex role relationships can be created by using\n * {_setRoleAdmin}.\n *\n * WARNING: The `DEFAULT_ADMIN_ROLE` is also its own admin: it has permission to\n * grant and revoke this role. Extra precautions should be taken to secure\n * accounts that have been granted it.\n */\nabstract contract AccessControlUpgradeable is Initializable, ContextUpgradeable, IAccessControlUpgradeable, ERC165Upgradeable {\n function __AccessControl_init() internal initializer {\n __Context_init_unchained();\n __ERC165_init_unchained();\n __AccessControl_init_unchained();\n }\n\n function __AccessControl_init_unchained() internal initializer {\n }\n struct RoleData {\n mapping(address => bool) members;\n bytes32 adminRole;\n }\n\n mapping(bytes32 => RoleData) private _roles;\n\n bytes32 public constant DEFAULT_ADMIN_ROLE = 0x00;\n\n /**\n * @dev Emitted when `newAdminRole` is set as ``role``'s admin role, replacing `previousAdminRole`\n *\n * `DEFAULT_ADMIN_ROLE` is the starting admin for all roles, despite\n * {RoleAdminChanged} not being emitted signaling this.\n *\n * _Available since v3.1._\n */\n event RoleAdminChanged(bytes32 indexed role, bytes32 indexed previousAdminRole, bytes32 indexed newAdminRole);\n\n /**\n * @dev Emitted when `account` is granted `role`.\n *\n * `sender` is the account that originated the contract call, an admin role\n * bearer except when using {_setupRole}.\n */\n event RoleGranted(bytes32 indexed role, address indexed account, address indexed sender);\n\n /**\n * @dev Emitted when `account` is revoked `role`.\n *\n * `sender` is the account that originated the contract call:\n * - if using `revokeRole`, it is the admin role bearer\n * - if using `renounceRole`, it is the role bearer (i.e. `account`)\n */\n event RoleRevoked(bytes32 indexed role, address indexed account, address indexed sender);\n\n /**\n * @dev Modifier that checks that an account has a specific role. Reverts\n * with a standardized message including the required role.\n *\n * The format of the revert reason is given by the following regular expression:\n *\n * /^AccessControl: account (0x[0-9a-f]{20}) is missing role (0x[0-9a-f]{32})$/\n *\n * _Available since v4.1._\n */\n modifier onlyRole(bytes32 role) {\n _checkRole(role, _msgSender());\n _;\n }\n\n /**\n * @dev See {IERC165-supportsInterface}.\n */\n function supportsInterface(bytes4 interfaceId) public view virtual override returns (bool) {\n return interfaceId == type(IAccessControlUpgradeable).interfaceId || super.supportsInterface(interfaceId);\n }\n\n /**\n * @dev Returns `true` if `account` has been granted `role`.\n */\n function hasRole(bytes32 role, address account) public view override returns (bool) {\n return _roles[role].members[account];\n }\n\n /**\n * @dev Revert with a standard message if `account` is missing `role`.\n *\n * The format of the revert reason is given by the following regular expression:\n *\n * /^AccessControl: account (0x[0-9a-f]{20}) is missing role (0x[0-9a-f]{32})$/\n */\n function _checkRole(bytes32 role, address account) internal view {\n if (!hasRole(role, account)) {\n revert(\n string(\n abi.encodePacked(\n \"AccessControl: account \",\n StringsUpgradeable.toHexString(uint160(account), 20),\n \" is missing role \",\n StringsUpgradeable.toHexString(uint256(role), 32)\n )\n )\n );\n }\n }\n\n /**\n * @dev Returns the admin role that controls `role`. See {grantRole} and\n * {revokeRole}.\n *\n * To change a role's admin, use {_setRoleAdmin}.\n */\n function getRoleAdmin(bytes32 role) public view override returns (bytes32) {\n return _roles[role].adminRole;\n }\n\n /**\n * @dev Grants `role` to `account`.\n *\n * If `account` had not been already granted `role`, emits a {RoleGranted}\n * event.\n *\n * Requirements:\n *\n * - the caller must have ``role``'s admin role.\n */\n function grantRole(bytes32 role, address account) public virtual override onlyRole(getRoleAdmin(role)) {\n _grantRole(role, account);\n }\n\n /**\n * @dev Revokes `role` from `account`.\n *\n * If `account` had been granted `role`, emits a {RoleRevoked} event.\n *\n * Requirements:\n *\n * - the caller must have ``role``'s admin role.\n */\n function revokeRole(bytes32 role, address account) public virtual override onlyRole(getRoleAdmin(role)) {\n _revokeRole(role, account);\n }\n\n /**\n * @dev Revokes `role` from the calling account.\n *\n * Roles are often managed via {grantRole} and {revokeRole}: this function's\n * purpose is to provide a mechanism for accounts to lose their privileges\n * if they are compromised (such as when a trusted device is misplaced).\n *\n * If the calling account had been granted `role`, emits a {RoleRevoked}\n * event.\n *\n * Requirements:\n *\n * - the caller must be `account`.\n */\n function renounceRole(bytes32 role, address account) public virtual override {\n require(account == _msgSender(), \"AccessControl: can only renounce roles for self\");\n\n _revokeRole(role, account);\n }\n\n /**\n * @dev Grants `role` to `account`.\n *\n * If `account` had not been already granted `role`, emits a {RoleGranted}\n * event. Note that unlike {grantRole}, this function doesn't perform any\n * checks on the calling account.\n *\n * [WARNING]\n * ====\n * This function should only be called from the constructor when setting\n * up the initial roles for the system.\n *\n * Using this function in any other way is effectively circumventing the admin\n * system imposed by {AccessControl}.\n * ====\n */\n function _setupRole(bytes32 role, address account) internal virtual {\n _grantRole(role, account);\n }\n\n /**\n * @dev Sets `adminRole` as ``role``'s admin role.\n *\n * Emits a {RoleAdminChanged} event.\n */\n function _setRoleAdmin(bytes32 role, bytes32 adminRole) internal virtual {\n emit RoleAdminChanged(role, getRoleAdmin(role), adminRole);\n _roles[role].adminRole = adminRole;\n }\n\n function _grantRole(bytes32 role, address account) private {\n if (!hasRole(role, account)) {\n _roles[role].members[account] = true;\n emit RoleGranted(role, account, _msgSender());\n }\n }\n\n function _revokeRole(bytes32 role, address account) private {\n if (hasRole(role, account)) {\n _roles[role].members[account] = false;\n emit RoleRevoked(role, account, _msgSender());\n }\n }\n uint256[49] private __gap;\n}\n" + }, + "@openzeppelin/contracts-upgradeable/proxy/utils/Initializable.sol": { + "content": "// SPDX-License-Identifier: MIT\n\npragma solidity ^0.8.0;\n\n/**\n * @dev This is a base contract to aid in writing upgradeable contracts, or any kind of contract that will be deployed\n * behind a proxy. Since a proxied contract can't have a constructor, it's common to move constructor logic to an\n * external initializer function, usually called `initialize`. It then becomes necessary to protect this initializer\n * function so it can only be called once. The {initializer} modifier provided by this contract will have this effect.\n *\n * TIP: To avoid leaving the proxy in an uninitialized state, the initializer function should be called as early as\n * possible by providing the encoded function call as the `_data` argument to {ERC1967Proxy-constructor}.\n *\n * CAUTION: When used with inheritance, manual care must be taken to not invoke a parent initializer twice, or to ensure\n * that all initializers are idempotent. This is not verified automatically as constructors are by Solidity.\n */\nabstract contract Initializable {\n /**\n * @dev Indicates that the contract has been initialized.\n */\n bool private _initialized;\n\n /**\n * @dev Indicates that the contract is in the process of being initialized.\n */\n bool private _initializing;\n\n /**\n * @dev Modifier to protect an initializer function from being invoked twice.\n */\n modifier initializer() {\n require(_initializing || !_initialized, \"Initializable: contract is already initialized\");\n\n bool isTopLevelCall = !_initializing;\n if (isTopLevelCall) {\n _initializing = true;\n _initialized = true;\n }\n\n _;\n\n if (isTopLevelCall) {\n _initializing = false;\n }\n }\n}\n" + }, + "@openzeppelin/contracts-upgradeable/utils/structs/EnumerableSetUpgradeable.sol": { + "content": "// SPDX-License-Identifier: MIT\n\npragma solidity ^0.8.0;\n\n/**\n * @dev Library for managing\n * https://en.wikipedia.org/wiki/Set_(abstract_data_type)[sets] of primitive\n * types.\n *\n * Sets have the following properties:\n *\n * - Elements are added, removed, and checked for existence in constant time\n * (O(1)).\n * - Elements are enumerated in O(n). No guarantees are made on the ordering.\n *\n * ```\n * contract Example {\n * // Add the library methods\n * using EnumerableSet for EnumerableSet.AddressSet;\n *\n * // Declare a set state variable\n * EnumerableSet.AddressSet private mySet;\n * }\n * ```\n *\n * As of v3.3.0, sets of type `bytes32` (`Bytes32Set`), `address` (`AddressSet`)\n * and `uint256` (`UintSet`) are supported.\n */\nlibrary EnumerableSetUpgradeable {\n // To implement this library for multiple types with as little code\n // repetition as possible, we write it in terms of a generic Set type with\n // bytes32 values.\n // The Set implementation uses private functions, and user-facing\n // implementations (such as AddressSet) are just wrappers around the\n // underlying Set.\n // This means that we can only create new EnumerableSets for types that fit\n // in bytes32.\n\n struct Set {\n // Storage of set values\n bytes32[] _values;\n // Position of the value in the `values` array, plus 1 because index 0\n // means a value is not in the set.\n mapping(bytes32 => uint256) _indexes;\n }\n\n /**\n * @dev Add a value to a set. O(1).\n *\n * Returns true if the value was added to the set, that is if it was not\n * already present.\n */\n function _add(Set storage set, bytes32 value) private returns (bool) {\n if (!_contains(set, value)) {\n set._values.push(value);\n // The value is stored at length-1, but we add 1 to all indexes\n // and use 0 as a sentinel value\n set._indexes[value] = set._values.length;\n return true;\n } else {\n return false;\n }\n }\n\n /**\n * @dev Removes a value from a set. O(1).\n *\n * Returns true if the value was removed from the set, that is if it was\n * present.\n */\n function _remove(Set storage set, bytes32 value) private returns (bool) {\n // We read and store the value's index to prevent multiple reads from the same storage slot\n uint256 valueIndex = set._indexes[value];\n\n if (valueIndex != 0) {\n // Equivalent to contains(set, value)\n // To delete an element from the _values array in O(1), we swap the element to delete with the last one in\n // the array, and then remove the last element (sometimes called as 'swap and pop').\n // This modifies the order of the array, as noted in {at}.\n\n uint256 toDeleteIndex = valueIndex - 1;\n uint256 lastIndex = set._values.length - 1;\n\n if (lastIndex != toDeleteIndex) {\n bytes32 lastvalue = set._values[lastIndex];\n\n // Move the last value to the index where the value to delete is\n set._values[toDeleteIndex] = lastvalue;\n // Update the index for the moved value\n set._indexes[lastvalue] = valueIndex; // Replace lastvalue's index to valueIndex\n }\n\n // Delete the slot where the moved value was stored\n set._values.pop();\n\n // Delete the index for the deleted slot\n delete set._indexes[value];\n\n return true;\n } else {\n return false;\n }\n }\n\n /**\n * @dev Returns true if the value is in the set. O(1).\n */\n function _contains(Set storage set, bytes32 value) private view returns (bool) {\n return set._indexes[value] != 0;\n }\n\n /**\n * @dev Returns the number of values on the set. O(1).\n */\n function _length(Set storage set) private view returns (uint256) {\n return set._values.length;\n }\n\n /**\n * @dev Returns the value stored at position `index` in the set. O(1).\n *\n * Note that there are no guarantees on the ordering of values inside the\n * array, and it may change when more values are added or removed.\n *\n * Requirements:\n *\n * - `index` must be strictly less than {length}.\n */\n function _at(Set storage set, uint256 index) private view returns (bytes32) {\n return set._values[index];\n }\n\n // Bytes32Set\n\n struct Bytes32Set {\n Set _inner;\n }\n\n /**\n * @dev Add a value to a set. O(1).\n *\n * Returns true if the value was added to the set, that is if it was not\n * already present.\n */\n function add(Bytes32Set storage set, bytes32 value) internal returns (bool) {\n return _add(set._inner, value);\n }\n\n /**\n * @dev Removes a value from a set. O(1).\n *\n * Returns true if the value was removed from the set, that is if it was\n * present.\n */\n function remove(Bytes32Set storage set, bytes32 value) internal returns (bool) {\n return _remove(set._inner, value);\n }\n\n /**\n * @dev Returns true if the value is in the set. O(1).\n */\n function contains(Bytes32Set storage set, bytes32 value) internal view returns (bool) {\n return _contains(set._inner, value);\n }\n\n /**\n * @dev Returns the number of values in the set. O(1).\n */\n function length(Bytes32Set storage set) internal view returns (uint256) {\n return _length(set._inner);\n }\n\n /**\n * @dev Returns the value stored at position `index` in the set. O(1).\n *\n * Note that there are no guarantees on the ordering of values inside the\n * array, and it may change when more values are added or removed.\n *\n * Requirements:\n *\n * - `index` must be strictly less than {length}.\n */\n function at(Bytes32Set storage set, uint256 index) internal view returns (bytes32) {\n return _at(set._inner, index);\n }\n\n // AddressSet\n\n struct AddressSet {\n Set _inner;\n }\n\n /**\n * @dev Add a value to a set. O(1).\n *\n * Returns true if the value was added to the set, that is if it was not\n * already present.\n */\n function add(AddressSet storage set, address value) internal returns (bool) {\n return _add(set._inner, bytes32(uint256(uint160(value))));\n }\n\n /**\n * @dev Removes a value from a set. O(1).\n *\n * Returns true if the value was removed from the set, that is if it was\n * present.\n */\n function remove(AddressSet storage set, address value) internal returns (bool) {\n return _remove(set._inner, bytes32(uint256(uint160(value))));\n }\n\n /**\n * @dev Returns true if the value is in the set. O(1).\n */\n function contains(AddressSet storage set, address value) internal view returns (bool) {\n return _contains(set._inner, bytes32(uint256(uint160(value))));\n }\n\n /**\n * @dev Returns the number of values in the set. O(1).\n */\n function length(AddressSet storage set) internal view returns (uint256) {\n return _length(set._inner);\n }\n\n /**\n * @dev Returns the value stored at position `index` in the set. O(1).\n *\n * Note that there are no guarantees on the ordering of values inside the\n * array, and it may change when more values are added or removed.\n *\n * Requirements:\n *\n * - `index` must be strictly less than {length}.\n */\n function at(AddressSet storage set, uint256 index) internal view returns (address) {\n return address(uint160(uint256(_at(set._inner, index))));\n }\n\n // UintSet\n\n struct UintSet {\n Set _inner;\n }\n\n /**\n * @dev Add a value to a set. O(1).\n *\n * Returns true if the value was added to the set, that is if it was not\n * already present.\n */\n function add(UintSet storage set, uint256 value) internal returns (bool) {\n return _add(set._inner, bytes32(value));\n }\n\n /**\n * @dev Removes a value from a set. O(1).\n *\n * Returns true if the value was removed from the set, that is if it was\n * present.\n */\n function remove(UintSet storage set, uint256 value) internal returns (bool) {\n return _remove(set._inner, bytes32(value));\n }\n\n /**\n * @dev Returns true if the value is in the set. O(1).\n */\n function contains(UintSet storage set, uint256 value) internal view returns (bool) {\n return _contains(set._inner, bytes32(value));\n }\n\n /**\n * @dev Returns the number of values on the set. O(1).\n */\n function length(UintSet storage set) internal view returns (uint256) {\n return _length(set._inner);\n }\n\n /**\n * @dev Returns the value stored at position `index` in the set. O(1).\n *\n * Note that there are no guarantees on the ordering of values inside the\n * array, and it may change when more values are added or removed.\n *\n * Requirements:\n *\n * - `index` must be strictly less than {length}.\n */\n function at(UintSet storage set, uint256 index) internal view returns (uint256) {\n return uint256(_at(set._inner, index));\n }\n}\n" + }, + "@openzeppelin/contracts-upgradeable/utils/ContextUpgradeable.sol": { + "content": "// SPDX-License-Identifier: MIT\n\npragma solidity ^0.8.0;\nimport \"../proxy/utils/Initializable.sol\";\n\n/*\n * @dev Provides information about the current execution context, including the\n * sender of the transaction and its data. While these are generally available\n * via msg.sender and msg.data, they should not be accessed in such a direct\n * manner, since when dealing with meta-transactions the account sending and\n * paying for execution may not be the actual sender (as far as an application\n * is concerned).\n *\n * This contract is only required for intermediate, library-like contracts.\n */\nabstract contract ContextUpgradeable is Initializable {\n function __Context_init() internal initializer {\n __Context_init_unchained();\n }\n\n function __Context_init_unchained() internal initializer {\n }\n function _msgSender() internal view virtual returns (address) {\n return msg.sender;\n }\n\n function _msgData() internal view virtual returns (bytes calldata) {\n return msg.data;\n }\n uint256[50] private __gap;\n}\n" + }, + "@openzeppelin/contracts-upgradeable/utils/StringsUpgradeable.sol": { + "content": "// SPDX-License-Identifier: MIT\n\npragma solidity ^0.8.0;\n\n/**\n * @dev String operations.\n */\nlibrary StringsUpgradeable {\n bytes16 private constant _HEX_SYMBOLS = \"0123456789abcdef\";\n\n /**\n * @dev Converts a `uint256` to its ASCII `string` decimal representation.\n */\n function toString(uint256 value) internal pure returns (string memory) {\n // Inspired by OraclizeAPI's implementation - MIT licence\n // https://github.com/oraclize/ethereum-api/blob/b42146b063c7d6ee1358846c198246239e9360e8/oraclizeAPI_0.4.25.sol\n\n if (value == 0) {\n return \"0\";\n }\n uint256 temp = value;\n uint256 digits;\n while (temp != 0) {\n digits++;\n temp /= 10;\n }\n bytes memory buffer = new bytes(digits);\n while (value != 0) {\n digits -= 1;\n buffer[digits] = bytes1(uint8(48 + uint256(value % 10)));\n value /= 10;\n }\n return string(buffer);\n }\n\n /**\n * @dev Converts a `uint256` to its ASCII `string` hexadecimal representation.\n */\n function toHexString(uint256 value) internal pure returns (string memory) {\n if (value == 0) {\n return \"0x00\";\n }\n uint256 temp = value;\n uint256 length = 0;\n while (temp != 0) {\n length++;\n temp >>= 8;\n }\n return toHexString(value, length);\n }\n\n /**\n * @dev Converts a `uint256` to its ASCII `string` hexadecimal representation with fixed length.\n */\n function toHexString(uint256 value, uint256 length) internal pure returns (string memory) {\n bytes memory buffer = new bytes(2 * length + 2);\n buffer[0] = \"0\";\n buffer[1] = \"x\";\n for (uint256 i = 2 * length + 1; i > 1; --i) {\n buffer[i] = _HEX_SYMBOLS[value & 0xf];\n value >>= 4;\n }\n require(value == 0, \"Strings: hex length insufficient\");\n return string(buffer);\n }\n}\n" + }, + "@openzeppelin/contracts-upgradeable/utils/introspection/ERC165Upgradeable.sol": { + "content": "// SPDX-License-Identifier: MIT\n\npragma solidity ^0.8.0;\n\nimport \"./IERC165Upgradeable.sol\";\nimport \"../../proxy/utils/Initializable.sol\";\n\n/**\n * @dev Implementation of the {IERC165} interface.\n *\n * Contracts that want to implement ERC165 should inherit from this contract and override {supportsInterface} to check\n * for the additional interface id that will be supported. For example:\n *\n * ```solidity\n * function supportsInterface(bytes4 interfaceId) public view virtual override returns (bool) {\n * return interfaceId == type(MyInterface).interfaceId || super.supportsInterface(interfaceId);\n * }\n * ```\n *\n * Alternatively, {ERC165Storage} provides an easier to use but more expensive implementation.\n */\nabstract contract ERC165Upgradeable is Initializable, IERC165Upgradeable {\n function __ERC165_init() internal initializer {\n __ERC165_init_unchained();\n }\n\n function __ERC165_init_unchained() internal initializer {\n }\n /**\n * @dev See {IERC165-supportsInterface}.\n */\n function supportsInterface(bytes4 interfaceId) public view virtual override returns (bool) {\n return interfaceId == type(IERC165Upgradeable).interfaceId;\n }\n uint256[50] private __gap;\n}\n" + }, + "@openzeppelin/contracts-upgradeable/utils/introspection/IERC165Upgradeable.sol": { + "content": "// SPDX-License-Identifier: MIT\n\npragma solidity ^0.8.0;\n\n/**\n * @dev Interface of the ERC165 standard, as defined in the\n * https://eips.ethereum.org/EIPS/eip-165[EIP].\n *\n * Implementers can declare support of contract interfaces, which can then be\n * queried by others ({ERC165Checker}).\n *\n * For an implementation, see {ERC165}.\n */\ninterface IERC165Upgradeable {\n /**\n * @dev Returns true if this contract implements the interface defined by\n * `interfaceId`. See the corresponding\n * https://eips.ethereum.org/EIPS/eip-165#how-interfaces-are-identified[EIP section]\n * to learn more about how these ids are created.\n *\n * This function call must use less than 30 000 gas.\n */\n function supportsInterface(bytes4 interfaceId) external view returns (bool);\n}\n" + } + }, + "settings": { + "optimizer": { + "enabled": false, + "runs": 200 + }, + "outputSelection": { + "*": { + "*": [ + "abi", + "evm.bytecode", + "evm.deployedBytecode", + "evm.methodIdentifiers", + "metadata", + "devdoc", + "userdoc", + "storageLayout", + "evm.gasEstimates" + ], + "": [ + "ast" + ] + } + }, + "metadata": { + "useLiteralContent": true + } + } +} \ No newline at end of file diff --git a/hardhat.config.ts b/hardhat.config.ts new file mode 100644 index 00000000..9a0ed92f --- /dev/null +++ b/hardhat.config.ts @@ -0,0 +1,86 @@ +import 'dotenv/config'; +import {HardhatUserConfig} from 'hardhat/types'; +import 'hardhat-deploy'; +import '@nomiclabs/hardhat-ethers'; +import 'hardhat-gas-reporter'; +import '@typechain/hardhat'; +import 'solidity-coverage'; +import {node_url, accounts} from './utils/network'; + +// While waiting for hardhat PR: https://github.com/nomiclabs/hardhat/pull/1542 +if (process.env.HARDHAT_FORK) { + process.env['HARDHAT_DEPLOY_FORK'] = process.env.HARDHAT_FORK; +} + +const config: HardhatUserConfig = { + solidity: { + version: '0.8.7', + }, + namedAccounts: { + deployer: 0, + }, + networks: { + hardhat: { + initialBaseFeePerGas: 0, // to fix : https://github.com/sc-forks/solidity-coverage/issues/652, see https://github.com/sc-forks/solidity-coverage/issues/652#issuecomment-896330136 + // process.env.HARDHAT_FORK will specify the network that the fork is made from. + // this line ensure the use of the corresponding accounts + accounts: accounts(process.env.HARDHAT_FORK), + forking: process.env.HARDHAT_FORK + ? { + // TODO once PR merged : network: process.env.HARDHAT_FORK, + url: node_url(process.env.HARDHAT_FORK), + blockNumber: process.env.HARDHAT_FORK_NUMBER + ? parseInt(process.env.HARDHAT_FORK_NUMBER) + : undefined, + } + : undefined, + }, + localhost: { + url: node_url('localhost'), + accounts: accounts(), + }, + staging: { + url: node_url('rinkeby'), + accounts: accounts('rinkeby'), + }, + production: { + url: node_url('mainnet'), + accounts: accounts('mainnet'), + }, + mainnet: { + url: node_url('mainnet'), + accounts: accounts('mainnet'), + }, + rinkeby: { + url: node_url('rinkeby'), + accounts: accounts('rinkeby'), + }, + kovan: { + url: node_url('kovan'), + accounts: accounts('kovan'), + }, + goerli: { + url: node_url('goerli'), + accounts: accounts('goerli'), + }, + }, + paths: { + sources: 'src', + }, + gasReporter: { + currency: 'USD', + gasPrice: 100, + enabled: process.env.REPORT_GAS ? true : false, + coinmarketcap: process.env.COINMARKETCAP_API_KEY, + maxMethodDiff: 10, + }, + typechain: { + outDir: 'typechain', + target: 'ethers-v5', + }, + mocha: { + timeout: 0, + }, +}; + +export default config; diff --git a/migrations/1_darknodes.js b/migrations/1_darknodes.js deleted file mode 100644 index 54016bea..00000000 --- a/migrations/1_darknodes.js +++ /dev/null @@ -1,520 +0,0 @@ -/// - -const BN = require("bn.js"); -const { execSync } = require("child_process"); - -const RenToken = artifacts.require("RenToken"); -const DarknodePayment = artifacts.require("DarknodePayment"); -const DarknodePaymentStore = artifacts.require("DarknodePaymentStore"); -const ClaimlessRewards = artifacts.require("ClaimlessRewards"); -const DarknodeRegistryStore = artifacts.require("DarknodeRegistryStore"); -const DarknodeRegistryProxy = artifacts.require("DarknodeRegistryProxy"); -const DarknodeRegistryLogicV1 = artifacts.require("DarknodeRegistryLogicV1"); -const DarknodeSlasher = artifacts.require("DarknodeSlasher"); -const Protocol = artifacts.require("Protocol"); -const ClaimRewards = artifacts.require("ClaimRewards"); -const GetOperatorDarknodes = artifacts.require("GetOperatorDarknodes"); -const RenProxyAdmin = artifacts.require("RenProxyAdmin"); - -const networks = require("./networks.js"); - -const { encodeCallData } = require("./encode"); - -const NULL = "0x0000000000000000000000000000000000000000"; - -const gitCommit = () => - execSync("git describe --always --long") - .toString() - .trim(); - -/** - * @dev In order to specify what contracts to re-deploy, update `networks.js`. - * - * For the network you want to use, set the contracts' addresses to `""` and run: - * `NETWORK=testnet yarn deploy` (replacing network) - * - * Don't forget to verify the contracts on etherscan: - * `NETWORK=testnet yarn verify DarknodePayment DarknodePaymentStore` - * (replacing network and contract names) - * - * @param {any} deployer - * @param {string} network - */ -module.exports = async function(deployer, network) { - const contractOwner = (await web3.eth.getAccounts())[0]; - const Ox = web3.utils.toChecksumAddress; - - deployer.logger.log( - `Deploying to ${network} (${network.replace("-fork", "")})...` - ); - - network = network.replace("-fork", ""); - - const addresses = networks[network] || {}; - const config = networks[network] - ? networks[network].config - : networks.config; - - const VERSION_STRING = `${network}-${gitCommit()}`; - - RenToken.address = addresses.RenToken || ""; - DarknodeSlasher.address = addresses.DarknodeSlasher || ""; - DarknodeRegistryProxy.address = addresses.DarknodeRegistryProxy || ""; - DarknodeRegistryLogicV1.address = addresses.DarknodeRegistryLogicV1 || ""; - DarknodeRegistryStore.address = addresses.DarknodeRegistryStore || ""; - DarknodePaymentStore.address = addresses.DarknodePaymentStore || ""; - DarknodePayment.address = addresses.DarknodePayment || ""; - ClaimlessRewards.address = addresses.ClaimlessRewards || ""; - Protocol.address = addresses.Protocol || ""; - RenProxyAdmin.address = addresses.RenProxyAdmin || ""; - GetOperatorDarknodes.address = addresses.GetOperatorDarknodes || ""; - ClaimRewards.address = addresses.ClaimRewards || ""; - const tokens = addresses.tokens || {}; - - let actionCount = 0; - - /** GetOperatorDarknodes **************************************************************/ - - // !!! 0x4e27a3e21e747cf875ad5829b6d9cb7700b8b5f0 - // if (!GetOperatorDarknodes.address) { - // deployer.logger.log("Deploying GetOperatorDarknodes"); - // await deployer.deploy( - // GetOperatorDarknodes, - // DarknodeRegistryProxy.address - // ); - // actionCount++; - // } - // const getOperatorDarknodes = await GetOperatorDarknodes.at( - // GetOperatorDarknodes.address - // ); - - /** PROXY ADMIN ***********************************************************/ - if (!RenProxyAdmin.address) { - deployer.logger.log("Deploying Proxy "); - await deployer.deploy(RenProxyAdmin); - actionCount++; - } - let renProxyAdmin = await RenProxyAdmin.at(RenProxyAdmin.address); - - // /** GetOperatorDarknodes **************************************************************/ - // if (!GetOperatorDarknodes.address) { - // deployer.logger.log("Deploying GetOperatorDarknodes"); - // await deployer.deploy(GetOperatorDarknodes); - // actionCount++; - // } - // const getOperatorDarknodes = await GetOperatorDarknodes.at( - // GetOperatorDarknodes.address - // ); - - /** PROTOCOL **************************************************************/ - if (!Protocol.address) { - deployer.logger.log("Deploying Protocol"); - await deployer.deploy(Protocol); - actionCount++; - } - const protocol = await Protocol.at(Protocol.address); - await protocol.__Protocol_init(contractOwner); - - /** Ren TOKEN *************************************************************/ - if (!RenToken.address) { - deployer.logger.log("Deploying RenToken"); - await deployer.deploy(RenToken); - actionCount++; - } - - /** ClaimRewards **************************************************************/ - if (!ClaimRewards.address) { - deployer.logger.log("Deploying ClaimRewards"); - await deployer.deploy(ClaimRewards); - actionCount++; - } - // const claimRewards = await ClaimRewards.at(ClaimRewards.address); - - /** DARKNODE REGISTRY *****************************************************/ - if (!DarknodeRegistryStore.address) { - deployer.logger.log("Deploying DarknodeRegistryStore"); - await deployer.deploy( - DarknodeRegistryStore, - VERSION_STRING, - RenToken.address - ); - actionCount++; - } - const darknodeRegistryStore = await DarknodeRegistryStore.at( - DarknodeRegistryStore.address - ); - - if (!DarknodeRegistryLogicV1.address) { - deployer.logger.log("Deploying DarknodeRegistryLogicV1"); - await deployer.deploy(DarknodeRegistryLogicV1); - } - const darknodeRegistryLogic = await DarknodeRegistryLogicV1.at( - DarknodeRegistryLogicV1.address - ); - const darknodeRegistryParameters = { - types: [ - "string", - "address", - "address", - "uint256", - "uint256", - "uint256", - "uint256" - ], - values: [ - VERSION_STRING, - RenToken.address, - DarknodeRegistryStore.address, - config.MINIMUM_BOND.toString(), - config.MINIMUM_POD_SIZE, - config.MINIMUM_EPOCH_INTERVAL_SECONDS, - 0 - ] - }; - - // Initialize darknodeRegistryLogic so others can't initialize it. - const darknodeRegistryLogicOwner = await darknodeRegistryLogic.owner(); - if (Ox(darknodeRegistryLogicOwner) === Ox(NULL)) { - deployer.logger.log("Ensuring DarknodeRegistryLogic is initialized"); - await darknodeRegistryLogic.initialize( - "", - NULL, - NULL, - "0", - "0", - "0", - 0 - ); - actionCount++; - } - - let darknodeRegistryProxy; - if (!DarknodeRegistryProxy.address) { - deployer.logger.log("Deploying DarknodeRegistry"); - await deployer.deploy(DarknodeRegistryProxy); - darknodeRegistryProxy = await DarknodeRegistryProxy.at( - DarknodeRegistryProxy.address - ); - await darknodeRegistryProxy.initialize( - darknodeRegistryLogic.address, - renProxyAdmin.address, - encodeCallData( - web3, - "initialize", - darknodeRegistryParameters.types, - darknodeRegistryParameters.values - ) - ); - actionCount++; - } else { - darknodeRegistryProxy = await DarknodeRegistryProxy.at( - DarknodeRegistryProxy.address - ); - } - const darknodeRegistry = await DarknodeRegistryLogicV1.at( - DarknodeRegistryProxy.address - ); - - const darknodeRegistryProxyLogic = await renProxyAdmin.getProxyImplementation( - darknodeRegistryProxy.address - ); - if (Ox(darknodeRegistryProxyLogic) !== Ox(darknodeRegistryLogic.address)) { - deployer.logger.log( - `DarknodeRegistryProxy is pointing to out-dated ProtocolLogic. Was ${Ox( - darknodeRegistryProxyLogic - )}, now is ${Ox(darknodeRegistryLogic.address)}` - ); - await renProxyAdmin.upgrade( - darknodeRegistryProxy.address, - darknodeRegistryLogic.address - ); - actionCount++; - } - - const storeOwner = await darknodeRegistryStore.owner(); - if (Ox(storeOwner) !== Ox(darknodeRegistry.address)) { - deployer.logger.log( - "Linking DarknodeRegistryStore and DarknodeRegistry" - ); - if (Ox(storeOwner) === Ox(contractOwner)) { - // Initiate ownership transfer of DNR store - const pendingOwner = await darknodeRegistryStore.pendingOwner(); - if (Ox(pendingOwner) !== Ox(darknodeRegistry.address)) { - deployer.logger.log( - "Transferring DarknodeRegistryStore ownership" - ); - await darknodeRegistryStore.transferOwnership( - darknodeRegistry.address - ); - } - - // Claim ownership - deployer.logger.log(`Claiming DNRS ownership in DNR`); - await darknodeRegistry.claimStoreOwnership(); - } else { - deployer.logger.log( - `Transferring DNRS ownership from ${storeOwner} to new DNR` - ); - const oldDNR = await DarknodeRegistryLogicV1.at(storeOwner); - oldDNR.transferStoreOwnership(darknodeRegistry.address); - // This will also call claim, but we try anyway because older - // contracts didn't: - try { - // Claim ownership - await darknodeRegistry.claimStoreOwnership(); - } catch (error) { - // Ignore - } - } - actionCount++; - } - - const protocolDarknodeRegistry = await protocol.getContract( - "DarknodeRegistry" - ); - if (Ox(protocolDarknodeRegistry) !== Ox(darknodeRegistry.address)) { - deployer.logger.log( - `Updating DarknodeRegistry in Protocol contract. Was ${protocolDarknodeRegistry}, now is ${darknodeRegistry.address}` - ); - await protocol.updateContract( - "DarknodeRegistry", - darknodeRegistry.address - ); - actionCount++; - } - - const renInDNR = await darknodeRegistry.ren(); - if (Ox(renInDNR) !== Ox(RenToken.address)) { - console.error( - `ERROR! DNR is pointing to wrong REN token - ${Ox( - renInDNR - )} instead of ${Ox( - RenToken.address - )} - DNR should be updated or redeployed.` - ); - } - - const renInDNRS = await darknodeRegistryStore.ren(); - if (Ox(renInDNRS) !== Ox(RenToken.address)) { - console.error( - `ERROR! DNRS is pointing to wrong REN token - ${Ox( - renInDNRS - )} instead of ${Ox( - RenToken.address - )} - DNRS should be updated or redeployed.` - ); - } - - /*************************************************************************** - ** SLASHER **************************************************************** - **************************************************************************/ - if (!DarknodeSlasher.address) { - deployer.logger.log("Deploying DarknodeSlasher"); - await deployer.deploy(DarknodeSlasher, darknodeRegistry.address); - actionCount++; - } - const slasher = await DarknodeSlasher.at(DarknodeSlasher.address); - - const dnrInSlasher = await slasher.darknodeRegistry(); - if (Ox(dnrInSlasher) !== Ox(darknodeRegistry.address)) { - deployer.logger.log("Updating DNR in Slasher"); - await slasher.updateDarknodeRegistry(darknodeRegistry.address); - actionCount++; - } - - // Set the slash percentages - const blacklistSlashPercent = new BN( - await slasher.blacklistSlashPercent() - ).toNumber(); - if (blacklistSlashPercent !== config.BLACKLIST_SLASH_PERCENT) { - deployer.logger.log("Setting blacklist slash percent"); - await slasher.setBlacklistSlashPercent( - new BN(config.BLACKLIST_SLASH_PERCENT) - ); - actionCount++; - } - const maliciousSlashPercent = new BN( - await slasher.maliciousSlashPercent() - ).toNumber(); - if (maliciousSlashPercent !== config.MALICIOUS_SLASH_PERCENT) { - deployer.logger.log("Setting malicious slash percent"); - await slasher.setMaliciousSlashPercent( - new BN(config.MALICIOUS_SLASH_PERCENT) - ); - actionCount++; - } - const secretRevealSlashPercent = new BN( - await slasher.secretRevealSlashPercent() - ).toNumber(); - if (secretRevealSlashPercent !== config.SECRET_REVEAL_SLASH_PERCENT) { - deployer.logger.log("Setting secret reveal slash percent"); - await slasher.setSecretRevealSlashPercent( - new BN(config.SECRET_REVEAL_SLASH_PERCENT) - ); - actionCount++; - } - - const currentSlasher = await darknodeRegistry.slasher(); - const nextSlasher = await darknodeRegistry.nextSlasher(); - if ( - Ox(currentSlasher) != Ox(DarknodeSlasher.address) && - Ox(nextSlasher) != Ox(DarknodeSlasher.address) - ) { - deployer.logger.log("Linking DarknodeSlasher and DarknodeRegistry"); - // Update slasher address - await darknodeRegistry.updateSlasher(DarknodeSlasher.address); - actionCount++; - } - - /*************************************************************************** - ** DARKNODE PAYMENT ******************************************************* - **************************************************************************/ - if (!DarknodePaymentStore.address) { - deployer.logger.log("Deploying DarknodePaymentStore"); - await deployer.deploy(DarknodePaymentStore, VERSION_STRING); - actionCount++; - } - - if (!DarknodePayment.address) { - // Deploy Darknode Payment - deployer.logger.log("Deploying DarknodePayment"); - await deployer.deploy( - DarknodePayment, - VERSION_STRING, - darknodeRegistry.address, - DarknodePaymentStore.address, - config.DARKNODE_PAYOUT_PERCENT // Reward payout percentage (50% is paid out at any given cycle) - ); - actionCount++; - } - - if (!ClaimlessRewards.address) { - // Deploy Darknode Payment - deployer.logger.log("Deploying ClaimlessRewards"); - await deployer.deploy( - ClaimlessRewards, - darknodeRegistry.address, - DarknodePaymentStore.address, - config.communityFund || contractOwner, - config.communityFundNumerator || 50000 - ); - actionCount++; - } - - // Update darknode payment address - if ( - Ox(await darknodeRegistry.darknodePayment()) !== - Ox(DarknodePayment.address) - ) { - deployer.logger.log("Updating DarknodeRegistry's darknode payment"); - await darknodeRegistry.updateDarknodePayment(DarknodePayment.address); - actionCount++; - } - - const darknodePayment = await DarknodePayment.at(DarknodePayment.address); - for (const tokenName of Object.keys(tokens)) { - const tokenAddress = tokens[tokenName]; - const registered = - ( - await darknodePayment.registeredTokenIndex(tokenAddress) - ).toString() !== "0"; - const pendingRegistration = await darknodePayment.tokenPendingRegistration( - tokenAddress - ); - if (!registered && !pendingRegistration) { - deployer.logger.log( - `Registering token ${tokenName} in DarknodePayment` - ); - await darknodePayment.registerToken(tokenAddress); - actionCount++; - } - } - - const dnrInDarknodePayment = await darknodePayment.darknodeRegistry(); - if (Ox(dnrInDarknodePayment) !== Ox(darknodeRegistry.address)) { - deployer.logger.log("DNP is still pointing to Forwarder."); - - // deployer.logger.log("Updating DNR in DNP"); - // await darknodePayment.updateDarknodeRegistry(darknodeRegistry.address); - // actionCount++; - } - - const darknodePaymentStore = await DarknodePaymentStore.at( - DarknodePaymentStore.address - ); - const currentOwner = await darknodePaymentStore.owner(); - if (Ox(currentOwner) !== Ox(DarknodePayment.address)) { - deployer.logger.log("Linking DarknodePaymentStore and DarknodePayment"); - - if (currentOwner === contractOwner) { - await darknodePaymentStore.transferOwnership( - DarknodePayment.address - ); - - // Update DarknodePaymentStore address - deployer.logger.log(`Claiming DNPS ownership in DNP`); - await darknodePayment.claimStoreOwnership(); - } else { - deployer.logger.log( - `Transferring DNPS ownership from ${currentOwner} to new DNP` - ); - const oldDarknodePayment = await DarknodePayment.at(currentOwner); - await oldDarknodePayment.transferStoreOwnership( - DarknodePayment.address - ); - // This will also call claim, but we try anyway because older - // contracts didn't: - try { - // Claim ownership - await darknodePayment.claimStoreOwnership(); - } catch (error) { - // Ignore - } - } - actionCount++; - } - - // if (changeCycle) { - // try { - // deployer.logger.log("Attempting to change cycle"); - // await darknodePayment.changeCycle(); - // } catch (error) { - // deployer.logger.log("Unable to call darknodePayment.changeCycle()"); - // } - // } - - // Set the darknode payment cycle changer to the darknode registry - if ( - Ox(await darknodePayment.cycleChanger()) !== - Ox(darknodeRegistry.address) - ) { - deployer.logger.log("Setting the DarknodePayment's cycle changer"); - await darknodePayment.updateCycleChanger(darknodeRegistry.address); - actionCount++; - } - - deployer.logger.log(`Performed ${actionCount} updates.`); - - deployer.logger.log(` - - /* 1_darknodes.js */ - - RenProxyAdmin: "${RenProxyAdmin.address}", - RenToken: "${RenToken.address}", - - // Protocol - Protocol: "${Protocol.address}", - - // DNR - DarknodeRegistryStore: "${DarknodeRegistryStore.address}", - DarknodeRegistryLogicV1: "${DarknodeRegistryLogicV1.address}", - DarknodeRegistryProxy: "${DarknodeRegistryProxy.address}", - - // DNP - DarknodePaymentStore: "${DarknodePaymentStore.address}", - DarknodePayment: "${DarknodePayment.address}", - - // Slasher - DarknodeSlasher: "${DarknodeSlasher.address}", - `); -}; diff --git a/migrations/encode.js b/migrations/encode.js deleted file mode 100644 index 25d47b86..00000000 --- a/migrations/encode.js +++ /dev/null @@ -1,8 +0,0 @@ -const encodeCallData = (web3, functioName, parameterTypes, parameters) => { - return web3.eth.abi.encodeFunctionSignature(`${functioName}(${parameterTypes.join(",")})`) + - web3.eth.abi.encodeParameters(parameterTypes, parameters).slice(2); -}; - -module.exports = { - encodeCallData, -}; diff --git a/migrations/networks.js b/migrations/networks.js deleted file mode 100644 index 7ad4db8c..00000000 --- a/migrations/networks.js +++ /dev/null @@ -1,98 +0,0 @@ -const BN = require("bn.js"); - -const config = { - MINIMUM_BOND: new BN(100000).mul(new BN(10).pow(new BN(18))), - MINIMUM_POD_SIZE: 3, // 24 in production - MINIMUM_EPOCH_INTERVAL_SECONDS: 30, // 216000 in production, 1 month - DARKNODE_PAYOUT_PERCENT: 50, // Only payout 50% of the reward pool - BLACKLIST_SLASH_PERCENT: 0, // Don't slash bond for blacklisting - MALICIOUS_SLASH_PERCENT: 50, // Slash 50% of the bond - SECRET_REVEAL_SLASH_PERCENT: 100 // Slash 100% of the bond -}; - -module.exports = { - mainnet: { - RenProxyAdmin: "0xDf1D8eD27C54bBE5833320cf5a19fd9E73530145", - RenToken: "0x408e41876cCCDC0F92210600ef50372656052a38", - DarknodeSlasher: "0x64512ff05a27756694E306e483cBB725F1754C0e", - - // Protocol - ProtocolLogicV1: "0x8b49f212F2236F4f49bBeff878a73051a8915DE0", - ProtocolProxy: "0xc25167fFa19B4d9d03c7d5aa4682c7063F345b66", - - // DNR - DarknodeRegistryStore: "0x60Ab11FE605D2A2C3cf351824816772a131f8782", - DarknodeRegistryLogicV1: "0x33b53A700de61b6be01d65A758b3635584bCF140", - DarknodeRegistryProxy: "0x2D7b6C95aFeFFa50C068D50f89C5C0014e054f0A", - - // DNP - DarknodePaymentStore: "0xE33417797d6b8Aec9171d0d6516E88002fbe23E7", - DarknodePayment: "0x098e1708b920EFBdD7afe33Adb6a4CBa30c370B9", - - tokens: { - DAI: "0x6b175474e89094c44da98b954eedeac495271d0f", - ETH: "0xEeeeeEeeeEeEeeEeEeEeeEEEeeeeEeeeeeeeEEeE" - }, - - config: { - ...config - } - }, - testnet: { - RenProxyAdmin: "0x4C695C4Aa6238f0A7092733180328c2E64C912C7", - RenToken: "0x2cd647668494c1b15743ab283a0f980d90a87394", - DarknodeSlasher: "0x5B403bdC360A447290758c8BA779c44cdFC3476F", - - // Protocol - ProtocolLogicV1: "0x43d39d7ea61741f26E09D377F4E79B1F847Dc356", - ProtocolProxy: "0x59e23c087cA9bd9ce162875811CD6e99134D6d0F", - - // DNR - DarknodeRegistryStore: "0x9daa16aA19e37f3de06197a8B5E638EC5e487392", - DarknodeRegistryLogicV1: "0x046EDe9916e13De79d5530b67FF5dEbB7B72742C", - DarknodeRegistryProxy: "0x9954C9F839b31E82bc9CA98F234313112D269712", - - // DNP - DarknodePaymentStore: "0x0EC73cCDCd8e643d909D0c4b663Eb1B2Fb0b1e1C", - DarknodePayment: "0x023f2e94C3eb128D3bFa6317a3fF860BF93C1616", - - tokens: { - DAI: "0xc4375b7de8af5a38a93548eb8453a498222c4ff2", - ETH: "0xEeeeeEeeeEeEeeEeEeEeeEEEeeeeEeeeeeeeEEeE" - }, - - config: { - ...config - } - }, - - devnet: { - RenProxyAdmin: "0xA2C9D593bC096FbB3Cf5b869270645C470E5416B", - RenToken: "0x2cd647668494c1b15743ab283a0f980d90a87394", - DarknodeSlasher: "0xf4E4AdbDDfd6EBc9457ad7ab9249f63701942BE3", - - // Protocol - ProtocolLogicV1: "0x4535CB2f0697e797C534cb0853F25470A9f59037", - ProtocolProxy: "0x5045E727D9D9AcDe1F6DCae52B078EC30dC95455", - - // DNR - DarknodeRegistryStore: "0x3ccF0cd02ff15b59Ce2B152CdDE78551eFd34a62", - DarknodeRegistryLogicV1: "0x26D6fEC1C904EB5b86ACed6BB804b4ed35208704", - DarknodeRegistryProxy: "0x7B69e5e15D4c24c353Fea56f72E4C0c5B93dCb71", - - // DNP - DarknodePaymentStore: "0xfb98D6900330844CeAce6Ae4ae966D272bE1aeC3", - DarknodePayment: "0xC7F24fEDfbbAA5248E1F5a160cC30Dcbff9F1176", - - tokens: { - DAI: "0xc4375b7de8af5a38a93548eb8453a498222c4ff2", - ETH: "0xEeeeeEeeeEeEeeEeEeEeeEEEeeeeEeeeeeeeEEeE" - }, - - config: { - ...config - } - }, - - config -}; diff --git a/package.json b/package.json index 95ccf2ad..009d3003 100644 --- a/package.json +++ b/package.json @@ -1,73 +1,69 @@ { - "name": "@renproject/sol", - "version": "1.0.1", - "repository": "https://github.io/renproject/darknode-sol", - "public": true, - "scripts": { - "generate": "truffle compile && typechain --target truffle-v5 './build/development/*.json'", - "coverage": "yarn run generate && truffle run coverage", - "build": "yarn run generate && truffle build", - "test": "yarn run generate && truffle test", - "bindings:ts": "truffle compile && typechain --target web3-v1 \"./build/chaosnet/*.json\"", - "bindings:go": "solc --optimize darknode-sol=`pwd`/node_modules/darknode-sol @openzeppelin/upgrades=`pwd`/node_modules/@openzeppelin/upgrades @openzeppelin/contracts=`pwd`/node_modules/@openzeppelin/contracts --combined-json bin,abi,userdoc,devdoc,metadata $(find contracts -type f -name '*.sol') > go-abi.json && abigen -pkg bindings --out bindings.go --combined-json go-abi.json; rm go-abi.json", - "coveralls": "cat ./coverage/lcov.info | coveralls", - "prepare": "patch-package", - "deploy": "truffle migrate --network $NETWORK 2>&1 | tee $NETWORK-output.log", - "deploy-skipDryRun": "truffle migrate --network $NETWORK --skipDryRun 2>&1 | tee $NETWORK-output.log", - "clean-build": "echo \"Have all contracts been verified on Etherscan? Continuing in 10 seconds...\" && sleep 10 && grep -R -l 'networks\": {}' build --exclude-dir=development | xargs rm; node build/clean.js", - "verify": "truffle run verify --network $NETWORK", - "docs": "solidity-docgen --exclude contracts/migrations,contracts/test --solc-module solc --templates ./templates --helpers ./templates/helpers.js --extension=mdx", - "prepare-release": "npmignore" - }, - "dependencies": { - "@openzeppelin/contracts": "^2.5.1", - "@openzeppelin/contracts-ethereum-package": "^2.5.0", - "@openzeppelin/upgrades": "^2.8.0" - }, - "devDependencies": { - "@typechain/truffle-v5": "^5.0.0", - "@typechain/web3-v1": "^3.0.0", - "@types/chai": "^4.2.21", - "@types/chai-as-promised": "^7.1.4", - "@types/ethereumjs-abi": "^0.6.3", - "@types/mocha": "^9.0.0", - "@types/node": "^16.7.1", - "@types/seedrandom": "^3.0.1", - "bignumber.js": "^9.0.1", - "bn.js": "^5.2.0", - "chai": "^4.3.4", - "chai-as-promised": "^7.1.1", - "chai-bignumber": "github:ren-forks/chai-bignumber.git#afa6f46dcbef0b7e622dc27b9b3354fc67afafbc", - "coveralls": "^3.1.1", - "dotenv": "^10.0.0", - "eth-gas-reporter": "^0.2.22", - "ethereumjs-abi": "^0.6.8", - "ganache-cli": "^6.12.2", - "hash.js": "^1.1.7", - "immutable": "^4.0.0-rc.14", - "moment": "^2.29.1", - "npmignore": "^0.2.0", - "patch-package": "^6.4.7", - "seedrandom": "^3.0.5", - "solc": "^0.5.17", - "solidity-coverage": "^0.7.16", - "truffle": "^5.4.7", - "truffle-hdwallet-provider": "^1.0.17", - "truffle-plugin-verify": "0.5.11", - "truffle-typings": "^1.0.8", - "ts-node": "^10.2.1", - "tslint": "^6.1.3", - "typechain": "^5.1.2", - "typescript": "^4.3.5", - "web3": "^2.0.0-alpha", - "web3-core": "^1.5.2", - "web3-utils": "^2.0.0-alpha" - }, - "resolutions": { - "solc": "0.5.17", - "sol-merger": "1.1.1" - }, - "prettier": { - "tabWidth": 4 - } + "name": "@renproject/darknode-sol", + "version": "2.0.0", + "repository": "https://github.io/renproject/darknode-sol", + "public": true, + "author": "renproject", + "license": "GPL-3.0-only", + "dependencies": { + "@openzeppelin/contracts": "^4.3.0", + "@openzeppelin/contracts-upgradeable": "^4.3.0" + }, + "devDependencies": { + "@nomiclabs/hardhat-ethers": "npm:hardhat-deploy-ethers@0.3.0-beta.10", + "@typechain/ethers-v5": "^7.0.1", + "@typechain/hardhat": "^2.3.0", + "@types/chai": "^4.2.21", + "@types/mocha": "^9.0.0", + "@types/node": "12.20.20", + "@typescript-eslint/eslint-plugin": "^4.29.2", + "@typescript-eslint/parser": "^4.29.2", + "chai": "^4.3.4", + "chai-ethers": "^0.0.1", + "cross-env": "^7.0.3", + "dotenv": "^10.0.0", + "eslint": "^7.32.0", + "eslint-config-prettier": "^8.3.0", + "ethers": "^5.4.5", + "fs-extra": "^10.0.0", + "hardhat": "^2.6.1", + "hardhat-deploy": "^0.8.11", + "hardhat-gas-reporter": "^1.0.4", + "mocha": "^9.1.0", + "patch-package": "^6.4.7", + "postinstall-postinstall": "^2.1.0", + "prettier": "^2.3.2", + "prettier-plugin-solidity": "^1.0.0-beta.17", + "solhint": "^3.3.6", + "solhint-plugin-prettier": "^0.0.5", + "solidity-coverage": "^0.7.16", + "ts-generator": "^0.1.1", + "ts-node": "^10.2.1", + "typechain": "^5.1.2", + "typescript": "^4.3.5" + }, + "scripts": { + "postinstall": "patch-package", + "prepare": "node ./config/.setup.js && hardhat typechain", + "lint": "eslint \"**/*.{js,ts}\" && solhint src/**/*.sol", + "lint:fix": "eslint --fix \"**/*.{js,ts}\" && solhint --fix src/**/*.sol", + "format": "prettier --check \"**/*.{ts,js,sol}\"", + "format:fix": "prettier --write \"**/*.{ts,js,sol}\"", + "compile": "hardhat compile", + "void:deploy": "hardhat deploy", + "test": "cross-env HARDHAT_DEPLOY_FIXTURE=true HARDHAT_COMPILE=true mocha --config ./config/.mocharc.js test", + "gas": "cross-env REPORT_GAS=true hardhat test", + "coverage": "cross-env HARDHAT_DEPLOY_FIXTURE=true hardhat coverage", + "dev": "hardhat node --watch --export contractsInfo.json", + "local:dev": "hardhat --network localhost deploy --watch", + "execute": "node ./config/_scripts.js run", + "deploy": "node ./config/_scripts.js deploy", + "export": "node ./config/_scripts.js export", + "fork:execute": "node ./config/_scripts.js fork:run", + "fork:deploy": "node ./config/_scripts.js fork:deploy", + "fork:dev": "node ./config/_scripts.js fork:dev", + "fork:node": "node ./config/_scripts.js fork:node", + "fork:test": "node ./config/_scripts.js fork:test", + "bindings:go": "solc --optimize darknode-sol=`pwd`/node_modules/darknode-sol @openzeppelin/upgrades=`pwd`/node_modules/@openzeppelin/upgrades @openzeppelin/contracts=`pwd`/node_modules/@openzeppelin/contracts --combined-json bin,abi,userdoc,devdoc,metadata $(find src -type f -name '*.sol') > go-abi.json && abigen --alias status=status2 -pkg bindings --out bindings.go --combined-json go-abi.json; rm go-abi.json" + } } diff --git a/patches/@openzeppelin+contracts+2.5.1.patch b/patches/@openzeppelin+contracts+2.5.1.patch deleted file mode 100644 index 9ec661d7..00000000 --- a/patches/@openzeppelin+contracts+2.5.1.patch +++ /dev/null @@ -1,27 +0,0 @@ -diff --git a/node_modules/@openzeppelin/contracts/cryptography/ECDSA.sol b/node_modules/@openzeppelin/contracts/cryptography/ECDSA.sol -index d85ce09..1d34ab2 100644 ---- a/node_modules/@openzeppelin/contracts/cryptography/ECDSA.sol -+++ b/node_modules/@openzeppelin/contracts/cryptography/ECDSA.sol -@@ -28,7 +28,7 @@ library ECDSA { - function recover(bytes32 hash, bytes memory signature) internal pure returns (address) { - // Check the signature length - if (signature.length != 65) { -- return (address(0)); -+ revert("ECDSA: signature length is invalid"); - } - - // Divide the signature in r, s and v variables -@@ -55,11 +55,11 @@ library ECDSA { - // vice versa. If your library also generates signatures with 0/1 for v instead 27/28, add 27 to v to accept - // these malleable signatures as well. - if (uint256(s) > 0x7FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF5D576E7357A4501DDFE92F46681B20A0) { -- return address(0); -+ revert("ECDSA: signature.s is in the wrong range"); - } - - if (v != 27 && v != 28) { -- return address(0); -+ revert("ECDSA: signature.v is in the wrong range"); - } - - // If the signature is valid (and not malleable), return the signer address diff --git a/patches/@openzeppelin+contracts-ethereum-package+2.5.0.patch b/patches/@openzeppelin+contracts-ethereum-package+2.5.0.patch deleted file mode 100644 index 4abe0212..00000000 --- a/patches/@openzeppelin+contracts-ethereum-package+2.5.0.patch +++ /dev/null @@ -1,27 +0,0 @@ -diff --git a/node_modules/@openzeppelin/contracts-ethereum-package/contracts/cryptography/ECDSA.sol b/node_modules/@openzeppelin/contracts-ethereum-package/contracts/cryptography/ECDSA.sol -index d85ce09..1d34ab2 100644 ---- a/node_modules/@openzeppelin/contracts-ethereum-package/contracts/cryptography/ECDSA.sol -+++ b/node_modules/@openzeppelin/contracts-ethereum-package/contracts/cryptography/ECDSA.sol -@@ -28,7 +28,7 @@ library ECDSA { - function recover(bytes32 hash, bytes memory signature) internal pure returns (address) { - // Check the signature length - if (signature.length != 65) { -- return (address(0)); -+ revert("ECDSA: signature length is invalid"); - } - - // Divide the signature in r, s and v variables -@@ -55,11 +55,11 @@ library ECDSA { - // vice versa. If your library also generates signatures with 0/1 for v instead 27/28, add 27 to v to accept - // these malleable signatures as well. - if (uint256(s) > 0x7FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF5D576E7357A4501DDFE92F46681B20A0) { -- return address(0); -+ revert("ECDSA: signature.s is in the wrong range"); - } - - if (v != 27 && v != 28) { -- return address(0); -+ revert("ECDSA: signature.v is in the wrong range"); - } - - // If the signature is valid (and not malleable), return the signer address diff --git a/patches/solidity-coverage+0.7.16.patch b/patches/solidity-coverage+0.7.16.patch new file mode 100644 index 00000000..91a5afb4 --- /dev/null +++ b/patches/solidity-coverage+0.7.16.patch @@ -0,0 +1,21 @@ +diff --git a/node_modules/solidity-coverage/plugins/resources/nomiclabs.utils.js b/node_modules/solidity-coverage/plugins/resources/nomiclabs.utils.js +index 3e6d5f0..e7decde 100644 +--- a/node_modules/solidity-coverage/plugins/resources/nomiclabs.utils.js ++++ b/node_modules/solidity-coverage/plugins/resources/nomiclabs.utils.js +@@ -133,12 +133,10 @@ function configureNetworkEnv(env, networkName, networkConfig, provider, isHardha + env.config.networks[networkName] = networkConfig; + env.config.defaultNetwork = networkName; + +- env.network = { +- name: networkName, +- config: networkConfig, +- provider: provider, +- isHardhatEVM: isHardhatEVM +- } ++ env.network.name = networkName; ++ env.network.config = networkConfig; ++ env.network.provider = provider; ++ env.network.isHardhatEVM = isHardhatEVM; + + env.ethereum = provider; + diff --git a/scripts/fundingFromCoinbase.ts b/scripts/fundingFromCoinbase.ts new file mode 100644 index 00000000..8f600c8e --- /dev/null +++ b/scripts/fundingFromCoinbase.ts @@ -0,0 +1,72 @@ +// script used to fund account from a geth coinbase account (geth --dev) +import {ethers, network} from 'hardhat'; +import {BigNumber, providers} from 'ethers'; + +const {JsonRpcProvider} = providers; + +function wait(numSec: number): Promise { + return new Promise((resolve) => { + setTimeout(resolve, numSec * 1000); + }); +} + +async function main() { + console.log('funding from coinbase ...'); + let found; + while (!found) { + try { + await ethers.provider.send('eth_chainId', []); + found = true; + } catch (e) {} // TODO timeout ? + if (!found) { + console.log(`retrying...`); + await wait(1); + } + } + + if (!('url' in network.config)) { + console.log('cannot run on in memory hardhat network.'); + return; + } + + const coinbase = await ethers.provider.send('eth_coinbase', []); + if (!coinbase) { + console.log('no coinbase'); + return; + } + const accounts = await ethers.provider.listAccounts(); + let accountsToFund = accounts; + if (coinbase === accounts[0]) { + accountsToFund = accounts.slice(1); + } + + const coinbaseBalance = await ethers.provider.getBalance(coinbase); + const nonce = await ethers.provider.getTransactionCount(coinbase); + const maxAmount = BigNumber.from('10000000000000000000'); + let amount = coinbaseBalance.div(accountsToFund.length); + if (amount.gt(maxAmount)) { + amount = maxAmount; + } + + if (coinbaseBalance.gt(0)) { + const rawProvider = new JsonRpcProvider(network.config.url); + const coinbaseSigner = rawProvider.getSigner(coinbase); + for (let i = 0; i < accountsToFund.length; i++) { + const tx = await coinbaseSigner.sendTransaction({ + to: accountsToFund[i], + value: amount.sub(21000).toHexString(), + nonce: BigNumber.from(nonce + i).toHexString(), + }); + console.log(tx.hash); + } + } else { + console.log('coinbase has zero balance'); + } +} + +main() + .then(() => process.exit(0)) + .catch((error) => { + console.error(error); + process.exit(1); + }); diff --git a/src/Bindings.sol b/src/Bindings.sol new file mode 100644 index 00000000..195846ba --- /dev/null +++ b/src/Bindings.sol @@ -0,0 +1,11 @@ +// SPDX-License-Identifier: GPL-3.0-only + +pragma solidity ^0.8.7; + +import "./RenProxyAdmin.sol"; + +/// @notice Bindings imports all of the contracts for generating bindings. +/* solium-disable-next-line no-empty-blocks */ +contract Bindings { + +} diff --git a/contracts/DarknodePayment/ClaimRewards.sol b/src/ClaimRewards.sol similarity index 74% rename from contracts/DarknodePayment/ClaimRewards.sol rename to src/ClaimRewards.sol index 30932f18..383abd70 100644 --- a/contracts/DarknodePayment/ClaimRewards.sol +++ b/src/ClaimRewards.sol @@ -1,10 +1,12 @@ -//SPDX-License-Identifier: MIT +// SPDX-License-Identifier: GPL-3.0-only -pragma solidity 0.5.17; +pragma solidity ^0.8.7; -import "./ValidString.sol"; +import {TransparentUpgradeableProxy} from "@openzeppelin/contracts/proxy/transparent/TransparentUpgradeableProxy.sol"; -contract ClaimRewards { +import {ValidString} from "./ValidString.sol"; + +contract ClaimRewardsV1 { uint256 public constant BPS_DENOMINATOR = 10000; event LogClaimRewards( @@ -20,10 +22,7 @@ contract ClaimRewards { ); modifier validFractionInBps(uint256 fraction_) { - require( - fraction_ <= BPS_DENOMINATOR, - "ClaimRewards: invalid fractionInBps" - ); + require(fraction_ <= BPS_DENOMINATOR, "ClaimRewards: invalid fractionInBps"); _; } @@ -62,32 +61,17 @@ contract ClaimRewards { uint256 fractionInBps_ ) public validFractionInBps(fractionInBps_) { // Validate asset symbol. - require( - ValidString.isNotEmpty(assetSymbol_), - "ClaimRewards: invalid empty asset" - ); - require( - ValidString.isAlphanumeric(assetSymbol_), - "ClaimRewards: invalid asset" - ); + require(ValidString.isNotEmpty(assetSymbol_), "ClaimRewards: invalid empty asset"); + require(ValidString.isAlphanumeric(assetSymbol_), "ClaimRewards: invalid asset"); // Validate recipient address. - require( - ValidString.isNotEmpty(recipientAddress_), - "ClaimRewards: invalid empty recipient address" - ); - require( - ValidString.isAlphanumeric(recipientAddress_), - "ClaimRewards: invalid recipient address" - ); + require(ValidString.isNotEmpty(recipientAddress_), "ClaimRewards: invalid empty recipient address"); + require(ValidString.isAlphanumeric(recipientAddress_), "ClaimRewards: invalid recipient address"); // Validate recipient chain. // Note that the chain can be empty - which is planned to represent the // asset's native lock chain. - require( - ValidString.isAlphanumeric(recipientChain_), - "ClaimRewards: invalid recipient chain" - ); + require(ValidString.isAlphanumeric(recipientChain_), "ClaimRewards: invalid recipient chain"); address operatorAddress = msg.sender; @@ -113,22 +97,11 @@ contract ClaimRewards { address recipientAddress_, uint256 fractionInBps_ ) public { - return - claimRewardsToChain( - assetSymbol_, - addressToString(recipientAddress_), - "Ethereum", - "", - fractionInBps_ - ); + return claimRewardsToChain(assetSymbol_, addressToString(recipientAddress_), "Ethereum", "", fractionInBps_); } // From https://ethereum.stackexchange.com/questions/8346/convert-address-to-string - function addressToString(address address_) - public - pure - returns (string memory) - { + function addressToString(address address_) public pure returns (string memory) { bytes memory data = abi.encodePacked(address_); bytes memory alphabet = "0123456789abcdef"; @@ -143,3 +116,11 @@ contract ClaimRewards { return string(str); } } + +contract ClaimRewardsProxy is TransparentUpgradeableProxy { + constructor( + address _logic, + address admin_, + bytes memory _data + ) TransparentUpgradeableProxy(_logic, admin_, _data) {} +} diff --git a/src/GetOperatorDarknodes.sol b/src/GetOperatorDarknodes.sol new file mode 100644 index 00000000..5f7b13b8 --- /dev/null +++ b/src/GetOperatorDarknodes.sol @@ -0,0 +1,41 @@ +// SPDX-License-Identifier: GPL-3.0-only + +pragma solidity ^0.8.7; + +interface IDarknodeRegistry { + function numDarknodes() external view returns (uint256); + + function getDarknodes(address _start, uint256 _count) external view returns (address[] memory); + + function getDarknodeOperator(address _darknodeID) external view returns (address payable); +} + +contract GetOperatorDarknodes { + IDarknodeRegistry public darknodeRegistry; + + constructor(address _darknodeRegistry) { + darknodeRegistry = IDarknodeRegistry(_darknodeRegistry); + } + + function getOperatorDarknodes(address _operator) public view returns (address[] memory) { + uint256 numDarknodes = darknodeRegistry.numDarknodes(); + address[] memory nodesPadded = new address[](numDarknodes); + + address[] memory allNodes = darknodeRegistry.getDarknodes(address(0), 0); + + uint256 j = 0; + for (uint256 i = 0; i < allNodes.length; i++) { + if (darknodeRegistry.getDarknodeOperator(allNodes[i]) == _operator) { + nodesPadded[j] = (allNodes[i]); + j++; + } + } + + address[] memory nodes = new address[](j); + for (uint256 i = 0; i < j; i++) { + nodes[i] = nodesPadded[i]; + } + + return nodes; + } +} diff --git a/src/Protocol.sol b/src/Protocol.sol new file mode 100644 index 00000000..e43296c4 --- /dev/null +++ b/src/Protocol.sol @@ -0,0 +1,41 @@ +// SPDX-License-Identifier: GPL-3.0-only + +pragma solidity ^0.8.7; + +import {AccessControlEnumerableUpgradeable} from "@openzeppelin/contracts-upgradeable/access/AccessControlEnumerableUpgradeable.sol"; +import {AccessControlUpgradeable} from "@openzeppelin/contracts-upgradeable/access/AccessControlUpgradeable.sol"; +import {Initializable} from "@openzeppelin/contracts-upgradeable/proxy/utils/Initializable.sol"; + +/** The Protocol contract is used to look-up other Ren contracts. */ +contract Protocol is Initializable, AccessControlEnumerableUpgradeable { + event LogContractUpdated(string contractName, address indexed contractAddress, string indexed contractNameIndexed); + + mapping(string => address) internal contractMap; + + bytes32 public constant CAN_ADD_CONTRACTS = keccak256("CAN_ADD_CONTRACTS"); + bytes32 public constant CAN_UPDATE_CONTRACTS = keccak256("CAN_UPDATE_CONTRACTS"); + + function __Protocol_init(address adminAddress_) public initializer { + __AccessControlEnumerable_init(); + _setupRole(AccessControlUpgradeable.DEFAULT_ADMIN_ROLE, adminAddress_); + _setupRole(CAN_ADD_CONTRACTS, adminAddress_); + _setupRole(CAN_UPDATE_CONTRACTS, adminAddress_); + } + + function addContract(string memory contractName, address contractAddress) public onlyRole(CAN_ADD_CONTRACTS) { + require(contractMap[contractName] == address(0x0), "Protocol: contract entry already exists"); + contractMap[contractName] = contractAddress; + + emit LogContractUpdated(contractName, contractAddress, contractName); + } + + function updateContract(string memory contractName, address contractAddress) public onlyRole(CAN_UPDATE_CONTRACTS) { + contractMap[contractName] = contractAddress; + + emit LogContractUpdated(contractName, contractAddress, contractName); + } + + function getContract(string memory contractName) public view returns (address) { + return contractMap[contractName]; + } +} diff --git a/src/RenProxyAdmin.sol b/src/RenProxyAdmin.sol new file mode 100644 index 00000000..885ae3f5 --- /dev/null +++ b/src/RenProxyAdmin.sol @@ -0,0 +1,7 @@ +// SPDX-License-Identifier: GPL-3.0-only + +pragma solidity ^0.8.7; + +import {ProxyAdmin} from "@openzeppelin/contracts/proxy/transparent/ProxyAdmin.sol"; + +contract RenProxyAdmin is ProxyAdmin {} diff --git a/src/ValidString.sol b/src/ValidString.sol new file mode 100644 index 00000000..9c1dde59 --- /dev/null +++ b/src/ValidString.sol @@ -0,0 +1,23 @@ +// SPDX-License-Identifier: GPL-3.0-only + +pragma solidity ^0.8.7; + +library ValidString { + function isAlphanumeric(string memory _string) internal pure returns (bool) { + for (uint256 i = 0; i < bytes(_string).length; i++) { + uint8 char = uint8(bytes(_string)[i]); + if (!((char >= 65 && char <= 90) || (char >= 97 && char <= 122) || (char >= 48 && char <= 57))) { + return false; + } + } + return true; + } + + function isNotEmpty(string memory _string) internal pure returns (bool) { + return bytes(_string).length > 0; + } + + function isValidString(string memory _string) internal pure returns (bool) { + return isAlphanumeric(_string) && isNotEmpty(_string); + } +} diff --git a/templates/contract.hbs b/templates/contract.hbs deleted file mode 100644 index 4548fe63..00000000 --- a/templates/contract.hbs +++ /dev/null @@ -1,121 +0,0 @@ ---- -title: {{name}} ---- - -import { DocTag, DocType } from "/components/DocTag"; - - - -## Contract: `{{name}}` - -{{{natspec.userdoc}}} - -{{{natspec.devdoc}}} - -{{#if (filterContracts inheritance name)}} -Inherits from: - -{{#each (filterContracts inheritance name)}} -- `{{name}}` -{{/each}} - -{{/if}} - -
- -{{#if ownVariables}} - -
- -## Variables - -{{#each ownVariables}} - -### **`{{name}}`**: *`{{type}}`* - -{{visibility}} - -{{{natspec.userdoc}}} - -{{{natspec.devdoc}}} - -
-{{/each}} -{{/if}} - -{{#if ownModifiers}} - -
- -## Modifiers - -{{#each ownModifiers}} -### `{{name}}({{args}})` - -{{{natspec.userdoc}}} - -{{{natspec.devdoc}}} - -
- -{{/each}} -{{/if}} - -{{#if ownFunctions}} - -
- -## Functions - -{{#each ownFunctions}} -### **`{{name}}`** *`({{args}}){{#if outputs}} → {{outputs}}{{/if}}`* ({{visibility}}) - -{{#if natspec.params}} -**Params** -{{#each natspec.params}} -- `{{param}}`: {{description}} -{{/each}} -{{/if}} - -{{#if natspec.returns}} -**Returns** -{{#each natspec.returns}} -- `{{param}}`: {{description}} -{{/each}} -{{/if}} - -{{{natspec.userdoc}}} - -{{{natspec.devdoc}}} - -
- -{{/each}} -{{/if}} - -{{#if ownEvents}} - -
- -## Events - -{{#each ownEvents}} -### **`{{name}}`** *`({{args}})`* - -{{{natspec.userdoc}}} - -{{#if natspec.devdoc}} -*{{natspec.devdoc}}* -{{/if}} - -{{#if natspec.params}} -**Params** -{{#each natspec.params}} -- `{{param}}`: {{description}} -{{/each}} -{{/if}} - -
- -{{/each}} -{{/if}} \ No newline at end of file diff --git a/templates/helpers.js b/templates/helpers.js deleted file mode 100644 index 2ab43fc4..00000000 --- a/templates/helpers.js +++ /dev/null @@ -1,13 +0,0 @@ -module.exports = { - public(visibility) { - return visibility === "public"; - }, - - hasPublic(children) { - return children.visibility === "public"; - }, - - filterContracts(list, item) { - return list.filter(i => i.name !== item); - } -}; diff --git a/templates/prelude.sample.hbs b/templates/prelude.sample.hbs deleted file mode 100644 index 5d3e0866..00000000 --- a/templates/prelude.sample.hbs +++ /dev/null @@ -1,3 +0,0 @@ -{{#links}} -[{{target.anchor}}]: {{relativePath}}#{{target.anchor}} -{{/links}} \ No newline at end of file diff --git a/test/ClaimlessRewards/ClaimlessRewards.ts b/test/ClaimlessRewards/ClaimlessRewards.ts deleted file mode 100644 index 2fa68907..00000000 --- a/test/ClaimlessRewards/ClaimlessRewards.ts +++ /dev/null @@ -1,1217 +0,0 @@ -import BigNumber from "bignumber.js"; -import BN from "bn.js"; -import seedrandom from "seedrandom"; - -import { - ClaimlessRewardsInstance, - DarknodePaymentInstance, - DarknodePaymentStoreInstance, - DarknodeRegistryLogicV1Instance, - DarknodeSlasherInstance, - PaymentTokenInstance, - RenTokenInstance, -} from "../../types/truffle-contracts"; -import { - DAYS, - ETHEREUM, - getDecimals, - HOURS, - ID, - increaseTime, - MINIMUM_BOND, - NULL, - PUBK, - range, - toBN, - waitForEpoch, -} from "../helper/testUtils"; -import { STEPS } from "./steps"; - -const RenToken = artifacts.require("RenToken"); -const ERC20 = artifacts.require("PaymentToken"); -const DarknodePaymentStore = artifacts.require("DarknodePaymentStore"); -const ClaimlessRewards = artifacts.require("ClaimlessRewards"); -const DarknodePayment = artifacts.require("DarknodePayment"); -const DarknodeRegistryProxy = artifacts.require("DarknodeRegistryProxy"); -const DarknodeRegistryLogicV1 = artifacts.require("DarknodeRegistryLogicV1"); -const SelfDestructingToken = artifacts.require("SelfDestructingToken"); -const DarknodeSlasher = artifacts.require("DarknodeSlasher"); - -contract("ClaimlessRewards", (accounts: string[]) => { - let store: DarknodePaymentStoreInstance; - let dai: PaymentTokenInstance; - let erc20Token: PaymentTokenInstance; - let dnr: DarknodeRegistryLogicV1Instance; - let rewards: ClaimlessRewardsInstance; - let ren: RenTokenInstance; - let slasher: DarknodeSlasherInstance; - let dnp: DarknodePaymentInstance; - - const owner = accounts[0]; - const operator1 = accounts[1]; - const operator2 = accounts[2]; - - before(async () => { - ren = await RenToken.deployed(); - dai = await ERC20.new("DAI"); - erc20Token = await ERC20.new("ERC20"); - const dnrProxy = await DarknodeRegistryProxy.deployed(); - dnr = await DarknodeRegistryLogicV1.at(dnrProxy.address); - store = await DarknodePaymentStore.deployed(); - rewards = await ClaimlessRewards.deployed(); - dnp = await DarknodePayment.deployed(); - slasher = await DarknodeSlasher.deployed(); - await dnr.updateSlasher(slasher.address); - - await dnp.transferStoreOwnership(rewards.address); - await dnr.updateDarknodePayment(rewards.address); - await dnr.updateMinimumEpochInterval(60 * 60); - await STEPS.waitForEpoch(rewards); - - new BN(await dnr.numDarknodes()).should.bignumber.equal(new BN(0)); - }); - - after(async () => { - await rewards.transferStoreOwnership(dnp.address); - await dnr.updateDarknodePayment(dnp.address); - await dnr.updateMinimumEpochInterval(30); - }); - - afterEach(async () => { - // Deregister tokens. - const tokens = await rewards.getRegisteredTokens(); - for (const token of tokens) { - await rewards.deregisterToken(token); - } - - await STEPS.waitForEpoch(rewards); - - // Deregister darknodes. - const darknodes = await dnr.getDarknodes(NULL, 0); - if (darknodes.length) { - for (const darknode of darknodes) { - await dnr.deregister(darknode, { - from: await dnr.getDarknodeOperator(darknode), - }); - } - - await STEPS.waitForEpoch(rewards); - - await STEPS.waitForEpoch(rewards); - - for (const darknode of darknodes) { - await dnr.refund(darknode, { - from: await dnr.getDarknodeOperator(darknode), - }); - } - } - }); - - describe("Token registration", async () => { - it("cannot register token if not owner", async () => { - await rewards - .registerToken(dai.address, { from: accounts[1] }) - .should.be.rejectedWith(/Ownable: caller is not the owner/); - }); - - it("can register token", async () => { - // No tokens should be registered. - (await rewards.getRegisteredTokens()).length.should.equal(0); - - await STEPS.registerToken(rewards, dai.address); - await STEPS.registerToken(rewards, erc20Token.address); - await STEPS.registerToken(rewards, ETHEREUM); - - (await rewards.getRegisteredTokens()).length.should.equal(3); - }); - - it("cannot register already registered tokens", async () => { - await STEPS.registerToken(rewards, dai.address); - await rewards - .registerToken(dai.address) - .should.be.rejectedWith( - /ClaimlessRewards: token already registered/ - ); - }); - - it("cannot deregister token if not owner", async () => { - await STEPS.registerToken(rewards, ETHEREUM); - await rewards - .deregisterToken(ETHEREUM, { from: accounts[1] }) - .should.be.rejectedWith(/Ownable: caller is not the owner/); - }); - - it("can deregister tokens", async () => { - await STEPS.registerToken(rewards, dai.address); - await STEPS.registerToken(rewards, erc20Token.address); - await STEPS.registerToken(rewards, ETHEREUM); - - await STEPS.deregisterToken(rewards, ETHEREUM); - await rewards - .deregisterToken(ETHEREUM) - .should.be.rejectedWith( - /ClaimlessRewards: token not registered/ - ); - await STEPS.deregisterToken(rewards, erc20Token.address); - await STEPS.deregisterToken(rewards, dai.address); - - await STEPS.registerToken(rewards, ETHEREUM); - await STEPS.deregisterToken(rewards, ETHEREUM); - }); - - it("can deregister a destroyed token", async () => { - await registerNode(6); - await STEPS.waitForEpoch(rewards); - await STEPS.waitForEpoch(rewards); - - // Register token. - const sdt = await SelfDestructingToken.new(); - await STEPS.registerToken(rewards, sdt.address); - await STEPS.waitForEpoch(rewards); - - // Self destruct token. - await sdt.destruct(); - await STEPS.deregisterToken(rewards, sdt.address); - - await deregisterNode(6); - await STEPS.waitForEpoch(rewards); - await STEPS.waitForEpoch(rewards); - await refundNode(6); - await STEPS.waitForEpoch(rewards); - }); - - it("cannot deregister unregistered tokens", async () => { - await rewards - .deregisterToken(ETHEREUM) - .should.be.rejectedWith( - /ClaimlessRewards: token not registered/ - ); - }); - }); - - describe("Token deposits", async () => { - it("can deposit ETH via direct payment to DarknodePaymentStore contract", async () => { - // deposit using direct deposit to store - const oldETHBalance = new BN(await store.totalBalance(ETHEREUM)); - const oldFreeBalance = new BN( - await store.availableBalance(ETHEREUM) - ); - const amount = new BN(1).mul(new BN(10).pow(new BN(18))); - await web3.eth.sendTransaction({ - to: store.address, - from: owner, - value: amount.toString(), - }); - // Total balance has increased. - new BN(await store.totalBalance(ETHEREUM)).should.bignumber.equal( - oldETHBalance.add(amount) - ); - // Reward pool has increased. - new BN( - await store.availableBalance(ETHEREUM) - ).should.bignumber.equal(oldFreeBalance.add(amount)); - }); - }); - - describe("Claiming rewards", async () => { - it("nodes can earn ETH", async () => { - // register ETH token and two darknodes - await registerNode([1, 2]); - await STEPS.registerToken(rewards, ETHEREUM); - await STEPS.waitForEpoch(rewards); - - // Add 1 ETH to rewards. - await STEPS.addRewards( - rewards, - ETHEREUM, - new BN(1).mul(new BN(10).pow(new BN(18))) - ); - - // We should have zero claimed balance before ticking - ( - await rewards.darknodeBalances(ID(1), ETHEREUM) - ).should.bignumber.equal(0); - - // Change cycle after 1 month. - await STEPS.changeCycle(rewards, 28 * DAYS); - - const node1Amount1 = await STEPS.withdraw( - rewards, - ID(1), - ETHEREUM, - operator1 - ); - - await STEPS.changeCycle(rewards, 28 * DAYS); - - const node1Amount2 = await STEPS.withdraw( - rewards, - ID(1), - ETHEREUM, - operator1 - ); - - const node2Amount1 = await STEPS.withdraw( - rewards, - ID(2), - ETHEREUM, - operator2 - ); - - node2Amount1.should.bignumber.equal( - node1Amount1.plus(node1Amount2) - ); - - await STEPS.changeCycle(rewards, 1 * HOURS); - - await STEPS.deregisterToken(rewards, ETHEREUM); - - await STEPS.changeCycle(rewards, 1 * HOURS); - - // Can still withdraw owed ETH rewards after deregistration. - ( - await STEPS.withdraw(rewards, ID(1), ETHEREUM, operator1) - ).should.bignumber.greaterThan(0); - await STEPS.withdraw(rewards, ID(2), ETHEREUM, operator2); - - await STEPS.changeCycle(rewards, 1 * HOURS); - - // No more ETH rewards to withdraw. - ( - await STEPS.withdraw(rewards, ID(1), ETHEREUM, operator1) - ).should.bignumber.equal(0); - - await deregisterNode([1, 2]); - await STEPS.waitForEpoch(rewards); - await STEPS.waitForEpoch(rewards); - await refundNode([1, 2]); - await STEPS.waitForEpoch(rewards); - }); - - it("nodes can earn DAI", async () => { - // register ETH token and two nodes - await registerNode([1, 2]); - await STEPS.registerToken(rewards, [ETHEREUM, dai.address]); - await STEPS.waitForEpoch(rewards); - - // Add 101.00...01 DAI to rewards. - await STEPS.addRewards( - rewards, - dai.address, - new BN(101).mul(new BN(10).pow(new BN(18))).add(new BN(1)) - ); - - await STEPS.changeCycle(rewards, 1 * HOURS); - - await STEPS.withdraw(rewards, ID(1), dai.address, operator1); - - await STEPS.changeCycle(rewards, 28 * DAYS); - - await STEPS.withdraw(rewards, ID(1), dai.address, operator1); - - await STEPS.changeCycle(rewards, 28 * DAYS); - - await STEPS.withdraw(rewards, ID(1), dai.address, operator1); - await STEPS.withdraw(rewards, ID(2), dai.address, operator2); - - await STEPS.deregisterToken(rewards, ETHEREUM); - await STEPS.deregisterToken(rewards, dai.address); - await deregisterNode([1, 2]); - await STEPS.waitForEpoch(rewards); - await STEPS.waitForEpoch(rewards); - await refundNode([1, 2]); - await STEPS.waitForEpoch(rewards); - }); - - it("nodes can earn ETH and DAI", async () => { - // register ETH token and two darknodes - await registerNode([1, 2]); - await STEPS.registerToken(rewards, [ETHEREUM, dai.address]); - await STEPS.waitForEpoch(rewards); - - // Add 101.00...01 DAI to rewards. - await STEPS.addRewards( - rewards, - dai.address, - new BN(101).mul(new BN(10).pow(new BN(18))).add(new BN(1)) - ); - - // Add 1 ETH to rewards. - await STEPS.addRewards( - rewards, - ETHEREUM, - new BN(1).mul(new BN(10).pow(new BN(18))) - ); - - await STEPS.changeCycle(rewards, 28 * DAYS); - - await STEPS.withdraw(rewards, ID(1), dai.address, operator1); - await STEPS.withdraw(rewards, ID(1), ETHEREUM, operator1); - - await STEPS.changeCycle(rewards, 28 * DAYS); - - await STEPS.withdraw( - rewards, - ID(1), - [dai.address, ETHEREUM], - operator1 - ); - - await STEPS.deregisterToken(rewards, ETHEREUM); - await STEPS.deregisterToken(rewards, dai.address); - await deregisterNode([1, 2]); - await STEPS.waitForEpoch(rewards); - await STEPS.waitForEpoch(rewards); - await refundNode([1, 2]); - await STEPS.waitForEpoch(rewards); - }); - - it("node can withdraw after deregistering", async () => { - // register ETH token and two darknodes - await registerNode([1, 2]); - await STEPS.registerToken(rewards, ETHEREUM); - await STEPS.waitForEpoch(rewards); - - // Add 1 ETH to rewards. - await STEPS.addRewards( - rewards, - ETHEREUM, - new BN(1).mul(new BN(10).pow(new BN(18))) - ); - - // Change cycle after 1 month. - await STEPS.changeCycle(rewards, 28 * DAYS); - - // Check that deregistering doesn't affect withdrawable balance. - - const node1BalanceBefore = await toBN( - rewards.darknodeBalances(ID(1), ETHEREUM) - ); - const node2BalanceBefore = await toBN( - rewards.darknodeBalances(ID(2), ETHEREUM) - ); - node1BalanceBefore.should.bignumber.equal(node2BalanceBefore); - - await deregisterNode(1); - - const node1BalanceAfter = await toBN( - rewards.darknodeBalances(ID(1), ETHEREUM) - ); - const node2BalanceAfter = await toBN( - rewards.darknodeBalances(ID(2), ETHEREUM) - ); - node1BalanceAfter.should.bignumber.equal(node2BalanceAfter); - - ( - await STEPS.withdraw(rewards, ID(1), ETHEREUM, operator1) - ).should.bignumber.greaterThan(0); - - await STEPS.waitForEpoch(rewards); - - // The node can withdraw its rewards from it's last epoch. - ( - await STEPS.withdraw(rewards, ID(1), ETHEREUM, operator1) - ).should.bignumber.greaterThan(0); - - await STEPS.waitForEpoch(rewards); - - // The node should no longer be earning rewards. - ( - await STEPS.withdraw(rewards, ID(1), ETHEREUM, operator1) - ).should.bignumber.equal(0); - await STEPS.waitForEpoch(rewards); - - await refundNode(1); - - await STEPS.withdraw( - rewards, - operator1, - ETHEREUM - ).should.be.rejectedWith(/ClaimlessRewards: not operator/); - - await STEPS.deregisterToken(rewards, ETHEREUM); - await deregisterNode(2); - await STEPS.waitForEpoch(rewards); - await STEPS.waitForEpoch(rewards); - await refundNode(2); - await STEPS.waitForEpoch(rewards); - }); - - it("can withdraw after re-registering", async () => { - // register ETH token and two darknodes - await registerNode(1); - await STEPS.registerToken(rewards, ETHEREUM); - await STEPS.waitForEpoch(rewards); - - // Add 1 ETH to rewards. - await STEPS.addRewards( - rewards, - ETHEREUM, - new BN(1).mul(new BN(10).pow(new BN(18))) - ); - - await deregisterNode(1); - await STEPS.waitForEpoch(rewards); - await STEPS.waitForEpoch(rewards); - - // Ensure all rewards have been withdrawn. - await STEPS.withdraw(rewards, ID(1), ETHEREUM, operator1); - - await refundNode(1); - - await STEPS.changeCycle(rewards, 28 * DAYS); - - await registerNode([1, 2]); - - await STEPS.waitForEpoch(rewards); - - const node1Amount = await STEPS.withdraw( - rewards, - ID(1), - ETHEREUM, - operator1 - ); - const node2Amount = await STEPS.withdraw( - rewards, - ID(2), - ETHEREUM, - operator2 - ); - - // node1 should not be able to withdraw additional rewards, - // since it re-registered at the same time as node2. - node2Amount.should.bignumber.equal(node1Amount); - - await STEPS.deregisterToken(rewards, ETHEREUM); - await deregisterNode([1, 2]); - await STEPS.waitForEpoch(rewards); - await STEPS.waitForEpoch(rewards); - await refundNode([1, 2]); - await STEPS.waitForEpoch(rewards); - }); - - it("calling cycle immediately will not add new timestamp", async () => { - await STEPS.changeCycle(rewards, 1 * HOURS); - await STEPS.changeCycle(rewards, 0 * HOURS).should.be.rejectedWith( - /ClaimlessRewards: previous cycle too recent/ - ); - }); - - it("epoch can progress even if cycle is too recent", async () => { - const timeout = new BN( - (await dnr.minimumEpochInterval()).toString() - ).toNumber(); - - await increaseTime(Math.max(timeout, 1 * HOURS)); - - await STEPS.changeCycle(rewards, 0); - await dnr.epoch(); - }); - - it("can withdraw for multiple nodes", async () => { - // register ETH token and two darknodes - await registerNode([1, 2], operator1); - await STEPS.registerToken(rewards, [ETHEREUM, dai.address]); - await STEPS.waitForEpoch(rewards); - - // Add 101.00...01 DAI to rewards. - await STEPS.addRewards( - rewards, - dai.address, - new BN(101).mul(new BN(10).pow(new BN(18))).add(new BN(1)) - ); - - // Add 1 ETH to rewards. - await STEPS.addRewards( - rewards, - ETHEREUM, - new BN(1).mul(new BN(10).pow(new BN(18))) - ); - - await STEPS.changeCycle(rewards, 28 * DAYS); - - // Withdraw DAI for second nodes. - await STEPS.withdraw(rewards, [ID(2)], dai.address, operator1); - - await STEPS.changeCycle(rewards, 28 * DAYS); - - // Withdraw DAI and ETH for both nodes. - await STEPS.withdraw( - rewards, - [ID(1), ID(2)], - [dai.address, ETHEREUM], - operator1 - ); - - await STEPS.deregisterToken(rewards, ETHEREUM); - await STEPS.deregisterToken(rewards, dai.address); - await deregisterNode([1, 2], operator1); - await STEPS.waitForEpoch(rewards); - await STEPS.waitForEpoch(rewards); - await refundNode([1, 2], operator1); - await STEPS.waitForEpoch(rewards); - }); - - it("only operator can withdraw", async () => { - // register ETH token and two darknodes - await registerNode([1, 2]); - await STEPS.registerToken(rewards, [ETHEREUM, dai.address]); - await STEPS.waitForEpoch(rewards); - - // Add 101.00...01 DAI to rewards. - await STEPS.addRewards( - rewards, - dai.address, - new BN(101).mul(new BN(10).pow(new BN(18))).add(new BN(1)) - ); - - await STEPS.changeCycle(rewards, 28 * DAYS); - - await STEPS.withdraw( - rewards, - ID(1), - dai.address, - operator2 - ).should.be.rejectedWith(/ClaimlessRewards: not operator/); - - await STEPS.withdraw(rewards, ID(1), dai.address, operator1); - await STEPS.withdraw(rewards, ID(2), dai.address, operator2); - - await STEPS.deregisterToken(rewards, ETHEREUM); - await STEPS.deregisterToken(rewards, dai.address); - await deregisterNode([1, 2]); - await STEPS.waitForEpoch(rewards); - await STEPS.waitForEpoch(rewards); - await refundNode([1, 2]); - await STEPS.waitForEpoch(rewards); - }); - - it("nodes can withdraw after migrating from DarknodePayment contract", async function () { - // Requires Darknode Registry implementation to be upgraded mid-test. - - this.timeout(100 * 300000); - - const seed = 0.4957910354433912; // 20 - // const seed = 0.12399667580170748; // 4 - // const seed = Math.random(); - console.log(`Starting test with seed ${seed}.`); - const rng = seedrandom(seed.toString()); - - await rewards.transferStoreOwnership(dnp.address); - await dnr.updateDarknodePayment(dnp.address); - - const newToken = await ERC20.new("DAI2"); - await dnp.registerToken(newToken.address); - - ( - await store.darknodeBalances(NULL, newToken.address) - ).should.bignumber.equal(0); - - const darknodeIndices = range(20); - - // Register 50 nodes before switching to ClaimlessRewards. - let previousCanClaim = 0; - for (const index of darknodeIndices.slice( - 0, - Math.floor(darknodeIndices.length / 2) - )) { - await registerNode(index); - - if (rng() < 0.5) { - await waitForEpoch(dnr); - - // Claim for any darknode that has been registered for two - // epochs. - for (const indexInner of darknodeIndices.slice( - 0, - previousCanClaim - )) { - await dnp.claim(ID(indexInner)); - } - - previousCanClaim = index; - - // Add random amount of DAI to rewards. - await STEPS.addRewards( - dnp, - newToken.address, - new BigNumber(rng()) - .times(1000) - .times( - new BigNumber(10).exponentiatedBy( - await getDecimals(newToken.address) - ) - ) - ); - } - } - - await waitForEpoch(dnr); - await waitForEpoch(dnr); - for (const index of darknodeIndices.slice( - 0, - Math.floor(darknodeIndices.length / 2) - )) { - await dnp.claim(ID(index)); - } - - // Withdraw legacy rewards for first 25 nodes. - for (const index of darknodeIndices.slice( - 0, - Math.floor(darknodeIndices.length / 2) - )) { - if (rng() < 0.5) { - await dnp.withdraw(ID(index), newToken.address); - } - } - - rewards = await ClaimlessRewards.new( - dnr.address, - store.address, - owner, - 50000 - ); - await dnp.transferStoreOwnership(rewards.address); - await dnr.updateDarknodePayment(rewards.address); - await STEPS.registerToken(rewards, [ETHEREUM, newToken.address]); - - // Register 50 nodes after switching to ClaimlessRewards. - for (const index of darknodeIndices.slice( - Math.floor(darknodeIndices.length / 2) - )) { - await registerNode(index); - - if (rng() < 0.5) { - await STEPS.waitForEpoch(rewards); - - await STEPS.changeCycle(rewards, 28 * DAYS); - - // Add random amount of DAI to rewards. - await STEPS.addRewards( - rewards, - newToken.address, - new BigNumber(rng()) - .times(1000) - .times( - new BigNumber(10).exponentiatedBy( - await getDecimals(newToken.address) - ) - ) - ); - } - } - - // await STEPS.waitForEpoch(rewards); - - // // Deregister random nodes. - // for (const index of darknodeIndices.slice( - // 0, - // darknodeIndices.length - // )) { - // if (rng() < 0.2) { - // await deregisterNode(index); - // } - - // if (rng() < 0.5) { - // await STEPS.waitForEpoch(rewards); - - // // Add random amount of DAI to rewards. - // await STEPS.addRewards( - // dnp, - // newToken.address, - // new BigNumber(rng()) - // .times(1000) - // .times( - // new BigNumber(10).exponentiatedBy( - // await getDecimals(newToken.address) - // ) - // ) - // ); - - // await STEPS.changeCycle(rewards, 1 * HOURS); - // } - // } - - await STEPS.waitForEpoch(rewards); - - for (const index of darknodeIndices) { - await STEPS.withdraw( - rewards, - ID(index), - newToken.address, - accounts[index % accounts.length] - ); - } - - ( - await store.darknodeBalances(NULL, newToken.address) - ).should.bignumber.equal(0); - - await STEPS.deregisterToken(rewards, ETHEREUM); - await STEPS.deregisterToken(rewards, newToken.address); - await deregisterNode(darknodeIndices); - await STEPS.waitForEpoch(rewards); - await STEPS.waitForEpoch(rewards); - await refundNode(darknodeIndices); - await STEPS.waitForEpoch(rewards); - }); - - it("balance if pending registration is 0", async () => { - // register ETH token and two darknodes - await registerNode(1); - await STEPS.registerToken(rewards, ETHEREUM); - - await rewards - .darknodeBalances(ID(1), ETHEREUM) - .should.be.rejectedWith( - /ClaimlessRewards: registration pending/ - ); - }); - }); - - describe("getNextEpochFromTimestamp", () => { - it("should return the correct timestamp", async () => { - const timestamps = await rewards.getEpochTimestamps(); - - for (let i = 0; i < timestamps.length; i++) { - const timestamp = new BigNumber(timestamps[i].toString()); - const nextTimestamp = timestamps[i + 1] - ? new BigNumber(timestamps[i + 1].toString()) - : undefined; - const previousTimestamp = timestamps[i - 1] - ? new BigNumber(timestamps[i - 1].toString()) - : undefined; - - // Check that timestamps are ordered. - if (nextTimestamp) { - nextTimestamp.should.be.bignumber.greaterThan(timestamp); - } - if (previousTimestamp) { - previousTimestamp.should.be.bignumber.lessThan(timestamp); - } - - // Check that getNextEpochFromTimestamp(timestamp - 1) == timestamp - ( - await rewards.getNextEpochFromTimestamp( - timestamp.minus(1).toFixed() - ) - ).should.bignumber.equal( - previousTimestamp && - timestamp.minus(1).isEqualTo(previousTimestamp) - ? previousTimestamp - : timestamp - ); - - // Check that getNextEpochFromTimestamp(timestamp) == timestamp - ( - await rewards.getNextEpochFromTimestamp(timestamp.toFixed()) - ).should.bignumber.equal(timestamp); - - // Check that getNextEpochFromTimestamp(timestamp + 1) == next timestamp - ( - await rewards.getNextEpochFromTimestamp( - timestamp.plus(1).toFixed() - ) - ).should.bignumber.equal(nextTimestamp || new BigNumber(0)); - } - - if (timestamps.length) { - ( - await rewards.getNextEpochFromTimestamp(0) - ).should.bignumber.equal(timestamps[0]); - } - }); - }); - - describe("Transferring ownership", () => { - it("should disallow unauthorized transferring of ownership", async () => { - await rewards - .transferStoreOwnership(accounts[1], { from: accounts[1] }) - .should.be.rejectedWith(/Ownable: caller is not the owner/); - await rewards - .claimStoreOwnership({ from: accounts[1] }) - .should.be.rejectedWith( - /Claimable: caller is not the pending owner/ - ); - }); - - it("can transfer ownership of the darknode payment store", async () => { - const newDarknodePayment = await ClaimlessRewards.new( - dnr.address, - store.address, - owner, - 50000 - ); - - // [ACTION] Initiate ownership transfer to wrong account - await rewards.transferStoreOwnership(newDarknodePayment.address, { - from: accounts[0], - }); - - // [CHECK] Owner should be the new rewards contract. - (await store.owner()).should.equal(newDarknodePayment.address); - - // [RESET] Initiate ownership transfer back to rewards. - await newDarknodePayment.transferStoreOwnership(rewards.address); - - // [CHECK] Owner should now be the rewards. - (await store.owner()).should.equal(rewards.address); - }); - }); - - describe("when forwarding funds", async () => { - it("can forward ETH", async () => { - await rewards.forward(NULL); - }); - - it("can forward funds to the store", async () => { - // rewards should have zero balance - new BN(await dai.balanceOf(rewards.address)).should.bignumber.equal( - new BN(0) - ); - - const storeDaiBalance = new BN( - await store.availableBalance(dai.address) - ); - const amount = new BN("1000000"); - new BN(await dai.balanceOf(owner)).gte(amount).should.be.true; - await dai.transfer(rewards.address, amount); - - (await store.availableBalance(dai.address)).should.bignumber.equal( - storeDaiBalance - ); - // rewards should have some balance - new BN(await dai.balanceOf(rewards.address)).should.bignumber.equal( - amount - ); - - // Forward the funds on - await rewards.forward(dai.address); - new BN(await dai.balanceOf(rewards.address)).should.bignumber.equal( - new BN(0) - ); - (await store.availableBalance(dai.address)).should.bignumber.equal( - storeDaiBalance.add(amount) - ); - }); - }); - - describe("when changing payout proportion", async () => { - it("cannot change payout proportion to an invalid percent", async () => { - const denominator = await toBN( - rewards.HOURLY_PAYOUT_WITHHELD_DENOMINATOR() - ); - await rewards - .updateHourlyPayoutWithheld(denominator.plus(1).toFixed()) - .should.be.rejectedWith(/ClaimlessRewards: invalid numerator/); - }); - - it("can change payout proportion", async () => { - // register ETH token and two darknodes - await registerNode([1, 2]); - await STEPS.registerToken(rewards, [ETHEREUM, dai.address]); - await STEPS.waitForEpoch(rewards); - - // Ensure there are no fees from other tests. - await STEPS.withdraw(rewards, ID(1), dai.address, operator1); - - // Add 101.00...01 DAI to rewards. - await STEPS.addRewards( - rewards, - dai.address, - new BN(101).mul(new BN(10).pow(new BN(18))) - ); - - const oldNumerator = await toBN( - rewards.hourlyPayoutWithheldNumerator() - ); - const denominator = await toBN( - rewards.HOURLY_PAYOUT_WITHHELD_DENOMINATOR() - ); - await rewards.updateHourlyPayoutWithheld(denominator.toFixed()); - - await STEPS.changeCycle(rewards, 28 * DAYS); - - ( - await STEPS.withdraw(rewards, ID(1), dai.address, operator1) - ).should.bignumber.equal(0); - - await rewards.updateHourlyPayoutWithheld(0); - - await STEPS.changeCycle(rewards, 28 * DAYS); - - // No rewards should have been withheld, except rounded amounts too - // small to be distributed to all darknodes. - const numberOfDarknodes = await toBN(dnr.numDarknodes()); - ( - await store.availableBalance(dai.address) - ).should.bignumber.lessThan(numberOfDarknodes); - - await STEPS.withdraw(rewards, ID(1), dai.address, operator1); - - await rewards.updateHourlyPayoutWithheld(oldNumerator.toFixed()); - - await STEPS.deregisterToken(rewards, ETHEREUM); - await STEPS.deregisterToken(rewards, dai.address); - await deregisterNode([1, 2]); - await STEPS.waitForEpoch(rewards); - await STEPS.waitForEpoch(rewards); - await refundNode([1, 2]); - await STEPS.waitForEpoch(rewards); - }); - }); - - describe("admin methods", async () => { - it("only admin can update payout proportions", async () => { - await rewards - .updateHourlyPayoutWithheld(new BN(10), { from: accounts[2] }) - .should.be.rejectedWith(/Ownable: caller is not the owner./); - }); - - describe("DarknodeRegistry", () => { - it("only admin can update darknode registry", async () => { - await rewards - .updateDarknodeRegistry(accounts[2], { from: accounts[2] }) - .should.be.rejectedWith( - /Ownable: caller is not the owner./ - ); - }); - - it("can update DarknodeRegistry", async () => { - const darknodeRegistry = await rewards.darknodeRegistry(); - await rewards - .updateDarknodeRegistry(NULL) - .should.be.rejectedWith( - /ClaimlessRewards: invalid Darknode Registry address/ - ); - - await rewards.updateDarknodeRegistry(accounts[0]); - await rewards.updateDarknodeRegistry(darknodeRegistry); - }); - }); - - describe("community fund", () => { - it("only admin can update community fund", async () => { - await rewards - .updateCommunityFund(accounts[2], { from: accounts[2] }) - .should.be.rejectedWith( - /Ownable: caller is not the owner./ - ); - }); - - it("only admin can update community fund percent", async () => { - await rewards - .updateCommunityFundNumerator(0, { from: accounts[2] }) - .should.be.rejectedWith( - /Ownable: caller is not the owner./ - ); - }); - - it("can withdraw community fund rewards", async () => { - // register ETH token and two darknodes - await registerNode([1, 2]); - await STEPS.registerToken(rewards, [ETHEREUM, dai.address]); - await STEPS.waitForEpoch(rewards); - - // Add 101.00...01 DAI to rewards. - await STEPS.addRewards( - rewards, - dai.address, - new BN(101).mul(new BN(10).pow(new BN(18))).add(new BN(1)) - ); - - // Add 1 ETH to rewards. - await STEPS.addRewards( - rewards, - ETHEREUM, - new BN(1).mul(new BN(10).pow(new BN(18))) - ); - - await STEPS.changeCycle(rewards, 28 * DAYS); - - ( - await STEPS.withdrawToCommunityFund(rewards, [ - ETHEREUM, - dai.address, - ]) - ).should.bignumber.greaterThan(0); - - // Second time - empty values. - ( - await STEPS.withdrawToCommunityFund(rewards, [ - ETHEREUM, - dai.address, - ]) - ).should.bignumber.equal(0); - - await STEPS.deregisterToken(rewards, ETHEREUM); - await STEPS.deregisterToken(rewards, dai.address); - await deregisterNode([1, 2]); - await STEPS.waitForEpoch(rewards); - await STEPS.waitForEpoch(rewards); - await refundNode([1, 2]); - await STEPS.waitForEpoch(rewards); - }); - - it("can update community fund", async () => { - const communityFund = await rewards.communityFund(); - await rewards.updateCommunityFund(accounts[0]); - await rewards.updateCommunityFund(communityFund); - }); - - it("cannot change community fund percent to an invalid percent", async () => { - const denominator = await toBN( - rewards.HOURLY_PAYOUT_WITHHELD_DENOMINATOR() - ); - await rewards - .updateCommunityFundNumerator(denominator.plus(1).toFixed()) - .should.be.rejectedWith( - /ClaimlessRewards: invalid numerator/ - ); - }); - - it("can update community fund percent", async () => { - // register ETH token and two darknodes - await registerNode([1, 2]); - await STEPS.registerToken(rewards, [ETHEREUM, dai.address]); - await STEPS.waitForEpoch(rewards); - - // Ensure there are no community funds from previous tests. - ( - await STEPS.withdrawToCommunityFund(rewards, [ - ETHEREUM, - dai.address, - ]) - ).should.bignumber.greaterThan(0); - - // Add 101.00...01 DAI to rewards. - await STEPS.addRewards( - rewards, - dai.address, - new BN(101).mul(new BN(10).pow(new BN(18))).add(new BN(1)) - ); - - // Add 1 ETH to rewards. - await STEPS.addRewards( - rewards, - ETHEREUM, - new BN(1).mul(new BN(10).pow(new BN(18))) - ); - - // Update community fund numerator to 0. - const oldCommunityFundPercent = await toBN( - rewards.communityFundNumerator() - ); - await rewards.updateCommunityFundNumerator(0); - - await STEPS.changeCycle(rewards, 28 * DAYS); - - ( - await STEPS.withdrawToCommunityFund(rewards, [ - ETHEREUM, - dai.address, - ]) - ).should.bignumber.equal(0); - - // Second time - empty values. - ( - await STEPS.withdrawToCommunityFund(rewards, [ - ETHEREUM, - dai.address, - ]) - ).should.bignumber.equal(0); - - await STEPS.deregisterToken(rewards, ETHEREUM); - await STEPS.deregisterToken(rewards, dai.address); - await deregisterNode([1, 2]); - await STEPS.waitForEpoch(rewards); - await STEPS.waitForEpoch(rewards); - await refundNode([1, 2]); - await STEPS.waitForEpoch(rewards); - - // Revert community fund numerator change. - await rewards.updateCommunityFundNumerator( - oldCommunityFundPercent.toFixed() - ); - }); - - it("can't set community fund to 0x0 or registered darknode", async () => { - await rewards - .updateCommunityFund(NULL) - .should.be.rejectedWith( - /ClaimlessRewards: invalid community fund address/ - ); - - await registerNode(1); - await rewards - .updateCommunityFund(ID(1)) - .should.be.rejectedWith( - /ClaimlessRewards: community fund must not be a registered darknode/ - ); - }); - - it("malicious operator can't withdraw community fund", async () => { - const communityFund = await rewards.communityFund(); - const malicious = accounts[4]; - await ren.transfer(malicious, MINIMUM_BOND); - await ren.approve(dnr.address, MINIMUM_BOND, { - from: malicious, - }); - // Register the darknodes under the account address - await dnr.register(communityFund, PUBK(-1), { - from: malicious, - }); - await STEPS.waitForEpoch(rewards); - - // Add 101.00...01 DAI to rewards. - await STEPS.addRewards( - rewards, - dai.address, - new BN(101).mul(new BN(10).pow(new BN(18))) - ); - await STEPS.changeCycle(rewards, 1 * HOURS); - - await STEPS.withdraw( - rewards, - communityFund, - dai.address - ).should.be.rejectedWith(/ClaimlessRewards: invalid node ID/); - }); - }); - }); - - const registerNode = async (array: number | number[], from?: string) => { - array = Array.isArray(array) ? array : [array]; - for (const i of array) { - await ren.transfer( - from || accounts[i % accounts.length], - MINIMUM_BOND - ); - await ren.approve(dnr.address, MINIMUM_BOND, { - from: from || accounts[i % accounts.length], - }); - // Register the darknodes under the account address - await dnr.register(ID(i), PUBK(i), { - from: from || accounts[i % accounts.length], - }); - } - }; - - const deregisterNode = async (array: number | number[], from?: string) => { - array = Array.isArray(array) ? array : [array]; - for (const i of array) { - await dnr.deregister(ID(i), { - from: from || accounts[i % accounts.length], - }); - } - }; - - const refundNode = async (array: number | number[], from?: string) => { - array = Array.isArray(array) ? array : [array]; - for (const i of array) { - await dnr.refund(ID(i), { - from: from || accounts[i % accounts.length], - }); - } - }; -}); diff --git a/test/ClaimlessRewards/steps.ts b/test/ClaimlessRewards/steps.ts deleted file mode 100644 index 650d779e..00000000 --- a/test/ClaimlessRewards/steps.ts +++ /dev/null @@ -1,487 +0,0 @@ -import BigNumber from "bignumber.js"; -import { OrderedMap } from "immutable"; -import moment from "moment"; -import { - ClaimlessRewardsInstance, - DarknodePaymentInstance, - DarknodePaymentStoreContract, - DarknodeRegistryLogicV1Contract -} from "../../types/truffle-contracts"; -import { - ETHEREUM, - getBalance, - getDecimals, - getSymbol, - HOURS, - increaseTime, - NULL, - toBN, - transferToken, - waitForEpoch -} from "../helper/testUtils"; - -const DarknodePaymentStore: DarknodePaymentStoreContract = artifacts.require( - "DarknodePaymentStore" -); -const DarknodeRegistry: DarknodeRegistryLogicV1Contract = artifacts.require( - "DarknodeRegistryLogicV1" -); - -const registerToken = async ( - rewards: ClaimlessRewardsInstance, - tokens: string | string[] -) => { - tokens = Array.isArray(tokens) ? tokens : [tokens]; - - for (const token of tokens) { - // Precondition. The token is not registered. - (await rewards.isRegistered(token)).should.equal(false); - const allTokens = await rewards.getRegisteredTokens(); - - // Effect. Register the token. - await rewards.registerToken(token); - - // Postcondition. The token is registered. - (await rewards.isRegistered(token)).should.equal(true); - (await rewards.getRegisteredTokens()).should.deep.equal([ - ...allTokens, - token - ]); - } -}; - -const deregisterToken = async ( - rewards: ClaimlessRewardsInstance, - tokens: string | string[] -) => { - tokens = Array.isArray(tokens) ? tokens : [tokens]; - - for (const token of tokens) { - // Precondition. The token is registered. - (await rewards.isRegistered(token)).should.equal(true); - const allTokens = await rewards.getRegisteredTokens(); - - // Effect. Deregister the token. - await rewards.deregisterToken(token); - - // Postcondition. The token is not registered. - (await rewards.isRegistered(token)).should.equal(false); - (await rewards.getRegisteredTokens()).should.deep.equal( - allTokens.filter(x => x !== token) - ); - } -}; - -const changeCycle = async ( - rewards: ClaimlessRewardsInstance, - time: number, - epoch?: boolean -) => { - const latestTimestamp = await toBN(rewards.latestCycleTimestamp()); - const storeAddress = await rewards.store(); - const store = await DarknodePaymentStore.at(storeAddress); - const dnrAddress = await rewards.darknodeRegistry(); - const dnr = await DarknodeRegistry.at(dnrAddress); - const communityFund = await rewards.communityFund(); - - const tokens = await rewards.getRegisteredTokens(); - let freeBeforeMap = OrderedMap(); - let communityFundBalanceBeforeMap = OrderedMap(); - let darknodePoolBeforeMap = OrderedMap(); - let shareBeforeMap = OrderedMap(); - for (const token of tokens) { - const freeBefore = await toBN(store.availableBalance(token)); - freeBeforeMap = freeBeforeMap.set(token, freeBefore); - - const communityFundBalanceBefore = await toBN( - rewards.darknodeBalances(communityFund, token) - ); - communityFundBalanceBeforeMap = communityFundBalanceBeforeMap.set( - token, - communityFundBalanceBefore - ); - const darknodePoolBefore = await toBN( - rewards.darknodeBalances(NULL, token) - ); - darknodePoolBeforeMap = darknodePoolBeforeMap.set( - token, - darknodePoolBefore - ); - const shareBefore = await toBN( - rewards.cycleCumulativeTokenShares(latestTimestamp.toFixed(), token) - ); - shareBeforeMap = shareBeforeMap.set(token, shareBefore); - } - const shares = await toBN(dnr.numDarknodes()); - const epochTimestampCountBefore = await toBN( - rewards.epochTimestampsLength() - ); - - // Effect. Change the cycle. - let tx; - if (epoch) { - tx = await waitForEpoch(dnr); - } else { - await increaseTime(time); - tx = await rewards.changeCycle(); - } - - // Postcondition. Check that the cycle's timestamp is stored correctly. - const block = await web3.eth.getBlock(tx.receipt.blockNumber); - const timestamp = new BigNumber(block.timestamp); - const newLatestTimestamp = await toBN(rewards.latestCycleTimestamp()); - // Check if the epoch happened too recently to a cycle, so no cycle was - // called. - const expectedTimestamp = epoch - ? timestamp - : latestTimestamp.plus( - timestamp - .minus(latestTimestamp) - .minus(timestamp.minus(latestTimestamp).mod(1 * HOURS)) - ); - newLatestTimestamp.should.not.bignumber.equal(latestTimestamp); - newLatestTimestamp.should.bignumber.equal(expectedTimestamp); - const epochTimestampCountAfter = await toBN( - rewards.epochTimestampsLength() - ); - if (epoch) { - epochTimestampCountAfter.should.bignumber.equal( - epochTimestampCountBefore.plus(1) - ); - } - - // Postcondition. Check conditions for each token. - const hours = timestamp - .minus(latestTimestamp) - .dividedToIntegerBy(1 * HOURS) - .toNumber(); - const numerator = await toBN(rewards.hourlyPayoutWithheldNumerator()); - const denominator = await toBN( - rewards.HOURLY_PAYOUT_WITHHELD_DENOMINATOR() - ); - let numeratorSeries = numerator; - for (let i = 0; i < hours; i++) { - numeratorSeries = numeratorSeries - .times(numerator) - .div(denominator) - .integerValue(BigNumber.ROUND_DOWN); - } - const communityFundNumerator = await toBN(rewards.communityFundNumerator()); - - for (const token of tokens) { - const freeBefore = freeBeforeMap.get(token); - const communityFundBalanceBefore = communityFundBalanceBeforeMap.get( - token - ); - const darknodePoolBefore = darknodePoolBeforeMap.get(token); - const shareBefore = shareBeforeMap.get(token); - - const totalWithheld = freeBefore - .times(numeratorSeries) - .div(denominator) - .integerValue(BigNumber.ROUND_DOWN); - - const totalPaidout = freeBefore.minus(totalWithheld); - const communityFundPaidout = totalPaidout - .times(communityFundNumerator) - .div(denominator) - .integerValue(BigNumber.ROUND_DOWN); - - const darknodePaidout = totalPaidout.minus(communityFundPaidout); - const share = shares.isZero() - ? new BigNumber(0) - : darknodePaidout.div(shares).integerValue(BigNumber.ROUND_DOWN); - - const darknodePaidoutAdjusted = share.times(shares); - - // Postcondition. The stored share is the correct amount. - const shareAfter = await toBN( - rewards.cycleCumulativeTokenShares( - newLatestTimestamp.toFixed(), - token - ) - ); - - shareAfter.minus(shareBefore).should.bignumber.equal(share); - - // Postcondition. The darknode pool increased by the correct amount. - const darknodePoolAfter = await toBN( - rewards.darknodeBalances(NULL, token) - ); - darknodePoolAfter - .minus(darknodePoolBefore) - .should.bignumber.equal(darknodePaidoutAdjusted); - - // Postcondition. The community fund increased by the correct amount. - const communityFundBalanceAfter = await toBN( - rewards.darknodeBalances(communityFund, token) - ); - communityFundBalanceAfter - .minus(communityFundBalanceBefore) - .should.bignumber.equal(communityFundPaidout); - - // Postcondition. The free amount decreased by the correct amount. - const freeAfter = await toBN(store.availableBalance(token)); - freeBefore - .minus(freeAfter) - .should.bignumber.equal( - communityFundPaidout.plus(darknodePaidoutAdjusted) - ); - } - - console.log( - `New cycle after ${moment - .duration(newLatestTimestamp.minus(latestTimestamp).times(1000)) - .humanize()}.` - ); - - return hours; -}; - -const _waitForEpoch = async (rewards: ClaimlessRewardsInstance) => { - await changeCycle(rewards, 0, true); -}; - -const addRewards = async ( - rewards: ClaimlessRewardsInstance | DarknodePaymentInstance, - token: string, - amount: BigNumber | number | string | BN -) => { - const storeAddress = await rewards.store(); - const balanceBefore = await getBalance(token, storeAddress); - const store = await DarknodePaymentStore.at(storeAddress); - const freeBefore = await toBN(store.availableBalance(token)); - - // Effect. Transfer token to the store contract. - await transferToken(token, storeAddress, amount); - - // Postcondition. The balance after has increased by the amount added. - const balanceAfter = await getBalance(token, storeAddress); - balanceAfter.minus(balanceBefore).should.bignumber.equal(amount); - const freeAfter = await toBN(store.availableBalance(token)); - freeAfter.minus(freeBefore).should.bignumber.equal(amount); - - console.log( - `There are now ${new BigNumber(freeAfter.toString()) - .div(new BigNumber(10).exponentiatedBy(await getDecimals(token))) - .toFixed()} ${await getSymbol(token)} in rewards` - ); -}; - -const withdraw = async ( - rewards: ClaimlessRewardsInstance, - darknodes: string | string[], - tokens: string | string[], - from?: string -) => { - tokens = Array.isArray(tokens) ? tokens : [tokens]; - darknodes = Array.isArray(darknodes) ? darknodes : [darknodes]; - from = from || darknodes[0]; - - // Store the balance for each token, and the withdrawable amount for each - // darknode and token. - let withdrawableMap = OrderedMap>(); - let balanceBeforeMap = OrderedMap(); - // let legacyBalanceMap = OrderedMap>(); - // let shareBeforeMap = OrderedMap>(); - const storeAddress = await rewards.store(); - const store = await DarknodePaymentStore.at(storeAddress); - const currentCycle = await toBN(rewards.latestCycleTimestamp()); - const dnrAddress = await rewards.darknodeRegistry(); - const dnr = await DarknodeRegistry.at(dnrAddress); - for (const token of tokens) { - const balanceBefore = await getBalance(token, from); - balanceBeforeMap = balanceBeforeMap.set(token, balanceBefore); - - for (const darknode of darknodes) { - const withdrawable = await toBN( - rewards.darknodeBalances(darknode, token) - ); - withdrawableMap = withdrawableMap.set( - darknode, - ( - withdrawableMap.get(darknode) || - OrderedMap() - ).set(token, withdrawable) - ); - - // Precondition. The withdrawable amount should be the correct - // amount, including any legacy balance left-over. - const nodeRegistered = await toBN( - dnr.darknodeRegisteredAt(darknode) - ); - const nodeDeregistered = await toBN( - dnr.darknodeDeregisteredAt(darknode) - ); - // Node not registered. - if (nodeRegistered.isZero()) { - continue; - } - const legacyBalance = await toBN( - store.darknodeBalances(darknode, token) - ); - let lastWithdrawn = await toBN( - rewards.rewardsLastClaimed(darknode, token) - ); - if (lastWithdrawn.lt(nodeRegistered)) { - lastWithdrawn = await toBN( - rewards.getNextEpochFromTimestamp(nodeRegistered.toFixed()) - ); - } - let claimableUntil = currentCycle; - if (nodeDeregistered.isGreaterThan(0)) { - const deregisteredCycle = await toBN( - rewards.getNextEpochFromTimestamp( - nodeDeregistered.toFixed() - ) - ); - if (deregisteredCycle.isGreaterThan(0)) { - claimableUntil = deregisteredCycle; - } - } - const shareBefore = await toBN( - rewards.cycleCumulativeTokenShares( - lastWithdrawn.toFixed(), - token - ) - ); - const shareAfter = await toBN( - rewards.cycleCumulativeTokenShares( - claimableUntil.toFixed(), - token - ) - ); - withdrawable - .minus(legacyBalance) - .should.bignumber.equal(shareAfter.minus(shareBefore)); - } - } - - // Effect. - let tx; - if (tokens.length !== 1) { - tx = await rewards.withdrawMultiple(darknodes, tokens, { from }); - } else if (darknodes.length !== 1) { - tx = await rewards.withdrawToken(darknodes, tokens[0], { from }); - } else { - tx = await rewards.withdraw(darknodes[0], tokens[0], { from }); - } - - // Postcondition. Check conditions for each token and darknode. - for (const token of tokens) { - const balanceBefore = balanceBeforeMap.get(token); - - let withdrawableSum = new BigNumber(0); - for (const darknode of darknodes) { - const withdrawable = withdrawableMap.get(darknode).get(token); - withdrawableSum = withdrawableSum.plus(withdrawable); - - const postWithdrawable = await toBN( - rewards.darknodeBalances(darknode, token) - ); - postWithdrawable.should.bignumber.equal(0); - - console.log( - `${darknode.slice(0, 8)}... withdrew ${withdrawable - .div( - new BigNumber(10).exponentiatedBy( - await getDecimals(token) - ) - ) - .toFixed()} ${await getSymbol(token)}` - ); - } - - // Postcondition. The token balance of the user withdrawing increased - // by the expected amount. - const transactionDetails = await web3.eth.getTransaction(tx.tx); - let gasFee = new BigNumber(0); - if (token === ETHEREUM) { - const { gasPrice } = transactionDetails; - const { gasUsed } = tx.receipt; - gasFee = new BigNumber(gasUsed).times(gasPrice); - } - (await getBalance(token, from)).should.bignumber.equal( - balanceBefore.plus(withdrawableSum).minus(gasFee) - ); - } - - if (darknodes.length && tokens.length) { - return withdrawableMap.get(darknodes[0]).get(tokens[0]); - } else { - return new BigNumber(0); - } -}; - -const withdrawToCommunityFund = async ( - rewards: ClaimlessRewardsInstance, - tokens: string | string[], - from?: string -) => { - from = from || (await web3.eth.getAccounts())[0]; - tokens = Array.isArray(tokens) ? tokens : [tokens]; - - // Store the balance for each token, and the withdrawable amount for each - // darknode and token. - const communityFund = await rewards.communityFund(); - let withdrawableMap = OrderedMap(); - let balanceBeforeMap = OrderedMap(); - for (const token of tokens) { - const balanceBefore = await getBalance(token, communityFund); - balanceBeforeMap = balanceBeforeMap.set(token, balanceBefore); - - const withdrawable = await toBN( - rewards.darknodeBalances(communityFund, token) - ); - withdrawableMap = withdrawableMap.set(token, withdrawable); - } - - // Effect. - const tx = await rewards.withdrawToCommunityFund(tokens); - - // Postcondition. Check conditions for each token and darknode. - for (const token of tokens) { - const balanceBefore = balanceBeforeMap.get(token); - const withdrawableBefore = withdrawableMap.get(token); - - console.log( - `Withdrew ${withdrawableBefore - .div( - new BigNumber(10).exponentiatedBy(await getDecimals(token)) - ) - .toFixed()} ${await getSymbol(token)} to the community fund.` - ); - - // Postcondition. The token balance of the user withdrawing increased - // by the expected amount. - const transactionDetails = await web3.eth.getTransaction(tx.tx); - let gasFee = new BigNumber(0); - if (token === ETHEREUM && from === communityFund) { - const { gasPrice } = transactionDetails; - const { gasUsed } = tx.receipt; - gasFee = new BigNumber(gasUsed).times(gasPrice); - } - (await getBalance(token, communityFund)).should.bignumber.equal( - balanceBefore.plus(withdrawableBefore).minus(gasFee) - ); - ( - await toBN(rewards.darknodeBalances(communityFund, token)) - ).should.bignumber.equal(0); - } - - if (tokens.length) { - return withdrawableMap.get(tokens[0]); - } else { - return new BigNumber(0); - } -}; - -export const STEPS = { - registerToken, - deregisterToken, - changeCycle, - addRewards, - withdraw, - withdrawToCommunityFund, - waitForEpoch: _waitForEpoch -}; diff --git a/test/Compare.ts b/test/Compare.ts deleted file mode 100644 index 057a86b9..00000000 --- a/test/Compare.ts +++ /dev/null @@ -1,55 +0,0 @@ -import { expect } from "chai"; - -import { CompareTestInstance } from "../types/truffle-contracts"; - -const CompareTest = artifacts.require("CompareTest"); - -contract("Compare", accounts => { - let CompareInstance: CompareTestInstance; - - before(async () => { - CompareInstance = await CompareTest.new(); - }); - - describe("when bytes are the same length", async () => { - it("should return false when content is different", async () => { - const blockhash1 = "XTsJ2rO2yD47tg3JfmakVRXLzeou4SMtZvsMc6lkr6o"; - const blockhash2 = "sdkjfhaefhefjhskjefjhefhjksefkehjfsjc6lkr6o"; - const hexBlockhash1 = web3.utils.asciiToHex(blockhash1); - const hexBlockhash2 = web3.utils.asciiToHex(blockhash2); - expect( - await CompareInstance.bytesEqual(hexBlockhash1, hexBlockhash2) - ).to.be.false; - }); - - it("should return true when content is the same", async () => { - const blockhash1 = "XTsJ2rO2yD47tg3JfmakVRXLzeou4SMtZvsMc6lkr6o"; - const hexBlockhash1 = web3.utils.asciiToHex(blockhash1); - expect( - await CompareInstance.bytesEqual(hexBlockhash1, hexBlockhash1) - ).to.be.true; - const hexBlockhash2 = web3.utils.asciiToHex("abcdefghijk"); - expect( - await CompareInstance.bytesEqual(hexBlockhash2, hexBlockhash2) - ).to.be.true; - const hexBlockhash3 = web3.utils.asciiToHex( - "hukrasefaakuflehlafsefhuha2h293f8" - ); - expect( - await CompareInstance.bytesEqual(hexBlockhash3, hexBlockhash3) - ).to.be.true; - }); - }); - - describe("when bytes are of different length", async () => { - it("should return false", async () => { - const blockhash1 = "XTsJ2rO2yD47tg3J"; - const blockhash2 = "sdkjfhaefhefjhskjefjhefhjksefkehjfsjc6lkr6o"; - const hexBlockhash1 = web3.utils.asciiToHex(blockhash1); - const hexBlockhash2 = web3.utils.asciiToHex(blockhash2); - expect( - await CompareInstance.bytesEqual(hexBlockhash1, hexBlockhash2) - ).to.be.false; - }); - }); -}); diff --git a/test/DarknodePayment.ts b/test/DarknodePayment.ts deleted file mode 100644 index 44ae8724..00000000 --- a/test/DarknodePayment.ts +++ /dev/null @@ -1,1109 +0,0 @@ -import BN from "bn.js"; - -import { - DarknodePaymentInstance, - DarknodePaymentStoreInstance, - DarknodeRegistryForwarderInstance, - DarknodeRegistryLogicV1Instance, - DarknodeSlasherInstance, - ERC20Instance, - RenTokenInstance, - DarknodePaymentMigratorInstance -} from "../types/truffle-contracts"; -import { - ETHEREUM, - MINIMUM_BOND, - NULL, - PUBK, - waitForEpoch -} from "./helper/testUtils"; - -const Claimer = artifacts.require("Claimer"); -const RenToken = artifacts.require("RenToken"); -const ERC20 = artifacts.require("PaymentToken"); -const DarknodePaymentStore = artifacts.require("DarknodePaymentStore"); -const DarknodePayment = artifacts.require("DarknodePayment"); -const DarknodeRegistryProxy = artifacts.require("DarknodeRegistryProxy"); -const DarknodeRegistryLogicV1 = artifacts.require("DarknodeRegistryLogicV1"); -const SelfDestructingToken = artifacts.require("SelfDestructingToken"); -const DarknodeSlasher = artifacts.require("DarknodeSlasher"); -// const DarknodeRegistryForwarder = artifacts.require( -// "DarknodeRegistryForwarder" -// ); -const DarknodePaymentMigrator = artifacts.require("DarknodePaymentMigrator"); - -const { config } = require("../migrations/networks"); - -contract("DarknodePayment", (accounts: string[]) => { - let store: DarknodePaymentStoreInstance; - let dai: ERC20Instance; - let erc20Token: ERC20Instance; - let dnr: DarknodeRegistryLogicV1Instance; - let dnp: DarknodePaymentInstance; - let ren: RenTokenInstance; - let slasher: DarknodeSlasherInstance; - // let forwarder: DarknodeRegistryForwarderInstance; - - const owner = accounts[0]; - const darknode1 = accounts[1]; - const darknode2 = accounts[2]; - const darknode3 = accounts[3]; - const darknode6 = accounts[6]; - - before(async () => { - ren = await RenToken.deployed(); - dai = await ERC20.new("DAI"); - erc20Token = await ERC20.new("ERC20"); - const dnrProxy = await DarknodeRegistryProxy.deployed(); - dnr = await DarknodeRegistryLogicV1.at(dnrProxy.address); - store = await DarknodePaymentStore.deployed(); - dnp = await DarknodePayment.deployed(); - slasher = await DarknodeSlasher.deployed(); - await dnr.updateSlasher(slasher.address); - - // forwarder = await DarknodeRegistryForwarder.new(dnr.address); - // await dnp.updateDarknodeRegistry(forwarder.address); - - await waitForEpoch(dnr); - - new BN(await dnr.numDarknodes()).should.bignumber.equal(new BN(0)); - }); - - afterEach(async () => { - await waitForEpoch(dnr); - }); - - describe("Token registration", async () => { - const tokenCount = async () => { - let i = 0; - while (true) { - try { - await dnp.registeredTokens(i); - i++; - } catch (error) { - break; - } - } - return i; - }; - - const printTokens = async () => { - console.info(`Registered tokens: [`); - let i = 0; - while (true) { - try { - const token = await dnp.registeredTokens(i); - console.info( - ` ${token}, (${await dnp.registeredTokenIndex( - token - )})` - ); - i++; - } catch (error) { - break; - } - } - console.info(`]`); - }; - - const checkTokenIndexes = async () => { - let i = 0; - while (true) { - try { - const token = await dnp.registeredTokens(i); - ( - await dnp.registeredTokenIndex(token) - ).should.bignumber.equal(i + 1); - i++; - } catch (error) { - if (error.toString().match("invalid opcode")) { - break; - } - await printTokens(); - throw error; - } - } - }; - - it("cannot register token if not owner", async () => { - await dnp - .registerToken(dai.address, { from: accounts[1] }) - .should.be.rejectedWith(/Ownable: caller is not the owner/); - }); - - it("can register tokens", async () => { - const lengthBefore = await tokenCount(); - - (await dnp.tokenPendingRegistration(dai.address)).should.equal( - false - ); - ( - await dnp.tokenPendingRegistration(erc20Token.address) - ).should.equal(false); - - await dnp.registerToken(dai.address); - (await dnp.tokenPendingRegistration(dai.address)).should.equal( - true - ); - await dnp - .registerToken(dai.address) - .should.be.rejectedWith( - /DarknodePayment: token already pending registration/ - ); - await dnp.registerToken(erc20Token.address); - ( - await dnp.tokenPendingRegistration(erc20Token.address) - ).should.equal(true); - // complete token registration - await waitForEpoch(dnr); - (await dnp.registeredTokens(lengthBefore)).should.equal( - dai.address - ); - ( - await dnp.registeredTokenIndex(dai.address) - ).should.bignumber.equal(new BN(lengthBefore + 1)); - (await dnp.tokenPendingRegistration(dai.address)).should.equal( - false - ); - ( - await dnp.tokenPendingRegistration(erc20Token.address) - ).should.equal(false); - - await dnp.registerToken(ETHEREUM); - // complete token registration - await waitForEpoch(dnr); - (await dnp.registeredTokens(lengthBefore + 2)).should.equal( - ETHEREUM - ); - (await dnp.registeredTokenIndex(ETHEREUM)).should.bignumber.equal( - lengthBefore + 3 - ); - await checkTokenIndexes(); - - (await dnp.tokenPendingRegistration(dai.address)).should.equal( - false - ); - ( - await dnp.tokenPendingRegistration(erc20Token.address) - ).should.equal(false); - }); - - it("can deregister a destroyed token", async () => { - await registerDarknode(6); - await waitForEpoch(dnr); - await waitForEpoch(dnr); - // Claim so that the darknode share count isn't 0. - await dnp.claim(darknode6); - const sdt = await SelfDestructingToken.new(); - await dnp.registerToken(sdt.address); - await waitForEpoch(dnr); - await sdt.destruct(); - await dnp.deregisterToken(sdt.address); - await waitForEpoch(dnr); - await slasher.blacklist(darknode6); - }); - - it("cannot register already registered tokens", async () => { - await dnp - .registerToken(dai.address) - .should.be.rejectedWith( - /DarknodePayment: token already registered/ - ); - }); - - it("cannot deregister token if not owner", async () => { - await dnp - .deregisterToken(ETHEREUM, { from: accounts[1] }) - .should.be.rejectedWith(/Ownable: caller is not the owner/); - }); - - it("can deregister tokens", async () => { - await dnp.deregisterToken(ETHEREUM); - await dnp - .deregisterToken(ETHEREUM) - .should.be.rejectedWith( - /DarknodePayment: token not registered/ - ); - await dnp.deregisterToken(erc20Token.address); - // check token deregistration - (await dnp.registeredTokenIndex(ETHEREUM)).should.bignumber.equal( - 0 - ); - ( - await dnp.registeredTokenIndex(erc20Token.address) - ).should.bignumber.equal(0); - await checkTokenIndexes(); - }); - - it("cannot deregister unregistered tokens", async () => { - await dnp - .deregisterToken(ETHEREUM) - .should.be.rejectedWith( - /DarknodePayment: token not registered/ - ); - }); - - it("properly sets index", async () => { - const token1 = await ERC20.new("TOKEN1"); - const token2 = await ERC20.new("TOKEN2"); - const token3 = await ERC20.new("TOKEN3"); - const one = token1.address; - const two = token2.address; - const three = token3.address; - - await checkTokenIndexes(); - await dnp.registerToken(one); - await dnp.registerToken(two); - await dnp.registerToken(three); - await waitForEpoch(dnr); - await checkTokenIndexes(); - - // const expected = await dnp.registeredTokenIndex(one); - await dnp.deregisterToken(one); - await waitForEpoch(dnr); - await checkTokenIndexes(); - // (await dnp.registeredTokenIndex(two)).should.bignumber.equal(expected); - await dnp.deregisterToken(two); - await dnp.deregisterToken(three); - await checkTokenIndexes(); - await waitForEpoch(dnr); - await checkTokenIndexes(); - }); - }); - - describe("Token deposits", async () => { - it("can deposit ETH using deposit()", async () => { - // deposit using deposit() function - const previousReward = new BN( - await dnp.currentCycleRewardPool(ETHEREUM) - ); - const oldETHBalance = new BN(await store.totalBalance(ETHEREUM)); - const amount = new BN("1000000000"); - // make sure we have enough balance - const ownerBalance = new BN(await web3.eth.getBalance(owner)); - ownerBalance.gte(amount).should.be.true; - await dnp.deposit(amount, ETHEREUM, { - value: amount.toString(), - from: accounts[0] - }); - new BN(await store.totalBalance(ETHEREUM)).should.bignumber.equal( - oldETHBalance.add(amount) - ); - // We should have increased the reward pool - new BN( - await dnp.currentCycleRewardPool(ETHEREUM) - ).should.bignumber.equal( - await asRewardPoolBalance(previousReward.add(amount)) - ); - }); - - it("can deposit ETH via direct payment to DarknodePayment contract", async () => { - // deposit using direct deposit to dnp - const oldETHBalance = new BN(await store.totalBalance(ETHEREUM)); - const amount = new BN("1000000000"); - // make sure we have enough balance - const ownerBalance = new BN(await web3.eth.getBalance(owner)); - ownerBalance.gte(amount).should.be.true; - await web3.eth.sendTransaction({ - to: dnp.address, - from: owner, - value: amount.toString() - }); - new BN(await store.totalBalance(ETHEREUM)).should.bignumber.equal( - oldETHBalance.add(amount) - ); - // We should have increased the reward pool - new BN( - await dnp.currentCycleRewardPool(ETHEREUM) - ).should.bignumber.equal( - await asRewardPoolBalance(oldETHBalance.add(amount)) - ); - }); - - it("can deposit ETH via direct payment to DarknodePaymentStore contract", async () => { - // deposit using direct deposit to store - const oldETHBalance = new BN(await store.totalBalance(ETHEREUM)); - const amount = new BN("1000000000"); - await web3.eth.sendTransaction({ - to: store.address, - from: owner, - value: amount.toString() - }); - new BN(await store.totalBalance(ETHEREUM)).should.bignumber.equal( - oldETHBalance.add(amount) - ); - // We should have increased the reward pool - new BN( - await dnp.currentCycleRewardPool(ETHEREUM) - ).should.bignumber.equal( - await asRewardPoolBalance(oldETHBalance.add(amount)) - ); - }); - - it("cannot deposit ERC20 with ETH attached", async () => { - const amount = new BN("100000000000000000"); - await dnp - .deposit(amount, dai.address, { value: "1", from: accounts[0] }) - .should.be.rejectedWith( - /DarknodePayment: unexpected ether transfer/ - ); - }); - - it("cannot deposit ERC20 that has not been registered", async () => { - const before = new BN(await dai.balanceOf(accounts[0])); - - // Deregister dai and try to deposit - await dnp.deregisterToken(dai.address); - await waitForEpoch(dnr); - - // Approve and deposit - await dai.approve(dnp.address, before); - await dnp - .deposit(before, dai.address, { from: accounts[0] }) - .should.be.rejectedWith( - /DarknodePayment: token not registered/ - ); - - // RESET: Register dai back - await dnp.registerToken(dai.address); - await waitForEpoch(dnr); - }); - }); - - describe("Claiming rewards", async () => { - it("cannot tick if not registered", async () => { - await dnp - .claim(accounts[0]) - .should.be.rejectedWith( - /DarknodePayment: darknode is not registered/ - ); - }); - - it("cannot withdraw if there is no balance", async () => { - await registerDarknode(1); - await waitForEpoch(dnr); - await waitForEpoch(dnr); - - const balanceBefore = await dai.balanceOf(owner); - await dnp.withdraw(darknode1, dai.address); - const balanceAfter = await dai.balanceOf(owner); - balanceAfter.should.be.bignumber.equal(balanceBefore); - }); - - it("can be paid DAI from a payee", async () => { - // darknode1 is whitelisted and can participate in rewards - const previousBalance = new BN( - await store.totalBalance(dai.address) - ); - previousBalance.should.bignumber.equal(new BN(0)); - // sanity check that the reward pool is also zero - (await fetchRewardPool(dai.address)).should.bignumber.equal( - new BN(0) - ); - - // amount we're going to top up - const amount = new BN("100000000000000000"); - await depositDai(amount); - // We should have increased the reward pool - const newRewardPool = await fetchRewardPool(dai.address); - newRewardPool.should.bignumber.equal( - await asRewardPoolBalance(amount) - ); - - // We should have zero claimed balance before ticking - new BN( - await dnp.darknodeBalances(darknode1, dai.address) - ).should.bignumber.equal(new BN(0)); - - // We don't need to claim since we weren't allocated rewards last cycle - // But claim shouldn't revert - await dnp.claim(darknode1); - await waitForEpoch(dnr); - - const lastCycleRewards = await asRewardPoolBalance(amount); - // We should be the only one who participated last cycle - new BN( - await dnr.numDarknodesPreviousEpoch() - ).should.bignumber.equal(1); - // We should be allocated all the rewards - new BN( - await dnp.unclaimedRewards(dai.address) - ).should.bignumber.equal(lastCycleRewards); - new BN( - await dnp.previousCycleRewardShare(dai.address) - ).should.bignumber.equal(lastCycleRewards); - - // Claim the rewards for last cycle - await dnp.claim(darknode1); - await waitForEpoch(dnr); - - const pool = await fetchRewardPool(dai.address); - const entireDAIPool = new BN( - await dnp.unclaimedRewards(dai.address) - ); - entireDAIPool.should.bignumber.equal( - await asRewardPoolBalance(lastCycleRewards) - ); - pool.should.bignumber.equal( - await asRewardPoolBalance(entireDAIPool) - ); - const darknode1Balance = new BN( - await dnp.darknodeBalances(darknode1, dai.address) - ); - darknode1Balance.should.bignumber.equal(lastCycleRewards); - - // store.darknodeBalances should return the same as dnp.darknodeBalances - ( - await store.darknodeBalances(darknode1, dai.address) - ).should.bignumber.equal(darknode1Balance); - }); - - it("can be paid ETH from a payee", async () => { - // register ETH - await dnp.registerToken(ETHEREUM); - await waitForEpoch(dnr); - // ETH is now a registered token, claiming should now allocate balances - - const oldETHBalance = new BN(await store.totalBalance(ETHEREUM)); - const amount = new BN("1000000000"); - await dnp - .deposit(amount, ETHEREUM) - .should.be.rejectedWith( - /DarknodePayment: mismatched deposit value/ - ); - await dnp.deposit(amount, ETHEREUM, { - value: amount.toString(), - from: accounts[0] - }); - new BN(await store.totalBalance(ETHEREUM)).should.bignumber.equal( - oldETHBalance.add(amount) - ); - // We should have increased the reward pool - const newReward = new BN( - await dnp.currentCycleRewardPool(ETHEREUM) - ); - newReward.should.bignumber.equal( - await asRewardPoolBalance(oldETHBalance.add(amount)) - ); - - // We should have zero claimed balance before ticking - new BN( - await dnp.darknodeBalances(darknode1, ETHEREUM) - ).should.bignumber.equal(new BN(0)); - - // We don't need to claim since we weren't allocated rewards last cycle - // But claim shouldn't revert - await dnp.claim(darknode1); - await waitForEpoch(dnr); - - // We should be the only one who participated last cycle - new BN( - await dnr.numDarknodesPreviousEpoch() - ).should.bignumber.equal(1); - // We should be allocated all the rewards - new BN(await dnp.unclaimedRewards(ETHEREUM)).should.bignumber.equal( - newReward - ); - const rewardShare = new BN( - await dnp.previousCycleRewardShare(ETHEREUM) - ); - rewardShare.should.bignumber.equal(newReward); - const lastCycleReward = new BN( - await dnp.currentCycleRewardPool(ETHEREUM) - ); - - // Claim the rewards for last cycle - await dnp.claim(darknode1); - await waitForEpoch(dnr); - const newPool = await asRewardPoolBalance(lastCycleReward); - // There should be nothing left in the reward pool - new BN( - await dnp.currentCycleRewardPool(ETHEREUM) - ).should.bignumber.equal(newPool); - const earnedRewards = new BN( - await dnp.darknodeBalances(darknode1, ETHEREUM) - ); - earnedRewards.should.bignumber.equal(rewardShare); - - const oldBalance = new BN(await web3.eth.getBalance(darknode1)); - await dnp.withdraw(darknode1, ETHEREUM); - - // Our balances should have increased - const newBalance = new BN(await web3.eth.getBalance(darknode1)); - newBalance.should.bignumber.equal(oldBalance.add(earnedRewards)); - - // We should have nothing left to withdraw - const postWithdrawRewards = new BN( - await dnp.darknodeBalances(darknode1, ETHEREUM) - ); - postWithdrawRewards.should.bignumber.equal(new BN(0)); - - // Deregister ETH - await dnp.deregisterToken(ETHEREUM); - await waitForEpoch(dnr); - (await dnp.registeredTokenIndex(ETHEREUM)).should.bignumber.equal( - 0 - ); - - const darknodePaymentMigrator = await DarknodePaymentMigrator.new( - dnp.address, - [ETHEREUM] - ); - - (await store.owner()).should.equal(dnp.address); - await dnp.transferStoreOwnership(darknodePaymentMigrator.address); - }); - - it("can pay out DAI when darknodes withdraw", async () => { - const darknode1Balance = new BN( - await dnp.darknodeBalances(darknode1, dai.address) - ); - darknode1Balance.gt(new BN(0)).should.be.true; - await withdraw(darknode1); - }); - - it("cannot call tick twice in the same cycle", async () => { - await dnp.claim(darknode1); - await dnp - .claim(darknode1) - .should.be.rejectedWith( - /DarknodePayment: reward already claimed/ - ); - }); - - it("can tick again after a cycle has passed", async () => { - await dnp.claim(darknode1); - await waitForEpoch(dnr); - await dnp.claim(darknode1); - }); - - it("should evenly split reward pool between ticked darknodes", async () => { - const numDarknodes = 3; - // Start from number 2 to avoid previous balances - const startDarknode = 2; - - // We should only have one darknode - new BN( - await dnr.numDarknodesPreviousEpoch() - ).should.bignumber.equal(1); - // Register the darknodes - for (let i = startDarknode; i < startDarknode + numDarknodes; i++) { - await registerDarknode(i); - } - await waitForEpoch(dnr); - // We should still only have one darknode - new BN( - await dnr.numDarknodesPreviousEpoch() - ).should.bignumber.equal(1); - - // The darknodes should have zero balance - for (let i = startDarknode; i < startDarknode + numDarknodes; i++) { - const bal = new BN( - await dnp.darknodeBalances(accounts[i], dai.address) - ); - bal.should.bignumber.equal(new BN(0)); - // since darknode has not been around for a full epoch - await tick(accounts[i]).should.be.rejectedWith( - /DarknodePayment: cannot claim for this epoch/ - ); - } - - const rewards = new BN("300000000000000000"); - await depositDai(rewards); - - const rewardPool = await asRewardPoolBalance( - await store.availableBalance(dai.address) - ); - - await waitForEpoch(dnr); - - const newRegisteredDarknodes = new BN( - await dnr.numDarknodesPreviousEpoch() - ); - // We should finally have increased the number of darknodes - newRegisteredDarknodes.should.bignumber.equal(1 + numDarknodes); - const expectedShare = rewardPool.div(newRegisteredDarknodes); - - await multiTick(startDarknode, numDarknodes); - for (let i = startDarknode; i < startDarknode + numDarknodes; i++) { - const darknodeBalance = await dnp.darknodeBalances( - accounts[i], - dai.address - ); - darknodeBalance.should.bignumber.equal(expectedShare); - } - - // Withdraw for each darknode - await multiWithdraw(startDarknode, numDarknodes); - - // claim rewards for darknode1 - await tick(darknode1); - }); - - it("can call withdrawMultiple", async () => { - // Deposit DAI and ETH - const rewards = new BN("300000000000000000"); - await depositDai(rewards); - await dnp.registerToken(ETHEREUM); - await dnp.deposit(rewards, ETHEREUM, { - value: rewards.toString(), - from: accounts[0] - }); - - // Participate in rewards - await tick(darknode1); - // Change the epoch - await waitForEpoch(dnr); - - // Claim rewards for past epoch - await tick(darknode1); - - await waitForEpoch(dnr); - - // Claim rewards for past epoch - await tick(darknode1); - - // Withdraw for each darknode - await dnp.withdrawMultiple([darknode1], [dai.address, ETHEREUM]); - }); - - it("cannot withdraw if a darknode owner is invalid", async () => { - await dnp - .withdraw(NULL, dai.address) - .should.be.rejectedWith(/invalid darknode owner/); - // accounts[0] is not a registered darknode - await dnp - .withdraw(accounts[0], dai.address) - .should.be.rejectedWith(/invalid darknode owner/); - }); - - it("cannot withdraw more than once in a cycle", async () => { - const numDarknodes = 4; - new BN( - await dnr.numDarknodesPreviousEpoch() - ).should.bignumber.equal(numDarknodes); - - const rewards = new BN("300000000000000000"); - await depositDai(rewards); - await multiTick(1, numDarknodes); - // Change the epoch - await waitForEpoch(dnr); - - // Claim rewards for past cycle - await multiTick(1, numDarknodes); - - // First withdraw should pass - const balanceBefore = await dai.balanceOf(accounts[1]); - await withdraw(darknode1); - const balanceAfter = await dai.balanceOf(accounts[1]); - balanceAfter.should.be.bignumber.greaterThan(balanceBefore); - - // Rest should fail - await dnp.withdraw(darknode1, dai.address); - const balanceAfterSecond = await dai.balanceOf(accounts[1]); - balanceAfterSecond.should.be.bignumber.eq(balanceAfter); - }); - - it("cannot tick if it is blacklisted", async () => { - // Should succeed if not blacklisted - await tick(darknode2); - - await slasher.blacklist(darknode2); - - // Change the epoch - await waitForEpoch(dnr); - - // Tick should fail - await tick(darknode2).should.be.rejectedWith( - /DarknodePayment: darknode is not registered/ - ); - }); - - it("can still withdraw allocated rewards when blacklisted", async () => { - // Change the epoch - await waitForEpoch(dnr); - // Change the epoch - await waitForEpoch(dnr); - // Add rewards into the next cycle's pool - const previousBalance = new BN( - await dnp.darknodeBalances(darknode3, dai.address) - ); - const rewards = new BN("300000000000000000"); - await depositDai(rewards); - // Change the epoch - await waitForEpoch(dnr); - const rewardPool = await asRewardPoolBalance( - await store.availableBalance(dai.address) - ); - - // Claim the rewards for the pool - await tick(darknode3); - - const numDarknodes = new BN(await dnr.numDarknodesPreviousEpoch()); - const rewardSplit = rewardPool.div(numDarknodes); - - // Claim rewards for past cycle - await slasher.blacklist(darknode3); - - const newBalances = new BN( - await dnp.darknodeBalances(darknode3, dai.address) - ); - newBalances.should.bignumber.equal( - previousBalance.add(rewardSplit) - ); - - const oldDaiBal = new BN(await dai.balanceOf(darknode3)); - await withdraw(darknode3); - const newDaiBal = new BN(await dai.balanceOf(darknode3)); - newDaiBal.should.bignumber.equal(oldDaiBal.add(newBalances)); - }); - }); - - describe("Transferring ownership", async () => { - it("should disallow unauthorized transferring of ownership", async () => { - await dnp - .transferStoreOwnership(accounts[1], { from: accounts[1] }) - .should.be.rejectedWith(/Ownable: caller is not the owner/); - await dnp - .claimStoreOwnership({ from: accounts[1] }) - .should.be.rejectedWith( - /Claimable: caller is not the pending owner/ - ); - }); - - it("can transfer ownership of the darknode payment store", async () => { - const newDarknodePayment = await DarknodePayment.new( - "", - dnr.address, - store.address, - 0 - ); - - // [ACTION] Initiate ownership transfer to wrong account - await dnp.transferStoreOwnership(newDarknodePayment.address, { - from: accounts[0] - }); - - // [CHECK] Owner should still be dnp - (await store.owner()).should.equal(newDarknodePayment.address); - - // [RESET] Initiate ownership transfer back to dnp - await newDarknodePayment.transferStoreOwnership(dnp.address); - - // [CHECK] Owner should now be the dnp - (await store.owner()).should.equal(dnp.address); - }); - }); - - describe("DarknodePaymentStore negative tests", async () => { - // Transfer the ownership to owner - before(async () => { - const claimer = await Claimer.new(store.address); - // [ACTION] Can correct ownership transfer - await dnp.transferStoreOwnership(claimer.address); - // [ACTION] Claim ownership - await claimer.transferStoreOwnership(owner); - await store.claimOwnership({ from: owner }); - // [CHECK] Owner should now be main account - (await store.owner()).should.equal(owner); - }); - - it("cannot increment balances by an invalid amounts", async () => { - await store - .incrementDarknodeBalance(darknode1, dai.address, 0) - .should.be.rejectedWith(/DarknodePaymentStore: invalid amount/); - const invalidAmount = new BN( - await store.availableBalance(dai.address) - ).add(new BN(1)); - await store - .incrementDarknodeBalance(darknode1, dai.address, invalidAmount) - .should.be.rejectedWith( - /DarknodePaymentStore: insufficient contract balance/ - ); - }); - - it("cannot transfer more than is in the balance", async () => { - const invalidAmount = new BN( - await dnp.darknodeBalances(darknode1, dai.address) - ).add(new BN(1)); - await store - .transfer(darknode1, dai.address, invalidAmount, darknode1) - .should.be.rejectedWith( - /DarknodePaymentStore: insufficient darknode balance/ - ); - }); - - it("cannot call functions from non-owner", async () => { - await store - .incrementDarknodeBalance(darknode1, dai.address, new BN(0), { - from: accounts[2] - }) - .should.be.rejectedWith(/Ownable: caller is not the owner/); - await store - .transfer(darknode1, dai.address, new BN(0), darknode1, { - from: accounts[2] - }) - .should.be.rejectedWith(/Ownable: caller is not the owner/); - await store - .transferOwnership(dnp.address, { from: accounts[2] }) - .should.be.rejectedWith(/Ownable: caller is not the owner/); - }); - - it("cannot transferOwnership to the same owner", async () => { - await store - .transferOwnership(owner, { from: owner }) - .should.be.rejectedWith(/Claimable: invalid new owner/); - await store.transferOwnership(accounts[3], { from: owner }); - await store - .transferOwnership(accounts[3], { from: owner }) - .should.be.rejectedWith(/Claimable: invalid new owner/); - }); - - // Transfer the ownership back to DNP - after(async () => { - // [RESET] Initiate ownership transfer back to dnp - await store.transferOwnership(dnp.address); - // [RESET] Claim ownership - await dnp.claimStoreOwnership(); - // [CHECK] Owner should now be the dnp - (await store.owner()).should.equal(dnp.address); - }); - }); - - describe("when updating cycle changer", async () => { - it("cannot update cycleChanger if unauthorized", async () => { - await dnp - .updateCycleChanger(accounts[2], { from: accounts[2] }) - .should.be.rejectedWith(/Ownable: caller is not the owner./); - await dnp - .updateCycleChanger(accounts[3], { from: accounts[3] }) - .should.be.rejectedWith(/Ownable: caller is not the owner./); - }); - - it("cannot update cycleChanger to an invalid address", async () => { - await dnp - .updateCycleChanger(NULL) - .should.be.rejectedWith(/invalid contract address/); - }); - - it("can update cycleChanger to different address", async () => { - await dnp.updateCycleChanger(accounts[2]); - await dnp.changeCycle({ from: accounts[2] }); - await dnp - .changeCycle() - .should.be.rejectedWith(/DarknodePayment: not cycle changer/); - // Restore the cycle changer to the dnr address - await dnp.updateCycleChanger(dnr.address); - }); - }); - - describe("when forwarding funds", async () => { - it("can forward ETH", async () => { - await dnp.forward(ETHEREUM); - }); - - it("can forward funds to the store", async () => { - // DNP should have zero balance - new BN(await dai.balanceOf(dnp.address)).should.bignumber.equal( - new BN(0) - ); - - const storeDaiBalance = new BN( - await store.availableBalance(dai.address) - ); - const amount = new BN("1000000"); - new BN(await dai.balanceOf(owner)).gte(amount).should.be.true; - await dai.transfer(dnp.address, amount); - - (await store.availableBalance(dai.address)).should.bignumber.equal( - storeDaiBalance - ); - // DNP should have some balance - new BN(await dai.balanceOf(dnp.address)).should.bignumber.equal( - amount - ); - - // Forward the funds on - await dnp.forward(dai.address); - new BN(await dai.balanceOf(dnp.address)).should.bignumber.equal( - new BN(0) - ); - (await store.availableBalance(dai.address)).should.bignumber.equal( - storeDaiBalance.add(amount) - ); - }); - }); - - describe("when changing payout percent", async () => { - it("cannot change payout percent unless authorized", async () => { - await dnp - .updatePayoutPercentage(new BN(10), { from: accounts[2] }) - .should.be.rejectedWith(/Ownable: caller is not the owner./); - }); - - it("cannot change payout percent to an invalid percent", async () => { - await dnp - .updatePayoutPercentage(new BN(101)) - .should.be.rejectedWith(/DarknodePayment: invalid percent/); - await dnp - .updatePayoutPercentage(new BN(201)) - .should.be.rejectedWith(/DarknodePayment: invalid percent/); - await dnp - .updatePayoutPercentage(new BN(255)) - .should.be.rejectedWith(/DarknodePayment: invalid percent/); - await dnp - .updatePayoutPercentage(new BN(256)) - .should.be.rejectedWith(/DarknodePayment: invalid percent/); - await dnp - .updatePayoutPercentage(new BN(32782)) - .should.be.rejectedWith(/DarknodePayment: invalid percent/); - }); - - it("can change payout percent to a valid percent", async () => { - await updatePayoutPercent(new BN(100)); - await updatePayoutPercent(new BN(0)); - await updatePayoutPercent(new BN(10)); - await updatePayoutPercent(new BN(12)); - await updatePayoutPercent(new BN(73)); - }); - - it("should not payout anything if payout percent is zero", async () => { - new BN(await dnp.currentCycleRewardPool(dai.address)).gte(new BN(0)) - .should.be.true; - const oldBal = new BN( - await dnp.darknodeBalances(darknode1, dai.address) - ); - await updatePayoutPercent(new BN(0)); - // current epoch payment amount is zero but previous is not - await waitForEpoch(dnr); - // now the current and previous payment amount should be zero - // claiming the rewards for last epoch should be zero - await tick(darknode1); - const newBal = new BN( - await dnp.darknodeBalances(darknode1, dai.address) - ); - newBal.should.bignumber.equal(oldBal); - }); - - it("should payout the correct amount", async () => { - new BN(await dnp.currentCycleRewardPool(dai.address)).gte(new BN(0)) - .should.be.true; - const oldBal = new BN( - await dnp.darknodeBalances(darknode1, dai.address) - ); - const percent = new BN(20); - await updatePayoutPercent(percent); - // current epoch payment amount is twenty but previous is not - await waitForEpoch(dnr); - // now the current and previous payment amount should be twenty - // claiming the rewards for last epoch should be twenty percent - const rewardPool = new BN(await store.availableBalance(dai.address)) - .div(new BN(100)) - .mul(percent); - const rewardShare = rewardPool.div( - new BN(await dnr.numDarknodes()) - ); - await tick(darknode1); - const newBal = new BN( - await dnp.darknodeBalances(darknode1, dai.address) - ); - newBal.should.bignumber.equal(oldBal.add(rewardShare)); - await updatePayoutPercent(config.DARKNODE_PAYOUT_PERCENT); - await waitForEpoch(dnr); - }); - }); - - it("can update DarknodeRegistry", async () => { - const darknodeRegistry = await dnp.darknodeRegistry(); - await dnp - .updateDarknodeRegistry(NULL) - .should.be.rejectedWith( - /DarknodePayment: invalid Darknode Registry address/ - ); - - await dnp.updateDarknodeRegistry(accounts[0]); - await dnp.updateDarknodeRegistry(darknodeRegistry); - }); - - const tick = async (address: string) => { - return dnp.claim(address); - }; - - const multiTick = async (start = 1, numberOfDarknodes = 1) => { - for (let i = start; i < start + numberOfDarknodes; i++) { - await tick(accounts[i]); - } - }; - - const withdraw = async (address: string) => { - // Our claimed amount should be positive - const earnedDAIRewards = new BN( - await dnp.darknodeBalances(address, dai.address) - ); - earnedDAIRewards.gt(new BN(0)).should.be.true; - - const oldDAIBalance = new BN(await dai.balanceOf(address)); - - await dnp.withdraw(address, dai.address); - - // Our balances should have increased - const newDAIBalance = new BN(await dai.balanceOf(address)); - newDAIBalance.should.bignumber.equal( - oldDAIBalance.add(earnedDAIRewards) - ); - - // We should have nothing left to withdraw - const postWithdrawRewards = new BN( - await dnp.darknodeBalances(address, dai.address) - ); - postWithdrawRewards.should.bignumber.equal(new BN(0)); - }; - - const multiWithdraw = async (start = 1, numberOfDarknodes = 1) => { - for (let i = start; i < start + numberOfDarknodes; i++) { - await withdraw(accounts[i]); - } - }; - - const depositDai = async (amount: number | BN | string) => { - const amountBN = new BN(amount); - const previousBalance = new BN( - await store.availableBalance(dai.address) - ); - // Approve the contract to use DAI - await dai.approve(dnp.address, amountBN); - await dnp.deposit(amountBN, dai.address); - // We should expect the DAI balance to have increased by what we deposited - (await store.availableBalance(dai.address)).should.bignumber.equal( - previousBalance.add(amountBN) - ); - }; - - const asRewardPoolBalance = async ( - amount: BN | string | number - ): Promise => { - const balance = new BN(amount); - const payoutPercent = new BN(await dnp.currentCyclePayoutPercent()); - const rewardPool = balance.div(new BN(100)).mul(payoutPercent); - return rewardPool; - }; - - const fetchRewardPool = async (token: string): Promise => { - return new BN(await dnp.currentCycleRewardPool(token)); - }; - - const registerDarknode = async (i: number) => { - await ren.transfer(accounts[i], MINIMUM_BOND); - await ren.approve(dnr.address, MINIMUM_BOND, { from: accounts[i] }); - // Register the darknodes under the account address - await dnr.register(accounts[i], PUBK(i), { from: accounts[i] }); - }; - - const updatePayoutPercent = async (percent: number | string | BN) => { - const p = new BN(percent); - await dnp.updatePayoutPercentage(p); - new BN(await dnp.nextCyclePayoutPercent()).should.bignumber.equal(p); - await waitForEpoch(dnr); - new BN(await dnp.currentCyclePayoutPercent()).should.bignumber.equal(p); - }; -}); diff --git a/test/DarknodeRegistry.ts b/test/DarknodeRegistry.ts deleted file mode 100644 index 5778cbe4..00000000 --- a/test/DarknodeRegistry.ts +++ /dev/null @@ -1,1108 +0,0 @@ -import BN from "bn.js"; - -import { - DarknodeRegistryLogicV1Instance, - DarknodeRegistryStoreInstance, - DarknodeSlasherInstance, - RenProxyAdminInstance, - RenTokenInstance, - GetOperatorDarknodesInstance -} from "../types/truffle-contracts"; -import { - deployProxy, - ID, - MINIMUM_BOND, - MINIMUM_EPOCH_INTERVAL_SECONDS, - MINIMUM_POD_SIZE, - NULL, - PUBK, - waitForEpoch -} from "./helper/testUtils"; - -const Claimer = artifacts.require("Claimer"); -const ForceSend = artifacts.require("ForceSend"); -const RenToken = artifacts.require("RenToken"); -const DarknodeRegistryStore = artifacts.require("DarknodeRegistryStore"); -const DarknodeRegistryProxy = artifacts.require("DarknodeRegistryProxy"); -const DarknodeRegistryLogicV1 = artifacts.require("DarknodeRegistryLogicV1"); -const DarknodeSlasher = artifacts.require("DarknodeSlasher"); -const NormalToken = artifacts.require("NormalToken"); -const RenProxyAdmin = artifacts.require("RenProxyAdmin"); -const GetOperatorDarknodes = artifacts.require("GetOperatorDarknodes"); - -const { config } = require("../migrations/networks"); - -const numAccounts = 10; - -contract("DarknodeRegistry", (accounts: string[]) => { - let ren: RenTokenInstance; - let dnrs: DarknodeRegistryStoreInstance; - let dnr: DarknodeRegistryLogicV1Instance; - let slasher: DarknodeSlasherInstance; - let proxyAdmin: RenProxyAdminInstance; - - before(async () => { - ren = await RenToken.deployed(); - dnrs = await DarknodeRegistryStore.deployed(); - const dnrProxy = await DarknodeRegistryProxy.deployed(); - dnr = await DarknodeRegistryLogicV1.at(dnrProxy.address); - slasher = await DarknodeSlasher.deployed(); - proxyAdmin = await RenProxyAdmin.deployed(); - await dnr.updateSlasher(slasher.address); - await dnr - .epoch({ from: accounts[1] }) - .should.be.rejectedWith( - /DarknodeRegistry: not authorized to call first epoch/ - ); - await waitForEpoch(dnr); - - for (let i = 1; i < numAccounts; i++) { - await ren.transfer(accounts[i], MINIMUM_BOND); - } - }); - - it("should return empty list when no darknodes are registered", async () => { - const nodes = (await dnr.getPreviousDarknodes(NULL, 100)).filter( - x => x !== NULL - ); - nodes.length.should.equal(0); - }); - - it("can update minimum bond", async () => { - await dnr.updateMinimumBond(0x1); - await waitForEpoch(dnr); - (await dnr.minimumBond()).should.bignumber.equal(1); - await dnr - .updateMinimumBond(MINIMUM_BOND, { from: accounts[1] }) - .should.be.rejectedWith(/Ownable: caller is not the owner/); - await dnr.updateMinimumBond(MINIMUM_BOND); - (await dnr.minimumBond()).should.bignumber.equal(1); - await waitForEpoch(dnr); - (await dnr.minimumBond()).should.bignumber.equal(MINIMUM_BOND); - }); - - it("can update minimum pod size", async () => { - await dnr.updateMinimumPodSize(0x0); - await waitForEpoch(dnr); - (await dnr.minimumPodSize()).should.bignumber.equal(0); - await dnr - .updateMinimumPodSize(MINIMUM_POD_SIZE, { from: accounts[1] }) - .should.be.rejectedWith(/Ownable: caller is not the owner/); - await dnr.updateMinimumPodSize(MINIMUM_POD_SIZE); - (await dnr.minimumPodSize()).should.bignumber.equal(0); - await waitForEpoch(dnr); - (await dnr.minimumPodSize()).should.bignumber.equal(MINIMUM_POD_SIZE); - }); - - it("can update minimum epoch interval", async () => { - await dnr.updateMinimumEpochInterval(0x0); - await waitForEpoch(dnr); - (await dnr.minimumEpochInterval()).should.bignumber.equal(0); - await dnr - .updateMinimumEpochInterval(MINIMUM_EPOCH_INTERVAL_SECONDS, { - from: accounts[1] - }) - .should.be.rejectedWith(/Ownable: caller is not the owner/); - await dnr.updateMinimumEpochInterval(MINIMUM_EPOCH_INTERVAL_SECONDS); - (await dnr.minimumEpochInterval()).should.bignumber.equal(0); - await waitForEpoch(dnr); - (await dnr.minimumEpochInterval()).should.bignumber.equal( - MINIMUM_EPOCH_INTERVAL_SECONDS - ); - }); - - it("can not register a Dark Node with a bond less than the minimum bond", async () => { - const lowBond = MINIMUM_BOND.sub(new BN(1)); - await ren.approve(dnr.address, lowBond, { from: accounts[0] }); - await dnr - .register(ID("A"), PUBK("A")) - .should.be.rejectedWith(/ERC20: transfer amount exceeds allowance/); // failed transfer - }); - - it("cannot register a darknode with address zero", async () => { - await dnr - .register(NULL, PUBK("A")) - .should.be.rejectedWith( - /DarknodeRegistry: darknode address cannot be zero/ - ); // failed transfer - }); - - it("can not call epoch before the minimum time interval", async () => { - await waitForEpoch(dnr); - await dnr - .epoch() - .should.be.rejectedWith( - /DarknodeRegistry: epoch interval has not passed/ - ); - }); - - it("can register, deregister and refund Darknodes", async function() { - this.timeout(1000 * 1000); - // [ACTION] Register - for (let i = 0; i < numAccounts; i++) { - await ren.approve(dnr.address, MINIMUM_BOND, { from: accounts[i] }); - await dnr.register(ID(i), PUBK(i), { from: accounts[i] }); - } - - const nodeCount = 10; - await ren.transfer(accounts[2], MINIMUM_BOND.mul(new BN(nodeCount))); - await ren.approve(dnr.address, MINIMUM_BOND.mul(new BN(nodeCount)), { - from: accounts[2] - }); - - for (let i = numAccounts; i < numAccounts + nodeCount; i++) { - await dnr.register(ID(i), PUBK(i), { from: accounts[2] }); - } - - // Wait for epoch - await waitForEpoch(dnr); - - const getOperatorDarknodes = await GetOperatorDarknodes.new( - dnr.address - ); - - ( - await getOperatorDarknodes.getOperatorDarknodes(accounts[2]) - ).length.should.bignumber.equal(nodeCount + 1); // +1 from the first loop - - // [ACTION] Deregister - for (let i = 0; i < numAccounts; i++) { - await dnr.deregister(ID(i), { from: accounts[i] }); - } - - for (let i = numAccounts; i < numAccounts + nodeCount; i++) { - await dnr.deregister(ID(i), { from: accounts[2] }); - } - - // Wait for two epochs - await waitForEpoch(dnr); - await waitForEpoch(dnr); - - // [ACTION] Refund - for (let i = 0; i < numAccounts; i++) { - await dnr.refund(ID(i), { from: accounts[i] }); - } - - for (let i = numAccounts; i < numAccounts + nodeCount; i++) { - await dnr.refund(ID(i), { from: accounts[2] }); - } - - await ren.transfer(accounts[0], MINIMUM_BOND.mul(new BN(nodeCount)), { - from: accounts[2] - }); - }); - - it("can check darknode statuses", async () => { - // WARNING: A lot of code a head - - const owner = accounts[2]; - const id = ID("0"); - const pubk = PUBK("0"); - - // [SETUP] Wait for epoch to reset `isRegisteredInPreviousEpoch` - await waitForEpoch(dnr); - - // [CHECK] - (await dnr.isRefunded(id)).should.be.true; - (await dnr.isPendingRegistration(id)).should.be.false; - (await dnr.isRegistered(id)).should.be.false; - (await dnr.isDeregisterable(id)).should.be.false; - (await dnr.isPendingDeregistration(id)).should.be.false; - (await dnr.isDeregistered(id)).should.be.false; - (await dnr.isRefundable(id)).should.be.false; - (await dnr.isRegisteredInPreviousEpoch(id)).should.be.false; - - // [ACTION] Register - await ren.approve(dnr.address, MINIMUM_BOND, { from: owner }); - await dnr.register(id, pubk, { from: owner }); - - // [CHECK] - (await dnr.isRefunded(id)).should.be.false; - (await dnr.isPendingRegistration(id)).should.be.true; - (await dnr.isRegistered(id)).should.be.false; - (await dnr.isDeregisterable(id)).should.be.false; - (await dnr.isPendingDeregistration(id)).should.be.false; - (await dnr.isDeregistered(id)).should.be.false; - (await dnr.isRefundable(id)).should.be.false; - (await dnr.isRegisteredInPreviousEpoch(id)).should.be.false; - - await waitForEpoch(dnr); - - // [CHECK] - (await dnr.isRefunded(id)).should.be.false; - (await dnr.isPendingRegistration(id)).should.be.false; - (await dnr.isRegistered(id)).should.be.true; - (await dnr.isDeregisterable(id)).should.be.true; - (await dnr.isPendingDeregistration(id)).should.be.false; - (await dnr.isDeregistered(id)).should.be.false; - (await dnr.isRefundable(id)).should.be.false; - (await dnr.isRegisteredInPreviousEpoch(id)).should.be.false; - - await waitForEpoch(dnr); - - // [CHECK] - (await dnr.isRefunded(id)).should.be.false; - (await dnr.isPendingRegistration(id)).should.be.false; - (await dnr.isRegistered(id)).should.be.true; - (await dnr.isDeregisterable(id)).should.be.true; - (await dnr.isPendingDeregistration(id)).should.be.false; - (await dnr.isDeregistered(id)).should.be.false; - (await dnr.isRefundable(id)).should.be.false; - (await dnr.isRegisteredInPreviousEpoch(id)).should.be.true; - - // [ACTION] Deregister - await dnr.deregister(id, { from: owner }); - - // [CHECK] - (await dnr.isRefunded(id)).should.be.false; - (await dnr.isPendingRegistration(id)).should.be.false; - (await dnr.isRegistered(id)).should.be.true; - (await dnr.isDeregisterable(id)).should.be.false; - (await dnr.isPendingDeregistration(id)).should.be.true; - (await dnr.isDeregistered(id)).should.be.false; - (await dnr.isRefundable(id)).should.be.false; - (await dnr.isRegisteredInPreviousEpoch(id)).should.be.true; - - // [ACTION] Wait for epoch - await waitForEpoch(dnr); - - (await dnr.isRefunded(id)).should.be.false; - (await dnr.isPendingRegistration(id)).should.be.false; - (await dnr.isRegistered(id)).should.be.false; - (await dnr.isDeregisterable(id)).should.be.false; - (await dnr.isPendingDeregistration(id)).should.be.false; - (await dnr.isDeregistered(id)).should.be.true; - (await dnr.isRefundable(id)).should.be.false; - (await dnr.isRegisteredInPreviousEpoch(id)).should.be.true; - - // [ACTION] Wait for epoch - await waitForEpoch(dnr); - - (await dnr.isRefunded(id)).should.be.false; - (await dnr.isPendingRegistration(id)).should.be.false; - (await dnr.isRegistered(id)).should.be.false; - (await dnr.isDeregisterable(id)).should.be.false; - (await dnr.isPendingDeregistration(id)).should.be.false; - (await dnr.isDeregistered(id)).should.be.true; - (await dnr.isRefundable(id)).should.be.true; - (await dnr.isRegisteredInPreviousEpoch(id)).should.be.false; - - // [ACTION] Refund - await dnr.refund(id, { from: accounts[0] }); - - (await dnr.isRefunded(id)).should.be.true; - (await dnr.isPendingRegistration(id)).should.be.false; - (await dnr.isRegistered(id)).should.be.false; - (await dnr.isDeregisterable(id)).should.be.false; - (await dnr.isPendingDeregistration(id)).should.be.false; - (await dnr.isDeregistered(id)).should.be.false; - (await dnr.isRefundable(id)).should.be.false; - (await dnr.isRegisteredInPreviousEpoch(id)).should.be.false; - }); - - it("bond is exactly the minimum bond", async () => { - const owner = accounts[2]; - const id = ID("0"); - const pubk = PUBK("0"); - - const renBalanceBefore = new BN(await ren.balanceOf(owner)); - - // Approve more than minimum bond - await ren.approve(dnr.address, MINIMUM_BOND.mul(new BN(2)), { - from: owner - }); - - // Register - await dnr.register(id, pubk, { from: owner }); - - // Only minimum bond should have been transferred - (await ren.balanceOf(owner)).should.bignumber.equal( - renBalanceBefore.sub(MINIMUM_BOND) - ); - - // [RESET] - await waitForEpoch(dnr); - await dnr.deregister(id, { from: owner }); - await waitForEpoch(dnr); - await waitForEpoch(dnr); - await dnr.refund(id, { from: owner }); - }); - - it("[SETUP] Register darknodes for next tests", async () => { - for (let i = 0; i < numAccounts; i++) { - await ren.approve(dnr.address, MINIMUM_BOND, { from: accounts[i] }); - await dnr.register(ID(i), PUBK(i), { from: accounts[i] }); - } - await waitForEpoch(dnr); - }); - - it("can not register a node twice", async () => { - await ren.approve(dnr.address, MINIMUM_BOND, { from: accounts[0] }); - await dnr - .register(ID("0"), PUBK("0")) - .should.be.rejectedWith( - /DarknodeRegistry: must be refunded or never registered/ - ); - }); - - it("can not deregister a node which is not registered", async () => { - await dnr - .deregister(ID("-1")) - .should.be.rejectedWith(/DarknodeRegistry: must be deregisterable/); - }); - - it("only darknode owner can deregister darknode", async () => { - await dnr - .deregister(ID("0"), { from: accounts[9] }) - .should.be.rejectedWith(/DarknodeRegistry: must be darknode owner/); - }); - - it("can get the owner of the Dark Node", async () => { - (await dnr.getDarknodeOperator(ID("0"))).should.equal(accounts[0]); - }); - - it("can get the bond of the Dark Node", async () => { - (await dnr.getDarknodeBond(ID("0"))).should.bignumber.equal( - MINIMUM_BOND - ); - }); - - it("can get the Public Key of the Dark Node", async () => { - (await dnr.getDarknodePublicKey(ID("0"))).should.equal(PUBK("0")); - }); - - it("can deregister dark nodes", async () => { - await dnr.deregister(ID("0"), { from: accounts[0] }); - await dnr.deregister(ID("1"), { from: accounts[1] }); - await dnr.deregister(ID("4"), { from: accounts[4] }); - await dnr.deregister(ID("5"), { from: accounts[5] }); - await dnr.deregister(ID("8"), { from: accounts[8] }); - await dnr.deregister(ID("9"), { from: accounts[9] }); - await waitForEpoch(dnr); - (await dnr.isDeregistered(ID("0"))).should.be.true; - (await dnr.isDeregistered(ID("1"))).should.be.true; - (await dnr.isDeregistered(ID("4"))).should.be.true; - (await dnr.isDeregistered(ID("5"))).should.be.true; - (await dnr.isDeregistered(ID("8"))).should.be.true; - (await dnr.isDeregistered(ID("9"))).should.be.true; - }); - - it("can't deregister twice", async () => { - await dnr - .deregister(ID("0"), { from: accounts[0] }) - .should.be.rejectedWith(/must be deregisterable/); - }); - - it("can get the current epoch's registered dark nodes", async () => { - const nodes = (await dnr.getDarknodes(NULL, 0)).filter(x => x !== NULL); - nodes.length.should.equal(numAccounts - 6); - nodes[0].should.equal(ID("2")); - nodes[1].should.equal(ID("3")); - nodes[2].should.equal(ID("6")); - nodes[3].should.equal(ID("7")); - }); - - it("can get the previous epoch's registered dark nodes", async () => { - let nodes = (await dnr.getPreviousDarknodes(NULL, 0)).filter( - x => x !== NULL - ); - nodes.length.should.equal(numAccounts); - - await waitForEpoch(dnr); - - nodes = (await dnr.getPreviousDarknodes(NULL, 0)).filter( - x => x !== NULL - ); - nodes.length.should.equal(numAccounts - 6); - }); - - it("can get the dark nodes in multiple calls", async () => { - const nodes = []; - - let start = NULL; - do { - const newNodes = await dnr.getDarknodes(start, 2); - start = newNodes[newNodes.length - 1]; - for (const node of newNodes) { - if (node !== NULL && nodes.indexOf(node) === -1) { - nodes.push(node); - } - } - } while (start !== NULL); - - nodes.length.should.equal(numAccounts - 6); - nodes[0].should.equal(ID("2")); - nodes[1].should.equal(ID("3")); - nodes[2].should.equal(ID("6")); - nodes[3].should.equal(ID("7")); - }); - - it("can get the previous epoch's dark nodes in multiple calls", async () => { - const nodes = []; - - let start = NULL; - do { - const newNodes = await dnr.getPreviousDarknodes(start, 2); - start = newNodes[newNodes.length - 1]; - for (const node of newNodes) { - if (node !== NULL && nodes.indexOf(node) === -1) { - nodes.push(node); - } - } - } while (start !== NULL); - - nodes.length.should.equal(numAccounts - 6); - nodes[0].should.equal(ID("2")); - nodes[1].should.equal(ID("3")); - nodes[2].should.equal(ID("6")); - nodes[3].should.equal(ID("7")); - }); - - it("should fail to refund before deregistering", async () => { - await dnr - .refund(ID("3"), { from: accounts[3] }) - .should.be.rejectedWith(/must be deregistered/); - }); - - it("can deregister and refund dark nodes", async () => { - // Deregister - await dnr.deregister(ID("2"), { from: accounts[2] }); - await dnr.deregister(ID("3"), { from: accounts[3] }); - await dnr.deregister(ID("6"), { from: accounts[6] }); - await dnr.deregister(ID("7"), { from: accounts[7] }); - - (await dnr.isPendingDeregistration(ID("2"))).should.be.true; - (await dnr.isPendingDeregistration(ID("3"))).should.be.true; - (await dnr.isPendingDeregistration(ID("6"))).should.be.true; - (await dnr.isPendingDeregistration(ID("7"))).should.be.true; - - // Call epoch - await waitForEpoch(dnr); - - (await dnr.isRegisteredInPreviousEpoch(ID("2"))).should.be.true; - (await dnr.isRegisteredInPreviousEpoch(ID("3"))).should.be.true; - (await dnr.isRegisteredInPreviousEpoch(ID("6"))).should.be.true; - (await dnr.isRegisteredInPreviousEpoch(ID("7"))).should.be.true; - (await dnr.isDeregistered(ID("2"))).should.be.true; - (await dnr.isDeregistered(ID("3"))).should.be.true; - (await dnr.isDeregistered(ID("6"))).should.be.true; - (await dnr.isDeregistered(ID("7"))).should.be.true; - const previousDarknodesEpoch1 = ( - await dnr.getPreviousDarknodes(NULL, 0) - ).filter(x => x !== NULL); - await waitForEpoch(dnr); - const previousDarknodesEpoch2 = ( - await dnr.getPreviousDarknodes(NULL, 0) - ).filter(x => x !== NULL); - ( - previousDarknodesEpoch1.length - previousDarknodesEpoch2.length - ).should.be.equal(4); - (await dnr.isDeregistered(ID("2"))).should.be.true; - (await dnr.isDeregistered(ID("3"))).should.be.true; - (await dnr.isDeregistered(ID("6"))).should.be.true; - (await dnr.isDeregistered(ID("7"))).should.be.true; - - // Refund - await dnr.refund(ID("2"), { from: accounts[2] }); - await dnr.refund(ID("3"), { from: accounts[3] }); - await dnr.refund(ID("6"), { from: accounts[6] }); - await dnr.refund(ID("7"), { from: accounts[7] }); - - (await dnr.isRefunded(ID("2"))).should.be.true; - (await dnr.isRefunded(ID("3"))).should.be.true; - (await dnr.isRefunded(ID("6"))).should.be.true; - (await dnr.isRefunded(ID("7"))).should.be.true; - (await ren.balanceOf(accounts[2])).should.bignumber.equal(MINIMUM_BOND); - (await ren.balanceOf(accounts[3])).should.bignumber.equal(MINIMUM_BOND); - (await ren.balanceOf(accounts[6])).should.bignumber.equal(MINIMUM_BOND); - (await ren.balanceOf(accounts[7])).should.bignumber.equal(MINIMUM_BOND); - }); - - it("anyone can refund", async () => { - const owner = accounts[2]; - const id = ID("2"); - const pubk = PUBK("2"); - - // [SETUP] Register and then deregister nodes - await ren.approve(dnr.address, MINIMUM_BOND, { from: owner }); - await dnr.register(id, pubk, { from: owner }); - await waitForEpoch(dnr); - await dnr.deregister(id, { from: owner }); - (await dnr.isPendingDeregistration(id)).should.be.true; - await waitForEpoch(dnr); - await waitForEpoch(dnr); - - // [ACTION] Refund - await dnr.refund(id, { from: accounts[0] }); - - // [CHECK] Refund was successful and bond was returned - (await dnr.isRefunded(id)).should.be.true; - (await ren.balanceOf(owner)).should.bignumber.equal(MINIMUM_BOND); - }); - - it("should fail to refund twice", async () => { - await dnr - .refund(ID("2")) - .should.be.rejectedWith( - /must be deregistered for at least one epoch/ - ); - }); - - it("should throw if refund fails", async () => { - // [SETUP] - await ren.approve(dnr.address, MINIMUM_BOND, { from: accounts[0] }); - await dnr.register(ID("2"), PUBK("2")); - await waitForEpoch(dnr); - await dnr.deregister(ID("2")); - await waitForEpoch(dnr); - await waitForEpoch(dnr); - await waitForEpoch(dnr); - - // [CHECK] Refund fails if transfer fails - await ren.pause(); - await dnr.refund(ID("2")).should.be.rejectedWith(/Pausable: paused/); - await ren.unpause(); - - // [RESET] - await dnr.refund(ID("2")); - }); - - it("should not refund for an address which is never registered", async () => { - await dnr - .refund(ID("-1")) - .should.be.rejectedWith( - /DarknodeRegistry: must be deregistered for at least one epoch/ - ); - }); - - it("can update DarknodePayment", async () => { - const darknodePayment = await dnr.darknodePayment(); - await dnr - .updateDarknodePayment(NULL) - .should.be.rejectedWith( - /DarknodeRegistry: invalid Darknode Payment address/ - ); - - await dnr.updateDarknodePayment(accounts[0]); - await dnr.updateDarknodePayment(darknodePayment); - }); - - it("cannot slash unregistered darknodes", async () => { - // Update slasher address - const newSlasher = accounts[0]; - await dnr.updateSlasher(newSlasher); - await waitForEpoch(dnr); - - (await dnr.slasher()).should.equal(newSlasher); - await dnr - .slash(ID("2"), newSlasher, new BN(70)) - .should.be.rejectedWith(/DarknodeRegistry: invalid darknode/); - - // Reset slasher address - await dnr.updateSlasher(slasher.address); - await waitForEpoch(dnr); - (await dnr.slasher()).should.equal(slasher.address); - }); - - it("cannot slash with an invalid percent", async () => { - // Update slasher address - const newSlasher = accounts[0]; - await dnr.updateSlasher(newSlasher); - await waitForEpoch(dnr); - (await dnr.slasher()).should.equal(newSlasher); - - // Register darknode 3 - await ren.approve(dnr.address, MINIMUM_BOND, { from: accounts[2] }); - await dnr.register(ID("2"), PUBK("2"), { from: accounts[2] }); - await waitForEpoch(dnr); - - await dnr - .slash(ID("2"), newSlasher, new BN(101)) - .should.be.rejectedWith(/DarknodeRegistry: invalid percent/); - await dnr - .slash(ID("2"), newSlasher, new BN(328293)) - .should.be.rejectedWith(/DarknodeRegistry: invalid percent/); - await dnr - .slash(ID("2"), newSlasher, new BN(923)) - .should.be.rejectedWith(/DarknodeRegistry: invalid percent/); - - // Reset slasher - await dnr.updateSlasher(slasher.address); - await waitForEpoch(dnr); - (await dnr.slasher()).should.equal(slasher.address); - - // De-register darknode 3 - await dnr.deregister(ID("2"), { from: accounts[2] }); - (await dnr.isPendingDeregistration(ID("2"))).should.be.true; - - // Call epoch - await waitForEpoch(dnr); - await waitForEpoch(dnr); - (await dnr.isDeregistered(ID("2"))).should.be.true; - - // Refund darknode 3 - await dnr.refund(ID("2"), { from: accounts[2] }); - (await dnr.isRefunded(ID("2"))).should.be.true; - }); - - it("can update slasher address", async () => { - // [CHECK] This test assumes different previous and new slashers - const previousSlasher = await dnr.slasher(); - const newSlasher = accounts[3]; - previousSlasher.should.not.equal(newSlasher); - - // [CHECK] The slasher can't be updated to 0x0 - await dnr - .updateSlasher(NULL) - .should.be.rejectedWith( - /DarknodeRegistry: invalid slasher address/ - ); - - // [ACTION] Update slasher address - await dnr.updateSlasher(newSlasher); - // [CHECK] Verify the address hasn't changed before an epoch - (await dnr.slasher()).should.equal(previousSlasher); - - // [CHECK] Verify the new slasher address after an epoch - await waitForEpoch(dnr); - (await dnr.slasher()).should.equal(newSlasher); - - // [RESET] Reset the slasher address to the previous slasher address - await dnr.updateSlasher(previousSlasher); - await waitForEpoch(dnr); - (await dnr.slasher()).should.equal(previousSlasher); - }); - - it("anyone except the slasher can not call slash", async () => { - // [SETUP] Set slasher to accounts[3] - const slasherOwner = accounts[0]; - const notSlasher = accounts[4]; - - // [SETUP] Register darknodes 3, 4, 7 and 8 - await ren.approve(dnr.address, MINIMUM_BOND, { from: accounts[2] }); - await ren.approve(dnr.address, MINIMUM_BOND, { from: accounts[3] }); - await ren.approve(dnr.address, MINIMUM_BOND, { from: accounts[6] }); - await ren.approve(dnr.address, MINIMUM_BOND, { from: accounts[7] }); - await dnr.register(ID("2"), PUBK("2"), { from: accounts[2] }); - await dnr.register(ID("3"), PUBK("3"), { from: accounts[3] }); - await dnr.register(ID("6"), PUBK("6"), { from: accounts[6] }); - await dnr.register(ID("7"), PUBK("7"), { from: accounts[7] }); - await waitForEpoch(dnr); - await dnr.deregister(ID("3"), { from: accounts[3] }); - await waitForEpoch(dnr); - await waitForEpoch(dnr); - - const slashPercent = 20; - - // [CHECK] Only the slasher can call `slash` - await dnr - .slash(ID("2"), ID("6"), slashPercent, { from: notSlasher }) - .should.be.rejectedWith(/DarknodeRegistry: must be slasher/); - await dnr - .slash(ID("2"), ID("6"), slashPercent, { from: slasherOwner }) - .should.be.rejectedWith(/DarknodeRegistry: must be slasher/); - await slasher - .slash(ID("2"), ID("6"), slashPercent, { from: notSlasher }) - .should.be.rejectedWith(/Ownable: caller is not the owner/); - - await slasher.slash(ID("2"), ID("6"), slashPercent, { - from: slasherOwner - }); - await slasher - .slash(ID("3"), ID("6"), slashPercent, { from: slasherOwner }) - .should.be.rejectedWith(/DarknodeRegistry: invalid darknode/); - - // // NOTE: The darknode doesn't prevent slashing a darknode twice - await slasher.slash(ID("2"), ID("6"), slashPercent, { - from: slasherOwner - }); - }); - - it("transfer ownership of the dark node store", async () => { - const newDnr = await deployProxy( - web3, - DarknodeRegistryProxy, - DarknodeRegistryLogicV1, - proxyAdmin.address, - [ - { type: "string", value: "test" }, - { type: "address", value: RenToken.address }, - { type: "address", value: dnrs.address }, - { type: "uint256", value: config.MINIMUM_BOND.toString() }, - { type: "uint256", value: config.MINIMUM_POD_SIZE }, - { - type: "uint256", - value: config.MINIMUM_EPOCH_INTERVAL_SECONDS - }, - { type: "uint256", value: 0 } - ], - { from: accounts[0] } - ); - - // [ACTION] Initiate ownership transfer to wrong account - await dnr.transferStoreOwnership(newDnr.address); - - // [CHECK] Owner should still be the DNR - (await dnrs.owner()).should.equal(newDnr.address); - - // [RESET] Initiate ownership transfer back to DNR - await newDnr.transferStoreOwnership(dnr.address); - - // [CHECK] Owner should now be the DNR - (await dnrs.owner()).should.equal(dnr.address); - }); - - it("can't arbitrarily increase bond", async () => { - // [SETUP] Transfer store to main account - const claimer = await Claimer.new(dnrs.address); - await dnr.transferStoreOwnership(claimer.address); - await claimer.transferStoreOwnership(accounts[0]); - await dnrs.claimOwnership({ from: accounts[0] }); - - const previousRenBalance = new BN(await ren.balanceOf(accounts[0])); - - // [ACTION] Decrease bond (used for bond slashing) - const difference = new BN(1); - const previousBond = new BN(await dnrs.darknodeBond(ID("7"))); - await dnrs.updateDarknodeBond(ID("7"), previousBond.sub(difference)); - - // [CHECK] Decreasing bond transfers different to owner - const afterRenBalance = new BN(await ren.balanceOf(accounts[0])); - afterRenBalance - .sub(previousRenBalance) - .should.be.bignumber.equal(difference); - - // [CHECK] Can't increase bond again - await dnrs - .updateDarknodeBond(ID("7"), previousBond) - .should.be.rejectedWith( - /DarknodeRegistryStore: bond not decreased/ - ); - - // [RESET] Transfer store back to DNR - await dnrs.transferOwnership(dnr.address); - await dnr.claimStoreOwnership(); - }); - - it("can't decrease bond without transferring REN", async () => { - // [SETUP] Transfer store to main account - const claimer = await Claimer.new(dnrs.address); - await dnr.transferStoreOwnership(claimer.address); - await claimer.transferStoreOwnership(accounts[0]); - await dnrs.claimOwnership({ from: accounts[0] }); - - // [SETUP] Pause REN to make transfer fail - await ren.pause(); - - // [CHECK] Can't decrease bond if REN is paused - await dnrs - .updateDarknodeBond(ID("7"), new BN(0)) - .should.be.rejectedWith(/Pausable: paused/); - - // [RESET] Unpause REN - await ren.unpause(); - - // [RESET] Transfer store back to DNR - await dnrs.transferOwnership(dnr.address); - await dnr.claimStoreOwnership(); - }); - - describe("recovering funds", () => { - it("should be able to withdraw funds that are mistakenly sent to the Darknode Registry", async () => { - await ren.transfer(dnr.address, 1000); - - // Only the owner can recover tokens - await dnr - .recoverTokens(ren.address, { from: accounts[1] }) - .should.be.rejectedWith(/Ownable: caller is not the owner/); - - // Recover REN - const initialRenBalance = new BN( - (await ren.balanceOf(accounts[0])).toString() - ); - await dnr.recoverTokens(ren.address, { from: accounts[0] }); - const finalRenBalance = new BN( - (await ren.balanceOf(accounts[0])).toString() - ); - finalRenBalance.sub(initialRenBalance).should.bignumber.equal(1000); - - // Recover ETH - const forceSend = await ForceSend.new(); - await forceSend.send(dnr.address, { value: "1" }); - ( - await web3.eth.getBalance(dnr.address) - ).should.bignumber.greaterThan(0); - await dnr.recoverTokens(NULL, { from: accounts[0] }); - (await web3.eth.getBalance(dnr.address)).should.bignumber.equal(0); - }); - - it("should be able to withdraw funds that are mistakenly sent to the Darknode Registry Store", async () => { - // [SETUP] Transfer store to main account - const claimer = await Claimer.new(dnrs.address); - await dnr.transferStoreOwnership(claimer.address); - await claimer.transferStoreOwnership(accounts[0]); - await dnrs.claimOwnership({ from: accounts[0] }); - - const token = await NormalToken.new(); - await token.transfer(dnrs.address, 1000); - await ren.transfer(dnrs.address, 1000); - - const initialRenBalance = new BN( - (await ren.balanceOf(accounts[0])).toString() - ); - - // Can't recover REN - await dnrs - .recoverTokens(ren.address, { from: accounts[0] }) - .should.be.rejectedWith( - /CanReclaimTokens: token is not recoverable/ - ); - - // Only the owner can recover tokens - await dnrs - .recoverTokens(token.address, { from: accounts[1] }) - .should.be.rejectedWith(/Ownable: caller is not the owner/); - - // Can recover unrelated token - const initialTokenBalance = new BN( - (await token.balanceOf(accounts[0])).toString() - ); - await dnrs.recoverTokens(token.address, { from: accounts[0] }); - const finalTokenBalance = new BN( - (await token.balanceOf(accounts[0])).toString() - ); - finalTokenBalance - .sub(initialTokenBalance) - .should.bignumber.equal(1000); - - // Recover ETH - const forceSend = await ForceSend.new(); - await forceSend.send(dnrs.address, { value: "1" }); - ( - await web3.eth.getBalance(dnrs.address) - ).should.bignumber.greaterThan(0); - await dnrs.recoverTokens(NULL, { from: accounts[0] }); - (await web3.eth.getBalance(dnrs.address)).should.bignumber.equal(0); - - // Check that no REN was transferred - const finalRenBalance = new BN( - (await ren.balanceOf(accounts[0])).toString() - ); - finalRenBalance.should.bignumber.equal(initialRenBalance); - - // [RESET] Transfer store back to DNR - await dnrs.transferOwnership(dnr.address); - await dnr.claimStoreOwnership(); - }); - }); - - describe("when darknode payment is not set", async () => { - let newDNRstore: DarknodeRegistryStoreInstance; - let newDNR: DarknodeRegistryLogicV1Instance; - - before(async () => { - // Deploy a new DNR and DNR store - newDNRstore = await DarknodeRegistryStore.new( - "test", - RenToken.address - ); - newDNR = await deployProxy( - web3, - DarknodeRegistryProxy, - DarknodeRegistryLogicV1, - proxyAdmin.address, - [ - { type: "string", value: "test" }, - { type: "address", value: RenToken.address }, - { type: "address", value: newDNRstore.address }, - { type: "uint256", value: config.MINIMUM_BOND.toString() }, - { type: "uint256", value: config.MINIMUM_POD_SIZE }, - { - type: "uint256", - value: config.MINIMUM_EPOCH_INTERVAL_SECONDS - }, - { type: "uint256", value: 0 } - ], - { from: accounts[0] } - ); - - // Initiate ownership transfer of DNR store - await newDNRstore.transferOwnership(newDNR.address); - await newDNR.claimStoreOwnership(); - }); - - it("can still call epoch", async () => { - await waitForEpoch(newDNR); - await waitForEpoch(newDNR); - }); - - it("cannot slash", async () => { - (await newDNR.owner()).should.equal(accounts[0]); - const newSlasher = accounts[0]; - await newDNR.updateSlasher(newSlasher); - await waitForEpoch(newDNR); - (await newDNR.slasher()).should.equal(newSlasher); - - // We should have enough balance to register a darknode - if (new BN(await ren.balanceOf(accounts[8])).lt(MINIMUM_BOND)) { - await ren.transfer(accounts[8], MINIMUM_BOND); - } - await ren.approve(newDNR.address, MINIMUM_BOND, { - from: accounts[8] - }); - await newDNR.register(ID("8"), PUBK("8"), { from: accounts[8] }); - await waitForEpoch(newDNR); - await newDNR - .slash(ID("8"), newSlasher, new BN(10)) - .should.be.rejectedWith( - /DarknodeRegistry: invalid payment address/ - ); - }); - }); - - describe("upgrade DarknodeRegistry while maintaining store", async () => { - let newDNR: DarknodeRegistryLogicV1Instance; - - let preCountPreviousEpoch: BN; - let preCount: BN; - let preCountNextEpoch: BN; - let preDarknodes: string[]; - - before(async () => { - // Wait for epoch twice so that the number of darknodes in each - // epoch is the same. - await waitForEpoch(dnr); - await waitForEpoch(dnr); - - preCountPreviousEpoch = new BN( - (await dnr.numDarknodesPreviousEpoch()).toString() - ); - preCount = new BN((await dnr.numDarknodes()).toString()); - preCountNextEpoch = new BN( - (await dnr.numDarknodesNextEpoch()).toString() - ); - preDarknodes = await dnr.getDarknodes(NULL, 0); - - // Deploy a new DNR and DNR store - newDNR = await deployProxy( - web3, - DarknodeRegistryProxy, - DarknodeRegistryLogicV1, - proxyAdmin.address, - [ - { type: "string", value: "test" }, - { type: "address", value: RenToken.address }, - { type: "address", value: dnrs.address }, - { type: "uint256", value: config.MINIMUM_BOND.toString() }, - { type: "uint256", value: config.MINIMUM_POD_SIZE }, - { - type: "uint256", - value: config.MINIMUM_EPOCH_INTERVAL_SECONDS - }, - { type: "uint256", value: 0 } - ], - { from: accounts[0] } - ); - - // Initiate ownership transfer of DNR store - await dnr.transferStoreOwnership(newDNR.address); - - // Wait for epoch to populate numDarknodesPreviousEpoch - await waitForEpoch(newDNR); - }); - - after(async () => { - await newDNR.transferStoreOwnership(dnr.address); - - await waitForEpoch(dnr); - - new BN( - (await dnr.numDarknodes()).toString() - ).should.bignumber.equal(preCount.add(new BN(1))); - }); - - it("number of darknodes is correct", async () => { - const countPreviousEpoch = new BN( - (await newDNR.numDarknodesPreviousEpoch()).toString() - ); - const count = new BN((await newDNR.numDarknodes()).toString()); - const countNextEpoch = new BN( - (await newDNR.numDarknodesNextEpoch()).toString() - ); - const darknodes = await newDNR.getDarknodes(NULL, 0); - - countPreviousEpoch.should.bignumber.equal(preCountPreviousEpoch); - count.should.bignumber.equal(preCount); - countNextEpoch.should.bignumber.equal(preCountNextEpoch); - darknodes.should.deep.equal(preDarknodes); - - await ren.approve(newDNR.address, MINIMUM_BOND); - await newDNR.register(ID("10"), PUBK("10")); - - new BN( - (await newDNR.numDarknodesNextEpoch()).toString() - ).should.bignumber.equal(countNextEpoch.add(new BN(1))); - - await waitForEpoch(newDNR); - - new BN( - (await newDNR.numDarknodes()).toString() - ).should.bignumber.equal(count.add(new BN(1))); - }); - }); - - // Takes 30 minutes - keep as it.skip when not running - it.skip("[LONG] can register 6000 dark nodes", async () => { - const MAX_DARKNODES = 6000; - - // Fund the darknode operator (6000 dark nodes cost a lot to operate!) - for (let i = 1; i < numAccounts; i++) { - const balance = await web3.eth.getBalance(accounts[i]); - web3.eth.sendTransaction({ - to: accounts[0], - from: accounts[i], - value: balance, - gasPrice: 0 - }); - } - - await ren.approve(dnr.address, MINIMUM_BOND.mul(new BN(MAX_DARKNODES))); - - for (let i = 0; i < MAX_DARKNODES; i++) { - process.stdout.write(`\rRegistering Darknode #${i}`); - - await dnr.register(ID(i), PUBK(i)); - } - - console.debug(""); - - await waitForEpoch(dnr); - - let start = NULL; - do { - const nodes = await dnr.getDarknodes(start, 50); - console.debug(nodes); - start = nodes[nodes.length - 1]; - } while (start !== NULL); - - const numDarknodes = await dnr.numDarknodes(); - numDarknodes.should.bignumber.equal(MAX_DARKNODES); - - for (let i = 0; i < MAX_DARKNODES; i++) { - process.stdout.write(`\rDeregistering Darknode #${i}`); - await dnr.deregister(ID(i)); - } - - console.debug(""); - - await waitForEpoch(dnr); - await waitForEpoch(dnr); - - for (let i = 0; i < MAX_DARKNODES; i++) { - process.stdout.write(`\rRefunding Darknode #${i}`); - await dnr.refund(ID(i)); - } - - console.debug(""); - }); -}); diff --git a/test/DarknodeSlasher.ts b/test/DarknodeSlasher.ts deleted file mode 100644 index 26c80d1d..00000000 --- a/test/DarknodeSlasher.ts +++ /dev/null @@ -1,764 +0,0 @@ -import BN from "bn.js"; -import { ecsign } from "ethereumjs-util"; -import hashjs from "hash.js"; - -// import { config } from "../migrations/networks"; -import { - DarknodeRegistryLogicV1Instance, - DarknodeSlasherInstance, - RenTokenInstance -} from "../types/truffle-contracts"; -import { MINIMUM_BOND, NULL, Ox, PUBK, waitForEpoch } from "./helper/testUtils"; -import { - Darknode, - generatePrecommitMessage, - generatePrevoteMessage, - generateProposeMessage, - generateSecretMessage -} from "./Validate"; - -const RenToken = artifacts.require("RenToken"); -const DarknodeRegistryLogicV1 = artifacts.require("DarknodeRegistryLogicV1"); -const DarknodeRegistryProxy = artifacts.require("DarknodeRegistryProxy"); -const DarknodeSlasher = artifacts.require("DarknodeSlasher"); - -const numDarknodes = 5; - -contract("DarknodeSlasher", (accounts: string[]) => { - let ren: RenTokenInstance; - let dnr: DarknodeRegistryLogicV1Instance; - let slasher: DarknodeSlasherInstance; - const darknodes = new Array(); - - const owner = accounts[0]; - - before(async () => { - ren = await RenToken.deployed(); - const dnrProxy = await DarknodeRegistryProxy.deployed(); - dnr = await DarknodeRegistryLogicV1.at(dnrProxy.address); - slasher = await DarknodeSlasher.deployed(); - await dnr.updateSlasher(slasher.address); - await waitForEpoch(dnr); - - for (let i = 0; i < numDarknodes; i++) { - const darknode = web3.eth.accounts.create(); - const privKey = Buffer.from(darknode.privateKey.slice(2), "hex"); - - // top up the darknode address with 1 ETH - await web3.eth.sendTransaction({ - to: darknode.address, - from: owner, - value: web3.utils.toWei("1") - }); - await web3.eth.personal.importRawKey(darknode.privateKey, ""); - await web3.eth.personal.unlockAccount(darknode.address, "", 6000); - - // transfer ren and register darknode - await ren.transfer(darknode.address, MINIMUM_BOND); - await ren.approve(dnr.address, MINIMUM_BOND, { - from: darknode.address - }); - // Register the darknodes under the account address - await dnr.register(darknode.address, PUBK(darknode.address), { - from: darknode.address - }); - darknodes.push({ - account: darknode, - privateKey: privKey - }); - } - await waitForEpoch(dnr); - }); - - describe("when setting percentages", async () => { - it("can set a valid blacklist percentage", async () => { - const p1 = new BN("1"); - await slasher.setBlacklistSlashPercent(p1); - (await slasher.blacklistSlashPercent()).should.bignumber.equal(p1); - const p2 = new BN("10"); - await slasher.setBlacklistSlashPercent(p2); - (await slasher.blacklistSlashPercent()).should.bignumber.equal(p2); - const p3 = new BN("12"); - await slasher.setBlacklistSlashPercent(p3); - (await slasher.blacklistSlashPercent()).should.bignumber.equal(p3); - }); - - it("can set a valid malicious percentage", async () => { - const p1 = new BN("1"); - await slasher.setMaliciousSlashPercent(p1); - (await slasher.maliciousSlashPercent()).should.bignumber.equal(p1); - const p2 = new BN("10"); - await slasher.setMaliciousSlashPercent(p2); - (await slasher.maliciousSlashPercent()).should.bignumber.equal(p2); - const p3 = new BN("12"); - await slasher.setMaliciousSlashPercent(p3); - (await slasher.maliciousSlashPercent()).should.bignumber.equal(p3); - }); - - it("can set a valid secret reveal percentage", async () => { - const p1 = new BN("1"); - await slasher.setSecretRevealSlashPercent(p1); - (await slasher.secretRevealSlashPercent()).should.bignumber.equal( - p1 - ); - const p2 = new BN("10"); - await slasher.setSecretRevealSlashPercent(p2); - (await slasher.secretRevealSlashPercent()).should.bignumber.equal( - p2 - ); - const p3 = new BN("12"); - await slasher.setSecretRevealSlashPercent(p3); - (await slasher.secretRevealSlashPercent()).should.bignumber.equal( - p3 - ); - }); - - it("cannot set an invalid blacklist percentage", async () => { - await slasher - .setBlacklistSlashPercent(new BN("1001")) - .should.be.rejectedWith(/DarknodeSlasher: invalid percentage/); - await slasher - .setBlacklistSlashPercent(new BN("101")) - .should.be.rejectedWith(/DarknodeSlasher: invalid percentage/); - await slasher - .setBlacklistSlashPercent(new BN("1234")) - .should.be.rejectedWith(/DarknodeSlasher: invalid percentage/); - }); - - it("cannot set an invalid malicious percentage", async () => { - await slasher - .setMaliciousSlashPercent(new BN("1001")) - .should.be.rejectedWith(/DarknodeSlasher: invalid percentage/); - await slasher - .setMaliciousSlashPercent(new BN("101")) - .should.be.rejectedWith(/DarknodeSlasher: invalid percentage/); - await slasher - .setMaliciousSlashPercent(new BN("1234")) - .should.be.rejectedWith(/DarknodeSlasher: invalid percentage/); - }); - - it("cannot set an invalid secret reveal percentage", async () => { - await slasher - .setSecretRevealSlashPercent(new BN("1001")) - .should.be.rejectedWith(/DarknodeSlasher: invalid percentage/); - await slasher - .setSecretRevealSlashPercent(new BN("101")) - .should.be.rejectedWith(/DarknodeSlasher: invalid percentage/); - await slasher - .setSecretRevealSlashPercent(new BN("1234")) - .should.be.rejectedWith(/DarknodeSlasher: invalid percentage/); - }); - }); - - describe("when blacklisting", async () => { - it("cannot blacklist twice", async () => { - await slasher.blacklist(darknodes[4].account.address); - await slasher - .blacklist(darknodes[4].account.address) - .should.be.rejectedWith(/DarknodeSlasher: already blacklisted/); - }); - }); - - describe("when the signatures are the same", async () => { - it("should not slash identical propose messages", async () => { - const darknode = darknodes[0]; - const height = new BN("6349374925919561232"); - const round = new BN("3652381888914236532"); - const blockhash1 = "XTsJ2rO2yD47tg3JfmakVRXLzeou4SMtZvsMc6lkr6o"; - const hexBlockhash1 = web3.utils.asciiToHex(blockhash1); - const validRound1 = new BN("6345888412984379713"); - const proposeMsg1 = generateProposeMessage( - height, - round, - blockhash1, - validRound1 - ); - const hash1 = hashjs - .sha256() - .update(proposeMsg1) - .digest("hex"); - const sig1 = ecsign(Buffer.from(hash1, "hex"), darknode.privateKey); - const sigString1 = Ox( - `${sig1.r.toString("hex")}${sig1.s.toString( - "hex" - )}${sig1.v.toString(16)}` - ); - - await slasher - .slashDuplicatePropose( - height, - round, - hexBlockhash1, - validRound1, - sigString1, - hexBlockhash1, - validRound1, - sigString1 - ) - .should.be.rejectedWith(/Validate: same signature/); - }); - - it("should not slash identical prevote messages", async () => { - const darknode = darknodes[0]; - const height = new BN("6349374925919561232"); - const round = new BN("3652381888914236532"); - const blockhash1 = "XTsJ2rO2yD47tg3JfmakVRXLzeou4SMtZvsMc6lkr6o"; - const hexBlockhash1 = web3.utils.asciiToHex(blockhash1); - const prevoteMsg1 = generatePrevoteMessage( - height, - round, - blockhash1 - ); - const hash1 = hashjs - .sha256() - .update(prevoteMsg1) - .digest("hex"); - const sig1 = ecsign(Buffer.from(hash1, "hex"), darknode.privateKey); - const sigString1 = Ox( - `${sig1.r.toString("hex")}${sig1.s.toString( - "hex" - )}${sig1.v.toString(16)}` - ); - - await slasher - .slashDuplicatePrevote( - height, - round, - hexBlockhash1, - sigString1, - hexBlockhash1, - sigString1 - ) - .should.be.rejectedWith(/Validate: same signature/); - }); - - it("should not slash identical precommit messages", async () => { - const darknode = darknodes[0]; - const height = new BN("6349374925919561232"); - const round = new BN("3652381888914236532"); - const blockhash1 = "XTsJ2rO2yD47tg3JfmakVRXLzeou4SMtZvsMc6lkr6o"; - const hexBlockhash1 = web3.utils.asciiToHex(blockhash1); - const precommitMsg1 = generatePrecommitMessage( - height, - round, - blockhash1 - ); - const hash1 = hashjs - .sha256() - .update(precommitMsg1) - .digest("hex"); - const sig1 = ecsign(Buffer.from(hash1, "hex"), darknode.privateKey); - const sigString1 = Ox( - `${sig1.r.toString("hex")}${sig1.s.toString( - "hex" - )}${sig1.v.toString(16)}` - ); - - await slasher - .slashDuplicatePrecommit( - height, - round, - hexBlockhash1, - sigString1, - hexBlockhash1, - sigString1 - ) - .should.be.rejectedWith(/Validate: same signature/); - }); - }); - - describe("when the signers are different", async () => { - it("should not slash for propose messages", async () => { - const height = new BN("6349374925919561232"); - const round = new BN("3652381888914236532"); - const blockhash1 = "XTsJ2rO2yD47tg3JfmakVRXLzeou4SMtZvsMc6lkr6o"; - const hexBlockhash1 = web3.utils.asciiToHex(blockhash1); - const validRound1 = new BN("6345888412984379713"); - const proposeMsg1 = generateProposeMessage( - height, - round, - blockhash1, - validRound1 - ); - const hash1 = hashjs - .sha256() - .update(proposeMsg1) - .digest("hex"); - const sig1 = ecsign( - Buffer.from(hash1, "hex"), - darknodes[0].privateKey - ); - const sigString1 = Ox( - `${sig1.r.toString("hex")}${sig1.s.toString( - "hex" - )}${sig1.v.toString(16)}` - ); - - const blockhash2 = "41RLyhshTwmPyAwjPM8AmReOB/q4LLdvYpDMKt1bEFI"; - const hexBlockhash2 = web3.utils.asciiToHex(blockhash2); - const validRound2 = new BN("5327204637322492082"); - const proposeMsg2 = generateProposeMessage( - height, - round, - blockhash2, - validRound2 - ); - const hash2 = hashjs - .sha256() - .update(proposeMsg2) - .digest("hex"); - const sig2 = ecsign( - Buffer.from(hash2, "hex"), - darknodes[1].privateKey - ); - const sigString2 = Ox( - `${sig2.r.toString("hex")}${sig2.s.toString( - "hex" - )}${sig2.v.toString(16)}` - ); - - // first slash should pass - await slasher - .slashDuplicatePropose( - height, - round, - hexBlockhash1, - validRound1, - sigString1, - hexBlockhash2, - validRound2, - sigString2 - ) - .should.be.rejectedWith(/Validate: different signer/); - }); - - it("should not slash for prevote messages", async () => { - const height = new BN("6349363483468961232"); - const round = new BN("3652348943894236532"); - const blockhash1 = "XTsJ2rO2yD47tg3JfmakVRXLzeou4SMtZvsMc6lkr6o"; - const hexBlockhash1 = web3.utils.asciiToHex(blockhash1); - const prevoteMsg1 = generatePrevoteMessage( - height, - round, - blockhash1 - ); - const hash1 = hashjs - .sha256() - .update(prevoteMsg1) - .digest("hex"); - const sig1 = ecsign( - Buffer.from(hash1, "hex"), - darknodes[0].privateKey - ); - const sigString1 = Ox( - `${sig1.r.toString("hex")}${sig1.s.toString( - "hex" - )}${sig1.v.toString(16)}` - ); - - const blockhash2 = "41RLyhshTwmPyAwjPM8AmReOB/q4LLdvYpDMKt1bEFI"; - const hexBlockhash2 = web3.utils.asciiToHex(blockhash2); - const prevoteMsg2 = generatePrevoteMessage( - height, - round, - blockhash2 - ); - const hash2 = hashjs - .sha256() - .update(prevoteMsg2) - .digest("hex"); - const sig2 = ecsign( - Buffer.from(hash2, "hex"), - darknodes[1].privateKey - ); - const sigString2 = Ox( - `${sig2.r.toString("hex")}${sig2.s.toString( - "hex" - )}${sig2.v.toString(16)}` - ); - - // first slash should pass - await slasher - .slashDuplicatePrevote( - height, - round, - hexBlockhash1, - sigString1, - hexBlockhash2, - sigString2 - ) - .should.be.rejectedWith(/Validate: different signer/); - }); - - it("should not slash for precommit messages", async () => { - const height = new BN("6348943938419561232"); - const round = new BN("3652348939484336532"); - const blockhash1 = "XTsJ2rO2yD47tg3JfmakVRXLzeou4SMtZvsMc6lkr6o"; - const hexBlockhash1 = web3.utils.asciiToHex(blockhash1); - const precommitMsg1 = generatePrecommitMessage( - height, - round, - blockhash1 - ); - const hash1 = hashjs - .sha256() - .update(precommitMsg1) - .digest("hex"); - const sig1 = ecsign( - Buffer.from(hash1, "hex"), - darknodes[0].privateKey - ); - const sigString1 = Ox( - `${sig1.r.toString("hex")}${sig1.s.toString( - "hex" - )}${sig1.v.toString(16)}` - ); - - const blockhash2 = "41RLyhshTwmPyAwjPM8AmReOB/q4LLdvYpDMKt1bEFI"; - const hexBlockhash2 = web3.utils.asciiToHex(blockhash2); - const precommitMsg2 = generatePrecommitMessage( - height, - round, - blockhash2 - ); - const hash2 = hashjs - .sha256() - .update(precommitMsg2) - .digest("hex"); - const sig2 = ecsign( - Buffer.from(hash2, "hex"), - darknodes[1].privateKey - ); - const sigString2 = Ox( - `${sig2.r.toString("hex")}${sig2.s.toString( - "hex" - )}${sig2.v.toString(16)}` - ); - - // first slash should pass - await slasher - .slashDuplicatePrecommit( - height, - round, - hexBlockhash1, - sigString1, - hexBlockhash2, - sigString2 - ) - .should.be.rejectedWith(/Validate: different signer/); - }); - }); - - describe("when malicious messages are received", async () => { - it("should slash duplicate proposals for the same height and round", async () => { - const darknode = darknodes[0]; - const height = new BN("6343893498349561232"); - const round = new BN("3652348943983436532"); - const blockhash1 = "XTsJ2rO2yD47tg3JfmakVRXLzeou4SMtZvsMc6lkr6o"; - const hexBlockhash1 = web3.utils.asciiToHex(blockhash1); - const validRound1 = new BN("6345888412984379713"); - const proposeMsg1 = generateProposeMessage( - height, - round, - blockhash1, - validRound1 - ); - const hash1 = hashjs - .sha256() - .update(proposeMsg1) - .digest("hex"); - const sig1 = ecsign(Buffer.from(hash1, "hex"), darknode.privateKey); - const sigString1 = Ox( - `${sig1.r.toString("hex")}${sig1.s.toString( - "hex" - )}${sig1.v.toString(16)}` - ); - - const blockhash2 = "41RLyhshTwmPyAwjPM8AmReOB/q4LLdvYpDMKt1bEFI"; - const hexBlockhash2 = web3.utils.asciiToHex(blockhash2); - const validRound2 = new BN("5327204637322492082"); - const proposeMsg2 = generateProposeMessage( - height, - round, - blockhash2, - validRound2 - ); - const hash2 = hashjs - .sha256() - .update(proposeMsg2) - .digest("hex"); - const sig2 = ecsign(Buffer.from(hash2, "hex"), darknode.privateKey); - const sigString2 = Ox( - `${sig2.r.toString("hex")}${sig2.s.toString( - "hex" - )}${sig2.v.toString(16)}` - ); - - const caller = accounts[1]; - const darknodeBond = new BN( - await dnr.getDarknodeBond(darknode.account.address) - ); - - // first slash should pass - await slasher.slashDuplicatePropose( - height, - round, - hexBlockhash1, - validRound1, - sigString1, - hexBlockhash2, - validRound2, - sigString2, - { - from: caller - } - ); - - const slashPercent = new BN(await slasher.maliciousSlashPercent()); - const slashedAmount = darknodeBond - .div(new BN(100)) - .mul(slashPercent); - - const newDarknodeBond = new BN( - await dnr.getDarknodeBond(darknode.account.address) - ); - newDarknodeBond.should.bignumber.equal( - darknodeBond.sub(slashedAmount) - ); - - // second slash should fail - await slasher - .slashDuplicatePropose( - height, - round, - hexBlockhash1, - validRound1, - sigString1, - hexBlockhash2, - validRound2, - sigString2, - { - from: caller - } - ) - .should.be.rejectedWith(/DarknodeSlasher: already slashed/); - }); - - it("should slash duplicate prevotes for the same height and round", async () => { - const darknode = darknodes[2]; - const height = new BN("6343893498349561232"); - const round = new BN("3652348943983436532"); - const blockhash1 = "XTsJ2rO2yD47tg3JfmakVRXLzeou4SMtZvsMc6lkr6o"; - const hexBlockhash1 = web3.utils.asciiToHex(blockhash1); - const proposeMsg1 = generatePrevoteMessage( - height, - round, - blockhash1 - ); - const hash1 = hashjs - .sha256() - .update(proposeMsg1) - .digest("hex"); - const sig1 = ecsign(Buffer.from(hash1, "hex"), darknode.privateKey); - const sigString1 = Ox( - `${sig1.r.toString("hex")}${sig1.s.toString( - "hex" - )}${sig1.v.toString(16)}` - ); - - const blockhash2 = "41RLyhshTwmPyAwjPM8AmReOB/q4LLdvYpDMKt1bEFI"; - const hexBlockhash2 = web3.utils.asciiToHex(blockhash2); - const proposeMsg2 = generatePrevoteMessage( - height, - round, - blockhash2 - ); - const hash2 = hashjs - .sha256() - .update(proposeMsg2) - .digest("hex"); - const sig2 = ecsign(Buffer.from(hash2, "hex"), darknode.privateKey); - const sigString2 = Ox( - `${sig2.r.toString("hex")}${sig2.s.toString( - "hex" - )}${sig2.v.toString(16)}` - ); - - const caller = accounts[1]; - const darknodeBond = new BN( - await dnr.getDarknodeBond(darknode.account.address) - ); - - // first slash should pass - await slasher.slashDuplicatePrevote( - height, - round, - hexBlockhash1, - sigString1, - hexBlockhash2, - sigString2, - { - from: caller - } - ); - - const slashPercent = new BN(await slasher.maliciousSlashPercent()); - const slashedAmount = darknodeBond - .div(new BN(100)) - .mul(slashPercent); - - const newDarknodeBond = new BN( - await dnr.getDarknodeBond(darknode.account.address) - ); - newDarknodeBond.should.bignumber.equal( - darknodeBond.sub(slashedAmount) - ); - - // second slash should fail - await slasher - .slashDuplicatePrevote( - height, - round, - hexBlockhash1, - sigString1, - hexBlockhash2, - sigString2, - { - from: caller - } - ) - .should.be.rejectedWith(/DarknodeSlasher: already slashed/); - }); - - it("should slash duplicate precommits for the same height and round", async () => { - const darknode = darknodes[3]; - const height = new BN("4398348948349561232"); - const round = new BN("3348934843983436532"); - const blockhash1 = "XTsJ2rO2yD47tg3JfmakVRXLzeou4SMtZvsMc6lkr6o"; - const hexBlockhash1 = web3.utils.asciiToHex(blockhash1); - const proposeMsg1 = generatePrecommitMessage( - height, - round, - blockhash1 - ); - const hash1 = hashjs - .sha256() - .update(proposeMsg1) - .digest("hex"); - const sig1 = ecsign(Buffer.from(hash1, "hex"), darknode.privateKey); - const sigString1 = Ox( - `${sig1.r.toString("hex")}${sig1.s.toString( - "hex" - )}${sig1.v.toString(16)}` - ); - - const blockhash2 = "41RLyhshTwmPyAwjPM8AmReOB/q4LLdvYpDMKt1bEFI"; - const hexBlockhash2 = web3.utils.asciiToHex(blockhash2); - const proposeMsg2 = generatePrecommitMessage( - height, - round, - blockhash2 - ); - const hash2 = hashjs - .sha256() - .update(proposeMsg2) - .digest("hex"); - const sig2 = ecsign(Buffer.from(hash2, "hex"), darknode.privateKey); - const sigString2 = Ox( - `${sig2.r.toString("hex")}${sig2.s.toString( - "hex" - )}${sig2.v.toString(16)}` - ); - - const caller = accounts[1]; - const darknodeBond = new BN( - await dnr.getDarknodeBond(darknode.account.address) - ); - - // first slash should pass - await slasher.slashDuplicatePrecommit( - height, - round, - hexBlockhash1, - sigString1, - hexBlockhash2, - sigString2, - { - from: caller - } - ); - - const slashPercent = new BN(await slasher.maliciousSlashPercent()); - const slashedAmount = darknodeBond - .div(new BN(100)) - .mul(slashPercent); - - const newDarknodeBond = new BN( - await dnr.getDarknodeBond(darknode.account.address) - ); - newDarknodeBond.should.bignumber.equal( - darknodeBond.sub(slashedAmount) - ); - - // second slash should fail - await slasher - .slashDuplicatePrecommit( - height, - round, - hexBlockhash1, - sigString1, - hexBlockhash2, - sigString2, - { - from: caller - } - ) - .should.be.rejectedWith(/DarknodeSlasher: already slashed/); - }); - - it("should slash when a secret message is revealed", async () => { - const darknode = darknodes[0]; - const a = new BN("3"); - const b = new BN("7"); - const c = new BN("10"); - const d = new BN( - "81804755166950992694975918889421430561708705428859269028015361660142001064486" - ); - const e = new BN( - "90693014804679621771165998959262552553277008236216558633727798007697162314221" - ); - const f = new BN( - "65631258835468800295340604864107498262349560547191423452833833494209803247319" - ); - const msg = generateSecretMessage(a, b, c, d, e, f); - const hash = hashjs - .sha256() - .update(msg) - .digest("hex"); - const sig = ecsign(Buffer.from(hash, "hex"), darknode.privateKey); - const sigString = Ox( - `${sig.r.toString("hex")}${sig.s.toString( - "hex" - )}${sig.v.toString(16)}` - ); - // first slash should succeed - await slasher.slashSecretReveal(a, b, c, d, e, f, sigString); - // second slash should fail - await slasher - .slashSecretReveal(a, b, c, d, e, f, sigString) - .should.be.rejectedWith(/DarknodeSlasher: already slashed/); - }); - }); - - it("can update DarknodeRegistry", async () => { - const darknodeRegistry = await slasher.darknodeRegistry(); - await slasher - .updateDarknodeRegistry(NULL) - .should.be.rejectedWith( - /DarknodeSlasher: invalid Darknode Registry address/ - ); - - await slasher.updateDarknodeRegistry(accounts[0]); - await slasher.updateDarknodeRegistry(darknodeRegistry); - }); -}); diff --git a/test/ERC20WithFees.ts b/test/ERC20WithFees.ts deleted file mode 100644 index 6f117a6f..00000000 --- a/test/ERC20WithFees.ts +++ /dev/null @@ -1,233 +0,0 @@ -import BN from "bn.js"; - -import { - ERC20WithFeesTestInstance, - ReturnsFalseTokenInstance -} from "../types/truffle-contracts"; -import "./helper/testUtils"; - -const ERC20WithFeesTest = artifacts.require("ERC20WithFeesTest"); -const NormalToken = artifacts.require("NormalToken"); -const ReturnsFalseToken = artifacts.require("ReturnsFalseToken"); -const NonCompliantToken = artifacts.require("NonCompliantToken"); -const TokenWithFees = artifacts.require("TokenWithFees"); - -contract("ERC20WithFees", accounts => { - let mock: ERC20WithFeesTestInstance; - - before(async () => { - mock = await ERC20WithFeesTest.new(); - }); - - const testCases = [ - { - contract: NormalToken, - fees: 0, - desc: "standard token [true for success, throws for failure]" - }, - { - contract: ReturnsFalseToken, - fees: 0, - desc: "alternate token [true for success, false for failure]" - }, - { - contract: NonCompliantToken, - fees: 0, - desc: "non compliant token [nil for success, throws for failure]" - }, - { - contract: TokenWithFees, - fees: 3, - desc: "token with fees [true for success, throws for failure]" - } - ]; - - const VALUE = new BN(100000000000000); - - for (const testCase of testCases) { - context(testCase.desc, async () => { - let token: ReturnsFalseTokenInstance; - const FEE = VALUE.mul(new BN(testCase.fees)).div(new BN(1000)); - - before(async () => { - token = (await testCase.contract.new()) as ReturnsFalseTokenInstance; - }); - - it("approve and transferFrom", async () => { - // Get balances before depositing - const before = new BN(await token.balanceOf(accounts[0])); - const after = new BN(await token.balanceOf(mock.address)); - - // Approve and deposit - await token.approve(mock.address, VALUE); - await mock.deposit(token.address, VALUE); - - // Compare balances after depositing - (await token.balanceOf(accounts[0])).should.bignumber.equal( - before.sub(new BN(VALUE)) - ); - (await token.balanceOf(mock.address)).should.bignumber.equal( - after.add(new BN(VALUE.sub(FEE))) - ); - }); - - it("transfer", async () => { - // Get balances before depositing - const before = new BN(await token.balanceOf(accounts[0])); - const after = new BN(await token.balanceOf(mock.address)); - - const NEW_VALUE = VALUE.sub(FEE); - const NEW_FEE = NEW_VALUE.mul(new BN(testCase.fees)).div( - new BN(1000) - ); - - // Withdraw - await mock.withdraw(token.address, NEW_VALUE); - - // Compare balances after depositing - (await token.balanceOf(accounts[0])).should.bignumber.equal( - before.add(new BN(NEW_VALUE.sub(NEW_FEE))) - ); - (await token.balanceOf(mock.address)).should.bignumber.equal( - after.sub(new BN(NEW_VALUE)) - ); - }); - - it("throws for invalid transferFrom", async () => { - // Get balances before depositing - const before = new BN(await token.balanceOf(accounts[0])); - const after = new BN(await token.balanceOf(mock.address)); - - // Approve and deposit - await token.approve(mock.address, 0); - await mock - .naiveDeposit(token.address, VALUE) - .should.be.rejectedWith( - /SafeERC20: (ERC20 operation did not succeed)|(low-level call failed)/ - ); - - // Compare balances after depositing - (await token.balanceOf(accounts[0])).should.bignumber.equal( - before - ); - (await token.balanceOf(mock.address)).should.bignumber.equal( - after - ); - }); - - it("throws for invalid transferFrom (with fee)", async () => { - // Get balances before depositing - const before = new BN(await token.balanceOf(accounts[0])); - const after = new BN(await token.balanceOf(mock.address)); - - // Approve and deposit - await token.approve(mock.address, 0); - await mock - .deposit(token.address, VALUE) - .should.be.rejectedWith( - /SafeERC20: (ERC20 operation did not succeed)|(low-level call failed)/ - ); - - // Compare balances after depositing - (await token.balanceOf(accounts[0])).should.bignumber.equal( - before - ); - (await token.balanceOf(mock.address)).should.bignumber.equal( - after - ); - }); - - it("throws for invalid transfer", async () => { - // Get balances before depositing - const before = new BN(await token.balanceOf(accounts[0])); - const after = new BN(await token.balanceOf(mock.address)); - - // Withdraw - await mock - .withdraw(token.address, VALUE.mul(new BN(2))) - .should.be.rejectedWith( - /SafeERC20: (ERC20 operation did not succeed)|(low-level call failed)/ - ); - - // Compare balances after depositing - (await token.balanceOf(accounts[0])).should.bignumber.equal( - before - ); - (await token.balanceOf(mock.address)).should.bignumber.equal( - after - ); - }); - - it("throws for invalid approve", async () => { - // Transfer to the contract - await token.transfer(mock.address, VALUE); - - // Subtract fees - const NEW_VALUE = VALUE.sub(FEE); - const NEW_FEE = NEW_VALUE.mul(new BN(testCase.fees)).div( - new BN(1000) - ); - - // Get balances before transferring back - const before = new BN(await token.balanceOf(accounts[0])); - const after = new BN(await token.balanceOf(mock.address)); - - // Approve twice without resetting allowance - await mock.approve(token.address, NEW_VALUE); - await mock - .approve(token.address, NEW_VALUE) - .should.be.rejectedWith( - /SafeERC20: approve from non-zero to non-zero allowance/ - ); - - // Can transfer from the contract - await token.transferFrom( - mock.address, - accounts[0], - NEW_VALUE.sub(NEW_FEE) - ); - - // Subtract fees second time - const NEW_NEW_VALUE = NEW_VALUE.sub(NEW_FEE); - const NEW_NEW_FEE = NEW_NEW_VALUE.mul( - new BN(testCase.fees) - ).div(new BN(1000)); - - // Compare balances after depositing - (await token.balanceOf(accounts[0])).should.bignumber.equal( - before.add(new BN(NEW_NEW_VALUE.sub(NEW_NEW_FEE))) - ); - (await token.balanceOf(mock.address)).should.bignumber.equal( - after.sub(new BN(NEW_NEW_VALUE)) - ); - }); - - it("throws for naive deposit if it has fees", async () => { - // Get balances before depositing - const before = new BN(await token.balanceOf(accounts[0])); - const after = new BN(await token.balanceOf(mock.address)); - - // Approve and deposit - await token.approve(mock.address, VALUE); - if (testCase.fees) { - await mock - .naiveDeposit(token.address, VALUE) - .should.be.rejectedWith( - /ERC20WithFeesTest: incorrect balance in deposit/ - ); - await token.approve(mock.address, 0); - } else { - await mock.naiveDeposit(token.address, VALUE); - - // Compare balances after depositing - (await token.balanceOf(accounts[0])).should.bignumber.equal( - before.sub(new BN(VALUE.sub(FEE))) - ); - ( - await token.balanceOf(mock.address) - ).should.bignumber.equal(after.add(new BN(VALUE))); - } - }); - }); - } -}); diff --git a/test/LinkedList.ts b/test/LinkedList.ts deleted file mode 100644 index 321a8d0d..00000000 --- a/test/LinkedList.ts +++ /dev/null @@ -1,186 +0,0 @@ -import { LinkedListTestInstance } from "../types/truffle-contracts"; -import { ID, NULL } from "./helper/testUtils"; - -const LinkedListTest = artifacts.require("LinkedListTest"); - -contract("LinkedList", () => { - let linkedList: LinkedListTestInstance; - - const [NODE1, NODE2, NODE3, NODE4, NOT_NODE1, NOT_NODE2] = [ - ID("1"), - ID("2"), - ID("3"), - ID("4"), - ID("NOT1"), - ID("NOT2") - ]; - - before(async () => { - linkedList = await LinkedListTest.new(); - }); - - it("can append", async () => { - await linkedList.append(NODE1); - (await linkedList.isInList(NODE1)).should.equal(true); - }); - - it("can prepend", async () => { - await linkedList.prepend(NODE2); - (await linkedList.previous(NODE1)).should.equal(NODE2); - }); - - it("can swap", async () => { - await linkedList.swap(NODE1, NODE2); - (await linkedList.previous(NODE2)).should.equal(NODE1); - }); - - it("can insertAfter", async () => { - await linkedList.insertAfter(NODE2, NODE4); - (await linkedList.next(NODE2)).should.equal(NODE4); - }); - - it("can insertBefore", async () => { - await linkedList.insertBefore(NODE4, NODE3); - (await linkedList.previous(NODE4)).should.equal(NODE3); - }); - - it("can remove", async () => { - await linkedList.remove(NODE4); - (await linkedList.isInList(NODE4)).should.equal(false); - }); - - it("can get previous node of the given node", async () => { - (await linkedList.previous(NODE2)).should.equal(NODE1); - }); - - it("can get following node of the given node", async () => { - (await linkedList.next(NODE1)).should.equal(NODE2); - }); - - it("can get the last node of the given list", async () => { - (await linkedList.end()).should.equal(NODE3); - }); - - it("can get the first node of the given list", async () => { - (await linkedList.begin()).should.equal(NODE1); - }); - - it("should not add NULL", async () => { - await linkedList - .insertBefore(NODE1, NULL) - .should.be.rejectedWith(/LinkedList: invalid address/); - await linkedList - .insertAfter(NODE1, NULL) - .should.be.rejectedWith(/LinkedList: invalid address/); - await linkedList - .append(NULL) - .should.be.rejectedWith(/LinkedList: invalid address/); - await linkedList - .remove(NULL) - .should.be.rejectedWith(/LinkedList: not in list/); - }); - - it("should not add the same value more than once", async () => { - await linkedList - .append(NODE1) - .should.be.rejectedWith(/LinkedList: already in list/); - }); - - it("should not remove a node not in the list", async () => { - await linkedList - .remove(NOT_NODE1) - .should.be.rejectedWith(/LinkedList: not in list/); - }); - - it("should not insert after a node not in the list", async () => { - await linkedList - .insertAfter(NOT_NODE1, NOT_NODE2) - .should.be.rejectedWith(/LinkedList: not in list/); - }); - - it("should not insert before a node not in the list", async () => { - await linkedList - .insertBefore(NOT_NODE1, NOT_NODE2) - .should.be.rejectedWith(/LinkedList: not in list/); - }); - - it("should not insert a node already in the list", async () => { - await linkedList - .insertAfter(NODE2, NODE3) - .should.be.rejectedWith(/LinkedList: already in list/); - }); - - it("should not insert a node already in the list", async () => { - await linkedList - .insertBefore(NODE3, NODE2) - .should.be.rejectedWith(/LinkedList: already in list/); - }); - - it("should not prepend a value that already exists", async () => { - await linkedList - .prepend(NODE2) - .should.be.rejectedWith(/LinkedList: already in list/); - }); - - it("should not swap a node not in the list, and a node in the list", async () => { - await linkedList - .swap(NOT_NODE1, NODE2) - .should.be.rejectedWith(/LinkedList: not in list/); - }); - - it("should not swap a node in the list, and a node not in the list", async () => { - await linkedList - .swap(NODE2, NOT_NODE1) - .should.be.rejectedWith(/LinkedList: not in list/); - }); - - it("should not swap two nodes that are not in the list", async () => { - await linkedList - .swap(NOT_NODE1, NOT_NODE2) - .should.be.rejectedWith(/LinkedList: not in list/); - }); - - it("should not get previous node of the node if it is not in the list", async () => { - // NOTE: The revert reason isn't available for .call - await linkedList - .previous(NOT_NODE1) - .should.be.rejectedWith(/LinkedList: not in list/); // not in list - }); - - it("should not get following node of the given node if it is not in the list", async () => { - // NOTE: The revert reason isn't available for .call - await linkedList - .next(NOT_NODE1) - .should.be.rejectedWith(/LinkedList: not in list/); // not in list - }); - - it("should revert when given incorrect count while retrieving elements in the list", async () => { - await linkedList - .elements(NODE1, 0) - .should.be.rejectedWith(/LinkedList: invalid count/); // invalid count - }); - - it("should revert when given incorrect start address while retrieving elements in the list", async () => { - await linkedList - .elements(NODE4, 1) - .should.be.rejectedWith(/LinkedList: not in list/); // invalid count - }); - - it("should return elements in the list", async () => { - let gateways = await linkedList.elements(NODE1, 1); - gateways[0].should.equal(NODE1); - gateways.length.should.equal(1); - - gateways = await linkedList.elements(NODE2, 2); - gateways[0].should.equal(NODE2); - gateways[1].should.equal(NODE3); - gateways.length.should.equal(2); - - await linkedList.append(NODE4); - - gateways = await linkedList.elements(NODE1, 10); - gateways[0].should.equal(NODE1); - gateways[3].should.equal(NODE4); - gateways.length.should.equal(10); - }); -}); diff --git a/test/Protocol.test.ts b/test/Protocol.test.ts new file mode 100644 index 00000000..28ed3e98 --- /dev/null +++ b/test/Protocol.test.ts @@ -0,0 +1,29 @@ +import {expect} from './chai-setup'; +import { + ethers, + deployments, + getUnnamedAccounts, + getNamedAccounts, +} from 'hardhat'; +import {Protocol} from '../typechain'; +import {setupUser, setupUsers} from './utils'; + +const setup = deployments.createFixture(async () => { + await deployments.fixture('Protocol'); + const contracts = { + Protocol: await ethers.getContract('Protocol'), + }; + const users = await setupUsers(await getUnnamedAccounts(), contracts); + return { + ...contracts, + users, + }; +}); + +describe.only('Protocol', function () { + it.only('transfer fails', async function () { + this.timeout(1000 * 1000); + const {users} = await setup(); + console.log(await users[0].Protocol.getContract('DarknodeRegistry')); + }); +}); diff --git a/test/Protocol.ts b/test/Protocol.ts deleted file mode 100644 index adc06c78..00000000 --- a/test/Protocol.ts +++ /dev/null @@ -1,73 +0,0 @@ -import { - DarknodeRegistryLogicV1Instance, - ProtocolInstance -} from "../types/truffle-contracts"; -import { NULL, waitForEpoch } from "./helper/testUtils"; - -const DarknodeRegistryLogicV1 = artifacts.require("DarknodeRegistryLogicV1"); -const DarknodeRegistryProxy = artifacts.require("DarknodeRegistryProxy"); -const Protocol = artifacts.require("Protocol"); - -contract("Protocol", ([owner, otherAccount]: string[]) => { - let dnr: DarknodeRegistryLogicV1Instance; - let protocol: ProtocolInstance; - - before(async () => { - const dnrProxy = await DarknodeRegistryProxy.deployed(); - dnr = await DarknodeRegistryLogicV1.at(dnrProxy.address); - protocol = await Protocol.at(Protocol.address); - await waitForEpoch(dnr); - }); - - it("Address getters", async () => { - (await protocol.getContract("DarknodeRegistry")).should.equal( - dnr.address - ); - }); - - it("Protocol owner", async () => { - (await protocol.owner()).should.equal(owner); - - await protocol - .transferOwnership(otherAccount, { from: otherAccount }) - .should.be.rejectedWith(/Ownable: caller is not the owner/); - - await protocol.transferOwnership(otherAccount); - - (await protocol.owner()).should.equal(owner); - - await protocol.claimOwnership({ from: otherAccount }); - - (await protocol.owner()).should.equal(otherAccount); - - await protocol.transferOwnership(owner, { from: otherAccount }); - await protocol.claimOwnership({ from: owner }); - - (await protocol.owner()).should.equal(owner); - }); - - it("Update DarknodeRegistry address", async () => { - await protocol - .updateContract("DarknodeRegistry", NULL, { from: otherAccount }) - .should.be.rejectedWith(/Ownable: caller is not the owner/); - - await protocol.updateContract("DarknodeRegistry", NULL); - - (await protocol.getContract("DarknodeRegistry")).should.equal(NULL); - - await protocol.updateContract("DarknodeRegistry", dnr.address); - - (await protocol.getContract("DarknodeRegistry")).should.equal( - dnr.address - ); - }); - - it("Proxy functions", async () => { - // Try to initialize again - await protocol - .__Protocol_init(owner, { from: owner }) - .should.be.rejectedWith( - /Contract instance has already been initialized/ - ); - }); -}); diff --git a/test/String.ts b/test/String.ts deleted file mode 100644 index d3868c65..00000000 --- a/test/String.ts +++ /dev/null @@ -1,53 +0,0 @@ -import BN = require("bn.js"); - -import { StringTestInstance } from "../types/truffle-contracts"; -import { randomBytes } from "./helper/testUtils"; - -const StringTest = artifacts.require("StringTest"); - -contract("String", accounts => { - let StringInstance: StringTestInstance; - - before(async () => { - StringInstance = await StringTest.new(); - }); - - it("can add strings", async () => { - (await StringInstance.add4("1", "2", "3", "4")).should.equal("1234"); - }); - - it("can convert addresses to hex strings", async () => { - (await StringInstance.fromAddress(accounts[0])).should.equal( - accounts[0].toLowerCase() - ); - }); - - it("can convert bytes32 to hex strings", async () => { - const bytes32 = randomBytes(32); - - (await StringInstance.fromBytes32(bytes32)).should.equal( - bytes32.toLowerCase() - ); - }); - - it("can convert uint to strings", async () => { - await testNumString("0"); - await testNumString("1"); - await testNumString("12345"); - await testNumString( - "81804755166950992694975918889421430561708705428859269028015361660142001064486" - ); - await testNumString( - "90693014804679621771165998959262552553277008236216558633727798007697162314221" - ); - await testNumString( - "65631258835468800295340604864107498262349560547191423452833833494209803247319" - ); - }); - - const testNumString = async (numString: string) => { - (await StringInstance.fromUint(new BN(numString))).should.equal( - numString - ); - }; -}); diff --git a/test/Validate.ts b/test/Validate.ts deleted file mode 100644 index cb014443..00000000 --- a/test/Validate.ts +++ /dev/null @@ -1,277 +0,0 @@ -import BN from "bn.js"; -import { ecsign } from "ethereumjs-util"; -import hashjs from "hash.js"; -import { Account } from "web3-eth-accounts"; - -import { ValidateTestInstance } from "../types/truffle-contracts"; -import { Ox } from "./helper/testUtils"; - -export interface Darknode { - account: Account; - privateKey: Buffer; -} - -const ValidateTest = artifacts.require("ValidateTest"); - -const numDarknodes = 2; - -contract("Validate", (accounts: string[]) => { - let validateTest: ValidateTestInstance; - const darknodes = new Array(); - - before(async () => { - validateTest = await ValidateTest.new(); - - for (let i = 0; i < numDarknodes; i++) { - const darknode = web3.eth.accounts.create(); - const privKey = Buffer.from(darknode.privateKey.slice(2), "hex"); - darknodes.push({ - account: darknode, - privateKey: privKey - }); - } - }); - - describe("when generating messages", async () => { - it("should correctly generate secret messages", async () => { - const a = new BN("3"); - const b = new BN("7"); - const c = new BN("10"); - const d = new BN( - "81804755166950992694975918889421430561708705428859269028015361660142001064486" - ); - const e = new BN( - "90693014804679621771165998959262552553277008236216558633727798007697162314221" - ); - const f = new BN( - "65631258835468800295340604864107498262349560547191423452833833494209803247319" - ); - const msg = generateSecretMessage(a, b, c, d, e, f); - // tslint:disable-next-line:max-line-length - msg.should.be.equal( - "Secret(ShamirShare(3,7,S256N(10),S256PrivKey(S256N(81804755166950992694975918889421430561708705428859269028015361660142001064486),S256P(90693014804679621771165998959262552553277008236216558633727798007697162314221),S256P(65631258835468800295340604864107498262349560547191423452833833494209803247319))))" - ); - const rawMsg = await validateTest.secretMessage(a, b, c, d, e, f); - msg.should.be.equal(web3.utils.hexToAscii(rawMsg)); - }); - - it("should correctly generate the propose message", async () => { - const height = new BN("6349374925919561232"); - const round = new BN("3652381888914236532"); - const blockhash = "XTsJ2rO2yD47tg3JfmakVRXLzeou4SMtZvsMc6lkr6o"; - const hexBlockhash = web3.utils.asciiToHex(blockhash); - const validRound = new BN("6345888412984379713"); - const proposeMsg = generateProposeMessage( - height, - round, - blockhash, - validRound - ); - const rawMsg = await validateTest.proposeMessage( - height, - round, - hexBlockhash, - validRound - ); - proposeMsg.should.be.equal(web3.utils.hexToAscii(rawMsg)); - }); - - it("should correctly generate the prevote message", async () => { - const height = new BN("6349374925919561232"); - const round = new BN("3652381888914236532"); - const blockhash = "XTsJ2rO2yD47tg3JfmakVRXLzeou4SMtZvsMc6lkr6o"; - const hexBlockhash = web3.utils.asciiToHex(blockhash); - const prevoteMsg = generatePrevoteMessage(height, round, blockhash); - const rawMsg = await validateTest.prevoteMessage( - height, - round, - hexBlockhash - ); - prevoteMsg.should.be.equal(web3.utils.hexToAscii(rawMsg)); - }); - - it("should correctly generate the precommit message", async () => { - const height = new BN("6349374925919561232"); - const round = new BN("3652381888914236532"); - const blockhash = "XTsJ2rO2yD47tg3JfmakVRXLzeou4SMtZvsMc6lkr6o"; - const hexBlockhash = web3.utils.asciiToHex(blockhash); - const precommitMsg = generatePrecommitMessage( - height, - round, - blockhash - ); - const rawMsg = await validateTest.precommitMessage( - height, - round, - hexBlockhash - ); - precommitMsg.should.be.equal(web3.utils.hexToAscii(rawMsg)); - }); - }); - - describe("when recovering signatures", async () => { - it("can recover the signer of a propose message", async () => { - const darknode = darknodes[0]; - const height = new BN("6349374925919561232"); - const round = new BN("3652381888914236532"); - const blockhash = "XTsJ2rO2yD47tg3JfmakVRXLzeou4SMtZvsMc6lkr6o"; - const hexBlockhash = web3.utils.asciiToHex(blockhash); - const validRound = new BN("6345888412984379713"); - const proposeMsg = generateProposeMessage( - height, - round, - blockhash, - validRound - ); - const hash = hashjs - .sha256() - .update(proposeMsg) - .digest("hex"); - const sig = ecsign(Buffer.from(hash, "hex"), darknode.privateKey); - const sigString = Ox( - `${sig.r.toString("hex")}${sig.s.toString( - "hex" - )}${sig.v.toString(16)}` - ); - const signer = await validateTest.recoverPropose( - height, - round, - hexBlockhash, - validRound, - sigString - ); - signer.should.equal(darknode.account.address); - }); - - it("can recover the signer of a prevote message", async () => { - const darknode = darknodes[0]; - const height = new BN("6349374925919561232"); - const round = new BN("3652381888914236532"); - const blockhash = "XTsJ2rO2yD47tg3JfmakVRXLzeou4SMtZvsMc6lkr6o"; - const hexBlockhash = web3.utils.asciiToHex(blockhash); - const proposeMsg = generatePrevoteMessage(height, round, blockhash); - const hash = hashjs - .sha256() - .update(proposeMsg) - .digest("hex"); - const sig = ecsign(Buffer.from(hash, "hex"), darknode.privateKey); - const sigString = Ox( - `${sig.r.toString("hex")}${sig.s.toString( - "hex" - )}${sig.v.toString(16)}` - ); - const signer = await validateTest.recoverPrevote( - height, - round, - hexBlockhash, - sigString - ); - signer.should.equal(darknode.account.address); - }); - - it("can recover the signer of a precommit message", async () => { - const darknode = darknodes[0]; - const height = new BN("6349374925919561232"); - const round = new BN("3652381888914236532"); - const blockhash = "XTsJ2rO2yD47tg3JfmakVRXLzeou4SMtZvsMc6lkr6o"; - const hexBlockhash = web3.utils.asciiToHex(blockhash); - const proposeMsg = generatePrecommitMessage( - height, - round, - blockhash - ); - const hash = hashjs - .sha256() - .update(proposeMsg) - .digest("hex"); - const sig = ecsign(Buffer.from(hash, "hex"), darknode.privateKey); - const sigString = Ox( - `${sig.r.toString("hex")}${sig.s.toString( - "hex" - )}${sig.v.toString(16)}` - ); - const signer = await validateTest.recoverPrecommit( - height, - round, - hexBlockhash, - sigString - ); - signer.should.equal(darknode.account.address); - }); - - it("can recover the signer of a secret message", async () => { - const darknode = darknodes[0]; - const a = new BN("3"); - const b = new BN("7"); - const c = new BN("10"); - const d = new BN( - "81804755166950992694975918889421430561708705428859269028015361660142001064486" - ); - const e = new BN( - "90693014804679621771165998959262552553277008236216558633727798007697162314221" - ); - const f = new BN( - "65631258835468800295340604864107498262349560547191423452833833494209803247319" - ); - const msg = generateSecretMessage(a, b, c, d, e, f); - const hash = hashjs - .sha256() - .update(msg) - .digest("hex"); - const sig = ecsign(Buffer.from(hash, "hex"), darknode.privateKey); - const sigString = Ox( - `${sig.r.toString("hex")}${sig.s.toString( - "hex" - )}${sig.v.toString(16)}` - ); - const signer = await validateTest.recoverSecret( - a, - b, - c, - d, - e, - f, - sigString - ); - signer.should.equal(darknode.account.address); - }); - }); -}); - -export const generateProposeMessage = ( - height: BN, - round: BN, - blockHash: string, - validRound: BN -): string => { - // tslint:disable-next-line:max-line-length - return `Propose(Height=${height.toString()},Round=${round.toString()},BlockHash=${blockHash},ValidRound=${validRound.toString()})`; -}; - -export const generatePrevoteMessage = ( - height: BN, - round: BN, - blockHash: string -): string => { - return `Prevote(Height=${height.toString()},Round=${round.toString()},BlockHash=${blockHash})`; -}; - -export const generatePrecommitMessage = ( - height: BN, - round: BN, - blockHash: string -): string => { - return `Precommit(Height=${height.toString()},Round=${round.toString()},BlockHash=${blockHash})`; -}; - -export const generateSecretMessage = ( - a: BN, - b: BN, - c: BN, - d: BN, - e: BN, - f: BN -): string => { - // tslint:disable-next-line:max-line-length - return `Secret(ShamirShare(${a.toString()},${b.toString()},S256N(${c.toString()}),S256PrivKey(S256N(${d.toString()}),S256P(${e.toString()}),S256P(${f.toString()}))))`; -}; diff --git a/test/chai-setup.ts b/test/chai-setup.ts new file mode 100644 index 00000000..0cb1b259 --- /dev/null +++ b/test/chai-setup.ts @@ -0,0 +1,4 @@ +import chaiModule from 'chai'; +import {chaiEthers} from 'chai-ethers'; +chaiModule.use(chaiEthers); +export = chaiModule; diff --git a/test/helper/logs.ts b/test/helper/logs.ts deleted file mode 100644 index d70f2105..00000000 --- a/test/helper/logs.ts +++ /dev/null @@ -1,155 +0,0 @@ -import * as chai from "chai"; - -import BigNumber from "bignumber.js"; -import BN from "bn.js"; - -interface Log { - event: string; - args: object; -} - -interface TransactionReceipt { - tx: string; - receipt: { - transactionHash: string; - transactionIndex: number; - blockHash: string; - blockNumber: number; - gasUsed: number; - cumulativeGasUsed: number; - contractAddress: null; - logs: any[]; - status: boolean; - logsBloom: string; - }; - logs: { - logIndex: number; - transactionIndex: number; - transactionHash: string; - blockHash: string; - blockNumber: number; - address: string; - type: string; - id: string; - event: string; - args: object; - }[]; -} - -export const log = (event: string, args: object) => ({ - event, - args -}); - -// Chai helper for comparing logs -// tslint:disable:only-arrow-functions -chai.use(function(newChai: any, utils: any): void { - const property = "emit"; - newChai.Assertion.addProperty(property, function() { - utils.flag(this, property, true); - }); - - const override = function(fn: any) { - // tslint:disable-next-line:variable-name - return function(_super: any) { - return function(value: any, ...args: any[]) { - if (utils.flag(this, property)) { - const expected = value; - const actual = getLogsFromTx(this._obj); - fn.apply(this, [expected, actual]); - } else { - _super.apply(this, [value, ...args]); - } - }; - }; - }; - - const events = override(function(expected: Log[], actual: Log[]) { - this.assert( - compareArrayOfLogs(expected, actual), - "expected logs #{act} to equal #{exp}", - "expected logs #{act} to be different from #{exp}", - logsToString(expected), - logsToString(actual) - ); - - for (let i = 0; i < expected.length; i++) { - const expectedLog = expected[i]; - const actualLog = actual[i]; - for (const arg in expectedLog.args) { - // skip if the property is from prototype - if (!expectedLog.args.hasOwnProperty(arg)) { - continue; - } - - const expectedArg = (expectedLog.args as any)[arg]; - const actualArg = (actualLog.args as any)[arg]; - - let sameValues: boolean; - if (BN.isBN(expectedArg) || expectedArg.isBigNumber) { - sameValues = new BigNumber(expectedArg).eq( - new BigNumber(actualArg) - ); - } else { - sameValues = expectedArg === (actualLog.args as any)[arg]; - } - - this.assert( - sameValues, - `expected ${arg} to be #{exp} instead of #{act} in log ${expectedLog.event}`, - `expected ${arg} to be different from #{exp} in log ${expectedLog.event}`, - (expectedLog.args as any)[arg], - (actualLog.args as any)[arg] - ); - } - } - }); - newChai.Assertion.overwriteMethod("logs", events); -}); - -// Pretty-print logs -const logsToString = (logs: Log[]): string => { - return `[${logs.map((logItem: Log) => logItem.event).join(", ")}]`; -}; -// const logToString = (logItem: Log): string => { -// return `${logItem.event} ${JSON.stringify(logItem.args)}`; -// }; - -// Compare logs -const compareArrayOfLogs = (expected: Log[], actual: Log[]): boolean => { - if (expected.length !== actual.length) { - return false; - } - - for (let i = 0; i < expected.length; i++) { - const expectedLog = expected[i]; - const actualLog = actual[i]; - - if (expectedLog.event !== actualLog.event) { - return false; - } - } - - return true; -}; - -// Extract logs from transaction receipt in correct format.s -export const getLogsFromTx = (tx: TransactionReceipt): Log[] => { - return tx.logs.map(logItem => { - const args = {}; - for (const arg in logItem.args) { - // skip if the property is from prototype - if (!logItem.args.hasOwnProperty(arg)) { - continue; - } - - if (isNaN(parseInt(arg, 10)) && arg !== "__length__") { - (args as any)[arg] = (logItem.args as any)[arg]; - } - } - return { - event: logItem.event, - args - }; - }); -}; diff --git a/test/helper/testUtils.ts b/test/helper/testUtils.ts deleted file mode 100644 index 11562f81..00000000 --- a/test/helper/testUtils.ts +++ /dev/null @@ -1,251 +0,0 @@ -import * as chai from "chai"; -import * as crypto from "crypto"; - -import BigNumber from "bignumber.js"; -import BN from "bn.js"; -import chaiAsPromised from "chai-as-promised"; -import chaiBigNumber from "chai-bignumber"; -import { ECDSASignature } from "ethereumjs-util"; -import { TransactionReceipt } from "web3-core"; -import { keccak256, toChecksumAddress } from "web3-utils"; - -import { DarknodeRegistryLogicV1Instance } from "../../types/truffle-contracts"; -// Import chai log helper -import "./logs"; - -const ERC20 = artifacts.require("PaymentToken"); - -chai.use(chaiAsPromised); -chai.use((chaiBigNumber as any)(BigNumber) as any); -chai.should(); - -export const { encodeCallData } = require("../../migrations/encode.js"); - -const networkAddresses = require("../../migrations/networks.js"); - -const config = networkAddresses.config; -export const { MINIMUM_POD_SIZE, MINIMUM_EPOCH_INTERVAL_SECONDS } = config; - -export const MINIMUM_BOND = new BN(config.MINIMUM_BOND); - -export const ETHEREUM = "0xEeeeeEeeeEeEeeEeEeEeeEEEeeeeEeeeeeeeEEeE"; - -// Makes an ID for a darknode -export function ID(i: string | number) { - return toChecksumAddress(keccak256(i.toString()).slice(0, 42)); -} - -// Makes a public key for a darknode -export function PUBK(i: string | number) { - return keccak256(i.toString()); -} - -export const NULL = "0x0000000000000000000000000000000000000000"; -export const NULL32 = - "0x0000000000000000000000000000000000000000000000000000000000000000"; - -// Add a 0x prefix to a hex value, converting to a string first -export const Ox = (hex: string | BN | Buffer) => { - const hexString = typeof hex === "string" ? hex : hex.toString("hex"); - return hexString.substring(0, 2) === "0x" ? hexString : `0x${hexString}`; -}; - -export const strip0x = (hex: string) => - hex.substring(0, 2) === "0x" ? hex.slice(2) : hex; - -export const hexToBuffer = (hex: string | BN | Buffer) => - BN.isBN(hex) - ? hex.toBuffer() - : Buffer.isBuffer(hex) - ? hex - : Buffer.from(strip0x(hex), "hex"); - -export const randomBytes = (bytes: number): string => { - return Ox(crypto.randomBytes(bytes)); -}; - -export const randomAddress = (): string => { - return toChecksumAddress(randomBytes(20)); -}; - -const increaseTimeHelper = async (seconds: number) => { - await new Promise((resolve, reject) => { - // tslint:disable-next-line: no-floating-promises - return web3.currentProvider.send( - { - jsonrpc: "2.0", - method: "evm_increaseTime", - params: [seconds], - id: 0, - } as any, - ((err: Error) => { - if (err) { - reject(err); - } - // tslint:disable-next-line: no-floating-promises - return web3.currentProvider.send( - { - jsonrpc: "2.0", - method: "evm_mine", - params: [], - id: new Date().getSeconds(), - } as any, - ((innerErr: Error) => { - if (innerErr) { - reject(); - } - resolve(); - }) as any - ); - }) as any - ); - }); -}; - -const getCurrentTimestamp = async (): Promise => - parseInt( - ( - await web3.eth.getBlock(await web3.eth.getBlockNumber()) - ).timestamp.toString(), - 10 - ); - -export const increaseTime = async (seconds: number) => { - let currentTimestamp = await getCurrentTimestamp(); - const target = currentTimestamp + seconds; - do { - const increase = Math.ceil(target - currentTimestamp + 1); - await increaseTimeHelper(increase); - currentTimestamp = await getCurrentTimestamp(); - } while (currentTimestamp < target); -}; - -export async function waitForEpoch(dnr: DarknodeRegistryLogicV1Instance) { - // const timeout = MINIMUM_EPOCH_INTERVAL_SECONDS; - const timeout = new BN( - (await dnr.minimumEpochInterval()).toString() - ).toNumber(); - while (true) { - // Must be an on-chain call, or the time won't be updated - try { - return await dnr.epoch(); - } catch (err) { - // epoch reverted, epoch interval hasn't passed - } - // Sleep for `timeout` seconds - await increaseTime(timeout); - // await new Promise((resolve) => setTimeout(resolve, timeout * 1000)); - } -} - -export const deployProxy = async ( - web3: Web3, - ProxyContract: Truffle.Contract, - LogicContract: Truffle.Contract, - proxyGovernanceAddress: string, - params: { type: string; value: any; name?: string }[], - options?: { from: string } -): Promise => { - const logicContract = await LogicContract.new(); - const proxy = await ProxyContract.new(); - - await proxy.initialize( - logicContract.address, - proxyGovernanceAddress, - encodeCallData( - web3, - "initialize", - params.map((p) => p.type), - params.map((p) => p.value) - ), - options - ); - return await LogicContract.at(proxy.address); -}; - -export const sigToString = (sig: ECDSASignature) => { - return Ox( - `${sig.r.toString("hex")}${sig.s.toString("hex")}${sig.v.toString(16)}` - ); -}; - -export const sleep = (ms: number) => - new Promise((resolve) => setTimeout(resolve, ms)); - -export const HOURS = 60 * 60; -export const DAYS = 24 * HOURS; - -export const getBalance = async ( - token: string, - address: string -): Promise => { - if (token === ETHEREUM) { - return new BigNumber((await web3.eth.getBalance(address)).toString()); - } else { - const tokenContract = await ERC20.at(token); - return new BigNumber( - (await tokenContract.balanceOf(address)).toString() - ); - } -}; - -export const getSymbol = async (token: string): Promise => { - if (token === ETHEREUM) { - return "ETH"; - } else { - const tokenContract = await ERC20.at(token); - return await tokenContract.symbol(); - } -}; - -export const getDecimals = async (token: string): Promise => { - if (token === ETHEREUM) { - return 18; - } else { - const tokenContract = await ERC20.at(token); - return parseInt((await tokenContract.decimals()).toString(), 10); - } -}; - -export const transferToken = async ( - token: string, - to: string, - amount: BigNumber | string | number | BN -): Promise => { - if (token === ETHEREUM) { - const from = (await web3.eth.getAccounts())[0]; - return (await web3.eth.sendTransaction({ - to, - value: amount.toString(), - from, - })) as unknown as TransactionReceipt; - } else { - const tokenContract = await ERC20.at(token); - return (await tokenContract.transfer(to, amount.toString())).receipt; - } -}; - -export const isPromise = (x: any): x is Promise => { - return !!x.then; -}; - -export const toBN = < - X extends (string | number | BN) | Promise ->( - inp: X -): X extends string | number | BN ? BigNumber : Promise => { - if (isPromise(inp)) { - return inp.then((x) => new BigNumber(x.toString())) as X extends - | string - | number - | BN - ? BigNumber - : Promise; - } else { - return new BigNumber(inp.toString()) as X extends string | number | BN - ? BigNumber - : Promise; - } -}; - -export const range = (n: number) => Array.from(new Array(n)).map((_, i) => i); diff --git a/test/utils/index.ts b/test/utils/index.ts new file mode 100644 index 00000000..52f7ef87 --- /dev/null +++ b/test/utils/index.ts @@ -0,0 +1,25 @@ +import {Contract} from 'ethers'; +import {ethers} from 'hardhat'; + +export async function setupUsers( + addresses: string[], + contracts: T +): Promise<({address: string} & T)[]> { + const users: ({address: string} & T)[] = []; + for (const address of addresses) { + users.push(await setupUser(address, contracts)); + } + return users; +} + +export async function setupUser( + address: string, + contracts: T +): Promise<{address: string} & T> { + // eslint-disable-next-line @typescript-eslint/no-explicit-any + const user: any = {address}; + for (const key of Object.keys(contracts)) { + user[key] = contracts[key].connect(await ethers.getSigner(address)); + } + return user as {address: string} & T; +} diff --git a/truffle.js b/truffle.js deleted file mode 100644 index be31c17c..00000000 --- a/truffle.js +++ /dev/null @@ -1,116 +0,0 @@ -require("ts-node/register"); -require("dotenv").config(); - -const HDWalletProvider = require("truffle-hdwallet-provider"); -const { execSync } = require("child_process"); - -const GWEI = 1000000000; -const commitHash = execSync("git describe --always --long") - .toString() - .trim(); - -if ( - (process.env.NETWORK || "").match(/localnet|devnet|testnet|main/) && - process.env.INFURA_KEY === undefined -) { - throw new Error("Must set INFURA_KEY"); -} - -const kovanNetwork = { - // @ts-ignore - provider: () => - new HDWalletProvider( - process.env.MNEMONIC_TESTNET, - `https://kovan.infura.io/v3/${process.env.INFURA_KEY}` - ), - network_id: 42, - gas: 6721975, - gasPrice: 6.5 * GWEI, - networkCheckTimeout: 20000 -}; - -const mainNetwork = { - // @ts-ignore - provider: () => - new HDWalletProvider( - process.env.MNEMONIC_MAINNET, - `https://mainnet.infura.io/v3/${process.env.INFURA_KEY}` - ), - network_id: 1, - gas: 6721975, - gasPrice: 42 * GWEI, - networkCheckTimeout: 20000 -}; - -const ethRinkebyNetwork = { - // @ts-ignore - provider: () => - new HDWalletProvider( - process.env.MNEMONIC_TESTNET || process.env.MNEMONIC_TESTNET, - `https://rinkeby.infura.io/v3/${process.env.INFURA_KEY}` - ), - network_id: 4, - // gas: 6721975, - // gasPrice: 6.5 * GWEI, - networkCheckTimeout: 10000 -}; - -module.exports = { - networks: { - localnet: kovanNetwork, - devnet: kovanNetwork, - rinkebyDevnet: ethRinkebyNetwork, - testnet: kovanNetwork, - mainnet: mainNetwork, - chaosnet: mainNetwork, - development: { - host: "localhost", - port: 8545, - network_id: "*" - } - }, - mocha: { - // // Use with `npm run test`, not with `npm run coverage` - // reporter: "eth-gas-reporter", - // reporterOptions: { - // currency: "USD", - // gasPrice: 21 - // }, - enableTimeouts: false, - useColors: true, - bail: false - }, - compilers: { - solc: { - version: "0.5.17", - settings: { - // evmVersion: "petersburg", // "istanbul", - optimizer: { - enabled: true, - runs: 200 - } - } - } - }, - plugins: ["truffle-plugin-verify", "solidity-coverage"], - api_keys: { - etherscan: process.env.ETHERSCAN_KEY - }, - verify: { - preamble: ` -Deployed by Ren Project, https://renproject.io - -Commit hash: ${commitHash} -Repository: https://github.com/renproject/darknode-sol -Issues: https://github.com/renproject/darknode-sol/issues - -Licenses -@openzeppelin/contracts: (MIT) https://github.com/OpenZeppelin/openzeppelin-contracts/blob/master/LICENSE -darknode-sol: (GNU GPL V3) https://github.com/renproject/darknode-sol/blob/master/LICENSE -` - }, - contracts_build_directory: `./build/${process.env.NETWORK || - "development"}`, - // This is required by truffle to find any ts test files - test_file_extension_regexp: /.*\.ts$/ -}; diff --git a/tsconfig.json b/tsconfig.json index 2eb034e4..adc7d806 100644 --- a/tsconfig.json +++ b/tsconfig.json @@ -1,18 +1,18 @@ { - "compilerOptions": { - "typeRoots": ["types"], - "lib": ["es2015"], - "types": ["node", "mocha", "truffle-typings", "chai"], - "module": "commonjs", - "noImplicitAny": true, - "noImplicitReturns": true, - "removeComments": true, - "preserveConstEnums": true, - "sourceMap": true, - "esModuleInterop": true - }, - "include": [ - "test", - "types" - ] + "compilerOptions": { + "target": "es5", + "module": "commonjs", + "strict": true, + "esModuleInterop": true, + "moduleResolution": "node", + "forceConsistentCasingInFileNames": true, + "outDir": "dist" + }, + "include": [ + "hardhat.config.ts", + "./scripts", + "./deploy", + "./test", + "typechain/**/*" + ] } diff --git a/tslint.json b/tslint.json deleted file mode 100644 index 219e04c0..00000000 --- a/tslint.json +++ /dev/null @@ -1,39 +0,0 @@ -{ - "extends": ["tslint:recommended"], - "linterOptions": { - "exclude": ["node_modules"] - }, - "rules": { - "quotemark": [true, "double"], - "variable-name": [ - true, - "ban-keywords", - "check-format", - "allow-leading-underscore", - "allow-trailing-underscore", - "allow-pascal-case" - ], - "no-shadowed-variable": [ - true, - { - "underscore": false - } - ], - "interface-name": false, - "max-classes-per-file": false, - "no-console": false, - "no-empty-interface": false, - "no-var-requires": false, - "object-literal-sort-keys": false, - "no-implicit-dependencies": false, - "ordered-imports": true, - "no-object-literal-type-assertion": true, - "semicolon": true, - "eofline": true, - "no-non-null-assertion": true, - "no-unused-expression": false, - "one-variable-per-declaration": false, - "space-before-function-paren": false, - "no-floating-promises": true - } -} diff --git a/types/chai/index.d.ts b/types/chai/index.d.ts deleted file mode 100644 index 2b034c31..00000000 --- a/types/chai/index.d.ts +++ /dev/null @@ -1,53 +0,0 @@ -/* tslint:disable */ - -/// - -declare module "chai-bignumber" { - function chaiBigNumber(bignumber: any, BN?: any): (chai: any, utils: any) => void; - - namespace chaiBigNumber { - } - - export = chaiBigNumber; -} - -declare namespace Chai { - type BigNumber = number | string | { toNumber: () => number }; - - // For BDD API - interface Assertion extends LanguageChains, NumericComparison, TypeComparison { - bignumber: BigNumberAssert; - } - - // For Assert API - interface Assert { - bignumber: BigNumberAssert; - } - - export interface BigNumberAssert { - finite(actual?: BN, msg?: string): void; - integer(actual?: BN, msg?: string): void; - negative(actual?: BN, msg?: string): void; - zero(actual?: BN, msg?: string): void; - - equal(actual?: BN, expected?: BN, msg?: string): void; - equals(actual?: BN, expected?: BN, msg?: string): void; - eq(actual?: BN, expected?: BN, msg?: string): void; - - greaterThan(actual?: BN, expected?: BN, msg?: string): void; - above(actual?: BN, expected?: BN, msg?: string): void; - gt(actual?: BN, expected?: BN, msg?: string): void; - - greaterThanOrEqualTo(actual?: BN, expected?: BN, msg?: string): void; - least(actual?: BN, expected?: BN, msg?: string): void; - gte(actual?: BN, expected?: BN, msg?: string): void; - - lessThan(actual?: BN, expected?: BN, msg?: string): void; - below(actual?: BN, expected?: BN, msg?: string): void; - lt(actual?: BN, expected?: BN, msg?: string): void; - - lessThanOrEqualTo(actual?: BN, expected?: BN, msg?: string): void; - most(actual?: BN, expected?: BN, msg?: string): void; - lte(actual?: BN, expected?: BN, msg?: string): void; - } -} diff --git a/utils/network.ts b/utils/network.ts new file mode 100644 index 00000000..81132f04 --- /dev/null +++ b/utils/network.ts @@ -0,0 +1,48 @@ +import 'dotenv/config'; +export function node_url(networkName: string): string { + if (networkName) { + const uri = process.env['ETH_NODE_URI_' + networkName.toUpperCase()]; + if (uri && uri !== '') { + return uri; + } + } + + if (networkName === 'localhost') { + // do not use ETH_NODE_URI + return 'http://localhost:8545'; + } + + let uri = process.env.ETH_NODE_URI; + if (uri) { + uri = uri.replace('{{networkName}}', networkName); + } + if (!uri || uri === '') { + // throw new Error(`environment variable "ETH_NODE_URI" not configured `); + return ''; + } + if (uri.indexOf('{{') >= 0) { + throw new Error( + `invalid uri or network not supported by node provider : ${uri}` + ); + } + return uri; +} + +export function getMnemonic(networkName?: string): string { + if (networkName) { + const mnemonic = process.env['MNEMONIC_' + networkName.toUpperCase()]; + if (mnemonic && mnemonic !== '') { + return mnemonic; + } + } + + const mnemonic = process.env.MNEMONIC; + if (!mnemonic || mnemonic === '') { + return 'test test test test test test test test test test test junk'; + } + return mnemonic; +} + +export function accounts(networkName?: string): {mnemonic: string} { + return {mnemonic: getMnemonic(networkName)}; +} diff --git a/yarn.lock b/yarn.lock index 7458eb85..57fe2166 100644 --- a/yarn.lock +++ b/yarn.lock @@ -2,590 +2,34 @@ # yarn lockfile v1 -"101@^1.0.0", "101@^1.2.0": - version "1.6.3" - resolved "https://registry.yarnpkg.com/101/-/101-1.6.3.tgz#9071196e60c47e4ce327075cf49c0ad79bd822fd" - integrity sha512-4dmQ45yY0Dx24Qxp+zAsNLlMF6tteCyfVzgbulvSyC7tCyd3V8sW76sS0tHq8NpcbXfWTKasfyfzU1Kd86oKzw== - dependencies: - clone "^1.0.2" - deep-eql "^0.1.3" - keypather "^1.10.2" - -"@apollo/client@^3.1.5": - version "3.3.11" - resolved "https://registry.yarnpkg.com/@apollo/client/-/client-3.3.11.tgz#125051405e83dc899d471d43b79fd6045d92a802" - integrity sha512-54+D5FB6RJlQ+g37f432gaexnyvDsG5X6L9VO5kqN54HJlbF8hCf/8CXtAQEHCWodAwZhy6kOLp2RM96829q3A== - dependencies: - "@graphql-typed-document-node/core" "^3.0.0" - "@types/zen-observable" "^0.8.0" - "@wry/context" "^0.5.2" - "@wry/equality" "^0.3.0" - fast-json-stable-stringify "^2.0.0" - graphql-tag "^2.12.0" - hoist-non-react-statics "^3.3.2" - optimism "^0.14.0" - prop-types "^15.7.2" - symbol-observable "^2.0.0" - ts-invariant "^0.6.0" - tslib "^1.10.0" - zen-observable "^0.8.14" - -"@apollo/protobufjs@^1.0.3": - version "1.0.5" - resolved "https://registry.yarnpkg.com/@apollo/protobufjs/-/protobufjs-1.0.5.tgz#a78b726147efc0795e74c8cb8a11aafc6e02f773" - integrity sha512-ZtyaBH1icCgqwIGb3zrtopV2D5Q8yxibkJzlaViM08eOhTQc7rACdYu0pfORFfhllvdMZ3aq69vifYHszY4gNA== - dependencies: - "@protobufjs/aspromise" "^1.1.2" - "@protobufjs/base64" "^1.1.2" - "@protobufjs/codegen" "^2.0.4" - "@protobufjs/eventemitter" "^1.1.0" - "@protobufjs/fetch" "^1.1.0" - "@protobufjs/float" "^1.0.2" - "@protobufjs/inquire" "^1.1.0" - "@protobufjs/path" "^1.1.2" - "@protobufjs/pool" "^1.1.0" - "@protobufjs/utf8" "^1.1.0" - "@types/long" "^4.0.0" - "@types/node" "^10.1.0" - long "^4.0.0" - -"@apollographql/apollo-tools@^0.4.3": - version "0.4.9" - resolved "https://registry.yarnpkg.com/@apollographql/apollo-tools/-/apollo-tools-0.4.9.tgz#6abeef4c4586aec8208f71254b329e48ab50c07e" - integrity sha512-M50pk8oo3CGTu4waGOklIX3YtTZoPfWG9K/G9WB8NpyQGA1OwYTiBFv94XqUtKElTDoFwoMXpMQd3Wy5dINvxA== - dependencies: - apollo-env "^0.6.6" - -"@apollographql/graphql-playground-html@1.6.27": - version "1.6.27" - resolved "https://registry.yarnpkg.com/@apollographql/graphql-playground-html/-/graphql-playground-html-1.6.27.tgz#bc9ab60e9445aa2a8813b4e94f152fa72b756335" - integrity sha512-tea2LweZvn6y6xFV11K0KC8ETjmm52mQrW+ezgB2O/aTQf8JGyFmMcRPFgUaQZeHbWdm8iisDC6EjOKsXu0nfw== - dependencies: - xss "^1.0.8" - -"@apollographql/graphql-upload-8-fork@^8.1.3": - version "8.1.3" - resolved "https://registry.yarnpkg.com/@apollographql/graphql-upload-8-fork/-/graphql-upload-8-fork-8.1.3.tgz#a0d4e0d5cec8e126d78bd915c264d6b90f5784bc" - integrity sha512-ssOPUT7euLqDXcdVv3Qs4LoL4BPtfermW1IOouaqEmj36TpHYDmYDIbKoSQxikd9vtMumFnP87OybH7sC9fJ6g== - dependencies: - "@types/express" "*" - "@types/fs-capacitor" "*" - "@types/koa" "*" - busboy "^0.3.1" - fs-capacitor "^2.0.4" - http-errors "^1.7.3" - object-path "^0.11.4" - -"@ardatan/aggregate-error@0.0.6": - version "0.0.6" - resolved "https://registry.yarnpkg.com/@ardatan/aggregate-error/-/aggregate-error-0.0.6.tgz#fe6924771ea40fc98dc7a7045c2e872dc8527609" - integrity sha512-vyrkEHG1jrukmzTPtyWB4NLPauUw5bQeg4uhn8f+1SSynmrOcyvlb1GKQjjgoBzElLdfXCRYX8UnBlhklOHYRQ== +"@babel/code-frame@7.12.11": + version "7.12.11" + resolved "https://registry.yarnpkg.com/@babel/code-frame/-/code-frame-7.12.11.tgz#f4ad435aa263db935b8f10f2c552d23fb716a63f" + integrity sha512-Zt1yodBx1UcyiePMSkWnU4hPqhwq7hGi2nFL1LeA3EUl+q2LQx16MISgJ0+z7dnmgvP9QtIleuETGOiOH1RcIw== dependencies: - tslib "~2.0.1" + "@babel/highlight" "^7.10.4" "@babel/code-frame@^7.0.0": - version "7.8.3" - resolved "https://registry.yarnpkg.com/@babel/code-frame/-/code-frame-7.8.3.tgz#33e25903d7481181534e12ec0a25f16b6fcf419e" - integrity sha512-a9gxpmdXtZEInkCSHUJDLHZVBgb1QS0jhss4cPP93EW7s+uC5bikET2twEF3KV+7rDblJcmNvTR7VJejqd2C2g== - dependencies: - "@babel/highlight" "^7.8.3" - -"@babel/code-frame@^7.12.13": version "7.12.13" resolved "https://registry.yarnpkg.com/@babel/code-frame/-/code-frame-7.12.13.tgz#dcfc826beef65e75c50e21d3837d7d95798dd658" integrity sha512-HV1Cm0Q3ZrpCR93tkWOYiuYIgLxZXZFVG2VgK+MBWjUqZTundupbfx2aXarXuw5Ko5aMcjtJgbSs4vUGBS5v6g== dependencies: "@babel/highlight" "^7.12.13" -"@babel/compat-data@^7.13.8": - version "7.13.8" - resolved "https://registry.yarnpkg.com/@babel/compat-data/-/compat-data-7.13.8.tgz#5b783b9808f15cef71547f1b691f34f8ff6003a6" - integrity sha512-EaI33z19T4qN3xLXsGf48M2cDqa6ei9tPZlfLdb2HC+e/cFtREiRd8hdSqDbwdLB0/+gLwqJmCYASH0z2bUdog== - -"@babel/core@^7.0.0": - version "7.13.10" - resolved "https://registry.yarnpkg.com/@babel/core/-/core-7.13.10.tgz#07de050bbd8193fcd8a3c27918c0890613a94559" - integrity sha512-bfIYcT0BdKeAZrovpMqX2Mx5NrgAckGbwT982AkdS5GNfn3KMGiprlBAtmBcFZRUmpaufS6WZFP8trvx8ptFDw== - dependencies: - "@babel/code-frame" "^7.12.13" - "@babel/generator" "^7.13.9" - "@babel/helper-compilation-targets" "^7.13.10" - "@babel/helper-module-transforms" "^7.13.0" - "@babel/helpers" "^7.13.10" - "@babel/parser" "^7.13.10" - "@babel/template" "^7.12.13" - "@babel/traverse" "^7.13.0" - "@babel/types" "^7.13.0" - convert-source-map "^1.7.0" - debug "^4.1.0" - gensync "^1.0.0-beta.2" - json5 "^2.1.2" - lodash "^4.17.19" - semver "^6.3.0" - source-map "^0.5.0" - -"@babel/generator@^7.12.13", "@babel/generator@^7.13.0", "@babel/generator@^7.13.9", "@babel/generator@^7.5.0": - version "7.13.9" - resolved "https://registry.yarnpkg.com/@babel/generator/-/generator-7.13.9.tgz#3a7aa96f9efb8e2be42d38d80e2ceb4c64d8de39" - integrity sha512-mHOOmY0Axl/JCTkxTU6Lf5sWOg/v8nUa+Xkt4zMTftX0wqmb6Sh7J8gvcehBw7q0AhrhAR+FDacKjCZ2X8K+Sw== - dependencies: - "@babel/types" "^7.13.0" - jsesc "^2.5.1" - source-map "^0.5.0" - -"@babel/helper-annotate-as-pure@^7.12.13": - version "7.12.13" - resolved "https://registry.yarnpkg.com/@babel/helper-annotate-as-pure/-/helper-annotate-as-pure-7.12.13.tgz#0f58e86dfc4bb3b1fcd7db806570e177d439b6ab" - integrity sha512-7YXfX5wQ5aYM/BOlbSccHDbuXXFPxeoUmfWtz8le2yTkTZc+BxsiEnENFoi2SlmA8ewDkG2LgIMIVzzn2h8kfw== - dependencies: - "@babel/types" "^7.12.13" - -"@babel/helper-compilation-targets@^7.13.10", "@babel/helper-compilation-targets@^7.13.8": - version "7.13.10" - resolved "https://registry.yarnpkg.com/@babel/helper-compilation-targets/-/helper-compilation-targets-7.13.10.tgz#1310a1678cb8427c07a753750da4f8ce442bdd0c" - integrity sha512-/Xju7Qg1GQO4mHZ/Kcs6Au7gfafgZnwm+a7sy/ow/tV1sHeraRUHbjdat8/UvDor4Tez+siGKDk6zIKtCPKVJA== - dependencies: - "@babel/compat-data" "^7.13.8" - "@babel/helper-validator-option" "^7.12.17" - browserslist "^4.14.5" - semver "^6.3.0" - -"@babel/helper-create-class-features-plugin@^7.13.0": - version "7.13.10" - resolved "https://registry.yarnpkg.com/@babel/helper-create-class-features-plugin/-/helper-create-class-features-plugin-7.13.10.tgz#073b2bbb925a097643c6fc5770e5f13394e887c9" - integrity sha512-YV7r2YxdTUaw84EwNkyrRke/TJHR/UXGiyvACRqvdVJ2/syV2rQuJNnaRLSuYiop8cMRXOgseTGoJCWX0q2fFg== - dependencies: - "@babel/helper-function-name" "^7.12.13" - "@babel/helper-member-expression-to-functions" "^7.13.0" - "@babel/helper-optimise-call-expression" "^7.12.13" - "@babel/helper-replace-supers" "^7.13.0" - "@babel/helper-split-export-declaration" "^7.12.13" - -"@babel/helper-function-name@^7.12.13": - version "7.12.13" - resolved "https://registry.yarnpkg.com/@babel/helper-function-name/-/helper-function-name-7.12.13.tgz#93ad656db3c3c2232559fd7b2c3dbdcbe0eb377a" - integrity sha512-TZvmPn0UOqmvi5G4vvw0qZTpVptGkB1GL61R6lKvrSdIxGm5Pky7Q3fpKiIkQCAtRCBUwB0PaThlx9vebCDSwA== - dependencies: - "@babel/helper-get-function-arity" "^7.12.13" - "@babel/template" "^7.12.13" - "@babel/types" "^7.12.13" - -"@babel/helper-get-function-arity@^7.12.13": - version "7.12.13" - resolved "https://registry.yarnpkg.com/@babel/helper-get-function-arity/-/helper-get-function-arity-7.12.13.tgz#bc63451d403a3b3082b97e1d8b3fe5bd4091e583" - integrity sha512-DjEVzQNz5LICkzN0REdpD5prGoidvbdYk1BVgRUOINaWJP2t6avB27X1guXK1kXNrX0WMfsrm1A/ZBthYuIMQg== - dependencies: - "@babel/types" "^7.12.13" - -"@babel/helper-member-expression-to-functions@^7.13.0": - version "7.13.0" - resolved "https://registry.yarnpkg.com/@babel/helper-member-expression-to-functions/-/helper-member-expression-to-functions-7.13.0.tgz#6aa4bb678e0f8c22f58cdb79451d30494461b091" - integrity sha512-yvRf8Ivk62JwisqV1rFRMxiSMDGnN6KH1/mDMmIrij4jztpQNRoHqqMG3U6apYbGRPJpgPalhva9Yd06HlUxJQ== - dependencies: - "@babel/types" "^7.13.0" - -"@babel/helper-module-imports@^7.12.13": - version "7.12.13" - resolved "https://registry.yarnpkg.com/@babel/helper-module-imports/-/helper-module-imports-7.12.13.tgz#ec67e4404f41750463e455cc3203f6a32e93fcb0" - integrity sha512-NGmfvRp9Rqxy0uHSSVP+SRIW1q31a7Ji10cLBcqSDUngGentY4FRiHOFZFE1CLU5eiL0oE8reH7Tg1y99TDM/g== - dependencies: - "@babel/types" "^7.12.13" - -"@babel/helper-module-transforms@^7.13.0": - version "7.13.0" - resolved "https://registry.yarnpkg.com/@babel/helper-module-transforms/-/helper-module-transforms-7.13.0.tgz#42eb4bd8eea68bab46751212c357bfed8b40f6f1" - integrity sha512-Ls8/VBwH577+pw7Ku1QkUWIyRRNHpYlts7+qSqBBFCW3I8QteB9DxfcZ5YJpOwH6Ihe/wn8ch7fMGOP1OhEIvw== - dependencies: - "@babel/helper-module-imports" "^7.12.13" - "@babel/helper-replace-supers" "^7.13.0" - "@babel/helper-simple-access" "^7.12.13" - "@babel/helper-split-export-declaration" "^7.12.13" - "@babel/helper-validator-identifier" "^7.12.11" - "@babel/template" "^7.12.13" - "@babel/traverse" "^7.13.0" - "@babel/types" "^7.13.0" - lodash "^4.17.19" - -"@babel/helper-optimise-call-expression@^7.12.13": - version "7.12.13" - resolved "https://registry.yarnpkg.com/@babel/helper-optimise-call-expression/-/helper-optimise-call-expression-7.12.13.tgz#5c02d171b4c8615b1e7163f888c1c81c30a2aaea" - integrity sha512-BdWQhoVJkp6nVjB7nkFWcn43dkprYauqtk++Py2eaf/GRDFm5BxRqEIZCiHlZUGAVmtwKcsVL1dC68WmzeFmiA== - dependencies: - "@babel/types" "^7.12.13" - -"@babel/helper-plugin-utils@^7.12.13", "@babel/helper-plugin-utils@^7.13.0", "@babel/helper-plugin-utils@^7.8.0": - version "7.13.0" - resolved "https://registry.yarnpkg.com/@babel/helper-plugin-utils/-/helper-plugin-utils-7.13.0.tgz#806526ce125aed03373bc416a828321e3a6a33af" - integrity sha512-ZPafIPSwzUlAoWT8DKs1W2VyF2gOWthGd5NGFMsBcMMol+ZhK+EQY/e6V96poa6PA/Bh+C9plWN0hXO1uB8AfQ== - -"@babel/helper-replace-supers@^7.12.13", "@babel/helper-replace-supers@^7.13.0": - version "7.13.0" - resolved "https://registry.yarnpkg.com/@babel/helper-replace-supers/-/helper-replace-supers-7.13.0.tgz#6034b7b51943094cb41627848cb219cb02be1d24" - integrity sha512-Segd5me1+Pz+rmN/NFBOplMbZG3SqRJOBlY+mA0SxAv6rjj7zJqr1AVr3SfzUVTLCv7ZLU5FycOM/SBGuLPbZw== - dependencies: - "@babel/helper-member-expression-to-functions" "^7.13.0" - "@babel/helper-optimise-call-expression" "^7.12.13" - "@babel/traverse" "^7.13.0" - "@babel/types" "^7.13.0" - -"@babel/helper-simple-access@^7.12.13": - version "7.12.13" - resolved "https://registry.yarnpkg.com/@babel/helper-simple-access/-/helper-simple-access-7.12.13.tgz#8478bcc5cacf6aa1672b251c1d2dde5ccd61a6c4" - integrity sha512-0ski5dyYIHEfwpWGx5GPWhH35j342JaflmCeQmsPWcrOQDtCN6C1zKAVRFVbK53lPW2c9TsuLLSUDf0tIGJ5hA== - dependencies: - "@babel/types" "^7.12.13" - -"@babel/helper-skip-transparent-expression-wrappers@^7.12.1": - version "7.12.1" - resolved "https://registry.yarnpkg.com/@babel/helper-skip-transparent-expression-wrappers/-/helper-skip-transparent-expression-wrappers-7.12.1.tgz#462dc63a7e435ade8468385c63d2b84cce4b3cbf" - integrity sha512-Mf5AUuhG1/OCChOJ/HcADmvcHM42WJockombn8ATJG3OnyiSxBK/Mm5x78BQWvmtXZKHgbjdGL2kin/HOLlZGA== - dependencies: - "@babel/types" "^7.12.1" - -"@babel/helper-split-export-declaration@^7.12.13": - version "7.12.13" - resolved "https://registry.yarnpkg.com/@babel/helper-split-export-declaration/-/helper-split-export-declaration-7.12.13.tgz#e9430be00baf3e88b0e13e6f9d4eaf2136372b05" - integrity sha512-tCJDltF83htUtXx5NLcaDqRmknv652ZWCHyoTETf1CXYJdPC7nohZohjUgieXhv0hTJdRf2FjDueFehdNucpzg== - dependencies: - "@babel/types" "^7.12.13" - -"@babel/helper-validator-identifier@^7.12.11": - version "7.12.11" - resolved "https://registry.yarnpkg.com/@babel/helper-validator-identifier/-/helper-validator-identifier-7.12.11.tgz#c9a1f021917dcb5ccf0d4e453e399022981fc9ed" - integrity sha512-np/lG3uARFybkoHokJUmf1QfEvRVCPbmQeUQpKow5cQ3xWrV9i3rUHodKDJPQfTVX61qKi+UdYk8kik84n7XOw== - -"@babel/helper-validator-option@^7.12.17": - version "7.12.17" - resolved "https://registry.yarnpkg.com/@babel/helper-validator-option/-/helper-validator-option-7.12.17.tgz#d1fbf012e1a79b7eebbfdc6d270baaf8d9eb9831" - integrity sha512-TopkMDmLzq8ngChwRlyjR6raKD6gMSae4JdYDB8bByKreQgG0RBTuKe9LRxW3wFtUnjxOPRKBDwEH6Mg5KeDfw== - -"@babel/helpers@^7.13.10": - version "7.13.10" - resolved "https://registry.yarnpkg.com/@babel/helpers/-/helpers-7.13.10.tgz#fd8e2ba7488533cdeac45cc158e9ebca5e3c7df8" - integrity sha512-4VO883+MWPDUVRF3PhiLBUFHoX/bsLTGFpFK/HqvvfBZz2D57u9XzPVNFVBTc0PW/CWR9BXTOKt8NF4DInUHcQ== - dependencies: - "@babel/template" "^7.12.13" - "@babel/traverse" "^7.13.0" - "@babel/types" "^7.13.0" - -"@babel/highlight@^7.12.13": - version "7.13.10" - resolved "https://registry.yarnpkg.com/@babel/highlight/-/highlight-7.13.10.tgz#a8b2a66148f5b27d666b15d81774347a731d52d1" - integrity sha512-5aPpe5XQPzflQrFwL1/QoeHkP2MsA4JCntcXHRhEsdsfPVkvPi2w7Qix4iV7t5S/oC9OodGrggd8aco1g3SZFg== - dependencies: - "@babel/helper-validator-identifier" "^7.12.11" - chalk "^2.0.0" - js-tokens "^4.0.0" +"@babel/helper-validator-identifier@^7.14.0": + version "7.14.0" + resolved "https://registry.yarnpkg.com/@babel/helper-validator-identifier/-/helper-validator-identifier-7.14.0.tgz#d26cad8a47c65286b15df1547319a5d0bcf27288" + integrity sha512-V3ts7zMSu5lfiwWDVWzRDGIN+lnCEUdaXgtVHJgLb1rGaA6jMrtB9EmE7L18foXJIE8Un/A/h6NJfGQp/e1J4A== -"@babel/highlight@^7.8.3": - version "7.8.3" - resolved "https://registry.yarnpkg.com/@babel/highlight/-/highlight-7.8.3.tgz#28f173d04223eaaa59bc1d439a3836e6d1265797" - integrity sha512-PX4y5xQUvy0fnEVHrYOarRPXVWafSjTW9T0Hab8gVIawpl2Sj0ORyrygANq+KjcNlSSTw0YCLSNA8OyZ1I4yEg== +"@babel/highlight@^7.10.4", "@babel/highlight@^7.12.13": + version "7.14.0" + resolved "https://registry.yarnpkg.com/@babel/highlight/-/highlight-7.14.0.tgz#3197e375711ef6bf834e67d0daec88e4f46113cf" + integrity sha512-YSCOwxvTYEIMSGaBQb5kDDsCopDdiUGsqpatp3fOlI4+2HQSkTmEVWnVuySdAC5EWCqSWWTv0ib63RjR7dTBdg== dependencies: + "@babel/helper-validator-identifier" "^7.14.0" chalk "^2.0.0" - esutils "^2.0.2" js-tokens "^4.0.0" -"@babel/parser@7.12.16": - version "7.12.16" - resolved "https://registry.yarnpkg.com/@babel/parser/-/parser-7.12.16.tgz#cc31257419d2c3189d394081635703f549fc1ed4" - integrity sha512-c/+u9cqV6F0+4Hpq01jnJO+GLp2DdT63ppz9Xa+6cHaajM9VFzK/iDXiKK65YtpeVwu+ctfS6iqlMqRgQRzeCw== - -"@babel/parser@^7.0.0", "@babel/parser@^7.12.13", "@babel/parser@^7.13.0", "@babel/parser@^7.13.10": - version "7.13.10" - resolved "https://registry.yarnpkg.com/@babel/parser/-/parser-7.13.10.tgz#8f8f9bf7b3afa3eabd061f7a5bcdf4fec3c48409" - integrity sha512-0s7Mlrw9uTWkYua7xWr99Wpk2bnGa0ANleKfksYAES8LpWH4gW1OUr42vqKNf0us5UQNfru2wPqMqRITzq/SIQ== - -"@babel/plugin-proposal-class-properties@^7.0.0": - version "7.13.0" - resolved "https://registry.yarnpkg.com/@babel/plugin-proposal-class-properties/-/plugin-proposal-class-properties-7.13.0.tgz#146376000b94efd001e57a40a88a525afaab9f37" - integrity sha512-KnTDjFNC1g+45ka0myZNvSBFLhNCLN+GeGYLDEA8Oq7MZ6yMgfLoIRh86GRT0FjtJhZw8JyUskP9uvj5pHM9Zg== - dependencies: - "@babel/helper-create-class-features-plugin" "^7.13.0" - "@babel/helper-plugin-utils" "^7.13.0" - -"@babel/plugin-proposal-object-rest-spread@^7.0.0": - version "7.13.8" - resolved "https://registry.yarnpkg.com/@babel/plugin-proposal-object-rest-spread/-/plugin-proposal-object-rest-spread-7.13.8.tgz#5d210a4d727d6ce3b18f9de82cc99a3964eed60a" - integrity sha512-DhB2EuB1Ih7S3/IRX5AFVgZ16k3EzfRbq97CxAVI1KSYcW+lexV8VZb7G7L8zuPVSdQMRn0kiBpf/Yzu9ZKH0g== - dependencies: - "@babel/compat-data" "^7.13.8" - "@babel/helper-compilation-targets" "^7.13.8" - "@babel/helper-plugin-utils" "^7.13.0" - "@babel/plugin-syntax-object-rest-spread" "^7.8.3" - "@babel/plugin-transform-parameters" "^7.13.0" - -"@babel/plugin-syntax-class-properties@^7.0.0": - version "7.12.13" - resolved "https://registry.yarnpkg.com/@babel/plugin-syntax-class-properties/-/plugin-syntax-class-properties-7.12.13.tgz#b5c987274c4a3a82b89714796931a6b53544ae10" - integrity sha512-fm4idjKla0YahUNgFNLCB0qySdsoPiZP3iQE3rky0mBUtMZ23yDJ9SJdg6dXTSDnulOVqiF3Hgr9nbXvXTQZYA== - dependencies: - "@babel/helper-plugin-utils" "^7.12.13" - -"@babel/plugin-syntax-flow@^7.0.0", "@babel/plugin-syntax-flow@^7.12.13": - version "7.12.13" - resolved "https://registry.yarnpkg.com/@babel/plugin-syntax-flow/-/plugin-syntax-flow-7.12.13.tgz#5df9962503c0a9c918381c929d51d4d6949e7e86" - integrity sha512-J/RYxnlSLXZLVR7wTRsozxKT8qbsx1mNKJzXEEjQ0Kjx1ZACcyHgbanNWNCFtc36IzuWhYWPpvJFFoexoOWFmA== - dependencies: - "@babel/helper-plugin-utils" "^7.12.13" - -"@babel/plugin-syntax-jsx@^7.0.0", "@babel/plugin-syntax-jsx@^7.12.13": - version "7.12.13" - resolved "https://registry.yarnpkg.com/@babel/plugin-syntax-jsx/-/plugin-syntax-jsx-7.12.13.tgz#044fb81ebad6698fe62c478875575bcbb9b70f15" - integrity sha512-d4HM23Q1K7oq/SLNmG6mRt85l2csmQ0cHRaxRXjKW0YFdEXqlZ5kzFQKH5Uc3rDJECgu+yCRgPkG04Mm98R/1g== - dependencies: - "@babel/helper-plugin-utils" "^7.12.13" - -"@babel/plugin-syntax-object-rest-spread@^7.0.0", "@babel/plugin-syntax-object-rest-spread@^7.8.3": - version "7.8.3" - resolved "https://registry.yarnpkg.com/@babel/plugin-syntax-object-rest-spread/-/plugin-syntax-object-rest-spread-7.8.3.tgz#60e225edcbd98a640332a2e72dd3e66f1af55871" - integrity sha512-XoqMijGZb9y3y2XskN+P1wUGiVwWZ5JmoDRwx5+3GmEplNyVM2s2Dg8ILFQm8rWM48orGy5YpI5Bl8U1y7ydlA== - dependencies: - "@babel/helper-plugin-utils" "^7.8.0" - -"@babel/plugin-transform-arrow-functions@^7.0.0": - version "7.13.0" - resolved "https://registry.yarnpkg.com/@babel/plugin-transform-arrow-functions/-/plugin-transform-arrow-functions-7.13.0.tgz#10a59bebad52d637a027afa692e8d5ceff5e3dae" - integrity sha512-96lgJagobeVmazXFaDrbmCLQxBysKu7U6Do3mLsx27gf5Dk85ezysrs2BZUpXD703U/Su1xTBDxxar2oa4jAGg== - dependencies: - "@babel/helper-plugin-utils" "^7.13.0" - -"@babel/plugin-transform-block-scoped-functions@^7.0.0": - version "7.12.13" - resolved "https://registry.yarnpkg.com/@babel/plugin-transform-block-scoped-functions/-/plugin-transform-block-scoped-functions-7.12.13.tgz#a9bf1836f2a39b4eb6cf09967739de29ea4bf4c4" - integrity sha512-zNyFqbc3kI/fVpqwfqkg6RvBgFpC4J18aKKMmv7KdQ/1GgREapSJAykLMVNwfRGO3BtHj3YQZl8kxCXPcVMVeg== - dependencies: - "@babel/helper-plugin-utils" "^7.12.13" - -"@babel/plugin-transform-block-scoping@^7.0.0": - version "7.12.13" - resolved "https://registry.yarnpkg.com/@babel/plugin-transform-block-scoping/-/plugin-transform-block-scoping-7.12.13.tgz#f36e55076d06f41dfd78557ea039c1b581642e61" - integrity sha512-Pxwe0iqWJX4fOOM2kEZeUuAxHMWb9nK+9oh5d11bsLoB0xMg+mkDpt0eYuDZB7ETrY9bbcVlKUGTOGWy7BHsMQ== - dependencies: - "@babel/helper-plugin-utils" "^7.12.13" - -"@babel/plugin-transform-classes@^7.0.0": - version "7.13.0" - resolved "https://registry.yarnpkg.com/@babel/plugin-transform-classes/-/plugin-transform-classes-7.13.0.tgz#0265155075c42918bf4d3a4053134176ad9b533b" - integrity sha512-9BtHCPUARyVH1oXGcSJD3YpsqRLROJx5ZNP6tN5vnk17N0SVf9WCtf8Nuh1CFmgByKKAIMstitKduoCmsaDK5g== - dependencies: - "@babel/helper-annotate-as-pure" "^7.12.13" - "@babel/helper-function-name" "^7.12.13" - "@babel/helper-optimise-call-expression" "^7.12.13" - "@babel/helper-plugin-utils" "^7.13.0" - "@babel/helper-replace-supers" "^7.13.0" - "@babel/helper-split-export-declaration" "^7.12.13" - globals "^11.1.0" - -"@babel/plugin-transform-computed-properties@^7.0.0": - version "7.13.0" - resolved "https://registry.yarnpkg.com/@babel/plugin-transform-computed-properties/-/plugin-transform-computed-properties-7.13.0.tgz#845c6e8b9bb55376b1fa0b92ef0bdc8ea06644ed" - integrity sha512-RRqTYTeZkZAz8WbieLTvKUEUxZlUTdmL5KGMyZj7FnMfLNKV4+r5549aORG/mgojRmFlQMJDUupwAMiF2Q7OUg== - dependencies: - "@babel/helper-plugin-utils" "^7.13.0" - -"@babel/plugin-transform-destructuring@^7.0.0": - version "7.13.0" - resolved "https://registry.yarnpkg.com/@babel/plugin-transform-destructuring/-/plugin-transform-destructuring-7.13.0.tgz#c5dce270014d4e1ebb1d806116694c12b7028963" - integrity sha512-zym5em7tePoNT9s964c0/KU3JPPnuq7VhIxPRefJ4/s82cD+q1mgKfuGRDMCPL0HTyKz4dISuQlCusfgCJ86HA== - dependencies: - "@babel/helper-plugin-utils" "^7.13.0" - -"@babel/plugin-transform-flow-strip-types@^7.0.0": - version "7.13.0" - resolved "https://registry.yarnpkg.com/@babel/plugin-transform-flow-strip-types/-/plugin-transform-flow-strip-types-7.13.0.tgz#58177a48c209971e8234e99906cb6bd1122addd3" - integrity sha512-EXAGFMJgSX8gxWD7PZtW/P6M+z74jpx3wm/+9pn+c2dOawPpBkUX7BrfyPvo6ZpXbgRIEuwgwDb/MGlKvu2pOg== - dependencies: - "@babel/helper-plugin-utils" "^7.13.0" - "@babel/plugin-syntax-flow" "^7.12.13" - -"@babel/plugin-transform-for-of@^7.0.0": - version "7.13.0" - resolved "https://registry.yarnpkg.com/@babel/plugin-transform-for-of/-/plugin-transform-for-of-7.13.0.tgz#c799f881a8091ac26b54867a845c3e97d2696062" - integrity sha512-IHKT00mwUVYE0zzbkDgNRP6SRzvfGCYsOxIRz8KsiaaHCcT9BWIkO+H9QRJseHBLOGBZkHUdHiqj6r0POsdytg== - dependencies: - "@babel/helper-plugin-utils" "^7.13.0" - -"@babel/plugin-transform-function-name@^7.0.0": - version "7.12.13" - resolved "https://registry.yarnpkg.com/@babel/plugin-transform-function-name/-/plugin-transform-function-name-7.12.13.tgz#bb024452f9aaed861d374c8e7a24252ce3a50051" - integrity sha512-6K7gZycG0cmIwwF7uMK/ZqeCikCGVBdyP2J5SKNCXO5EOHcqi+z7Jwf8AmyDNcBgxET8DrEtCt/mPKPyAzXyqQ== - dependencies: - "@babel/helper-function-name" "^7.12.13" - "@babel/helper-plugin-utils" "^7.12.13" - -"@babel/plugin-transform-literals@^7.0.0": - version "7.12.13" - resolved "https://registry.yarnpkg.com/@babel/plugin-transform-literals/-/plugin-transform-literals-7.12.13.tgz#2ca45bafe4a820197cf315794a4d26560fe4bdb9" - integrity sha512-FW+WPjSR7hiUxMcKqyNjP05tQ2kmBCdpEpZHY1ARm96tGQCCBvXKnpjILtDplUnJ/eHZ0lALLM+d2lMFSpYJrQ== - dependencies: - "@babel/helper-plugin-utils" "^7.12.13" - -"@babel/plugin-transform-member-expression-literals@^7.0.0": - version "7.12.13" - resolved "https://registry.yarnpkg.com/@babel/plugin-transform-member-expression-literals/-/plugin-transform-member-expression-literals-7.12.13.tgz#5ffa66cd59b9e191314c9f1f803b938e8c081e40" - integrity sha512-kxLkOsg8yir4YeEPHLuO2tXP9R/gTjpuTOjshqSpELUN3ZAg2jfDnKUvzzJxObun38sw3wm4Uu69sX/zA7iRvg== - dependencies: - "@babel/helper-plugin-utils" "^7.12.13" - -"@babel/plugin-transform-modules-commonjs@^7.0.0": - version "7.13.8" - resolved "https://registry.yarnpkg.com/@babel/plugin-transform-modules-commonjs/-/plugin-transform-modules-commonjs-7.13.8.tgz#7b01ad7c2dcf2275b06fa1781e00d13d420b3e1b" - integrity sha512-9QiOx4MEGglfYZ4XOnU79OHr6vIWUakIj9b4mioN8eQIoEh+pf5p/zEB36JpDFWA12nNMiRf7bfoRvl9Rn79Bw== - dependencies: - "@babel/helper-module-transforms" "^7.13.0" - "@babel/helper-plugin-utils" "^7.13.0" - "@babel/helper-simple-access" "^7.12.13" - babel-plugin-dynamic-import-node "^2.3.3" - -"@babel/plugin-transform-object-super@^7.0.0": - version "7.12.13" - resolved "https://registry.yarnpkg.com/@babel/plugin-transform-object-super/-/plugin-transform-object-super-7.12.13.tgz#b4416a2d63b8f7be314f3d349bd55a9c1b5171f7" - integrity sha512-JzYIcj3XtYspZDV8j9ulnoMPZZnF/Cj0LUxPOjR89BdBVx+zYJI9MdMIlUZjbXDX+6YVeS6I3e8op+qQ3BYBoQ== - dependencies: - "@babel/helper-plugin-utils" "^7.12.13" - "@babel/helper-replace-supers" "^7.12.13" - -"@babel/plugin-transform-parameters@^7.0.0", "@babel/plugin-transform-parameters@^7.13.0": - version "7.13.0" - resolved "https://registry.yarnpkg.com/@babel/plugin-transform-parameters/-/plugin-transform-parameters-7.13.0.tgz#8fa7603e3097f9c0b7ca1a4821bc2fb52e9e5007" - integrity sha512-Jt8k/h/mIwE2JFEOb3lURoY5C85ETcYPnbuAJ96zRBzh1XHtQZfs62ChZ6EP22QlC8c7Xqr9q+e1SU5qttwwjw== - dependencies: - "@babel/helper-plugin-utils" "^7.13.0" - -"@babel/plugin-transform-property-literals@^7.0.0": - version "7.12.13" - resolved "https://registry.yarnpkg.com/@babel/plugin-transform-property-literals/-/plugin-transform-property-literals-7.12.13.tgz#4e6a9e37864d8f1b3bc0e2dce7bf8857db8b1a81" - integrity sha512-nqVigwVan+lR+g8Fj8Exl0UQX2kymtjcWfMOYM1vTYEKujeyv2SkMgazf2qNcK7l4SDiKyTA/nHCPqL4e2zo1A== - dependencies: - "@babel/helper-plugin-utils" "^7.12.13" - -"@babel/plugin-transform-react-display-name@^7.0.0": - version "7.12.13" - resolved "https://registry.yarnpkg.com/@babel/plugin-transform-react-display-name/-/plugin-transform-react-display-name-7.12.13.tgz#c28effd771b276f4647411c9733dbb2d2da954bd" - integrity sha512-MprESJzI9O5VnJZrL7gg1MpdqmiFcUv41Jc7SahxYsNP2kDkFqClxxTZq+1Qv4AFCamm+GXMRDQINNn+qrxmiA== - dependencies: - "@babel/helper-plugin-utils" "^7.12.13" - -"@babel/plugin-transform-react-jsx@^7.0.0": - version "7.12.17" - resolved "https://registry.yarnpkg.com/@babel/plugin-transform-react-jsx/-/plugin-transform-react-jsx-7.12.17.tgz#dd2c1299f5e26de584939892de3cfc1807a38f24" - integrity sha512-mwaVNcXV+l6qJOuRhpdTEj8sT/Z0owAVWf9QujTZ0d2ye9X/K+MTOTSizcgKOj18PGnTc/7g1I4+cIUjsKhBcw== - dependencies: - "@babel/helper-annotate-as-pure" "^7.12.13" - "@babel/helper-module-imports" "^7.12.13" - "@babel/helper-plugin-utils" "^7.12.13" - "@babel/plugin-syntax-jsx" "^7.12.13" - "@babel/types" "^7.12.17" - -"@babel/plugin-transform-shorthand-properties@^7.0.0": - version "7.12.13" - resolved "https://registry.yarnpkg.com/@babel/plugin-transform-shorthand-properties/-/plugin-transform-shorthand-properties-7.12.13.tgz#db755732b70c539d504c6390d9ce90fe64aff7ad" - integrity sha512-xpL49pqPnLtf0tVluuqvzWIgLEhuPpZzvs2yabUHSKRNlN7ScYU7aMlmavOeyXJZKgZKQRBlh8rHbKiJDraTSw== - dependencies: - "@babel/helper-plugin-utils" "^7.12.13" - -"@babel/plugin-transform-spread@^7.0.0": - version "7.13.0" - resolved "https://registry.yarnpkg.com/@babel/plugin-transform-spread/-/plugin-transform-spread-7.13.0.tgz#84887710e273c1815ace7ae459f6f42a5d31d5fd" - integrity sha512-V6vkiXijjzYeFmQTr3dBxPtZYLPcUfY34DebOU27jIl2M/Y8Egm52Hw82CSjjPqd54GTlJs5x+CR7HeNr24ckg== - dependencies: - "@babel/helper-plugin-utils" "^7.13.0" - "@babel/helper-skip-transparent-expression-wrappers" "^7.12.1" - -"@babel/plugin-transform-template-literals@^7.0.0": - version "7.13.0" - resolved "https://registry.yarnpkg.com/@babel/plugin-transform-template-literals/-/plugin-transform-template-literals-7.13.0.tgz#a36049127977ad94438dee7443598d1cefdf409d" - integrity sha512-d67umW6nlfmr1iehCcBv69eSUSySk1EsIS8aTDX4Xo9qajAh6mYtcl4kJrBkGXuxZPEgVr7RVfAvNW6YQkd4Mw== - dependencies: - "@babel/helper-plugin-utils" "^7.13.0" - -"@babel/runtime@^7.0.0", "@babel/runtime@^7.11.2", "@babel/runtime@^7.6.3": - version "7.13.10" - resolved "https://registry.yarnpkg.com/@babel/runtime/-/runtime-7.13.10.tgz#47d42a57b6095f4468da440388fdbad8bebf0d7d" - integrity sha512-4QPkjJq6Ns3V/RgpEahRk+AGfL0eO6RHHtTWoNNr5mO49G6B5+X6d6THgWEAvTrznU5xYpbAlVKRYcsCgh/Akw== - dependencies: - regenerator-runtime "^0.13.4" - -"@babel/runtime@^7.12.1", "@babel/runtime@^7.4.4", "@babel/runtime@^7.8.7": - version "7.15.3" - resolved "https://registry.yarnpkg.com/@babel/runtime/-/runtime-7.15.3.tgz#2e1c2880ca118e5b2f9988322bd8a7656a32502b" - integrity sha512-OvwMLqNXkCXSz1kSm58sEsNuhqOx/fKpnUnKnFB5v8uDda5bLNEHNgKPvhDN6IU0LDcnHQ90LlJ0Q6jnyBSIBA== - dependencies: - regenerator-runtime "^0.13.4" - -"@babel/runtime@^7.3.1": - version "7.8.4" - resolved "https://registry.yarnpkg.com/@babel/runtime/-/runtime-7.8.4.tgz#d79f5a2040f7caa24d53e563aad49cbc05581308" - integrity sha512-neAp3zt80trRVBI1x0azq6c57aNBqYZH8KhMm3TaB7wEI5Q4A2SHfBHE8w9gOhI/lrqxtEbXZgQIrHP+wvSGwQ== - dependencies: - regenerator-runtime "^0.13.2" - -"@babel/template@^7.12.13": - version "7.12.13" - resolved "https://registry.yarnpkg.com/@babel/template/-/template-7.12.13.tgz#530265be8a2589dbb37523844c5bcb55947fb327" - integrity sha512-/7xxiGA57xMo/P2GVvdEumr8ONhFOhfgq2ihK3h1e6THqzTAkHbkXgB0xI9yeTfIUoH3+oAeHhqm/I43OTbbjA== - dependencies: - "@babel/code-frame" "^7.12.13" - "@babel/parser" "^7.12.13" - "@babel/types" "^7.12.13" - -"@babel/traverse@7.12.13": - version "7.12.13" - resolved "https://registry.yarnpkg.com/@babel/traverse/-/traverse-7.12.13.tgz#689f0e4b4c08587ad26622832632735fb8c4e0c0" - integrity sha512-3Zb4w7eE/OslI0fTp8c7b286/cQps3+vdLW3UcwC8VSJC6GbKn55aeVVu2QJNuCDoeKyptLOFrPq8WqZZBodyA== - dependencies: - "@babel/code-frame" "^7.12.13" - "@babel/generator" "^7.12.13" - "@babel/helper-function-name" "^7.12.13" - "@babel/helper-split-export-declaration" "^7.12.13" - "@babel/parser" "^7.12.13" - "@babel/types" "^7.12.13" - debug "^4.1.0" - globals "^11.1.0" - lodash "^4.17.19" - -"@babel/traverse@^7.0.0", "@babel/traverse@^7.13.0": - version "7.13.0" - resolved "https://registry.yarnpkg.com/@babel/traverse/-/traverse-7.13.0.tgz#6d95752475f86ee7ded06536de309a65fc8966cc" - integrity sha512-xys5xi5JEhzC3RzEmSGrs/b3pJW/o87SypZ+G/PhaE7uqVQNv/jlmVIBXuoh5atqQ434LfXV+sf23Oxj0bchJQ== - dependencies: - "@babel/code-frame" "^7.12.13" - "@babel/generator" "^7.13.0" - "@babel/helper-function-name" "^7.12.13" - "@babel/helper-split-export-declaration" "^7.12.13" - "@babel/parser" "^7.13.0" - "@babel/types" "^7.13.0" - debug "^4.1.0" - globals "^11.1.0" - lodash "^4.17.19" - -"@babel/types@7.12.13": - version "7.12.13" - resolved "https://registry.yarnpkg.com/@babel/types/-/types-7.12.13.tgz#8be1aa8f2c876da11a9cf650c0ecf656913ad611" - integrity sha512-oKrdZTld2im1z8bDwTOQvUbxKwE+854zc16qWZQlcTqMN00pWxHQ4ZeOq0yDMnisOpRykH2/5Qqcrk/OlbAjiQ== - dependencies: - "@babel/helper-validator-identifier" "^7.12.11" - lodash "^4.17.19" - to-fast-properties "^2.0.0" - -"@babel/types@^7.0.0", "@babel/types@^7.12.1", "@babel/types@^7.12.13", "@babel/types@^7.12.17", "@babel/types@^7.13.0": - version "7.13.0" - resolved "https://registry.yarnpkg.com/@babel/types/-/types-7.13.0.tgz#74424d2816f0171b4100f0ab34e9a374efdf7f80" - integrity sha512-hE+HE8rnG1Z6Wzo+MhaKE5lM5eMx71T4EHJgku2E3xIfaULhDcxiiRxUYgwX8qwP1BBSlag+TdGOt6JAidIZTA== - dependencies: - "@babel/helper-validator-identifier" "^7.12.11" - lodash "^4.17.19" - to-fast-properties "^2.0.0" - -"@consento/sync-randombytes@^1.0.4", "@consento/sync-randombytes@^1.0.5": - version "1.0.5" - resolved "https://registry.yarnpkg.com/@consento/sync-randombytes/-/sync-randombytes-1.0.5.tgz#5be6bc58c6a6fa6e09f04cc684d037e29e6c28d5" - integrity sha512-mPJ2XvrTLQGEdhleDuSIkWtVWnvmhREOC1FjorV1nlK49t/52Z9X1d618gTj6nlQghRLiYvcd8oL4vZ2YZuDIQ== - dependencies: - buffer "^5.4.3" - seedrandom "^3.0.5" - "@cspotcode/source-map-consumer@0.8.0": version "0.8.0" resolved "https://registry.yarnpkg.com/@cspotcode/source-map-consumer/-/source-map-consumer-0.8.0.tgz#33bf4b7b39c178821606f669bbc447a6a629786b" @@ -598,52 +42,47 @@ dependencies: "@cspotcode/source-map-consumer" "0.8.0" -"@ensdomains/address-encoder@^0.1.7": - version "0.1.9" - resolved "https://registry.yarnpkg.com/@ensdomains/address-encoder/-/address-encoder-0.1.9.tgz#f948c485443d9ef7ed2c0c4790e931c33334d02d" - integrity sha512-E2d2gP4uxJQnDu2Kfg1tHNspefzbLT8Tyjrm5sEuim32UkU2sm5xL4VXtgc2X33fmPEw9+jUMpGs4veMbf+PYg== +"@eslint/eslintrc@^0.4.3": + version "0.4.3" + resolved "https://registry.yarnpkg.com/@eslint/eslintrc/-/eslintrc-0.4.3.tgz#9e42981ef035beb3dd49add17acb96e8ff6f394c" + integrity sha512-J6KFFz5QCYUJq3pf0mjEcCJVERbzv71PUIDczuh9JkwGEzced6CO5ADLHB1rbf/+oPBtoPfMYNOpGDzCANlbXw== dependencies: - 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" + 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" -"@ensdomains/ens@0.4.3": - version "0.4.3" - resolved "https://registry.yarnpkg.com/@ensdomains/ens/-/ens-0.4.3.tgz#f4a6b55146fe526c9a50e13f373bf90d36ca94dc" - integrity sha512-btC+fGze//ml8SMNCx5DgwM8+kG2t+qDCZrqlL/2+PV4CNxnRIpR3egZ49D9FqS52PFoYLmz6MaQfl7AO3pUMA== - dependencies: - bluebird "^3.5.2" - eth-ens-namehash "^2.0.8" - ethereumjs-testrpc "^6.0.3" - ganache-cli "^6.1.0" - solc "^0.4.20" - testrpc "0.0.1" - web3-utils "^1.0.0-beta.31" - -"@ensdomains/ensjs@^2.0.1": - version "2.0.1" - resolved "https://registry.yarnpkg.com/@ensdomains/ensjs/-/ensjs-2.0.1.tgz#c27438f9ca074825ddb08430988c7decf2062a91" - integrity sha512-gZLntzE1xqPNkPvaHdJlV5DXHms8JbHBwrXc2xNrL1AylERK01Lj/txCCZyVQqFd3TvUO1laDbfUv8VII0qrjg== +"@ethereumjs/block@^3.4.0": + version "3.4.0" + resolved "https://registry.yarnpkg.com/@ethereumjs/block/-/block-3.4.0.tgz#4747b0c06220ee10cbdfe1cbde8cbb0677b1b074" + integrity sha512-umKAoTX32yXzErpIksPHodFc/5y8bmZMnOl6hWy5Vd8xId4+HKFUOyEiN16Y97zMwFRysRpcrR6wBejfqc6Bmg== dependencies: - "@babel/runtime" "^7.4.4" - "@ensdomains/address-encoder" "^0.1.7" - "@ensdomains/ens" "0.4.3" - "@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" + "@ethereumjs/common" "^2.4.0" + "@ethereumjs/tx" "^3.3.0" + ethereumjs-util "^7.1.0" + merkle-patricia-tree "^4.2.0" -"@ensdomains/resolver@0.2.4": - version "0.2.4" - resolved "https://registry.yarnpkg.com/@ensdomains/resolver/-/resolver-0.2.4.tgz#c10fe28bf5efbf49bff4666d909aed0265efbc89" - integrity sha512-bvaTH34PMCbv6anRa9I/0zjLJgY4EuznbEMgbV77JBCQ9KNC46rzi0avuxpOfu+xDjPEtSFGqVEOr5GlUSGudA== +"@ethereumjs/blockchain@^5.4.0": + version "5.4.0" + resolved "https://registry.yarnpkg.com/@ethereumjs/blockchain/-/blockchain-5.4.0.tgz#28d712627d3442b2bb1f50dd5acba7cde1021993" + integrity sha512-wAuKLaew6PL52kH8YPXO7PbjjKV12jivRSyHQehkESw4slSLLfYA6Jv7n5YxyT2ajD7KNMPVh7oyF/MU6HcOvg== + dependencies: + "@ethereumjs/block" "^3.4.0" + "@ethereumjs/common" "^2.4.0" + "@ethereumjs/ethash" "^1.0.0" + debug "^2.2.0" + ethereumjs-util "^7.1.0" + level-mem "^5.0.1" + lru-cache "^5.1.1" + rlp "^2.2.4" + semaphore-async-await "^1.5.1" -"@ethereumjs/common@^2.3.0", "@ethereumjs/common@^2.4.0": +"@ethereumjs/common@^2.4.0": version "2.4.0" resolved "https://registry.yarnpkg.com/@ethereumjs/common/-/common-2.4.0.tgz#2d67f6e6ba22246c5c89104e6b9a119fb3039766" integrity sha512-UdkhFWzWcJCZVsj1O/H8/oqj/0RVYjLc1OhPjBrQdALAkQHpCp8xXI4WLnuGTADqTdJZww0NtgwG+TRPkXt27w== @@ -651,7 +90,17 @@ crc-32 "^1.2.0" ethereumjs-util "^7.1.0" -"@ethereumjs/tx@^3.2.1": +"@ethereumjs/ethash@^1.0.0": + version "1.0.0" + resolved "https://registry.yarnpkg.com/@ethereumjs/ethash/-/ethash-1.0.0.tgz#4e77f85b37be1ade5393e8719bdabac3e796ddaa" + integrity sha512-iIqnGG6NMKesyOxv2YctB2guOVX18qMAWlj3QlZyrc+GqfzLqoihti+cVNQnyNxr7eYuPdqwLQOFuPe6g/uKjw== + dependencies: + "@types/levelup" "^4.3.0" + buffer-xor "^2.0.1" + ethereumjs-util "^7.0.7" + miller-rabin "^4.0.0" + +"@ethereumjs/tx@^3.3.0": version "3.3.0" resolved "https://registry.yarnpkg.com/@ethereumjs/tx/-/tx-3.3.0.tgz#14ed1b7fa0f28e1cd61e3ecbdab824205f6a4378" integrity sha512-yTwEj2lVzSMgE6Hjw9Oa1DZks/nKTWM8Wn4ykDNapBPua2f4nXO3qKnni86O6lgDj5fVNRqbDsD0yy7/XNGDEA== @@ -659,6 +108,25 @@ "@ethereumjs/common" "^2.4.0" ethereumjs-util "^7.1.0" +"@ethereumjs/vm@^5.5.2": + version "5.5.2" + resolved "https://registry.yarnpkg.com/@ethereumjs/vm/-/vm-5.5.2.tgz#918a2c1000aaa9fdbe6007a4fdc2c62833122adf" + integrity sha512-AydZ4wfvZAsBuFzs3xVSA2iU0hxhL8anXco3UW3oh9maVC34kTEytOfjHf06LTEfN0MF9LDQ4ciLa7If6ZN/sg== + dependencies: + "@ethereumjs/block" "^3.4.0" + "@ethereumjs/blockchain" "^5.4.0" + "@ethereumjs/common" "^2.4.0" + "@ethereumjs/tx" "^3.3.0" + async-eventemitter "^0.2.4" + core-js-pure "^3.0.1" + debug "^2.2.0" + ethereumjs-util "^7.1.0" + functional-red-black-tree "^1.0.1" + mcl-wasm "^0.7.1" + merkle-patricia-tree "^4.2.0" + rustbn.js "~0.2.0" + util.promisify "^1.0.1" + "@ethersproject/abi@5.0.7": version "5.0.7" resolved "https://registry.yarnpkg.com/@ethersproject/abi/-/abi-5.0.7.tgz#79e52452bd3ca2956d0e1c964207a58ad1a0ee7b" @@ -674,7 +142,22 @@ "@ethersproject/properties" "^5.0.3" "@ethersproject/strings" "^5.0.4" -"@ethersproject/abi@5.4.0", "@ethersproject/abi@^5.0.0-beta.146", "@ethersproject/abi@^5.4.0": +"@ethersproject/abi@5.1.2", "@ethersproject/abi@^5.0.0-beta.146", "@ethersproject/abi@^5.1.0": + version "5.1.2" + resolved "https://registry.yarnpkg.com/@ethersproject/abi/-/abi-5.1.2.tgz#a8e75cd0455e6dc9e4861c3d1c22bbe436c1d775" + integrity sha512-uMhoQVPX0UtfzTpekYQSEUcJGDgsJ25ifz+SV6PDETWaUFhcR8RNgb1QPTASP13inW8r6iy0/Xdq9D5hK2pNvA== + dependencies: + "@ethersproject/address" "^5.1.0" + "@ethersproject/bignumber" "^5.1.0" + "@ethersproject/bytes" "^5.1.0" + "@ethersproject/constants" "^5.1.0" + "@ethersproject/hash" "^5.1.0" + "@ethersproject/keccak256" "^5.1.0" + "@ethersproject/logger" "^5.1.0" + "@ethersproject/properties" "^5.1.0" + "@ethersproject/strings" "^5.1.0" + +"@ethersproject/abi@5.4.0", "@ethersproject/abi@^5.1.2", "@ethersproject/abi@^5.4.0": version "5.4.0" resolved "https://registry.yarnpkg.com/@ethersproject/abi/-/abi-5.4.0.tgz#a6d63bdb3672f738398846d4279fa6b6c9818242" integrity sha512-9gU2H+/yK1j2eVMdzm6xvHSnMxk8waIHQGYCZg5uvAyH0rsAzxkModzBSpbAkAuhKFEovC2S9hM4nPuLym8IZw== @@ -689,6 +172,34 @@ "@ethersproject/properties" "^5.4.0" "@ethersproject/strings" "^5.4.0" +"@ethersproject/abi@^5.3.0", "@ethersproject/abi@^5.3.1": + version "5.3.1" + resolved "https://registry.yarnpkg.com/@ethersproject/abi/-/abi-5.3.1.tgz#69a1a496729d3a83521675a57cbe21f3cc27241c" + integrity sha512-F98FWTJG7nWWAQ4DcV6R0cSlrj67MWK3ylahuFbzkumem5cLWg1p7fZ3vIdRoS1c7TEf55Lvyx0w7ICR47IImw== + dependencies: + "@ethersproject/address" "^5.3.0" + "@ethersproject/bignumber" "^5.3.0" + "@ethersproject/bytes" "^5.3.0" + "@ethersproject/constants" "^5.3.0" + "@ethersproject/hash" "^5.3.0" + "@ethersproject/keccak256" "^5.3.0" + "@ethersproject/logger" "^5.3.0" + "@ethersproject/properties" "^5.3.0" + "@ethersproject/strings" "^5.3.0" + +"@ethersproject/abstract-provider@5.1.0", "@ethersproject/abstract-provider@^5.1.0": + version "5.1.0" + resolved "https://registry.yarnpkg.com/@ethersproject/abstract-provider/-/abstract-provider-5.1.0.tgz#1f24c56cda5524ef4ed3cfc562a01d6b6f8eeb0b" + integrity sha512-8dJUnT8VNvPwWhYIau4dwp7qe1g+KgdRm4XTWvjkI9gAT2zZa90WF5ApdZ3vl1r6NDmnn6vUVvyphClRZRteTQ== + dependencies: + "@ethersproject/bignumber" "^5.1.0" + "@ethersproject/bytes" "^5.1.0" + "@ethersproject/logger" "^5.1.0" + "@ethersproject/networks" "^5.1.0" + "@ethersproject/properties" "^5.1.0" + "@ethersproject/transactions" "^5.1.0" + "@ethersproject/web" "^5.1.0" + "@ethersproject/abstract-provider@5.4.1", "@ethersproject/abstract-provider@^5.4.0": version "5.4.1" resolved "https://registry.yarnpkg.com/@ethersproject/abstract-provider/-/abstract-provider-5.4.1.tgz#e404309a29f771bd4d28dbafadcaa184668c2a6e" @@ -702,6 +213,30 @@ "@ethersproject/transactions" "^5.4.0" "@ethersproject/web" "^5.4.0" +"@ethersproject/abstract-provider@^5.3.0": + version "5.3.0" + resolved "https://registry.yarnpkg.com/@ethersproject/abstract-provider/-/abstract-provider-5.3.0.tgz#f4c0ae4a4cef9f204d7781de805fd44b72756c81" + integrity sha512-1+MLhGP1GwxBDBNwMWVmhCsvKwh4gK7oIfOrmlmePNeskg1NhIrYssraJBieaFNHUYfKEd/1DjiVZMw8Qu5Cxw== + dependencies: + "@ethersproject/bignumber" "^5.3.0" + "@ethersproject/bytes" "^5.3.0" + "@ethersproject/logger" "^5.3.0" + "@ethersproject/networks" "^5.3.0" + "@ethersproject/properties" "^5.3.0" + "@ethersproject/transactions" "^5.3.0" + "@ethersproject/web" "^5.3.0" + +"@ethersproject/abstract-signer@5.1.0", "@ethersproject/abstract-signer@^5.1.0": + version "5.1.0" + resolved "https://registry.yarnpkg.com/@ethersproject/abstract-signer/-/abstract-signer-5.1.0.tgz#744c7a2d0ebe3cc0bc38294d0f53d5ca3f4e49e3" + integrity sha512-qQDMkjGZSSJSKl6AnfTgmz9FSnzq3iEoEbHTYwjDlEAv+LNP7zd4ixCcVWlWyk+2siud856M5CRhAmPdupeN9w== + dependencies: + "@ethersproject/abstract-provider" "^5.1.0" + "@ethersproject/bignumber" "^5.1.0" + "@ethersproject/bytes" "^5.1.0" + "@ethersproject/logger" "^5.1.0" + "@ethersproject/properties" "^5.1.0" + "@ethersproject/abstract-signer@5.4.1", "@ethersproject/abstract-signer@^5.4.0": version "5.4.1" resolved "https://registry.yarnpkg.com/@ethersproject/abstract-signer/-/abstract-signer-5.4.1.tgz#e4e9abcf4dd4f1ba0db7dff9746a5f78f355ea81" @@ -713,7 +248,29 @@ "@ethersproject/logger" "^5.4.0" "@ethersproject/properties" "^5.4.0" -"@ethersproject/address@5.4.0", "@ethersproject/address@^5.0.4", "@ethersproject/address@^5.4.0": +"@ethersproject/abstract-signer@^5.3.0": + version "5.3.0" + resolved "https://registry.yarnpkg.com/@ethersproject/abstract-signer/-/abstract-signer-5.3.0.tgz#05172b653e15b535ed5854ef5f6a72f4b441052d" + integrity sha512-w8IFwOYqiPrtvosPuArZ3+QPR2nmdVTRrVY8uJYL3NNfMmQfTy3V3l2wbzX47UUlNbPJY+gKvzJAyvK1onZxJg== + dependencies: + "@ethersproject/abstract-provider" "^5.3.0" + "@ethersproject/bignumber" "^5.3.0" + "@ethersproject/bytes" "^5.3.0" + "@ethersproject/logger" "^5.3.0" + "@ethersproject/properties" "^5.3.0" + +"@ethersproject/address@5.1.0", "@ethersproject/address@^5.0.4", "@ethersproject/address@^5.1.0": + version "5.1.0" + resolved "https://registry.yarnpkg.com/@ethersproject/address/-/address-5.1.0.tgz#3854fd7ebcb6af7597de66f847c3345dae735b58" + integrity sha512-rfWQR12eHn2cpstCFS4RF7oGjfbkZb0oqep+BfrT+gWEGWG2IowJvIsacPOvzyS1jhNF4MQ4BS59B04Mbovteg== + dependencies: + "@ethersproject/bignumber" "^5.1.0" + "@ethersproject/bytes" "^5.1.0" + "@ethersproject/keccak256" "^5.1.0" + "@ethersproject/logger" "^5.1.0" + "@ethersproject/rlp" "^5.1.0" + +"@ethersproject/address@5.4.0", "@ethersproject/address@^5.4.0": version "5.4.0" resolved "https://registry.yarnpkg.com/@ethersproject/address/-/address-5.4.0.tgz#ba2d00a0f8c4c0854933b963b9a3a9f6eb4a37a3" integrity sha512-SD0VgOEkcACEG/C6xavlU1Hy3m5DGSXW3CUHkaaEHbAPPsgi0coP5oNPsxau8eTlZOk/bpa/hKeCNoK5IzVI2Q== @@ -724,16 +281,23 @@ "@ethersproject/logger" "^5.4.0" "@ethersproject/rlp" "^5.4.0" -"@ethersproject/address@^5.0.9": - version "5.0.11" - resolved "https://registry.yarnpkg.com/@ethersproject/address/-/address-5.0.11.tgz#12022e8c590c33939beb5ab18b401ecf585eac59" - integrity sha512-Et4GBdD8/tsBGjCEOKee9upN29qjL5kbRcmJifb4Penmiuh9GARXL2/xpXvEp5EW+EIW/rfCHFJrkYBgoQFQBw== +"@ethersproject/address@^5.3.0": + version "5.3.0" + resolved "https://registry.yarnpkg.com/@ethersproject/address/-/address-5.3.0.tgz#e53b69eacebf332e8175de814c5e6507d6932518" + integrity sha512-29TgjzEBK+gUEUAOfWCG7s9IxLNLCqvr+oDSk6L9TXD0VLvZJKhJV479tKQqheVA81OeGxfpdxYtUVH8hqlCvA== + dependencies: + "@ethersproject/bignumber" "^5.3.0" + "@ethersproject/bytes" "^5.3.0" + "@ethersproject/keccak256" "^5.3.0" + "@ethersproject/logger" "^5.3.0" + "@ethersproject/rlp" "^5.3.0" + +"@ethersproject/base64@5.1.0", "@ethersproject/base64@^5.1.0": + version "5.1.0" + resolved "https://registry.yarnpkg.com/@ethersproject/base64/-/base64-5.1.0.tgz#27240c174d0a4e13f6eae87416fd876caf7f42b6" + integrity sha512-npD1bLvK4Bcxz+m4EMkx+F8Rd7CnqS9DYnhNu0/GlQBXhWjvfoAZzk5HJ0f1qeyp8d+A86PTuzLOGOXf4/CN8g== dependencies: - "@ethersproject/bignumber" "^5.0.13" - "@ethersproject/bytes" "^5.0.9" - "@ethersproject/keccak256" "^5.0.7" - "@ethersproject/logger" "^5.0.8" - "@ethersproject/rlp" "^5.0.7" + "@ethersproject/bytes" "^5.1.0" "@ethersproject/base64@5.4.0", "@ethersproject/base64@^5.4.0": version "5.4.0" @@ -742,6 +306,21 @@ dependencies: "@ethersproject/bytes" "^5.4.0" +"@ethersproject/base64@^5.3.0": + version "5.3.0" + resolved "https://registry.yarnpkg.com/@ethersproject/base64/-/base64-5.3.0.tgz#b831fb35418b42ad24d943c557259062b8640824" + integrity sha512-JIqgtOmgKcbc2sjGWTXyXktqUhvFUDte8fPVsAaOrcPiJf6YotNF+nsrOYGC9pbHBEGSuSBp3QR0varkO8JHEw== + dependencies: + "@ethersproject/bytes" "^5.3.0" + +"@ethersproject/basex@5.1.0", "@ethersproject/basex@^5.1.0": + version "5.1.0" + resolved "https://registry.yarnpkg.com/@ethersproject/basex/-/basex-5.1.0.tgz#80da2e86f9da0cb5ccd446b337364d791f6a131c" + integrity sha512-vBKr39bum7DDbOvkr1Sj19bRMEPA4FnST6Utt6xhDzI7o7L6QNkDn2yrCfP+hnvJGhZFKtLygWwqlTBZoBXYLg== + dependencies: + "@ethersproject/bytes" "^5.1.0" + "@ethersproject/properties" "^5.1.0" + "@ethersproject/basex@5.4.0", "@ethersproject/basex@^5.4.0": version "5.4.0" resolved "https://registry.yarnpkg.com/@ethersproject/basex/-/basex-5.4.0.tgz#0a2da0f4e76c504a94f2b21d3161ed9438c7f8a6" @@ -750,7 +329,24 @@ "@ethersproject/bytes" "^5.4.0" "@ethersproject/properties" "^5.4.0" -"@ethersproject/bignumber@5.4.1", "@ethersproject/bignumber@^5.0.7", "@ethersproject/bignumber@^5.4.0": +"@ethersproject/basex@^5.3.0": + version "5.3.0" + resolved "https://registry.yarnpkg.com/@ethersproject/basex/-/basex-5.3.0.tgz#02dea3ab8559ae625c6d548bc11773432255c916" + integrity sha512-8J4nS6t/SOnoCgr3DF5WCSRLC5YwTKYpZWJqeyYQLX+86TwPhtzvHXacODzcDII9tWKhVg6g0Bka8JCBWXsCiQ== + dependencies: + "@ethersproject/bytes" "^5.3.0" + "@ethersproject/properties" "^5.3.0" + +"@ethersproject/bignumber@5.1.1", "@ethersproject/bignumber@^5.0.7", "@ethersproject/bignumber@^5.1.0": + version "5.1.1" + resolved "https://registry.yarnpkg.com/@ethersproject/bignumber/-/bignumber-5.1.1.tgz#84812695253ccbc639117f7ac49ee1529b68e637" + integrity sha512-AVz5iqz7+70RIqoQTznsdJ6DOVBYciNlvO+AlQmPTB6ofCvoihI9bQdr6wljsX+d5W7Yc4nyvQvP4JMzg0Agig== + dependencies: + "@ethersproject/bytes" "^5.1.0" + "@ethersproject/logger" "^5.1.0" + bn.js "^4.4.0" + +"@ethersproject/bignumber@5.4.1", "@ethersproject/bignumber@^5.4.0": version "5.4.1" resolved "https://registry.yarnpkg.com/@ethersproject/bignumber/-/bignumber-5.4.1.tgz#64399d3b9ae80aa83d483e550ba57ea062c1042d" integrity sha512-fJhdxqoQNuDOk6epfM7yD6J8Pol4NUCy1vkaGAkuujZm0+lNow//MKu1hLhRiYV4BsOHyBv5/lsTjF+7hWwhJg== @@ -759,42 +355,72 @@ "@ethersproject/logger" "^5.4.0" bn.js "^4.11.9" -"@ethersproject/bignumber@^5.0.13": - version "5.0.15" - resolved "https://registry.yarnpkg.com/@ethersproject/bignumber/-/bignumber-5.0.15.tgz#b089b3f1e0381338d764ac1c10512f0c93b184ed" - integrity sha512-MTADqnyacvdRwtKh7o9ujwNDSM1SDJjYDMYAzjIgjoi9rh6TY4suMbhCa3i2vh3SUXiXSICyTI8ui+NPdrZ9Lw== +"@ethersproject/bignumber@^5.3.0": + version "5.3.0" + resolved "https://registry.yarnpkg.com/@ethersproject/bignumber/-/bignumber-5.3.0.tgz#74ab2ec9c3bda4e344920565720a6ee9c794e9db" + integrity sha512-5xguJ+Q1/zRMgHgDCaqAexx/8DwDVLRemw2i6uR8KyGjwGdXI8f32QZZ1cKGucBN6ekJvpUpHy6XAuQnTv0mPA== dependencies: - "@ethersproject/bytes" "^5.0.9" - "@ethersproject/logger" "^5.0.8" - bn.js "^4.4.0" + "@ethersproject/bytes" "^5.3.0" + "@ethersproject/logger" "^5.3.0" + bn.js "^4.11.9" + +"@ethersproject/bytes@5.1.0", "@ethersproject/bytes@^5.0.4", "@ethersproject/bytes@^5.1.0": + version "5.1.0" + resolved "https://registry.yarnpkg.com/@ethersproject/bytes/-/bytes-5.1.0.tgz#55dfa9c4c21df1b1b538be3accb50fb76d5facfd" + integrity sha512-sGTxb+LVjFxJcJeUswAIK6ncgOrh3D8c192iEJd7mLr95V6du119rRfYT/b87WPkZ5I3gRBUYIYXtdgCWACe8g== + dependencies: + "@ethersproject/logger" "^5.1.0" -"@ethersproject/bytes@5.4.0", "@ethersproject/bytes@^5.0.4", "@ethersproject/bytes@^5.4.0": +"@ethersproject/bytes@5.4.0", "@ethersproject/bytes@^5.4.0": version "5.4.0" resolved "https://registry.yarnpkg.com/@ethersproject/bytes/-/bytes-5.4.0.tgz#56fa32ce3bf67153756dbaefda921d1d4774404e" integrity sha512-H60ceqgTHbhzOj4uRc/83SCN9d+BSUnOkrr2intevqdtEMO1JFVZ1XL84OEZV+QjV36OaZYxtnt4lGmxcGsPfA== dependencies: "@ethersproject/logger" "^5.4.0" -"@ethersproject/bytes@^5.0.9": - version "5.0.11" - resolved "https://registry.yarnpkg.com/@ethersproject/bytes/-/bytes-5.0.11.tgz#21118e75b1d00db068984c15530e316021101276" - integrity sha512-D51plLYY5qF05AsoVQwIZVLqlBkaTPVHVP/1WmmBIWyHB0cRW0C9kh0kx5Exo51rB63Hk8PfHxc7SmpoaQFEyg== +"@ethersproject/bytes@^5.3.0": + version "5.3.0" + resolved "https://registry.yarnpkg.com/@ethersproject/bytes/-/bytes-5.3.0.tgz#473e0da7f831d535b2002be05e6f4ca3729a1bc9" + integrity sha512-rqLJjdVqCcn7glPer7Fxh87PRqlnRScVAoxcIP3PmOUNApMWJ6yRdOFfo2KvPAdO7Le3yEI1o0YW+Yvr7XCYvw== + dependencies: + "@ethersproject/logger" "^5.3.0" + +"@ethersproject/constants@5.1.0", "@ethersproject/constants@^5.0.4", "@ethersproject/constants@^5.1.0": + version "5.1.0" + resolved "https://registry.yarnpkg.com/@ethersproject/constants/-/constants-5.1.0.tgz#4e7da6367ea0e9be87585d8b09f3fccf384b1452" + integrity sha512-0/SuHrxc8R8k+JiLmJymxHJbojUDWBQqO+b+XFdwaP0jGzqC09YDy/CAlSZB6qHsBifY8X3I89HcK/oMqxRdBw== dependencies: - "@ethersproject/logger" "^5.0.8" + "@ethersproject/bignumber" "^5.1.0" -"@ethersproject/constants@5.4.0", "@ethersproject/constants@^5.0.4", "@ethersproject/constants@^5.4.0": +"@ethersproject/constants@5.4.0", "@ethersproject/constants@^5.4.0": version "5.4.0" resolved "https://registry.yarnpkg.com/@ethersproject/constants/-/constants-5.4.0.tgz#ee0bdcb30bf1b532d2353c977bf2ef1ee117958a" integrity sha512-tzjn6S7sj9+DIIeKTJLjK9WGN2Tj0P++Z8ONEIlZjyoTkBuODN+0VfhAyYksKi43l1Sx9tX2VlFfzjfmr5Wl3Q== dependencies: "@ethersproject/bignumber" "^5.4.0" -"@ethersproject/constants@^5.0.8": - version "5.0.10" - resolved "https://registry.yarnpkg.com/@ethersproject/constants/-/constants-5.0.10.tgz#eb0c604fbc44c53ba9641eed31a1d0c9e1ebcadc" - integrity sha512-OSo8jxkHLDXieCy8bgOFR7lMfgPxEzKvSDdP+WAWHCDM8+orwch0B6wzkTmiQFgryAtIctrBt5glAdJikZ3hGw== +"@ethersproject/constants@^5.3.0": + version "5.3.0" + resolved "https://registry.yarnpkg.com/@ethersproject/constants/-/constants-5.3.0.tgz#a5d6d86c0eec2c64c3024479609493b9afb3fc77" + integrity sha512-4y1feNOwEpgjAfiCFWOHznvv6qUF/H6uI0UKp8xdhftb+H+FbKflXg1pOgH5qs4Sr7EYBL+zPyPb+YD5g1aEyw== dependencies: - "@ethersproject/bignumber" "^5.0.13" + "@ethersproject/bignumber" "^5.3.0" + +"@ethersproject/contracts@5.1.1": + version "5.1.1" + resolved "https://registry.yarnpkg.com/@ethersproject/contracts/-/contracts-5.1.1.tgz#c66cb6d618fcbd73e20a6b808e8f768b2b781d0b" + integrity sha512-6WwktLJ0DFWU8pDkgH4IGttQHhQN4SnwKFu9h+QYVe48VGWtbDu4W8/q/7QA1u/HWlWMrKxqawPiZUJj0UMvOw== + dependencies: + "@ethersproject/abi" "^5.1.0" + "@ethersproject/abstract-provider" "^5.1.0" + "@ethersproject/abstract-signer" "^5.1.0" + "@ethersproject/address" "^5.1.0" + "@ethersproject/bignumber" "^5.1.0" + "@ethersproject/bytes" "^5.1.0" + "@ethersproject/constants" "^5.1.0" + "@ethersproject/logger" "^5.1.0" + "@ethersproject/properties" "^5.1.0" + "@ethersproject/transactions" "^5.1.0" "@ethersproject/contracts@5.4.1": version "5.4.1" @@ -812,7 +438,37 @@ "@ethersproject/properties" "^5.4.0" "@ethersproject/transactions" "^5.4.0" -"@ethersproject/hash@5.4.0", "@ethersproject/hash@^5.0.4", "@ethersproject/hash@^5.4.0": +"@ethersproject/contracts@^5.3.0": + version "5.3.0" + resolved "https://registry.yarnpkg.com/@ethersproject/contracts/-/contracts-5.3.0.tgz#ad699a3abaae30bfb6422cf31813a663b2d4099c" + integrity sha512-eDyQ8ltykvyQqnGZxb/c1e0OnEtzqXhNNC4BX8nhYBCaoBrYYuK/1fLmyEvc5+XUMoxNhwpYkoSSwvPLci7/Zg== + dependencies: + "@ethersproject/abi" "^5.3.0" + "@ethersproject/abstract-provider" "^5.3.0" + "@ethersproject/abstract-signer" "^5.3.0" + "@ethersproject/address" "^5.3.0" + "@ethersproject/bignumber" "^5.3.0" + "@ethersproject/bytes" "^5.3.0" + "@ethersproject/constants" "^5.3.0" + "@ethersproject/logger" "^5.3.0" + "@ethersproject/properties" "^5.3.0" + "@ethersproject/transactions" "^5.3.0" + +"@ethersproject/hash@5.1.0", "@ethersproject/hash@^5.0.4", "@ethersproject/hash@^5.1.0": + version "5.1.0" + resolved "https://registry.yarnpkg.com/@ethersproject/hash/-/hash-5.1.0.tgz#40961d64837d57f580b7b055e0d74174876d891e" + integrity sha512-fNwry20yLLPpnRRwm3fBL+2ksgO+KMadxM44WJmRIoTKzy4269+rbq9KFoe2LTqq2CXJM2CE70beGaNrpuqflQ== + dependencies: + "@ethersproject/abstract-signer" "^5.1.0" + "@ethersproject/address" "^5.1.0" + "@ethersproject/bignumber" "^5.1.0" + "@ethersproject/bytes" "^5.1.0" + "@ethersproject/keccak256" "^5.1.0" + "@ethersproject/logger" "^5.1.0" + "@ethersproject/properties" "^5.1.0" + "@ethersproject/strings" "^5.1.0" + +"@ethersproject/hash@5.4.0", "@ethersproject/hash@^5.4.0": version "5.4.0" resolved "https://registry.yarnpkg.com/@ethersproject/hash/-/hash-5.4.0.tgz#d18a8e927e828e22860a011f39e429d388344ae0" integrity sha512-xymAM9tmikKgbktOCjW60Z5sdouiIIurkZUr9oW5NOex5uwxrbsYG09kb5bMcNjlVeJD3yPivTNzViIs1GCbqA== @@ -826,6 +482,38 @@ "@ethersproject/properties" "^5.4.0" "@ethersproject/strings" "^5.4.0" +"@ethersproject/hash@^5.3.0": + version "5.3.0" + resolved "https://registry.yarnpkg.com/@ethersproject/hash/-/hash-5.3.0.tgz#f65e3bf3db3282df4da676db6cfa049535dd3643" + integrity sha512-gAFZSjUPQ32CIfoKSMtMEQ+IO0kQxqhwz9fCIFt2DtAq2u4pWt8mL9Z5P0r6KkLcQU8LE9FmuPPyd+JvBzmr1w== + dependencies: + "@ethersproject/abstract-signer" "^5.3.0" + "@ethersproject/address" "^5.3.0" + "@ethersproject/bignumber" "^5.3.0" + "@ethersproject/bytes" "^5.3.0" + "@ethersproject/keccak256" "^5.3.0" + "@ethersproject/logger" "^5.3.0" + "@ethersproject/properties" "^5.3.0" + "@ethersproject/strings" "^5.3.0" + +"@ethersproject/hdnode@5.1.0", "@ethersproject/hdnode@^5.1.0": + version "5.1.0" + resolved "https://registry.yarnpkg.com/@ethersproject/hdnode/-/hdnode-5.1.0.tgz#2bf5c4048935136ce83e9242e1bd570afcc0bc83" + integrity sha512-obIWdlujloExPHWJGmhJO/sETOOo7SEb6qemV4f8kyFoXg+cJK+Ta9SvBrj7hsUK85n3LZeZJZRjjM7oez3Clg== + dependencies: + "@ethersproject/abstract-signer" "^5.1.0" + "@ethersproject/basex" "^5.1.0" + "@ethersproject/bignumber" "^5.1.0" + "@ethersproject/bytes" "^5.1.0" + "@ethersproject/logger" "^5.1.0" + "@ethersproject/pbkdf2" "^5.1.0" + "@ethersproject/properties" "^5.1.0" + "@ethersproject/sha2" "^5.1.0" + "@ethersproject/signing-key" "^5.1.0" + "@ethersproject/strings" "^5.1.0" + "@ethersproject/transactions" "^5.1.0" + "@ethersproject/wordlists" "^5.1.0" + "@ethersproject/hdnode@5.4.0", "@ethersproject/hdnode@^5.4.0": version "5.4.0" resolved "https://registry.yarnpkg.com/@ethersproject/hdnode/-/hdnode-5.4.0.tgz#4bc9999b9a12eb5ce80c5faa83114a57e4107cac" @@ -844,6 +532,43 @@ "@ethersproject/transactions" "^5.4.0" "@ethersproject/wordlists" "^5.4.0" +"@ethersproject/hdnode@^5.3.0": + version "5.3.0" + resolved "https://registry.yarnpkg.com/@ethersproject/hdnode/-/hdnode-5.3.0.tgz#26fed65ffd5c25463fddff13f5fb4e5617553c94" + integrity sha512-zLmmtLNoDMGoYRdjOab01Zqkvp+TmZyCGDAMQF1Bs3yZyBs/kzTNi1qJjR1jVUcPP5CWGtjFwY8iNG8oNV9J8g== + dependencies: + "@ethersproject/abstract-signer" "^5.3.0" + "@ethersproject/basex" "^5.3.0" + "@ethersproject/bignumber" "^5.3.0" + "@ethersproject/bytes" "^5.3.0" + "@ethersproject/logger" "^5.3.0" + "@ethersproject/pbkdf2" "^5.3.0" + "@ethersproject/properties" "^5.3.0" + "@ethersproject/sha2" "^5.3.0" + "@ethersproject/signing-key" "^5.3.0" + "@ethersproject/strings" "^5.3.0" + "@ethersproject/transactions" "^5.3.0" + "@ethersproject/wordlists" "^5.3.0" + +"@ethersproject/json-wallets@5.1.0", "@ethersproject/json-wallets@^5.1.0": + version "5.1.0" + resolved "https://registry.yarnpkg.com/@ethersproject/json-wallets/-/json-wallets-5.1.0.tgz#bba7af2e520e8aea4d3829d80520db5d2e4fb8d2" + integrity sha512-00n2iBy27w8zrGZSiU762UOVuzCQZxUZxopsZC47++js6xUFuI74DHcJ5K/2pddlF1YBskvmMuboEu1geK8mnA== + dependencies: + "@ethersproject/abstract-signer" "^5.1.0" + "@ethersproject/address" "^5.1.0" + "@ethersproject/bytes" "^5.1.0" + "@ethersproject/hdnode" "^5.1.0" + "@ethersproject/keccak256" "^5.1.0" + "@ethersproject/logger" "^5.1.0" + "@ethersproject/pbkdf2" "^5.1.0" + "@ethersproject/properties" "^5.1.0" + "@ethersproject/random" "^5.1.0" + "@ethersproject/strings" "^5.1.0" + "@ethersproject/transactions" "^5.1.0" + aes-js "3.0.0" + scrypt-js "3.0.1" + "@ethersproject/json-wallets@5.4.0", "@ethersproject/json-wallets@^5.4.0": version "5.4.0" resolved "https://registry.yarnpkg.com/@ethersproject/json-wallets/-/json-wallets-5.4.0.tgz#2583341cfe313fc9856642e8ace3080154145e95" @@ -863,7 +588,34 @@ aes-js "3.0.0" scrypt-js "3.0.1" -"@ethersproject/keccak256@5.4.0", "@ethersproject/keccak256@^5.0.3", "@ethersproject/keccak256@^5.4.0": +"@ethersproject/json-wallets@^5.3.0": + version "5.3.0" + resolved "https://registry.yarnpkg.com/@ethersproject/json-wallets/-/json-wallets-5.3.0.tgz#7b1a5ff500c12aa8597ae82c8939837b0449376e" + integrity sha512-/xwbqaIb5grUIGNmeEaz8GdcpmDr++X8WT4Jqcclnxow8PXCUHFeDxjf3O+nSuoqOYG/Ds0+BI5xuQKbva6Xkw== + dependencies: + "@ethersproject/abstract-signer" "^5.3.0" + "@ethersproject/address" "^5.3.0" + "@ethersproject/bytes" "^5.3.0" + "@ethersproject/hdnode" "^5.3.0" + "@ethersproject/keccak256" "^5.3.0" + "@ethersproject/logger" "^5.3.0" + "@ethersproject/pbkdf2" "^5.3.0" + "@ethersproject/properties" "^5.3.0" + "@ethersproject/random" "^5.3.0" + "@ethersproject/strings" "^5.3.0" + "@ethersproject/transactions" "^5.3.0" + aes-js "3.0.0" + scrypt-js "3.0.1" + +"@ethersproject/keccak256@5.1.0", "@ethersproject/keccak256@^5.0.3", "@ethersproject/keccak256@^5.1.0": + version "5.1.0" + resolved "https://registry.yarnpkg.com/@ethersproject/keccak256/-/keccak256-5.1.0.tgz#fdcd88fb13bfef4271b225cdd8dec4d315c8e60e" + integrity sha512-vrTB1W6AEYoadww5c9UyVJ2YcSiyIUTNDRccZIgwTmFFoSHwBtcvG1hqy9RzJ1T0bMdATbM9Hfx2mJ6H0i7Hig== + dependencies: + "@ethersproject/bytes" "^5.1.0" + js-sha3 "0.5.7" + +"@ethersproject/keccak256@5.4.0", "@ethersproject/keccak256@^5.4.0": version "5.4.0" resolved "https://registry.yarnpkg.com/@ethersproject/keccak256/-/keccak256-5.4.0.tgz#7143b8eea4976080241d2bd92e3b1f1bf7025318" integrity sha512-FBI1plWet+dPUvAzPAeHzRKiPpETQzqSUWR1wXJGHVWi4i8bOSrpC3NwpkPjgeXG7MnugVc1B42VbfnQikyC/A== @@ -871,23 +623,35 @@ "@ethersproject/bytes" "^5.4.0" js-sha3 "0.5.7" -"@ethersproject/keccak256@^5.0.7": - version "5.0.9" - resolved "https://registry.yarnpkg.com/@ethersproject/keccak256/-/keccak256-5.0.9.tgz#ca0d86e4af56c13b1ef25e533bde3e96d28f647d" - integrity sha512-zhdUTj6RGtCJSgU+bDrWF6cGbvW453LoIC1DSNWrTlXzC7WuH4a+EiPrgc7/kNoRxerKuA/cxYlI8GwNtVtDlw== +"@ethersproject/keccak256@^5.3.0": + version "5.3.0" + resolved "https://registry.yarnpkg.com/@ethersproject/keccak256/-/keccak256-5.3.0.tgz#fb5cd36bdfd6fa02e2ea84964078a9fc6bd731be" + integrity sha512-Gv2YqgIUmRbYVNIibafT0qGaeGYLIA/EdWHJ7JcVxVSs2vyxafGxOJ5VpSBHWeOIsE6OOaCelYowhuuTicgdFQ== dependencies: - "@ethersproject/bytes" "^5.0.9" + "@ethersproject/bytes" "^5.3.0" js-sha3 "0.5.7" -"@ethersproject/logger@5.4.0", "@ethersproject/logger@^5.0.5", "@ethersproject/logger@^5.4.0": +"@ethersproject/logger@5.1.0", "@ethersproject/logger@^5.0.5", "@ethersproject/logger@^5.1.0": + version "5.1.0" + resolved "https://registry.yarnpkg.com/@ethersproject/logger/-/logger-5.1.0.tgz#4cdeeefac029373349d5818f39c31b82cc6d9bbf" + integrity sha512-wtUaD1lBX10HBXjjKV9VHCBnTdUaKQnQ2XSET1ezglqLdPdllNOIlLfhyCRqXm5xwcjExVI5ETokOYfjPtaAlw== + +"@ethersproject/logger@5.4.0", "@ethersproject/logger@^5.4.0": version "5.4.0" resolved "https://registry.yarnpkg.com/@ethersproject/logger/-/logger-5.4.0.tgz#f39adadf62ad610c420bcd156fd41270e91b3ca9" integrity sha512-xYdWGGQ9P2cxBayt64d8LC8aPFJk6yWCawQi/4eJ4+oJdMMjEBMrIcIMZ9AxhwpPVmnBPrsB10PcXGmGAqgUEQ== -"@ethersproject/logger@^5.0.8": - version "5.0.10" - resolved "https://registry.yarnpkg.com/@ethersproject/logger/-/logger-5.0.10.tgz#fd884688b3143253e0356ef92d5f22d109d2e026" - integrity sha512-0y2T2NqykDrbPM3Zw9RSbPkDOxwChAL8detXaom76CfYoGxsOnRP/zTX8OUAV+x9LdwzgbWvWmeXrc0M7SuDZw== +"@ethersproject/logger@^5.3.0": + version "5.3.0" + resolved "https://registry.yarnpkg.com/@ethersproject/logger/-/logger-5.3.0.tgz#7a69fa1d4ca0d4b7138da1627eb152f763d84dd0" + integrity sha512-8bwJ2gxJGkZZnpQSq5uSiZSJjyVTWmlGft4oH8vxHdvO1Asy4TwVepAhPgxIQIMxXZFUNMych1YjIV4oQ4I7dA== + +"@ethersproject/networks@5.1.0", "@ethersproject/networks@^5.1.0": + version "5.1.0" + resolved "https://registry.yarnpkg.com/@ethersproject/networks/-/networks-5.1.0.tgz#f537290cb05aa6dc5e81e910926c04cfd5814bca" + integrity sha512-A/NIrIED/G/IgU1XUukOA3WcFRxn2I4O5GxsYGA5nFlIi+UZWdGojs85I1VXkR1gX9eFnDXzjE6OtbgZHjFhIA== + dependencies: + "@ethersproject/logger" "^5.1.0" "@ethersproject/networks@5.4.2", "@ethersproject/networks@^5.4.0": version "5.4.2" @@ -896,6 +660,21 @@ dependencies: "@ethersproject/logger" "^5.4.0" +"@ethersproject/networks@^5.3.0": + version "5.3.1" + resolved "https://registry.yarnpkg.com/@ethersproject/networks/-/networks-5.3.1.tgz#78fe08324cee289ce239acf8c746121934b2ef61" + integrity sha512-6uQKHkYChlsfeiZhQ8IHIqGE/sQsf25o9ZxAYpMxi15dLPzz3IxOEF5KiSD32aHwsjXVBKBSlo+teAXLlYJybw== + dependencies: + "@ethersproject/logger" "^5.3.0" + +"@ethersproject/pbkdf2@5.1.0", "@ethersproject/pbkdf2@^5.1.0": + version "5.1.0" + resolved "https://registry.yarnpkg.com/@ethersproject/pbkdf2/-/pbkdf2-5.1.0.tgz#6b740a85dc780e879338af74856ca2c0d3b24d19" + integrity sha512-B8cUbHHTgs8OtgJIafrRcz/YPDobVd5Ru8gTnShOiM9EBuFpYHQpq3+8iQJ6pyczDu6HP/oc/njAsIBhwFZYew== + dependencies: + "@ethersproject/bytes" "^5.1.0" + "@ethersproject/sha2" "^5.1.0" + "@ethersproject/pbkdf2@5.4.0", "@ethersproject/pbkdf2@^5.4.0": version "5.4.0" resolved "https://registry.yarnpkg.com/@ethersproject/pbkdf2/-/pbkdf2-5.4.0.tgz#ed88782a67fda1594c22d60d0ca911a9d669641c" @@ -904,19 +683,59 @@ "@ethersproject/bytes" "^5.4.0" "@ethersproject/sha2" "^5.4.0" -"@ethersproject/properties@5.4.0", "@ethersproject/properties@^5.0.3", "@ethersproject/properties@^5.4.0": - version "5.4.0" - resolved "https://registry.yarnpkg.com/@ethersproject/properties/-/properties-5.4.0.tgz#38ba20539b44dcc5d5f80c45ad902017dcdbefe7" - integrity sha512-7jczalGVRAJ+XSRvNA6D5sAwT4gavLq3OXPuV/74o3Rd2wuzSL035IMpIMgei4CYyBdialJMrTqkOnzccLHn4A== +"@ethersproject/pbkdf2@^5.3.0": + version "5.3.0" + resolved "https://registry.yarnpkg.com/@ethersproject/pbkdf2/-/pbkdf2-5.3.0.tgz#8adbb41489c3c9f319cc44bc7d3e6095fd468dc8" + integrity sha512-Q9ChVU6gBFiex0FSdtzo4b0SAKz3ZYcYVFLrEWHL0FnHvNk3J3WgAtRNtBQGQYn/T5wkoTdZttMbfBkFlaiWcA== dependencies: - "@ethersproject/logger" "^5.4.0" + "@ethersproject/bytes" "^5.3.0" + "@ethersproject/sha2" "^5.3.0" -"@ethersproject/properties@^5.0.7": - version "5.0.9" - resolved "https://registry.yarnpkg.com/@ethersproject/properties/-/properties-5.0.9.tgz#d7aae634680760136ea522e25c3ef043ec15b5c2" - integrity sha512-ZCjzbHYTw+rF1Pn8FDCEmx3gQttwIHcm/6Xee8g/M3Ga3SfW4tccNMbs5zqnBH0E4RoOPaeNgyg1O68TaF0tlg== +"@ethersproject/properties@5.1.0", "@ethersproject/properties@^5.0.3", "@ethersproject/properties@^5.1.0": + version "5.1.0" + resolved "https://registry.yarnpkg.com/@ethersproject/properties/-/properties-5.1.0.tgz#9484bd6def16595fc6e4bdc26f29dff4d3f6ac42" + integrity sha512-519KKTwgmH42AQL3+GFV3SX6khYEfHsvI6v8HYejlkigSDuqttdgVygFTDsGlofNFchhDwuclrxQnD5B0YLNMg== + dependencies: + "@ethersproject/logger" "^5.1.0" + +"@ethersproject/properties@5.4.0", "@ethersproject/properties@^5.4.0": + version "5.4.0" + resolved "https://registry.yarnpkg.com/@ethersproject/properties/-/properties-5.4.0.tgz#38ba20539b44dcc5d5f80c45ad902017dcdbefe7" + integrity sha512-7jczalGVRAJ+XSRvNA6D5sAwT4gavLq3OXPuV/74o3Rd2wuzSL035IMpIMgei4CYyBdialJMrTqkOnzccLHn4A== + dependencies: + "@ethersproject/logger" "^5.4.0" + +"@ethersproject/properties@^5.3.0": + version "5.3.0" + resolved "https://registry.yarnpkg.com/@ethersproject/properties/-/properties-5.3.0.tgz#feef4c4babeb7c10a6b3449575016f4ad2c092b2" + integrity sha512-PaHxJyM5/bfusk6vr3yP//JMnm4UEojpzuWGTmtL5X4uNhNnFNvlYilZLyDr4I9cTkIbipCMsAuIcXWsmdRnEw== dependencies: - "@ethersproject/logger" "^5.0.8" + "@ethersproject/logger" "^5.3.0" + +"@ethersproject/providers@5.1.2": + version "5.1.2" + resolved "https://registry.yarnpkg.com/@ethersproject/providers/-/providers-5.1.2.tgz#4e4459698903f911402fe91aa7544eb07f3921ed" + integrity sha512-GqsS8rd+eyd4eNkcNgzZ4l9IRULBPUZa7JPnv22k4MHflMobUseyhfbVnmoN5bVNNkOxjV1IPTw9i0sV1hwdpg== + dependencies: + "@ethersproject/abstract-provider" "^5.1.0" + "@ethersproject/abstract-signer" "^5.1.0" + "@ethersproject/address" "^5.1.0" + "@ethersproject/basex" "^5.1.0" + "@ethersproject/bignumber" "^5.1.0" + "@ethersproject/bytes" "^5.1.0" + "@ethersproject/constants" "^5.1.0" + "@ethersproject/hash" "^5.1.0" + "@ethersproject/logger" "^5.1.0" + "@ethersproject/networks" "^5.1.0" + "@ethersproject/properties" "^5.1.0" + "@ethersproject/random" "^5.1.0" + "@ethersproject/rlp" "^5.1.0" + "@ethersproject/sha2" "^5.1.0" + "@ethersproject/strings" "^5.1.0" + "@ethersproject/transactions" "^5.1.0" + "@ethersproject/web" "^5.1.0" + bech32 "1.1.4" + ws "7.2.3" "@ethersproject/providers@5.4.4": version "5.4.4" @@ -943,6 +762,39 @@ bech32 "1.1.4" ws "7.4.6" +"@ethersproject/providers@^5.3.1": + version "5.3.1" + resolved "https://registry.yarnpkg.com/@ethersproject/providers/-/providers-5.3.1.tgz#a12c6370e8cbc0968c9744641b8ef90b0dd5ec2b" + integrity sha512-HC63vENTrur6/JKEhcQbA8PRDj1FAesdpX98IW+xAAo3EAkf70ou5fMIA3KCGzJDLNTeYA4C2Bonz849tVLekg== + dependencies: + "@ethersproject/abstract-provider" "^5.3.0" + "@ethersproject/abstract-signer" "^5.3.0" + "@ethersproject/address" "^5.3.0" + "@ethersproject/basex" "^5.3.0" + "@ethersproject/bignumber" "^5.3.0" + "@ethersproject/bytes" "^5.3.0" + "@ethersproject/constants" "^5.3.0" + "@ethersproject/hash" "^5.3.0" + "@ethersproject/logger" "^5.3.0" + "@ethersproject/networks" "^5.3.0" + "@ethersproject/properties" "^5.3.0" + "@ethersproject/random" "^5.3.0" + "@ethersproject/rlp" "^5.3.0" + "@ethersproject/sha2" "^5.3.0" + "@ethersproject/strings" "^5.3.0" + "@ethersproject/transactions" "^5.3.0" + "@ethersproject/web" "^5.3.0" + bech32 "1.1.4" + ws "7.4.6" + +"@ethersproject/random@5.1.0", "@ethersproject/random@^5.1.0": + version "5.1.0" + resolved "https://registry.yarnpkg.com/@ethersproject/random/-/random-5.1.0.tgz#0bdff2554df03ebc5f75689614f2d58ea0d9a71f" + integrity sha512-+uuczLQZ4+no9cP6TCoCktXx0u2YbNaRT7lRkSt12d8263e702f0u+4JnnRO8Qmv5nylWJebnqCHzyxP+6mLqw== + dependencies: + "@ethersproject/bytes" "^5.1.0" + "@ethersproject/logger" "^5.1.0" + "@ethersproject/random@5.4.0", "@ethersproject/random@^5.4.0": version "5.4.0" resolved "https://registry.yarnpkg.com/@ethersproject/random/-/random-5.4.0.tgz#9cdde60e160d024be39cc16f8de3b9ce39191e16" @@ -951,6 +803,22 @@ "@ethersproject/bytes" "^5.4.0" "@ethersproject/logger" "^5.4.0" +"@ethersproject/random@^5.3.0": + version "5.3.0" + resolved "https://registry.yarnpkg.com/@ethersproject/random/-/random-5.3.0.tgz#7c46bf36e50cb0d0550bc8c666af8e1d4496dc1a" + integrity sha512-A5SL/4inutSwt3Fh2OD0x2gz+x6GHmuUnIPkR7zAiTidMD2N8F6tZdMF1hlQKWVCcVMWhEQg8mWijhEzm6BBYw== + dependencies: + "@ethersproject/bytes" "^5.3.0" + "@ethersproject/logger" "^5.3.0" + +"@ethersproject/rlp@5.1.0", "@ethersproject/rlp@^5.1.0": + version "5.1.0" + resolved "https://registry.yarnpkg.com/@ethersproject/rlp/-/rlp-5.1.0.tgz#700f4f071c27fa298d3c1d637485fefe919dd084" + integrity sha512-vDTyHIwNPrecy55gKGZ47eJZhBm8LLBxihzi5ou+zrSvYTpkSTWRcKUlXFDFQVwfWB+P5PGyERAdiDEI76clxw== + dependencies: + "@ethersproject/bytes" "^5.1.0" + "@ethersproject/logger" "^5.1.0" + "@ethersproject/rlp@5.4.0", "@ethersproject/rlp@^5.4.0": version "5.4.0" resolved "https://registry.yarnpkg.com/@ethersproject/rlp/-/rlp-5.4.0.tgz#de61afda5ff979454e76d3b3310a6c32ad060931" @@ -959,13 +827,22 @@ "@ethersproject/bytes" "^5.4.0" "@ethersproject/logger" "^5.4.0" -"@ethersproject/rlp@^5.0.7": - version "5.0.9" - resolved "https://registry.yarnpkg.com/@ethersproject/rlp/-/rlp-5.0.9.tgz#da205bf8a34d3c3409eb73ddd237130a4b376aff" - integrity sha512-ns1U7ZMVeruUW6JXc4om+1w3w4ynHN/0fpwmeNTsAjwGKoF8SAUgue6ylKpHKWSti2idx7jDxbn8hNNFHk67CA== +"@ethersproject/rlp@^5.3.0": + version "5.3.0" + resolved "https://registry.yarnpkg.com/@ethersproject/rlp/-/rlp-5.3.0.tgz#7cb93a7b5dfa69163894153c9d4b0d936f333188" + integrity sha512-oI0joYpsRanl9guDubaW+1NbcpK0vJ3F/6Wpcanzcnqq+oaW9O5E98liwkEDPcb16BUTLIJ+ZF8GPIHYxJ/5Pw== + dependencies: + "@ethersproject/bytes" "^5.3.0" + "@ethersproject/logger" "^5.3.0" + +"@ethersproject/sha2@5.1.0", "@ethersproject/sha2@^5.1.0": + version "5.1.0" + resolved "https://registry.yarnpkg.com/@ethersproject/sha2/-/sha2-5.1.0.tgz#6ca42d1a26884b3e32ffa943fe6494af7211506c" + integrity sha512-+fNSeZRstOpdRJpdGUkRONFCaiAqWkc91zXgg76Nlp5ndBQE25Kk5yK8gCPG1aGnCrbariiPr5j9DmrYH78JCA== dependencies: - "@ethersproject/bytes" "^5.0.9" - "@ethersproject/logger" "^5.0.8" + "@ethersproject/bytes" "^5.1.0" + "@ethersproject/logger" "^5.1.0" + hash.js "1.1.3" "@ethersproject/sha2@5.4.0", "@ethersproject/sha2@^5.4.0": version "5.4.0" @@ -976,6 +853,26 @@ "@ethersproject/logger" "^5.4.0" hash.js "1.1.7" +"@ethersproject/sha2@^5.3.0": + version "5.3.0" + resolved "https://registry.yarnpkg.com/@ethersproject/sha2/-/sha2-5.3.0.tgz#209f9a1649f7d2452dcd5e5b94af43b7f3f42366" + integrity sha512-r5ftlwKcocYEuFz2JbeKOT5SAsCV4m1RJDsTOEfQ5L67ZC7NFDK5i7maPdn1bx4nPhylF9VAwxSrQ1esmwzylg== + dependencies: + "@ethersproject/bytes" "^5.3.0" + "@ethersproject/logger" "^5.3.0" + hash.js "1.1.7" + +"@ethersproject/signing-key@5.1.0", "@ethersproject/signing-key@^5.1.0": + version "5.1.0" + resolved "https://registry.yarnpkg.com/@ethersproject/signing-key/-/signing-key-5.1.0.tgz#6eddfbddb6826b597b9650e01acf817bf8991b9c" + integrity sha512-tE5LFlbmdObG8bY04NpuwPWSRPgEswfxweAI1sH7TbP0ml1elNfqcq7ii/3AvIN05i5U0Pkm3Tf8bramt8MmLw== + dependencies: + "@ethersproject/bytes" "^5.1.0" + "@ethersproject/logger" "^5.1.0" + "@ethersproject/properties" "^5.1.0" + bn.js "^4.4.0" + elliptic "6.5.4" + "@ethersproject/signing-key@5.4.0", "@ethersproject/signing-key@^5.4.0": version "5.4.0" resolved "https://registry.yarnpkg.com/@ethersproject/signing-key/-/signing-key-5.4.0.tgz#2f05120984e81cf89a3d5f6dec5c68ee0894fbec" @@ -988,15 +885,28 @@ elliptic "6.5.4" hash.js "1.1.7" -"@ethersproject/signing-key@^5.0.8": - version "5.0.11" - resolved "https://registry.yarnpkg.com/@ethersproject/signing-key/-/signing-key-5.0.11.tgz#19fc5c4597e18ad0a5efc6417ba5b74069fdd2af" - integrity sha512-Jfcru/BGwdkXhLxT+8WCZtFy7LL0TPFZw05FAb5asxB/MyVsEfNdNxGDtjVE9zXfmRSPe/EusXYY4K7wcygOyQ== +"@ethersproject/signing-key@^5.3.0": + version "5.3.0" + resolved "https://registry.yarnpkg.com/@ethersproject/signing-key/-/signing-key-5.3.0.tgz#a96c88f8173e1abedfa35de32d3e5db7c48e5259" + integrity sha512-+DX/GwHAd0ok1bgedV1cKO0zfK7P/9aEyNoaYiRsGHpCecN7mhLqcdoUiUzE7Uz86LBsxm5ssK0qA1kBB47fbQ== dependencies: - "@ethersproject/bytes" "^5.0.9" - "@ethersproject/logger" "^5.0.8" - "@ethersproject/properties" "^5.0.7" + "@ethersproject/bytes" "^5.3.0" + "@ethersproject/logger" "^5.3.0" + "@ethersproject/properties" "^5.3.0" + bn.js "^4.11.9" elliptic "6.5.4" + hash.js "1.1.7" + +"@ethersproject/solidity@5.1.0": + version "5.1.0" + resolved "https://registry.yarnpkg.com/@ethersproject/solidity/-/solidity-5.1.0.tgz#095a9c75244edccb26c452c155736d363399b954" + integrity sha512-kPodsGyo9zg1g9XSXp1lGhFaezBAUUsAUB1Vf6OkppE5Wksg4Et+x3kG4m7J/uShDMP2upkJtHNsIBK2XkVpKQ== + dependencies: + "@ethersproject/bignumber" "^5.1.0" + "@ethersproject/bytes" "^5.1.0" + "@ethersproject/keccak256" "^5.1.0" + "@ethersproject/sha2" "^5.1.0" + "@ethersproject/strings" "^5.1.0" "@ethersproject/solidity@5.4.0": version "5.4.0" @@ -1009,7 +919,27 @@ "@ethersproject/sha2" "^5.4.0" "@ethersproject/strings" "^5.4.0" -"@ethersproject/strings@5.4.0", "@ethersproject/strings@^5.0.4", "@ethersproject/strings@^5.4.0": +"@ethersproject/solidity@^5.3.0": + version "5.3.0" + resolved "https://registry.yarnpkg.com/@ethersproject/solidity/-/solidity-5.3.0.tgz#2a0b00b4aaaef99a080ddea13acab1fa35cd4a93" + integrity sha512-uLRBaNUiISHbut94XKewJgQh6UmydWTBp71I7I21pkjVXfZO2dJ5EOo3jCnumJc01M4LOm79dlNNmF3oGIvweQ== + dependencies: + "@ethersproject/bignumber" "^5.3.0" + "@ethersproject/bytes" "^5.3.0" + "@ethersproject/keccak256" "^5.3.0" + "@ethersproject/sha2" "^5.3.0" + "@ethersproject/strings" "^5.3.0" + +"@ethersproject/strings@5.1.0", "@ethersproject/strings@^5.0.4", "@ethersproject/strings@^5.1.0": + version "5.1.0" + resolved "https://registry.yarnpkg.com/@ethersproject/strings/-/strings-5.1.0.tgz#0f95a56c3c8c9d5510a06c241d818779750e2da5" + integrity sha512-perBZy0RrmmL0ejiFGUOlBVjMsUceqLut3OBP3zP96LhiJWWbS8u1NqQVgN4/Gyrbziuda66DxiQocXhsvx+Sw== + dependencies: + "@ethersproject/bytes" "^5.1.0" + "@ethersproject/constants" "^5.1.0" + "@ethersproject/logger" "^5.1.0" + +"@ethersproject/strings@5.4.0", "@ethersproject/strings@^5.4.0": version "5.4.0" resolved "https://registry.yarnpkg.com/@ethersproject/strings/-/strings-5.4.0.tgz#fb12270132dd84b02906a8d895ae7e7fa3d07d9a" integrity sha512-k/9DkH5UGDhv7aReXLluFG5ExurwtIpUfnDNhQA29w896Dw3i4uDTz01Quaptbks1Uj9kI8wo9tmW73wcIEaWA== @@ -1018,6 +948,30 @@ "@ethersproject/constants" "^5.4.0" "@ethersproject/logger" "^5.4.0" +"@ethersproject/strings@^5.3.0": + version "5.3.0" + resolved "https://registry.yarnpkg.com/@ethersproject/strings/-/strings-5.3.0.tgz#a6b640aab56a18e0909f657da798eef890968ff0" + integrity sha512-j/AzIGZ503cvhuF2ldRSjB0BrKzpsBMtCieDtn4TYMMZMQ9zScJn9wLzTQl/bRNvJbBE6TOspK0r8/Ngae/f2Q== + dependencies: + "@ethersproject/bytes" "^5.3.0" + "@ethersproject/constants" "^5.3.0" + "@ethersproject/logger" "^5.3.0" + +"@ethersproject/transactions@5.1.1", "@ethersproject/transactions@^5.0.0-beta.135", "@ethersproject/transactions@^5.1.0": + version "5.1.1" + resolved "https://registry.yarnpkg.com/@ethersproject/transactions/-/transactions-5.1.1.tgz#5a6bbb25fb062c3cc75eb0db12faefcdd3870813" + integrity sha512-Nwgbp09ttIVN0OoUBatCXaHxR7grWPHbozJN8v7AXDLrl6nnOIBEMDh+yJTnosSQlFhcyjfTGGN+Mx6R8HdvMw== + dependencies: + "@ethersproject/address" "^5.1.0" + "@ethersproject/bignumber" "^5.1.0" + "@ethersproject/bytes" "^5.1.0" + "@ethersproject/constants" "^5.1.0" + "@ethersproject/keccak256" "^5.1.0" + "@ethersproject/logger" "^5.1.0" + "@ethersproject/properties" "^5.1.0" + "@ethersproject/rlp" "^5.1.0" + "@ethersproject/signing-key" "^5.1.0" + "@ethersproject/transactions@5.4.0", "@ethersproject/transactions@^5.4.0": version "5.4.0" resolved "https://registry.yarnpkg.com/@ethersproject/transactions/-/transactions-5.4.0.tgz#a159d035179334bd92f340ce0f77e83e9e1522e0" @@ -1033,20 +987,29 @@ "@ethersproject/rlp" "^5.4.0" "@ethersproject/signing-key" "^5.4.0" -"@ethersproject/transactions@^5.0.0-beta.135": - version "5.0.11" - resolved "https://registry.yarnpkg.com/@ethersproject/transactions/-/transactions-5.0.11.tgz#b31df5292f47937136a45885d6ee6112477c13df" - integrity sha512-ftsRvR9+gQp7L63F6+XmstvsZ4w8GtWvQB08e/zB+oB86Fnhq8+i/tkgpJplSHC8I/qgiCisva+M3u2GVhDFPA== - dependencies: - "@ethersproject/address" "^5.0.9" - "@ethersproject/bignumber" "^5.0.13" - "@ethersproject/bytes" "^5.0.9" - "@ethersproject/constants" "^5.0.8" - "@ethersproject/keccak256" "^5.0.7" - "@ethersproject/logger" "^5.0.8" - "@ethersproject/properties" "^5.0.7" - "@ethersproject/rlp" "^5.0.7" - "@ethersproject/signing-key" "^5.0.8" +"@ethersproject/transactions@^5.3.0": + version "5.3.0" + resolved "https://registry.yarnpkg.com/@ethersproject/transactions/-/transactions-5.3.0.tgz#49b86f2bafa4d0bdf8e596578fc795ee47c50458" + integrity sha512-cdfK8VVyW2oEBCXhURG0WQ6AICL/r6Gmjh0e4Bvbv6MCn/GBd8FeBH3rtl7ho+AW50csMKeGv3m3K1HSHB2jMQ== + dependencies: + "@ethersproject/address" "^5.3.0" + "@ethersproject/bignumber" "^5.3.0" + "@ethersproject/bytes" "^5.3.0" + "@ethersproject/constants" "^5.3.0" + "@ethersproject/keccak256" "^5.3.0" + "@ethersproject/logger" "^5.3.0" + "@ethersproject/properties" "^5.3.0" + "@ethersproject/rlp" "^5.3.0" + "@ethersproject/signing-key" "^5.3.0" + +"@ethersproject/units@5.1.0": + version "5.1.0" + resolved "https://registry.yarnpkg.com/@ethersproject/units/-/units-5.1.0.tgz#b6ab3430ebc22adc3cb4839516496f167bee3ad5" + integrity sha512-isvJrx6qG0nKWfxsGORNjmOq/nh175fStfvRTA2xEKrGqx8JNJY83fswu4GkILowfriEM/eYpretfJnfzi7YhA== + dependencies: + "@ethersproject/bignumber" "^5.1.0" + "@ethersproject/constants" "^5.1.0" + "@ethersproject/logger" "^5.1.0" "@ethersproject/units@5.4.0": version "5.4.0" @@ -1057,6 +1020,27 @@ "@ethersproject/constants" "^5.4.0" "@ethersproject/logger" "^5.4.0" +"@ethersproject/wallet@5.1.0": + version "5.1.0" + resolved "https://registry.yarnpkg.com/@ethersproject/wallet/-/wallet-5.1.0.tgz#134c5816eaeaa586beae9f9ff67891104a2c9a15" + integrity sha512-ULmUtiYQLTUS+y3DgkLzRhFEK10zMwmjOthnjiZxee3Q/MVwr3rnmuAnXIUZrPjna6hvUPnyRIdW5XuF0Ld0YQ== + dependencies: + "@ethersproject/abstract-provider" "^5.1.0" + "@ethersproject/abstract-signer" "^5.1.0" + "@ethersproject/address" "^5.1.0" + "@ethersproject/bignumber" "^5.1.0" + "@ethersproject/bytes" "^5.1.0" + "@ethersproject/hash" "^5.1.0" + "@ethersproject/hdnode" "^5.1.0" + "@ethersproject/json-wallets" "^5.1.0" + "@ethersproject/keccak256" "^5.1.0" + "@ethersproject/logger" "^5.1.0" + "@ethersproject/properties" "^5.1.0" + "@ethersproject/random" "^5.1.0" + "@ethersproject/signing-key" "^5.1.0" + "@ethersproject/transactions" "^5.1.0" + "@ethersproject/wordlists" "^5.1.0" + "@ethersproject/wallet@5.4.0": version "5.4.0" resolved "https://registry.yarnpkg.com/@ethersproject/wallet/-/wallet-5.4.0.tgz#fa5b59830b42e9be56eadd45a16a2e0933ad9353" @@ -1078,6 +1062,38 @@ "@ethersproject/transactions" "^5.4.0" "@ethersproject/wordlists" "^5.4.0" +"@ethersproject/wallet@^5.3.0": + version "5.3.0" + resolved "https://registry.yarnpkg.com/@ethersproject/wallet/-/wallet-5.3.0.tgz#91946b470bd279e39ade58866f21f92749d062af" + integrity sha512-boYBLydG6671p9QoG6EinNnNzbm7DNOjVT20eV8J6HQEq4aUaGiA2CytF2vK+2rOEWbzhZqoNDt6AlkE1LlsTg== + dependencies: + "@ethersproject/abstract-provider" "^5.3.0" + "@ethersproject/abstract-signer" "^5.3.0" + "@ethersproject/address" "^5.3.0" + "@ethersproject/bignumber" "^5.3.0" + "@ethersproject/bytes" "^5.3.0" + "@ethersproject/hash" "^5.3.0" + "@ethersproject/hdnode" "^5.3.0" + "@ethersproject/json-wallets" "^5.3.0" + "@ethersproject/keccak256" "^5.3.0" + "@ethersproject/logger" "^5.3.0" + "@ethersproject/properties" "^5.3.0" + "@ethersproject/random" "^5.3.0" + "@ethersproject/signing-key" "^5.3.0" + "@ethersproject/transactions" "^5.3.0" + "@ethersproject/wordlists" "^5.3.0" + +"@ethersproject/web@5.1.0", "@ethersproject/web@^5.1.0": + version "5.1.0" + resolved "https://registry.yarnpkg.com/@ethersproject/web/-/web-5.1.0.tgz#ed56bbe4e3d9a8ffe3b2ed882da5c62d3551381b" + integrity sha512-LTeluWgTq04+RNqAkVhpydPcRZK/kKxD2Vy7PYGrAD27ABO9kTqTBKwiOuzTyAHKUQHfnvZbXmxBXJAGViSDcA== + dependencies: + "@ethersproject/base64" "^5.1.0" + "@ethersproject/bytes" "^5.1.0" + "@ethersproject/logger" "^5.1.0" + "@ethersproject/properties" "^5.1.0" + "@ethersproject/strings" "^5.1.0" + "@ethersproject/web@5.4.0", "@ethersproject/web@^5.4.0": version "5.4.0" resolved "https://registry.yarnpkg.com/@ethersproject/web/-/web-5.4.0.tgz#49fac173b96992334ed36a175538ba07a7413d1f" @@ -1089,6 +1105,28 @@ "@ethersproject/properties" "^5.4.0" "@ethersproject/strings" "^5.4.0" +"@ethersproject/web@^5.3.0": + version "5.3.0" + resolved "https://registry.yarnpkg.com/@ethersproject/web/-/web-5.3.0.tgz#7959c403f6476c61515008d8f92da51c553a8ee1" + integrity sha512-Ni6/DHnY6k/TD41LEkv0RQDx4jqWz5e/RZvrSecsxGYycF+MFy2z++T/yGc2peRunLOTIFwEksgEGGlbwfYmhQ== + dependencies: + "@ethersproject/base64" "^5.3.0" + "@ethersproject/bytes" "^5.3.0" + "@ethersproject/logger" "^5.3.0" + "@ethersproject/properties" "^5.3.0" + "@ethersproject/strings" "^5.3.0" + +"@ethersproject/wordlists@5.1.0", "@ethersproject/wordlists@^5.1.0": + version "5.1.0" + resolved "https://registry.yarnpkg.com/@ethersproject/wordlists/-/wordlists-5.1.0.tgz#54eb9ef3a00babbff90ffe124e19c89e07e6aace" + integrity sha512-NsUCi/TpBb+oTFvMSccUkJGtp5o/84eOyqp5q5aBeiNBSLkYyw21znRn9mAmxZgySpxgruVgKbaapnYPgvctPQ== + dependencies: + "@ethersproject/bytes" "^5.1.0" + "@ethersproject/hash" "^5.1.0" + "@ethersproject/logger" "^5.1.0" + "@ethersproject/properties" "^5.1.0" + "@ethersproject/strings" "^5.1.0" + "@ethersproject/wordlists@5.4.0", "@ethersproject/wordlists@^5.4.0": version "5.4.0" resolved "https://registry.yarnpkg.com/@ethersproject/wordlists/-/wordlists-5.4.0.tgz#f34205ec3bbc9e2c49cadaee774cf0b07e7573d7" @@ -1100,569 +1138,145 @@ "@ethersproject/properties" "^5.4.0" "@ethersproject/strings" "^5.4.0" -"@graphql-tools/batch-delegate@^6.2.4", "@graphql-tools/batch-delegate@^6.2.6": - version "6.2.6" - resolved "https://registry.yarnpkg.com/@graphql-tools/batch-delegate/-/batch-delegate-6.2.6.tgz#fbea98dc825f87ef29ea5f3f371912c2a2aa2f2c" - integrity sha512-QUoE9pQtkdNPFdJHSnBhZtUfr3M7pIRoXoMR+TG7DK2Y62ISKbT/bKtZEUU1/2v5uqd5WVIvw9dF8gHDSJAsSA== - dependencies: - "@graphql-tools/delegate" "^6.2.4" - dataloader "2.0.0" - tslib "~2.0.1" - -"@graphql-tools/batch-execute@^7.0.0": - version "7.0.0" - resolved "https://registry.yarnpkg.com/@graphql-tools/batch-execute/-/batch-execute-7.0.0.tgz#e79d11bd5b39f29172f6ec2eafa71103c6a6c85b" - integrity sha512-+ywPfK6N2Ddna6oOa5Qb1Mv7EA8LOwRNOAPP9dL37FEhksJM9pYqPSceUcqMqg7S9b0+Cgr78s408rgvurV3/Q== - dependencies: - "@graphql-tools/utils" "^7.0.0" - dataloader "2.0.0" - is-promise "4.0.0" - tslib "~2.0.1" - -"@graphql-tools/code-file-loader@^6.2.4": - version "6.3.1" - resolved "https://registry.yarnpkg.com/@graphql-tools/code-file-loader/-/code-file-loader-6.3.1.tgz#42dfd4db5b968acdb453382f172ec684fa0c34ed" - integrity sha512-ZJimcm2ig+avgsEOWWVvAaxZrXXhiiSZyYYOJi0hk9wh5BxZcLUNKkTp6EFnZE/jmGUwuos3pIjUD3Hwi3Bwhg== - dependencies: - "@graphql-tools/graphql-tag-pluck" "^6.5.1" - "@graphql-tools/utils" "^7.0.0" - tslib "~2.1.0" - -"@graphql-tools/delegate@^6.2.4": - version "6.2.4" - resolved "https://registry.yarnpkg.com/@graphql-tools/delegate/-/delegate-6.2.4.tgz#db553b63eb9512d5eb5bbfdfcd8cb1e2b534699c" - integrity sha512-mXe6DfoWmq49kPcDrpKHgC2DSWcD5q0YCaHHoXYPAOlnLH8VMTY8BxcE8y/Do2eyg+GLcwAcrpffVszWMwqw0w== - dependencies: - "@ardatan/aggregate-error" "0.0.6" - "@graphql-tools/schema" "^6.2.4" - "@graphql-tools/utils" "^6.2.4" - dataloader "2.0.0" - is-promise "4.0.0" - tslib "~2.0.1" - -"@graphql-tools/delegate@^7.0.1", "@graphql-tools/delegate@^7.0.7": - version "7.0.10" - resolved "https://registry.yarnpkg.com/@graphql-tools/delegate/-/delegate-7.0.10.tgz#f87ac85a2dbd03b5b3aabf347f4479fabe8ceac3" - integrity sha512-6Di9ia5ohoDvrHuhj2cak1nJGhIefJmUsd3WKZcJ2nu2yZAFawWMxGvQImqv3N7iyaWKiVhrrK8Roi/JrYhdKg== - dependencies: - "@ardatan/aggregate-error" "0.0.6" - "@graphql-tools/batch-execute" "^7.0.0" - "@graphql-tools/schema" "^7.0.0" - "@graphql-tools/utils" "^7.1.6" - dataloader "2.0.0" - is-promise "4.0.0" - tslib "~2.1.0" - -"@graphql-tools/git-loader@^6.2.4": - version "6.2.6" - resolved "https://registry.yarnpkg.com/@graphql-tools/git-loader/-/git-loader-6.2.6.tgz#c2226f4b8f51f1c05c9ab2649ba32d49c68cd077" - integrity sha512-ooQTt2CaG47vEYPP3CPD+nbA0F+FYQXfzrB1Y1ABN9K3d3O2RK3g8qwslzZaI8VJQthvKwt0A95ZeE4XxteYfw== - dependencies: - "@graphql-tools/graphql-tag-pluck" "^6.2.6" - "@graphql-tools/utils" "^7.0.0" - tslib "~2.1.0" - -"@graphql-tools/github-loader@^6.2.4": - version "6.2.5" - resolved "https://registry.yarnpkg.com/@graphql-tools/github-loader/-/github-loader-6.2.5.tgz#460dff6f5bbaa26957a5ea3be4f452b89cc6a44b" - integrity sha512-DLuQmYeNNdPo8oWus8EePxWCfCAyUXPZ/p1PWqjrX/NGPyH2ZObdqtDAfRHztljt0F/qkBHbGHCEk2TKbRZTRw== - dependencies: - "@graphql-tools/graphql-tag-pluck" "^6.2.6" - "@graphql-tools/utils" "^7.0.0" - cross-fetch "3.0.6" - tslib "~2.0.1" - -"@graphql-tools/graphql-file-loader@^6.2.4": - version "6.2.7" - resolved "https://registry.yarnpkg.com/@graphql-tools/graphql-file-loader/-/graphql-file-loader-6.2.7.tgz#d3720f2c4f4bb90eb2a03a7869a780c61945e143" - integrity sha512-5k2SNz0W87tDcymhEMZMkd6/vs6QawDyjQXWtqkuLTBF3vxjxPD1I4dwHoxgWPIjjANhXybvulD7E+St/7s9TQ== - dependencies: - "@graphql-tools/import" "^6.2.6" - "@graphql-tools/utils" "^7.0.0" - tslib "~2.1.0" - -"@graphql-tools/graphql-tag-pluck@^6.2.4", "@graphql-tools/graphql-tag-pluck@^6.2.6", "@graphql-tools/graphql-tag-pluck@^6.5.1": - version "6.5.1" - resolved "https://registry.yarnpkg.com/@graphql-tools/graphql-tag-pluck/-/graphql-tag-pluck-6.5.1.tgz#5fb227dbb1e19f4b037792b50f646f16a2d4c686" - integrity sha512-7qkm82iFmcpb8M6/yRgzjShtW6Qu2OlCSZp8uatA3J0eMl87TxyJoUmL3M3UMMOSundAK8GmoyNVFUrueueV5Q== - dependencies: - "@babel/parser" "7.12.16" - "@babel/traverse" "7.12.13" - "@babel/types" "7.12.13" - "@graphql-tools/utils" "^7.0.0" - tslib "~2.1.0" - -"@graphql-tools/import@^6.2.4", "@graphql-tools/import@^6.2.6": - version "6.3.0" - resolved "https://registry.yarnpkg.com/@graphql-tools/import/-/import-6.3.0.tgz#171472b425ea7cba4a612ad524b96bd206ae71b6" - integrity sha512-zmaVhJ3UPjzJSb005Pjn2iWvH+9AYRXI4IUiTi14uPupiXppJP3s7S25Si3+DbHpFwurDF2nWRxBLiFPWudCqw== - dependencies: - resolve-from "5.0.0" - tslib "~2.1.0" - -"@graphql-tools/json-file-loader@^6.2.4": - version "6.2.6" - resolved "https://registry.yarnpkg.com/@graphql-tools/json-file-loader/-/json-file-loader-6.2.6.tgz#830482cfd3721a0799cbf2fe5b09959d9332739a" - integrity sha512-CnfwBSY5926zyb6fkDBHnlTblHnHI4hoBALFYXnrg0Ev4yWU8B04DZl/pBRUc459VNgO2x8/mxGIZj2hPJG1EA== - dependencies: - "@graphql-tools/utils" "^7.0.0" - tslib "~2.0.1" - -"@graphql-tools/links@^6.2.4": - version "6.2.5" - resolved "https://registry.yarnpkg.com/@graphql-tools/links/-/links-6.2.5.tgz#b172cadc4b7cbe27bfc1dc787651f92517f583bc" - integrity sha512-XeGDioW7F+HK6HHD/zCeF0HRC9s12NfOXAKv1HC0J7D50F4qqMvhdS/OkjzLoBqsgh/Gm8icRc36B5s0rOA9ig== - dependencies: - "@graphql-tools/utils" "^7.0.0" - apollo-link "1.2.14" - apollo-upload-client "14.1.2" - cross-fetch "3.0.6" - form-data "3.0.0" - is-promise "4.0.0" - tslib "~2.0.1" - -"@graphql-tools/load-files@^6.2.4": - version "6.3.1" - resolved "https://registry.yarnpkg.com/@graphql-tools/load-files/-/load-files-6.3.1.tgz#7d7726fcb53924ad0cfbdf3f86e7c376abf70c8e" - integrity sha512-y/qGcuKWW3mSPbIHEN5csM9xM0ow479NqtEOPeC1i9wqLml82ubaPS8BzXMhB8DJa5XmrGzIZvrt03CBkQ4aJA== - dependencies: - globby "11.0.2" - tslib "~2.1.0" - unixify "1.0.0" - -"@graphql-tools/load@^6.2.4": - version "6.2.7" - resolved "https://registry.yarnpkg.com/@graphql-tools/load/-/load-6.2.7.tgz#61f7909d37fb1c095e3e8d4f7a6d3b8bb011e26a" - integrity sha512-b1qWjki1y/QvGtoqW3x8bcwget7xmMfLGsvGFWOB6m38tDbzVT3GlJViAC0nGPDks9OCoJzAdi5IYEkBaqH5GQ== - dependencies: - "@graphql-tools/merge" "^6.2.9" - "@graphql-tools/utils" "^7.5.0" - globby "11.0.2" - import-from "3.0.0" - is-glob "4.0.1" - p-limit "3.1.0" - tslib "~2.1.0" - unixify "1.0.0" - valid-url "1.0.9" - -"@graphql-tools/merge@^6.2.4", "@graphql-tools/merge@^6.2.9": - version "6.2.10" - resolved "https://registry.yarnpkg.com/@graphql-tools/merge/-/merge-6.2.10.tgz#cadb37b1bed786cba1b3c6f728c5476a164e153d" - integrity sha512-dM3n37PcslvhOAkCz7Cwk0BfoiSVKXGmCX+VMZkATbXk/0vlxUfNEpVfA5yF4IkP27F04SzFQSaNrbD0W2Rszw== - dependencies: - "@graphql-tools/schema" "^7.0.0" - "@graphql-tools/utils" "^7.5.0" - tslib "~2.1.0" - -"@graphql-tools/mock@^6.2.4": - version "6.2.4" - resolved "https://registry.yarnpkg.com/@graphql-tools/mock/-/mock-6.2.4.tgz#205323c51f89dd855d345d130c7713d0420909ea" - integrity sha512-O5Zvq/mcDZ7Ptky0IZ4EK9USmxV6FEVYq0Jxv2TI80kvxbCjt0tbEpZ+r1vIt1gZOXlAvadSHYyzWnUPh+1vkQ== - dependencies: - "@graphql-tools/schema" "^6.2.4" - "@graphql-tools/utils" "^6.2.4" - tslib "~2.0.1" - -"@graphql-tools/module-loader@^6.2.4": - version "6.2.7" - resolved "https://registry.yarnpkg.com/@graphql-tools/module-loader/-/module-loader-6.2.7.tgz#66ab9468775fac8079ca46ea9896ceea76e4ef69" - integrity sha512-ItAAbHvwfznY9h1H9FwHYDstTcm22Dr5R9GZtrWlpwqj0jaJGcBxsMB9jnK9kFqkbtFYEe4E/NsSnxsS4/vViQ== - dependencies: - "@graphql-tools/utils" "^7.5.0" - tslib "~2.1.0" - -"@graphql-tools/relay-operation-optimizer@^6.2.4": - version "6.3.0" - resolved "https://registry.yarnpkg.com/@graphql-tools/relay-operation-optimizer/-/relay-operation-optimizer-6.3.0.tgz#f8c7f6c8aa4a9cf50ab151fbc5db4f4282a79532" - integrity sha512-Or3UgRvkY9Fq1AAx7q38oPqFmTepLz7kp6wDHKyR0ceG7AvHv5En22R12mAeISInbhff4Rpwgf6cE8zHRu6bCw== - dependencies: - "@graphql-tools/utils" "^7.1.0" - relay-compiler "10.1.0" - tslib "~2.0.1" - -"@graphql-tools/resolvers-composition@^6.2.4": - version "6.2.6" - resolved "https://registry.yarnpkg.com/@graphql-tools/resolvers-composition/-/resolvers-composition-6.2.6.tgz#b369cdf2772a41a7544bf3f16a794501da34c394" - integrity sha512-QO0PC5RG0SolOksupOuB4B0tuzEsQFwQrwD9xLHCrJmjaLi66lOKMFzN40IBY5rqg0k/zqPyjII8rtzcNobvIg== - dependencies: - "@graphql-tools/utils" "^7.0.0" - lodash "4.17.21" - tslib "~2.1.0" - -"@graphql-tools/schema@^6.2.4": - version "6.2.4" - resolved "https://registry.yarnpkg.com/@graphql-tools/schema/-/schema-6.2.4.tgz#cc4e9f5cab0f4ec48500e666719d99fc5042481d" - integrity sha512-rh+14lSY1q8IPbEv2J9x8UBFJ5NrDX9W5asXEUlPp+7vraLp/Tiox4GXdgyA92JhwpYco3nTf5Bo2JDMt1KnAQ== - dependencies: - "@graphql-tools/utils" "^6.2.4" - tslib "~2.0.1" - -"@graphql-tools/schema@^7.0.0", "@graphql-tools/schema@^7.1.2": - version "7.1.3" - resolved "https://registry.yarnpkg.com/@graphql-tools/schema/-/schema-7.1.3.tgz#d816400da51fbac1f0086e35540ab63b5e30e858" - integrity sha512-ZY76hmcJlF1iyg3Im0sQ3ASRkiShjgv102vLTVcH22lEGJeCaCyyS/GF1eUHom418S60bS8Th6+autRUxfBiBg== - dependencies: - "@graphql-tools/utils" "^7.1.2" - tslib "~2.1.0" - -"@graphql-tools/stitch@^6.2.4": - version "6.2.4" - resolved "https://registry.yarnpkg.com/@graphql-tools/stitch/-/stitch-6.2.4.tgz#acfa6a577a33c0f02e4940ffff04753b23b87fd6" - integrity sha512-0C7PNkS7v7iAc001m7c1LPm5FUB0/DYw+s3OyCii6YYYHY8NwdI0roeOyeDGFJkFubWBQfjc3hoSyueKtU73mw== - dependencies: - "@graphql-tools/batch-delegate" "^6.2.4" - "@graphql-tools/delegate" "^6.2.4" - "@graphql-tools/merge" "^6.2.4" - "@graphql-tools/schema" "^6.2.4" - "@graphql-tools/utils" "^6.2.4" - "@graphql-tools/wrap" "^6.2.4" - is-promise "4.0.0" - tslib "~2.0.1" - -"@graphql-tools/url-loader@^6.2.4": - version "6.8.1" - resolved "https://registry.yarnpkg.com/@graphql-tools/url-loader/-/url-loader-6.8.1.tgz#cbfbe20f1a1bdeb9a4704e37b8286026d228920b" - integrity sha512-iE/y9IAu0cZYL7o9IIDdGm5WjxacN25nGgVqjZINYlisW/wyuBxng7DMJBAp6yM6gkxkCpMno1ljA/52MXzVPQ== - dependencies: - "@graphql-tools/delegate" "^7.0.1" - "@graphql-tools/utils" "^7.1.5" - "@graphql-tools/wrap" "^7.0.4" - "@types/websocket" "1.0.1" - cross-fetch "3.0.6" - eventsource "1.0.7" - extract-files "9.0.0" - form-data "4.0.0" - graphql-upload "^11.0.0" - graphql-ws "4.1.5" - is-promise "4.0.0" - isomorphic-ws "4.0.1" - sse-z "0.3.0" - sync-fetch "0.3.0" - tslib "~2.1.0" - valid-url "1.0.9" - ws "7.4.3" - -"@graphql-tools/utils@^6.2.4": - version "6.2.4" - resolved "https://registry.yarnpkg.com/@graphql-tools/utils/-/utils-6.2.4.tgz#38a2314d2e5e229ad4f78cca44e1199e18d55856" - integrity sha512-ybgZ9EIJE3JMOtTrTd2VcIpTXtDrn2q6eiYkeYMKRVh3K41+LZa6YnR2zKERTXqTWqhobROwLt4BZbw2O3Aeeg== - dependencies: - "@ardatan/aggregate-error" "0.0.6" - camel-case "4.1.1" - tslib "~2.0.1" - -"@graphql-tools/utils@^7.0.0", "@graphql-tools/utils@^7.1.0", "@graphql-tools/utils@^7.1.2", "@graphql-tools/utils@^7.1.5", "@graphql-tools/utils@^7.1.6", "@graphql-tools/utils@^7.2.1", "@graphql-tools/utils@^7.5.0": - version "7.6.0" - resolved "https://registry.yarnpkg.com/@graphql-tools/utils/-/utils-7.6.0.tgz#ac570a2b5a9bcd5d6446995f58ba22609e01ca7d" - integrity sha512-YCZDDdhfb4Yhie0IH031eGdvQG8C73apDuNg6lqBNbauNw45OG/b8wi3+vuMiDnJTJN32GQUb1Gt9gxDKoRDKw== - dependencies: - "@ardatan/aggregate-error" "0.0.6" - camel-case "4.1.2" - tslib "~2.1.0" - -"@graphql-tools/wrap@^6.2.4": - version "6.2.4" - resolved "https://registry.yarnpkg.com/@graphql-tools/wrap/-/wrap-6.2.4.tgz#2709817da6e469753735a9fe038c9e99736b2c57" - integrity sha512-cyQgpybolF9DjL2QNOvTS1WDCT/epgYoiA8/8b3nwv5xmMBQ6/6nYnZwityCZ7njb7MMyk7HBEDNNlP9qNJDcA== - dependencies: - "@graphql-tools/delegate" "^6.2.4" - "@graphql-tools/schema" "^6.2.4" - "@graphql-tools/utils" "^6.2.4" - is-promise "4.0.0" - tslib "~2.0.1" - -"@graphql-tools/wrap@^7.0.4": - version "7.0.5" - resolved "https://registry.yarnpkg.com/@graphql-tools/wrap/-/wrap-7.0.5.tgz#8659a119abef11754f712b0c202e41a484951e0b" - integrity sha512-KCWBXsDfvG46GNUawRltJL4j9BMGoOG7oo3WEyCQP+SByWXiTe5cBF45SLDVQgdjljGNZhZ4Lq/7avIkF7/zDQ== - dependencies: - "@graphql-tools/delegate" "^7.0.7" - "@graphql-tools/schema" "^7.1.2" - "@graphql-tools/utils" "^7.2.1" - is-promise "4.0.0" - tslib "~2.0.1" - -"@graphql-typed-document-node/core@^3.0.0": - version "3.1.0" - resolved "https://registry.yarnpkg.com/@graphql-typed-document-node/core/-/core-3.1.0.tgz#0eee6373e11418bfe0b5638f654df7a4ca6a3950" - integrity sha512-wYn6r8zVZyQJ6rQaALBEln5B1pzxb9shV5Ef97kTvn6yVGrqyXVnDqnU24MXnFubR+rZjBY9NWuxX3FB2sTsjg== - -"@gulp-sourcemaps/map-sources@1.X": - version "1.0.0" - resolved "https://registry.yarnpkg.com/@gulp-sourcemaps/map-sources/-/map-sources-1.0.0.tgz#890ae7c5d8c877f6d384860215ace9d7ec945bda" - integrity sha1-iQrnxdjId/bThIYCFazp1+yUW9o= - dependencies: - normalize-path "^2.0.1" - through2 "^2.0.3" - -"@improbable-eng/grpc-web@^0.12.0": - version "0.12.0" - resolved "https://registry.yarnpkg.com/@improbable-eng/grpc-web/-/grpc-web-0.12.0.tgz#9b10a7edf2a1d7672f8997e34a60e7b70e49738f" - integrity sha512-uJjgMPngreRTYPBuo6gswMj1gK39Wbqre/RgE0XnSDXJRg6ST7ZhuS53dFE6Vc2CX4jxgl+cO+0B3op8LA4Q0Q== - dependencies: - browser-headers "^0.4.0" - -"@improbable-eng/grpc-web@^0.13.0": - version "0.13.0" - resolved "https://registry.yarnpkg.com/@improbable-eng/grpc-web/-/grpc-web-0.13.0.tgz#289e6fc4dafc00b1af8e2b93b970e6892299014d" - integrity sha512-vaxxT+Qwb7GPqDQrBV4vAAfH0HywgOLw6xGIKXd9Q8hcV63CQhmS3p4+pZ9/wVvt4Ph3ZDK9fdC983b9aGMUFg== - dependencies: - browser-headers "^0.4.0" - -"@improbable-eng/grpc-web@^0.14.0": - version "0.14.0" - resolved "https://registry.yarnpkg.com/@improbable-eng/grpc-web/-/grpc-web-0.14.0.tgz#a71c5af471dcef6a2810798f71f93ed8d6ac3817" - integrity sha512-ag1PTMWpBZKGi6GrEcZ4lkU5Qag23Xjo10BmnK9qyx4TMmSVcWmQ3rECirfQzm2uogrM9n1M6xfOpFsJP62ivA== - dependencies: - browser-headers "^0.4.1" - -"@ledgerhq/devices@^5.51.1": - version "5.51.1" - resolved "https://registry.yarnpkg.com/@ledgerhq/devices/-/devices-5.51.1.tgz#d741a4a5d8f17c2f9d282fd27147e6fe1999edb7" - integrity sha512-4w+P0VkbjzEXC7kv8T1GJ/9AVaP9I6uasMZ/JcdwZBS3qwvKo5A5z9uGhP5c7TvItzcmPb44b5Mw2kT+WjUuAA== - dependencies: - "@ledgerhq/errors" "^5.50.0" - "@ledgerhq/logs" "^5.50.0" - rxjs "6" - semver "^7.3.5" - -"@ledgerhq/errors@^5.50.0": - version "5.50.0" - resolved "https://registry.yarnpkg.com/@ledgerhq/errors/-/errors-5.50.0.tgz#e3a6834cb8c19346efca214c1af84ed28e69dad9" - integrity sha512-gu6aJ/BHuRlpU7kgVpy2vcYk6atjB4iauP2ymF7Gk0ez0Y/6VSMVSJvubeEQN+IV60+OBK0JgeIZG7OiHaw8ow== - -"@ledgerhq/hw-transport-webusb@^5.22.0": - version "5.53.1" - resolved "https://registry.yarnpkg.com/@ledgerhq/hw-transport-webusb/-/hw-transport-webusb-5.53.1.tgz#3df8c401417571e3bcacc378d8aca587214b05ae" - integrity sha512-A/f+xcrkIAZiJrvPpDvsrjxQX4cI2kbdiunQkwsYmOG3Bp4z89ZnsBiC7YBst4n2/g+QgTg0/KPVtODU5djooQ== +"@ethersproject/wordlists@^5.3.0": + version "5.3.0" + resolved "https://registry.yarnpkg.com/@ethersproject/wordlists/-/wordlists-5.3.0.tgz#45a0205f5178c1de33d316cb2ab7ed5eac3c06c5" + integrity sha512-JcwumCZcsUxgWpiFU/BRy6b4KlTRdOmYvOKZcAw/3sdF93/pZyPW5Od2hFkHS8oWp4xS06YQ+qHqQhdcxdHafQ== dependencies: - "@ledgerhq/devices" "^5.51.1" - "@ledgerhq/errors" "^5.50.0" - "@ledgerhq/hw-transport" "^5.51.1" - "@ledgerhq/logs" "^5.50.0" + "@ethersproject/bytes" "^5.3.0" + "@ethersproject/hash" "^5.3.0" + "@ethersproject/logger" "^5.3.0" + "@ethersproject/properties" "^5.3.0" + "@ethersproject/strings" "^5.3.0" -"@ledgerhq/hw-transport@^5.51.1": - version "5.51.1" - resolved "https://registry.yarnpkg.com/@ledgerhq/hw-transport/-/hw-transport-5.51.1.tgz#8dd14a8e58cbee4df0c29eaeef983a79f5f22578" - integrity sha512-6wDYdbWrw9VwHIcoDnqWBaDFyviyjZWv6H9vz9Vyhe4Qd7TIFmbTl/eWs6hZvtZBza9K8y7zD8ChHwRI4s9tSw== +"@humanwhocodes/config-array@^0.5.0": + version "0.5.0" + resolved "https://registry.yarnpkg.com/@humanwhocodes/config-array/-/config-array-0.5.0.tgz#1407967d4c6eecd7388f83acf1eaf4d0c6e58ef9" + integrity sha512-FagtKFz74XrTl7y6HCzQpwDfXP0yhxe9lHLD1UZxjvZIcbyRz8zTFF/yYNfSfzU414eDwZ1SrO0Qvtyf+wFMQg== dependencies: - "@ledgerhq/devices" "^5.51.1" - "@ledgerhq/errors" "^5.50.0" - events "^3.3.0" - -"@ledgerhq/logs@^5.50.0": - version "5.50.0" - resolved "https://registry.yarnpkg.com/@ledgerhq/logs/-/logs-5.50.0.tgz#29c6419e8379d496ab6d0426eadf3c4d100cd186" - integrity sha512-swKHYCOZUGyVt4ge0u8a7AwNcA//h4nx5wIi0sruGye1IJ5Cva0GyK9L2/WdX+kWVTKp92ZiEo1df31lrWGPgA== - -"@multiformats/base-x@^4.0.1": - version "4.0.1" - resolved "https://registry.yarnpkg.com/@multiformats/base-x/-/base-x-4.0.1.tgz#95ff0fa58711789d53aefb2590a8b7a4e715d121" - integrity sha512-eMk0b9ReBbV23xXU693TAIrLyeO5iTgBZGSJfpqriG8UkYvr/hC9u9pyMlAakDNHWmbhMZCDs6KQO0jzKD8OTw== - -"@nodefactory/filsnap-adapter@^0.2.1": - version "0.2.2" - resolved "https://registry.yarnpkg.com/@nodefactory/filsnap-adapter/-/filsnap-adapter-0.2.2.tgz#0e182150ce3825b6c26b8512ab9355ab7759b498" - integrity sha512-nbaYMwVopOXN2bWOdDY3il6gGL9qMuCmMN4WPuoxzJjSnAMJNqEeSe6MNNJ/fYBLipZcJfAtirNXRrFLFN+Tvw== + "@humanwhocodes/object-schema" "^1.2.0" + debug "^4.1.1" + minimatch "^3.0.4" -"@nodefactory/filsnap-types@^0.2.1": - version "0.2.2" - resolved "https://registry.yarnpkg.com/@nodefactory/filsnap-types/-/filsnap-types-0.2.2.tgz#f95cbf93ce5815d8d151c60663940086b015cb8f" - integrity sha512-XT1tE2vrYF2D0tSNNekgjqKRpqPQn4W72eKul9dDCul/8ykouhqnVTyjFHYvBhlBWE0PK3nmG7i83QvhgGSiMw== +"@humanwhocodes/object-schema@^1.2.0": + version "1.2.0" + resolved "https://registry.yarnpkg.com/@humanwhocodes/object-schema/-/object-schema-1.2.0.tgz#87de7af9c231826fdd68ac7258f77c429e0e5fcf" + integrity sha512-wdppn25U8z/2yiaT6YGquE6X8sSv7hNMWSXYSSU1jGv/yd6XqjXgTDJ8KP4NgjTXfJ3GbRjeeb8RTV7a/VpM+w== -"@nodelib/fs.scandir@2.1.3": - version "2.1.3" - resolved "https://registry.yarnpkg.com/@nodelib/fs.scandir/-/fs.scandir-2.1.3.tgz#3a582bdb53804c6ba6d146579c46e52130cf4a3b" - integrity sha512-eGmwYQn3gxo4r7jdQnkrrN6bY478C3P+a/y72IJukF8LjB6ZHeB3c+Ehacj3sYeSmUXGlnA67/PmbM9CVwL7Dw== +"@nodelib/fs.scandir@2.1.4": + version "2.1.4" + resolved "https://registry.yarnpkg.com/@nodelib/fs.scandir/-/fs.scandir-2.1.4.tgz#d4b3549a5db5de2683e0c1071ab4f140904bbf69" + integrity sha512-33g3pMJk3bg5nXbL/+CY6I2eJDzZAni49PfJnL5fghPTggPvBd/pFNSgJsdAgWptuFu7qq/ERvOYFlhvsLTCKA== dependencies: - "@nodelib/fs.stat" "2.0.3" + "@nodelib/fs.stat" "2.0.4" run-parallel "^1.1.9" -"@nodelib/fs.stat@2.0.3", "@nodelib/fs.stat@^2.0.2": - version "2.0.3" - resolved "https://registry.yarnpkg.com/@nodelib/fs.stat/-/fs.stat-2.0.3.tgz#34dc5f4cabbc720f4e60f75a747e7ecd6c175bd3" - integrity sha512-bQBFruR2TAwoevBEd/NWMoAAtNGzTRgdrqnYCc7dhzfoNvqPzLyqlEQnzZ3kVnNrSp25iyxE00/3h2fqGAGArA== +"@nodelib/fs.stat@2.0.4", "@nodelib/fs.stat@^2.0.2": + version "2.0.4" + resolved "https://registry.yarnpkg.com/@nodelib/fs.stat/-/fs.stat-2.0.4.tgz#a3f2dd61bab43b8db8fa108a121cfffe4c676655" + integrity sha512-IYlHJA0clt2+Vg7bccq+TzRdJvv19c2INqBSsoOLp1je7xjtr7J26+WXR72MCdvU9q1qTzIWDfhMf+DRvQJK4Q== "@nodelib/fs.walk@^1.2.3": - version "1.2.4" - resolved "https://registry.yarnpkg.com/@nodelib/fs.walk/-/fs.walk-1.2.4.tgz#011b9202a70a6366e436ca5c065844528ab04976" - integrity sha512-1V9XOY4rDW0rehzbrcqAmHnz8e7SKvX27gh8Gt2WgB0+pdzdiLV83p72kZPU+jvMbS1qU5mauP2iOvO8rhmurQ== + version "1.2.6" + resolved "https://registry.yarnpkg.com/@nodelib/fs.walk/-/fs.walk-1.2.6.tgz#cce9396b30aa5afe9e3756608f5831adcb53d063" + integrity sha512-8Broas6vTtW4GIXTAHDoE32hnN2M5ykgCpWGbuXHQ15vEMqr23pB76e/GZcYsZCHALv50ktd24qhEyKr6wBtow== dependencies: - "@nodelib/fs.scandir" "2.1.3" + "@nodelib/fs.scandir" "2.1.4" fastq "^1.6.0" -"@openzeppelin/contracts-ethereum-package@^2.5.0": - version "2.5.0" - resolved "https://registry.yarnpkg.com/@openzeppelin/contracts-ethereum-package/-/contracts-ethereum-package-2.5.0.tgz#cfb4b91f8132edde7e04bcd032575d4c6b544f4a" - integrity sha512-14CijdTyy4Y/3D3UUeFC2oW12nt1Yq1M8gFOtkuODEvSYPe3YSAKnKyhUeGf0UDNCZzwfGr15KdiFK6AoJjoSQ== - -"@openzeppelin/contracts@^2.5.1": - version "2.5.1" - resolved "https://registry.yarnpkg.com/@openzeppelin/contracts/-/contracts-2.5.1.tgz#c76e3fc57aa224da3718ec351812a4251289db31" - integrity sha512-qIy6tLx8rtybEsIOAlrM4J/85s2q2nPkDqj/Rx46VakBZ0LwtFhXIVub96LXHczQX0vaqmAueDqNPXtbSXSaYQ== - -"@openzeppelin/upgrades@^2.8.0": - version "2.8.0" - resolved "https://registry.yarnpkg.com/@openzeppelin/upgrades/-/upgrades-2.8.0.tgz#8086ab9c99d9f8dac7205030b0f9e7e4a280c4a3" - integrity sha512-LzjTQPeljPsgHDPdZyH9cMCbIHZILgd2cpNcYEkdsC2IylBYRHShlbEDXJV9snnqg9JWfzPiKIqyj3XVliwtqQ== - dependencies: - "@types/cbor" "^2.0.0" - axios "^0.18.0" - bignumber.js "^7.2.0" - cbor "^4.1.5" - chalk "^2.4.1" - ethers "^4.0.20" - glob "^7.1.3" - lodash "^4.17.15" - semver "^5.5.1" - spinnies "^0.4.2" - truffle-flattener "^1.4.0" - web3 "1.2.2" - web3-eth "1.2.2" - web3-eth-contract "1.2.2" - web3-utils "1.2.2" - -"@protobufjs/aspromise@^1.1.1", "@protobufjs/aspromise@^1.1.2": - version "1.1.2" - resolved "https://registry.yarnpkg.com/@protobufjs/aspromise/-/aspromise-1.1.2.tgz#9b8b0cc663d669a7d8f6f5d0893a14d348f30fbf" - integrity sha1-m4sMxmPWaafY9vXQiToU00jzD78= - -"@protobufjs/base64@^1.1.2": - version "1.1.2" - resolved "https://registry.yarnpkg.com/@protobufjs/base64/-/base64-1.1.2.tgz#4c85730e59b9a1f1f349047dbf24296034bb2735" - integrity sha512-AZkcAA5vnN/v4PDqKyMR5lx7hZttPDgClv83E//FMNhR2TMcLUhfRUBHCmSl0oi9zMgDDqRUJkSxO3wm85+XLg== - -"@protobufjs/codegen@^2.0.4": - version "2.0.4" - resolved "https://registry.yarnpkg.com/@protobufjs/codegen/-/codegen-2.0.4.tgz#7ef37f0d010fb028ad1ad59722e506d9262815cb" - integrity sha512-YyFaikqM5sH0ziFZCN3xDC7zeGaB/d0IUb9CATugHWbd1FRFwWwt4ld4OYMPWu5a3Xe01mGAULCdqhMlPl29Jg== - -"@protobufjs/eventemitter@^1.1.0": - version "1.1.0" - resolved "https://registry.yarnpkg.com/@protobufjs/eventemitter/-/eventemitter-1.1.0.tgz#355cbc98bafad5978f9ed095f397621f1d066b70" - integrity sha1-NVy8mLr61ZePntCV85diHx0Ga3A= - -"@protobufjs/fetch@^1.1.0": - version "1.1.0" - resolved "https://registry.yarnpkg.com/@protobufjs/fetch/-/fetch-1.1.0.tgz#ba99fb598614af65700c1619ff06d454b0d84c45" - integrity sha1-upn7WYYUr2VwDBYZ/wbUVLDYTEU= - dependencies: - "@protobufjs/aspromise" "^1.1.1" - "@protobufjs/inquire" "^1.1.0" - -"@protobufjs/float@^1.0.2": - version "1.0.2" - resolved "https://registry.yarnpkg.com/@protobufjs/float/-/float-1.0.2.tgz#5e9e1abdcb73fc0a7cb8b291df78c8cbd97b87d1" - integrity sha1-Xp4avctz/Ap8uLKR33jIy9l7h9E= - -"@protobufjs/inquire@^1.1.0": - version "1.1.0" - resolved "https://registry.yarnpkg.com/@protobufjs/inquire/-/inquire-1.1.0.tgz#ff200e3e7cf2429e2dcafc1140828e8cc638f089" - integrity sha1-/yAOPnzyQp4tyvwRQIKOjMY48Ik= - -"@protobufjs/path@^1.1.2": - version "1.1.2" - resolved "https://registry.yarnpkg.com/@protobufjs/path/-/path-1.1.2.tgz#6cc2b20c5c9ad6ad0dccfd21ca7673d8d7fbf68d" - integrity sha1-bMKyDFya1q0NzP0hynZz2Nf79o0= - -"@protobufjs/pool@^1.1.0": - version "1.1.0" - resolved "https://registry.yarnpkg.com/@protobufjs/pool/-/pool-1.1.0.tgz#09fd15f2d6d3abfa9b65bc366506d6ad7846ff54" - integrity sha1-Cf0V8tbTq/qbZbw2ZQbWrXhG/1Q= +"@nomiclabs/hardhat-ethers@npm:hardhat-deploy-ethers@0.3.0-beta.10": + version "0.3.0-beta.10" + resolved "https://registry.yarnpkg.com/hardhat-deploy-ethers/-/hardhat-deploy-ethers-0.3.0-beta.10.tgz#bccfcf635d380bbab3638960f6739fe4d396fc5f" + integrity sha512-TeyriUshRZ7XVHOjMsDtTozIrdwLf3Bw+oZRYNhXdG/eut5HeDhjUFPfRlG7TI1lSLvkcB5dt7OxOtPYKDOxTg== -"@protobufjs/utf8@^1.1.0": - version "1.1.0" - resolved "https://registry.yarnpkg.com/@protobufjs/utf8/-/utf8-1.1.0.tgz#a777360b5b39a1a2e5106f8e858f2fd2d060c570" - integrity sha1-p3c2C1s5oaLlEG+OhY8v0tBgxXA= +"@openzeppelin/contracts-upgradeable@^4.3.0": + version "4.3.0" + resolved "https://registry.yarnpkg.com/@openzeppelin/contracts-upgradeable/-/contracts-upgradeable-4.3.0.tgz#4225f108361e152f292ef65c44b58b709047aea8" + integrity sha512-kNplrFl2rg1VP6JzneYNJZpytJmE7VmgtyR0j6GiaP9qHupzkZWgS+L45AhK2DJupBq2wQ+t9LsVzOavvWgl9Q== -"@redux-saga/core@^1.0.0": - version "1.1.3" - resolved "https://registry.yarnpkg.com/@redux-saga/core/-/core-1.1.3.tgz#3085097b57a4ea8db5528d58673f20ce0950f6a4" - integrity sha512-8tInBftak8TPzE6X13ABmEtRJGjtK17w7VUs7qV17S8hCO5S3+aUTWZ/DBsBJPdE8Z5jOPwYALyvofgq1Ws+kg== - dependencies: - "@babel/runtime" "^7.6.3" - "@redux-saga/deferred" "^1.1.2" - "@redux-saga/delay-p" "^1.1.2" - "@redux-saga/is" "^1.1.2" - "@redux-saga/symbols" "^1.1.2" - "@redux-saga/types" "^1.1.0" - redux "^4.0.4" - typescript-tuple "^2.2.1" - -"@redux-saga/deferred@^1.1.2": - version "1.1.2" - resolved "https://registry.yarnpkg.com/@redux-saga/deferred/-/deferred-1.1.2.tgz#59937a0eba71fff289f1310233bc518117a71888" - integrity sha512-908rDLHFN2UUzt2jb4uOzj6afpjgJe3MjICaUNO3bvkV/kN/cNeI9PMr8BsFXB/MR8WTAZQq/PlTq8Kww3TBSQ== +"@openzeppelin/contracts@^4.3.0": + version "4.3.0" + resolved "https://registry.yarnpkg.com/@openzeppelin/contracts/-/contracts-4.3.0.tgz#345236d4ec73ef381ab4907c6ef66fd55e5dedad" + integrity sha512-+uBDl/TrmR0Kch6mq3tuxMex/fK7huR6+fQMae+zJk1K5T+dp0pFl12Hbc+1L6oYMXoyDSBJ8zqhRIntrREDFA== + +"@sentry/core@5.30.0": + version "5.30.0" + resolved "https://registry.yarnpkg.com/@sentry/core/-/core-5.30.0.tgz#6b203664f69e75106ee8b5a2fe1d717379b331f3" + 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" -"@redux-saga/delay-p@^1.1.2": - version "1.1.2" - resolved "https://registry.yarnpkg.com/@redux-saga/delay-p/-/delay-p-1.1.2.tgz#8f515f4b009b05b02a37a7c3d0ca9ddc157bb355" - integrity sha512-ojc+1IoC6OP65Ts5+ZHbEYdrohmIw1j9P7HS9MOJezqMYtCDgpkoqB5enAAZrNtnbSL6gVCWPHaoaTY5KeO0/g== +"@sentry/hub@5.30.0": + version "5.30.0" + resolved "https://registry.yarnpkg.com/@sentry/hub/-/hub-5.30.0.tgz#2453be9b9cb903404366e198bd30c7ca74cdc100" + integrity sha512-2tYrGnzb1gKz2EkMDQcfLrDTvmGcQPuWxLnJKXJvYTQDGLlEvi2tWz1VIHjunmOvJrB5aIQLhm+dcMRwFZDCqQ== dependencies: - "@redux-saga/symbols" "^1.1.2" + "@sentry/types" "5.30.0" + "@sentry/utils" "5.30.0" + tslib "^1.9.3" -"@redux-saga/is@^1.1.2": - version "1.1.2" - resolved "https://registry.yarnpkg.com/@redux-saga/is/-/is-1.1.2.tgz#ae6c8421f58fcba80faf7cadb7d65b303b97e58e" - integrity sha512-OLbunKVsCVNTKEf2cH4TYyNbbPgvmZ52iaxBD4I1fTif4+MTXMa4/Z07L83zW/hTCXwpSZvXogqMqLfex2Tg6w== +"@sentry/minimal@5.30.0": + version "5.30.0" + resolved "https://registry.yarnpkg.com/@sentry/minimal/-/minimal-5.30.0.tgz#ce3d3a6a273428e0084adcb800bc12e72d34637b" + integrity sha512-BwWb/owZKtkDX+Sc4zCSTNcvZUq7YcH3uAVlmh/gtR9rmUvbzAA3ewLuB3myi4wWRAMEtny6+J/FN/x+2wn9Xw== dependencies: - "@redux-saga/symbols" "^1.1.2" - "@redux-saga/types" "^1.1.0" - -"@redux-saga/symbols@^1.1.2": - version "1.1.2" - resolved "https://registry.yarnpkg.com/@redux-saga/symbols/-/symbols-1.1.2.tgz#216a672a487fc256872b8034835afc22a2d0595d" - integrity sha512-EfdGnF423glv3uMwLsGAtE6bg+R9MdqlHEzExnfagXPrIiuxwr3bdiAwz3gi+PsrQ3yBlaBpfGLtDG8rf3LgQQ== - -"@redux-saga/types@^1.1.0": - version "1.1.0" - resolved "https://registry.yarnpkg.com/@redux-saga/types/-/types-1.1.0.tgz#0e81ce56b4883b4b2a3001ebe1ab298b84237204" - integrity sha512-afmTuJrylUU/0OtqzaRkbyYFFNgCF73Bvel/sw90pvGrWIZ+vyoIJqA6eMSoA6+nb443kTmulmBtC9NerXboNg== - -"@repeaterjs/repeater@^3.0.4": - version "3.0.4" - resolved "https://registry.yarnpkg.com/@repeaterjs/repeater/-/repeater-3.0.4.tgz#a04d63f4d1bf5540a41b01a921c9a7fddc3bd1ca" - integrity sha512-AW8PKd6iX3vAZ0vA43nOUOnbq/X5ihgU+mSXXqunMkeQADGiqw/PY0JNeYtD5sr0PAy51YPgAPbDoeapv9r8WA== + "@sentry/hub" "5.30.0" + "@sentry/types" "5.30.0" + tslib "^1.9.3" -"@resolver-engine/core@^0.2.1": - version "0.2.1" - resolved "https://registry.yarnpkg.com/@resolver-engine/core/-/core-0.2.1.tgz#0d71803f6d3b8cb2e9ed481a1bf0ca5f5256d0c0" - integrity sha512-nsLQHmPJ77QuifqsIvqjaF5B9aHnDzJjp73Q1z6apY3e9nqYrx4Dtowhpsf7Jwftg/XzVDEMQC+OzUBNTS+S1A== - dependencies: - debug "^3.1.0" - request "^2.85.0" +"@sentry/node@^5.18.1": + version "5.30.0" + resolved "https://registry.yarnpkg.com/@sentry/node/-/node-5.30.0.tgz#4ca479e799b1021285d7fe12ac0858951c11cd48" + 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" -"@resolver-engine/fs@^0.2.1": - version "0.2.1" - resolved "https://registry.yarnpkg.com/@resolver-engine/fs/-/fs-0.2.1.tgz#f98a308d77568cc02651d03636f46536b941b241" - integrity sha512-7kJInM1Qo2LJcKyDhuYzh9ZWd+mal/fynfL9BNjWOiTcOpX+jNfqb/UmGUqros5pceBITlWGqS4lU709yHFUbg== +"@sentry/tracing@5.30.0": + version "5.30.0" + resolved "https://registry.yarnpkg.com/@sentry/tracing/-/tracing-5.30.0.tgz#501d21f00c3f3be7f7635d8710da70d9419d4e1f" + integrity sha512-dUFowCr0AIMwiLD7Fs314Mdzcug+gBVo/+NCMyDw8tFxJkwWAKl7Qa2OZxLQ0ZHjakcj1hNKfCQJ9rhyfOl4Aw== dependencies: - "@resolver-engine/core" "^0.2.1" - debug "^3.1.0" + "@sentry/hub" "5.30.0" + "@sentry/minimal" "5.30.0" + "@sentry/types" "5.30.0" + "@sentry/utils" "5.30.0" + tslib "^1.9.3" -"@resolver-engine/imports-fs@^0.2.2": - version "0.2.2" - resolved "https://registry.yarnpkg.com/@resolver-engine/imports-fs/-/imports-fs-0.2.2.tgz#5a81ef3285dbf0411ab3b15205080a1ad7622d9e" - integrity sha512-gFCgMvCwyppjwq0UzIjde/WI+yDs3oatJhozG9xdjJdewwtd7LiF0T5i9lrHAUtqrQbqoFE4E+ZMRVHWpWHpKQ== - dependencies: - "@resolver-engine/fs" "^0.2.1" - "@resolver-engine/imports" "^0.2.2" - debug "^3.1.0" +"@sentry/types@5.30.0": + version "5.30.0" + resolved "https://registry.yarnpkg.com/@sentry/types/-/types-5.30.0.tgz#19709bbe12a1a0115bc790b8942917da5636f402" + integrity sha512-R8xOqlSTZ+htqrfteCWU5Nk0CDN5ApUTvrlvBuiH1DyP6czDZ4ktbZB0hAgBlVcK0U+qpD3ag3Tqqpa5Q67rPw== -"@resolver-engine/imports@^0.2.2": - version "0.2.2" - resolved "https://registry.yarnpkg.com/@resolver-engine/imports/-/imports-0.2.2.tgz#d3de55a1bb5f3beb7703fdde743298f321175843" - integrity sha512-u5/HUkvo8q34AA+hnxxqqXGfby5swnH0Myw91o3Sm2TETJlNKXibFGSKBavAH+wvWdBi4Z5gS2Odu0PowgVOUg== +"@sentry/utils@5.30.0": + version "5.30.0" + resolved "https://registry.yarnpkg.com/@sentry/utils/-/utils-5.30.0.tgz#9a5bd7ccff85ccfe7856d493bffa64cabc41e980" + integrity sha512-zaYmoH0NWWtvnJjC9/CBseXMtKHm/tm40sz3YfJRxeQjyzRqNQPgivpd9R/oDJCYj999mzdW382p/qi2ypjLww== dependencies: - "@resolver-engine/core" "^0.2.1" - debug "^3.1.0" - hosted-git-info "^2.6.0" + "@sentry/types" "5.30.0" + tslib "^1.9.3" "@sindresorhus/is@^0.14.0": version "0.14.0" resolved "https://registry.yarnpkg.com/@sindresorhus/is/-/is-0.14.0.tgz#9fb3a3cf3132328151f353de4632e01e52102bea" integrity sha512-9NET910DNaIPngYnLLPeg+Ogzqsi9uM4mSboU5y6p8S5DzMTVEsJZrawi+BoDNUVBa2DhJqQYUFvMDfgU062LQ== +"@solidity-parser/parser@^0.11.0": + version "0.11.1" + resolved "https://registry.yarnpkg.com/@solidity-parser/parser/-/parser-0.11.1.tgz#fa840af64840c930f24a9c82c08d4a092a068add" + integrity sha512-H8BSBoKE8EubJa0ONqecA2TviT3TnHeC4NpgnAHSUiuhZoQBfPB4L2P9bs8R6AoTW10Endvh3vc+fomVMIDIYQ== + "@solidity-parser/parser@^0.12.0": version "0.12.2" resolved "https://registry.yarnpkg.com/@solidity-parser/parser/-/parser-0.12.2.tgz#1afad367cb29a2ed8cdd4a3a62701c2821fb578f" @@ -1682,13695 +1296,6309 @@ dependencies: defer-to-connect "^1.0.1" -"@textile/buckets-grpc@2.6.6": - version "2.6.6" - resolved "https://registry.yarnpkg.com/@textile/buckets-grpc/-/buckets-grpc-2.6.6.tgz#304bdef37c81f0bdf2aa98f52d3b437bf4ab9d14" - integrity sha512-Gg+96RviTLNnSX8rhPxFgREJn3Ss2wca5Szk60nOenW+GoVIc+8dtsA9bE/6Vh5Gn85zAd17m1C2k6PbJK8x3Q== - dependencies: - "@improbable-eng/grpc-web" "^0.13.0" - "@types/google-protobuf" "^3.7.4" - google-protobuf "^3.13.0" - -"@textile/buckets@^6.1.0": - version "6.1.0" - resolved "https://registry.yarnpkg.com/@textile/buckets/-/buckets-6.1.0.tgz#9b33115035813e121e47d75ccbe6ed49af2c8d38" - integrity sha512-39pGJicewq7GMKUrBubkh4QHuGL+v6TkkV70GG+VRwD3UENEAoDSPrA8OZYUX+sgAtBuiWWij+ZB2TE2bxagkg== - dependencies: - "@improbable-eng/grpc-web" "^0.13.0" - "@repeaterjs/repeater" "^3.0.4" - "@textile/buckets-grpc" "2.6.6" - "@textile/context" "^0.12.0" - "@textile/crypto" "^4.2.0" - "@textile/grpc-authentication" "^3.4.0" - "@textile/grpc-connection" "^2.5.0" - "@textile/grpc-transport" "^0.5.0" - "@textile/hub-grpc" "2.6.6" - "@textile/hub-threads-client" "^5.4.0" - "@textile/security" "^0.9.0" - "@textile/threads-id" "^0.6.0" - abort-controller "^3.0.0" - cids "^1.1.4" - it-drain "^1.0.3" - loglevel "^1.6.8" - paramap-it "^0.1.1" +"@truffle/error@^0.0.14": + version "0.0.14" + resolved "https://registry.yarnpkg.com/@truffle/error/-/error-0.0.14.tgz#59683b5407bede7bddf16d80dc5592f9c5e5fa05" + integrity sha512-utJx+SZYoMqk8wldQG4gCVKhV8GwMJbWY7sLXFT/D8wWZTnE2peX7URFJh/cxkjTRCO328z1s2qewkhyVsu2HA== -"@textile/context@^0.12.0": - version "0.12.0" - resolved "https://registry.yarnpkg.com/@textile/context/-/context-0.12.0.tgz#dfced24f45be5a99a7b46135c2a85c39006694c3" - integrity sha512-VXH6QXCHVqQDXBC5pxwENFTuSI+LidC5a+qA6MSoCXtDKuqsaqkLHj7J/ZMKezWGxDU8O9WReXpzYFnlYZKyMg== +"@truffle/interface-adapter@^0.4.23": + version "0.4.23" + resolved "https://registry.yarnpkg.com/@truffle/interface-adapter/-/interface-adapter-0.4.23.tgz#9b474bb0455df1f02d72bf5a08f3d70b6fef875d" + integrity sha512-mfpwY25Apx36WHHNJMNHWyDQVFZoZYNQ43rOwr/n+5gAMxke7+D7+IR9UW4kuO/Jp0+2848UxMdRV+oqm017kQ== dependencies: - "@improbable-eng/grpc-web" "^0.13.0" - "@textile/security" "^0.9.0" + bn.js "^5.1.3" + ethers "^4.0.32" + web3 "1.3.5" -"@textile/crypto@^4.2.0": - version "4.2.0" - resolved "https://registry.yarnpkg.com/@textile/crypto/-/crypto-4.2.0.tgz#fb3060d9cd98f2b6b2eb0d802e4d945d00043ce9" - integrity sha512-E7K9mCuDkCptqhGTk3iYCoNg44Q0kiWUIzf3vSmDqP60TLROFbg7h45jeh+tiHCFw67jlPm7RE62yUI9/AE5Qw== +"@truffle/provider@^0.2.24": + version "0.2.30" + resolved "https://registry.yarnpkg.com/@truffle/provider/-/provider-0.2.30.tgz#c2f7d84e698e1d200f48d1349683ee5dee693808" + integrity sha512-5ScTbWsrm7zmQjw020T41U30/kYA1LppXAtaeucUGN2jvPrSwlh0aTL18makbqftTx1NRuYKw7C8wO4jCKQSUQ== dependencies: - "@types/ed2curve" "^0.2.2" - ed2curve "^0.3.0" - fastestsmallesttextencoderdecoder "^1.0.22" - multibase "^3.1.0" - tweetnacl "^1.0.3" + "@truffle/error" "^0.0.14" + "@truffle/interface-adapter" "^0.4.23" + web3 "1.3.5" -"@textile/grpc-authentication@^3.4.0": - version "3.4.0" - resolved "https://registry.yarnpkg.com/@textile/grpc-authentication/-/grpc-authentication-3.4.0.tgz#78d20fa92dd55a521d2ed5b4a7b1bcd2a02d728c" - integrity sha512-UZsbkSXSbn8TQStoCAhqwt63as6rmQlVprqGJFNp+K1miL55jK1tU/lcVzOjmS33TPkf5PApJ18m2bkiHpR+kw== - dependencies: - "@textile/context" "^0.12.0" - "@textile/crypto" "^4.2.0" - "@textile/grpc-connection" "^2.5.0" - "@textile/hub-threads-client" "^5.4.0" - "@textile/security" "^0.9.0" +"@tsconfig/node10@^1.0.7": + version "1.0.8" + resolved "https://registry.yarnpkg.com/@tsconfig/node10/-/node10-1.0.8.tgz#c1e4e80d6f964fbecb3359c43bd48b40f7cadad9" + integrity sha512-6XFfSQmMgq0CFLY1MslA/CPUfhIL919M1rMsa5lP2P097N2Wd1sSX0tx1u4olM16fLNhtHZpRhedZJphNJqmZg== -"@textile/grpc-connection@^2.5.0": - version "2.5.0" - resolved "https://registry.yarnpkg.com/@textile/grpc-connection/-/grpc-connection-2.5.0.tgz#83c80248b5b6a42444ee74f6be50d89b31bc6a92" - integrity sha512-KyBSDmOhGLW/pT1MVMqkZNXec/V2PW42MgFIBeXHzUs3cvCSj33+4d0fjB1OYvwTmhBArpqzKSbl94dTHOCoEg== - dependencies: - "@improbable-eng/grpc-web" "^0.12.0" - "@textile/context" "^0.12.0" - "@textile/grpc-transport" "^0.5.0" +"@tsconfig/node12@^1.0.7": + version "1.0.8" + resolved "https://registry.yarnpkg.com/@tsconfig/node12/-/node12-1.0.8.tgz#a883d62f049a64fea1e56a6bbe66828d11c6241b" + integrity sha512-LM6XwBhjZRls1qJGpiM/It09SntEwe9M0riXRfQ9s6XlJQG0JPGl92ET18LtGeYh/GuOtafIXqwZeqLOd0FNFQ== -"@textile/grpc-powergate-client@^2.6.2": - version "2.6.2" - resolved "https://registry.yarnpkg.com/@textile/grpc-powergate-client/-/grpc-powergate-client-2.6.2.tgz#c267cc3e3dd1e68673c234d5465ff70bed843df6" - integrity sha512-ODe22lveqPiSkBsxnhLIRKQzZVwvyqDVx6WBPQJZI4yxrja5SDOq6/yH2Dtmqyfxg8BOobFvn+tid3wexRZjnQ== - dependencies: - "@improbable-eng/grpc-web" "^0.14.0" - "@types/google-protobuf" "^3.15.2" - google-protobuf "^3.17.3" +"@tsconfig/node14@^1.0.0": + version "1.0.1" + resolved "https://registry.yarnpkg.com/@tsconfig/node14/-/node14-1.0.1.tgz#95f2d167ffb9b8d2068b0b235302fafd4df711f2" + integrity sha512-509r2+yARFfHHE7T6Puu2jjkoycftovhXRqW328PDXTVGKihlb1P8Z9mMZH04ebyajfRY7dedfGynlrFHJUQCg== -"@textile/grpc-transport@^0.5.0": - version "0.5.0" - resolved "https://registry.yarnpkg.com/@textile/grpc-transport/-/grpc-transport-0.5.0.tgz#28fc7f21f8e84820b7535fb143156be9deae0e81" - integrity sha512-d74MA/TbU9dZ3BzLy2Esuh5dTdCaLk6d6rZYf5Sea4GMhZZMo8I/bkftLIicIxXdX/l8s0E5vo+JF6fkYUqMyA== - dependencies: - "@improbable-eng/grpc-web" "^0.13.0" - "@types/ws" "^7.2.6" - isomorphic-ws "^4.0.1" - loglevel "^1.6.6" - ws "^7.2.1" +"@tsconfig/node16@^1.0.2": + version "1.0.2" + resolved "https://registry.yarnpkg.com/@tsconfig/node16/-/node16-1.0.2.tgz#423c77877d0569db20e1fc80885ac4118314010e" + integrity sha512-eZxlbI8GZscaGS7kkc/trHTT5xgrjH3/1n2JDwusC9iahPKWMRvRjJSAN5mCXviuTGQ/lHnhvv8Q1YTpnfz9gA== -"@textile/hub-filecoin@^2.1.0": - version "2.1.0" - resolved "https://registry.yarnpkg.com/@textile/hub-filecoin/-/hub-filecoin-2.1.0.tgz#627eaac4c733a695bfea54ff470fc3f50686592d" - integrity sha512-/SWtBIEzPKKEMx5d4C6UZGVdoxxnV2C//pWBv5gRWQNDb2yJYKLftvsj1BQ1TpgdAlFyXZT9g1TgKT++zcOnHA== - dependencies: - "@improbable-eng/grpc-web" "^0.12.0" - "@textile/context" "^0.12.0" - "@textile/crypto" "^4.2.0" - "@textile/grpc-authentication" "^3.4.0" - "@textile/grpc-connection" "^2.5.0" - "@textile/grpc-powergate-client" "^2.6.2" - "@textile/hub-grpc" "2.6.6" - "@textile/security" "^0.9.0" - event-iterator "^2.0.0" - loglevel "^1.6.8" - -"@textile/hub-grpc@2.6.6": - version "2.6.6" - resolved "https://registry.yarnpkg.com/@textile/hub-grpc/-/hub-grpc-2.6.6.tgz#c99392490885760f357b58e72812066aac0ffeac" - integrity sha512-PHoLUE1lq0hyiVjIucPHRxps8r1oafXHIgmAR99+Lk4TwAF2MXx5rfxYhg1dEJ3ches8ZuNbVGkiNIXroIoZ8Q== - dependencies: - "@improbable-eng/grpc-web" "^0.13.0" - "@types/google-protobuf" "^3.7.4" - google-protobuf "^3.13.0" - -"@textile/hub-threads-client@^5.4.0": - version "5.4.0" - resolved "https://registry.yarnpkg.com/@textile/hub-threads-client/-/hub-threads-client-5.4.0.tgz#9ea261cda2fa1b4da547cf4d7e84506a63af30d6" - integrity sha512-V2Y7mcjptAhahMO2P1ytnW9kT87kDeWVwzE49M2xpocnoURoTl4suU022fq894ALcs/7b+bf5cY0M6kifMRA1w== - dependencies: - "@improbable-eng/grpc-web" "^0.13.0" - "@textile/context" "^0.12.0" - "@textile/hub-grpc" "2.6.6" - "@textile/security" "^0.9.0" - "@textile/threads-client" "^2.2.0" - "@textile/threads-id" "^0.6.0" - "@textile/users-grpc" "2.6.6" - loglevel "^1.7.0" - -"@textile/hub@^6.0.2": - version "6.2.0" - resolved "https://registry.yarnpkg.com/@textile/hub/-/hub-6.2.0.tgz#10c84abfe311548b7d022b4fab1d150980434a21" - integrity sha512-r5GRaZ2G4GBwC7tcbNAtYuzmhFeH9y/Eul1CtUqhoOQZFQnLQWHclj08zi5NchuLnnQbLuCIc+8KQHlp8jllGQ== - dependencies: - "@textile/buckets" "^6.1.0" - "@textile/crypto" "^4.2.0" - "@textile/grpc-authentication" "^3.4.0" - "@textile/hub-filecoin" "^2.1.0" - "@textile/hub-grpc" "2.6.6" - "@textile/hub-threads-client" "^5.4.0" - "@textile/security" "^0.9.0" - "@textile/threads-id" "^0.6.0" - "@textile/users" "^6.1.0" - loglevel "^1.6.8" - multihashes "3.1.2" - -"@textile/multiaddr@^0.6.0": - version "0.6.0" - resolved "https://registry.yarnpkg.com/@textile/multiaddr/-/multiaddr-0.6.0.tgz#ea1936e2e51399296f5a537896932dfdd4876b09" - integrity sha512-FCAlWGK1XMpozT2rVqY0qLGSk+eBeoanrq6HGI7fUw216UyAa44rBVsoYclQvx3fccpWzNpehC/BCh92mziMYg== - dependencies: - "@textile/threads-id" "^0.6.0" - multiaddr "^8.1.2" - varint "^6.0.0" +"@typechain/ethers-v5@^7.0.1": + version "7.0.1" + resolved "https://registry.yarnpkg.com/@typechain/ethers-v5/-/ethers-v5-7.0.1.tgz#f9ae60ae5bd9e8ea8a996f66244147e8e74034ae" + integrity sha512-mXEJ7LG0pOYO+MRPkHtbf30Ey9X2KAsU0wkeoVvjQIn7iAY6tB3k3s+82bbmJAUMyENbQ04RDOZit36CgSG6Gg== -"@textile/security@^0.9.0": - version "0.9.0" - resolved "https://registry.yarnpkg.com/@textile/security/-/security-0.9.0.tgz#df5521c0a75b7ee0d5d4173792721b02f1e6e10e" - integrity sha512-yE+XfFllEc3rdahadgCs+nWKaVWCdSICLZY9OZ0Ma9tDFHzXtA+CrxnnNreiKPlBzTqxXCouNYYti3ZpTwT8Fw== +"@typechain/hardhat@^2.3.0": + version "2.3.0" + resolved "https://registry.yarnpkg.com/@typechain/hardhat/-/hardhat-2.3.0.tgz#dc7f29281637b38b77c7c046ae82700703395d0f" + integrity sha512-zERrtNol86L4DX60ktnXxP7Cq8rSZHPaQvsChyiQQVuvVs2FTLm24Yi+MYnfsIdbUBIXZG7SxDWhtCF5I0tJNQ== dependencies: - "@consento/sync-randombytes" "^1.0.5" - fast-sha256 "^1.3.0" - fastestsmallesttextencoderdecoder "^1.0.22" - multibase "^3.1.0" + fs-extra "^9.1.0" -"@textile/threads-client-grpc@^1.0.2": - version "1.1.1" - resolved "https://registry.yarnpkg.com/@textile/threads-client-grpc/-/threads-client-grpc-1.1.1.tgz#65a84d933244abf3e83ed60ae491d8e066dc3b00" - integrity sha512-vdRD6hW90w1ys35AmeCy/DSQqASpu9oAP72zE8awLmB+MEUxHKclp4qRITgRAgRVczs/YpiksUBzqCNS9ekx6A== +"@types/abstract-leveldown@*": + version "5.0.1" + resolved "https://registry.yarnpkg.com/@types/abstract-leveldown/-/abstract-leveldown-5.0.1.tgz#3c7750d0186b954c7f2d2f6acc8c3c7ba0c3412e" + integrity sha512-wYxU3kp5zItbxKmeRYCEplS2MW7DzyBnxPGj+GJVHZEUZiK/nn5Ei1sUFgURDh+X051+zsGe28iud3oHjrYWQQ== + +"@types/bn.js@^4.11.3", "@types/bn.js@^4.11.5": + version "4.11.6" + resolved "https://registry.yarnpkg.com/@types/bn.js/-/bn.js-4.11.6.tgz#c306c70d9358aaea33cd4eda092a742b9505967c" + integrity sha512-pqr857jrp2kPuO9uRjZ3PwnJTjoQy+fcdxvBTvHm6dkmEL9q+hDD/2j/0ELOBPtPnS8LjCX0gI9nbl8lVkadpg== dependencies: - "@improbable-eng/grpc-web" "^0.14.0" - "@types/google-protobuf" "^3.15.5" - google-protobuf "^3.17.3" + "@types/node" "*" -"@textile/threads-client@^2.2.0": - version "2.2.0" - resolved "https://registry.yarnpkg.com/@textile/threads-client/-/threads-client-2.2.0.tgz#57c2014576dfdb37ef568a282b9c12a82d00766e" - integrity sha512-/iK/ETfiYRNIBphhRAATBxdG5HPnt9lf+HMR2m02111GPAVMCuyW8RPFYifI+785UwcoQkeM7E030X1rlNt2iw== - dependencies: - "@improbable-eng/grpc-web" "^0.13.0" - "@textile/context" "^0.12.0" - "@textile/crypto" "^4.2.0" - "@textile/grpc-transport" "^0.5.0" - "@textile/multiaddr" "^0.6.0" - "@textile/security" "^0.9.0" - "@textile/threads-client-grpc" "^1.0.2" - "@textile/threads-id" "^0.6.0" - "@types/to-json-schema" "^0.2.0" - fastestsmallesttextencoderdecoder "^1.0.22" - to-json-schema "^0.2.5" - -"@textile/threads-id@^0.6.0": - version "0.6.0" - resolved "https://registry.yarnpkg.com/@textile/threads-id/-/threads-id-0.6.0.tgz#6eab94e64f8360779749f60d4b55a5c7bf6c2772" - integrity sha512-0ZJ+nWirtySYA9XRZ1lPd6qB9ZrlW0QKh8VxVg1118O8UNljY2+NDlAf5hr4ObfnZEU0oi02Zi3IAciSXv8RWQ== +"@types/bn.js@^5.1.0": + version "5.1.0" + resolved "https://registry.yarnpkg.com/@types/bn.js/-/bn.js-5.1.0.tgz#32c5d271503a12653c62cf4d2b45e6eab8cebc68" + integrity sha512-QSSVYj7pYFN49kW77o2s9xTCwZ8F2xLbjLLSEVh8D2F4JUhZtPAGOFLTD+ffqksBx/u4cE/KImFjyhqCjn/LIA== dependencies: - "@consento/sync-randombytes" "^1.0.4" - multibase "^3.1.0" - varint "^6.0.0" + "@types/node" "*" + +"@types/chai@^4.2.21": + version "4.2.21" + resolved "https://registry.yarnpkg.com/@types/chai/-/chai-4.2.21.tgz#9f35a5643129df132cf3b5c1ec64046ea1af0650" + integrity sha512-yd+9qKmJxm496BOV9CMNaey8TWsikaZOwMRwPHQIjcOJM9oV+fi9ZMNw3JsVnbEEbo2gRTDnGEBv8pjyn67hNg== -"@textile/users-grpc@2.6.6": - version "2.6.6" - resolved "https://registry.yarnpkg.com/@textile/users-grpc/-/users-grpc-2.6.6.tgz#dfec3ffc8f960892839c4e2e678af57b79f0d09a" - integrity sha512-pzI/jAWJx1/NqvSj03ukn2++aDNRdnyjwgbxh2drrsuxRZyCQEa1osBAA+SDkH5oeRf6dgxrc9dF8W1Ttjn0Yw== +"@types/concat-stream@^1.6.0": + version "1.6.0" + resolved "https://registry.yarnpkg.com/@types/concat-stream/-/concat-stream-1.6.0.tgz#394dbe0bb5fee46b38d896735e8b68ef2390d00d" + integrity sha1-OU2+C7X+5Gs42JZzXoto7yOQ0A0= dependencies: - "@improbable-eng/grpc-web" "^0.13.0" - "@types/google-protobuf" "^3.7.4" - google-protobuf "^3.13.0" + "@types/node" "*" -"@textile/users@^6.1.0": - version "6.1.0" - resolved "https://registry.yarnpkg.com/@textile/users/-/users-6.1.0.tgz#7addccc4403b6c094f4796297100662204ab3915" - integrity sha512-Pqf22WR+L7tt4KvhlAFyXSAy767iAUua+ODtKrd59iQPiPH33vo/H9BvtauCAAJHAoFJJksJUJFVwFEDAK30OQ== - dependencies: - "@improbable-eng/grpc-web" "^0.13.0" - "@textile/buckets-grpc" "2.6.6" - "@textile/context" "^0.12.0" - "@textile/crypto" "^4.2.0" - "@textile/grpc-authentication" "^3.4.0" - "@textile/grpc-connection" "^2.5.0" - "@textile/grpc-transport" "^0.5.0" - "@textile/hub-grpc" "2.6.6" - "@textile/hub-threads-client" "^5.4.0" - "@textile/security" "^0.9.0" - "@textile/threads-id" "^0.6.0" - "@textile/users-grpc" "2.6.6" - event-iterator "^2.0.0" - loglevel "^1.7.0" - -"@truffle/abi-utils@^0.1.0": - version "0.1.6" - resolved "https://registry.yarnpkg.com/@truffle/abi-utils/-/abi-utils-0.1.6.tgz#d754a54caec2577efaa05f0ca66c58e73676884e" - integrity sha512-A9bW5XHywPNHod8rsu4x4eyM4C6k3eMeyOCd47edhiA/e9kgAVp6J3QDzKoHS8nuJ2qiaq+jk5bLnAgNWAHYyQ== +"@types/form-data@0.0.33": + version "0.0.33" + resolved "https://registry.yarnpkg.com/@types/form-data/-/form-data-0.0.33.tgz#c9ac85b2a5fd18435b8c85d9ecb50e6d6c893ff8" + integrity sha1-yayFsqX9GENbjIXZ7LUObWyJP/g= dependencies: - change-case "3.0.2" - faker "^5.3.1" - fast-check "^2.12.1" + "@types/node" "*" -"@truffle/abi-utils@^0.2.4": - version "0.2.4" - resolved "https://registry.yarnpkg.com/@truffle/abi-utils/-/abi-utils-0.2.4.tgz#9fc8bfc95bbe29a33cca3ab9028865b078e2f051" - integrity sha512-ICr5Sger6r5uj2G5GN9Zp9OQDCaCqe2ZyAEyvavDoFB+jX0zZFUCfDnv5jllGRhgzdYJ3mec2390mjUyz9jSZA== +"@types/glob@^7.1.1": + version "7.1.3" + resolved "https://registry.yarnpkg.com/@types/glob/-/glob-7.1.3.tgz#e6ba80f36b7daad2c685acd9266382e68985c183" + integrity sha512-SEYeGAIQIQX8NN6LDKprLjbrd5dARM5EXsd8GI/A5l0apYI1fGMWgPHSe4ZKL4eozlAyI+doUE9XbYS4xCkQ1w== dependencies: - change-case "3.0.2" - faker "^5.3.1" - fast-check "^2.12.1" + "@types/minimatch" "*" + "@types/node" "*" -"@truffle/blockchain-utils@^0.0.31": - version "0.0.31" - resolved "https://registry.yarnpkg.com/@truffle/blockchain-utils/-/blockchain-utils-0.0.31.tgz#0503d9fb2ce3e05c167c27294927f2f88d70a24d" - integrity sha512-BFo/nyxwhoHqPrqBQA1EAmSxeNnspGLiOCMa9pAL7WYSjyNBlrHaqCMO/F2O87G+NUK/u06E70DiSP2BFP0ZZw== +"@types/json-schema@^7.0.7": + version "7.0.7" + resolved "https://registry.yarnpkg.com/@types/json-schema/-/json-schema-7.0.7.tgz#98a993516c859eb0d5c4c8f098317a9ea68db9ad" + integrity sha512-cxWFQVseBm6O9Gbw1IWb8r6OS4OhSt3hPZLkFApLjM8TEXROBuQGLAH2i2gZpcXdLBIrpXuTDhH7Vbm1iXmNGA== -"@truffle/code-utils@^1.2.29": - version "1.2.29" - resolved "https://registry.yarnpkg.com/@truffle/code-utils/-/code-utils-1.2.29.tgz#1225a75fdb177cd2a1d8e0d72e2222d6a1bb484a" - integrity sha512-BLNDjFLhDHCJjmdVSTObEgQDT3QFi1Yif20fDHt53kwjRH6T+MGcvaW8b9Yk8r3qpeFAYJrT2yEi02JBTr/hNg== +"@types/levelup@^4.3.0": + version "4.3.1" + resolved "https://registry.yarnpkg.com/@types/levelup/-/levelup-4.3.1.tgz#7a53b9fd510716e11b2065332790fdf5f9b950b9" + integrity sha512-n//PeTpbHLjMLTIgW5B/g06W/6iuTBHuvUka2nFL9APMSVMNe2r4enADfu3CIE9IyV9E+uquf9OEQQqrDeg24A== dependencies: - cbor "^5.1.0" + "@types/abstract-leveldown" "*" + "@types/node" "*" -"@truffle/codec@^0.11.11": - version "0.11.11" - resolved "https://registry.yarnpkg.com/@truffle/codec/-/codec-0.11.11.tgz#4f159d6df96fdec99364da58c2007a3d45be3beb" - integrity sha512-KH4n16SFJlML0wnVFeNv6SxUHhGPQEJI8AIAaM5a5RCtb4+evQAwqOz3vxdoeh8aOTHLeRmZI/PnUyigfbOXxA== - dependencies: - "@truffle/abi-utils" "^0.2.4" - "@truffle/compile-common" "^0.7.17" - big.js "^5.2.2" - bn.js "^5.1.3" - cbor "^5.1.0" - debug "^4.3.1" - lodash.clonedeep "^4.5.0" - lodash.escaperegexp "^4.1.2" - lodash.partition "^4.6.0" - lodash.sum "^4.0.2" - semver "^7.3.4" - utf8 "^3.0.0" - web3-utils "1.5.2" +"@types/lru-cache@^5.1.0": + version "5.1.0" + resolved "https://registry.yarnpkg.com/@types/lru-cache/-/lru-cache-5.1.0.tgz#57f228f2b80c046b4a1bd5cac031f81f207f4f03" + integrity sha512-RaE0B+14ToE4l6UqdarKPnXwVDuigfFv+5j9Dze/Nqr23yyuqdNvzcZi3xB+3Agvi5R4EOgAksfv3lXX4vBt9w== -"@truffle/codec@^0.7.1": - version "0.7.1" - resolved "https://registry.yarnpkg.com/@truffle/codec/-/codec-0.7.1.tgz#2ef0fa40109040796afbebb8812c872122100ae4" - integrity sha512-mNd6KnW6J0UB1zafGBXDlTEbCMvWpmPAJmzv7aF/nAIaN/F8UePSCiQ1OTQP39Rprj6GFiCCaWVnBAwum6UGSg== - dependencies: - big.js "^5.2.2" - bn.js "^4.11.8" - borc "^2.1.2" - debug "^4.1.0" - lodash.clonedeep "^4.5.0" - lodash.escaperegexp "^4.1.2" - lodash.partition "^4.6.0" - lodash.sum "^4.0.2" - semver "^6.3.0" - source-map-support "^0.5.19" - utf8 "^3.0.0" - web3-utils "1.2.9" - -"@truffle/compile-common@^0.7.17": - version "0.7.17" - resolved "https://registry.yarnpkg.com/@truffle/compile-common/-/compile-common-0.7.17.tgz#5f37ba6a6f625d2b0a8545bce43cd34a555c5abb" - integrity sha512-N+6iFJQ7C7rT3hKVYBZDK1wqRfUs69FbSHZdevnaaXrL3he0I3oDjLoNCpsZXwnWZjFLKtoAazai5VdHO4useg== - dependencies: - "@truffle/contract-sources" "^0.1.12" - "@truffle/error" "^0.0.14" - "@truffle/expect" "^0.0.18" - colors "^1.4.0" - debug "^4.3.1" +"@types/minimatch@*": + version "3.0.4" + resolved "https://registry.yarnpkg.com/@types/minimatch/-/minimatch-3.0.4.tgz#f0ec25dbf2f0e4b18647313ac031134ca5b24b21" + integrity sha512-1z8k4wzFnNjVK/tlxvrWuK5WMt6mydWWP7+zvH5eFep4oj+UkrfiJTRtjCeBXNpwaA/FYqqtb4/QS4ianFpIRA== -"@truffle/config@^1.3.5": - version "1.3.5" - resolved "https://registry.yarnpkg.com/@truffle/config/-/config-1.3.5.tgz#0c36367a258fe4ceb2b405bfd45bd1f27516b21f" - integrity sha512-Mkg3rKRqEM89/gSzuKRtu8tJyDjc2bxzrZZEdv89vsDbjqw5Un1A9t44zKss84k+xdhB3iRUCP47U0fm9fi4NQ== +"@types/mkdirp@^0.5.2": + version "0.5.2" + resolved "https://registry.yarnpkg.com/@types/mkdirp/-/mkdirp-0.5.2.tgz#503aacfe5cc2703d5484326b1b27efa67a339c1f" + integrity sha512-U5icWpv7YnZYGsN4/cmh3WD2onMY0aJIiTE6+51TwJCttdHvtCYmkBNOobHlXwrJRL0nkH9jH4kD+1FAdMN4Tg== dependencies: - "@truffle/error" "^0.0.14" - "@truffle/events" "^0.0.14" - "@truffle/provider" "^0.2.38" - configstore "^4.0.0" - find-up "^2.1.0" - lodash.assignin "^4.2.0" - lodash.merge "^4.6.2" - lodash.pick "^4.4.0" - module "^1.2.5" - original-require "^1.0.1" + "@types/node" "*" -"@truffle/contract-schema@^3.3.1", "@truffle/contract-schema@^3.4.3": - version "3.4.3" - resolved "https://registry.yarnpkg.com/@truffle/contract-schema/-/contract-schema-3.4.3.tgz#c1bcde343f70b9438314202e103a7d77d684603c" - integrity sha512-pgaTgF4CKIpkqVYZVr2qGTxZZQOkNCWOXW9VQpKvLd4G0SNF2Y1gyhrFbBhoOUtYlbbSty+IEFFHsoAqpqlvpQ== - dependencies: - ajv "^6.10.0" - debug "^4.3.1" +"@types/mocha@^9.0.0": + version "9.0.0" + resolved "https://registry.yarnpkg.com/@types/mocha/-/mocha-9.0.0.tgz#3205bcd15ada9bc681ac20bef64e9e6df88fd297" + integrity sha512-scN0hAWyLVAvLR9AyW7HoFF5sJZglyBsbPuHO4fv7JRvfmPBMfp1ozWqOf/e4wwPNxezBZXRfWzMb6iFLgEVRA== -"@truffle/contract-sources@^0.1.12": - version "0.1.12" - resolved "https://registry.yarnpkg.com/@truffle/contract-sources/-/contract-sources-0.1.12.tgz#7a3dfec1bcf6f3632c0f54e522fb6f12b0bdf34b" - integrity sha512-7OH8P+N4n2LewbNiVpuleshPqj8G7n9Qkd5ot79sZ/R6xIRyXF05iBtg3/IbjIzOeQCrCE9aYUHNe2go9RuM0g== - dependencies: - debug "^4.3.1" - glob "^7.1.6" +"@types/node@*": + version "15.3.0" + resolved "https://registry.yarnpkg.com/@types/node/-/node-15.3.0.tgz#d6fed7d6bc6854306da3dea1af9f874b00783e26" + integrity sha512-8/bnjSZD86ZfpBsDlCIkNXIvm+h6wi9g7IqL+kmFkQ+Wvu3JrasgLElfiPgoo8V8vVfnEi0QVS12gbl94h9YsQ== -"@truffle/contract@^4.3.31": - version "4.3.31" - resolved "https://registry.yarnpkg.com/@truffle/contract/-/contract-4.3.31.tgz#9f801458d264fe1cdddd4d0ed422ea8dbca83b2c" - integrity sha512-x6UtNLWEyZFaryvkZ6kbsFB5UzkA6vqRVji1idU3W1x1eHQEpQFS1zRinxgmA3NxnfqetK4d+T0xGrtnNQs4ng== - dependencies: - "@ensdomains/ensjs" "^2.0.1" - "@truffle/blockchain-utils" "^0.0.31" - "@truffle/contract-schema" "^3.4.3" - "@truffle/debug-utils" "^5.1.11" - "@truffle/error" "^0.0.14" - "@truffle/interface-adapter" "^0.5.5" - bignumber.js "^7.2.1" - ethers "^4.0.32" - web3 "1.5.2" - web3-core-helpers "1.5.2" - web3-core-promievent "1.5.2" - web3-eth-abi "1.5.2" - web3-utils "1.5.2" +"@types/node@12.20.20": + version "12.20.20" + resolved "https://registry.yarnpkg.com/@types/node/-/node-12.20.20.tgz#ce3d6c13c15c5e622a85efcd3a1cb2d9c7fa43a6" + integrity sha512-kqmxiJg4AT7rsSPIhO6eoBIx9mNwwpeH42yjtgQh6X2ANSpLpvToMXv+LMFdfxpwG1FZXZ41OGZMiUAtbBLEvg== -"@truffle/db-loader@^0.0.6": - version "0.0.6" - resolved "https://registry.yarnpkg.com/@truffle/db-loader/-/db-loader-0.0.6.tgz#df41101e8c2aeb9005c231c53e5b4210143f15c6" - integrity sha512-b3xetLuWKON/VklFZtzxr2ZmW2an7k8cgh/HIRUmDStIM9QwBULBPQRQnull1R1LMDXxIRKgo4SWga5pnv4bJg== - optionalDependencies: - "@truffle/db" "^0.5.27" - -"@truffle/db@^0.5.27": - version "0.5.27" - resolved "https://registry.yarnpkg.com/@truffle/db/-/db-0.5.27.tgz#a3c1be05687ebb8331204f9ad3ef55b5b15dc14d" - integrity sha512-4uj0CIOAbC77IWxJN8NGoDlmIt7SS6OerdYcLcU5w2x0OUdUCuroVlTzbMVOIZ/2EuAJQ9+SfVGFoUWy7Nf1QQ== - dependencies: - "@truffle/abi-utils" "^0.2.4" - "@truffle/code-utils" "^1.2.29" - "@truffle/config" "^1.3.5" - "@truffle/resolver" "^7.0.25" - apollo-server "^2.18.2" - debug "^4.3.1" - fs-extra "^9.1.0" - graphql "^15.3.0" - graphql-tag "^2.11.0" - graphql-tools "^6.2.4" - json-stable-stringify "^1.0.1" - jsondown "^1.0.0" - pascal-case "^2.0.1" - pluralize "^8.0.0" - pouchdb "7.1.1" - pouchdb-adapter-memory "^7.1.1" - pouchdb-adapter-node-websql "^7.0.0" - pouchdb-debug "^7.1.1" - pouchdb-find "^7.0.0" - web3-utils "1.5.2" - -"@truffle/debug-utils@^5.1.11": - version "5.1.11" - resolved "https://registry.yarnpkg.com/@truffle/debug-utils/-/debug-utils-5.1.11.tgz#3252645f7d5e480ba71fcce92ca5d1f89a8b47b0" - integrity sha512-kLgMBznddc02jK5DU3hT622B+Hn7Rk/VwpvpY1Ayk9sH8X4fDb5e40VfZqdyMHcgsTwVkD/FW3JFS5l6C819HA== - dependencies: - "@truffle/codec" "^0.11.11" - "@trufflesuite/chromafi" "^2.2.2" - bn.js "^5.1.3" - chalk "^2.4.2" - debug "^4.3.1" - highlightjs-solidity "^1.2.2" +"@types/node@^10.0.3": + version "10.17.60" + resolved "https://registry.yarnpkg.com/@types/node/-/node-10.17.60.tgz#35f3d6213daed95da7f0f73e75bcc6980e90597b" + integrity sha512-F0KIgDJfy2nA3zMLmWGKxcH2ZVEtCZXHHdOQs2gSaQ27+lNeEfGxzkIw90aXswATX7AZ33tahPbzy6KAfUreVw== -"@truffle/debugger@^9.1.12": - version "9.1.12" - resolved "https://registry.yarnpkg.com/@truffle/debugger/-/debugger-9.1.12.tgz#b39c071294eccf8a556333fce3bc650a28a07c7f" - integrity sha512-d3m/EvLMih80KDYvm/V0rHoliVnV/ex0OWxCopnSMnjA/UYyf1/j4MNEsxvVCLlK/PfxmDmyl+n/wbv6lUAqfA== - dependencies: - "@truffle/abi-utils" "^0.2.4" - "@truffle/codec" "^0.11.11" - "@truffle/source-map-utils" "^1.3.55" - bn.js "^5.1.3" - debug "^4.3.1" - json-pointer "^0.6.0" - json-stable-stringify "^1.0.1" - lodash.flatten "^4.4.0" - lodash.merge "^4.6.2" - lodash.sum "^4.0.2" - lodash.zipwith "^4.2.0" - redux "^3.7.2" - redux-saga "1.0.0" - remote-redux-devtools "^0.5.12" - reselect-tree "^1.3.4" - semver "^7.3.4" - web3 "1.5.2" - web3-eth-abi "1.5.2" +"@types/node@^12.12.6": + version "12.20.13" + resolved "https://registry.yarnpkg.com/@types/node/-/node-12.20.13.tgz#e743bae112bd779ac9650f907197dd2caa7f0364" + integrity sha512-1x8W5OpxPq+T85OUsHRP6BqXeosKmeXRtjoF39STcdf/UWLqUsoehstZKOi0CunhVqHG17AyZgpj20eRVooK6A== -"@truffle/error@^0.0.14": - version "0.0.14" - resolved "https://registry.yarnpkg.com/@truffle/error/-/error-0.0.14.tgz#59683b5407bede7bddf16d80dc5592f9c5e5fa05" - integrity sha512-utJx+SZYoMqk8wldQG4gCVKhV8GwMJbWY7sLXFT/D8wWZTnE2peX7URFJh/cxkjTRCO328z1s2qewkhyVsu2HA== +"@types/node@^8.0.0": + version "8.10.66" + resolved "https://registry.yarnpkg.com/@types/node/-/node-8.10.66.tgz#dd035d409df322acc83dff62a602f12a5783bbb3" + integrity sha512-tktOkFUA4kXx2hhhrB8bIFb5TbwzS4uOhKEmwiD+NoiL0qtP2OQ9mFldbgD4dV1djrlBYP6eBuQZiWjuHUpqFw== -"@truffle/events@^0.0.14": - version "0.0.14" - resolved "https://registry.yarnpkg.com/@truffle/events/-/events-0.0.14.tgz#8c028f8e682e09b6b8d00d5db05440442722c628" - integrity sha512-lrWT+4tohj7IgK+RHrW1vzcMHUJnutW3Plqlp/STMarZBPXm38k9w2Q2qJm6BdsBd+ZRZLwBVZwkOgwTal5dew== +"@types/pbkdf2@^3.0.0": + version "3.1.0" + resolved "https://registry.yarnpkg.com/@types/pbkdf2/-/pbkdf2-3.1.0.tgz#039a0e9b67da0cdc4ee5dab865caa6b267bb66b1" + integrity sha512-Cf63Rv7jCQ0LaL8tNXmEyqTHuIJxRdlS5vMh1mj5voN4+QFhVZnlZruezqpWYDiJ8UTzhP0VmeLXCmBk66YrMQ== dependencies: - emittery "^0.4.1" - ora "^3.4.0" + "@types/node" "*" -"@truffle/expect@^0.0.18": - version "0.0.18" - resolved "https://registry.yarnpkg.com/@truffle/expect/-/expect-0.0.18.tgz#022353a212942437e1a57ac1191d692347367bb5" - integrity sha512-ZcYladRCgwn3bbhK3jIORVHcUOBk/MXsUxjfzcw+uD+0H1Kodsvcw1AAIaqd5tlyFhdOb7YkOcH0kUES7F8d1A== +"@types/prettier@^2.1.1": + version "2.2.3" + resolved "https://registry.yarnpkg.com/@types/prettier/-/prettier-2.2.3.tgz#ef65165aea2924c9359205bf748865b8881753c0" + integrity sha512-PijRCG/K3s3w1We6ynUKdxEc5AcuuH3NBmMDP8uvKVp6X43UY7NQlTzczakXP3DJR0F4dfNQIGjU2cUeRYs2AA== -"@truffle/interface-adapter@^0.5.5": - version "0.5.5" - resolved "https://registry.yarnpkg.com/@truffle/interface-adapter/-/interface-adapter-0.5.5.tgz#b82911476406b99e4fa9927f77363dc42dfc585c" - integrity sha512-vEutNkWDJWRMVFsyrMD1yZAHY7ZcQhzep7UHiqf6VE4K2Jgl07gK6CG3xco6C2YYBy+7R5Wt0vCTmbVFlPRi7A== - dependencies: - bn.js "^5.1.3" - ethers "^4.0.32" - web3 "1.5.2" +"@types/qs@^6.2.31", "@types/qs@^6.9.4": + version "6.9.6" + resolved "https://registry.yarnpkg.com/@types/qs/-/qs-6.9.6.tgz#df9c3c8b31a247ec315e6996566be3171df4b3b1" + integrity sha512-0/HnwIfW4ki2D8L8c9GVcG5I72s9jP5GSLVF0VIXDW00kmIpA6O33G7a8n59Tmh7Nz0WUC3rSb7PTY/sdW2JzA== -"@truffle/preserve-fs@^0.2.4": - version "0.2.4" - resolved "https://registry.yarnpkg.com/@truffle/preserve-fs/-/preserve-fs-0.2.4.tgz#9218021f805bb521d0175d5e6bb8535dc4f5c340" - integrity sha512-dGHPWw40PpSMZSWTTCrv+wq5vQuSh2Cy1ABdhQOqMkw7F5so4mdLZdgh956em2fLbTx5NwaEV7dwLu2lYM+xwA== +"@types/resolve@^0.0.8": + version "0.0.8" + resolved "https://registry.yarnpkg.com/@types/resolve/-/resolve-0.0.8.tgz#f26074d238e02659e323ce1a13d041eee280e194" + integrity sha512-auApPaJf3NPfe18hSoJkp8EbZzer2ISk7o8mCC3M9he/a04+gbMF97NkpD2S8riMGvm4BMRI59/SZQSaLTKpsQ== dependencies: - "@truffle/preserve" "^0.2.4" + "@types/node" "*" -"@truffle/preserve-to-buckets@^0.2.4": - version "0.2.4" - resolved "https://registry.yarnpkg.com/@truffle/preserve-to-buckets/-/preserve-to-buckets-0.2.4.tgz#8f7616716fb3ba983565ccdcd47bc12af2a96c2b" - integrity sha512-C3NBOY7BK55mURBLrYxUqhz57Mz23Q9ePj+A0J4sJnmWJIsjfzuc2gozXkrzFK5od5Rg786NIoXxPxkb2E0tsA== - dependencies: - "@textile/hub" "^6.0.2" - "@truffle/preserve" "^0.2.4" - cids "^1.1.5" - ipfs-http-client "^48.2.2" - isomorphic-ws "^4.0.1" - iter-tools "^7.0.2" - ws "^7.4.3" - -"@truffle/preserve-to-filecoin@^0.2.4": - version "0.2.4" - resolved "https://registry.yarnpkg.com/@truffle/preserve-to-filecoin/-/preserve-to-filecoin-0.2.4.tgz#cc947aa9d575fb162435fe324f43d88d17ebf082" - integrity sha512-kUzvSUCfpH0gcLxOM8eaYy5dPuJYh/wBpjU5bEkCcrx1HQWr73fR3slS8cO5PNqaxkDvm8RDlh7Lha2JTLp4rw== +"@types/secp256k1@^4.0.1": + version "4.0.2" + resolved "https://registry.yarnpkg.com/@types/secp256k1/-/secp256k1-4.0.2.tgz#20c29a87149d980f64464e56539bf4810fdb5d1d" + integrity sha512-QMg+9v0bbNJ2peLuHRWxzmy0HRJIG6gFZNhaRSp7S3ggSbCCxiqQB2/ybvhXyhHOCequpNkrx7OavNhrWOsW0A== dependencies: - "@truffle/preserve" "^0.2.4" - cids "^1.1.5" - delay "^5.0.0" - filecoin.js "^0.0.5-alpha" + "@types/node" "*" -"@truffle/preserve-to-ipfs@^0.2.4": - version "0.2.4" - resolved "https://registry.yarnpkg.com/@truffle/preserve-to-ipfs/-/preserve-to-ipfs-0.2.4.tgz#a4b17b47574b4a1384557c8728b09d84fbdb13c0" - integrity sha512-17gEBhYcS1Qx/FAfOrlyyKJ74HLYm4xROtHwqRvV9MoDI1k3w/xcL+odRrl5H15NX8vNFOukAI7cGe0NPjQHvQ== +"@typescript-eslint/eslint-plugin@^4.29.2": + version "4.29.2" + resolved "https://registry.yarnpkg.com/@typescript-eslint/eslint-plugin/-/eslint-plugin-4.29.2.tgz#f54dc0a32b8f61c6024ab8755da05363b733838d" + integrity sha512-x4EMgn4BTfVd9+Z+r+6rmWxoAzBaapt4QFqE+d8L8sUtYZYLDTK6VG/y/SMMWA5t1/BVU5Kf+20rX4PtWzUYZg== dependencies: - "@truffle/preserve" "^0.2.4" - ipfs-http-client "^48.2.2" - iter-tools "^7.0.2" + "@typescript-eslint/experimental-utils" "4.29.2" + "@typescript-eslint/scope-manager" "4.29.2" + debug "^4.3.1" + functional-red-black-tree "^1.0.1" + regexpp "^3.1.0" + semver "^7.3.5" + tsutils "^3.21.0" + +"@typescript-eslint/experimental-utils@4.29.2": + version "4.29.2" + resolved "https://registry.yarnpkg.com/@typescript-eslint/experimental-utils/-/experimental-utils-4.29.2.tgz#5f67fb5c5757ef2cb3be64817468ba35c9d4e3b7" + integrity sha512-P6mn4pqObhftBBPAv4GQtEK7Yos1fz/MlpT7+YjH9fTxZcALbiiPKuSIfYP/j13CeOjfq8/fr9Thr2glM9ub7A== + dependencies: + "@types/json-schema" "^7.0.7" + "@typescript-eslint/scope-manager" "4.29.2" + "@typescript-eslint/types" "4.29.2" + "@typescript-eslint/typescript-estree" "4.29.2" + eslint-scope "^5.1.1" + eslint-utils "^3.0.0" + +"@typescript-eslint/parser@^4.29.2": + version "4.29.2" + resolved "https://registry.yarnpkg.com/@typescript-eslint/parser/-/parser-4.29.2.tgz#1c7744f4c27aeb74610c955d3dce9250e95c370a" + integrity sha512-WQ6BPf+lNuwteUuyk1jD/aHKqMQ9jrdCn7Gxt9vvBnzbpj7aWEf+aZsJ1zvTjx5zFxGCt000lsbD9tQPEL8u6g== + dependencies: + "@typescript-eslint/scope-manager" "4.29.2" + "@typescript-eslint/types" "4.29.2" + "@typescript-eslint/typescript-estree" "4.29.2" + debug "^4.3.1" -"@truffle/preserve@^0.2.4": - version "0.2.4" - resolved "https://registry.yarnpkg.com/@truffle/preserve/-/preserve-0.2.4.tgz#1d902cc9df699eee3efdc39820c755b9c5af65c7" - integrity sha512-rMJQr/uvBIpT23uGM9RLqZKwIIR2CyeggVOTuN2UHHljSsxHWcvRCkNZCj/AA3wH3GSOQzCrbYBcs0d/RF6E1A== +"@typescript-eslint/scope-manager@4.29.2": + version "4.29.2" + resolved "https://registry.yarnpkg.com/@typescript-eslint/scope-manager/-/scope-manager-4.29.2.tgz#442b0f029d981fa402942715b1718ac7fcd5aa1b" + integrity sha512-mfHmvlQxmfkU8D55CkZO2sQOueTxLqGvzV+mG6S/6fIunDiD2ouwsAoiYCZYDDK73QCibYjIZmGhpvKwAB5BOA== dependencies: - spinnies "^0.5.1" + "@typescript-eslint/types" "4.29.2" + "@typescript-eslint/visitor-keys" "4.29.2" -"@truffle/provider@^0.2.24", "@truffle/provider@^0.2.38": - version "0.2.38" - resolved "https://registry.yarnpkg.com/@truffle/provider/-/provider-0.2.38.tgz#7a55a9083cdc6b896d40ac0c547ef3acdfcb0d92" - integrity sha512-YKdTUST+G741jFtwgwSpXA0sni5ClLPfhLVUirLxKAiLXI3HnYDl1TAtf/THTPWGMmfd3ygfkXVlxceYuSNuRQ== - dependencies: - "@truffle/error" "^0.0.14" - "@truffle/interface-adapter" "^0.5.5" - web3 "1.5.2" - -"@truffle/provisioner@^0.2.28": - version "0.2.28" - resolved "https://registry.yarnpkg.com/@truffle/provisioner/-/provisioner-0.2.28.tgz#03aaeadf6904d640181dba760e659d4b31c69877" - integrity sha512-3zf2NyBaWtOANBOcYGZyN6V4Zjya0vDyZSNfbPyAPBsb1GalarfZpWWS7ptSiiBRLF+5AmX8jXgNXNSiaQuWtQ== - dependencies: - "@truffle/config" "^1.3.5" - -"@truffle/resolver@^7.0.25": - version "7.0.25" - resolved "https://registry.yarnpkg.com/@truffle/resolver/-/resolver-7.0.25.tgz#2722733223e6a967be79d1dde0462cf67c6605bf" - integrity sha512-tg+ANLciYxa4/eyunVG4l8WcJK0LDpoWe5wgdRH/EZxE2sTW388uu1MUBLo7LLxiB/MXIl88KL73Ra6I69gU3A== - dependencies: - "@truffle/contract" "^4.3.31" - "@truffle/contract-sources" "^0.1.12" - "@truffle/expect" "^0.0.18" - "@truffle/provisioner" "^0.2.28" - abi-to-sol "^0.2.0" - debug "^4.3.1" - detect-installed "^2.0.4" - get-installed-path "^4.0.8" - glob "^7.1.6" +"@typescript-eslint/types@4.29.2": + version "4.29.2" + resolved "https://registry.yarnpkg.com/@typescript-eslint/types/-/types-4.29.2.tgz#fc0489c6b89773f99109fb0aa0aaddff21f52fcd" + integrity sha512-K6ApnEXId+WTGxqnda8z4LhNMa/pZmbTFkDxEBLQAbhLZL50DjeY0VIDCml/0Y3FlcbqXZrABqrcKxq+n0LwzQ== -"@truffle/source-map-utils@^1.3.55": - version "1.3.55" - resolved "https://registry.yarnpkg.com/@truffle/source-map-utils/-/source-map-utils-1.3.55.tgz#a9011a1c0bd4b103031f0a02aa87bd7e87bde9a9" - integrity sha512-ldP7l1Fg0Z2+ub0zimJe5NQViF/yU5Pf6Z4Mjxtvpdt3knqqTZMrqMMz0W5lbMnob4jGgWOYRV2UIw7mQg9mOA== +"@typescript-eslint/typescript-estree@4.29.2": + version "4.29.2" + resolved "https://registry.yarnpkg.com/@typescript-eslint/typescript-estree/-/typescript-estree-4.29.2.tgz#a0ea8b98b274adbb2577100ba545ddf8bf7dc219" + integrity sha512-TJ0/hEnYxapYn9SGn3dCnETO0r+MjaxtlWZ2xU+EvytF0g4CqTpZL48SqSNn2hXsPolnewF30pdzR9a5Lj3DNg== dependencies: - "@truffle/code-utils" "^1.2.29" - "@truffle/codec" "^0.11.11" + "@typescript-eslint/types" "4.29.2" + "@typescript-eslint/visitor-keys" "4.29.2" debug "^4.3.1" - json-pointer "^0.6.0" - node-interval-tree "^1.3.3" - web3-utils "1.5.2" + globby "^11.0.3" + is-glob "^4.0.1" + semver "^7.3.5" + tsutils "^3.21.0" -"@trufflesuite/chromafi@^2.2.2": - version "2.2.2" - resolved "https://registry.yarnpkg.com/@trufflesuite/chromafi/-/chromafi-2.2.2.tgz#d3fc507aa8504faffc50fb892cedcfe98ff57f77" - integrity sha512-mItQwVBsb8qP/vaYHQ1kDt2vJLhjoEXJptT6y6fJGvFophMFhOI/NsTVUa0nJL1nyMeFiS6hSYuNVdpQZzB1gA== +"@typescript-eslint/visitor-keys@4.29.2": + version "4.29.2" + resolved "https://registry.yarnpkg.com/@typescript-eslint/visitor-keys/-/visitor-keys-4.29.2.tgz#d2da7341f3519486f50655159f4e5ecdcb2cd1df" + integrity sha512-bDgJLQ86oWHJoZ1ai4TZdgXzJxsea3Ee9u9wsTAvjChdj2WLcVsgWYAPeY7RQMn16tKrlQaBnpKv7KBfs4EQag== dependencies: - ansi-mark "^1.0.0" - ansi-regex "^3.0.0" - array-uniq "^1.0.3" - camelcase "^4.1.0" - chalk "^2.3.2" - cheerio "^1.0.0-rc.2" - detect-indent "^5.0.0" - he "^1.1.1" - highlight.js "^10.4.1" - lodash.merge "^4.6.2" - min-indent "^1.0.0" - strip-ansi "^4.0.0" - strip-indent "^2.0.0" - super-split "^1.1.0" - -"@tsconfig/node10@^1.0.7": - version "1.0.8" - resolved "https://registry.yarnpkg.com/@tsconfig/node10/-/node10-1.0.8.tgz#c1e4e80d6f964fbecb3359c43bd48b40f7cadad9" - integrity sha512-6XFfSQmMgq0CFLY1MslA/CPUfhIL919M1rMsa5lP2P097N2Wd1sSX0tx1u4olM16fLNhtHZpRhedZJphNJqmZg== + "@typescript-eslint/types" "4.29.2" + eslint-visitor-keys "^2.0.0" -"@tsconfig/node12@^1.0.7": - version "1.0.9" - resolved "https://registry.yarnpkg.com/@tsconfig/node12/-/node12-1.0.9.tgz#62c1f6dee2ebd9aead80dc3afa56810e58e1a04c" - integrity sha512-/yBMcem+fbvhSREH+s14YJi18sp7J9jpuhYByADT2rypfajMZZN4WQ6zBGgBKp53NKmqI36wFYDb3yaMPurITw== +"@ungap/promise-all-settled@1.1.2": + version "1.1.2" + resolved "https://registry.yarnpkg.com/@ungap/promise-all-settled/-/promise-all-settled-1.1.2.tgz#aa58042711d6e3275dd37dc597e5d31e8c290a44" + integrity sha512-sL/cEvJWAnClXw0wHk85/2L0G6Sj8UB0Ctc1TEMbKSsmpRosqhwj9gWgFRZSrBr2f9tiXISwNhCPmlfqUqyb9Q== -"@tsconfig/node14@^1.0.0": - version "1.0.1" - resolved "https://registry.yarnpkg.com/@tsconfig/node14/-/node14-1.0.1.tgz#95f2d167ffb9b8d2068b0b235302fafd4df711f2" - integrity sha512-509r2+yARFfHHE7T6Puu2jjkoycftovhXRqW328PDXTVGKihlb1P8Z9mMZH04ebyajfRY7dedfGynlrFHJUQCg== +"@yarnpkg/lockfile@^1.1.0": + version "1.1.0" + resolved "https://registry.yarnpkg.com/@yarnpkg/lockfile/-/lockfile-1.1.0.tgz#e77a97fbd345b76d83245edcd17d393b1b41fb31" + integrity sha512-GpSwvyXOcOOlV70vbnzjj4fW5xW/FdUF6nQEt1ENy7m4ZCczi1+/buVUPAqmGfqznsORNFzUMjctTIp8a9tuCQ== -"@tsconfig/node16@^1.0.2": - version "1.0.2" - resolved "https://registry.yarnpkg.com/@tsconfig/node16/-/node16-1.0.2.tgz#423c77877d0569db20e1fc80885ac4118314010e" - integrity sha512-eZxlbI8GZscaGS7kkc/trHTT5xgrjH3/1n2JDwusC9iahPKWMRvRjJSAN5mCXviuTGQ/lHnhvv8Q1YTpnfz9gA== +abbrev@1: + version "1.1.1" + resolved "https://registry.yarnpkg.com/abbrev/-/abbrev-1.1.1.tgz#f8f2c887ad10bf67f634f005b6987fed3179aac8" + integrity sha512-nne9/IiQ/hzIhY6pdDnbBtz7DjPTKrY00P/zvPSm5pOFkl6xuGrGnXn/VtTNNfNtAfZ9/1RtehkszU9qcTii0Q== -"@typechain/truffle-v5@^5.0.0": - version "5.0.0" - resolved "https://registry.yarnpkg.com/@typechain/truffle-v5/-/truffle-v5-5.0.0.tgz#01ab526b3986e06f8f2720d4a88dd11b6d0fe11d" - integrity sha512-iyXay2ImCB6ATNvkW5w6ojm0Si0kU4kb7g480O/PzSNOYO1b2MovZHrQbVS+KBMrRlcy7UaFTdrVPpg8j3vUZQ== +abbrev@1.0.x: + version "1.0.9" + resolved "https://registry.yarnpkg.com/abbrev/-/abbrev-1.0.9.tgz#91b4792588a7738c25f35dd6f63752a2f8776135" + integrity sha1-kbR5JYinc4wl813W9jdSovh3YTU= -"@typechain/web3-v1@^3.0.0": +abort-controller@^3.0.0: version "3.0.0" - resolved "https://registry.yarnpkg.com/@typechain/web3-v1/-/web3-v1-3.0.0.tgz#8aaeeae0e1bbb871dc0d25071e8ab9d88440fb92" - integrity sha512-7N9yGzGOmyW8HJAa3U+0oUqc1JxZcMUIh6Fn4jMkl1z98rKyrzvrllXzT2QmqJ9etZKiyI39AVVly/YPYKTCxQ== - -"@types/accepts@*", "@types/accepts@^1.3.5": - version "1.3.5" - resolved "https://registry.yarnpkg.com/@types/accepts/-/accepts-1.3.5.tgz#c34bec115cfc746e04fe5a059df4ce7e7b391575" - integrity sha512-jOdnI/3qTpHABjM5cx1Hc0sKsPoYCp+DP/GJRGtDlPd7fiV9oXGGIcjW/ZOxLIvjGz8MA+uMZI9metHlgqbgwQ== + resolved "https://registry.yarnpkg.com/abort-controller/-/abort-controller-3.0.0.tgz#eaf54d53b62bae4138e809ca225c8439a6efb392" + integrity sha512-h8lQ8tacZYnR3vNQTgibj+tODHI5/+l06Au2Pcriv/Gmet0eaj4TwWH41sO9wnHDiQsEj19q0drzdWdeAHtweg== dependencies: - "@types/node" "*" + event-target-shim "^5.0.0" -"@types/bn.js@^4.11.3", "@types/bn.js@^4.11.4", "@types/bn.js@^4.11.5": - version "4.11.6" - resolved "https://registry.yarnpkg.com/@types/bn.js/-/bn.js-4.11.6.tgz#c306c70d9358aaea33cd4eda092a742b9505967c" - integrity sha512-pqr857jrp2kPuO9uRjZ3PwnJTjoQy+fcdxvBTvHm6dkmEL9q+hDD/2j/0ELOBPtPnS8LjCX0gI9nbl8lVkadpg== +abstract-leveldown@^6.2.1: + version "6.3.0" + resolved "https://registry.yarnpkg.com/abstract-leveldown/-/abstract-leveldown-6.3.0.tgz#d25221d1e6612f820c35963ba4bd739928f6026a" + integrity sha512-TU5nlYgta8YrBMNpc9FwQzRbiXsj49gsALsXadbGHt9CROPzX5fB0rWDR5mtdpOOKa5XqRFpbj1QroPAoPzVjQ== dependencies: - "@types/node" "*" + buffer "^5.5.0" + immediate "^3.2.3" + level-concat-iterator "~2.0.0" + level-supports "~1.0.0" + xtend "~4.0.0" -"@types/bn.js@^5.1.0": - version "5.1.0" - resolved "https://registry.yarnpkg.com/@types/bn.js/-/bn.js-5.1.0.tgz#32c5d271503a12653c62cf4d2b45e6eab8cebc68" - integrity sha512-QSSVYj7pYFN49kW77o2s9xTCwZ8F2xLbjLLSEVh8D2F4JUhZtPAGOFLTD+ffqksBx/u4cE/KImFjyhqCjn/LIA== +abstract-leveldown@~6.2.1: + version "6.2.3" + resolved "https://registry.yarnpkg.com/abstract-leveldown/-/abstract-leveldown-6.2.3.tgz#036543d87e3710f2528e47040bc3261b77a9a8eb" + integrity sha512-BsLm5vFMRUrrLeCcRc+G0t2qOaTzpoJQLOubq2XM72eNpjF5UdU5o/5NvlNhx95XHcAvcl8OMXr4mlg/fRgUXQ== dependencies: - "@types/node" "*" + buffer "^5.5.0" + immediate "^3.2.3" + level-concat-iterator "~2.0.0" + level-supports "~1.0.0" + xtend "~4.0.0" -"@types/body-parser@*", "@types/body-parser@1.19.0": - version "1.19.0" - resolved "https://registry.yarnpkg.com/@types/body-parser/-/body-parser-1.19.0.tgz#0685b3c47eb3006ffed117cdd55164b61f80538f" - integrity sha512-W98JrE0j2K78swW4ukqMleo8R7h/pFETjM2DQ90MF6XK2i4LO4W3gQ71Lt4w3bfm2EvVSyWHplECvB5sK22yFQ== +accepts@~1.3.7: + version "1.3.7" + resolved "https://registry.yarnpkg.com/accepts/-/accepts-1.3.7.tgz#531bc726517a3b2b41f850021c6cc15eaab507cd" + integrity sha512-Il80Qs2WjYlJIBNzNkK6KYqlVMTbZLXgHx2oT0pU/fjRHyEp+PEfEPY0R3WCwAGVOtauxh1hOxNgIf5bv7dQpA== dependencies: - "@types/connect" "*" - "@types/node" "*" + mime-types "~2.1.24" + negotiator "0.6.2" -"@types/cbor@^2.0.0": - version "2.0.0" - resolved "https://registry.yarnpkg.com/@types/cbor/-/cbor-2.0.0.tgz#c627afc2ee22f23f2337fecb34628a4f97c6afbb" - integrity sha1-xievwu4i8j8jN/7LNGKKT5fGr7s= - dependencies: - "@types/node" "*" +acorn-jsx@^5.0.0, acorn-jsx@^5.3.1: + version "5.3.1" + resolved "https://registry.yarnpkg.com/acorn-jsx/-/acorn-jsx-5.3.1.tgz#fc8661e11b7ac1539c47dbfea2e72b3af34d267b" + integrity sha512-K0Ptm/47OKfQRpNQ2J/oIN/3QYiK6FwW+eJbILhsdxh2WTLdl+30o8aGdTbm5JbffpFFAg/g+zi1E+jvJha5ng== -"@types/chai-as-promised@^7.1.4": - version "7.1.4" - resolved "https://registry.yarnpkg.com/@types/chai-as-promised/-/chai-as-promised-7.1.4.tgz#caf64e76fb056b8c8ced4b761ed499272b737601" - integrity sha512-1y3L1cHePcIm5vXkh1DSGf/zQq5n5xDKG1fpCvf18+uOkpce0Z1ozNFPkyWsVswK7ntN1sZBw3oU6gmN+pDUcA== - dependencies: - "@types/chai" "*" +acorn-walk@^8.1.1: + version "8.1.1" + resolved "https://registry.yarnpkg.com/acorn-walk/-/acorn-walk-8.1.1.tgz#3ddab7f84e4a7e2313f6c414c5b7dac85f4e3ebc" + integrity sha512-FbJdceMlPHEAWJOILDk1fXD8lnTlEIWFkqtfk+MvmL5q/qlHfN7GEHcsFZWt/Tea9jRNPWUZG4G976nqAAmU9w== -"@types/chai@*", "@types/chai@^4.1.4": - version "4.2.9" - resolved "https://registry.yarnpkg.com/@types/chai/-/chai-4.2.9.tgz#194332625ed2ae914aef00b8d5ca3b77e7924cc6" - integrity sha512-NeXgZj+MFL4izGqA4sapdYzkzQG+MtGra9vhQ58dnmDY++VgJaRUws+aLVV5zRJCYJl/8s9IjMmhiUw1WsKSmw== +acorn@^6.0.7: + version "6.4.2" + resolved "https://registry.yarnpkg.com/acorn/-/acorn-6.4.2.tgz#35866fd710528e92de10cf06016498e47e39e1e6" + integrity sha512-XtGIhXwF8YM8bJhGxG5kXgjkEuNGLTkoYqVE+KMR+aspr4KGYmKYg7yUe3KghyQ9yheNwLnjmzh/7+gfDBmHCQ== -"@types/chai@^4.2.21": - version "4.2.21" - resolved "https://registry.yarnpkg.com/@types/chai/-/chai-4.2.21.tgz#9f35a5643129df132cf3b5c1ec64046ea1af0650" - integrity sha512-yd+9qKmJxm496BOV9CMNaey8TWsikaZOwMRwPHQIjcOJM9oV+fi9ZMNw3JsVnbEEbo2gRTDnGEBv8pjyn67hNg== +acorn@^7.4.0: + version "7.4.1" + resolved "https://registry.yarnpkg.com/acorn/-/acorn-7.4.1.tgz#feaed255973d2e77555b83dbc08851a6c63520fa" + integrity sha512-nQyp0o1/mNdbTO1PO6kHkwSrmgZ0MT/jCCpNiwbUjGoRN4dlBhqJtoQuCnEOKzgTVwg0ZWiCoQy6SxMebQVh8A== -"@types/concat-stream@^1.6.0": - version "1.6.0" - resolved "https://registry.yarnpkg.com/@types/concat-stream/-/concat-stream-1.6.0.tgz#394dbe0bb5fee46b38d896735e8b68ef2390d00d" - integrity sha1-OU2+C7X+5Gs42JZzXoto7yOQ0A0= - dependencies: - "@types/node" "*" +acorn@^8.4.1: + version "8.4.1" + resolved "https://registry.yarnpkg.com/acorn/-/acorn-8.4.1.tgz#56c36251fc7cabc7096adc18f05afe814321a28c" + integrity sha512-asabaBSkEKosYKMITunzX177CXxQ4Q8BSSzMTKD+FefUhipQC70gfW5SiUDhYQ3vk8G+81HqQk7Fv9OXwwn9KA== -"@types/connect@*": - version "3.4.34" - resolved "https://registry.yarnpkg.com/@types/connect/-/connect-3.4.34.tgz#170a40223a6d666006d93ca128af2beb1d9b1901" - integrity sha512-ePPA/JuI+X0vb+gSWlPKOY0NdNAie/rPUqX2GUPpbZwiKTkSPhjXWuee47E4MtE54QVzGCQMQkAL6JhV2E1+cQ== - dependencies: - "@types/node" "*" +address@^1.0.1: + version "1.1.2" + resolved "https://registry.yarnpkg.com/address/-/address-1.1.2.tgz#bf1116c9c758c51b7a933d296b72c221ed9428b6" + integrity sha512-aT6camzM4xEA54YVJYSqxz1kv4IHnQZRtThJJHhUMRExaU5spC7jX5ugSwTaTgJliIgs4VhZOk7htClvQ/LmRA== -"@types/content-disposition@*": - version "0.5.3" - resolved "https://registry.yarnpkg.com/@types/content-disposition/-/content-disposition-0.5.3.tgz#0aa116701955c2faa0717fc69cd1596095e49d96" - integrity sha512-P1bffQfhD3O4LW0ioENXUhZ9OIa0Zn+P7M+pWgkCKaT53wVLSq0mrKksCID/FGHpFhRSxRGhgrQmfhRuzwtKdg== +adm-zip@^0.4.16: + version "0.4.16" + resolved "https://registry.yarnpkg.com/adm-zip/-/adm-zip-0.4.16.tgz#cf4c508fdffab02c269cbc7f471a875f05570365" + integrity sha512-TFi4HBKSGfIKsK5YCkKaaFG2m4PEDyViZmEwof3MTIgzimHLto6muaHVpbrljdIvIrFZzEq/p4nafOeLcYegrg== -"@types/cookies@*": - version "0.7.6" - resolved "https://registry.yarnpkg.com/@types/cookies/-/cookies-0.7.6.tgz#71212c5391a976d3bae57d4b09fac20fc6bda504" - integrity sha512-FK4U5Qyn7/Sc5ih233OuHO0qAkOpEcD/eG6584yEiLKizTFRny86qHLe/rej3HFQrkBuUjF4whFliAdODbVN/w== - dependencies: - "@types/connect" "*" - "@types/express" "*" - "@types/keygrip" "*" - "@types/node" "*" +aes-js@3.0.0: + version "3.0.0" + resolved "https://registry.yarnpkg.com/aes-js/-/aes-js-3.0.0.tgz#e21df10ad6c2053295bcbb8dab40b09dbea87e4d" + integrity sha1-4h3xCtbCBTKVvLuNq0Cwnb6ofk0= -"@types/cors@2.8.8": - version "2.8.8" - resolved "https://registry.yarnpkg.com/@types/cors/-/cors-2.8.8.tgz#317a8d8561995c60e35b9e0fcaa8d36660c98092" - integrity sha512-fO3gf3DxU2Trcbr75O7obVndW/X5k8rJNZkLXlQWStTHhP71PkRqjwPIEI0yMnJdg9R9OasjU+Bsr+Hr1xy/0w== +agent-base@6: + version "6.0.2" + resolved "https://registry.yarnpkg.com/agent-base/-/agent-base-6.0.2.tgz#49fff58577cfee3f37176feab4c22e00f86d7f77" + integrity sha512-RZNwNclF7+MS/8bDg70amg32dyeZGZxiDuQmZxKLAlQjr3jGyLx+4Kkk58UO7D2QdgFIQCovuSuZESne6RG6XQ== dependencies: - "@types/express" "*" + debug "4" -"@types/ed2curve@^0.2.2": - version "0.2.2" - resolved "https://registry.yarnpkg.com/@types/ed2curve/-/ed2curve-0.2.2.tgz#8f8bc7e2c9a5895a941c63a4f7acd7a6a62a5b15" - integrity sha512-G1sTX5xo91ydevQPINbL2nfgVAj/s1ZiqZxC8OCWduwu+edoNGUm5JXtTkg9F3LsBZbRI46/0HES4CPUE2wc9g== +ajv@^6.10.0, ajv@^6.10.2, ajv@^6.12.3, ajv@^6.12.4, ajv@^6.6.1, ajv@^6.9.1: + version "6.12.6" + resolved "https://registry.yarnpkg.com/ajv/-/ajv-6.12.6.tgz#baf5a62e802b07d977034586f8c3baf5adf26df4" + integrity sha512-j3fVLgvTo527anyYyJOGTYJbG+vnnQYvE0m5mmkc1TK+nxAppkCLMIL0aZ4dblVCNoGShhm+kzE4ZUykBoMg4g== dependencies: - tweetnacl "^1.0.0" + fast-deep-equal "^3.1.1" + fast-json-stable-stringify "^2.0.0" + json-schema-traverse "^0.4.1" + uri-js "^4.2.2" -"@types/ethereumjs-abi@^0.6.3": - version "0.6.3" - resolved "https://registry.yarnpkg.com/@types/ethereumjs-abi/-/ethereumjs-abi-0.6.3.tgz#eb5ed09fd86b9e2b1c0eb75d1e9bc29c50715c86" - integrity sha512-DnHvqPkrJS5w4yZexTa5bdPNb8IyKPYciou0+zZCIg5fpzvGtyptTvshy0uZKzti2/k/markwjlxWRBWt7Mjuw== +ajv@^8.0.1: + version "8.4.0" + resolved "https://registry.yarnpkg.com/ajv/-/ajv-8.4.0.tgz#48984fdb2ce225cab15795f0772a8d85669075e4" + integrity sha512-7QD2l6+KBSLwf+7MuYocbWvRPdOu63/trReTLu2KFwkgctnub1auoF+Y1WYcm09CTM7quuscrzqmASaLHC/K4Q== dependencies: - "@types/node" "*" + fast-deep-equal "^3.1.1" + json-schema-traverse "^1.0.0" + require-from-string "^2.0.2" + uri-js "^4.2.2" -"@types/events@*": - version "3.0.0" - resolved "https://registry.yarnpkg.com/@types/events/-/events-3.0.0.tgz#2862f3f58a9a7f7c3e78d79f130dd4d71c25c2a7" - integrity sha512-EaObqwIvayI5a8dCzhFrjKzVwKLxjoG9T6Ppd5CEo07LRKfQ8Yokw54r5+Wq7FaBQ+yXRvQAYPrHwya1/UFt9g== +amdefine@>=0.0.4: + version "1.0.1" + resolved "https://registry.yarnpkg.com/amdefine/-/amdefine-1.0.1.tgz#4a5282ac164729e93619bcfd3ad151f817ce91f5" + integrity sha1-SlKCrBZHKek2Gbz9OtFR+BfOkfU= -"@types/express-serve-static-core@*", "@types/express-serve-static-core@4.17.18", "@types/express-serve-static-core@^4.17.18": - version "4.17.18" - resolved "https://registry.yarnpkg.com/@types/express-serve-static-core/-/express-serve-static-core-4.17.18.tgz#8371e260f40e0e1ca0c116a9afcd9426fa094c40" - integrity sha512-m4JTwx5RUBNZvky/JJ8swEJPKFd8si08pPF2PfizYjGZOKr/svUWPcoUmLow6MmPzhasphB7gSTINY67xn3JNA== - dependencies: - "@types/node" "*" - "@types/qs" "*" - "@types/range-parser" "*" +ansi-colors@3.2.3: + version "3.2.3" + resolved "https://registry.yarnpkg.com/ansi-colors/-/ansi-colors-3.2.3.tgz#57d35b8686e851e2cc04c403f1c00203976a1813" + integrity sha512-LEHHyuhlPY3TmuUYMh2oz89lTShfvgbmzaBcxve9t/9Wuy7Dwf4yoAKcND7KFT1HAQfqZ12qtc+DUrBMeKF9nw== -"@types/express@*": - version "4.17.11" - resolved "https://registry.yarnpkg.com/@types/express/-/express-4.17.11.tgz#debe3caa6f8e5fcda96b47bd54e2f40c4ee59545" - integrity sha512-no+R6rW60JEc59977wIxreQVsIEOAYwgCqldrA/vkpCnbD7MqTefO97lmoBe4WE0F156bC4uLSP1XHDOySnChg== - dependencies: - "@types/body-parser" "*" - "@types/express-serve-static-core" "^4.17.18" - "@types/qs" "*" - "@types/serve-static" "*" +ansi-colors@4.1.1, ansi-colors@^4.1.1: + version "4.1.1" + resolved "https://registry.yarnpkg.com/ansi-colors/-/ansi-colors-4.1.1.tgz#cbb9ae256bf750af1eab344f229aa27fe94ba348" + integrity sha512-JoX0apGbHaUJBNl6yF+p6JAFYZ666/hhCGKN5t9QFjbJQKUU/g8MNbFDbvfrgKXvI1QpZplPOnwIo99lX/AAmA== -"@types/express@4.17.7": - version "4.17.7" - resolved "https://registry.yarnpkg.com/@types/express/-/express-4.17.7.tgz#42045be6475636d9801369cd4418ef65cdb0dd59" - integrity sha512-dCOT5lcmV/uC2J9k0rPafATeeyz+99xTt54ReX11/LObZgfzJqZNcW27zGhYyX+9iSEGXGt5qLPwRSvBZcLvtQ== - dependencies: - "@types/body-parser" "*" - "@types/express-serve-static-core" "*" - "@types/qs" "*" - "@types/serve-static" "*" +ansi-escapes@^3.2.0: + version "3.2.0" + resolved "https://registry.yarnpkg.com/ansi-escapes/-/ansi-escapes-3.2.0.tgz#8780b98ff9dbf5638152d1f1fe5c1d7b4442976b" + integrity sha512-cBhpre4ma+U0T1oM5fXg7Dy1Jw7zzwv7lt/GoCpr+hDQJoYnKVPLL4dCvSEFMmQurOQvSrwT7SL/DAlhBI97RQ== -"@types/form-data@0.0.33": - version "0.0.33" - resolved "https://registry.yarnpkg.com/@types/form-data/-/form-data-0.0.33.tgz#c9ac85b2a5fd18435b8c85d9ecb50e6d6c893ff8" - integrity sha1-yayFsqX9GENbjIXZ7LUObWyJP/g= +ansi-escapes@^4.3.0: + version "4.3.2" + resolved "https://registry.yarnpkg.com/ansi-escapes/-/ansi-escapes-4.3.2.tgz#6b2291d1db7d98b6521d5f1efa42d0f3a9feb65e" + integrity sha512-gKXj5ALrKWQLsYG9jlTRmR/xKluxHV+Z9QEwNIgCfM1/uwPMCuzVVnh5mwTd+OuBZcwSIMbqssNWRm1lE51QaQ== dependencies: - "@types/node" "*" + type-fest "^0.21.3" -"@types/fs-capacitor@*": - version "2.0.0" - resolved "https://registry.yarnpkg.com/@types/fs-capacitor/-/fs-capacitor-2.0.0.tgz#17113e25817f584f58100fb7a08eed288b81956e" - integrity sha512-FKVPOCFbhCvZxpVAMhdBdTfVfXUpsh15wFHgqOKxh9N9vzWZVuWCSijZ5T4U34XYNnuj2oduh6xcs1i+LPI+BQ== +ansi-regex@^3.0.0: + version "3.0.0" + resolved "https://registry.yarnpkg.com/ansi-regex/-/ansi-regex-3.0.0.tgz#ed0317c322064f79466c02966bddb605ab37d998" + integrity sha1-7QMXwyIGT3lGbAKWa922Bas32Zg= + +ansi-regex@^4.1.0: + version "4.1.0" + resolved "https://registry.yarnpkg.com/ansi-regex/-/ansi-regex-4.1.0.tgz#8b9f8f08cf1acb843756a839ca8c7e3168c51997" + integrity sha512-1apePfXM1UOSqw0o9IiFAovVz9M5S1Dg+4TrDwfMewQ6p/rmMueb7tWZjQ1rx4Loy1ArBggoqGpfqqdI4rondg== + +ansi-regex@^5.0.0: + version "5.0.0" + resolved "https://registry.yarnpkg.com/ansi-regex/-/ansi-regex-5.0.0.tgz#388539f55179bf39339c81af30a654d69f87cb75" + integrity sha512-bY6fj56OUQ0hU1KjFNDQuJFezqKdrAyFdIevADiqrWHwSlbmBNMHp5ak2f40Pm8JTFyM2mqxkG6ngkHO11f/lg== + +ansi-styles@^3.2.0, ansi-styles@^3.2.1: + version "3.2.1" + resolved "https://registry.yarnpkg.com/ansi-styles/-/ansi-styles-3.2.1.tgz#41fbb20243e50b12be0f04b8dedbf07520ce841d" + integrity sha512-VT0ZI6kZRdTh8YyJw3SMbYm/u+NqfsAxEpWO0Pf9sq8/e94WxxOpPKx9FR1FlyCtOVDNOQ+8ntlqFxiRc+r5qA== dependencies: - "@types/node" "*" + color-convert "^1.9.0" -"@types/glob@^7.1.1": - version "7.1.1" - resolved "https://registry.yarnpkg.com/@types/glob/-/glob-7.1.1.tgz#aa59a1c6e3fbc421e07ccd31a944c30eba521575" - integrity sha512-1Bh06cbWJUHMC97acuD6UMG29nMt0Aqz1vF3guLfG+kHHJhy3AyohZFFxYk2f7Q1SQIrNwvncxAE0N/9s70F2w== +ansi-styles@^4.0.0, ansi-styles@^4.1.0: + version "4.3.0" + resolved "https://registry.yarnpkg.com/ansi-styles/-/ansi-styles-4.3.0.tgz#edd803628ae71c04c85ae7a0906edad34b648937" + integrity sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg== dependencies: - "@types/events" "*" - "@types/minimatch" "*" - "@types/node" "*" + color-convert "^2.0.1" -"@types/google-protobuf@^3.15.2", "@types/google-protobuf@^3.15.5", "@types/google-protobuf@^3.7.4": - version "3.15.5" - resolved "https://registry.yarnpkg.com/@types/google-protobuf/-/google-protobuf-3.15.5.tgz#644b2be0f5613b1f822c70c73c6b0e0b5b5fa2ad" - integrity sha512-6bgv24B+A2bo9AfzReeg5StdiijKzwwnRflA8RLd1V4Yv995LeTmo0z69/MPbBDFSiZWdZHQygLo/ccXhMEDgw== +antlr4@4.7.1: + version "4.7.1" + resolved "https://registry.yarnpkg.com/antlr4/-/antlr4-4.7.1.tgz#69984014f096e9e775f53dd9744bf994d8959773" + integrity sha512-haHyTW7Y9joE5MVs37P2lNYfU2RWBLfcRDD8OWldcdZm5TiCE91B5Xl1oWSwiDUSd4rlExpt2pu1fksYQjRBYQ== -"@types/http-assert@*": - version "1.5.1" - resolved "https://registry.yarnpkg.com/@types/http-assert/-/http-assert-1.5.1.tgz#d775e93630c2469c2f980fc27e3143240335db3b" - integrity sha512-PGAK759pxyfXE78NbKxyfRcWYA/KwW17X290cNev/qAsn9eQIxkH4shoNBafH37wewhDG/0p1cHPbK6+SzZjWQ== +antlr4ts@^0.5.0-alpha.4: + version "0.5.0-alpha.4" + resolved "https://registry.yarnpkg.com/antlr4ts/-/antlr4ts-0.5.0-alpha.4.tgz#71702865a87478ed0b40c0709f422cf14d51652a" + integrity sha512-WPQDt1B74OfPv/IMS2ekXAKkTZIHl88uMetg6q3OTqgFxZ/dxDXI0EWLyZid/1Pe6hTftyg5N7gel5wNAGxXyQ== -"@types/http-errors@*": - version "1.8.0" - resolved "https://registry.yarnpkg.com/@types/http-errors/-/http-errors-1.8.0.tgz#682477dbbbd07cd032731cb3b0e7eaee3d026b69" - integrity sha512-2aoSC4UUbHDj2uCsCxcG/vRMXey/m17bC7UwitVm5hn22nI8O8Y9iDpA76Orc+DWkQ4zZrOKEshCqR/jSuXAHA== +anymatch@~3.1.1, anymatch@~3.1.2: + version "3.1.2" + resolved "https://registry.yarnpkg.com/anymatch/-/anymatch-3.1.2.tgz#c0557c096af32f106198f4f4e2a383537e378716" + integrity sha512-P43ePfOAIupkguHUycrc4qJ9kz8ZiuOUijaETwX7THt0Y/GNK7v0aa8rY816xWjZ7rJdA5XdMcpVFTKMq+RvWg== + dependencies: + normalize-path "^3.0.0" + picomatch "^2.0.4" -"@types/json-schema@*": - version "7.0.9" - resolved "https://registry.yarnpkg.com/@types/json-schema/-/json-schema-7.0.9.tgz#97edc9037ea0c38585320b28964dde3b39e4660d" - integrity sha512-qcUXuemtEu+E5wZSJHNxUXeCZhAfXKQ41D+duX+VYPde7xyEVZci+/oXKJL13tnRs9lR2pr4fod59GT6/X1/yQ== +arg@^4.1.0: + version "4.1.3" + resolved "https://registry.yarnpkg.com/arg/-/arg-4.1.3.tgz#269fc7ad5b8e42cb63c896d5666017261c144089" + integrity sha512-58S9QDqG0Xx27YwPSt9fJxivjYl432YCwfDMfZ+71RAqUrZef7LrKQZ3LHLOwCS4FLNBplP533Zx895SeOCHvA== -"@types/keygrip@*": - version "1.0.2" - resolved "https://registry.yarnpkg.com/@types/keygrip/-/keygrip-1.0.2.tgz#513abfd256d7ad0bf1ee1873606317b33b1b2a72" - integrity sha512-GJhpTepz2udxGexqos8wgaBx4I/zWIDPh/KOGEwAqtuGDkOUJu5eFvwmdBX4AmB8Odsr+9pHCQqiAqDL/yKMKw== +argparse@^1.0.7: + version "1.0.10" + resolved "https://registry.yarnpkg.com/argparse/-/argparse-1.0.10.tgz#bcd6791ea5ae09725e17e5ad988134cd40b3d911" + integrity sha512-o5Roy6tNG4SL/FOkCAN6RzjiakZS25RLYFrcMttJqbdd8BWrnA+fGz57iN5Pb06pvBGvl5gQ0B48dJlslXvoTg== + dependencies: + sprintf-js "~1.0.2" -"@types/koa-compose@*": - version "3.2.5" - resolved "https://registry.yarnpkg.com/@types/koa-compose/-/koa-compose-3.2.5.tgz#85eb2e80ac50be95f37ccf8c407c09bbe3468e9d" - integrity sha512-B8nG/OoE1ORZqCkBVsup/AKcvjdgoHnfi4pZMn5UwAPCbhk/96xyv284eBYW8JlQbQ7zDmnpFr68I/40mFoIBQ== - dependencies: - "@types/koa" "*" - -"@types/koa@*": - version "2.13.1" - resolved "https://registry.yarnpkg.com/@types/koa/-/koa-2.13.1.tgz#e29877a6b5ad3744ab1024f6ec75b8cbf6ec45db" - integrity sha512-Qbno7FWom9nNqu0yHZ6A0+RWt4mrYBhw3wpBAQ3+IuzGcLlfeYkzZrnMq5wsxulN2np8M4KKeUpTodsOsSad5Q== - dependencies: - "@types/accepts" "*" - "@types/content-disposition" "*" - "@types/cookies" "*" - "@types/http-assert" "*" - "@types/http-errors" "*" - "@types/keygrip" "*" - "@types/koa-compose" "*" - "@types/node" "*" +argparse@^2.0.1: + version "2.0.1" + resolved "https://registry.yarnpkg.com/argparse/-/argparse-2.0.1.tgz#246f50f3ca78a3240f6c997e8a9bd1eac49e4b38" + integrity sha512-8+9WqebbFzpX9OR+Wa6O29asIogeRMzcGtAINdpMHHyAg10f05aSFVBbcEqGf/PXw1EjAZ+q2/bEBg3DvurK3Q== -"@types/long@^4.0.0", "@types/long@^4.0.1": - version "4.0.1" - resolved "https://registry.yarnpkg.com/@types/long/-/long-4.0.1.tgz#459c65fa1867dafe6a8f322c4c51695663cc55e9" - integrity sha512-5tXH6Bx/kNGd3MgffdmP4dy2Z+G4eaXw0SE81Tq3BNadtnMR5/ySMzX4SLEzHJzSmPNn4HIdpQsBvXMUykr58w== +array-back@^1.0.3, array-back@^1.0.4: + version "1.0.4" + resolved "https://registry.yarnpkg.com/array-back/-/array-back-1.0.4.tgz#644ba7f095f7ffcf7c43b5f0dc39d3c1f03c063b" + integrity sha1-ZEun8JX3/898Q7Xw3DnTwfA8Bjs= + dependencies: + typical "^2.6.0" -"@types/mime@^1": - version "1.3.2" - resolved "https://registry.yarnpkg.com/@types/mime/-/mime-1.3.2.tgz#93e25bf9ee75fe0fd80b594bc4feb0e862111b5a" - integrity sha512-YATxVxgRqNH6nHEIsvg6k2Boc1JHI9ZbH5iWFFv/MTkchz3b1ieGDa5T0a9RznNdI0KhVbdbWSN+KWWrQZRxTw== +array-back@^2.0.0: + version "2.0.0" + resolved "https://registry.yarnpkg.com/array-back/-/array-back-2.0.0.tgz#6877471d51ecc9c9bfa6136fb6c7d5fe69748022" + integrity sha512-eJv4pLLufP3g5kcZry0j6WXpIbzYw9GUB4mVJZno9wfwiBxbizTnHCw3VJb07cBihbFX48Y7oSrW9y+gt4glyw== + dependencies: + typical "^2.6.1" -"@types/minimatch@*": - version "3.0.3" - resolved "https://registry.yarnpkg.com/@types/minimatch/-/minimatch-3.0.3.tgz#3dca0e3f33b200fc7d1139c0cd96c1268cadfd9d" - integrity sha512-tHq6qdbT9U1IRSGf14CL0pUlULksvY9OZ+5eEgl1N7t+OA3tGvNpxJCzuKQlsNgCVwbAs670L1vcVQi8j9HjnA== +array-filter@^1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/array-filter/-/array-filter-1.0.0.tgz#baf79e62e6ef4c2a4c0b831232daffec251f9d83" + integrity sha1-uveeYubvTCpMC4MSMtr/7CUfnYM= + +array-flatten@1.1.1: + version "1.1.1" + resolved "https://registry.yarnpkg.com/array-flatten/-/array-flatten-1.1.1.tgz#9a5f699051b1e7073328f2a008968b64ea2955d2" + integrity sha1-ml9pkFGx5wczKPKgCJaLZOopVdI= -"@types/mocha@^5.2.5": - version "5.2.7" - resolved "https://registry.yarnpkg.com/@types/mocha/-/mocha-5.2.7.tgz#315d570ccb56c53452ff8638738df60726d5b6ea" - integrity sha512-NYrtPht0wGzhwe9+/idPaBB+TqkY9AhTvOLMkThm0IoEfLaiVQZwBwyJ5puCkO3AUCWrmcoePjp2mbFocKy4SQ== +array-union@^2.1.0: + version "2.1.0" + resolved "https://registry.yarnpkg.com/array-union/-/array-union-2.1.0.tgz#b798420adbeb1de828d84acd8a2e23d3efe85e8d" + integrity sha512-HGyxoOTYUyCM6stUe6EJgnd4EoewAI7zMdfqO+kGjnlZmBDz/cR5pf8r/cR4Wq60sL/p0IkcjUEEPwS3GFrIyw== -"@types/mocha@^9.0.0": - version "9.0.0" - resolved "https://registry.yarnpkg.com/@types/mocha/-/mocha-9.0.0.tgz#3205bcd15ada9bc681ac20bef64e9e6df88fd297" - integrity sha512-scN0hAWyLVAvLR9AyW7HoFF5sJZglyBsbPuHO4fv7JRvfmPBMfp1ozWqOf/e4wwPNxezBZXRfWzMb6iFLgEVRA== +asap@~2.0.6: + version "2.0.6" + resolved "https://registry.yarnpkg.com/asap/-/asap-2.0.6.tgz#e50347611d7e690943208bbdafebcbc2fb866d46" + integrity sha1-5QNHYR1+aQlDIIu9r+vLwvuGbUY= -"@types/node-fetch@2.5.7": - version "2.5.7" - resolved "https://registry.yarnpkg.com/@types/node-fetch/-/node-fetch-2.5.7.tgz#20a2afffa882ab04d44ca786449a276f9f6bbf3c" - integrity sha512-o2WVNf5UhWRkxlf6eq+jMZDu7kjgpgJfl4xVNlvryc95O/6F2ld8ztKX+qu+Rjyet93WAWm5LjeX9H5FGkODvw== +asn1.js@^5.2.0: + version "5.4.1" + resolved "https://registry.yarnpkg.com/asn1.js/-/asn1.js-5.4.1.tgz#11a980b84ebb91781ce35b0fdc2ee294e3783f07" + integrity sha512-+I//4cYPccV8LdmBLiX8CYvf9Sp3vQsrqu2QNXRcrbiWvcx/UdlFiqUJJzxRQxgsZmvhXhn4cSKeSmoFjVdupA== dependencies: - "@types/node" "*" - form-data "^3.0.0" + bn.js "^4.0.0" + inherits "^2.0.1" + minimalistic-assert "^1.0.0" + safer-buffer "^2.1.0" -"@types/node@*": - version "13.7.2" - resolved "https://registry.yarnpkg.com/@types/node/-/node-13.7.2.tgz#50375b95b5845a34efda2ffb3a087c7becbc46c6" - integrity sha512-uvilvAQbdJvnSBFcKJ2td4016urcGvsiR+N4dHGU87ml8O2Vl6l+ErOi9w0kXSPiwJ1AYlIW+0pDXDWWMOiWbw== - -"@types/node@10.12.18": - version "10.12.18" - resolved "https://registry.yarnpkg.com/@types/node/-/node-10.12.18.tgz#1d3ca764718915584fcd9f6344621b7672665c67" - integrity sha512-fh+pAqt4xRzPfqA6eh3Z2y6fyZavRIumvjhaCL753+TVkGKGhpPeyrJG2JftD0T9q4GF00KjefsQ+PQNDdWQaQ== - -"@types/node@11.11.6": - version "11.11.6" - resolved "https://registry.yarnpkg.com/@types/node/-/node-11.11.6.tgz#df929d1bb2eee5afdda598a41930fe50b43eaa6a" - integrity sha512-Exw4yUWMBXM3X+8oqzJNRqZSwUAaS4+7NdvHqQuFi/d+synz++xmX3QIf+BFqneW8N31R8Ky+sikfZUXq07ggQ== - -"@types/node@>=13.7.0", "@types/node@^16.7.1": - version "16.7.1" - resolved "https://registry.yarnpkg.com/@types/node/-/node-16.7.1.tgz#c6b9198178da504dfca1fd0be9b2e1002f1586f0" - integrity sha512-ncRdc45SoYJ2H4eWU9ReDfp3vtFqDYhjOsKlFFUDEn8V1Bgr2RjYal8YT5byfadWIRluhPFU6JiDOl0H6Sl87A== - -"@types/node@^10.0.3", "@types/node@^10.12.18", "@types/node@^10.3.2": - version "10.17.15" - resolved "https://registry.yarnpkg.com/@types/node/-/node-10.17.15.tgz#bfff4e23e9e70be6eec450419d51e18de1daf8e7" - integrity sha512-daFGV9GSs6USfPgxceDA8nlSe48XrVCJfDeYm7eokxq/ye7iuOH87hKXgMtEAVLFapkczbZsx868PMDT1Y0a6A== - -"@types/node@^10.1.0": - version "10.17.55" - resolved "https://registry.yarnpkg.com/@types/node/-/node-10.17.55.tgz#a147f282edec679b894d4694edb5abeb595fecbd" - integrity sha512-koZJ89uLZufDvToeWO5BrC4CR4OUfHnUz2qoPs/daQH6qq3IN62QFxCTZ+bKaCE0xaoCAJYE4AXre8AbghCrhg== +asn1@~0.2.3: + version "0.2.4" + resolved "https://registry.yarnpkg.com/asn1/-/asn1-0.2.4.tgz#8d2475dfab553bb33e77b54e59e880bb8ce23136" + integrity sha512-jxwzQpLQjSmWXgwaCZE9Nz+glAG01yF1QnWgbhGwHI5A6FRIEY6IVqtHhIepHqI7/kyEyQEagBC5mBEFlIYvdg== + dependencies: + safer-buffer "~2.1.0" -"@types/node@^12.12.6": - version "12.20.6" - resolved "https://registry.yarnpkg.com/@types/node/-/node-12.20.6.tgz#7b73cce37352936e628c5ba40326193443cfba25" - integrity sha512-sRVq8d+ApGslmkE9e3i+D3gFGk7aZHAT+G4cIpIEdLJYPsWiSPwcAnJEjddLQQDqV3Ra2jOclX/Sv6YrvGYiWA== +assert-plus@1.0.0, assert-plus@^1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/assert-plus/-/assert-plus-1.0.0.tgz#f12e0f3c5d77b0b1cdd9146942e4e96c1e4dd525" + integrity sha1-8S4PPF13sLHN2RRpQuTpbB5N1SU= -"@types/node@^12.6.1": - version "12.12.27" - resolved "https://registry.yarnpkg.com/@types/node/-/node-12.12.27.tgz#d7506f73160ad30fcebbcf5b8b7d2d976e649e42" - integrity sha512-odQFl/+B9idbdS0e8IxDl2ia/LP8KZLXhV3BUeI98TrZp0uoIzQPhGd+5EtzHmT0SMOIaPd7jfz6pOHLWTtl7A== +assertion-error@^1.1.0: + version "1.1.0" + resolved "https://registry.yarnpkg.com/assertion-error/-/assertion-error-1.1.0.tgz#e60b6b0e8f301bd97e5375215bda406c85118c0b" + integrity sha512-jgsaNduz+ndvGyFt3uSuWqvy4lCnIJiovtouQN5JZHOKCS2QuhEdbcQHFhVksz2N2U9hXJo8odG7ETyWlEeuDw== -"@types/node@^8.0.0": - version "8.10.59" - resolved "https://registry.yarnpkg.com/@types/node/-/node-8.10.59.tgz#9e34261f30183f9777017a13d185dfac6b899e04" - integrity sha512-8RkBivJrDCyPpBXhVZcjh7cQxVBSmRk9QM7hOketZzp6Tg79c0N8kkpAIito9bnJ3HCVCHVYz+KHTEbfQNfeVQ== +ast-parents@0.0.1: + version "0.0.1" + resolved "https://registry.yarnpkg.com/ast-parents/-/ast-parents-0.0.1.tgz#508fd0f05d0c48775d9eccda2e174423261e8dd3" + integrity sha1-UI/Q8F0MSHddnszaLhdEIyYejdM= -"@types/pbkdf2@^3.0.0": - version "3.1.0" - resolved "https://registry.yarnpkg.com/@types/pbkdf2/-/pbkdf2-3.1.0.tgz#039a0e9b67da0cdc4ee5dab865caa6b267bb66b1" - integrity sha512-Cf63Rv7jCQ0LaL8tNXmEyqTHuIJxRdlS5vMh1mj5voN4+QFhVZnlZruezqpWYDiJ8UTzhP0VmeLXCmBk66YrMQ== - dependencies: - "@types/node" "*" +astral-regex@^1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/astral-regex/-/astral-regex-1.0.0.tgz#6c8c3fb827dd43ee3918f27b82782ab7658a6fd9" + integrity sha512-+Ryf6g3BKoRc7jfp7ad8tM4TtMiaWvbF/1/sQcZPkkS7ag3D5nMBCe2UfOTONtAkaG0tO0ij3C5Lwmf1EiyjHg== -"@types/prettier@^2.1.1": - version "2.3.2" - resolved "https://registry.yarnpkg.com/@types/prettier/-/prettier-2.3.2.tgz#fc8c2825e4ed2142473b4a81064e6e081463d1b3" - integrity sha512-eI5Yrz3Qv4KPUa/nSIAi0h+qX0XyewOliug5F2QAtuRg6Kjg6jfmxe1GIwoIRhZspD1A0RP8ANrPwvEXXtRFog== +astral-regex@^2.0.0: + version "2.0.0" + resolved "https://registry.yarnpkg.com/astral-regex/-/astral-regex-2.0.0.tgz#483143c567aeed4785759c0865786dc77d7d2e31" + integrity sha512-Z7tMw1ytTXt5jqMcOP+OQteU1VuNK9Y02uuJtKQ1Sv69jXQKKg5cibLwGJow8yzZP+eAc18EmLGPal0bp36rvQ== -"@types/qs@*": - version "6.9.6" - resolved "https://registry.yarnpkg.com/@types/qs/-/qs-6.9.6.tgz#df9c3c8b31a247ec315e6996566be3171df4b3b1" - integrity sha512-0/HnwIfW4ki2D8L8c9GVcG5I72s9jP5GSLVF0VIXDW00kmIpA6O33G7a8n59Tmh7Nz0WUC3rSb7PTY/sdW2JzA== +async-eventemitter@^0.2.4: + version "0.2.4" + resolved "https://registry.yarnpkg.com/async-eventemitter/-/async-eventemitter-0.2.4.tgz#f5e7c8ca7d3e46aab9ec40a292baf686a0bafaca" + integrity sha512-pd20BwL7Yt1zwDFy+8MX8F1+WCT8aQeKj0kQnTrH9WaeRETlRamVhD0JtRPmrV4GfOJ2F9CvdQkZeZhnh2TuHw== + dependencies: + async "^2.4.0" -"@types/qs@^6.2.31": - version "6.9.1" - resolved "https://registry.yarnpkg.com/@types/qs/-/qs-6.9.1.tgz#937fab3194766256ee09fcd40b781740758617e7" - integrity sha512-lhbQXx9HKZAPgBkISrBcmAcMpZsmpe/Cd/hY7LGZS5OfkySUBItnPZHgQPssWYUET8elF+yCFBbP1Q0RZPTdaw== +async-limiter@~1.0.0: + version "1.0.1" + resolved "https://registry.yarnpkg.com/async-limiter/-/async-limiter-1.0.1.tgz#dd379e94f0db8310b08291f9d64c3209766617fd" + integrity sha512-csOlWGAcRFJaI6m+F2WKdnMKr4HhdhFVBk0H/QbJFMCr+uO2kwohwXQPxw/9OCxp05r5ghVBFSyioixx3gfkNQ== -"@types/range-parser@*": - version "1.2.3" - resolved "https://registry.yarnpkg.com/@types/range-parser/-/range-parser-1.2.3.tgz#7ee330ba7caafb98090bece86a5ee44115904c2c" - integrity sha512-ewFXqrQHlFsgc09MK5jP5iR7vumV/BYayNC6PgJO2LPe8vrnNFyjQjSppfEngITi0qvfKtzFvgKymGheFM9UOA== +async@1.x: + version "1.5.2" + resolved "https://registry.yarnpkg.com/async/-/async-1.5.2.tgz#ec6a61ae56480c0c3cb241c95618e20892f9672a" + integrity sha1-7GphrlZIDAw8skHJVhjiCJL5Zyo= -"@types/secp256k1@^4.0.1": - version "4.0.1" - resolved "https://registry.yarnpkg.com/@types/secp256k1/-/secp256k1-4.0.1.tgz#fb3aa61a1848ad97d7425ff9dcba784549fca5a4" - integrity sha512-+ZjSA8ELlOp8SlKi0YLB2tz9d5iPNEmOBd+8Rz21wTMdaXQIa9b6TEnD6l5qKOCypE7FSyPyck12qZJxSDNoog== +async@^2.4.0: + version "2.6.3" + resolved "https://registry.yarnpkg.com/async/-/async-2.6.3.tgz#d72625e2344a3656e3a3ad4fa749fa83299d82ff" + integrity sha512-zflvls11DCy+dQWzTW2dzuilv8Z5X/pjfmZOWba6TNIVDm+2UDaJmXSOXlasHKfNBs8oo3M0aT50fDEWfKZjXg== dependencies: - "@types/node" "*" + lodash "^4.17.14" -"@types/seedrandom@^3.0.1": - version "3.0.1" - resolved "https://registry.yarnpkg.com/@types/seedrandom/-/seedrandom-3.0.1.tgz#1254750a4fec4aff2ebec088ccd0bb02e91fedb4" - integrity sha512-giB9gzDeiCeloIXDgzFBCgjj1k4WxcDrZtGl6h1IqmUPlxF+Nx8Ve+96QCyDZ/HseB/uvDsKbpib9hU5cU53pw== +asynckit@^0.4.0: + version "0.4.0" + resolved "https://registry.yarnpkg.com/asynckit/-/asynckit-0.4.0.tgz#c79ed97f7f34cb8f2ba1bc9790bcc366474b4b79" + integrity sha1-x57Zf380y48robyXkLzDZkdLS3k= -"@types/serve-static@*": - version "1.13.9" - resolved "https://registry.yarnpkg.com/@types/serve-static/-/serve-static-1.13.9.tgz#aacf28a85a05ee29a11fb7c3ead935ac56f33e4e" - integrity sha512-ZFqF6qa48XsPdjXV5Gsz0Zqmux2PerNd3a/ktL45mHpa19cuMi/cL8tcxdAx497yRh+QtYPuofjT9oWw9P7nkA== - dependencies: - "@types/mime" "^1" - "@types/node" "*" +at-least-node@^1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/at-least-node/-/at-least-node-1.0.0.tgz#602cd4b46e844ad4effc92a8011a3c46e0238dc2" + integrity sha512-+q/t7Ekv1EDY2l6Gda6LLiX14rU9TV20Wa3ofeQmwPFZbOMo9DXrLbOjFaaclkXKWidIaopwAObQDqwWtGUjqg== -"@types/to-json-schema@^0.2.0": - version "0.2.1" - resolved "https://registry.yarnpkg.com/@types/to-json-schema/-/to-json-schema-0.2.1.tgz#223346df86bc0c183d53c939ad5eb1ddfb0e9bf5" - integrity sha512-DlvjodmdSrih054SrUqgS3bIZ93allrfbzjFUFmUhAtC60O+B/doLfgB8stafkEFyrU/zXWtPlX/V1H94iKv/A== +available-typed-arrays@^1.0.2: + version "1.0.2" + resolved "https://registry.yarnpkg.com/available-typed-arrays/-/available-typed-arrays-1.0.2.tgz#6b098ca9d8039079ee3f77f7b783c4480ba513f5" + integrity sha512-XWX3OX8Onv97LMk/ftVyBibpGwY5a8SmuxZPzeOxqmuEqUCOM9ZE+uIaD1VNJ5QnvU2UQusvmKbuM1FR8QWGfQ== dependencies: - "@types/json-schema" "*" + array-filter "^1.0.0" -"@types/ungap__global-this@^0.3.1": - version "0.3.1" - resolved "https://registry.yarnpkg.com/@types/ungap__global-this/-/ungap__global-this-0.3.1.tgz#18ce9f657da556037a29d50604335614ce703f4c" - integrity sha512-+/DsiV4CxXl6ZWefwHZDXSe1Slitz21tom38qPCaG0DYCS1NnDPIQDTKcmQ/tvK/edJUKkmuIDBJbmKDiB0r/g== +aws-sign2@~0.7.0: + version "0.7.0" + resolved "https://registry.yarnpkg.com/aws-sign2/-/aws-sign2-0.7.0.tgz#b46e890934a9591f2d2f6f86d7e6a9f1b3fe76a8" + integrity sha1-tG6JCTSpWR8tL2+G1+ap8bP+dqg= -"@types/web3@^1.0.18": - version "1.2.2" - resolved "https://registry.yarnpkg.com/@types/web3/-/web3-1.2.2.tgz#d95a101547ce625c5ebd0470baa5dbd4b9f3c015" - integrity sha512-eFiYJKggNrOl0nsD+9cMh2MLk4zVBfXfGnVeRFbpiZzBE20eet4KLA3fXcjSuHaBn0RnQzwLAGdgzgzdet4C0A== - dependencies: - web3 "*" +aws4@^1.8.0: + version "1.11.0" + resolved "https://registry.yarnpkg.com/aws4/-/aws4-1.11.0.tgz#d61f46d83b2519250e2784daf5b09479a8b41c59" + integrity sha512-xh1Rl34h6Fi1DC2WWKfxUTVqRsNnr6LsKz2+hfwDxQJWmrx8+c7ylaqBMcHfl1U1r2dsifOvKX3LQuLNZ+XSvA== -"@types/websocket@1.0.1": - version "1.0.1" - resolved "https://registry.yarnpkg.com/@types/websocket/-/websocket-1.0.1.tgz#039272c196c2c0e4868a0d8a1a27bbb86e9e9138" - integrity sha512-f5WLMpezwVxCLm1xQe/kdPpQIOmL0TXYx2O15VYfYzc7hTIdxiOoOvez+McSIw3b7z/1zGovew9YSL7+h4h7/Q== +axios@^0.21.1: + version "0.21.1" + resolved "https://registry.yarnpkg.com/axios/-/axios-0.21.1.tgz#22563481962f4d6bde9a76d516ef0e5d3c09b2b8" + integrity sha512-dKQiRHxGD9PPRIUNIWvZhPTPpl1rf/OxTYKsqKUDjBwYylTvV7SjSHJb9ratfyzM6wCdLCOYLzs73qpg5c4iGA== dependencies: - "@types/node" "*" + follow-redirects "^1.10.0" -"@types/ws@^7.0.0": - version "7.4.0" - resolved "https://registry.yarnpkg.com/@types/ws/-/ws-7.4.0.tgz#499690ea08736e05a8186113dac37769ab251a0e" - integrity sha512-Y29uQ3Uy+58bZrFLhX36hcI3Np37nqWE7ky5tjiDoy1GDZnIwVxS0CgF+s+1bXMzjKBFy+fqaRfb708iNzdinw== - dependencies: - "@types/node" "*" +balanced-match@^1.0.0: + version "1.0.2" + resolved "https://registry.yarnpkg.com/balanced-match/-/balanced-match-1.0.2.tgz#e83e3a7e3f300b34cb9d87f615fa0cbf357690ee" + integrity sha512-3oSeUO0TMV67hN1AmbXsK4yaqU7tjiHlbxRDZOpH0KW9+CeX4bRAaX0Anxt0tx2MrpRpWwQaPwIlISEJhYU5Pw== -"@types/ws@^7.2.6": - version "7.4.7" - resolved "https://registry.yarnpkg.com/@types/ws/-/ws-7.4.7.tgz#f7c390a36f7a0679aa69de2d501319f4f8d9b702" - integrity sha512-JQbbmxZTZehdc2iszGKs5oC3NFnjeay7mtAWrdt7qNtAVK0g19muApzAy4bm9byz79xa2ZnO/BOBC2R8RC5Lww== +base-x@^3.0.2, base-x@^3.0.8: + version "3.0.8" + resolved "https://registry.yarnpkg.com/base-x/-/base-x-3.0.8.tgz#1e1106c2537f0162e8b52474a557ebb09000018d" + integrity sha512-Rl/1AWP4J/zRrk54hhlxH4drNxPJXYUaKffODVI53/dAsV4t9fBxyxYKAVPU1XBHxYwOWP9h9H0hM2MVw4YfJA== dependencies: - "@types/node" "*" - -"@types/zen-observable@^0.8.0": - version "0.8.2" - resolved "https://registry.yarnpkg.com/@types/zen-observable/-/zen-observable-0.8.2.tgz#808c9fa7e4517274ed555fa158f2de4b4f468e71" - integrity sha512-HrCIVMLjE1MOozVoD86622S7aunluLb2PJdPfb3nYiEtohm8mIB/vyv0Fd37AdeMFrTUQXEunw78YloMA3Qilg== + safe-buffer "^5.0.1" -"@ungap/global-this@^0.4.2": - version "0.4.4" - resolved "https://registry.yarnpkg.com/@ungap/global-this/-/global-this-0.4.4.tgz#8a1b2cfcd3e26e079a847daba879308c924dd695" - integrity sha512-mHkm6FvepJECMNthFuIgpAEFmPOk71UyXuIxYfjytvFTnSDBIz7jmViO+LfHI/AjrazWije0PnSP3+/NlwzqtA== +base64-js@^1.3.1: + version "1.5.1" + resolved "https://registry.yarnpkg.com/base64-js/-/base64-js-1.5.1.tgz#1b1b440160a5bf7ad40b650f095963481903930a" + integrity sha512-AKpaYlHn8t4SVbOHCy+b5+KKgvR4vrsD8vbvrbiQJps7fKDTkjkDry6ji0rUJjC0kzbNePLwzxq8iypo41qeWA== -"@web3-js/scrypt-shim@^0.1.0": - version "0.1.0" - resolved "https://registry.yarnpkg.com/@web3-js/scrypt-shim/-/scrypt-shim-0.1.0.tgz#0bf7529ab6788311d3e07586f7d89107c3bea2cc" - integrity sha512-ZtZeWCc/s0nMcdx/+rZwY1EcuRdemOK9ag21ty9UsHkFxsNb/AaoucUz0iPuyGe0Ku+PFuRmWZG7Z7462p9xPw== +bcrypt-pbkdf@^1.0.0: + version "1.0.2" + resolved "https://registry.yarnpkg.com/bcrypt-pbkdf/-/bcrypt-pbkdf-1.0.2.tgz#a4301d389b6a43f9b67ff3ca11a3f6637e360e9e" + integrity sha1-pDAdOJtqQ/m2f/PKEaP2Y342Dp4= dependencies: - scryptsy "^2.1.0" - semver "^6.3.0" + tweetnacl "^0.14.3" -"@web3-js/websocket@^1.0.29": - version "1.0.30" - resolved "https://registry.yarnpkg.com/@web3-js/websocket/-/websocket-1.0.30.tgz#9ea15b7b582cf3bf3e8bc1f4d3d54c0731a87f87" - integrity sha512-fDwrD47MiDrzcJdSeTLF75aCcxVVt8B1N74rA+vh2XCAvFy4tEWJjtnUtj2QG7/zlQ6g9cQ88bZFBxwd9/FmtA== - dependencies: - debug "^2.2.0" - es5-ext "^0.10.50" - nan "^2.14.0" - typedarray-to-buffer "^3.1.5" - yaeti "^0.0.6" +bech32@1.1.4: + version "1.1.4" + resolved "https://registry.yarnpkg.com/bech32/-/bech32-1.1.4.tgz#e38c9f37bf179b8eb16ae3a772b40c356d4832e9" + integrity sha512-s0IrSOzLlbvX7yp4WBfPITzpAU8sqQcpsmwXDiKwrG4r491vwCO/XpejasRNl0piBMe/DvP4Tz0mIS/X1DPJBQ== -"@wry/context@^0.5.2": - version "0.5.4" - resolved "https://registry.yarnpkg.com/@wry/context/-/context-0.5.4.tgz#b6c28038872e0a0e1ff14eb40b5bf4cab2ab4e06" - integrity sha512-/pktJKHUXDr4D6TJqWgudOPJW2Z+Nb+bqk40jufA3uTkLbnCRKdJPiYDIa/c7mfcPH8Hr6O8zjCERpg5Sq04Zg== - dependencies: - tslib "^1.14.1" +bignumber.js@^9.0.0: + version "9.0.1" + resolved "https://registry.yarnpkg.com/bignumber.js/-/bignumber.js-9.0.1.tgz#8d7ba124c882bfd8e43260c67475518d0689e4e5" + integrity sha512-IdZR9mh6ahOBv/hYGiXyVuyCetmGJhtYkqLBpTStdhEGjegpPlUawydyaF3pbIOFynJTpllEs+NP+CS9jKFLjA== -"@wry/equality@^0.1.2": - version "0.1.11" - resolved "https://registry.yarnpkg.com/@wry/equality/-/equality-0.1.11.tgz#35cb156e4a96695aa81a9ecc4d03787bc17f1790" - integrity sha512-mwEVBDUVODlsQQ5dfuLUS5/Tf7jqUKyhKYHmVi4fPB6bDMOfWvUPJmKgS1Z7Za/sOI3vzWt4+O7yCiL/70MogA== - dependencies: - tslib "^1.9.3" +binary-extensions@^2.0.0: + version "2.2.0" + resolved "https://registry.yarnpkg.com/binary-extensions/-/binary-extensions-2.2.0.tgz#75f502eeaf9ffde42fc98829645be4ea76bd9e2d" + integrity sha512-jDctJ/IVQbZoJykoeHbhXpOlNBqGNcwXJKJog42E5HDPUwQTSdjCHdihjj0DlnheQ7blbT6dHOafNAiS8ooQKA== -"@wry/equality@^0.3.0": - version "0.3.4" - resolved "https://registry.yarnpkg.com/@wry/equality/-/equality-0.3.4.tgz#37f101552b18a046d5c0c06da7b2021b15f72c03" - integrity sha512-1gQQhCPenzxw/1HzLlvSIs/59eBHJf9ZDIussjjZhqNSqQuPKQIzN6SWt4kemvlBPDi7RqMuUa03pId7MAE93g== +bindings@^1.5.0: + version "1.5.0" + resolved "https://registry.yarnpkg.com/bindings/-/bindings-1.5.0.tgz#10353c9e945334bc0511a6d90b38fbc7c9c504df" + integrity sha512-p2q/t/mhvuOj/UeLlV6566GD/guowlr0hHxClI0W9m7MWYkL1F0hLo+0Aexs9HSPCtR1SXQ0TD3MMKrXZajbiQ== dependencies: - tslib "^1.14.1" + file-uri-to-path "1.0.0" -"@wry/trie@^0.2.1": - version "0.2.2" - resolved "https://registry.yarnpkg.com/@wry/trie/-/trie-0.2.2.tgz#99f20f0fcbbcda17006069b155c826cbabfc402f" - integrity sha512-OxqBB39x6MfHaa2HpMiRMfhuUnQTddD32Ko020eBeJXq87ivX6xnSSnzKHVbA21p7iqBASz8n/07b6W5wW1BVQ== +bip66@^1.1.5: + version "1.1.5" + resolved "https://registry.yarnpkg.com/bip66/-/bip66-1.1.5.tgz#01fa8748785ca70955d5011217d1b3139969ca22" + integrity sha1-AfqHSHhcpwlV1QESF9GzE5lpyiI= dependencies: - tslib "^1.14.1" + safe-buffer "^5.0.1" -"@yarnpkg/lockfile@^1.1.0": +blakejs@^1.1.0: version "1.1.0" - resolved "https://registry.yarnpkg.com/@yarnpkg/lockfile/-/lockfile-1.1.0.tgz#e77a97fbd345b76d83245edcd17d393b1b41fb31" - integrity sha512-GpSwvyXOcOOlV70vbnzjj4fW5xW/FdUF6nQEt1ENy7m4ZCczi1+/buVUPAqmGfqznsORNFzUMjctTIp8a9tuCQ== - -"@zondax/filecoin-signing-tools@github:Digital-MOB-Filecoin/filecoin-signing-tools-js": - version "0.2.0" - resolved "https://codeload.github.com/Digital-MOB-Filecoin/filecoin-signing-tools-js/tar.gz/8f8e92157cac2556d35cab866779e9a8ea8a4e25" - dependencies: - axios "^0.20.0" - base32-decode "^1.0.0" - base32-encode "^1.1.1" - bip32 "^2.0.5" - bip39 "^3.0.2" - blakejs "^1.1.0" - bn.js "^5.1.2" - ipld-dag-cbor "^0.17.0" - leb128 "0.0.5" - secp256k1 "^4.0.1" - -"@zxing/text-encoding@0.9.0": - version "0.9.0" - resolved "https://registry.yarnpkg.com/@zxing/text-encoding/-/text-encoding-0.9.0.tgz#fb50ffabc6c7c66a0c96b4c03e3d9be74864b70b" - integrity sha512-U/4aVJ2mxI0aDNI8Uq0wEhMgY+u4CNtEb0om3+y3+niDAsoTCOB33UF0sxpzqzdqXLqmvc+vZyAt4O8pPdfkwA== + resolved "https://registry.yarnpkg.com/blakejs/-/blakejs-1.1.0.tgz#69df92ef953aa88ca51a32df6ab1c54a155fc7a5" + integrity sha1-ad+S75U6qIylGjLfarHFShVfx6U= -abab@^1.0.0: - version "1.0.4" - resolved "https://registry.yarnpkg.com/abab/-/abab-1.0.4.tgz#5faad9c2c07f60dd76770f71cf025b62a63cfd4e" - integrity sha1-X6rZwsB/YN12dw9xzwJbYqY8/U4= +bluebird@^3.5.0: + version "3.7.2" + resolved "https://registry.yarnpkg.com/bluebird/-/bluebird-3.7.2.tgz#9f229c15be272454ffa973ace0dbee79a1b0c36f" + integrity sha512-XpNj6GDQzdfW+r2Wnn7xiSAd7TM3jzkxGXBGTtWKuSXv1xUV+azxAm8jdWZN06QTQk+2N2XB9jRDkvbmQmcRtg== -abbrev@1: - version "1.1.1" - resolved "https://registry.yarnpkg.com/abbrev/-/abbrev-1.1.1.tgz#f8f2c887ad10bf67f634f005b6987fed3179aac8" - integrity sha512-nne9/IiQ/hzIhY6pdDnbBtz7DjPTKrY00P/zvPSm5pOFkl6xuGrGnXn/VtTNNfNtAfZ9/1RtehkszU9qcTii0Q== +bn.js@4.11.6: + version "4.11.6" + resolved "https://registry.yarnpkg.com/bn.js/-/bn.js-4.11.6.tgz#53344adb14617a13f6e8dd2ce28905d1c0ba3215" + integrity sha1-UzRK2xRhehP26N0s4okF0cC6MhU= -abbrev@1.0.x: - version "1.0.9" - resolved "https://registry.yarnpkg.com/abbrev/-/abbrev-1.0.9.tgz#91b4792588a7738c25f35dd6f63752a2f8776135" - integrity sha1-kbR5JYinc4wl813W9jdSovh3YTU= +bn.js@^4.0.0, bn.js@^4.1.0, bn.js@^4.11.0, bn.js@^4.11.1, bn.js@^4.11.6, bn.js@^4.11.8, bn.js@^4.11.9, bn.js@^4.4.0: + version "4.12.0" + resolved "https://registry.yarnpkg.com/bn.js/-/bn.js-4.12.0.tgz#775b3f278efbb9718eec7361f483fb36fbbfea88" + integrity sha512-c98Bf3tPniI+scsdk237ku1Dc3ujXQTSgyiPUDEOe7tRkhrqridvh8klBv0HCEso1OLOYcHuCv/cS6DNxKH+ZA== -abi-to-sol@^0.2.0: - version "0.2.1" - resolved "https://registry.yarnpkg.com/abi-to-sol/-/abi-to-sol-0.2.1.tgz#308889ba60adc29bcc4265e6b4f7c692802db3a4" - integrity sha512-zJPxaymTHQx/Edpy3NELGseGuDrFPVVzwRvIyxu37ZgRsItHoaxLQeGuOxYNxJPNuc030D6S6evmw0yCCtn+1A== - dependencies: - "@truffle/abi-utils" "^0.1.0" - "@truffle/codec" "^0.7.1" - "@truffle/contract-schema" "^3.3.1" - ajv "^6.12.5" - better-ajv-errors "^0.6.7" - neodoc "^2.0.2" - prettier "^2.1.2" - prettier-plugin-solidity "^1.0.0-alpha.59" - source-map-support "^0.5.19" +bn.js@^5.0.0, bn.js@^5.1.1, bn.js@^5.1.2, bn.js@^5.1.3: + version "5.2.0" + resolved "https://registry.yarnpkg.com/bn.js/-/bn.js-5.2.0.tgz#358860674396c6997771a9d051fcc1b57d4ae002" + integrity sha512-D7iWRBvnZE8ecXiLj/9wbxH7Tk79fAh8IHaTNq1RWRixsS02W+5qS+iE9yq6RYl0asXx5tw0bLhmT5pIfbSquw== -abort-controller@3.0.0, abort-controller@^3.0.0: - version "3.0.0" - resolved "https://registry.yarnpkg.com/abort-controller/-/abort-controller-3.0.0.tgz#eaf54d53b62bae4138e809ca225c8439a6efb392" - integrity sha512-h8lQ8tacZYnR3vNQTgibj+tODHI5/+l06Au2Pcriv/Gmet0eaj4TwWH41sO9wnHDiQsEj19q0drzdWdeAHtweg== +body-parser@1.19.0, body-parser@^1.16.0: + version "1.19.0" + resolved "https://registry.yarnpkg.com/body-parser/-/body-parser-1.19.0.tgz#96b2709e57c9c4e09a6fd66a8fd979844f69f08a" + integrity sha512-dhEPs72UPbDnAQJ9ZKMNTP6ptJaionhP5cBb541nXPlW60Jepo9RV/a4fX4XWW9CuFNK22krhrj1+rgzifNCsw== dependencies: - event-target-shim "^5.0.0" + 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" -abstract-leveldown@^6.2.1: - version "6.3.0" - resolved "https://registry.yarnpkg.com/abstract-leveldown/-/abstract-leveldown-6.3.0.tgz#d25221d1e6612f820c35963ba4bd739928f6026a" - integrity sha512-TU5nlYgta8YrBMNpc9FwQzRbiXsj49gsALsXadbGHt9CROPzX5fB0rWDR5mtdpOOKa5XqRFpbj1QroPAoPzVjQ== +brace-expansion@^1.1.7: + version "1.1.11" + resolved "https://registry.yarnpkg.com/brace-expansion/-/brace-expansion-1.1.11.tgz#3c7fcbf529d87226f3d2f52b966ff5271eb441dd" + integrity sha512-iCuPHDFgrHX7H2vEI/5xpz07zSHB00TpugqhmYtVmMO6518mCuRMoOYFldEBl0g187ufozdaHgWKcYFb61qGiA== dependencies: - buffer "^5.5.0" - immediate "^3.2.3" - level-concat-iterator "~2.0.0" - level-supports "~1.0.0" - xtend "~4.0.0" + balanced-match "^1.0.0" + concat-map "0.0.1" -abstract-leveldown@~2.7.1: - version "2.7.2" - resolved "https://registry.yarnpkg.com/abstract-leveldown/-/abstract-leveldown-2.7.2.tgz#87a44d7ebebc341d59665204834c8b7e0932cc93" - integrity sha512-+OVvxH2rHVEhWLdbudP6p0+dNMXu8JA1CbhP19T8paTYAcX7oJ4OVjT+ZUVpv7mITxXHqDMej+GdqXBmXkw09w== +braces@^3.0.1, braces@~3.0.2: + version "3.0.2" + resolved "https://registry.yarnpkg.com/braces/-/braces-3.0.2.tgz#3454e1a462ee8d599e236df336cd9ea4f8afe107" + integrity sha512-b8um+L1RzM3WDSzvhm6gIz1yfTbBt6YTlcEKAvsmqCZZFw46z626lVj9j1yEPW33H5H+lBQpZMP1k8l+78Ha0A== dependencies: - xtend "~4.0.0" + fill-range "^7.0.1" -abstract-leveldown@~6.0.0, abstract-leveldown@~6.0.1: - version "6.0.3" - resolved "https://registry.yarnpkg.com/abstract-leveldown/-/abstract-leveldown-6.0.3.tgz#b4b6159343c74b0c5197b2817854782d8f748c4a" - integrity sha512-jzewKKpZbaYUa6HTThnrl+GrJhzjEAeuc7hTVpZdzg7kupXZFoqQDFwyOwLNbmJKJlmzw8yiipMPkDiuKkT06Q== - dependencies: - level-concat-iterator "~2.0.0" - xtend "~4.0.0" +brorand@^1.0.1, brorand@^1.1.0: + version "1.1.0" + resolved "https://registry.yarnpkg.com/brorand/-/brorand-1.1.0.tgz#12c25efe40a45e3c323eb8675a0a0ce57b22371f" + integrity sha1-EsJe/kCkXjwyPrhnWgoM5XsiNx8= -abstract-leveldown@~6.2.1: - version "6.2.3" - resolved "https://registry.yarnpkg.com/abstract-leveldown/-/abstract-leveldown-6.2.3.tgz#036543d87e3710f2528e47040bc3261b77a9a8eb" - integrity sha512-BsLm5vFMRUrrLeCcRc+G0t2qOaTzpoJQLOubq2XM72eNpjF5UdU5o/5NvlNhx95XHcAvcl8OMXr4mlg/fRgUXQ== - dependencies: - buffer "^5.5.0" - immediate "^3.2.3" - level-concat-iterator "~2.0.0" - level-supports "~1.0.0" - xtend "~4.0.0" +browser-stdout@1.3.1: + version "1.3.1" + resolved "https://registry.yarnpkg.com/browser-stdout/-/browser-stdout-1.3.1.tgz#baa559ee14ced73452229bad7326467c61fabd60" + integrity sha512-qhAVI1+Av2X7qelOfAIYwXONood6XlZE/fXaBSmW/T5SzLAmCgzi+eiWE7fUvbHaeNBQH13UftjpXxsfLkMpgw== -accepts@^1.3.5, accepts@~1.3.7: - version "1.3.7" - resolved "https://registry.yarnpkg.com/accepts/-/accepts-1.3.7.tgz#531bc726517a3b2b41f850021c6cc15eaab507cd" - integrity sha512-Il80Qs2WjYlJIBNzNkK6KYqlVMTbZLXgHx2oT0pU/fjRHyEp+PEfEPY0R3WCwAGVOtauxh1hOxNgIf5bv7dQpA== +browserify-aes@^1.0.0, browserify-aes@^1.0.4, browserify-aes@^1.0.6, browserify-aes@^1.2.0: + version "1.2.0" + resolved "https://registry.yarnpkg.com/browserify-aes/-/browserify-aes-1.2.0.tgz#326734642f403dabc3003209853bb70ad428ef48" + integrity sha512-+7CHXqGuspUn/Sl5aO7Ea0xWGAtETPXNSAjHo48JfLdPWcMng33Xe4znFvQweqc/uzk5zSOI3H52CYnjCfb5hA== dependencies: - mime-types "~2.1.24" - negotiator "0.6.2" + 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" -acorn-dynamic-import@^2.0.0: - version "2.0.2" - resolved "https://registry.yarnpkg.com/acorn-dynamic-import/-/acorn-dynamic-import-2.0.2.tgz#c752bd210bef679501b6c6cb7fc84f8f47158cc4" - integrity sha1-x1K9IQvvZ5UBtsbLf8hPj0cVjMQ= +browserify-cipher@^1.0.0: + version "1.0.1" + resolved "https://registry.yarnpkg.com/browserify-cipher/-/browserify-cipher-1.0.1.tgz#8d6474c1b870bfdabcd3bcfcc1934a10e94f15f0" + integrity sha512-sPhkz0ARKbf4rRQt2hTpAHqn47X3llLkUGn+xEJzLjwY8LRs2p0v7ljvI5EyoRO/mexrNunNECisZs+gw2zz1w== dependencies: - acorn "^4.0.3" + browserify-aes "^1.0.4" + browserify-des "^1.0.0" + evp_bytestokey "^1.0.0" -acorn-globals@^1.0.4: - version "1.0.9" - resolved "https://registry.yarnpkg.com/acorn-globals/-/acorn-globals-1.0.9.tgz#55bb5e98691507b74579d0513413217c380c54cf" - integrity sha1-VbtemGkVB7dFedBRNBMhfDgMVM8= +browserify-des@^1.0.0: + version "1.0.2" + resolved "https://registry.yarnpkg.com/browserify-des/-/browserify-des-1.0.2.tgz#3af4f1f59839403572f1c66204375f7a7f703e9c" + integrity sha512-BioO1xf3hFwz4kc6iBhI3ieDFompMhrMlnDFC4/0/vd5MokpuAc3R+LYbwTA9A5Yc9pq9UYPqffKpW2ObuwX5A== dependencies: - acorn "^2.1.0" - -acorn-walk@^8.1.1: - version "8.1.1" - resolved "https://registry.yarnpkg.com/acorn-walk/-/acorn-walk-8.1.1.tgz#3ddab7f84e4a7e2313f6c414c5b7dac85f4e3ebc" - integrity sha512-FbJdceMlPHEAWJOILDk1fXD8lnTlEIWFkqtfk+MvmL5q/qlHfN7GEHcsFZWt/Tea9jRNPWUZG4G976nqAAmU9w== - -acorn@4.X, acorn@^4.0.3: - version "4.0.13" - resolved "https://registry.yarnpkg.com/acorn/-/acorn-4.0.13.tgz#105495ae5361d697bd195c825192e1ad7f253787" - integrity sha1-EFSVrlNh1pe9GVyCUZLhrX8lN4c= - -acorn@^2.1.0, acorn@^2.4.0: - version "2.7.0" - resolved "https://registry.yarnpkg.com/acorn/-/acorn-2.7.0.tgz#ab6e7d9d886aaca8b085bc3312b79a198433f0e7" - integrity sha1-q259nYhqrKiwhbwzEreaGYQz8Oc= - -acorn@^5.0.0: - version "5.7.4" - resolved "https://registry.yarnpkg.com/acorn/-/acorn-5.7.4.tgz#3e8d8a9947d0599a1796d10225d7432f4a4acf5e" - integrity sha512-1D++VG7BhrtvQpNbBzovKNc1FLGGEE/oGe7b9xJm/RFHMBeUaUGpluV9RLjZa47YFdPcDAenEYuq9pQPcMdLJg== - -acorn@^8.4.1: - version "8.4.1" - resolved "https://registry.yarnpkg.com/acorn/-/acorn-8.4.1.tgz#56c36251fc7cabc7096adc18f05afe814321a28c" - integrity sha512-asabaBSkEKosYKMITunzX177CXxQ4Q8BSSzMTKD+FefUhipQC70gfW5SiUDhYQ3vk8G+81HqQk7Fv9OXwwn9KA== - -address@^1.0.1: - version "1.1.2" - resolved "https://registry.yarnpkg.com/address/-/address-1.1.2.tgz#bf1116c9c758c51b7a933d296b72c221ed9428b6" - integrity sha512-aT6camzM4xEA54YVJYSqxz1kv4IHnQZRtThJJHhUMRExaU5spC7jX5ugSwTaTgJliIgs4VhZOk7htClvQ/LmRA== - -aes-js@3.0.0: - version "3.0.0" - resolved "https://registry.yarnpkg.com/aes-js/-/aes-js-3.0.0.tgz#e21df10ad6c2053295bcbb8dab40b09dbea87e4d" - integrity sha1-4h3xCtbCBTKVvLuNq0Cwnb6ofk0= - -ajv-keywords@^3.1.0: - version "3.5.2" - resolved "https://registry.yarnpkg.com/ajv-keywords/-/ajv-keywords-3.5.2.tgz#31f29da5ab6e00d1c2d329acf7b5929614d5014d" - integrity sha512-5p6WTN0DdTGVQk6VjcEju19IgaHudalcfabD7yhDGeA6bcQnmL+CpveLJq/3hvfwd1aof6L386Ougkx6RfyMIQ== + cipher-base "^1.0.1" + des.js "^1.0.0" + inherits "^2.0.1" + safe-buffer "^5.1.2" -ajv@^6.1.0, ajv@^6.10.0, ajv@^6.12.5: - version "6.12.6" - resolved "https://registry.yarnpkg.com/ajv/-/ajv-6.12.6.tgz#baf5a62e802b07d977034586f8c3baf5adf26df4" - integrity sha512-j3fVLgvTo527anyYyJOGTYJbG+vnnQYvE0m5mmkc1TK+nxAppkCLMIL0aZ4dblVCNoGShhm+kzE4ZUykBoMg4g== +browserify-rsa@^4.0.0, browserify-rsa@^4.0.1: + version "4.1.0" + resolved "https://registry.yarnpkg.com/browserify-rsa/-/browserify-rsa-4.1.0.tgz#b2fd06b5b75ae297f7ce2dc651f918f5be158c8d" + integrity sha512-AdEER0Hkspgno2aR97SAf6vi0y0k8NuOpGnVH3O99rcA5Q6sh8QxcngtHuJ6uXwnfAXNM4Gn1Gb7/MV1+Ymbog== dependencies: - fast-deep-equal "^3.1.1" - fast-json-stable-stringify "^2.0.0" - json-schema-traverse "^0.4.1" - uri-js "^4.2.2" + bn.js "^5.0.0" + randombytes "^2.0.1" -ajv@^6.5.5: - version "6.11.0" - resolved "https://registry.yarnpkg.com/ajv/-/ajv-6.11.0.tgz#c3607cbc8ae392d8a5a536f25b21f8e5f3f87fe9" - integrity sha512-nCprB/0syFYy9fVYU1ox1l2KN8S9I+tziH8D4zdZuLT3N6RMlGSGt5FSTpAiHB/Whv8Qs1cWHma1aMKZyaHRKA== +browserify-sign@^4.0.0: + version "4.2.1" + resolved "https://registry.yarnpkg.com/browserify-sign/-/browserify-sign-4.2.1.tgz#eaf4add46dd54be3bb3b36c0cf15abbeba7956c3" + integrity sha512-/vrA5fguVAKKAVTNJjgSm1tRQDHUU6DbwO9IROu/0WAzC8PKhucDSh18J0RMvVeHAn5puMd+QHC2erPRNf8lmg== dependencies: - fast-deep-equal "^3.1.1" - fast-json-stable-stringify "^2.0.0" - json-schema-traverse "^0.4.1" - uri-js "^4.2.2" + 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" -align-text@^0.1.1, align-text@^0.1.3: - version "0.1.4" - resolved "https://registry.yarnpkg.com/align-text/-/align-text-0.1.4.tgz#0cd90a561093f35d0a99256c22b7069433fad117" - integrity sha1-DNkKVhCT810KmSVsIrcGlDP60Rc= +bs58@^4.0.0: + version "4.0.1" + resolved "https://registry.yarnpkg.com/bs58/-/bs58-4.0.1.tgz#be161e76c354f6f788ae4071f63f34e8c4f0a42a" + integrity sha1-vhYedsNU9veIrkBx9j806MTwpCo= dependencies: - kind-of "^3.0.2" - longest "^1.0.1" - repeat-string "^1.5.2" - -amdefine@>=0.0.4: - version "1.0.1" - resolved "https://registry.yarnpkg.com/amdefine/-/amdefine-1.0.1.tgz#4a5282ac164729e93619bcfd3ad151f817ce91f5" - integrity sha1-SlKCrBZHKek2Gbz9OtFR+BfOkfU= - -ansi-colors@3.2.3: - version "3.2.3" - resolved "https://registry.yarnpkg.com/ansi-colors/-/ansi-colors-3.2.3.tgz#57d35b8686e851e2cc04c403f1c00203976a1813" - integrity sha512-LEHHyuhlPY3TmuUYMh2oz89lTShfvgbmzaBcxve9t/9Wuy7Dwf4yoAKcND7KFT1HAQfqZ12qtc+DUrBMeKF9nw== - -ansi-colors@4.1.1: - version "4.1.1" - resolved "https://registry.yarnpkg.com/ansi-colors/-/ansi-colors-4.1.1.tgz#cbb9ae256bf750af1eab344f229aa27fe94ba348" - integrity sha512-JoX0apGbHaUJBNl6yF+p6JAFYZ666/hhCGKN5t9QFjbJQKUU/g8MNbFDbvfrgKXvI1QpZplPOnwIo99lX/AAmA== + base-x "^3.0.2" -ansi-mark@^1.0.0: - version "1.0.4" - resolved "https://registry.yarnpkg.com/ansi-mark/-/ansi-mark-1.0.4.tgz#1cd4ba8d57f15f109d6aaf6ec9ca9786c8a4ee6c" - integrity sha1-HNS6jVfxXxCdaq9uycqXhsik7mw= +bs58check@^2.1.2: + version "2.1.2" + resolved "https://registry.yarnpkg.com/bs58check/-/bs58check-2.1.2.tgz#53b018291228d82a5aa08e7d796fdafda54aebfc" + integrity sha512-0TS1jicxdU09dwJMNZtVAfzPi6Q6QeN0pM1Fkzrjn+XYHvzMKPU3pHVpva+769iNVSfIYWf7LJ6WR+BuuMf8cA== dependencies: - ansi-regex "^3.0.0" - array-uniq "^1.0.3" - chalk "^2.3.2" - strip-ansi "^4.0.0" - super-split "^1.1.0" - -ansi-regex@^2.0.0, ansi-regex@^2.1.1: - version "2.1.1" - resolved "https://registry.yarnpkg.com/ansi-regex/-/ansi-regex-2.1.1.tgz#c3b33ab5ee360d86e0e628f0468ae7ef27d654df" - integrity sha1-w7M6te42DYbg5ijwRorn7yfWVN8= - -ansi-regex@^3.0.0: - version "3.0.0" - resolved "https://registry.yarnpkg.com/ansi-regex/-/ansi-regex-3.0.0.tgz#ed0317c322064f79466c02966bddb605ab37d998" - integrity sha1-7QMXwyIGT3lGbAKWa922Bas32Zg= + bs58 "^4.0.0" + create-hash "^1.1.0" + safe-buffer "^5.1.2" -ansi-regex@^4.1.0: - version "4.1.0" - resolved "https://registry.yarnpkg.com/ansi-regex/-/ansi-regex-4.1.0.tgz#8b9f8f08cf1acb843756a839ca8c7e3168c51997" - integrity sha512-1apePfXM1UOSqw0o9IiFAovVz9M5S1Dg+4TrDwfMewQ6p/rmMueb7tWZjQ1rx4Loy1ArBggoqGpfqqdI4rondg== +buffer-from@^1.0.0: + version "1.1.1" + resolved "https://registry.yarnpkg.com/buffer-from/-/buffer-from-1.1.1.tgz#32713bc028f75c02fdb710d7c7bcec1f2c6070ef" + integrity sha512-MQcXEUbCKtEo7bhqEs6560Hyd4XaovZlO/k9V3hjVUF/zwW7KBVdSK4gIt/bzwS9MbR5qob+F5jusZsb0YQK2A== -ansi-regex@^5.0.0: - version "5.0.0" - resolved "https://registry.yarnpkg.com/ansi-regex/-/ansi-regex-5.0.0.tgz#388539f55179bf39339c81af30a654d69f87cb75" - integrity sha512-bY6fj56OUQ0hU1KjFNDQuJFezqKdrAyFdIevADiqrWHwSlbmBNMHp5ak2f40Pm8JTFyM2mqxkG6ngkHO11f/lg== +buffer-to-arraybuffer@^0.0.5: + version "0.0.5" + resolved "https://registry.yarnpkg.com/buffer-to-arraybuffer/-/buffer-to-arraybuffer-0.0.5.tgz#6064a40fa76eb43c723aba9ef8f6e1216d10511a" + integrity sha1-YGSkD6dutDxyOrqe+PbhIW0QURo= -ansi-styles@^2.2.1: - version "2.2.1" - resolved "https://registry.yarnpkg.com/ansi-styles/-/ansi-styles-2.2.1.tgz#b432dd3358b634cf75e1e4664368240533c1ddbe" - integrity sha1-tDLdM1i2NM914eRmQ2gkBTPB3b4= +buffer-xor@^1.0.3: + version "1.0.3" + resolved "https://registry.yarnpkg.com/buffer-xor/-/buffer-xor-1.0.3.tgz#26e61ed1422fb70dd42e6e36729ed51d855fe8d9" + integrity sha1-JuYe0UIvtw3ULm42cp7VHYVf6Nk= -ansi-styles@^3.2.0, ansi-styles@^3.2.1: - version "3.2.1" - resolved "https://registry.yarnpkg.com/ansi-styles/-/ansi-styles-3.2.1.tgz#41fbb20243e50b12be0f04b8dedbf07520ce841d" - integrity sha512-VT0ZI6kZRdTh8YyJw3SMbYm/u+NqfsAxEpWO0Pf9sq8/e94WxxOpPKx9FR1FlyCtOVDNOQ+8ntlqFxiRc+r5qA== +buffer-xor@^2.0.1: + version "2.0.2" + resolved "https://registry.yarnpkg.com/buffer-xor/-/buffer-xor-2.0.2.tgz#34f7c64f04c777a1f8aac5e661273bb9dd320289" + integrity sha512-eHslX0bin3GB+Lx2p7lEYRShRewuNZL3fUl4qlVJGGiwoPGftmt8JQgk2Y9Ji5/01TnVDo33E5b5O3vUB1HdqQ== dependencies: - color-convert "^1.9.0" + safe-buffer "^5.1.1" -ansi-styles@^4.0.0, ansi-styles@^4.1.0: - version "4.3.0" - resolved "https://registry.yarnpkg.com/ansi-styles/-/ansi-styles-4.3.0.tgz#edd803628ae71c04c85ae7a0906edad34b648937" - integrity sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg== +buffer@^5.0.5, buffer@^5.5.0, buffer@^5.6.0: + version "5.7.1" + resolved "https://registry.yarnpkg.com/buffer/-/buffer-5.7.1.tgz#ba62e7c13133053582197160851a8f648e99eed0" + integrity sha512-EHcyIPBQ4BSGlvjB16k5KgAJ27CIsHY/2JBmCRReo48y9rQ3MaUzWX3KVlBa4U7MyX02HdVj0K7C3WaB3ju7FQ== dependencies: - color-convert "^2.0.1" + base64-js "^1.3.1" + ieee754 "^1.1.13" -ansi-styles@~1.0.0: - version "1.0.0" - resolved "https://registry.yarnpkg.com/ansi-styles/-/ansi-styles-1.0.0.tgz#cb102df1c56f5123eab8b67cd7b98027a0279178" - integrity sha1-yxAt8cVvUSPquLZ817mAJ6AnkXg= +bufferutil@^4.0.1: + version "4.0.3" + resolved "https://registry.yarnpkg.com/bufferutil/-/bufferutil-4.0.3.tgz#66724b756bed23cd7c28c4d306d7994f9943cc6b" + integrity sha512-yEYTwGndELGvfXsImMBLop58eaGW+YdONi1fNjTINSY98tmMmFijBG6WXgdkfuLNt4imzQNtIE+eBp1PVpMCSw== + dependencies: + node-gyp-build "^4.2.0" -antlr4ts@^0.5.0-alpha.4: - version "0.5.0-alpha.4" - resolved "https://registry.yarnpkg.com/antlr4ts/-/antlr4ts-0.5.0-alpha.4.tgz#71702865a87478ed0b40c0709f422cf14d51652a" - integrity sha512-WPQDt1B74OfPv/IMS2ekXAKkTZIHl88uMetg6q3OTqgFxZ/dxDXI0EWLyZid/1Pe6hTftyg5N7gel5wNAGxXyQ== +bytes@3.1.0: + version "3.1.0" + resolved "https://registry.yarnpkg.com/bytes/-/bytes-3.1.0.tgz#f6cf7933a360e0588fa9fde85651cdc7f805d1f6" + integrity sha512-zauLjrfCG+xvoyaqLoV8bLVXXNGC4JqlxFCutSDWA6fJrTo2ZuvLYTqZ7aHBLZSMOopbzwv8f+wZcVzfVTI2Dg== -any-promise@1.3.0, any-promise@^1.3.0: - version "1.3.0" - resolved "https://registry.yarnpkg.com/any-promise/-/any-promise-1.3.0.tgz#abc6afeedcea52e809cdc0376aed3ce39635d17f" - integrity sha1-q8av7tzqUugJzcA3au0845Y10X8= +cacheable-request@^6.0.0: + version "6.1.0" + resolved "https://registry.yarnpkg.com/cacheable-request/-/cacheable-request-6.1.0.tgz#20ffb8bd162ba4be11e9567d823db651052ca912" + integrity sha512-Oj3cAGPCqOZX7Rz64Uny2GYAZNliQSqfbePrgAQ1wKAihYmCUnraBtJtKcGR4xz7wF+LoJC+ssFZvv5BgF9Igg== + dependencies: + clone-response "^1.0.2" + get-stream "^5.1.0" + http-cache-semantics "^4.0.0" + keyv "^3.0.0" + lowercase-keys "^2.0.0" + normalize-url "^4.1.0" + responselike "^1.0.2" -any-signal@^2.0.0, any-signal@^2.1.0: - version "2.1.2" - resolved "https://registry.yarnpkg.com/any-signal/-/any-signal-2.1.2.tgz#8d48270de0605f8b218cf9abe8e9c6a0e7418102" - integrity sha512-B+rDnWasMi/eWcajPcCWSlYc7muXOrcYrqgyzcdKisl2H/WTlQ0gip1KyQfr0ZlxJdsuWCj/LWwQm7fhyhRfIQ== +call-bind@^1.0.0, call-bind@^1.0.2: + version "1.0.2" + resolved "https://registry.yarnpkg.com/call-bind/-/call-bind-1.0.2.tgz#b1d4e89e688119c3c9a903ad30abb2f6a919be3c" + integrity sha512-7O+FbCihrB5WGbFYesctwmTKae6rOiIzmz1icreWJ+0aA7LJfuqhEso2T9ncpcFtzMQtzXf2QGGueWJGTYsqrA== dependencies: - abort-controller "^3.0.0" - native-abort-controller "^1.0.3" + function-bind "^1.1.1" + get-intrinsic "^1.0.2" -anymatch@^2.0.0: +caller-callsite@^2.0.0: version "2.0.0" - resolved "https://registry.yarnpkg.com/anymatch/-/anymatch-2.0.0.tgz#bcb24b4f37934d9aa7ac17b4adaf89e7c76ef2eb" - integrity sha512-5teOsQWABXHHBFP9y3skS5P3d/WfWXpv3FUpy+LorMrNYaT9pI4oLMQX7jzQ2KklNpGpWHzdCXTDT2Y3XGlZBw== + resolved "https://registry.yarnpkg.com/caller-callsite/-/caller-callsite-2.0.0.tgz#847e0fce0a223750a9a027c54b33731ad3154134" + integrity sha1-hH4PzgoiN1CpoCfFSzNzGtMVQTQ= dependencies: - micromatch "^3.1.4" - normalize-path "^2.1.1" + callsites "^2.0.0" -anymatch@~3.1.1: - version "3.1.1" - resolved "https://registry.yarnpkg.com/anymatch/-/anymatch-3.1.1.tgz#c55ecf02185e2469259399310c173ce31233b142" - integrity sha512-mM8522psRCqzV+6LhomX5wgp25YVibjh8Wj23I5RPkPppSVSjyKD2A2mBJmWGa+KN7f2D6LNh9jkBCeyLktzjg== +caller-path@^2.0.0: + version "2.0.0" + resolved "https://registry.yarnpkg.com/caller-path/-/caller-path-2.0.0.tgz#468f83044e369ab2010fac5f06ceee15bb2cb1f4" + integrity sha1-Ro+DBE42mrIBD6xfBs7uFbsssfQ= dependencies: - normalize-path "^3.0.0" - picomatch "^2.0.4" + caller-callsite "^2.0.0" -anymatch@~3.1.2: - version "3.1.2" - resolved "https://registry.yarnpkg.com/anymatch/-/anymatch-3.1.2.tgz#c0557c096af32f106198f4f4e2a383537e378716" - integrity sha512-P43ePfOAIupkguHUycrc4qJ9kz8ZiuOUijaETwX7THt0Y/GNK7v0aa8rY816xWjZ7rJdA5XdMcpVFTKMq+RvWg== - dependencies: - normalize-path "^3.0.0" - picomatch "^2.0.4" +callsites@^2.0.0: + version "2.0.0" + resolved "https://registry.yarnpkg.com/callsites/-/callsites-2.0.0.tgz#06eb84f00eea413da86affefacbffb36093b3c50" + integrity sha1-BuuE8A7qQT2oav/vrL/7Ngk7PFA= -apollo-cache-control@^0.11.6: - version "0.11.6" - resolved "https://registry.yarnpkg.com/apollo-cache-control/-/apollo-cache-control-0.11.6.tgz#f7bdf924272af47ac474cf3f3f35cfc038cc9485" - integrity sha512-YZ+uuIG+fPy+mkpBS2qKF0v1qlzZ3PW6xZVaDukeK3ed3iAs4L/2YnkTqau3OmoF/VPzX2FmSkocX/OVd59YSw== - dependencies: - apollo-server-env "^3.0.0" - apollo-server-plugin-base "^0.10.4" +callsites@^3.0.0: + version "3.1.0" + resolved "https://registry.yarnpkg.com/callsites/-/callsites-3.1.0.tgz#b3630abd8943432f54b3f0519238e33cd7df2f73" + integrity sha512-P8BjAsXvZS+VIDUI11hHCQEv74YT67YUi5JJFNWIqL235sBmjX4+qx9Muvls5ivyNENctx46xQLQ3aTuE7ssaQ== -apollo-datasource@^0.7.3: - version "0.7.3" - resolved "https://registry.yarnpkg.com/apollo-datasource/-/apollo-datasource-0.7.3.tgz#c824eb1457bdee5a3173ced0e35e594547e687a0" - integrity sha512-PE0ucdZYjHjUyXrFWRwT02yLcx2DACsZ0jm1Mp/0m/I9nZu/fEkvJxfsryXB6JndpmQO77gQHixf/xGCN976kA== - dependencies: - apollo-server-caching "^0.5.3" - apollo-server-env "^3.0.0" +camelcase@^5.0.0: + version "5.3.1" + resolved "https://registry.yarnpkg.com/camelcase/-/camelcase-5.3.1.tgz#e3c9b31569e106811df242f715725a1f4c494320" + integrity sha512-L28STB170nwWS63UjtlEOE3dldQApaJXZkOI1uMFfzf3rRuPegHaHesyee+YxQ+W6SvRDQV6UrdOdRiR153wJg== -apollo-env@^0.6.6: - version "0.6.6" - resolved "https://registry.yarnpkg.com/apollo-env/-/apollo-env-0.6.6.tgz#d7880805c4e96ee3d4142900a405176a04779438" - integrity sha512-hXI9PjJtzmD34XviBU+4sPMOxnifYrHVmxpjykqI/dUD2G3yTiuRaiQqwRwB2RCdwC1Ug/jBfoQ/NHDTnnjndQ== - dependencies: - "@types/node-fetch" "2.5.7" - core-js "^3.0.1" - node-fetch "^2.2.0" - sha.js "^2.4.11" +camelcase@^6.0.0: + version "6.2.0" + resolved "https://registry.yarnpkg.com/camelcase/-/camelcase-6.2.0.tgz#924af881c9d525ac9d87f40d964e5cea982a1809" + integrity sha512-c7wVvbw3f37nuobQNtgsgG9POC9qMbNuMQmTCqZv23b6MIz0fcYpBiOlv9gEN/hdLdnZTDQhg6e9Dq5M1vKvfg== -apollo-graphql@^0.6.0: - version "0.6.1" - resolved "https://registry.yarnpkg.com/apollo-graphql/-/apollo-graphql-0.6.1.tgz#d0bf0aff76f445de3da10e08f6974f1bf65f5753" - integrity sha512-ZRXAV+k+hboCVS+FW86FW/QgnDR7gm/xMUwJPGXEbV53OLGuQQdIT0NCYK7AzzVkCfsbb7NJ3mmEclkZY9uuxQ== - dependencies: - apollo-env "^0.6.6" - lodash.sortby "^4.7.0" +caseless@^0.12.0, caseless@~0.12.0: + version "0.12.0" + resolved "https://registry.yarnpkg.com/caseless/-/caseless-0.12.0.tgz#1b681c21ff84033c826543090689420d187151dc" + integrity sha1-G2gcIf+EAzyCZUMJBolCDRhxUdw= -apollo-link@1.2.14, apollo-link@^1.2.14: - version "1.2.14" - resolved "https://registry.yarnpkg.com/apollo-link/-/apollo-link-1.2.14.tgz#3feda4b47f9ebba7f4160bef8b977ba725b684d9" - integrity sha512-p67CMEFP7kOG1JZ0ZkYZwRDa369w5PIjtMjvrQd/HnIV8FRsHRqLqK+oAZQnFa1DDdZtOtHTi+aMIW6EatC2jg== +chai-ethers@^0.0.1: + version "0.0.1" + resolved "https://registry.yarnpkg.com/chai-ethers/-/chai-ethers-0.0.1.tgz#2dcc2d3251a07ea42ac37923b976198cccad3f1c" + integrity sha512-yajwk1BSf+lO2LzV+vra/iKukiUJcfD2aEVBZRWmaIJr0kI0eI1s6VF47qoXNolYxg0bf/SAlHSfwaPZWKBVyQ== dependencies: - apollo-utilities "^1.3.0" - ts-invariant "^0.4.0" - tslib "^1.9.3" - zen-observable-ts "^0.8.21" + ethers "^5.0.0" -apollo-reporting-protobuf@^0.6.2: - version "0.6.2" - resolved "https://registry.yarnpkg.com/apollo-reporting-protobuf/-/apollo-reporting-protobuf-0.6.2.tgz#5572866be9b77f133916532b10e15fbaa4158304" - integrity sha512-WJTJxLM+MRHNUxt1RTl4zD0HrLdH44F2mDzMweBj1yHL0kSt8I1WwoiF/wiGVSpnG48LZrBegCaOJeuVbJTbtw== - dependencies: - "@apollo/protobufjs" "^1.0.3" - -apollo-server-caching@^0.5.3: - version "0.5.3" - resolved "https://registry.yarnpkg.com/apollo-server-caching/-/apollo-server-caching-0.5.3.tgz#cf42a77ad09a46290a246810075eaa029b5305e1" - integrity sha512-iMi3087iphDAI0U2iSBE9qtx9kQoMMEWr6w+LwXruBD95ek9DWyj7OeC2U/ngLjRsXM43DoBDXlu7R+uMjahrQ== - dependencies: - lru-cache "^6.0.0" - -apollo-server-core@^2.21.1: - version "2.21.1" - resolved "https://registry.yarnpkg.com/apollo-server-core/-/apollo-server-core-2.21.1.tgz#5494e558e51a64cdd63b00a762ed600c4c73ee10" - integrity sha512-aI+soLaqKMkWxH6l9xvPP1fCuZgD053SK09D79LQfMbJAHHvs3MI90UpydiY/W61K5l8ELl0YsKdqkQg8262nw== - dependencies: - "@apollographql/apollo-tools" "^0.4.3" - "@apollographql/graphql-playground-html" "1.6.27" - "@apollographql/graphql-upload-8-fork" "^8.1.3" - "@types/ws" "^7.0.0" - apollo-cache-control "^0.11.6" - apollo-datasource "^0.7.3" - apollo-graphql "^0.6.0" - apollo-reporting-protobuf "^0.6.2" - apollo-server-caching "^0.5.3" - apollo-server-env "^3.0.0" - apollo-server-errors "^2.4.2" - apollo-server-plugin-base "^0.10.4" - apollo-server-types "^0.6.3" - apollo-tracing "^0.12.2" - async-retry "^1.2.1" - fast-json-stable-stringify "^2.0.0" - graphql-extensions "^0.12.8" - graphql-tag "^2.11.0" - graphql-tools "^4.0.8" - loglevel "^1.6.7" - lru-cache "^6.0.0" - sha.js "^2.4.11" - subscriptions-transport-ws "^0.9.11" - uuid "^8.0.0" - ws "^6.0.0" - -apollo-server-env@^3.0.0: - version "3.0.0" - resolved "https://registry.yarnpkg.com/apollo-server-env/-/apollo-server-env-3.0.0.tgz#0157c51f52b63aee39af190760acf789ffc744d9" - integrity sha512-tPSN+VttnPsoQAl/SBVUpGbLA97MXG990XIwq6YUnJyAixrrsjW1xYG7RlaOqetxm80y5mBZKLrRDiiSsW/vog== +chai@^4.3.4: + version "4.3.4" + resolved "https://registry.yarnpkg.com/chai/-/chai-4.3.4.tgz#b55e655b31e1eac7099be4c08c21964fce2e6c49" + integrity sha512-yS5H68VYOCtN1cjfwumDSuzn/9c+yza4f3reKXlE5rUg7SFcCEy90gJvydNgOYtblyf4Zi6jIWRnXOgErta0KA== dependencies: - node-fetch "^2.1.2" - util.promisify "^1.0.0" + 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" -apollo-server-errors@^2.4.2: +chalk@^2.0.0, chalk@^2.1.0, chalk@^2.4.1, chalk@^2.4.2: version "2.4.2" - resolved "https://registry.yarnpkg.com/apollo-server-errors/-/apollo-server-errors-2.4.2.tgz#1128738a1d14da989f58420896d70524784eabe5" - integrity sha512-FeGxW3Batn6sUtX3OVVUm7o56EgjxDlmgpTLNyWcLb0j6P8mw9oLNyAm3B+deHA4KNdNHO5BmHS2g1SJYjqPCQ== - -apollo-server-express@^2.21.1: - version "2.21.1" - resolved "https://registry.yarnpkg.com/apollo-server-express/-/apollo-server-express-2.21.1.tgz#b11af5ca952667e07952c0e5af8a65490a26c70a" - integrity sha512-O8msL01rl1iOfx4qmgpdNDXCh2u+adis8m2pHXZJfHciOoBmAgYaLlH7AOxpW5iHK/vQIwBM0dkPpxu5SaWpag== - dependencies: - "@apollographql/graphql-playground-html" "1.6.27" - "@types/accepts" "^1.3.5" - "@types/body-parser" "1.19.0" - "@types/cors" "2.8.8" - "@types/express" "4.17.7" - "@types/express-serve-static-core" "4.17.18" - accepts "^1.3.5" - apollo-server-core "^2.21.1" - apollo-server-types "^0.6.3" - body-parser "^1.18.3" - cors "^2.8.4" - express "^4.17.1" - graphql-subscriptions "^1.0.0" - graphql-tools "^4.0.8" - parseurl "^1.3.2" - subscriptions-transport-ws "^0.9.16" - type-is "^1.6.16" - -apollo-server-plugin-base@^0.10.4: - version "0.10.4" - resolved "https://registry.yarnpkg.com/apollo-server-plugin-base/-/apollo-server-plugin-base-0.10.4.tgz#fbf73f64f95537ca9f9639dd7c535eb5eeb95dcd" - integrity sha512-HRhbyHgHFTLP0ImubQObYhSgpmVH4Rk1BinnceZmwudIVLKrqayIVOELdyext/QnSmmzg5W7vF3NLGBcVGMqDg== - dependencies: - apollo-server-types "^0.6.3" - -apollo-server-types@^0.6.3: - version "0.6.3" - resolved "https://registry.yarnpkg.com/apollo-server-types/-/apollo-server-types-0.6.3.tgz#f7aa25ff7157863264d01a77d7934aa6e13399e8" - integrity sha512-aVR7SlSGGY41E1f11YYz5bvwA89uGmkVUtzMiklDhZ7IgRJhysT5Dflt5IuwDxp+NdQkIhVCErUXakopocFLAg== - dependencies: - apollo-reporting-protobuf "^0.6.2" - apollo-server-caching "^0.5.3" - apollo-server-env "^3.0.0" - -apollo-server@^2.18.2: - version "2.21.1" - resolved "https://registry.yarnpkg.com/apollo-server/-/apollo-server-2.21.1.tgz#9956b5e0e1cf87c3f050efb60bdb77da889e887e" - integrity sha512-z10nghSdF9tYvmTIezQlIpO7Q94YrbAuZtIBLswVdJXijHYmAtpWdlJ3BhWDiUFVFjocrcXrXhdw2jCtyXASDQ== - dependencies: - apollo-server-core "^2.21.1" - apollo-server-express "^2.21.1" - express "^4.0.0" - graphql-subscriptions "^1.0.0" - graphql-tools "^4.0.8" - stoppable "^1.1.0" - -apollo-tracing@^0.12.2: - version "0.12.2" - resolved "https://registry.yarnpkg.com/apollo-tracing/-/apollo-tracing-0.12.2.tgz#a261c3970bb421b6dadf50cd85d75b2567a7e52c" - integrity sha512-SYN4o0C0wR1fyS3+P0FthyvsQVHFopdmN3IU64IaspR/RZScPxZ3Ae8uu++fTvkQflAkglnFM0aX6DkZERBp6w== + resolved "https://registry.yarnpkg.com/chalk/-/chalk-2.4.2.tgz#cd42541677a54333cf541a49108c1432b44c9424" + integrity sha512-Mti+f9lpJNcwF4tWV8/OrTTtF1gZi+f8FqlyAdouralcFWFQWF2+NgCHShjkCb+IFBLq9buZwE1xckQU4peSuQ== dependencies: - apollo-server-env "^3.0.0" - apollo-server-plugin-base "^0.10.4" + ansi-styles "^3.2.1" + escape-string-regexp "^1.0.5" + supports-color "^5.3.0" -apollo-upload-client@14.1.2: - version "14.1.2" - resolved "https://registry.yarnpkg.com/apollo-upload-client/-/apollo-upload-client-14.1.2.tgz#7a72b000f1cd67eaf8f12b4bda2796d0898c0dae" - integrity sha512-ozaW+4tnVz1rpfwiQwG3RCdCcZ93RV/37ZQbRnObcQ9mjb+zur58sGDPVg9Ef3fiujLmiE/Fe9kdgvIMA3VOjA== +chalk@^4.0.0, chalk@^4.1.0, chalk@^4.1.1: + version "4.1.1" + resolved "https://registry.yarnpkg.com/chalk/-/chalk-4.1.1.tgz#c80b3fab28bf6371e6863325eee67e618b77e6ad" + integrity sha512-diHzdDKxcU+bAsUboHLPEDQiw0qEe0qd7SYUn3HgcFlWgbDcfLGswOHYeGrHKzG9z6UYf01d9VFMfZxPM1xZSg== dependencies: - "@apollo/client" "^3.1.5" - "@babel/runtime" "^7.11.2" - extract-files "^9.0.0" + ansi-styles "^4.1.0" + supports-color "^7.1.0" -apollo-utilities@^1.0.1, apollo-utilities@^1.3.0: - version "1.3.4" - resolved "https://registry.yarnpkg.com/apollo-utilities/-/apollo-utilities-1.3.4.tgz#6129e438e8be201b6c55b0f13ce49d2c7175c9cf" - integrity sha512-pk2hiWrCXMAy2fRPwEyhvka+mqwzeP60Jr1tRYi5xru+3ko94HI9o6lK0CT33/w4RDlxWchmdhDCrvdr+pHCig== - dependencies: - "@wry/equality" "^0.1.2" - fast-json-stable-stringify "^2.0.0" - ts-invariant "^0.4.0" - tslib "^1.10.0" +chardet@^0.7.0: + version "0.7.0" + resolved "https://registry.yarnpkg.com/chardet/-/chardet-0.7.0.tgz#90094849f0937f2eedc2425d0d28a9e5f0cbad9e" + integrity sha512-mT8iDcrh03qDGRRmoA2hmBJnxpllMR+0/0qlzjqZES6NdiWDcZkCNAk4rPFZ9Q85r27unkiNNg8ZOiwZXBHwcA== -app-module-path@^2.2.0: - version "2.2.0" - resolved "https://registry.yarnpkg.com/app-module-path/-/app-module-path-2.2.0.tgz#641aa55dfb7d6a6f0a8141c4b9c0aa50b6c24dd5" - integrity sha1-ZBqlXft9am8KgUHEucCqULbCTdU= +"charenc@>= 0.0.1": + version "0.0.2" + resolved "https://registry.yarnpkg.com/charenc/-/charenc-0.0.2.tgz#c0a1d2f3a7092e03774bfa83f14c0fc5790a8667" + integrity sha1-wKHS86cJLgN3S/qD8UwPxXkKhmc= -aproba@^1.0.3: - version "1.2.0" - resolved "https://registry.yarnpkg.com/aproba/-/aproba-1.2.0.tgz#6802e6264efd18c790a1b0d517f0f2627bf2c94a" - integrity sha512-Y9J6ZjXtoYh8RnXVCMOU/ttDmk1aBjunq9vO0ta5x85WDQiQfUF9sIPBITdbiiIVcBo03Hi3jMxigBtsddlXRw== +check-error@^1.0.2: + version "1.0.2" + resolved "https://registry.yarnpkg.com/check-error/-/check-error-1.0.2.tgz#574d312edd88bb5dd8912e9286dd6c0aed4aac82" + integrity sha1-V00xLt2Iu13YkS6Sht1sCu1KrII= -are-we-there-yet@~1.1.2: - version "1.1.5" - resolved "https://registry.yarnpkg.com/are-we-there-yet/-/are-we-there-yet-1.1.5.tgz#4b35c2944f062a8bfcda66410760350fe9ddfc21" - integrity sha512-5hYdAkZlcG8tOLujVDTgCT+uPX0VnpAH28gWsLfzpXYm7wP6mp5Q/gYyR7YQ0cKVJcXJnl3j2kpBan13PtQf6w== +chokidar@3.3.0: + version "3.3.0" + resolved "https://registry.yarnpkg.com/chokidar/-/chokidar-3.3.0.tgz#12c0714668c55800f659e262d4962a97faf554a6" + integrity sha512-dGmKLDdT3Gdl7fBUe8XK+gAtGmzy5Fn0XkkWQuYxGIgWVPPse2CxFA5mtrlD0TOHaHjEUqkWNyP1XdHoJES/4A== dependencies: - delegates "^1.0.0" - readable-stream "^2.0.6" - -arg@^4.1.0: - version "4.1.3" - resolved "https://registry.yarnpkg.com/arg/-/arg-4.1.3.tgz#269fc7ad5b8e42cb63c896d5666017261c144089" - integrity sha512-58S9QDqG0Xx27YwPSt9fJxivjYl432YCwfDMfZ+71RAqUrZef7LrKQZ3LHLOwCS4FLNBplP533Zx895SeOCHvA== + 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" -argparse@^1.0.7: - version "1.0.10" - resolved "https://registry.yarnpkg.com/argparse/-/argparse-1.0.10.tgz#bcd6791ea5ae09725e17e5ad988134cd40b3d911" - integrity sha512-o5Roy6tNG4SL/FOkCAN6RzjiakZS25RLYFrcMttJqbdd8BWrnA+fGz57iN5Pb06pvBGvl5gQ0B48dJlslXvoTg== +chokidar@3.5.2: + version "3.5.2" + resolved "https://registry.yarnpkg.com/chokidar/-/chokidar-3.5.2.tgz#dba3976fcadb016f66fd365021d91600d01c1e75" + integrity sha512-ekGhOnNVPgT77r4K/U3GDhu+FQ2S8TnK/s2KbIGXi0SZWuwkZ2QNyfWdZW+TVfn84DpEP7rLeCt2UI6bJ8GwbQ== dependencies: - sprintf-js "~1.0.2" - -argsarray@0.0.1, argsarray@^0.0.1: - version "0.0.1" - resolved "https://registry.yarnpkg.com/argsarray/-/argsarray-0.0.1.tgz#6e7207b4ecdb39b0af88303fa5ae22bda8df61cb" - integrity sha1-bnIHtOzbObCviDA/pa4ivajfYcs= + 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" -arr-diff@^2.0.0: - version "2.0.0" - resolved "https://registry.yarnpkg.com/arr-diff/-/arr-diff-2.0.0.tgz#8f3b827f955a8bd669697e4a4256ac3ceae356cf" - integrity sha1-jzuCf5Vai9ZpaX5KQlasPOrjVs8= +chokidar@^3.4.0: + version "3.5.1" + resolved "https://registry.yarnpkg.com/chokidar/-/chokidar-3.5.1.tgz#ee9ce7bbebd2b79f49f304799d5468e31e14e68a" + integrity sha512-9+s+Od+W0VJJzawDma/gvBNQqkTiqYTWLuZoyAsivsI4AaWTCzHG06/TMjsf1cYe9Cb97UCEhjz7HvnPk2p/tw== dependencies: - arr-flatten "^1.0.1" - -arr-diff@^4.0.0: - version "4.0.0" - resolved "https://registry.yarnpkg.com/arr-diff/-/arr-diff-4.0.0.tgz#d6461074febfec71e7e15235761a329a5dc7c520" - integrity sha1-1kYQdP6/7HHn4VI1dhoyml3HxSA= + anymatch "~3.1.1" + braces "~3.0.2" + glob-parent "~5.1.0" + is-binary-path "~2.1.0" + is-glob "~4.0.1" + normalize-path "~3.0.0" + readdirp "~3.5.0" + optionalDependencies: + fsevents "~2.3.1" -arr-flatten@^1.0.1, arr-flatten@^1.1.0: - version "1.1.0" - resolved "https://registry.yarnpkg.com/arr-flatten/-/arr-flatten-1.1.0.tgz#36048bbff4e7b47e136644316c99669ea5ae91f1" - integrity sha512-L3hKV5R/p5o81R7O02IGnwpDmkp6E982XhtbuwSe3O4qOtMMMtodicASA1Cny2U+aCXcNpml+m4dPsvsJ3jatg== +chownr@^1.1.1: + version "1.1.4" + resolved "https://registry.yarnpkg.com/chownr/-/chownr-1.1.4.tgz#6fc9d7b42d32a583596337666e7d08084da2cc6b" + integrity sha512-jJ0bqzaylmJtVnNgzTeSOs8DPavpbYgEr/b0YL8/2GO3xJEhInFmhKMUnEJQjZumK7KXGFhUy89PrsJWlakBVg== -arr-union@^3.1.0: - version "3.1.0" - resolved "https://registry.yarnpkg.com/arr-union/-/arr-union-3.1.0.tgz#e39b09aea9def866a8f206e288af63919bae39c4" - integrity sha1-45sJrqne+Gao8gbiiK9jkZuuOcQ= +ci-info@^2.0.0: + version "2.0.0" + resolved "https://registry.yarnpkg.com/ci-info/-/ci-info-2.0.0.tgz#67a9e964be31a51e15e5010d58e6f12834002f46" + integrity sha512-5tK7EtrZ0N+OLFMthtqOj4fI2Jeb88C4CAZPu25LDVUgXJ0A3Js4PMGqrn0JU1W0Mh1/Z8wZzYPxqUrXeBboCQ== -array-back@^1.0.3, array-back@^1.0.4: - version "1.0.4" - resolved "https://registry.yarnpkg.com/array-back/-/array-back-1.0.4.tgz#644ba7f095f7ffcf7c43b5f0dc39d3c1f03c063b" - integrity sha1-ZEun8JX3/898Q7Xw3DnTwfA8Bjs= +cids@^0.7.1: + version "0.7.5" + resolved "https://registry.yarnpkg.com/cids/-/cids-0.7.5.tgz#60a08138a99bfb69b6be4ceb63bfef7a396b28b2" + integrity sha512-zT7mPeghoWAu+ppn8+BS1tQ5qGmbMfB4AregnQjA/qHY3GC1m1ptI9GkWNlgeu38r7CuRdXB47uY2XgAYt6QVA== dependencies: - typical "^2.6.0" + buffer "^5.5.0" + class-is "^1.1.0" + multibase "~0.6.0" + multicodec "^1.0.0" + multihashes "~0.4.15" -array-back@^2.0.0: - version "2.0.0" - resolved "https://registry.yarnpkg.com/array-back/-/array-back-2.0.0.tgz#6877471d51ecc9c9bfa6136fb6c7d5fe69748022" - integrity sha512-eJv4pLLufP3g5kcZry0j6WXpIbzYw9GUB4mVJZno9wfwiBxbizTnHCw3VJb07cBihbFX48Y7oSrW9y+gt4glyw== +cipher-base@^1.0.0, cipher-base@^1.0.1, cipher-base@^1.0.3: + version "1.0.4" + resolved "https://registry.yarnpkg.com/cipher-base/-/cipher-base-1.0.4.tgz#8760e4ecc272f4c363532f926d874aae2c1397de" + integrity sha512-Kkht5ye6ZGmwv40uUDZztayT2ThLQGfnj/T71N/XzeZeo3nf8foyW7zGTsPYkEya3m5f3cAypH+qe7YOrM1U2Q== dependencies: - typical "^2.6.1" - -array-filter@^1.0.0: - version "1.0.0" - resolved "https://registry.yarnpkg.com/array-filter/-/array-filter-1.0.0.tgz#baf79e62e6ef4c2a4c0b831232daffec251f9d83" - integrity sha1-uveeYubvTCpMC4MSMtr/7CUfnYM= + inherits "^2.0.1" + safe-buffer "^5.0.1" -array-flatten@1.1.1: - version "1.1.1" - resolved "https://registry.yarnpkg.com/array-flatten/-/array-flatten-1.1.1.tgz#9a5f699051b1e7073328f2a008968b64ea2955d2" - integrity sha1-ml9pkFGx5wczKPKgCJaLZOopVdI= +class-is@^1.1.0: + version "1.1.0" + resolved "https://registry.yarnpkg.com/class-is/-/class-is-1.1.0.tgz#9d3c0fba0440d211d843cec3dedfa48055005825" + integrity sha512-rhjH9AG1fvabIDoGRVH587413LPjTZgmDF9fOFCbFJQV4yuocX1mHxxvXI4g3cGwbVY9wAYIoKlg1N79frJKQw== -array-union@^2.1.0: +cli-cursor@^2.1.0: version "2.1.0" - resolved "https://registry.yarnpkg.com/array-union/-/array-union-2.1.0.tgz#b798420adbeb1de828d84acd8a2e23d3efe85e8d" - integrity sha512-HGyxoOTYUyCM6stUe6EJgnd4EoewAI7zMdfqO+kGjnlZmBDz/cR5pf8r/cR4Wq60sL/p0IkcjUEEPwS3GFrIyw== - -array-uniq@^1.0.1, array-uniq@^1.0.3: - version "1.0.3" - resolved "https://registry.yarnpkg.com/array-uniq/-/array-uniq-1.0.3.tgz#af6ac877a25cc7f74e058894753858dfdb24fdb6" - integrity sha1-r2rId6Jcx/dOBYiUdThY39sk/bY= - -array-unique@^0.2.1: - version "0.2.1" - resolved "https://registry.yarnpkg.com/array-unique/-/array-unique-0.2.1.tgz#a1d97ccafcbc2625cc70fadceb36a50c58b01a53" - integrity sha1-odl8yvy8JiXMcPrc6zalDFiwGlM= - -array-unique@^0.3.2: - version "0.3.2" - resolved "https://registry.yarnpkg.com/array-unique/-/array-unique-0.3.2.tgz#a894b75d4bc4f6cd679ef3244a9fd8f46ae2d428" - integrity sha1-qJS3XUvE9s1nnvMkSp/Y9Gri1Cg= + resolved "https://registry.yarnpkg.com/cli-cursor/-/cli-cursor-2.1.0.tgz#b35dac376479facc3e94747d41d0d0f5238ffcb5" + integrity sha1-s12sN2R5+sw+lHR9QdDQ9SOP/LU= + dependencies: + restore-cursor "^2.0.0" -array.prototype.map@^1.0.1: - version "1.0.3" - resolved "https://registry.yarnpkg.com/array.prototype.map/-/array.prototype.map-1.0.3.tgz#1609623618d3d84134a37d4a220030c2bd18420b" - integrity sha512-nNcb30v0wfDyIe26Yif3PcV1JXQp4zEeEfupG7L4SRjnD6HLbO5b2a7eVSba53bOx4YCHYMBHt+Fp4vYstneRA== +cli-table3@^0.5.0: + version "0.5.1" + resolved "https://registry.yarnpkg.com/cli-table3/-/cli-table3-0.5.1.tgz#0252372d94dfc40dbd8df06005f48f31f656f202" + integrity sha512-7Qg2Jrep1S/+Q3EceiZtQcDPWxhAvBw+ERf1162v4sikJrvojMHFqXt8QIVha8UlH9rgU0BeWPytZ9/TzYqlUw== dependencies: - call-bind "^1.0.0" - define-properties "^1.1.3" - es-abstract "^1.18.0-next.1" - es-array-method-boxes-properly "^1.0.0" - is-string "^1.0.5" + object-assign "^4.1.0" + string-width "^2.1.1" + optionalDependencies: + colors "^1.1.2" -asap@~2.0.3, asap@~2.0.6: - version "2.0.6" - resolved "https://registry.yarnpkg.com/asap/-/asap-2.0.6.tgz#e50347611d7e690943208bbdafebcbc2fb866d46" - integrity sha1-5QNHYR1+aQlDIIu9r+vLwvuGbUY= +cli-width@^2.0.0: + version "2.2.1" + resolved "https://registry.yarnpkg.com/cli-width/-/cli-width-2.2.1.tgz#b0433d0b4e9c847ef18868a4ef16fd5fc8271c48" + integrity sha512-GRMWDxpOB6Dgk2E5Uo+3eEBvtOOlimMmpbFiKuLFnQzYDavtLFY3K5ona41jgN/WdRZtG7utuVSVTL4HbZHGkw== -asn1.js@^4.0.0: - version "4.10.1" - resolved "https://registry.yarnpkg.com/asn1.js/-/asn1.js-4.10.1.tgz#b9c2bf5805f1e64aadeed6df3a2bfafb5a73f5a0" - integrity sha512-p32cOF5q0Zqs9uBiONKYLm6BClCoBCM5O9JfeUSlnQLBTxYdTK+pW+nXflm8UkKd2UYlEbYz5qEi0JuZR9ckSw== +cliui@^5.0.0: + version "5.0.0" + resolved "https://registry.yarnpkg.com/cliui/-/cliui-5.0.0.tgz#deefcfdb2e800784aa34f46fa08e06851c7bbbc5" + integrity sha512-PYeGSEmmHM6zvoef2w8TPzlrnNpXIjTipYK780YswmIP9vjxmd6Y2a3CB2Ks6/AU8NHjZugXvo8w3oWM2qnwXA== dependencies: - bn.js "^4.0.0" - inherits "^2.0.1" - minimalistic-assert "^1.0.0" + string-width "^3.1.0" + strip-ansi "^5.2.0" + wrap-ansi "^5.1.0" -asn1.js@^5.0.1: - version "5.4.1" - resolved "https://registry.yarnpkg.com/asn1.js/-/asn1.js-5.4.1.tgz#11a980b84ebb91781ce35b0fdc2ee294e3783f07" - integrity sha512-+I//4cYPccV8LdmBLiX8CYvf9Sp3vQsrqu2QNXRcrbiWvcx/UdlFiqUJJzxRQxgsZmvhXhn4cSKeSmoFjVdupA== +cliui@^7.0.2: + version "7.0.4" + resolved "https://registry.yarnpkg.com/cliui/-/cliui-7.0.4.tgz#a0265ee655476fc807aea9df3df8df7783808b4f" + integrity sha512-OcRE68cOsVMXp1Yvonl/fzkQOyjLSu/8bhPDfQt0e0/Eb283TKP20Fs2MqoPsr9SwA595rRCA+QMzYc9nBP+JQ== dependencies: - bn.js "^4.0.0" - inherits "^2.0.1" - minimalistic-assert "^1.0.0" - safer-buffer "^2.1.0" + string-width "^4.2.0" + strip-ansi "^6.0.0" + wrap-ansi "^7.0.0" -asn1@~0.2.3: - version "0.2.4" - resolved "https://registry.yarnpkg.com/asn1/-/asn1-0.2.4.tgz#8d2475dfab553bb33e77b54e59e880bb8ce23136" - integrity sha512-jxwzQpLQjSmWXgwaCZE9Nz+glAG01yF1QnWgbhGwHI5A6FRIEY6IVqtHhIepHqI7/kyEyQEagBC5mBEFlIYvdg== +clone-response@^1.0.2: + version "1.0.2" + resolved "https://registry.yarnpkg.com/clone-response/-/clone-response-1.0.2.tgz#d1dc973920314df67fbeb94223b4ee350239e96b" + integrity sha1-0dyXOSAxTfZ/vrlCI7TuNQI56Ws= dependencies: - safer-buffer "~2.1.0" + mimic-response "^1.0.0" -assert-args@^1.2.1: - version "1.2.1" - resolved "https://registry.yarnpkg.com/assert-args/-/assert-args-1.2.1.tgz#404103a1452a32fe77898811e54e590a8a9373bd" - integrity sha1-QEEDoUUqMv53iYgR5U5ZCoqTc70= +color-convert@^1.9.0: + version "1.9.3" + resolved "https://registry.yarnpkg.com/color-convert/-/color-convert-1.9.3.tgz#bb71850690e1f136567de629d2d5471deda4c1e8" + integrity sha512-QfAUtd+vFdAtFQcC8CCyYt1fYWxSqAiK2cSD6zDB8N3cpsEBAvRxp9zOGg6G/SHHJYAT88/az/IuDGALsNVbGg== dependencies: - "101" "^1.2.0" - compound-subject "0.0.1" - debug "^2.2.0" - get-prototype-of "0.0.0" - is-capitalized "^1.0.0" - is-class "0.0.4" - -assert-plus@1.0.0, assert-plus@^1.0.0: - version "1.0.0" - resolved "https://registry.yarnpkg.com/assert-plus/-/assert-plus-1.0.0.tgz#f12e0f3c5d77b0b1cdd9146942e4e96c1e4dd525" - integrity sha1-8S4PPF13sLHN2RRpQuTpbB5N1SU= + color-name "1.1.3" -assert@^1.1.1: - version "1.5.0" - resolved "https://registry.yarnpkg.com/assert/-/assert-1.5.0.tgz#55c109aaf6e0aefdb3dc4b71240c70bf574b18eb" - integrity sha512-EDsgawzwoun2CZkCgtxJbv392v4nbk9XDD06zI+kQYoBM/3RBWLlEyJARDOmhAAosBjWACEkKL6S+lIZtcAubA== +color-convert@^2.0.1: + version "2.0.1" + resolved "https://registry.yarnpkg.com/color-convert/-/color-convert-2.0.1.tgz#72d3a68d598c9bdb3af2ad1e84f21d896abd4de3" + integrity sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ== dependencies: - object-assign "^4.1.1" - util "0.10.3" - -assertion-error@^1.1.0: - version "1.1.0" - resolved "https://registry.yarnpkg.com/assertion-error/-/assertion-error-1.1.0.tgz#e60b6b0e8f301bd97e5375215bda406c85118c0b" - integrity sha512-jgsaNduz+ndvGyFt3uSuWqvy4lCnIJiovtouQN5JZHOKCS2QuhEdbcQHFhVksz2N2U9hXJo8odG7ETyWlEeuDw== + color-name "~1.1.4" -assign-symbols@^1.0.0: - version "1.0.0" - resolved "https://registry.yarnpkg.com/assign-symbols/-/assign-symbols-1.0.0.tgz#59667f41fadd4f20ccbc2bb96b8d4f7f78ec0367" - integrity sha1-WWZ/QfrdTyDMvCu5a41Pf3jsA2c= +color-name@1.1.3: + version "1.1.3" + resolved "https://registry.yarnpkg.com/color-name/-/color-name-1.1.3.tgz#a7d0558bd89c42f795dd42328f740831ca53bc25" + integrity sha1-p9BVi9icQveV3UIyj3QIMcpTvCU= -async-each@^1.0.1: - version "1.0.3" - resolved "https://registry.yarnpkg.com/async-each/-/async-each-1.0.3.tgz#b727dbf87d7651602f06f4d4ac387f47d91b0cbf" - integrity sha512-z/WhQ5FPySLdvREByI2vZiTWwCnF0moMJ1hK9YQwDTHKh6I7/uSckMetoRGb5UBZPC1z0jlw+n/XCgjeH7y1AQ== +color-name@~1.1.4: + version "1.1.4" + resolved "https://registry.yarnpkg.com/color-name/-/color-name-1.1.4.tgz#c2a09a87acbde69543de6f63fa3995c826c536a2" + integrity sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA== -async-limiter@^1.0.0, async-limiter@~1.0.0: - version "1.0.1" - resolved "https://registry.yarnpkg.com/async-limiter/-/async-limiter-1.0.1.tgz#dd379e94f0db8310b08291f9d64c3209766617fd" - integrity sha512-csOlWGAcRFJaI6m+F2WKdnMKr4HhdhFVBk0H/QbJFMCr+uO2kwohwXQPxw/9OCxp05r5ghVBFSyioixx3gfkNQ== +colors@^1.1.2: + version "1.4.0" + resolved "https://registry.yarnpkg.com/colors/-/colors-1.4.0.tgz#c50491479d4c1bdaed2c9ced32cf7c7dc2360f78" + integrity sha512-a+UqTh4kgZg/SlGvfbzDHpgRu7AAQOmmqRHJnxhRZICKFUT91brVhNNt58CMWU9PsBbv3PDCZUHbVxuDiH2mtA== -async-retry@^1.2.1: - version "1.3.1" - resolved "https://registry.yarnpkg.com/async-retry/-/async-retry-1.3.1.tgz#139f31f8ddce50c0870b0ba558a6079684aaed55" - integrity sha512-aiieFW/7h3hY0Bq5d+ktDBejxuwR78vRu9hDUdR8rNhSaQ29VzPL4AoIRG7D/c7tdenwOcKvgPM6tIxB3cB6HA== +combined-stream@^1.0.6, combined-stream@^1.0.8, combined-stream@~1.0.6: + version "1.0.8" + resolved "https://registry.yarnpkg.com/combined-stream/-/combined-stream-1.0.8.tgz#c3d45a8b34fd730631a110a8a2520682b31d5a7f" + integrity sha512-FQN4MRfuJeHf7cBbBMJFXhKSDq+2kAArBlmRBvcvFE5BB1HZKXtSFASDhdlz9zOYwxh8lDdnvmMOe/+5cdoEdg== dependencies: - retry "0.12.0" + delayed-stream "~1.0.0" -async@1.x: - version "1.5.2" - resolved "https://registry.yarnpkg.com/async/-/async-1.5.2.tgz#ec6a61ae56480c0c3cb241c95618e20892f9672a" - integrity sha1-7GphrlZIDAw8skHJVhjiCJL5Zyo= +command-exists@^1.2.8: + version "1.2.9" + resolved "https://registry.yarnpkg.com/command-exists/-/command-exists-1.2.9.tgz#c50725af3808c8ab0260fd60b01fbfa25b954f69" + integrity sha512-LTQ/SGc+s0Xc0Fu5WaKnR0YiygZkm9eKFvyS+fRsU7/ZWFF8ykFM6Pc9aCVf1+xasOOZpO3BAVgVrKvsqKHV7w== -async@^2.1.2: - version "2.6.3" - resolved "https://registry.yarnpkg.com/async/-/async-2.6.3.tgz#d72625e2344a3656e3a3ad4fa749fa83299d82ff" - integrity sha512-zflvls11DCy+dQWzTW2dzuilv8Z5X/pjfmZOWba6TNIVDm+2UDaJmXSOXlasHKfNBs8oo3M0aT50fDEWfKZjXg== - dependencies: - lodash "^4.17.14" +command-line-args@^4.0.7: + version "4.0.7" + resolved "https://registry.yarnpkg.com/command-line-args/-/command-line-args-4.0.7.tgz#f8d1916ecb90e9e121eda6428e41300bfb64cc46" + integrity sha512-aUdPvQRAyBvQd2n7jXcsMDz68ckBJELXNzBybCHOibUWEg0mWTnaYCSRU8h9R+aNRSvDihJtssSRCiDRpLaezA== + dependencies: + array-back "^2.0.0" + find-replace "^1.0.3" + typical "^2.6.1" -asynckit@^0.4.0: - version "0.4.0" - resolved "https://registry.yarnpkg.com/asynckit/-/asynckit-0.4.0.tgz#c79ed97f7f34cb8f2ba1bc9790bcc366474b4b79" - integrity sha1-x57Zf380y48robyXkLzDZkdLS3k= +commander@2.18.0: + version "2.18.0" + resolved "https://registry.yarnpkg.com/commander/-/commander-2.18.0.tgz#2bf063ddee7c7891176981a2cc798e5754bc6970" + integrity sha512-6CYPa+JP2ftfRU2qkDK+UTVeQYosOg/2GbcjIcKPHfinyOLPVGXu/ovN86RP49Re5ndJK1N0kuiidFFuepc4ZQ== -at-least-node@^1.0.0: - version "1.0.0" - resolved "https://registry.yarnpkg.com/at-least-node/-/at-least-node-1.0.0.tgz#602cd4b46e844ad4effc92a8011a3c46e0238dc2" - integrity sha512-+q/t7Ekv1EDY2l6Gda6LLiX14rU9TV20Wa3ofeQmwPFZbOMo9DXrLbOjFaaclkXKWidIaopwAObQDqwWtGUjqg== +commander@3.0.2: + version "3.0.2" + resolved "https://registry.yarnpkg.com/commander/-/commander-3.0.2.tgz#6837c3fb677ad9933d1cfba42dd14d5117d6b39e" + integrity sha512-Gar0ASD4BDyKC4hl4DwHqDrmvjoxWKZigVnAbn5H1owvm4CxCPdb0HQDehwNYMJpla5+M2tPmPARzhtYuwpHow== -atob@^2.1.2: - version "2.1.2" - resolved "https://registry.yarnpkg.com/atob/-/atob-2.1.2.tgz#6d9517eb9e030d2436666651e86bd9f6f13533c9" - integrity sha512-Wm6ukoaOGJi/73p/cl2GvLjTI5JM1k/O14isD73YML8StrH/7/lRFgmg8nICZgD3bZZvjwCGxtMOD3wWNAu8cg== +concat-map@0.0.1: + version "0.0.1" + resolved "https://registry.yarnpkg.com/concat-map/-/concat-map-0.0.1.tgz#d8a96bd77fd68df7793a73036a3ba0d5405d477b" + integrity sha1-2Klr13/Wjfd5OnMDajug1UBdR3s= -available-typed-arrays@^1.0.2: - version "1.0.2" - resolved "https://registry.yarnpkg.com/available-typed-arrays/-/available-typed-arrays-1.0.2.tgz#6b098ca9d8039079ee3f77f7b783c4480ba513f5" - integrity sha512-XWX3OX8Onv97LMk/ftVyBibpGwY5a8SmuxZPzeOxqmuEqUCOM9ZE+uIaD1VNJ5QnvU2UQusvmKbuM1FR8QWGfQ== +concat-stream@^1.6.0, concat-stream@^1.6.2: + version "1.6.2" + resolved "https://registry.yarnpkg.com/concat-stream/-/concat-stream-1.6.2.tgz#904bdf194cd3122fc675c77fc4ac3d4ff0fd1a34" + integrity sha512-27HBghJxjiZtIk3Ycvn/4kbJk/1uZuJFfuPEns6LaEvpvG1f0hTea8lilrouyo9mVc2GWdcEZ8OLoGmSADlrCw== dependencies: - array-filter "^1.0.0" - -aws-sign2@~0.7.0: - version "0.7.0" - resolved "https://registry.yarnpkg.com/aws-sign2/-/aws-sign2-0.7.0.tgz#b46e890934a9591f2d2f6f86d7e6a9f1b3fe76a8" - integrity sha1-tG6JCTSpWR8tL2+G1+ap8bP+dqg= - -aws4@^1.8.0: - version "1.9.1" - resolved "https://registry.yarnpkg.com/aws4/-/aws4-1.9.1.tgz#7e33d8f7d449b3f673cd72deb9abdc552dbe528e" - integrity sha512-wMHVg2EOHaMRxbzgFJ9gtjOOCrI80OHLG14rxi28XwOW8ux6IiEbRCGGGqCtdAIg4FQCbW20k9RsT4y3gJlFug== + buffer-from "^1.0.0" + inherits "^2.0.3" + readable-stream "^2.2.2" + typedarray "^0.0.6" -axios@^0.18.0: - version "0.18.1" - resolved "https://registry.yarnpkg.com/axios/-/axios-0.18.1.tgz#ff3f0de2e7b5d180e757ad98000f1081b87bcea3" - integrity sha512-0BfJq4NSfQXd+SkFdrvFbG7addhYSBA2mQwISr46pD6E5iqkWg02RAs8vyTT/j0RTnoYmeXauBuSv1qKwR179g== +content-disposition@0.5.3: + version "0.5.3" + resolved "https://registry.yarnpkg.com/content-disposition/-/content-disposition-0.5.3.tgz#e130caf7e7279087c5616c2007d0485698984fbd" + integrity sha512-ExO0774ikEObIAEV9kDo50o+79VCUdEB6n6lzKgGwupcVeRlhrj3qGAfwq8G6uBJjkqLrhT0qEYFcWng8z1z0g== dependencies: - follow-redirects "1.5.10" - is-buffer "^2.0.2" + safe-buffer "5.1.2" -axios@^0.20.0: - version "0.20.0" - resolved "https://registry.yarnpkg.com/axios/-/axios-0.20.0.tgz#057ba30f04884694993a8cd07fa394cff11c50bd" - integrity sha512-ANA4rr2BDcmmAQLOKft2fufrtuvlqR+cXNNinUmvfeSNCOF98PZL+7M/v1zIdGo7OLjEA9J2gXJL+j4zGsl0bA== +content-hash@^2.5.2: + version "2.5.2" + resolved "https://registry.yarnpkg.com/content-hash/-/content-hash-2.5.2.tgz#bbc2655e7c21f14fd3bfc7b7d4bfe6e454c9e211" + integrity sha512-FvIQKy0S1JaWV10sMsA7TRx8bpU+pqPkhbsfvOJAdjRXvYxEckAwQWGwtRjiaJfh+E0DvcWUGqcdjwMGFjsSdw== dependencies: - follow-redirects "^1.10.0" + cids "^0.7.1" + multicodec "^0.5.5" + multihashes "^0.4.15" -axios@^0.21.1: - version "0.21.1" - resolved "https://registry.yarnpkg.com/axios/-/axios-0.21.1.tgz#22563481962f4d6bde9a76d516ef0e5d3c09b2b8" - integrity sha512-dKQiRHxGD9PPRIUNIWvZhPTPpl1rf/OxTYKsqKUDjBwYylTvV7SjSHJb9ratfyzM6wCdLCOYLzs73qpg5c4iGA== - dependencies: - follow-redirects "^1.10.0" +content-type@~1.0.4: + version "1.0.4" + resolved "https://registry.yarnpkg.com/content-type/-/content-type-1.0.4.tgz#e138cc75e040c727b1966fe5e5f8c9aee256fe3b" + integrity sha512-hIP3EEPs8tB9AT1L+NUqtwOAps4mk2Zob89MWXMHjHWg9milF/j4osnnQLXBCBFBk/tvIG/tUc9mOUJiPBhPXA== -babel-code-frame@^6.26.0: - version "6.26.0" - resolved "https://registry.yarnpkg.com/babel-code-frame/-/babel-code-frame-6.26.0.tgz#63fd43f7dc1e3bb7ce35947db8fe369a3f58c74b" - integrity sha1-Y/1D99weO7fONZR9uP42mj9Yx0s= - dependencies: - chalk "^1.1.3" - esutils "^2.0.2" - js-tokens "^3.0.2" - -babel-generator@6.26.1: - version "6.26.1" - resolved "https://registry.yarnpkg.com/babel-generator/-/babel-generator-6.26.1.tgz#1844408d3b8f0d35a404ea7ac180f087a601bd90" - 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-messages@^6.23.0: - version "6.23.0" - resolved "https://registry.yarnpkg.com/babel-messages/-/babel-messages-6.23.0.tgz#f3cdf4703858035b2a2951c6ec5edf6c62f2630e" - integrity sha1-8830cDhYA1sqKVHG7F7fbGLyYw4= - dependencies: - babel-runtime "^6.22.0" - -babel-plugin-dynamic-import-node@^2.3.3: - version "2.3.3" - resolved "https://registry.yarnpkg.com/babel-plugin-dynamic-import-node/-/babel-plugin-dynamic-import-node-2.3.3.tgz#84fda19c976ec5c6defef57f9427b3def66e17a3" - integrity sha512-jZVI+s9Zg3IqA/kdi0i6UDCybUI3aSBLnglhYbSSjKlV7yF1F/5LWv8MakQmvYpnbJDS6fcBL2KzHSxNCMtWSQ== - dependencies: - object.assign "^4.1.0" +cookie-signature@1.0.6: + version "1.0.6" + resolved "https://registry.yarnpkg.com/cookie-signature/-/cookie-signature-1.0.6.tgz#e303a882b342cc3ee8ca513a79999734dab3ae2c" + integrity sha1-4wOogrNCzD7oylE6eZmXNNqzriw= + +cookie@0.4.0: + version "0.4.0" + resolved "https://registry.yarnpkg.com/cookie/-/cookie-0.4.0.tgz#beb437e7022b3b6d49019d088665303ebe9c14ba" + integrity sha512-+Hp8fLp57wnUSt0tY0tHEXh4voZRDnoIrZPqlo3DPiI4y9lwg/jqx+1Om94/W6ZaPDOUbnjOt/99w66zk+l1Xg== -babel-plugin-syntax-trailing-function-commas@^7.0.0-beta.0: - version "7.0.0-beta.0" - resolved "https://registry.yarnpkg.com/babel-plugin-syntax-trailing-function-commas/-/babel-plugin-syntax-trailing-function-commas-7.0.0-beta.0.tgz#aa213c1435e2bffeb6fca842287ef534ad05d5cf" - integrity sha512-Xj9XuRuz3nTSbaTXWv3itLOcxyF4oPD8douBBmj7U9BBC6nEBYfyOJYQMf/8PJAFotC62UY5dFfIGEPr7WswzQ== +cookie@^0.4.1: + version "0.4.1" + resolved "https://registry.yarnpkg.com/cookie/-/cookie-0.4.1.tgz#afd713fe26ebd21ba95ceb61f9a8116e50a537d1" + integrity sha512-ZwrFkGJxUR3EIoXtO+yVE69Eb7KlixbaeAWfBQB9vVsNn/o+Yw69gBWSSDK825hQNdN+wF8zELf3dFNl/kxkUA== -babel-preset-fbjs@^3.3.0: - version "3.3.0" - resolved "https://registry.yarnpkg.com/babel-preset-fbjs/-/babel-preset-fbjs-3.3.0.tgz#a6024764ea86c8e06a22d794ca8b69534d263541" - integrity sha512-7QTLTCd2gwB2qGoi5epSULMHugSVgpcVt5YAeiFO9ABLrutDQzKfGwzxgZHLpugq8qMdg/DhRZDZ5CLKxBkEbw== - dependencies: - "@babel/plugin-proposal-class-properties" "^7.0.0" - "@babel/plugin-proposal-object-rest-spread" "^7.0.0" - "@babel/plugin-syntax-class-properties" "^7.0.0" - "@babel/plugin-syntax-flow" "^7.0.0" - "@babel/plugin-syntax-jsx" "^7.0.0" - "@babel/plugin-syntax-object-rest-spread" "^7.0.0" - "@babel/plugin-transform-arrow-functions" "^7.0.0" - "@babel/plugin-transform-block-scoped-functions" "^7.0.0" - "@babel/plugin-transform-block-scoping" "^7.0.0" - "@babel/plugin-transform-classes" "^7.0.0" - "@babel/plugin-transform-computed-properties" "^7.0.0" - "@babel/plugin-transform-destructuring" "^7.0.0" - "@babel/plugin-transform-flow-strip-types" "^7.0.0" - "@babel/plugin-transform-for-of" "^7.0.0" - "@babel/plugin-transform-function-name" "^7.0.0" - "@babel/plugin-transform-literals" "^7.0.0" - "@babel/plugin-transform-member-expression-literals" "^7.0.0" - "@babel/plugin-transform-modules-commonjs" "^7.0.0" - "@babel/plugin-transform-object-super" "^7.0.0" - "@babel/plugin-transform-parameters" "^7.0.0" - "@babel/plugin-transform-property-literals" "^7.0.0" - "@babel/plugin-transform-react-display-name" "^7.0.0" - "@babel/plugin-transform-react-jsx" "^7.0.0" - "@babel/plugin-transform-shorthand-properties" "^7.0.0" - "@babel/plugin-transform-spread" "^7.0.0" - "@babel/plugin-transform-template-literals" "^7.0.0" - babel-plugin-syntax-trailing-function-commas "^7.0.0-beta.0" - -babel-runtime@^6.22.0, babel-runtime@^6.26.0: - version "6.26.0" - resolved "https://registry.yarnpkg.com/babel-runtime/-/babel-runtime-6.26.0.tgz#965c7058668e82b55d7bfe04ff2337bc8b5647fe" - integrity sha1-llxwWGaOgrVde/4E/yM3vItWR/4= - dependencies: - core-js "^2.4.0" - regenerator-runtime "^0.11.0" - -babel-traverse@6.26.0: - version "6.26.0" - resolved "https://registry.yarnpkg.com/babel-traverse/-/babel-traverse-6.26.0.tgz#46a9cbd7edcc62c8e5c064e2d2d8d0f4035766ee" - integrity sha1-RqnL1+3MYsjlwGTi0tjQ9ANXZu4= - 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.26.0: - version "6.26.0" - resolved "https://registry.yarnpkg.com/babel-types/-/babel-types-6.26.0.tgz#a3b073f94ab49eb6fa55cd65227a334380632497" - integrity sha1-o7Bz+Uq0nrb6Vc1lInozQ4BjJJc= - dependencies: - babel-runtime "^6.26.0" - esutils "^2.0.2" - lodash "^4.17.4" - to-fast-properties "^1.0.3" +cookiejar@^2.1.1: + version "2.1.2" + resolved "https://registry.yarnpkg.com/cookiejar/-/cookiejar-2.1.2.tgz#dd8a235530752f988f9a0844f3fc589e3111125c" + integrity sha512-Mw+adcfzPxcPeI+0WlvRrr/3lGVO0bD75SxX6811cxSh1Wbxx7xZBGK1eVtDf6si8rg2lhnUjsVLMFMfbRIuwA== -babylon@6.18.0, babylon@^6.18.0: - version "6.18.0" - resolved "https://registry.yarnpkg.com/babylon/-/babylon-6.18.0.tgz#af2f3b88fa6f5c1e4c634d1a0f8eac4f55b395e3" - integrity sha512-q/UEjfGJ2Cm3oKV71DJz9d25TPnq5rhBVL2Q4fA5wcC3jcrdn7+SssEybFIxwAvvP+YCsCYNKughoF33GxgycQ== +core-js-pure@^3.0.1: + version "3.12.1" + resolved "https://registry.yarnpkg.com/core-js-pure/-/core-js-pure-3.12.1.tgz#934da8b9b7221e2a2443dc71dfa5bd77a7ea00b8" + integrity sha512-1cch+qads4JnDSWsvc7d6nzlKAippwjUlf6vykkTLW53VSV+NkE6muGBToAjEA8pG90cSfcud3JgVmW2ds5TaQ== -backo2@^1.0.2: +core-util-is@1.0.2, core-util-is@~1.0.0: version "1.0.2" - resolved "https://registry.yarnpkg.com/backo2/-/backo2-1.0.2.tgz#31ab1ac8b129363463e35b3ebb69f4dfcfba7947" - integrity sha1-MasayLEpNjRj41s+u2n038+6eUc= - -balanced-match@^1.0.0: - version "1.0.0" - resolved "https://registry.yarnpkg.com/balanced-match/-/balanced-match-1.0.0.tgz#89b4d199ab2bee49de164ea02b89ce462d71b767" - integrity sha1-ibTRmasr7kneFk6gK4nORi1xt2c= + resolved "https://registry.yarnpkg.com/core-util-is/-/core-util-is-1.0.2.tgz#b5fd54220aa2bc5ab57aab7140c940754503c1a7" + integrity sha1-tf1UIgqivFq1eqtxQMlAdUUDwac= -base-x@^3.0.2, base-x@^3.0.8: - version "3.0.8" - resolved "https://registry.yarnpkg.com/base-x/-/base-x-3.0.8.tgz#1e1106c2537f0162e8b52474a557ebb09000018d" - integrity sha512-Rl/1AWP4J/zRrk54hhlxH4drNxPJXYUaKffODVI53/dAsV4t9fBxyxYKAVPU1XBHxYwOWP9h9H0hM2MVw4YfJA== +cors@^2.8.1: + version "2.8.5" + resolved "https://registry.yarnpkg.com/cors/-/cors-2.8.5.tgz#eac11da51592dd86b9f06f6e7ac293b3df875d29" + integrity sha512-KIHbLJqu73RGr/hnbrO9uBeixNGuvSQjul/jdFvS/KFSIH1hWVd1ng7zOHx+YrEfInLG7q4n6GHQ9cDtxv/P6g== dependencies: - safe-buffer "^5.0.1" + object-assign "^4" + vary "^1" -base32-decode@^1.0.0: - version "1.0.0" - resolved "https://registry.yarnpkg.com/base32-decode/-/base32-decode-1.0.0.tgz#2a821d6a664890c872f20aa9aca95a4b4b80e2a7" - integrity sha512-KNWUX/R7wKenwE/G/qFMzGScOgVntOmbE27vvc6GrniDGYb6a5+qWcuoXl8WIOQL7q0TpK7nZDm1Y04Yi3Yn5g== +cosmiconfig@^5.0.7: + version "5.2.1" + resolved "https://registry.yarnpkg.com/cosmiconfig/-/cosmiconfig-5.2.1.tgz#040f726809c591e77a17c0a3626ca45b4f168b1a" + integrity sha512-H65gsXo1SKjf8zmrJ67eJk8aIRKV5ff2D4uKZIBZShbhGSpEmsQOPW/SKMKYhSTrqR7ufy6RP69rPogdaPh/kA== + dependencies: + import-fresh "^2.0.0" + is-directory "^0.3.1" + js-yaml "^3.13.1" + parse-json "^4.0.0" -base32-encode@^1.1.1: +crc-32@^1.2.0: version "1.2.0" - resolved "https://registry.yarnpkg.com/base32-encode/-/base32-encode-1.2.0.tgz#e150573a5e431af0a998e32bdfde7045725ca453" - integrity sha512-cHFU8XeRyx0GgmoWi5qHMCVRiqU6J3MHWxVgun7jggCBUpVzm1Ir7M9dYr2whjSNc3tFeXfQ/oZjQu/4u55h9A== + resolved "https://registry.yarnpkg.com/crc-32/-/crc-32-1.2.0.tgz#cb2db6e29b88508e32d9dd0ec1693e7b41a18208" + integrity sha512-1uBwHxF+Y/4yF5G48fwnKq6QsIXheor3ZLPT80yGBV1oEUwpPojlEhQbWKVw1VwcTQyMGHK1/XMmTjmlsmTTGA== dependencies: - to-data-view "^1.1.0" - -base64-js@^1.0.2: - version "1.3.1" - resolved "https://registry.yarnpkg.com/base64-js/-/base64-js-1.3.1.tgz#58ece8cb75dd07e71ed08c736abc5fac4dbf8df1" - integrity sha512-mLQ4i2QO1ytvGWFWmcngKO//JXAQueZvwEKtjgQFM4jIK0kU+ytMfplL8j+n5mspOfjHwoAg+9yhb7BwAHm36g== - -base64-js@^1.3.1: - version "1.5.1" - resolved "https://registry.yarnpkg.com/base64-js/-/base64-js-1.5.1.tgz#1b1b440160a5bf7ad40b650f095963481903930a" - integrity sha512-AKpaYlHn8t4SVbOHCy+b5+KKgvR4vrsD8vbvrbiQJps7fKDTkjkDry6ji0rUJjC0kzbNePLwzxq8iypo41qeWA== + exit-on-epipe "~1.0.1" + printj "~1.1.0" -base@^0.11.1: - version "0.11.2" - resolved "https://registry.yarnpkg.com/base/-/base-0.11.2.tgz#7bde5ced145b6d551a90db87f83c558b4eb48a8f" - integrity sha512-5T6P4xPgpp0YDFvSWwEZ4NoE3aM4QBQXDzmVbraCkFj8zHM+mba8SyqB5DbZWyR7mYHo6Y7BdQo3MoA4m0TeQg== +create-ecdh@^4.0.0: + version "4.0.4" + resolved "https://registry.yarnpkg.com/create-ecdh/-/create-ecdh-4.0.4.tgz#d6e7f4bffa66736085a0762fd3a632684dabcc4e" + integrity sha512-mf+TCx8wWc9VpuxfP2ht0iSISLZnt0JgWlrOKZiNqyUZWnjIaCIVNQArMHnCZKfEYRg6IM7A+NeJoN8gf/Ws0A== dependencies: - 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" + bn.js "^4.1.0" + elliptic "^6.5.3" -bcrypt-pbkdf@^1.0.0: - version "1.0.2" - resolved "https://registry.yarnpkg.com/bcrypt-pbkdf/-/bcrypt-pbkdf-1.0.2.tgz#a4301d389b6a43f9b67ff3ca11a3f6637e360e9e" - integrity sha1-pDAdOJtqQ/m2f/PKEaP2Y342Dp4= +create-hash@^1.1.0, create-hash@^1.1.2, create-hash@^1.2.0: + version "1.2.0" + resolved "https://registry.yarnpkg.com/create-hash/-/create-hash-1.2.0.tgz#889078af11a63756bcfb59bd221996be3a9ef196" + integrity sha512-z00bCGNHDG8mHAkP7CtT1qVu+bFQUPjYq/4Iv3C3kWjTFV10zIjfSoeqXo9Asws8gwSHDGj/hl2u4OGIjapeCg== dependencies: - tweetnacl "^0.14.3" - -bech32@1.1.4, bech32@^1.1.3: - version "1.1.4" - resolved "https://registry.yarnpkg.com/bech32/-/bech32-1.1.4.tgz#e38c9f37bf179b8eb16ae3a772b40c356d4832e9" - integrity sha512-s0IrSOzLlbvX7yp4WBfPITzpAU8sqQcpsmwXDiKwrG4r491vwCO/XpejasRNl0piBMe/DvP4Tz0mIS/X1DPJBQ== - -bech32@=1.1.3: - version "1.1.3" - resolved "https://registry.yarnpkg.com/bech32/-/bech32-1.1.3.tgz#bd47a8986bbb3eec34a56a097a84b8d3e9a2dfcd" - integrity sha512-yuVFUvrNcoJi0sv5phmqc6P+Fl1HjRDRNOOkHY2X/3LBy2bIGNSFx4fZ95HMaXHupuS7cZR15AsvtmCIF4UEyg== + cipher-base "^1.0.1" + inherits "^2.0.1" + md5.js "^1.3.4" + ripemd160 "^2.0.1" + sha.js "^2.4.0" -better-ajv-errors@^0.6.7: - version "0.6.7" - resolved "https://registry.yarnpkg.com/better-ajv-errors/-/better-ajv-errors-0.6.7.tgz#b5344af1ce10f434fe02fc4390a5a9c811e470d1" - integrity sha512-PYgt/sCzR4aGpyNy5+ViSQ77ognMnWq7745zM+/flYO4/Yisdtp9wDQW2IKCyVYPUxQt3E/b5GBSwfhd1LPdlg== +create-hmac@^1.1.0, create-hmac@^1.1.4, create-hmac@^1.1.7: + version "1.1.7" + resolved "https://registry.yarnpkg.com/create-hmac/-/create-hmac-1.1.7.tgz#69170c78b3ab957147b2b8b04572e47ead2243ff" + integrity sha512-MJG9liiZ+ogc4TzUwuvbER1JRdgvUFSB5+VR/g5h82fGaIRWMWddtKBHi7/sVhfjQZ6SehlyhvQYrcYkaUIpLg== dependencies: - "@babel/code-frame" "^7.0.0" - "@babel/runtime" "^7.0.0" - chalk "^2.4.1" - core-js "^3.2.1" - json-to-ast "^2.0.3" - jsonpointer "^4.0.1" - leven "^3.1.0" - -big-integer@1.6.36: - version "1.6.36" - resolved "https://registry.yarnpkg.com/big-integer/-/big-integer-1.6.36.tgz#78631076265d4ae3555c04f85e7d9d2f3a071a36" - integrity sha512-t70bfa7HYEA1D9idDbmuv7YbsbVkQ+Hp+8KFSul4aE5e/i1bjCNIRYJZlA8Q8p0r9T8cF/RVvwUgRA//FydEyg== - -big.js@^5.2.2: - version "5.2.2" - resolved "https://registry.yarnpkg.com/big.js/-/big.js-5.2.2.tgz#65f0af382f578bcdc742bd9c281e9cb2d7768328" - integrity sha512-vyL2OymJxmarO8gxMr0mhChsO9QGwhynfuu4+MHTAW6czfq9humCB7rKpUjDd9YUiDPU4mzpyupFSvOClAwbmQ== - -bignumber.js@^7.2.0, bignumber.js@^7.2.1: - version "7.2.1" - resolved "https://registry.yarnpkg.com/bignumber.js/-/bignumber.js-7.2.1.tgz#80c048759d826800807c4bfd521e50edbba57a5f" - integrity sha512-S4XzBk5sMB+Rcb/LNcpzXr57VRTxgAvaAEDAl1AwRx27j00hT84O6OkteE7u8UB3NuaaygCRrEpqox4uDOrbdQ== - -bignumber.js@^9.0.0: - version "9.0.0" - resolved "https://registry.yarnpkg.com/bignumber.js/-/bignumber.js-9.0.0.tgz#805880f84a329b5eac6e7cb6f8274b6d82bdf075" - integrity sha512-t/OYhhJ2SD+YGBQcjY8GzzDHEk9f3nerxjtfa6tlMXfe7frs/WozhvCNoGvpM0P3bNf3Gq5ZRMlGr5f3r4/N8A== - -bignumber.js@^9.0.1: - version "9.0.1" - resolved "https://registry.yarnpkg.com/bignumber.js/-/bignumber.js-9.0.1.tgz#8d7ba124c882bfd8e43260c67475518d0689e4e5" - integrity sha512-IdZR9mh6ahOBv/hYGiXyVuyCetmGJhtYkqLBpTStdhEGjegpPlUawydyaF3pbIOFynJTpllEs+NP+CS9jKFLjA== + 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" -binary-extensions@^1.0.0: - version "1.13.1" - resolved "https://registry.yarnpkg.com/binary-extensions/-/binary-extensions-1.13.1.tgz#598afe54755b2868a5330d2aff9d4ebb53209b65" - integrity sha512-Un7MIEDdUC5gNpcGDV97op1Ywk748MpHcFTHoYs6qnj1Z3j7I53VG3nwZhKzoBZmbdRNnb6WRdFlwl7tSDuZGw== +create-require@^1.1.0: + version "1.1.1" + resolved "https://registry.yarnpkg.com/create-require/-/create-require-1.1.1.tgz#c1d7e8f1e5f6cfc9ff65f9cd352d37348756c333" + integrity sha512-dcKFX3jn0MpIaXjisoRvexIJVEKzaq7z2rZKxf+MSr9TkdmHmsU4m2lcLojrj/FHl8mk5VxMmYA+ftRkP/3oKQ== -binary-extensions@^2.0.0: - version "2.2.0" - resolved "https://registry.yarnpkg.com/binary-extensions/-/binary-extensions-2.2.0.tgz#75f502eeaf9ffde42fc98829645be4ea76bd9e2d" - integrity sha512-jDctJ/IVQbZoJykoeHbhXpOlNBqGNcwXJKJog42E5HDPUwQTSdjCHdihjj0DlnheQ7blbT6dHOafNAiS8ooQKA== +cross-env@^7.0.3: + version "7.0.3" + resolved "https://registry.yarnpkg.com/cross-env/-/cross-env-7.0.3.tgz#865264b29677dc015ba8418918965dd232fc54cf" + integrity sha512-+/HKd6EgcQCJGh2PSjZuUitQBQynKor4wrFbRg4DtAgS1aWO+gU52xpH7M9ScGgXSYmAVS9bIJ8EzuaGw0oNAw== + dependencies: + cross-spawn "^7.0.1" -bindings@^1.2.1, bindings@^1.3.0, bindings@^1.3.1, bindings@^1.5.0: - version "1.5.0" - resolved "https://registry.yarnpkg.com/bindings/-/bindings-1.5.0.tgz#10353c9e945334bc0511a6d90b38fbc7c9c504df" - integrity sha512-p2q/t/mhvuOj/UeLlV6566GD/guowlr0hHxClI0W9m7MWYkL1F0hLo+0Aexs9HSPCtR1SXQ0TD3MMKrXZajbiQ== +cross-spawn@^6.0.0, cross-spawn@^6.0.5: + version "6.0.5" + resolved "https://registry.yarnpkg.com/cross-spawn/-/cross-spawn-6.0.5.tgz#4a5ec7c64dfae22c3a14124dbacdee846d80cbc4" + integrity sha512-eTVLrBSt7fjbDygz805pMnstIs2VTBNkRm0qxZd+M7A5XDdxVRWO5MxGBXZhjY4cqLYLdtrGqRf8mBPmzwSpWQ== dependencies: - file-uri-to-path "1.0.0" + nice-try "^1.0.4" + path-key "^2.0.1" + semver "^5.5.0" + shebang-command "^1.2.0" + which "^1.2.9" -bip32@^2.0.5: - version "2.0.6" - resolved "https://registry.yarnpkg.com/bip32/-/bip32-2.0.6.tgz#6a81d9f98c4cd57d05150c60d8f9e75121635134" - integrity sha512-HpV5OMLLGTjSVblmrtYRfFFKuQB+GArM0+XP8HGWfJ5vxYBqo+DesvJwOdC2WJ3bCkZShGf0QIfoIpeomVzVdA== +cross-spawn@^7.0.1, cross-spawn@^7.0.2: + version "7.0.3" + resolved "https://registry.yarnpkg.com/cross-spawn/-/cross-spawn-7.0.3.tgz#f73a85b9d5d41d045551c177e2882d4ac85728a6" + integrity sha512-iRDPJKUPVEND7dHPO8rkbOnPpyDygcDFtWjpeWNCgy8WP2rXcxXL8TskReQl6OrB2G7+UJrags1q15Fudc7G6w== dependencies: - "@types/node" "10.12.18" - bs58check "^2.1.1" - create-hash "^1.2.0" - create-hmac "^1.1.7" - tiny-secp256k1 "^1.1.3" - typeforce "^1.11.5" - wif "^2.0.6" + path-key "^3.1.0" + shebang-command "^2.0.0" + which "^2.0.1" -bip39@^3.0.2: - version "3.0.4" - resolved "https://registry.yarnpkg.com/bip39/-/bip39-3.0.4.tgz#5b11fed966840b5e1b8539f0f54ab6392969b2a0" - integrity sha512-YZKQlb752TrUWqHWj7XAwCSjYEgGAk+/Aas3V7NyjQeZYsztO8JnQUaCWhcnL4T+jL8nvB8typ2jRPzTlgugNw== +"crypt@>= 0.0.1": + version "0.0.2" + resolved "https://registry.yarnpkg.com/crypt/-/crypt-0.0.2.tgz#88d7ff7ec0dfb86f713dc87bbb42d044d3e6c41b" + integrity sha1-iNf/fsDfuG9xPch7u0LQRNPmxBs= + +crypto-browserify@3.12.0: + version "3.12.0" + resolved "https://registry.yarnpkg.com/crypto-browserify/-/crypto-browserify-3.12.0.tgz#396cf9f3137f03e4b8e532c58f698254e00f80ec" + integrity sha512-fz4spIh+znjO2VjL+IdhEpRJ3YN6sMzITSBijk6FK2UvTqruSQW+/cCZTSNsMiZNvUeq0CqurF+dAbyiGOY6Wg== dependencies: - "@types/node" "11.11.6" + browserify-cipher "^1.0.0" + browserify-sign "^4.0.0" + create-ecdh "^4.0.0" create-hash "^1.1.0" - pbkdf2 "^3.0.9" - randombytes "^2.0.1" + 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" -bip66@^1.1.5: - version "1.1.5" - resolved "https://registry.yarnpkg.com/bip66/-/bip66-1.1.5.tgz#01fa8748785ca70955d5011217d1b3139969ca22" - integrity sha1-AfqHSHhcpwlV1QESF9GzE5lpyiI= +d@1, d@^1.0.1: + version "1.0.1" + resolved "https://registry.yarnpkg.com/d/-/d-1.0.1.tgz#8698095372d58dbee346ffd0c7093f99f8f9eb5a" + integrity sha512-m62ShEObQ39CfralilEQRjH6oAMtNCV1xJyEx5LpRYUVN+EviphDgUc/F3hnYbADmkiNs67Y+3ylmlG7Lnu+FA== dependencies: - safe-buffer "^5.0.1" + es5-ext "^0.10.50" + type "^1.0.1" -bitcore-lib@^8.22.2, bitcore-lib@^8.25.10: - version "8.25.10" - resolved "https://registry.yarnpkg.com/bitcore-lib/-/bitcore-lib-8.25.10.tgz#4bbb30932dec65cb76e4d1d793f55d7e4a75f071" - integrity sha512-MyHpSg7aFRHe359RA/gdkaQAal3NswYZTLEuu0tGX1RGWXAYN9i/24fsjPqVKj+z0ua+gzAT7aQs0KiKXWCgKA== +dashdash@^1.12.0: + version "1.14.1" + resolved "https://registry.yarnpkg.com/dashdash/-/dashdash-1.14.1.tgz#853cfa0f7cbe2fed5de20326b8dd581035f6e2f0" + integrity sha1-hTz6D3y+L+1d4gMmuN1YEDX24vA= dependencies: - bech32 "=1.1.3" - bn.js "=4.11.8" - bs58 "^4.0.1" - buffer-compare "=1.1.1" - elliptic "^6.5.3" - inherits "=2.0.1" - lodash "^4.17.20" + assert-plus "^1.0.0" -bitcore-mnemonic@^8.22.2: - version "8.25.10" - resolved "https://registry.yarnpkg.com/bitcore-mnemonic/-/bitcore-mnemonic-8.25.10.tgz#43d7b73d9705a11fceef62e37089ad487e917c26" - integrity sha512-FeXxO37BLV5JRvxPmVFB91zRHalavV8H4TdQGt1/hz0AkoPymIV68OkuB+TptpjeYgatcgKPoPvPhglJkTzFQQ== - dependencies: - bitcore-lib "^8.25.10" - unorm "^1.4.1" +death@^1.1.0: + version "1.1.0" + resolved "https://registry.yarnpkg.com/death/-/death-1.1.0.tgz#01aa9c401edd92750514470b8266390c66c67318" + integrity sha1-AaqcQB7dknUFFEcLgmY5DGbGcxg= -bl@^1.0.0: - version "1.2.2" - resolved "https://registry.yarnpkg.com/bl/-/bl-1.2.2.tgz#a160911717103c07410cef63ef51b397c025af9c" - integrity sha512-e8tQYnZodmebYDWGH7KMRvtzKXaJHx3BbilrgZCfvyLUYdKpK1t5PSPmpkny/SgiTSCnjfLW7v5rlONXVFkQEA== +debug@2.6.9, debug@^2.2.0, debug@^2.6.0: + version "2.6.9" + resolved "https://registry.yarnpkg.com/debug/-/debug-2.6.9.tgz#5d128515df134ff327e90a4c93f4e077a536341f" + integrity sha512-bC7ElrdJaJnPbAP+1EotYvqZsb3ecl5wi6Bfi6BJTUcNowp6cvspg0jXznRTKDjm/E7AdgFBVeAPVMNcKGsHMA== dependencies: - readable-stream "^2.3.5" - safe-buffer "^5.1.1" + ms "2.0.0" -bl@^4.0.0: - version "4.1.0" - resolved "https://registry.yarnpkg.com/bl/-/bl-4.1.0.tgz#451535264182bec2fbbc83a62ab98cf11d9f7b3a" - integrity sha512-1W07cM9gS6DcLperZfFSj+bWLtaPGSOHWhPiGzXmvVJbRLdG82sH/Kn8EtW1VqWVA54AKf2h5k5BbnIbwF3h6w== +debug@3.2.6: + version "3.2.6" + resolved "https://registry.yarnpkg.com/debug/-/debug-3.2.6.tgz#e83d17de16d8a7efb7717edbe5fb10135eee629b" + integrity sha512-mel+jf7nrtEl5Pn1Qx46zARXKDpBbvzezse7p7LqINmdoIk8PYP5SySaxEmYv6TZ0JyEKA1hsCId6DIhgITtWQ== dependencies: - buffer "^5.5.0" - inherits "^2.0.4" - readable-stream "^3.4.0" - -blakejs@^1.1.0: - version "1.1.0" - resolved "https://registry.yarnpkg.com/blakejs/-/blakejs-1.1.0.tgz#69df92ef953aa88ca51a32df6ab1c54a155fc7a5" - integrity sha1-ad+S75U6qIylGjLfarHFShVfx6U= + ms "^2.1.1" -blob-to-it@^1.0.1: - version "1.0.2" - resolved "https://registry.yarnpkg.com/blob-to-it/-/blob-to-it-1.0.2.tgz#bc76550638ca13280dbd3f202422a6a132ffcc8d" - integrity sha512-yD8tikfTlUGEOSHExz4vDCIQFLaBPXIL0KcxGQt9RbwMVXBEh+jokdJyStvTXPgWrdKfwgk7RX8GPsgrYzsyng== +debug@4, debug@4.3.1, debug@^4.0.1, debug@^4.1.1, debug@^4.3.1: + version "4.3.1" + resolved "https://registry.yarnpkg.com/debug/-/debug-4.3.1.tgz#f0d229c505e0c6d8c49ac553d1b13dc183f6b2ee" + integrity sha512-doEwdvm4PCeK4K3RQN2ZC2BYUBaxwLARCqZmMjtF8a51J2Rb0xpVloFRnCODwqjpwnAoao4pelN8l3RJdv3gRQ== dependencies: - browser-readablestream-to-it "^1.0.2" + ms "2.1.2" -bluebird@^3.5.0, bluebird@^3.5.2: - version "3.7.2" - resolved "https://registry.yarnpkg.com/bluebird/-/bluebird-3.7.2.tgz#9f229c15be272454ffa973ace0dbee79a1b0c36f" - integrity sha512-XpNj6GDQzdfW+r2Wnn7xiSAd7TM3jzkxGXBGTtWKuSXv1xUV+azxAm8jdWZN06QTQk+2N2XB9jRDkvbmQmcRtg== - -bn.js@4.11.6: - version "4.11.6" - resolved "https://registry.yarnpkg.com/bn.js/-/bn.js-4.11.6.tgz#53344adb14617a13f6e8dd2ce28905d1c0ba3215" - integrity sha1-UzRK2xRhehP26N0s4okF0cC6MhU= - -bn.js@4.11.8, bn.js@=4.11.8, bn.js@^4.0.0, bn.js@^4.1.0, bn.js@^4.1.1, bn.js@^4.11.0, bn.js@^4.11.1, bn.js@^4.11.6, bn.js@^4.11.8, bn.js@^4.4.0: - version "4.11.8" - resolved "https://registry.yarnpkg.com/bn.js/-/bn.js-4.11.8.tgz#2cde09eb5ee341f484746bb0309b3253b1b1442f" - integrity sha512-ItfYfPLkWHUjckQCk8xC+LwxgK8NYcXywGigJgSwOP8Y2iyWT4f2vsZnoOXTTbo+o5yXmIUJ4gn5538SO5S3gA== - -bn.js@^4.11.9: - version "4.12.0" - resolved "https://registry.yarnpkg.com/bn.js/-/bn.js-4.12.0.tgz#775b3f278efbb9718eec7361f483fb36fbbfea88" - integrity sha512-c98Bf3tPniI+scsdk237ku1Dc3ujXQTSgyiPUDEOe7tRkhrqridvh8klBv0HCEso1OLOYcHuCv/cS6DNxKH+ZA== - -bn.js@^5.0.0, bn.js@^5.1.2, bn.js@^5.1.3, bn.js@^5.2.0: - version "5.2.0" - resolved "https://registry.yarnpkg.com/bn.js/-/bn.js-5.2.0.tgz#358860674396c6997771a9d051fcc1b57d4ae002" - integrity sha512-D7iWRBvnZE8ecXiLj/9wbxH7Tk79fAh8IHaTNq1RWRixsS02W+5qS+iE9yq6RYl0asXx5tw0bLhmT5pIfbSquw== +decamelize@^1.2.0: + version "1.2.0" + resolved "https://registry.yarnpkg.com/decamelize/-/decamelize-1.2.0.tgz#f6534d15148269b20352e7bee26f501f9a191290" + integrity sha1-9lNNFRSCabIDUue+4m9QH5oZEpA= -body-parser@1.19.0, body-parser@^1.16.0, body-parser@^1.18.3: - version "1.19.0" - resolved "https://registry.yarnpkg.com/body-parser/-/body-parser-1.19.0.tgz#96b2709e57c9c4e09a6fd66a8fd979844f69f08a" - integrity sha512-dhEPs72UPbDnAQJ9ZKMNTP6ptJaionhP5cBb541nXPlW60Jepo9RV/a4fX4XWW9CuFNK22krhrj1+rgzifNCsw== - 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" +decamelize@^4.0.0: + version "4.0.0" + resolved "https://registry.yarnpkg.com/decamelize/-/decamelize-4.0.0.tgz#aa472d7bf660eb15f3494efd531cab7f2a709837" + integrity sha512-9iE1PgSik9HeIIw2JO94IidnE3eBoQrFJ3w7sFuzSX4DpmZ3v5sZpUiV5Swcf6mQEF+Y0ru8Neo+p+nyh2J+hQ== -boolbase@^1.0.0, boolbase@~1.0.0: - version "1.0.0" - resolved "https://registry.yarnpkg.com/boolbase/-/boolbase-1.0.0.tgz#68dff5fbe60c51eb37725ea9e3ed310dcc1e776e" - integrity sha1-aN/1++YMUes3cl6p4+0xDcwed24= +decode-uri-component@^0.2.0: + version "0.2.0" + resolved "https://registry.yarnpkg.com/decode-uri-component/-/decode-uri-component-0.2.0.tgz#eb3913333458775cb84cd1a1fae062106bb87545" + integrity sha1-6zkTMzRYd1y4TNGh+uBiEGu4dUU= -borc@^2.1.2: - version "2.1.2" - resolved "https://registry.yarnpkg.com/borc/-/borc-2.1.2.tgz#6ce75e7da5ce711b963755117dd1b187f6f8cf19" - integrity sha512-Sy9eoUi4OiKzq7VovMn246iTo17kzuyHJKomCfpWMlI6RpfN1gk95w7d7gH264nApVLg0HZfcpz62/g4VH1Y4w== +decompress-response@^3.2.0, decompress-response@^3.3.0: + version "3.3.0" + resolved "https://registry.yarnpkg.com/decompress-response/-/decompress-response-3.3.0.tgz#80a4dd323748384bfa248083622aedec982adff3" + integrity sha1-gKTdMjdIOEv6JICDYirt7Jgq3/M= dependencies: - bignumber.js "^9.0.0" - buffer "^5.5.0" - commander "^2.15.0" - ieee754 "^1.1.13" - iso-url "~0.4.7" - json-text-sequence "~0.1.0" - readable-stream "^3.6.0" + mimic-response "^1.0.0" -brace-expansion@^1.1.7: - version "1.1.11" - resolved "https://registry.yarnpkg.com/brace-expansion/-/brace-expansion-1.1.11.tgz#3c7fcbf529d87226f3d2f52b966ff5271eb441dd" - integrity sha512-iCuPHDFgrHX7H2vEI/5xpz07zSHB00TpugqhmYtVmMO6518mCuRMoOYFldEBl0g187ufozdaHgWKcYFb61qGiA== +deep-eql@^3.0.1: + version "3.0.1" + resolved "https://registry.yarnpkg.com/deep-eql/-/deep-eql-3.0.1.tgz#dfc9404400ad1c8fe023e7da1df1c147c4b444df" + integrity sha512-+QeIQyN5ZuO+3Uk5DYh6/1eKO0m0YmJFGNmFHGACpf1ClL1nmlV/p4gNgbl2pJGxgXb4faqo6UE+M5ACEMyVcw== dependencies: - balanced-match "^1.0.0" - concat-map "0.0.1" + type-detect "^4.0.0" -braces@^1.8.2: - version "1.8.5" - resolved "https://registry.yarnpkg.com/braces/-/braces-1.8.5.tgz#ba77962e12dff969d6b76711e914b737857bf6a7" - integrity sha1-uneWLhLf+WnWt2cR6RS3N4V79qc= - dependencies: - expand-range "^1.8.1" - preserve "^0.2.0" - repeat-element "^1.1.2" +deep-is@^0.1.3, deep-is@~0.1.3: + version "0.1.3" + resolved "https://registry.yarnpkg.com/deep-is/-/deep-is-0.1.3.tgz#b369d6fb5dbc13eecf524f91b070feedc357cf34" + integrity sha1-s2nW+128E+7PUk+RsHD+7cNXzzQ= -braces@^2.3.1, braces@^2.3.2: - version "2.3.2" - resolved "https://registry.yarnpkg.com/braces/-/braces-2.3.2.tgz#5979fd3f14cd531565e5fa2df1abfff1dfaee729" - 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" +defer-to-connect@^1.0.1: + version "1.1.3" + resolved "https://registry.yarnpkg.com/defer-to-connect/-/defer-to-connect-1.1.3.tgz#331ae050c08dcf789f8c83a7b81f0ed94f4ac591" + integrity sha512-0ISdNousHvZT2EiFlZeZAHBUvSxmKswVCEf8hW7KWgG4a8MVEu/3Vb6uWYozkjylyCxe0JBIiRB1jV45S70WVQ== -braces@^3.0.1, braces@~3.0.2: - version "3.0.2" - resolved "https://registry.yarnpkg.com/braces/-/braces-3.0.2.tgz#3454e1a462ee8d599e236df336cd9ea4f8afe107" - integrity sha512-b8um+L1RzM3WDSzvhm6gIz1yfTbBt6YTlcEKAvsmqCZZFw46z626lVj9j1yEPW33H5H+lBQpZMP1k8l+78Ha0A== +deferred-leveldown@~5.3.0: + version "5.3.0" + resolved "https://registry.yarnpkg.com/deferred-leveldown/-/deferred-leveldown-5.3.0.tgz#27a997ad95408b61161aa69bd489b86c71b78058" + integrity sha512-a59VOT+oDy7vtAbLRCZwWgxu2BaCfd5Hk7wxJd48ei7I+nsg8Orlb9CLG0PMZienk9BSUKgeAqkO2+Lw+1+Ukw== dependencies: - fill-range "^7.0.1" - -brorand@^1.0.1, brorand@^1.1.0: - version "1.1.0" - resolved "https://registry.yarnpkg.com/brorand/-/brorand-1.1.0.tgz#12c25efe40a45e3c323eb8675a0a0ce57b22371f" - integrity sha1-EsJe/kCkXjwyPrhnWgoM5XsiNx8= + abstract-leveldown "~6.2.1" + inherits "^2.0.3" -browser-headers@^0.4.0, browser-headers@^0.4.1: - version "0.4.1" - resolved "https://registry.yarnpkg.com/browser-headers/-/browser-headers-0.4.1.tgz#4308a7ad3b240f4203dbb45acedb38dc2d65dd02" - integrity sha512-CA9hsySZVo9371qEHjHZtYxV2cFtVj5Wj/ZHi8ooEsrtm4vOnl9Y9HmyYWk9q+05d7K3rdoAE0j3MVEFVvtQtg== +define-properties@^1.1.2, define-properties@^1.1.3: + version "1.1.3" + resolved "https://registry.yarnpkg.com/define-properties/-/define-properties-1.1.3.tgz#cf88da6cbee26fe6db7094f61d870cbd84cee9f1" + integrity sha512-3MqfYKj2lLzdMSf8ZIZE/V+Zuy+BgD6f164e8K2w7dgnpKArBDerGYpM46IYYcjnkdPNMjPk9A6VFB8+3SKlXQ== + dependencies: + object-keys "^1.0.12" -browser-readablestream-to-it@^1.0.1, browser-readablestream-to-it@^1.0.2: - version "1.0.2" - resolved "https://registry.yarnpkg.com/browser-readablestream-to-it/-/browser-readablestream-to-it-1.0.2.tgz#f6b8d18e7a35b0321359261a32aa2c70f46921c4" - integrity sha512-lv4M2Z6RKJpyJijJzBQL5MNssS7i8yedl+QkhnLCyPtgNGNSXv1KthzUnye9NlRAtBAI80X6S9i+vK09Rzjcvg== +delayed-stream@~1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/delayed-stream/-/delayed-stream-1.0.0.tgz#df3ae199acadfb7d440aaae0b29e2272b24ec619" + integrity sha1-3zrhmayt+31ECqrgsp4icrJOxhk= -browser-stdout@1.3.1: - version "1.3.1" - resolved "https://registry.yarnpkg.com/browser-stdout/-/browser-stdout-1.3.1.tgz#baa559ee14ced73452229bad7326467c61fabd60" - integrity sha512-qhAVI1+Av2X7qelOfAIYwXONood6XlZE/fXaBSmW/T5SzLAmCgzi+eiWE7fUvbHaeNBQH13UftjpXxsfLkMpgw== +depd@~1.1.2: + version "1.1.2" + resolved "https://registry.yarnpkg.com/depd/-/depd-1.1.2.tgz#9bcd52e14c097763e749b274c4346ed2e560b5a9" + integrity sha1-m81S4UwJd2PnSbJ0xDRu0uVgtak= -browserify-aes@^1.0.0, browserify-aes@^1.0.4, browserify-aes@^1.0.6, browserify-aes@^1.2.0: - version "1.2.0" - resolved "https://registry.yarnpkg.com/browserify-aes/-/browserify-aes-1.2.0.tgz#326734642f403dabc3003209853bb70ad428ef48" - integrity sha512-+7CHXqGuspUn/Sl5aO7Ea0xWGAtETPXNSAjHo48JfLdPWcMng33Xe4znFvQweqc/uzk5zSOI3H52CYnjCfb5hA== +des.js@^1.0.0: + version "1.0.1" + resolved "https://registry.yarnpkg.com/des.js/-/des.js-1.0.1.tgz#5382142e1bdc53f85d86d53e5f4aa7deb91e0843" + integrity sha512-Q0I4pfFrv2VPd34/vfLrFOoRmlYj3OV50i7fskps1jZWK1kApMWWT9G6RRUeYedLcBDIhnSDaUvJMb3AhUlaEA== dependencies: - 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" + minimalistic-assert "^1.0.0" -browserify-cipher@^1.0.0, browserify-cipher@^1.0.1: - version "1.0.1" - resolved "https://registry.yarnpkg.com/browserify-cipher/-/browserify-cipher-1.0.1.tgz#8d6474c1b870bfdabcd3bcfcc1934a10e94f15f0" - integrity sha512-sPhkz0ARKbf4rRQt2hTpAHqn47X3llLkUGn+xEJzLjwY8LRs2p0v7ljvI5EyoRO/mexrNunNECisZs+gw2zz1w== - dependencies: - browserify-aes "^1.0.4" - browserify-des "^1.0.0" - evp_bytestokey "^1.0.0" +destroy@~1.0.4: + version "1.0.4" + resolved "https://registry.yarnpkg.com/destroy/-/destroy-1.0.4.tgz#978857442c44749e4206613e37946205826abd80" + integrity sha1-l4hXRCxEdJ5CBmE+N5RiBYJqvYA= -browserify-des@^1.0.0: - version "1.0.2" - resolved "https://registry.yarnpkg.com/browserify-des/-/browserify-des-1.0.2.tgz#3af4f1f59839403572f1c66204375f7a7f703e9c" - integrity sha512-BioO1xf3hFwz4kc6iBhI3ieDFompMhrMlnDFC4/0/vd5MokpuAc3R+LYbwTA9A5Yc9pq9UYPqffKpW2ObuwX5A== +detect-port@^1.3.0: + version "1.3.0" + resolved "https://registry.yarnpkg.com/detect-port/-/detect-port-1.3.0.tgz#d9c40e9accadd4df5cac6a782aefd014d573d1f1" + integrity sha512-E+B1gzkl2gqxt1IhUzwjrxBKRqx1UzC3WLONHinn8S3T6lwV/agVCyitiFOsGJ/eYuEUBvD71MZHy3Pv1G9doQ== dependencies: - cipher-base "^1.0.1" - des.js "^1.0.0" - inherits "^2.0.1" - safe-buffer "^5.1.2" + address "^1.0.1" + debug "^2.6.0" -browserify-rsa@^4.0.0: - version "4.0.1" - resolved "https://registry.yarnpkg.com/browserify-rsa/-/browserify-rsa-4.0.1.tgz#21e0abfaf6f2029cf2fafb133567a701d4135524" - integrity sha1-IeCr+vbyApzy+vsTNWenAdQTVSQ= +diff@3.5.0: + version "3.5.0" + resolved "https://registry.yarnpkg.com/diff/-/diff-3.5.0.tgz#800c0dd1e0a8bfbc95835c202ad220fe317e5a12" + integrity sha512-A46qtFgd+g7pDZinpnwiRJtxbC1hpgf0uzP3iG89scHk0AUC7A1TGxf5OiiOUv/JMZR8GOt8hL900hV0bOy5xA== + +diff@5.0.0: + version "5.0.0" + resolved "https://registry.yarnpkg.com/diff/-/diff-5.0.0.tgz#7ed6ad76d859d030787ec35855f5b1daf31d852b" + integrity sha512-/VTCrvm5Z0JGty/BWHljh+BAiw3IK+2j87NGMu8Nwc/f48WoDAC395uomO9ZD117ZOBaHmkX1oyLvkVM/aIT3w== + +diff@^4.0.1: + version "4.0.2" + resolved "https://registry.yarnpkg.com/diff/-/diff-4.0.2.tgz#60f3aecb89d5fae520c11aa19efc2bb982aade7d" + integrity sha512-58lmxKSA4BNyLz+HHMUzlOEpg09FV+ev6ZMe3vJihgdxzgcwZ8VoEEPmALCZG9LmqfVoNMMKpttIYTVG6uDY7A== + +diffie-hellman@^5.0.0: + version "5.0.3" + resolved "https://registry.yarnpkg.com/diffie-hellman/-/diffie-hellman-5.0.3.tgz#40e8ee98f55a2149607146921c63e1ae5f3d2875" + integrity sha512-kqag/Nl+f3GwyK25fhUMYj81BUOrZ9IuJsjIcDE5icNM9FJHAVm3VcUDxdLPoQtTuUylWm6ZIknYJwwaPxsUzg== dependencies: bn.js "^4.1.0" - randombytes "^2.0.1" + miller-rabin "^4.0.0" + randombytes "^2.0.0" -browserify-sign@^4.0.0: - version "4.0.4" - resolved "https://registry.yarnpkg.com/browserify-sign/-/browserify-sign-4.0.4.tgz#aa4eb68e5d7b658baa6bf6a57e630cbd7a93d298" - integrity sha1-qk62jl17ZYuqa/alfmMMvXqT0pg= +dir-glob@^3.0.1: + version "3.0.1" + resolved "https://registry.yarnpkg.com/dir-glob/-/dir-glob-3.0.1.tgz#56dbf73d992a4a93ba1584f4534063fd2e41717f" + integrity sha512-WkrWp9GR4KXfKGYzOLmTuGVi1UWFfws377n9cc55/tb6DuqyF6pcQ5AbiHEshaDpY9v6oaSr2XCDidGmMwdzIA== dependencies: - bn.js "^4.1.1" - browserify-rsa "^4.0.0" - create-hash "^1.1.0" - create-hmac "^1.1.2" - elliptic "^6.0.0" - inherits "^2.0.1" - parse-asn1 "^5.0.0" + path-type "^4.0.0" -browserify-zlib@^0.2.0: - version "0.2.0" - resolved "https://registry.yarnpkg.com/browserify-zlib/-/browserify-zlib-0.2.0.tgz#2869459d9aa3be245fe8fe2ca1f46e2e7f54d73f" - integrity sha512-Z942RysHXmJrhqk88FmKBVq/v5tqmSkDz7p54G/MGyjMnCFFnC79XWNbg+Vta8W6Wb2qtSZTSxIGkJrRpCFEiA== +doctrine@^3.0.0: + version "3.0.0" + resolved "https://registry.yarnpkg.com/doctrine/-/doctrine-3.0.0.tgz#addebead72a6574db783639dc87a121773973961" + integrity sha512-yS+Q5i3hBf7GBkd4KG8a7eBNNWNGLTaEwwYWUijIYM7zrlYDM0BFXHjjPWlWZ1Rg7UaddZeIDmi9jF3HmqiQ2w== dependencies: - pako "~1.0.5" + esutils "^2.0.2" -browserslist@^4.14.5: - version "4.16.3" - resolved "https://registry.yarnpkg.com/browserslist/-/browserslist-4.16.3.tgz#340aa46940d7db878748567c5dea24a48ddf3717" - integrity sha512-vIyhWmIkULaq04Gt93txdh+j02yX/JzlyhLYbV3YQCn/zvES3JnY7TifHHvvr1w5hTDluNKMkV05cs4vy8Q7sw== - dependencies: - caniuse-lite "^1.0.30001181" - colorette "^1.2.1" - electron-to-chromium "^1.3.649" - escalade "^3.1.1" - node-releases "^1.1.70" +dom-walk@^0.1.0: + version "0.1.2" + resolved "https://registry.yarnpkg.com/dom-walk/-/dom-walk-0.1.2.tgz#0c548bef048f4d1f2a97249002236060daa3fd84" + integrity sha512-6QvTW9mrGeIegrFXdtQi9pk7O/nSK6lSdXW2eqUspN5LWD7UTji2Fqw5V2YLjBpHEoU9Xl/eUWNpDeZvoyOv2w== -bs58@^4.0.0, bs58@^4.0.1: - version "4.0.1" - resolved "https://registry.yarnpkg.com/bs58/-/bs58-4.0.1.tgz#be161e76c354f6f788ae4071f63f34e8c4f0a42a" - integrity sha1-vhYedsNU9veIrkBx9j806MTwpCo= - dependencies: - base-x "^3.0.2" +dotenv@^10.0.0: + version "10.0.0" + resolved "https://registry.yarnpkg.com/dotenv/-/dotenv-10.0.0.tgz#3d4227b8fb95f81096cdd2b66653fb2c7085ba81" + integrity sha512-rlBi9d8jpv9Sf1klPjNfFAuWDjKLwTIJJ/VxtoTwIR6hnZxcEOQCZg2oIL3MWBYw5GpUDKOEnND7LXTbIpQ03Q== -bs58check@<3.0.0, bs58check@^2.1.1, bs58check@^2.1.2: - version "2.1.2" - resolved "https://registry.yarnpkg.com/bs58check/-/bs58check-2.1.2.tgz#53b018291228d82a5aa08e7d796fdafda54aebfc" - integrity sha512-0TS1jicxdU09dwJMNZtVAfzPi6Q6QeN0pM1Fkzrjn+XYHvzMKPU3pHVpva+769iNVSfIYWf7LJ6WR+BuuMf8cA== +drbg.js@^1.0.1: + version "1.0.1" + resolved "https://registry.yarnpkg.com/drbg.js/-/drbg.js-1.0.1.tgz#3e36b6c42b37043823cdbc332d58f31e2445480b" + integrity sha1-Pja2xCs3BDgjzbwzLVjzHiRFSAs= dependencies: - bs58 "^4.0.0" - create-hash "^1.1.0" - safe-buffer "^5.1.2" + browserify-aes "^1.0.6" + create-hash "^1.1.2" + create-hmac "^1.1.4" -bser@2.1.1: - version "2.1.1" - resolved "https://registry.yarnpkg.com/bser/-/bser-2.1.1.tgz#e6787da20ece9d07998533cfd9de6f5c38f4bc05" - integrity sha512-gQxTNE/GAfIIrmHLUE3oJyp5FO6HRBfhjnw4/wMmA63ZGDJnWBmgY/lyQBpnDUkGmAhbSe39tx2d/iTOAfglwQ== +duplexer3@^0.1.4: + version "0.1.4" + resolved "https://registry.yarnpkg.com/duplexer3/-/duplexer3-0.1.4.tgz#ee01dd1cac0ed3cbc7fdbea37dc0a8f1ce002ce2" + integrity sha1-7gHdHKwO08vH/b6jfcCo8c4ALOI= + +ecc-jsbn@~0.1.1: + version "0.1.2" + resolved "https://registry.yarnpkg.com/ecc-jsbn/-/ecc-jsbn-0.1.2.tgz#3a83a904e54353287874c564b7549386849a98c9" + integrity sha1-OoOpBOVDUyh4dMVkt1SThoSamMk= dependencies: - node-int64 "^0.4.0" + jsbn "~0.1.0" + safer-buffer "^2.1.0" -btoa-lite@^1.0.0: - version "1.0.0" - resolved "https://registry.yarnpkg.com/btoa-lite/-/btoa-lite-1.0.0.tgz#337766da15801210fdd956c22e9c6891ab9d0337" - integrity sha1-M3dm2hWAEhD92VbCLpxokaudAzc= +ee-first@1.1.1: + version "1.1.1" + resolved "https://registry.yarnpkg.com/ee-first/-/ee-first-1.1.1.tgz#590c61156b0ae2f4f0255732a158b266bc56b21d" + integrity sha1-WQxhFWsK4vTwJVcyoViyZrxWsh0= -buffer-alloc-unsafe@^1.1.0: - version "1.1.0" - resolved "https://registry.yarnpkg.com/buffer-alloc-unsafe/-/buffer-alloc-unsafe-1.1.0.tgz#bd7dc26ae2972d0eda253be061dba992349c19f0" - integrity sha512-TEM2iMIEQdJ2yjPJoSIsldnleVaAk1oW3DBVUykyOLsEsFmEc9kn+SFFPz+gl54KQNxlDnAwCXosOS9Okx2xAg== +elliptic@6.5.3: + version "6.5.3" + resolved "https://registry.yarnpkg.com/elliptic/-/elliptic-6.5.3.tgz#cb59eb2efdaf73a0bd78ccd7015a62ad6e0f93d6" + integrity sha512-IMqzv5wNQf+E6aHeIqATs0tOLeOTwj1QKbRcS3jBbYkl5oLAserA8yJTT7/VyHUYG91PRmPyeQDObKLPpeS4dw== + 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" -buffer-alloc@^1.2.0: - version "1.2.0" - resolved "https://registry.yarnpkg.com/buffer-alloc/-/buffer-alloc-1.2.0.tgz#890dd90d923a873e08e10e5fd51a57e5b7cce0ec" - integrity sha512-CFsHQgjtW1UChdXgbyJGtnm+O/uLQeZdtbDo8mfUgYXCHSM1wgrVxXm6bSyrUuErEb+4sYVGCzASBRot7zyrow== +elliptic@6.5.4, elliptic@^6.4.0, elliptic@^6.5.2, elliptic@^6.5.3: + version "6.5.4" + resolved "https://registry.yarnpkg.com/elliptic/-/elliptic-6.5.4.tgz#da37cebd31e79a1367e941b592ed1fbebd58abbb" + integrity sha512-iLhC6ULemrljPZb+QutR5TQGB+pdW6KGD5RSegS+8sorOZT+rdQFbsQFJgvN3eRqNALqJer4oQ16YvJHlU8hzQ== dependencies: - buffer-alloc-unsafe "^1.1.0" - buffer-fill "^1.0.0" + 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" -buffer-compare@=1.1.1: - version "1.1.1" - resolved "https://registry.yarnpkg.com/buffer-compare/-/buffer-compare-1.1.1.tgz#5be7be853af89198d1f4ddc090d1d66a48aef596" - integrity sha1-W+e+hTr4kZjR9N3AkNHWakiu9ZY= +emoji-regex@^7.0.1: + version "7.0.3" + resolved "https://registry.yarnpkg.com/emoji-regex/-/emoji-regex-7.0.3.tgz#933a04052860c85e83c122479c4748a8e4c72156" + integrity sha512-CwBLREIQ7LvYFB0WyRvwhq5N5qPhc6PMjD6bYggFlI5YyDgl+0vxq5VHbMOFqLg7hfWzmu8T5Z1QofhmTIhItA== -buffer-crc32@~0.2.3: - version "0.2.13" - resolved "https://registry.yarnpkg.com/buffer-crc32/-/buffer-crc32-0.2.13.tgz#0d333e3f00eac50aa1454abd30ef8c2a5d9a7242" - integrity sha1-DTM+PwDqxQqhRUq9MO+MKl2ackI= +emoji-regex@^8.0.0: + version "8.0.0" + resolved "https://registry.yarnpkg.com/emoji-regex/-/emoji-regex-8.0.0.tgz#e818fd69ce5ccfcb404594f842963bf53164cc37" + integrity sha512-MSjYzcWNOA0ewAHpz0MxpYFvwg6yjy1NG3xteoqz644VCo/RPgnr1/GGt+ic3iJTzQ8Eu3TdM14SawnVUmGE6A== -buffer-fill@^1.0.0: - version "1.0.0" - resolved "https://registry.yarnpkg.com/buffer-fill/-/buffer-fill-1.0.0.tgz#f8f78b76789888ef39f205cd637f68e702122b2c" - integrity sha1-+PeLdniYiO858gXNY39o5wISKyw= +emoji-regex@^9.2.2: + version "9.2.2" + resolved "https://registry.yarnpkg.com/emoji-regex/-/emoji-regex-9.2.2.tgz#840c8803b0d8047f4ff0cf963176b32d4ef3ed72" + integrity sha512-L18DaJsXSUk2+42pv8mLs5jJT2hqFkFE4j21wOmgbUqsZ2hL72NsUU785g9RXgo3s0ZNgVl42TiHp3ZtOv/Vyg== -buffer-from@1.1.0: - version "1.1.0" - resolved "https://registry.yarnpkg.com/buffer-from/-/buffer-from-1.1.0.tgz#87fcaa3a298358e0ade6e442cfce840740d1ad04" - integrity sha512-c5mRlguI/Pe2dSZmpER62rSCu0ryKmWddzRYsuXc50U2/g8jMOulc31VZMa4mYx31U5xsmSOpDCgH88Vl9cDGQ== +encode-utf8@^1.0.2: + version "1.0.3" + resolved "https://registry.yarnpkg.com/encode-utf8/-/encode-utf8-1.0.3.tgz#f30fdd31da07fb596f281beb2f6b027851994cda" + integrity sha512-ucAnuBEhUK4boH2HjVYG5Q2mQyPorvv0u/ocS+zhdw0S8AlHYY+GOFhP1Gio5z4icpP2ivFSvhtFjQi8+T9ppw== -buffer-from@1.1.1, buffer-from@^1.0.0: - version "1.1.1" - resolved "https://registry.yarnpkg.com/buffer-from/-/buffer-from-1.1.1.tgz#32713bc028f75c02fdb710d7c7bcec1f2c6070ef" - integrity sha512-MQcXEUbCKtEo7bhqEs6560Hyd4XaovZlO/k9V3hjVUF/zwW7KBVdSK4gIt/bzwS9MbR5qob+F5jusZsb0YQK2A== - -buffer-pipe@0.0.3: - version "0.0.3" - resolved "https://registry.yarnpkg.com/buffer-pipe/-/buffer-pipe-0.0.3.tgz#242197681d4591e7feda213336af6c07a5ce2409" - integrity sha512-GlxfuD/NrKvCNs0Ut+7b1IHjylfdegMBxQIlZHj7bObKVQBxB5S84gtm2yu1mQ8/sSggceWBDPY0cPXgvX2MuA== - dependencies: - safe-buffer "^5.1.2" - -buffer-to-arraybuffer@^0.0.5: - version "0.0.5" - resolved "https://registry.yarnpkg.com/buffer-to-arraybuffer/-/buffer-to-arraybuffer-0.0.5.tgz#6064a40fa76eb43c723aba9ef8f6e1216d10511a" - integrity sha1-YGSkD6dutDxyOrqe+PbhIW0QURo= - -buffer-xor@^1.0.3: - version "1.0.3" - resolved "https://registry.yarnpkg.com/buffer-xor/-/buffer-xor-1.0.3.tgz#26e61ed1422fb70dd42e6e36729ed51d855fe8d9" - integrity sha1-JuYe0UIvtw3ULm42cp7VHYVf6Nk= +encodeurl@~1.0.2: + version "1.0.2" + resolved "https://registry.yarnpkg.com/encodeurl/-/encodeurl-1.0.2.tgz#ad3ff4c86ec2d029322f5a02c3a9a606c95b3f59" + integrity sha1-rT/0yG7C0CkyL1oCw6mmBslbP1k= -buffer@6.0.3, buffer@^6.0.1: - version "6.0.3" - resolved "https://registry.yarnpkg.com/buffer/-/buffer-6.0.3.tgz#2ace578459cc8fbe2a70aaa8f52ee63b6a74c6c6" - integrity sha512-FTiCpNxtwiZZHEZbcbTIcZjERVICn9yq/pDFkTl95/AxzD1naBctN7YO68riM/gLSDY7sdrMby8hofADYuuqOA== +encoding-down@^6.3.0: + version "6.3.0" + resolved "https://registry.yarnpkg.com/encoding-down/-/encoding-down-6.3.0.tgz#b1c4eb0e1728c146ecaef8e32963c549e76d082b" + integrity sha512-QKrV0iKR6MZVJV08QY0wp1e7vF6QbhnbQhb07bwpEyuz4uZiZgPlEGdkCROuFkUwdxlFaiPIhjyarH1ee/3vhw== dependencies: - base64-js "^1.3.1" - ieee754 "^1.2.1" + abstract-leveldown "^6.2.1" + inherits "^2.0.3" + level-codec "^9.0.0" + level-errors "^2.0.0" -buffer@^4.3.0: - version "4.9.2" - resolved "https://registry.yarnpkg.com/buffer/-/buffer-4.9.2.tgz#230ead344002988644841ab0244af8c44bbe3ef8" - integrity sha512-xq+q3SRMOxGivLhBNaUdC64hDTQwejJ+H0T/NB1XMtTVEwNTrfFF3gAxiyW0Bu/xWEGhjVKgUcMhCrUy2+uCWg== +end-of-stream@^1.1.0: + version "1.4.4" + resolved "https://registry.yarnpkg.com/end-of-stream/-/end-of-stream-1.4.4.tgz#5ae64a5f45057baf3626ec14da0ca5e4b2431eb0" + integrity sha512-+uw1inIHVPQoaVuHzRyXd21icM+cnt4CzD5rW+NC1wjOUSTOs+Te7FOv7AhN7vS9x/oIyhLP5PR1H+phQAHu5Q== dependencies: - base64-js "^1.0.2" - ieee754 "^1.1.4" - isarray "^1.0.0" + once "^1.4.0" -buffer@^5.0.5, buffer@^5.2.1: - version "5.4.3" - resolved "https://registry.yarnpkg.com/buffer/-/buffer-5.4.3.tgz#3fbc9c69eb713d323e3fc1a895eee0710c072115" - integrity sha512-zvj65TkFeIt3i6aj5bIvJDzjjQQGs4o/sNoezg1F1kYap9Nu2jcUdpwzRSJTHMMzG0H7bZkn4rNQpImhuxWX2A== +enquirer@^2.3.0, enquirer@^2.3.5, enquirer@^2.3.6: + version "2.3.6" + resolved "https://registry.yarnpkg.com/enquirer/-/enquirer-2.3.6.tgz#2a7fe5dd634a1e4125a975ec994ff5456dc3734d" + integrity sha512-yjNnPr315/FjS4zIsUxYguYUPP2e1NK4d7E7ZOLiyYCcbFBiTMyID+2wvm2w6+pZ/odMA7cRkjhsPbltwBOrLg== dependencies: - base64-js "^1.0.2" - ieee754 "^1.1.4" + ansi-colors "^4.1.1" -buffer@^5.4.3, buffer@^5.5.0, buffer@^5.6.0, buffer@^5.7.0: - version "5.7.1" - resolved "https://registry.yarnpkg.com/buffer/-/buffer-5.7.1.tgz#ba62e7c13133053582197160851a8f648e99eed0" - integrity sha512-EHcyIPBQ4BSGlvjB16k5KgAJ27CIsHY/2JBmCRReo48y9rQ3MaUzWX3KVlBa4U7MyX02HdVj0K7C3WaB3ju7FQ== - dependencies: - base64-js "^1.3.1" - ieee754 "^1.1.13" +env-paths@^2.2.0: + version "2.2.1" + resolved "https://registry.yarnpkg.com/env-paths/-/env-paths-2.2.1.tgz#420399d416ce1fbe9bc0a07c62fa68d67fd0f8f2" + integrity sha512-+h1lkLKhZMTYjog1VEpJNG7NZJWcuc2DDk/qsqSTRRCOXiLjeQ1d1/udrUGhqMxUgAlwKNZ0cf2uqan5GLuS2A== -bufferutil@^4.0.1: - version "4.0.3" - resolved "https://registry.yarnpkg.com/bufferutil/-/bufferutil-4.0.3.tgz#66724b756bed23cd7c28c4d306d7994f9943cc6b" - integrity sha512-yEYTwGndELGvfXsImMBLop58eaGW+YdONi1fNjTINSY98tmMmFijBG6WXgdkfuLNt4imzQNtIE+eBp1PVpMCSw== +errno@~0.1.1: + version "0.1.8" + resolved "https://registry.yarnpkg.com/errno/-/errno-0.1.8.tgz#8bb3e9c7d463be4976ff888f76b4809ebc2e811f" + integrity sha512-dJ6oBr5SQ1VSd9qkk7ByRgb/1SH4JZjCHSW/mr63/QcXO9zLVxvJ6Oy13nio03rxpSnVDDjFor75SjVeZWPW/A== dependencies: - node-gyp-build "^4.2.0" - -builtin-modules@^1.1.1: - version "1.1.1" - resolved "https://registry.yarnpkg.com/builtin-modules/-/builtin-modules-1.1.1.tgz#270f076c5a72c02f5b65a47df94c5fe3a278892f" - integrity sha1-Jw8HbFpywC9bZaR9+Uxf46J4iS8= - -builtin-status-codes@^3.0.0: - version "3.0.0" - resolved "https://registry.yarnpkg.com/builtin-status-codes/-/builtin-status-codes-3.0.0.tgz#85982878e21b98e1c66425e03d0174788f569ee8" - integrity sha1-hZgoeOIbmOHGZCXgPQF0eI9Wnug= + prr "~1.0.1" -busboy@^0.3.1: - version "0.3.1" - resolved "https://registry.yarnpkg.com/busboy/-/busboy-0.3.1.tgz#170899274c5bf38aae27d5c62b71268cd585fd1b" - integrity sha512-y7tTxhGKXcyBxRKAni+awqx8uqaJKrSFSNFSeRG5CsWNdmy2BIK+6VGWEW7TZnIO/533mtMEA4rOevQV815YJw== +error-ex@^1.3.1: + version "1.3.2" + resolved "https://registry.yarnpkg.com/error-ex/-/error-ex-1.3.2.tgz#b4ac40648107fdcdcfae242f428bea8a14d4f1bf" + integrity sha512-7dFHNmqeFSEt2ZBsCriorKnn3Z2pj+fd9kmI6QoWw4//DL+icEBfc0U7qJCisqrTsKTjw4fNFy2pW9OqStD84g== dependencies: - dicer "0.3.0" - -bytes@3.1.0: - version "3.1.0" - resolved "https://registry.yarnpkg.com/bytes/-/bytes-3.1.0.tgz#f6cf7933a360e0588fa9fde85651cdc7f805d1f6" - integrity sha512-zauLjrfCG+xvoyaqLoV8bLVXXNGC4JqlxFCutSDWA6fJrTo2ZuvLYTqZ7aHBLZSMOopbzwv8f+wZcVzfVTI2Dg== - -cache-base@^1.0.1: - version "1.0.1" - resolved "https://registry.yarnpkg.com/cache-base/-/cache-base-1.0.1.tgz#0a7f46416831c8b662ee36fe4e7c59d76f666ab2" - 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" + is-arrayish "^0.2.1" -cacheable-request@^6.0.0: - version "6.1.0" - resolved "https://registry.yarnpkg.com/cacheable-request/-/cacheable-request-6.1.0.tgz#20ffb8bd162ba4be11e9567d823db651052ca912" - integrity sha512-Oj3cAGPCqOZX7Rz64Uny2GYAZNliQSqfbePrgAQ1wKAihYmCUnraBtJtKcGR4xz7wF+LoJC+ssFZvv5BgF9Igg== +es-abstract@^1.18.0-next.1, es-abstract@^1.18.0-next.2: + version "1.18.0" + resolved "https://registry.yarnpkg.com/es-abstract/-/es-abstract-1.18.0.tgz#ab80b359eecb7ede4c298000390bc5ac3ec7b5a4" + integrity sha512-LJzK7MrQa8TS0ja2w3YNLzUgJCGPdPOV1yVvezjNnS89D+VR08+Szt2mz3YB2Dck/+w5tfIq/RoUAFqJJGM2yw== 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" + call-bind "^1.0.2" + es-to-primitive "^1.2.1" + function-bind "^1.1.1" + get-intrinsic "^1.1.1" + has "^1.0.3" + has-symbols "^1.0.2" + is-callable "^1.2.3" + is-negative-zero "^2.0.1" + is-regex "^1.1.2" + is-string "^1.0.5" + object-inspect "^1.9.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.0" -call-bind@^1.0.0, call-bind@^1.0.2: - version "1.0.2" - resolved "https://registry.yarnpkg.com/call-bind/-/call-bind-1.0.2.tgz#b1d4e89e688119c3c9a903ad30abb2f6a919be3c" - integrity sha512-7O+FbCihrB5WGbFYesctwmTKae6rOiIzmz1icreWJ+0aA7LJfuqhEso2T9ncpcFtzMQtzXf2QGGueWJGTYsqrA== +es-to-primitive@^1.2.1: + version "1.2.1" + resolved "https://registry.yarnpkg.com/es-to-primitive/-/es-to-primitive-1.2.1.tgz#e55cd4c9cdc188bcefb03b366c736323fc5c898a" + integrity sha512-QCOllgZJtaUo9miYBcLChTUaHNjJF3PYs1VidD7AwiEj1kYxKeQTctLAezAOH5ZKRH0g2IgPn6KwB4IT8iRpvA== dependencies: - function-bind "^1.1.1" - get-intrinsic "^1.0.2" + is-callable "^1.1.4" + is-date-object "^1.0.1" + is-symbol "^1.0.2" -camel-case@4.1.1: - version "4.1.1" - resolved "https://registry.yarnpkg.com/camel-case/-/camel-case-4.1.1.tgz#1fc41c854f00e2f7d0139dfeba1542d6896fe547" - integrity sha512-7fa2WcG4fYFkclIvEmxBbTvmibwF2/agfEBc6q3lOpVu0A13ltLsA+Hr/8Hp6kp5f+G7hKi6t8lys6XxP+1K6Q== +es5-ext@^0.10.35, es5-ext@^0.10.50: + version "0.10.53" + resolved "https://registry.yarnpkg.com/es5-ext/-/es5-ext-0.10.53.tgz#93c5a3acfdbef275220ad72644ad02ee18368de1" + integrity sha512-Xs2Stw6NiNHWypzRTY1MtaG/uJlwCk8kH81920ma8mvN8Xq1gsfhZvpkImLQArw8AHnv8MT2I45J3c0R8slE+Q== dependencies: - pascal-case "^3.1.1" - tslib "^1.10.0" + es6-iterator "~2.0.3" + es6-symbol "~3.1.3" + next-tick "~1.0.0" -camel-case@4.1.2: - version "4.1.2" - resolved "https://registry.yarnpkg.com/camel-case/-/camel-case-4.1.2.tgz#9728072a954f805228225a6deea6b38461e1bd5a" - integrity sha512-gxGWBrTT1JuMx6R+o5PTXMmUnhnVzLQ9SNutD4YqKtI6ap897t3tKECYla6gCWEkplXnlNybEkZg9GEGxKFCgw== +es6-iterator@~2.0.3: + version "2.0.3" + resolved "https://registry.yarnpkg.com/es6-iterator/-/es6-iterator-2.0.3.tgz#a7de889141a05a94b0854403b2d0a0fbfa98f3b7" + integrity sha1-p96IkUGgWpSwhUQDstCg+/qY87c= dependencies: - pascal-case "^3.1.2" - tslib "^2.0.3" + d "1" + es5-ext "^0.10.35" + es6-symbol "^3.1.1" -camel-case@^3.0.0: - version "3.0.0" - resolved "https://registry.yarnpkg.com/camel-case/-/camel-case-3.0.0.tgz#ca3c3688a4e9cf3a4cda777dc4dcbc713249cf73" - integrity sha1-yjw2iKTpzzpM2nd9xNy8cTJJz3M= +es6-symbol@^3.1.1, es6-symbol@~3.1.3: + version "3.1.3" + resolved "https://registry.yarnpkg.com/es6-symbol/-/es6-symbol-3.1.3.tgz#bad5d3c1bcdac28269f4cb331e431c78ac705d18" + integrity sha512-NJ6Yn3FuDinBaBRWl/q5X/s4koRHBrgKAu+yGI6JCBeiu3qrcbJhwT2GeR/EXVfylRk8dpQVJoLEFhK+Mu31NA== dependencies: - no-case "^2.2.0" - upper-case "^1.1.1" + d "^1.0.1" + ext "^1.1.2" -camelcase@^1.0.2: - version "1.2.1" - resolved "https://registry.yarnpkg.com/camelcase/-/camelcase-1.2.1.tgz#9bb5304d2e0b56698b2c758b08a3eaa9daa58a39" - integrity sha1-m7UwTS4LVmmLLHWLCKPqqdqlijk= +escalade@^3.1.1: + version "3.1.1" + resolved "https://registry.yarnpkg.com/escalade/-/escalade-3.1.1.tgz#d8cfdc7000965c5a0174b4a82eaa5c0552742e40" + integrity sha512-k0er2gUkLf8O0zKJiAhmkTnJlTvINGv7ygDNPbeIsX/TJjGJZHuh9B2UxbsaEkmlEo9MfhrSzmhIlhRlI2GXnw== -camelcase@^2.0.1: - version "2.1.1" - resolved "https://registry.yarnpkg.com/camelcase/-/camelcase-2.1.1.tgz#7c1d16d679a1bbe59ca02cacecfb011e201f5a1f" - integrity sha1-fB0W1nmhu+WcoCys7PsBHiAfWh8= +escape-html@~1.0.3: + version "1.0.3" + resolved "https://registry.yarnpkg.com/escape-html/-/escape-html-1.0.3.tgz#0258eae4d3d0c0974de1c169188ef0051d1d1988" + integrity sha1-Aljq5NPQwJdN4cFpGI7wBR0dGYg= -camelcase@^3.0.0: - version "3.0.0" - resolved "https://registry.yarnpkg.com/camelcase/-/camelcase-3.0.0.tgz#32fc4b9fcdaf845fcdf7e73bb97cac2261f0ab0a" - integrity sha1-MvxLn82vhF/N9+c7uXysImHwqwo= +escape-string-regexp@1.0.5, escape-string-regexp@^1.0.5: + version "1.0.5" + resolved "https://registry.yarnpkg.com/escape-string-regexp/-/escape-string-regexp-1.0.5.tgz#1b61c0562190a8dff6ae3bb2cf0200ca130b86d4" + integrity sha1-G2HAViGQqN/2rjuyzwIAyhMLhtQ= -camelcase@^4.1.0: - version "4.1.0" - resolved "https://registry.yarnpkg.com/camelcase/-/camelcase-4.1.0.tgz#d545635be1e33c542649c69173e5de6acfae34dd" - integrity sha1-1UVjW+HjPFQmScaRc+Xeas+uNN0= +escape-string-regexp@4.0.0, escape-string-regexp@^4.0.0: + version "4.0.0" + resolved "https://registry.yarnpkg.com/escape-string-regexp/-/escape-string-regexp-4.0.0.tgz#14ba83a5d373e3d311e5afca29cf5bfad965bf34" + integrity sha512-TtpcNJ3XAzx3Gq8sWRzJaVajRs0uVxA2YAkdb1jm2YkPz4G6egUFAyA3n5vtEIZefPk5Wa4UXbKuS5fKkJWdgA== -camelcase@^5.0.0, camelcase@^5.3.1: - version "5.3.1" - resolved "https://registry.yarnpkg.com/camelcase/-/camelcase-5.3.1.tgz#e3c9b31569e106811df242f715725a1f4c494320" - integrity sha512-L28STB170nwWS63UjtlEOE3dldQApaJXZkOI1uMFfzf3rRuPegHaHesyee+YxQ+W6SvRDQV6UrdOdRiR153wJg== +escodegen@1.8.x: + version "1.8.1" + resolved "https://registry.yarnpkg.com/escodegen/-/escodegen-1.8.1.tgz#5a5b53af4693110bebb0867aa3430dd3b70a1018" + 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" -caniuse-lite@^1.0.30001181: - version "1.0.30001200" - resolved "https://registry.yarnpkg.com/caniuse-lite/-/caniuse-lite-1.0.30001200.tgz#25435af6ba907c2a9c86d21ce84950d4824e6620" - integrity sha512-ic/jXfa6tgiPBAISWk16jRI2q8YfjxHnSG7ddSL1ptrIP8Uy11SayFrjXRAk3NumHpDb21fdTkbTxb/hOrFrnQ== +eslint-config-prettier@^8.3.0: + version "8.3.0" + resolved "https://registry.yarnpkg.com/eslint-config-prettier/-/eslint-config-prettier-8.3.0.tgz#f7471b20b6fe8a9a9254cc684454202886a2dd7a" + integrity sha512-BgZuLUSeKzvlL/VUjx/Yb787VQ26RU3gGjA3iiFvdsp/2bMfVIWUVP7tjxtjS0e+HP409cPlPvNkQloz8C91ew== -caseless@^0.12.0, caseless@~0.12.0: - version "0.12.0" - resolved "https://registry.yarnpkg.com/caseless/-/caseless-0.12.0.tgz#1b681c21ff84033c826543090689420d187151dc" - integrity sha1-G2gcIf+EAzyCZUMJBolCDRhxUdw= +eslint-scope@^4.0.3: + version "4.0.3" + resolved "https://registry.yarnpkg.com/eslint-scope/-/eslint-scope-4.0.3.tgz#ca03833310f6889a3264781aa82e63eb9cfe7848" + integrity sha512-p7VutNr1O/QrxysMo3E45FjYDTeXBy0iTltPFNSqKAIfjDSXC+4dj+qfyuD8bfAXrW/y6lW3O76VaYNPKfpKrg== + dependencies: + esrecurse "^4.1.0" + estraverse "^4.1.1" -cbor@^4.1.5: - version "4.3.0" - resolved "https://registry.yarnpkg.com/cbor/-/cbor-4.3.0.tgz#0217c1cadd067d9112f44336dca07e72020bb804" - integrity sha512-CvzaxQlaJVa88sdtTWvLJ++MbdtPHtZOBBNjm7h3YKUHILMs9nQyD4AC6hvFZy7GBVB3I6bRibJcxeHydyT2IQ== +eslint-scope@^5.1.1: + version "5.1.1" + resolved "https://registry.yarnpkg.com/eslint-scope/-/eslint-scope-5.1.1.tgz#e786e59a66cb92b3f6c1fb0d508aab174848f48c" + integrity sha512-2NxwbF/hZ0KpepYN0cNbo+FN6XoK7GaHlQhgx/hIZl6Va0bF45RQOOwhLIy8lQDbuCiadSLCBnH2CFYquit5bw== dependencies: - bignumber.js "^9.0.0" - commander "^3.0.0" - json-text-sequence "^0.1" - nofilter "^1.0.3" + esrecurse "^4.3.0" + estraverse "^4.1.1" -cbor@^5.1.0: - version "5.2.0" - resolved "https://registry.yarnpkg.com/cbor/-/cbor-5.2.0.tgz#4cca67783ccd6de7b50ab4ed62636712f287a67c" - integrity sha512-5IMhi9e1QU76ppa5/ajP1BmMWZ2FHkhAhjeVKQ/EFCgYSEaeVaoGtL7cxJskf9oCCk+XjzaIdc3IuU/dbA/o2A== +eslint-utils@^1.3.1: + version "1.4.3" + resolved "https://registry.yarnpkg.com/eslint-utils/-/eslint-utils-1.4.3.tgz#74fec7c54d0776b6f67e0251040b5806564e981f" + integrity sha512-fbBN5W2xdY45KulGXmLHZ3c3FHfVYmKg0IrAKGOkT/464PQsx2UeIzfz1RmEci+KLm1bBaAzZAh8+/E+XAeZ8Q== dependencies: - bignumber.js "^9.0.1" - nofilter "^1.0.4" + eslint-visitor-keys "^1.1.0" -center-align@^0.1.1: - version "0.1.3" - resolved "https://registry.yarnpkg.com/center-align/-/center-align-0.1.3.tgz#aa0d32629b6ee972200411cbd4461c907bc2b7ad" - integrity sha1-qg0yYptu6XIgBBHL1EYckHvCt60= +eslint-utils@^2.1.0: + version "2.1.0" + resolved "https://registry.yarnpkg.com/eslint-utils/-/eslint-utils-2.1.0.tgz#d2de5e03424e707dc10c74068ddedae708741b27" + integrity sha512-w94dQYoauyvlDc43XnGB8lU3Zt713vNChgt4EWwhXAP2XkBvndfxF0AgIqKOOasjPIPzj9JqgwkwbCYD0/V3Zg== dependencies: - align-text "^0.1.3" - lazy-cache "^1.0.3" + eslint-visitor-keys "^1.1.0" -chai-as-promised@^7.1.1: - version "7.1.1" - resolved "https://registry.yarnpkg.com/chai-as-promised/-/chai-as-promised-7.1.1.tgz#08645d825deb8696ee61725dbf590c012eb00ca0" - integrity sha512-azL6xMoi+uxu6z4rhWQ1jbdUhOMhis2PvscD/xjLqNMkv3BPPp2JyyuTHOrf9BOosGpNQ11v6BKv/g57RXbiaA== +eslint-utils@^3.0.0: + version "3.0.0" + resolved "https://registry.yarnpkg.com/eslint-utils/-/eslint-utils-3.0.0.tgz#8aebaface7345bb33559db0a1f13a1d2d48c3672" + integrity sha512-uuQC43IGctw68pJA1RgbQS8/NP7rch6Cwd4j3ZBtgo4/8Flj4eGE7ZYSZRN3iq5pVUv6GPdW5Z1RFleo84uLDA== dependencies: - check-error "^1.0.2" + eslint-visitor-keys "^2.0.0" -"chai-bignumber@github:ren-forks/chai-bignumber.git#afa6f46dcbef0b7e622dc27b9b3354fc67afafbc": - version "2.0.2" - resolved "https://codeload.github.com/ren-forks/chai-bignumber/tar.gz/afa6f46dcbef0b7e622dc27b9b3354fc67afafbc" +eslint-visitor-keys@^1.0.0, eslint-visitor-keys@^1.1.0, eslint-visitor-keys@^1.3.0: + version "1.3.0" + resolved "https://registry.yarnpkg.com/eslint-visitor-keys/-/eslint-visitor-keys-1.3.0.tgz#30ebd1ef7c2fdff01c3a4f151044af25fab0523e" + integrity sha512-6J72N8UNa462wa/KFODt/PJ3IU60SDpC3QXC1Hjc1BXXpfL2C9R5+AU7jhe0F6GREqVMh4Juu+NY7xn+6dipUQ== -chai@^4.3.4: - version "4.3.4" - resolved "https://registry.yarnpkg.com/chai/-/chai-4.3.4.tgz#b55e655b31e1eac7099be4c08c21964fce2e6c49" - integrity sha512-yS5H68VYOCtN1cjfwumDSuzn/9c+yza4f3reKXlE5rUg7SFcCEy90gJvydNgOYtblyf4Zi6jIWRnXOgErta0KA== +eslint-visitor-keys@^2.0.0: + version "2.1.0" + resolved "https://registry.yarnpkg.com/eslint-visitor-keys/-/eslint-visitor-keys-2.1.0.tgz#f65328259305927392c938ed44eb0a5c9b2bd303" + integrity sha512-0rSmRBzXgDzIsD6mGdJgevzgezI534Cer5L/vyMX0kHzT/jiB43jRhd9YUlMGYLQy2zprNmoT8qasCGtY+QaKw== + +eslint@^5.6.0: + version "5.16.0" + resolved "https://registry.yarnpkg.com/eslint/-/eslint-5.16.0.tgz#a1e3ac1aae4a3fbd8296fcf8f7ab7314cbb6abea" + integrity sha512-S3Rz11i7c8AA5JPv7xAH+dOyq/Cu/VXHiHXBPOU1k/JAM5dXqQPt3qcrhpHSorXmrpu2g0gkIBVXAqCpzfoZIg== 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" + "@babel/code-frame" "^7.0.0" + ajv "^6.9.1" + chalk "^2.1.0" + cross-spawn "^6.0.5" + debug "^4.0.1" + doctrine "^3.0.0" + eslint-scope "^4.0.3" + eslint-utils "^1.3.1" + eslint-visitor-keys "^1.0.0" + espree "^5.0.1" + esquery "^1.0.1" + esutils "^2.0.2" + file-entry-cache "^5.0.1" + functional-red-black-tree "^1.0.1" + glob "^7.1.2" + globals "^11.7.0" + ignore "^4.0.6" + import-fresh "^3.0.0" + imurmurhash "^0.1.4" + inquirer "^6.2.2" + js-yaml "^3.13.0" + json-stable-stringify-without-jsonify "^1.0.1" + levn "^0.3.0" + lodash "^4.17.11" + minimatch "^3.0.4" + mkdirp "^0.5.1" + natural-compare "^1.4.0" + optionator "^0.8.2" + path-is-inside "^1.0.2" + progress "^2.0.0" + regexpp "^2.0.1" + semver "^5.5.1" + strip-ansi "^4.0.0" + strip-json-comments "^2.0.1" + table "^5.2.3" + text-table "^0.2.0" + +eslint@^7.32.0: + version "7.32.0" + resolved "https://registry.yarnpkg.com/eslint/-/eslint-7.32.0.tgz#c6d328a14be3fb08c8d1d21e12c02fdb7a2a812d" + integrity sha512-VHZ8gX+EDfz+97jGcgyGCyRia/dPOd6Xh9yPv8Bl1+SoaIwD+a/vlrOmGRUyOYu7MwUhc7CxqeaDZU13S4+EpA== + dependencies: + "@babel/code-frame" "7.12.11" + "@eslint/eslintrc" "^0.4.3" + "@humanwhocodes/config-array" "^0.5.0" + ajv "^6.10.0" + chalk "^4.0.0" + cross-spawn "^7.0.2" + debug "^4.0.1" + doctrine "^3.0.0" + enquirer "^2.3.5" + escape-string-regexp "^4.0.0" + eslint-scope "^5.1.1" + eslint-utils "^2.1.0" + eslint-visitor-keys "^2.0.0" + espree "^7.3.1" + esquery "^1.4.0" + esutils "^2.0.2" + fast-deep-equal "^3.1.3" + file-entry-cache "^6.0.1" + functional-red-black-tree "^1.0.1" + glob-parent "^5.1.2" + globals "^13.6.0" + ignore "^4.0.6" + import-fresh "^3.0.0" + imurmurhash "^0.1.4" + is-glob "^4.0.0" + js-yaml "^3.13.1" + json-stable-stringify-without-jsonify "^1.0.1" + levn "^0.4.1" + lodash.merge "^4.6.2" + minimatch "^3.0.4" + natural-compare "^1.4.0" + optionator "^0.9.1" + progress "^2.0.0" + regexpp "^3.1.0" + semver "^7.2.1" + strip-ansi "^6.0.0" + strip-json-comments "^3.1.0" + table "^6.0.9" + text-table "^0.2.0" + v8-compile-cache "^2.0.3" -chalk@1.1.3, chalk@^1.1.3: - version "1.1.3" - resolved "https://registry.yarnpkg.com/chalk/-/chalk-1.1.3.tgz#a8115c55e4a702fe4d150abd3872822a7e09fc98" - integrity sha1-qBFcVeSnAv5NFQq9OHKCKn4J/Jg= +espree@^5.0.1: + version "5.0.1" + resolved "https://registry.yarnpkg.com/espree/-/espree-5.0.1.tgz#5d6526fa4fc7f0788a5cf75b15f30323e2f81f7a" + integrity sha512-qWAZcWh4XE/RwzLJejfcofscgMc9CamR6Tn1+XRXNzrvUSSbiAjGOI/fggztjIi7y9VLPqnICMIPiGyr8JaZ0A== 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" + acorn "^6.0.7" + acorn-jsx "^5.0.0" + eslint-visitor-keys "^1.0.0" -chalk@^2.0.0, chalk@^2.0.1, chalk@^2.3.0, chalk@^2.3.2, chalk@^2.4.1, chalk@^2.4.2: - version "2.4.2" - resolved "https://registry.yarnpkg.com/chalk/-/chalk-2.4.2.tgz#cd42541677a54333cf541a49108c1432b44c9424" - integrity sha512-Mti+f9lpJNcwF4tWV8/OrTTtF1gZi+f8FqlyAdouralcFWFQWF2+NgCHShjkCb+IFBLq9buZwE1xckQU4peSuQ== +espree@^7.3.0, espree@^7.3.1: + version "7.3.1" + resolved "https://registry.yarnpkg.com/espree/-/espree-7.3.1.tgz#f2df330b752c6f55019f8bd89b7660039c1bbbb6" + integrity sha512-v3JCNCE64umkFpmkFGqzVKsOT0tN1Zr+ueqLZfpV1Ob8e+CEgPWa+OxCoGH3tnhimMKIaBm4m/vaRpJ/krRz2g== dependencies: - ansi-styles "^3.2.1" - escape-string-regexp "^1.0.5" - supports-color "^5.3.0" + acorn "^7.4.0" + acorn-jsx "^5.3.1" + eslint-visitor-keys "^1.3.0" -chalk@^4.0.0: - version "4.1.0" - resolved "https://registry.yarnpkg.com/chalk/-/chalk-4.1.0.tgz#4e14870a618d9e2edd97dd8345fd9d9dc315646a" - integrity sha512-qwx12AxXe2Q5xQ43Ac//I6v5aXTipYrSESdOgzrN+9XjgEpyjpKuvSGaN4qE93f7TQTlerQQ8S+EQ0EyDoVL1A== +esprima@2.7.x, esprima@^2.7.1: + version "2.7.3" + resolved "https://registry.yarnpkg.com/esprima/-/esprima-2.7.3.tgz#96e3b70d5779f6ad49cd032673d1c312767ba581" + integrity sha1-luO3DVd59q1JzQMmc9HDEnZ7pYE= + +esprima@^4.0.0: + version "4.0.1" + resolved "https://registry.yarnpkg.com/esprima/-/esprima-4.0.1.tgz#13b04cdb3e6c5d19df91ab6987a8695619b0aa71" + integrity sha512-eGuFFw7Upda+g4p+QHvnW0RyTX/SVeJBDM/gCtMARO0cLuT2HcEKnTPvhjV6aGeqrCB/sbNop0Kszm0jsaWU4A== + +esquery@^1.0.1, esquery@^1.4.0: + version "1.4.0" + resolved "https://registry.yarnpkg.com/esquery/-/esquery-1.4.0.tgz#2148ffc38b82e8c7057dfed48425b3e61f0f24a5" + integrity sha512-cCDispWt5vHHtwMY2YrAQ4ibFkAL8RbH5YGBnZBc90MolvvfkkQcJro/aZiAQUlQ3qgrYS6D6v8Gc5G5CQsc9w== dependencies: - ansi-styles "^4.1.0" - supports-color "^7.1.0" + estraverse "^5.1.0" -chalk@~0.4.0: - version "0.4.0" - resolved "https://registry.yarnpkg.com/chalk/-/chalk-0.4.0.tgz#5199a3ddcd0c1efe23bc08c1b027b06176e0c64f" - integrity sha1-UZmj3c0MHv4jvAjBsCewYXbgxk8= +esrecurse@^4.1.0, esrecurse@^4.3.0: + version "4.3.0" + resolved "https://registry.yarnpkg.com/esrecurse/-/esrecurse-4.3.0.tgz#7ad7964d679abb28bee72cec63758b1c5d2c9921" + integrity sha512-KmfKL3b6G+RXvP8N1vr3Tq1kL/oCFgn2NYXEtqP8/L3pKapUA4G8cFVaoF3SU323CD4XypR/ffioHmkti6/Tag== dependencies: - ansi-styles "~1.0.0" - has-color "~0.1.0" - strip-ansi "~0.1.0" + estraverse "^5.2.0" -change-case@3.0.2: - version "3.0.2" - resolved "https://registry.yarnpkg.com/change-case/-/change-case-3.0.2.tgz#fd48746cce02f03f0a672577d1d3a8dc2eceb037" - 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" +estraverse@^1.9.1: + version "1.9.3" + resolved "https://registry.yarnpkg.com/estraverse/-/estraverse-1.9.3.tgz#af67f2dc922582415950926091a4005d29c9bb44" + integrity sha1-r2fy3JIlgkFZUJJgkaQAXSnJu0Q= -"charenc@>= 0.0.1": - version "0.0.2" - resolved "https://registry.yarnpkg.com/charenc/-/charenc-0.0.2.tgz#c0a1d2f3a7092e03774bfa83f14c0fc5790a8667" - integrity sha1-wKHS86cJLgN3S/qD8UwPxXkKhmc= +estraverse@^4.1.1: + version "4.3.0" + resolved "https://registry.yarnpkg.com/estraverse/-/estraverse-4.3.0.tgz#398ad3f3c5a24948be7725e83d11a7de28cdbd1d" + integrity sha512-39nnKffWz8xN1BU/2c79n9nB9HDzo0niYUqx6xyqUnyoAnQyyWpOTdZEeiCch8BBu515t4wp9ZmgVfVhn9EBpw== -check-error@^1.0.2: - version "1.0.2" - resolved "https://registry.yarnpkg.com/check-error/-/check-error-1.0.2.tgz#574d312edd88bb5dd8912e9286dd6c0aed4aac82" - integrity sha1-V00xLt2Iu13YkS6Sht1sCu1KrII= +estraverse@^5.1.0, estraverse@^5.2.0: + version "5.2.0" + resolved "https://registry.yarnpkg.com/estraverse/-/estraverse-5.2.0.tgz#307df42547e6cc7324d3cf03c155d5cdb8c53880" + integrity sha512-BxbNGGNm0RyRYvUdHpIwv9IWzeM9XClbOxwoATuFdOE7ZE6wHL+HQ5T8hoPM+zHvmKzzsEqhgy0GrQ5X13afiQ== -cheerio-select@^1.5.0: - version "1.5.0" - resolved "https://registry.yarnpkg.com/cheerio-select/-/cheerio-select-1.5.0.tgz#faf3daeb31b17c5e1a9dabcee288aaf8aafa5823" - integrity sha512-qocaHPv5ypefh6YNxvnbABM07KMxExbtbfuJoIie3iZXX1ERwYmJcIiRrr9H05ucQP1k28dav8rpdDgjQd8drg== - dependencies: - css-select "^4.1.3" - css-what "^5.0.1" - domelementtype "^2.2.0" - domhandler "^4.2.0" - domutils "^2.7.0" - -cheerio@0.20.0: - version "0.20.0" - resolved "https://registry.yarnpkg.com/cheerio/-/cheerio-0.20.0.tgz#5c710f2bab95653272842ba01c6ea61b3545ec35" - integrity sha1-XHEPK6uVZTJyhCugHG6mGzVF7DU= - dependencies: - css-select "~1.2.0" - dom-serializer "~0.1.0" - entities "~1.1.1" - htmlparser2 "~3.8.1" - lodash "^4.1.0" - optionalDependencies: - jsdom "^7.0.2" - -cheerio@1.0.0-rc.2: - version "1.0.0-rc.2" - resolved "https://registry.yarnpkg.com/cheerio/-/cheerio-1.0.0-rc.2.tgz#4b9f53a81b27e4d5dac31c0ffd0cfa03cc6830db" - integrity sha1-S59TqBsn5NXawxwP/Qz6A8xoMNs= - dependencies: - css-select "~1.2.0" - dom-serializer "~0.1.0" - entities "~1.1.1" - htmlparser2 "^3.9.1" - lodash "^4.15.0" - parse5 "^3.0.1" - -cheerio@^1.0.0-rc.2: - version "1.0.0-rc.10" - resolved "https://registry.yarnpkg.com/cheerio/-/cheerio-1.0.0-rc.10.tgz#2ba3dcdfcc26e7956fc1f440e61d51c643379f3e" - integrity sha512-g0J0q/O6mW8z5zxQ3A8E8J1hUgp4SMOvEoW/x84OwyHKe/Zccz83PVT4y5Crcr530FV6NgmKI1qvGTKVl9XXVw== - dependencies: - cheerio-select "^1.5.0" - dom-serializer "^1.3.2" - domhandler "^4.2.0" - htmlparser2 "^6.1.0" - parse5 "^6.0.1" - parse5-htmlparser2-tree-adapter "^6.0.1" - tslib "^2.2.0" +esutils@^2.0.2: + version "2.0.3" + resolved "https://registry.yarnpkg.com/esutils/-/esutils-2.0.3.tgz#74d2eb4de0b8da1293711910d50775b9b710ef64" + integrity sha512-kVscqXk4OCp68SZ0dkgEKVi6/8ij300KBWTJq32P/dYeWTSwK41WyTxalN1eRmA5Z9UU/LX9D7FWSmV9SAYx6g== -chokidar@3.3.0: - version "3.3.0" - resolved "https://registry.yarnpkg.com/chokidar/-/chokidar-3.3.0.tgz#12c0714668c55800f659e262d4962a97faf554a6" - 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" +etag@~1.8.1: + version "1.8.1" + resolved "https://registry.yarnpkg.com/etag/-/etag-1.8.1.tgz#41ae2eeb65efa62268aebfea83ac7d79299b0887" + integrity sha1-Qa4u62XvpiJorr/qg6x9eSmbCIc= -chokidar@3.4.2: - version "3.4.2" - resolved "https://registry.yarnpkg.com/chokidar/-/chokidar-3.4.2.tgz#38dc8e658dec3809741eb3ef7bb0a47fe424232d" - integrity sha512-IZHaDeBeI+sZJRX7lGcXsdzgvZqKv6sECqsbErJA4mHWfpRrD8B97kSFN4cQz6nGBGiuFia1MKR4d6c1o8Cv7A== +eth-ens-namehash@2.0.8: + version "2.0.8" + resolved "https://registry.yarnpkg.com/eth-ens-namehash/-/eth-ens-namehash-2.0.8.tgz#229ac46eca86d52e0c991e7cb2aef83ff0f68bcf" + integrity sha1-IprEbsqG1S4MmR58sq74P/D2i88= 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.4.0" - optionalDependencies: - fsevents "~2.1.2" + idna-uts46-hx "^2.3.1" + js-sha3 "^0.5.7" -chokidar@^2.1.8: - version "2.1.8" - resolved "https://registry.yarnpkg.com/chokidar/-/chokidar-2.1.8.tgz#804b3a7b6a99358c3c5c61e71d8728f041cff917" - integrity sha512-ZmZUazfOzf0Nve7duiCKD23PFSCs4JPoYyccjUFF3aQkQadqBhfzhjkwBH2mNOG9cTBwhamM37EIsIkZw3nRgg== +eth-gas-reporter@^0.2.20: + version "0.2.22" + resolved "https://registry.yarnpkg.com/eth-gas-reporter/-/eth-gas-reporter-0.2.22.tgz#bbe91f5d7b22433d26f099eeb5b20118ced0e575" + integrity sha512-L1FlC792aTf3j/j+gGzSNlGrXKSxNPXQNk6TnV5NNZ2w3jnQCRyJjDl0zUo25Cq2t90IS5vGdbkwqFQK7Ce+kw== dependencies: - anymatch "^2.0.0" - async-each "^1.0.1" - braces "^2.3.2" - glob-parent "^3.1.0" - inherits "^2.0.3" - is-binary-path "^1.0.0" - is-glob "^4.0.0" - normalize-path "^3.0.0" - path-is-absolute "^1.0.0" - readdirp "^2.2.1" - upath "^1.1.1" - optionalDependencies: - fsevents "^1.2.7" + "@ethersproject/abi" "^5.0.0-beta.146" + "@solidity-parser/parser" "^0.12.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" -chokidar@^3.4.1: - version "3.5.2" - resolved "https://registry.yarnpkg.com/chokidar/-/chokidar-3.5.2.tgz#dba3976fcadb016f66fd365021d91600d01c1e75" - integrity sha512-ekGhOnNVPgT77r4K/U3GDhu+FQ2S8TnK/s2KbIGXi0SZWuwkZ2QNyfWdZW+TVfn84DpEP7rLeCt2UI6bJ8GwbQ== +eth-lib@0.2.8: + version "0.2.8" + resolved "https://registry.yarnpkg.com/eth-lib/-/eth-lib-0.2.8.tgz#b194058bef4b220ad12ea497431d6cb6aa0623c8" + integrity sha512-ArJ7x1WcWOlSpzdoTBX8vkwlkSQ85CjjifSZtV4co64vWxSV8geWfPI9x4SVYu3DSxnX4yWFVTtGL+j9DUFLNw== dependencies: - anymatch "~3.1.2" - braces "~3.0.2" - glob-parent "~5.1.2" - is-binary-path "~2.1.0" - is-glob "~4.0.1" - normalize-path "~3.0.0" - readdirp "~3.6.0" - optionalDependencies: - fsevents "~2.3.2" - -chownr@^1.1.1: - version "1.1.4" - resolved "https://registry.yarnpkg.com/chownr/-/chownr-1.1.4.tgz#6fc9d7b42d32a583596337666e7d08084da2cc6b" - integrity sha512-jJ0bqzaylmJtVnNgzTeSOs8DPavpbYgEr/b0YL8/2GO3xJEhInFmhKMUnEJQjZumK7KXGFhUy89PrsJWlakBVg== - -ci-info@^2.0.0: - version "2.0.0" - resolved "https://registry.yarnpkg.com/ci-info/-/ci-info-2.0.0.tgz#67a9e964be31a51e15e5010d58e6f12834002f46" - integrity sha512-5tK7EtrZ0N+OLFMthtqOj4fI2Jeb88C4CAZPu25LDVUgXJ0A3Js4PMGqrn0JU1W0Mh1/Z8wZzYPxqUrXeBboCQ== + bn.js "^4.11.6" + elliptic "^6.4.0" + xhr-request-promise "^0.1.2" -cids@^0.7.1: - version "0.7.5" - resolved "https://registry.yarnpkg.com/cids/-/cids-0.7.5.tgz#60a08138a99bfb69b6be4ceb63bfef7a396b28b2" - integrity sha512-zT7mPeghoWAu+ppn8+BS1tQ5qGmbMfB4AregnQjA/qHY3GC1m1ptI9GkWNlgeu38r7CuRdXB47uY2XgAYt6QVA== +eth-lib@^0.1.26: + version "0.1.29" + resolved "https://registry.yarnpkg.com/eth-lib/-/eth-lib-0.1.29.tgz#0c11f5060d42da9f931eab6199084734f4dbd1d9" + integrity sha512-bfttrr3/7gG4E02HoWTDUcDDslN003OlOoBxk9virpAZQ1ja/jDgwkWB8QfJF7ojuEowrqy+lzp9VcJG7/k5bQ== dependencies: - buffer "^5.5.0" - class-is "^1.1.0" - multibase "~0.6.0" - multicodec "^1.0.0" - multihashes "~0.4.15" + 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" -cids@^1.0.0, cids@^1.1.4, cids@^1.1.5: - version "1.1.7" - resolved "https://registry.yarnpkg.com/cids/-/cids-1.1.7.tgz#06aee89b9b5d615a7def86f2308a72bb642b7c7e" - integrity sha512-dlh+K0hMwFAFFjWQ2ZzxOhgGVNVREPdmk8cqHFui2U4sOodcemLMxdE5Ujga4cDcDQhWfldEPThkfu6KWBt1eA== +eth-sig-util@^2.5.2: + version "2.5.4" + resolved "https://registry.yarnpkg.com/eth-sig-util/-/eth-sig-util-2.5.4.tgz#577b01fe491b6bf59b0464be09633e20c1677bc5" + integrity sha512-aCMBwp8q/4wrW4QLsF/HYBOSA7TpLKmkVwP3pYQNkEEseW2Rr8Z5Uxc9/h6HX+OG3tuHo+2bINVSihIeBfym6A== dependencies: - multibase "^4.0.1" - multicodec "^3.0.1" - multihashes "^4.0.1" - uint8arrays "^2.1.3" + ethereumjs-abi "0.6.8" + ethereumjs-util "^5.1.1" + tweetnacl "^1.0.3" + tweetnacl-util "^0.15.0" -cipher-base@^1.0.0, cipher-base@^1.0.1, cipher-base@^1.0.3: - version "1.0.4" - resolved "https://registry.yarnpkg.com/cipher-base/-/cipher-base-1.0.4.tgz#8760e4ecc272f4c363532f926d874aae2c1397de" - integrity sha512-Kkht5ye6ZGmwv40uUDZztayT2ThLQGfnj/T71N/XzeZeo3nf8foyW7zGTsPYkEya3m5f3cAypH+qe7YOrM1U2Q== +ethereum-bloom-filters@^1.0.6: + version "1.0.9" + resolved "https://registry.yarnpkg.com/ethereum-bloom-filters/-/ethereum-bloom-filters-1.0.9.tgz#4a59dead803af0c9e33834170bd7695df67061ec" + integrity sha512-GiK/RQkAkcVaEdxKVkPcG07PQ5vD7v2MFSHgZmBJSfMzNRHimntdBithsHAT89tAXnIpzVDWt8iaCD1DvkaxGg== dependencies: - inherits "^2.0.1" - safe-buffer "^5.0.1" - -circular-json@^0.5.9: - version "0.5.9" - resolved "https://registry.yarnpkg.com/circular-json/-/circular-json-0.5.9.tgz#932763ae88f4f7dead7a0d09c8a51a4743a53b1d" - integrity sha512-4ivwqHpIFJZBuhN3g/pEcdbnGUywkBblloGbkglyloVjjR3uT6tieI89MVOfbP2tHX5sgb01FuLgAOzebNlJNQ== - -circular@^1.0.5: - version "1.0.5" - resolved "https://registry.yarnpkg.com/circular/-/circular-1.0.5.tgz#7da77af98bbde9ce4b5b358cd556b5dded2d3149" - integrity sha1-fad6+Yu96c5LWzWM1Va13e0tMUk= - -class-is@^1.1.0: - version "1.1.0" - resolved "https://registry.yarnpkg.com/class-is/-/class-is-1.1.0.tgz#9d3c0fba0440d211d843cec3dedfa48055005825" - integrity sha512-rhjH9AG1fvabIDoGRVH587413LPjTZgmDF9fOFCbFJQV4yuocX1mHxxvXI4g3cGwbVY9wAYIoKlg1N79frJKQw== + js-sha3 "^0.8.0" -class-utils@^0.3.5: - version "0.3.6" - resolved "https://registry.yarnpkg.com/class-utils/-/class-utils-0.3.6.tgz#f93369ae8b9a7ce02fd41faad0ca83033190c463" - integrity sha512-qOhPa/Fj7s6TY8H8esGu5QNpMMQxz79h+urzrNYN6mn+9BnxlDGf5QZ+XeCDsxSjPqsSR56XOZOJmpeurnLMeg== +ethereum-cryptography@^0.1.2, ethereum-cryptography@^0.1.3: + version "0.1.3" + resolved "https://registry.yarnpkg.com/ethereum-cryptography/-/ethereum-cryptography-0.1.3.tgz#8d6143cfc3d74bf79bbd8edecdf29e4ae20dd191" + integrity sha512-w8/4x1SGGzc+tO97TASLja6SLd3fRIK2tLVcV2Gx4IB21hE19atll5Cq9o3d0ZmAYC/8aw0ipieTSiekAea4SQ== dependencies: - arr-union "^3.1.0" - define-property "^0.2.5" - isobject "^3.0.0" - static-extend "^0.1.1" + "@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" -cli-color@^1.4.0: - version "1.4.0" - resolved "https://registry.yarnpkg.com/cli-color/-/cli-color-1.4.0.tgz#7d10738f48526824f8fe7da51857cb0f572fe01f" - integrity sha512-xu6RvQqqrWEo6MPR1eixqGPywhYBHRs653F9jfXB2Hx4jdM/3WxiNE1vppRmxtMIfl16SFYTpYlrnqH/HsK/2w== +ethereumjs-abi@0.6.8, ethereumjs-abi@^0.6.8: + version "0.6.8" + resolved "https://registry.yarnpkg.com/ethereumjs-abi/-/ethereumjs-abi-0.6.8.tgz#71bc152db099f70e62f108b7cdfca1b362c6fcae" + integrity sha512-Tx0r/iXI6r+lRsdvkFDlut0N08jWMnKRZ6Gkq+Nmw75lZe4e6o3EkSnkaBP5NF6+m5PTGAr9JP43N3LyeoglsA== dependencies: - ansi-regex "^2.1.1" - d "1" - es5-ext "^0.10.46" - es6-iterator "^2.0.3" - memoizee "^0.4.14" - timers-ext "^0.1.5" + bn.js "^4.11.8" + ethereumjs-util "^6.0.0" -cli-cursor@^2.1.0: - version "2.1.0" - resolved "https://registry.yarnpkg.com/cli-cursor/-/cli-cursor-2.1.0.tgz#b35dac376479facc3e94747d41d0d0f5238ffcb5" - integrity sha1-s12sN2R5+sw+lHR9QdDQ9SOP/LU= - dependencies: - restore-cursor "^2.0.0" +ethereumjs-common@^1.3.2, ethereumjs-common@^1.5.0: + version "1.5.2" + resolved "https://registry.yarnpkg.com/ethereumjs-common/-/ethereumjs-common-1.5.2.tgz#2065dbe9214e850f2e955a80e650cb6999066979" + integrity sha512-hTfZjwGX52GS2jcVO6E2sx4YuFnf0Fhp5ylo4pEPhEffNln7vS59Hr5sLnp3/QCazFLluuBZ+FZ6J5HTp0EqCA== -cli-cursor@^3.0.0: - version "3.1.0" - resolved "https://registry.yarnpkg.com/cli-cursor/-/cli-cursor-3.1.0.tgz#264305a7ae490d1d03bf0c9ba7c925d1753af307" - integrity sha512-I/zHAwsKf9FqGoXM4WWRACob9+SNukZTd94DWF57E4toouRulbCxcUh6RKUEOQlYTHJnzkPMySvPNaaSLNfLZw== +ethereumjs-tx@^2.1.1: + version "2.1.2" + resolved "https://registry.yarnpkg.com/ethereumjs-tx/-/ethereumjs-tx-2.1.2.tgz#5dfe7688bf177b45c9a23f86cf9104d47ea35fed" + integrity sha512-zZEK1onCeiORb0wyCXUvg94Ve5It/K6GD1K+26KfFKodiBiS6d9lfCXlUKGBBdQ+bv7Day+JK0tj1K+BeNFRAw== dependencies: - restore-cursor "^3.1.0" + ethereumjs-common "^1.5.0" + ethereumjs-util "^6.0.0" -cli-logger@^0.5.40: - version "0.5.40" - resolved "https://registry.yarnpkg.com/cli-logger/-/cli-logger-0.5.40.tgz#097f0e11b072c7c698a26c47f588a29c20b48b0b" - integrity sha1-CX8OEbByx8aYomxH9YiinCC0iws= +ethereumjs-util@6.2.0: + version "6.2.0" + resolved "https://registry.yarnpkg.com/ethereumjs-util/-/ethereumjs-util-6.2.0.tgz#23ec79b2488a7d041242f01e25f24e5ad0357960" + integrity sha512-vb0XN9J2QGdZGIEKG2vXM+kUdEivUfU6Wmi5y0cg+LRhDYKnXIZ/Lz7XjFbHRR9VIKq2lVGLzGBkA++y2nOdOQ== dependencies: - circular "^1.0.5" - cli-util "~1.1.27" - -cli-regexp@~0.1.0: - version "0.1.2" - resolved "https://registry.yarnpkg.com/cli-regexp/-/cli-regexp-0.1.2.tgz#6bcd93b09fb2ed1025d30a1155d5997954a53512" - integrity sha1-a82TsJ+y7RAl0woRVdWZeVSlNRI= - -cli-spinners@^2.0.0: - version "2.5.0" - resolved "https://registry.yarnpkg.com/cli-spinners/-/cli-spinners-2.5.0.tgz#12763e47251bf951cb75c201dfa58ff1bcb2d047" - integrity sha512-PC+AmIuK04E6aeSs/pUccSujsTzBhu4HzC2dL+CfJB/Jcc2qTRbEwZQDfIUpt2Xl8BodYBEq8w4fc0kU2I9DjQ== + "@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" -cli-table3@^0.5.0: - version "0.5.1" - resolved "https://registry.yarnpkg.com/cli-table3/-/cli-table3-0.5.1.tgz#0252372d94dfc40dbd8df06005f48f31f656f202" - integrity sha512-7Qg2Jrep1S/+Q3EceiZtQcDPWxhAvBw+ERf1162v4sikJrvojMHFqXt8QIVha8UlH9rgU0BeWPytZ9/TzYqlUw== +ethereumjs-util@6.2.1, ethereumjs-util@^6.0.0: + version "6.2.1" + resolved "https://registry.yarnpkg.com/ethereumjs-util/-/ethereumjs-util-6.2.1.tgz#fcb4e4dd5ceacb9d2305426ab1a5cd93e3163b69" + integrity sha512-W2Ktez4L01Vexijrm5EB6w7dg4n/TgpoYU4avuT5T3Vmnw/eCRtiBrJfQYS/DCSvDIOLn2k57GcHdeBcgVxAqw== dependencies: - object-assign "^4.1.0" - string-width "^2.1.1" - optionalDependencies: - colors "^1.1.2" + "@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" -cli-util@~1.1.27: - version "1.1.27" - resolved "https://registry.yarnpkg.com/cli-util/-/cli-util-1.1.27.tgz#42d69e36a040a321fc9cf851c1513cadc5093054" - integrity sha1-QtaeNqBAoyH8nPhRwVE8rcUJMFQ= +ethereumjs-util@^5.1.1: + version "5.2.1" + resolved "https://registry.yarnpkg.com/ethereumjs-util/-/ethereumjs-util-5.2.1.tgz#a833f0e5fca7e5b361384dc76301a721f537bf65" + integrity sha512-v3kT+7zdyCm1HIqWlLNrHGqHGLpGYIhjeHxQjnDXjLT2FyGJDsd3LWMYUo7pAFRrk86CR3nUJfhC81CCoJNNGQ== dependencies: - cli-regexp "~0.1.0" + 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" -cliui@^2.1.0: - version "2.1.0" - resolved "https://registry.yarnpkg.com/cliui/-/cliui-2.1.0.tgz#4b475760ff80264c762c3a1719032e91c7fea0d1" - integrity sha1-S0dXYP+AJkx2LDoXGQMukcf+oNE= +ethereumjs-util@^7.0.10, ethereumjs-util@^7.0.7: + version "7.0.10" + resolved "https://registry.yarnpkg.com/ethereumjs-util/-/ethereumjs-util-7.0.10.tgz#5fb7b69fa1fda0acc59634cf39d6b0291180fc1f" + integrity sha512-c/xThw6A+EAnej5Xk5kOzFzyoSnw0WX0tSlZ6pAsfGVvQj3TItaDg9b1+Fz1RJXA+y2YksKwQnuzgt1eY6LKzw== dependencies: - center-align "^0.1.1" - right-align "^0.1.1" - wordwrap "0.0.2" + "@types/bn.js" "^5.1.0" + bn.js "^5.1.2" + create-hash "^1.1.2" + ethereum-cryptography "^0.1.3" + ethjs-util "0.1.6" + rlp "^2.2.4" -cliui@^3.2.0: - version "3.2.0" - resolved "https://registry.yarnpkg.com/cliui/-/cliui-3.2.0.tgz#120601537a916d29940f934da3b48d585a39213d" - integrity sha1-EgYBU3qRbSmUD5NNo7SNWFo5IT0= +ethereumjs-util@^7.1.0: + version "7.1.0" + resolved "https://registry.yarnpkg.com/ethereumjs-util/-/ethereumjs-util-7.1.0.tgz#e2b43a30bfcdbcb432a4eb42bd5f2393209b3fd5" + integrity sha512-kR+vhu++mUDARrsMMhsjjzPduRVAeundLGXucGRHF3B4oEltOUspfgCVco4kckucj3FMlLaZHUl9n7/kdmr6Tw== dependencies: - string-width "^1.0.1" - strip-ansi "^3.0.1" - wrap-ansi "^2.0.0" + "@types/bn.js" "^5.1.0" + bn.js "^5.1.2" + create-hash "^1.1.2" + ethereum-cryptography "^0.1.3" + ethjs-util "0.1.6" + rlp "^2.2.4" -cliui@^5.0.0: - version "5.0.0" - resolved "https://registry.yarnpkg.com/cliui/-/cliui-5.0.0.tgz#deefcfdb2e800784aa34f46fa08e06851c7bbbc5" - integrity sha512-PYeGSEmmHM6zvoef2w8TPzlrnNpXIjTipYK780YswmIP9vjxmd6Y2a3CB2Ks6/AU8NHjZugXvo8w3oWM2qnwXA== +ethers@^4.0.32, ethers@^4.0.40: + version "4.0.48" + resolved "https://registry.yarnpkg.com/ethers/-/ethers-4.0.48.tgz#330c65b8133e112b0613156e57e92d9009d8fbbe" + integrity sha512-sZD5K8H28dOrcidzx9f8KYh8083n5BexIO3+SbE4jK83L85FxtpXZBCQdXb8gkg+7sBqomcLhhkU7UHL+F7I2g== dependencies: - string-width "^3.1.0" - strip-ansi "^5.2.0" - wrap-ansi "^5.1.0" + aes-js "3.0.0" + bn.js "^4.4.0" + elliptic "6.5.3" + 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" -cliui@^6.0.0: - version "6.0.0" - resolved "https://registry.yarnpkg.com/cliui/-/cliui-6.0.0.tgz#511d702c0c4e41ca156d7d0e96021f23e13225b1" - integrity sha512-t6wbgtoCXvAzst7QgXxJYqPt0usEfbgQdftEPbLL/cvv6HPE5VgvqCuAIDR0NgU52ds6rFwqrgakNLrHEjCbrQ== +ethers@^5.0.0: + version "5.1.4" + resolved "https://registry.yarnpkg.com/ethers/-/ethers-5.1.4.tgz#8ae973705ed962f8f41dc59693704002a38dd18b" + integrity sha512-EAPQ/fgGRu0PoR/VNFnHTMOtG/IZ0AItdW55C9T8ffmVu0rnyllZL404eBF66elJehOLz2kxnUrhXpE7TCpW7g== + dependencies: + "@ethersproject/abi" "5.1.2" + "@ethersproject/abstract-provider" "5.1.0" + "@ethersproject/abstract-signer" "5.1.0" + "@ethersproject/address" "5.1.0" + "@ethersproject/base64" "5.1.0" + "@ethersproject/basex" "5.1.0" + "@ethersproject/bignumber" "5.1.1" + "@ethersproject/bytes" "5.1.0" + "@ethersproject/constants" "5.1.0" + "@ethersproject/contracts" "5.1.1" + "@ethersproject/hash" "5.1.0" + "@ethersproject/hdnode" "5.1.0" + "@ethersproject/json-wallets" "5.1.0" + "@ethersproject/keccak256" "5.1.0" + "@ethersproject/logger" "5.1.0" + "@ethersproject/networks" "5.1.0" + "@ethersproject/pbkdf2" "5.1.0" + "@ethersproject/properties" "5.1.0" + "@ethersproject/providers" "5.1.2" + "@ethersproject/random" "5.1.0" + "@ethersproject/rlp" "5.1.0" + "@ethersproject/sha2" "5.1.0" + "@ethersproject/signing-key" "5.1.0" + "@ethersproject/solidity" "5.1.0" + "@ethersproject/strings" "5.1.0" + "@ethersproject/transactions" "5.1.1" + "@ethersproject/units" "5.1.0" + "@ethersproject/wallet" "5.1.0" + "@ethersproject/web" "5.1.0" + "@ethersproject/wordlists" "5.1.0" + +ethers@^5.4.5: + version "5.4.5" + resolved "https://registry.yarnpkg.com/ethers/-/ethers-5.4.5.tgz#cec133b9f5b514dc55e2561ee7aa7218c33affd7" + integrity sha512-PPZ6flOAj230sXEWf/r/It6ZZ5c7EOVWx+PU87Glkbg79OtT7pLE1WgL4MRdwx6iF7HzSOvUUI+8cAmcdzo12w== dependencies: - string-width "^4.2.0" - strip-ansi "^6.0.0" - wrap-ansi "^6.2.0" - -clone-buffer@1.0.0: - version "1.0.0" - resolved "https://registry.yarnpkg.com/clone-buffer/-/clone-buffer-1.0.0.tgz#e3e25b207ac4e701af721e2cb5a16792cac3dc58" - integrity sha1-4+JbIHrE5wGvch4staFnksrD3Fg= - -clone-response@^1.0.2: - version "1.0.2" - resolved "https://registry.yarnpkg.com/clone-response/-/clone-response-1.0.2.tgz#d1dc973920314df67fbeb94223b4ee350239e96b" - integrity sha1-0dyXOSAxTfZ/vrlCI7TuNQI56Ws= - dependencies: - mimic-response "^1.0.0" + "@ethersproject/abi" "5.4.0" + "@ethersproject/abstract-provider" "5.4.1" + "@ethersproject/abstract-signer" "5.4.1" + "@ethersproject/address" "5.4.0" + "@ethersproject/base64" "5.4.0" + "@ethersproject/basex" "5.4.0" + "@ethersproject/bignumber" "5.4.1" + "@ethersproject/bytes" "5.4.0" + "@ethersproject/constants" "5.4.0" + "@ethersproject/contracts" "5.4.1" + "@ethersproject/hash" "5.4.0" + "@ethersproject/hdnode" "5.4.0" + "@ethersproject/json-wallets" "5.4.0" + "@ethersproject/keccak256" "5.4.0" + "@ethersproject/logger" "5.4.0" + "@ethersproject/networks" "5.4.2" + "@ethersproject/pbkdf2" "5.4.0" + "@ethersproject/properties" "5.4.0" + "@ethersproject/providers" "5.4.4" + "@ethersproject/random" "5.4.0" + "@ethersproject/rlp" "5.4.0" + "@ethersproject/sha2" "5.4.0" + "@ethersproject/signing-key" "5.4.0" + "@ethersproject/solidity" "5.4.0" + "@ethersproject/strings" "5.4.0" + "@ethersproject/transactions" "5.4.0" + "@ethersproject/units" "5.4.0" + "@ethersproject/wallet" "5.4.0" + "@ethersproject/web" "5.4.0" + "@ethersproject/wordlists" "5.4.0" -clone-stats@^0.0.1: - version "0.0.1" - resolved "https://registry.yarnpkg.com/clone-stats/-/clone-stats-0.0.1.tgz#b88f94a82cf38b8791d58046ea4029ad88ca99d1" - integrity sha1-uI+UqCzzi4eR1YBG6kAprYjKmdE= +ethjs-unit@0.1.6: + version "0.1.6" + resolved "https://registry.yarnpkg.com/ethjs-unit/-/ethjs-unit-0.1.6.tgz#c665921e476e87bce2a9d588a6fe0405b2c41699" + integrity sha1-xmWSHkduh7ziqdWIpv4EBbLEFpk= + dependencies: + bn.js "4.11.6" + number-to-bn "1.7.0" -clone@2.1.1: - version "2.1.1" - resolved "https://registry.yarnpkg.com/clone/-/clone-2.1.1.tgz#d217d1e961118e3ac9a4b8bba3285553bf647cdb" - integrity sha1-0hfR6WERjjrJpLi7oyhVU79kfNs= +ethjs-util@0.1.6, ethjs-util@^0.1.3: + version "0.1.6" + resolved "https://registry.yarnpkg.com/ethjs-util/-/ethjs-util-0.1.6.tgz#f308b62f185f9fe6237132fb2a9818866a5cd536" + integrity sha512-CUnVOQq7gSpDHZVVrQW8ExxUETWrnrvXYvYz55wOU8Uj4VCgw56XC2B/fVqQN+f7gmrnRHSLVnFAwsCuNwji8w== + dependencies: + is-hex-prefixed "1.0.0" + strip-hex-prefix "1.0.0" -clone@^1.0.0, clone@^1.0.2: - version "1.0.4" - resolved "https://registry.yarnpkg.com/clone/-/clone-1.0.4.tgz#da309cc263df15994c688ca902179ca3c7cd7c7e" - integrity sha1-2jCcwmPfFZlMaIypAheco8fNfH4= +event-target-shim@^5.0.0: + version "5.0.1" + resolved "https://registry.yarnpkg.com/event-target-shim/-/event-target-shim-5.0.1.tgz#5d4d3ebdf9583d63a5333ce2deb7480ab2b05789" + integrity sha512-i/2XbnSz/uxRCU6+NdVJgKWDTM427+MqYbkQzD321DuCQJUqOuJKIA0IM2+W2xtYHdKOmZ4dR6fExsd4SXL+WQ== -code-error-fragment@0.0.230: - version "0.0.230" - resolved "https://registry.yarnpkg.com/code-error-fragment/-/code-error-fragment-0.0.230.tgz#d736d75c832445342eca1d1fedbf17d9618b14d7" - integrity sha512-cadkfKp6932H8UkhzE/gcUqhRMNf8jHzkAN7+5Myabswaghu4xABTgPHDCjW+dBAJxj/SpkTYokpzDqY4pCzQw== +eventemitter3@4.0.4: + version "4.0.4" + resolved "https://registry.yarnpkg.com/eventemitter3/-/eventemitter3-4.0.4.tgz#b5463ace635a083d018bdc7c917b4c5f10a85384" + integrity sha512-rlaVLnVxtxvoyLsQQFBx53YmXHDxRIzzTLbdfxqi4yocpSjAxXwkU0cScM5JgSKMqEhrZpnvQ2D9gjylR0AimQ== -code-point-at@^1.0.0: - version "1.1.0" - resolved "https://registry.yarnpkg.com/code-point-at/-/code-point-at-1.1.0.tgz#0d070b4d043a5bea33a2f1a40e2edb3d9a4ccf77" - integrity sha1-DQcLTQQ6W+ozovGkDi7bPZpMz3c= +evp_bytestokey@^1.0.0, evp_bytestokey@^1.0.3: + version "1.0.3" + resolved "https://registry.yarnpkg.com/evp_bytestokey/-/evp_bytestokey-1.0.3.tgz#7fcbdb198dc71959432efe13842684e0525acb02" + integrity sha512-/f2Go4TognH/KvCISP7OUsHn85hT9nUkxxA9BEWxFn+Oj9o8ZNLm/40hdlgSLyuOimsrTKLUMEorQexp/aPQeA== + dependencies: + md5.js "^1.3.4" + safe-buffer "^5.1.1" -collection-visit@^1.0.0: +execa@^1.0.0: version "1.0.0" - resolved "https://registry.yarnpkg.com/collection-visit/-/collection-visit-1.0.0.tgz#4bc0373c164bc3291b4d368c829cf1a80a59dca0" - integrity sha1-S8A3PBZLwykbTTaMgpzxqApZ3KA= + resolved "https://registry.yarnpkg.com/execa/-/execa-1.0.0.tgz#c6236a5bb4df6d6f15e88e7f017798216749ddd8" + integrity sha512-adbxcyWV46qiHyvSp50TKt05tB4tK3HcmF7/nxfAdhnox83seTDbwnaqKO4sXRy7roHAIFqJP/Rw/AuEbX61LA== dependencies: - map-visit "^1.0.0" - object-visit "^1.0.0" + cross-spawn "^6.0.0" + get-stream "^4.0.0" + is-stream "^1.1.0" + npm-run-path "^2.0.0" + p-finally "^1.0.0" + signal-exit "^3.0.0" + strip-eof "^1.0.0" -color-convert@^1.9.0: - version "1.9.3" - resolved "https://registry.yarnpkg.com/color-convert/-/color-convert-1.9.3.tgz#bb71850690e1f136567de629d2d5471deda4c1e8" - integrity sha512-QfAUtd+vFdAtFQcC8CCyYt1fYWxSqAiK2cSD6zDB8N3cpsEBAvRxp9zOGg6G/SHHJYAT88/az/IuDGALsNVbGg== - dependencies: - color-name "1.1.3" +exit-on-epipe@~1.0.1: + version "1.0.1" + resolved "https://registry.yarnpkg.com/exit-on-epipe/-/exit-on-epipe-1.0.1.tgz#0bdd92e87d5285d267daa8171d0eb06159689692" + integrity sha512-h2z5mrROTxce56S+pnvAV890uu7ls7f1kEvVGJbw1OlFH3/mlJ5bkXu0KRyW94v37zzHPiUd55iLn3DA7TjWpw== -color-convert@^2.0.1: - version "2.0.1" - resolved "https://registry.yarnpkg.com/color-convert/-/color-convert-2.0.1.tgz#72d3a68d598c9bdb3af2ad1e84f21d896abd4de3" - integrity sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ== +express@^4.14.0: + version "4.17.1" + resolved "https://registry.yarnpkg.com/express/-/express-4.17.1.tgz#4491fc38605cf51f8629d39c2b5d026f98a4c134" + integrity sha512-mHJ9O79RqluphRrcw2X/GTh3k9tVv8YcoyY4Kkh4WDMUYKRZUq0h1o0w2rrrxBqM7VoeUVqgb27xlEMXTnYt4g== dependencies: - color-name "~1.1.4" - -color-logger@0.0.3: - version "0.0.3" - resolved "https://registry.yarnpkg.com/color-logger/-/color-logger-0.0.3.tgz#d9b22dd1d973e166b18bf313f9f481bba4df2018" - integrity sha1-2bIt0dlz4Waxi/MT+fSBu6TfIBg= - -color-logger@0.0.6: - version "0.0.6" - resolved "https://registry.yarnpkg.com/color-logger/-/color-logger-0.0.6.tgz#e56245ef29822657110c7cb75a9cd786cb69ed1b" - integrity sha1-5WJF7ymCJlcRDHy3WpzXhstp7Rs= - -color-name@1.1.3: - version "1.1.3" - resolved "https://registry.yarnpkg.com/color-name/-/color-name-1.1.3.tgz#a7d0558bd89c42f795dd42328f740831ca53bc25" - integrity sha1-p9BVi9icQveV3UIyj3QIMcpTvCU= - -color-name@~1.1.4: - version "1.1.4" - resolved "https://registry.yarnpkg.com/color-name/-/color-name-1.1.4.tgz#c2a09a87acbde69543de6f63fa3995c826c536a2" - integrity sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA== - -colorette@^1.2.1: - version "1.2.2" - resolved "https://registry.yarnpkg.com/colorette/-/colorette-1.2.2.tgz#cbcc79d5e99caea2dbf10eb3a26fd8b3e6acfa94" - integrity sha512-MKGMzyfeuutC/ZJ1cba9NqcNpfeqMUcYmyF1ZFY6/Cn7CNSAKx6a+s48sqLqyAiZuaP2TcqMhoo+dlwFnVxT9w== + accepts "~1.3.7" + array-flatten "1.1.1" + body-parser "1.19.0" + content-disposition "0.5.3" + content-type "~1.0.4" + cookie "0.4.0" + cookie-signature "1.0.6" + debug "2.6.9" + depd "~1.1.2" + encodeurl "~1.0.2" + escape-html "~1.0.3" + etag "~1.8.1" + finalhandler "~1.1.2" + fresh "0.5.2" + merge-descriptors "1.0.1" + methods "~1.1.2" + on-finished "~2.3.0" + parseurl "~1.3.3" + path-to-regexp "0.1.7" + proxy-addr "~2.0.5" + qs "6.7.0" + range-parser "~1.2.1" + safe-buffer "5.1.2" + send "0.17.1" + serve-static "1.14.1" + setprototypeof "1.1.1" + statuses "~1.5.0" + type-is "~1.6.18" + utils-merge "1.0.1" + vary "~1.1.2" -colors@^1.1.2, colors@^1.4.0: +ext@^1.1.2: version "1.4.0" - resolved "https://registry.yarnpkg.com/colors/-/colors-1.4.0.tgz#c50491479d4c1bdaed2c9ced32cf7c7dc2360f78" - integrity sha512-a+UqTh4kgZg/SlGvfbzDHpgRu7AAQOmmqRHJnxhRZICKFUT91brVhNNt58CMWU9PsBbv3PDCZUHbVxuDiH2mtA== - -combined-stream@^1.0.6, combined-stream@^1.0.8, combined-stream@~1.0.6: - version "1.0.8" - resolved "https://registry.yarnpkg.com/combined-stream/-/combined-stream-1.0.8.tgz#c3d45a8b34fd730631a110a8a2520682b31d5a7f" - integrity sha512-FQN4MRfuJeHf7cBbBMJFXhKSDq+2kAArBlmRBvcvFE5BB1HZKXtSFASDhdlz9zOYwxh8lDdnvmMOe/+5cdoEdg== - dependencies: - delayed-stream "~1.0.0" - -command-exists@^1.2.8: - version "1.2.8" - resolved "https://registry.yarnpkg.com/command-exists/-/command-exists-1.2.8.tgz#715acefdd1223b9c9b37110a149c6392c2852291" - integrity sha512-PM54PkseWbiiD/mMsbvW351/u+dafwTJ0ye2qB60G1aGQP9j3xK2gmMDc+R34L3nDtx4qMCitXT75mkbkGJDLw== - -command-line-args@^4.0.7: - version "4.0.7" - resolved "https://registry.yarnpkg.com/command-line-args/-/command-line-args-4.0.7.tgz#f8d1916ecb90e9e121eda6428e41300bfb64cc46" - integrity sha512-aUdPvQRAyBvQd2n7jXcsMDz68ckBJELXNzBybCHOibUWEg0mWTnaYCSRU8h9R+aNRSvDihJtssSRCiDRpLaezA== + resolved "https://registry.yarnpkg.com/ext/-/ext-1.4.0.tgz#89ae7a07158f79d35517882904324077e4379244" + integrity sha512-Key5NIsUxdqKg3vIsdw9dSuXpPCQ297y6wBjL30edxwPgt2E44WcWBZey/ZvUc6sERLTxKdyCu4gZFmUbk1Q7A== dependencies: - array-back "^2.0.0" - find-replace "^1.0.3" - typical "^2.6.1" + type "^2.0.0" -commander@3.0.2, commander@^3.0.0: +extend@~3.0.2: version "3.0.2" - resolved "https://registry.yarnpkg.com/commander/-/commander-3.0.2.tgz#6837c3fb677ad9933d1cfba42dd14d5117d6b39e" - integrity sha512-Gar0ASD4BDyKC4hl4DwHqDrmvjoxWKZigVnAbn5H1owvm4CxCPdb0HQDehwNYMJpla5+M2tPmPARzhtYuwpHow== - -commander@^2.12.1, commander@^2.15.0, commander@^2.19.0, commander@^2.20.3, commander@~2.20.3: - version "2.20.3" - resolved "https://registry.yarnpkg.com/commander/-/commander-2.20.3.tgz#fd485e84c03eb4881c20722ba48035e8531aeb33" - integrity sha512-GpVkmM8vF2vQUkj2LvZmD35JxeJOLCwJ9cUkugyk2nuhbv3+mJvpLYYt+0+USMxE+oj+ey/lJEnhZw75x/OMcQ== + resolved "https://registry.yarnpkg.com/extend/-/extend-3.0.2.tgz#f8b1136b4071fbd8eb140aff858b1019ec2915fa" + integrity sha512-fjquC59cD7CyW6urNXK0FBufkZcoiGG80wTuPujX590cB5Ttln20E2UB4S/WARVqhXffZl2LNgS+gQdPIIim/g== -commander@~2.8.1: - version "2.8.1" - resolved "https://registry.yarnpkg.com/commander/-/commander-2.8.1.tgz#06be367febfda0c330aa1e2a072d3dc9762425d4" - integrity sha1-Br42f+v9oMMwqh4qBy09yXYkJdQ= +external-editor@^3.0.3: + version "3.1.0" + resolved "https://registry.yarnpkg.com/external-editor/-/external-editor-3.1.0.tgz#cb03f740befae03ea4d283caed2741a83f335495" + integrity sha512-hMQ4CX1p1izmuLYyZqLMO/qGNw10wSv9QDCPfzXfyFrOaCSSoRfqE1Kf1s5an66J5JZC62NewG+mK49jOCtQew== dependencies: - graceful-readlink ">= 1.0.0" - -component-emitter@1.2.1: - version "1.2.1" - resolved "https://registry.yarnpkg.com/component-emitter/-/component-emitter-1.2.1.tgz#137918d6d78283f7df7a6b7c5a63e140e69425e6" - integrity sha1-E3kY1teCg/ffemt8WmPhQOaUJeY= + chardet "^0.7.0" + iconv-lite "^0.4.24" + tmp "^0.0.33" -component-emitter@^1.2.1: +extsprintf@1.3.0: version "1.3.0" - resolved "https://registry.yarnpkg.com/component-emitter/-/component-emitter-1.3.0.tgz#16e4070fba8ae29b679f2215853ee181ab2eabc0" - integrity sha512-Rd3se6QB+sO1TwqZjscQrurpEPIfO0/yYnSin6Q/rD3mOutHvUrCAhJub3r90uNb+SESBuE0QYoB90YdfatsRg== - -compound-subject@0.0.1: - version "0.0.1" - resolved "https://registry.yarnpkg.com/compound-subject/-/compound-subject-0.0.1.tgz#271554698a15ae608b1dfcafd30b7ba1ea892c4b" - integrity sha1-JxVUaYoVrmCLHfyv0wt7oeqJLEs= - -concat-map@0.0.1: - version "0.0.1" - resolved "https://registry.yarnpkg.com/concat-map/-/concat-map-0.0.1.tgz#d8a96bd77fd68df7793a73036a3ba0d5405d477b" - integrity sha1-2Klr13/Wjfd5OnMDajug1UBdR3s= - -concat-stream@1.5.1: - version "1.5.1" - resolved "https://registry.yarnpkg.com/concat-stream/-/concat-stream-1.5.1.tgz#f3b80acf9e1f48e3875c0688b41b6c31602eea1c" - integrity sha1-87gKz54fSOOHXAaItBtsMWAu6hw= - dependencies: - inherits "~2.0.1" - readable-stream "~2.0.0" - typedarray "~0.0.5" + resolved "https://registry.yarnpkg.com/extsprintf/-/extsprintf-1.3.0.tgz#96918440e3041a7a414f8c52e3c574eb3c3e1e05" + integrity sha1-lpGEQOMEGnpBT4xS48V06zw+HgU= -concat-stream@^1.6.0, concat-stream@^1.6.2: - version "1.6.2" - resolved "https://registry.yarnpkg.com/concat-stream/-/concat-stream-1.6.2.tgz#904bdf194cd3122fc675c77fc4ac3d4ff0fd1a34" - integrity sha512-27HBghJxjiZtIk3Ycvn/4kbJk/1uZuJFfuPEns6LaEvpvG1f0hTea8lilrouyo9mVc2GWdcEZ8OLoGmSADlrCw== - dependencies: - buffer-from "^1.0.0" - inherits "^2.0.3" - readable-stream "^2.2.2" - typedarray "^0.0.6" +extsprintf@^1.2.0: + version "1.4.0" + resolved "https://registry.yarnpkg.com/extsprintf/-/extsprintf-1.4.0.tgz#e2689f8f356fad62cca65a3a91c5df5f9551692f" + integrity sha1-4mifjzVvrWLMplo6kcXfX5VRaS8= -configstore@^4.0.0: - version "4.0.0" - resolved "https://registry.yarnpkg.com/configstore/-/configstore-4.0.0.tgz#5933311e95d3687efb592c528b922d9262d227e7" - integrity sha512-CmquAXFBocrzaSM8mtGPMM/HiWmyIpr4CcJl/rgY2uCObZ/S7cKU0silxslqJejl+t/T9HS8E0PUNQD81JGUEQ== - dependencies: - dot-prop "^4.1.0" - graceful-fs "^4.1.2" - make-dir "^1.0.0" - unique-string "^1.0.0" - write-file-atomic "^2.0.0" - xdg-basedir "^3.0.0" +fast-deep-equal@^3.1.1, fast-deep-equal@^3.1.3: + version "3.1.3" + resolved "https://registry.yarnpkg.com/fast-deep-equal/-/fast-deep-equal-3.1.3.tgz#3a7d56b559d6cbc3eb512325244e619a65c6c525" + integrity sha512-f3qQ9oQy9j2AhBe/H9VC91wLmKBCCU/gDOnKNAYG5hswO7BLKj09Hc5HYNz9cGI++xlpDCIgDaitVs03ATR84Q== -console-browserify@^1.1.0: +fast-diff@^1.1.2: version "1.2.0" - resolved "https://registry.yarnpkg.com/console-browserify/-/console-browserify-1.2.0.tgz#67063cef57ceb6cf4993a2ab3a55840ae8c49336" - integrity sha512-ZMkYO/LkF17QvCPqM0gxw8yUzigAOZOSWSHg91FH6orS7vcEj5dVZTidN2fQ14yBSdg97RqhSNwLUXInd52OTA== - -console-control-strings@^1.0.0, console-control-strings@~1.1.0: - version "1.1.0" - resolved "https://registry.yarnpkg.com/console-control-strings/-/console-control-strings-1.1.0.tgz#3d7cf4464db6446ea644bf4b39507f9851008e8e" - integrity sha1-PXz0Rk22RG6mRL9LOVB/mFEAjo4= - -constant-case@^2.0.0: - version "2.0.0" - resolved "https://registry.yarnpkg.com/constant-case/-/constant-case-2.0.0.tgz#4175764d389d3fa9c8ecd29186ed6005243b6a46" - 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.yarnpkg.com/constants-browserify/-/constants-browserify-1.0.0.tgz#c20b96d8c617748aaf1c16021760cd27fcb8cb75" - integrity sha1-wguW2MYXdIqvHBYCF2DNJ/y4y3U= - -content-disposition@0.5.3: - version "0.5.3" - resolved "https://registry.yarnpkg.com/content-disposition/-/content-disposition-0.5.3.tgz#e130caf7e7279087c5616c2007d0485698984fbd" - integrity sha512-ExO0774ikEObIAEV9kDo50o+79VCUdEB6n6lzKgGwupcVeRlhrj3qGAfwq8G6uBJjkqLrhT0qEYFcWng8z1z0g== - dependencies: - safe-buffer "5.1.2" - -content-hash@^2.5.2: - version "2.5.2" - resolved "https://registry.yarnpkg.com/content-hash/-/content-hash-2.5.2.tgz#bbc2655e7c21f14fd3bfc7b7d4bfe6e454c9e211" - integrity sha512-FvIQKy0S1JaWV10sMsA7TRx8bpU+pqPkhbsfvOJAdjRXvYxEckAwQWGwtRjiaJfh+E0DvcWUGqcdjwMGFjsSdw== - dependencies: - cids "^0.7.1" - multicodec "^0.5.5" - multihashes "^0.4.15" - -content-type@~1.0.4: - version "1.0.4" - resolved "https://registry.yarnpkg.com/content-type/-/content-type-1.0.4.tgz#e138cc75e040c727b1966fe5e5f8c9aee256fe3b" - integrity sha512-hIP3EEPs8tB9AT1L+NUqtwOAps4mk2Zob89MWXMHjHWg9milF/j4osnnQLXBCBFBk/tvIG/tUc9mOUJiPBhPXA== + resolved "https://registry.yarnpkg.com/fast-diff/-/fast-diff-1.2.0.tgz#73ee11982d86caaf7959828d519cfe927fac5f03" + integrity sha512-xJuoT5+L99XlZ8twedaRf6Ax2TgQVxvgZOYoPKqZufmJib0tL2tegPBOZb1pVNgIhlqDlA0eO0c3wBvQcmzx4w== -convert-source-map@1.X, convert-source-map@^1.7.0: - version "1.7.0" - resolved "https://registry.yarnpkg.com/convert-source-map/-/convert-source-map-1.7.0.tgz#17a2cb882d7f77d3490585e2ce6c524424a3a442" - integrity sha512-4FJkXzKXEDB1snCFZlLP4gpC3JILicCpGbzG9f9G7tGqGCzETQ2hWPrcinA9oU4wtf2biUaEH5065UnMeR33oA== +fast-glob@^3.0.3, fast-glob@^3.1.1: + version "3.2.5" + resolved "https://registry.yarnpkg.com/fast-glob/-/fast-glob-3.2.5.tgz#7939af2a656de79a4f1901903ee8adcaa7cb9661" + integrity sha512-2DtFcgT68wiTTiwZ2hNdJfcHNke9XOfnwmBRWXhmeKM8rF0TGwmC/Qto3S7RoZKp5cilZbxzO5iTNTQsJ+EeDg== dependencies: - safe-buffer "~5.1.1" - -cookie-signature@1.0.6: - version "1.0.6" - resolved "https://registry.yarnpkg.com/cookie-signature/-/cookie-signature-1.0.6.tgz#e303a882b342cc3ee8ca513a79999734dab3ae2c" - integrity sha1-4wOogrNCzD7oylE6eZmXNNqzriw= - -cookie@0.4.0: - version "0.4.0" - resolved "https://registry.yarnpkg.com/cookie/-/cookie-0.4.0.tgz#beb437e7022b3b6d49019d088665303ebe9c14ba" - integrity sha512-+Hp8fLp57wnUSt0tY0tHEXh4voZRDnoIrZPqlo3DPiI4y9lwg/jqx+1Om94/W6ZaPDOUbnjOt/99w66zk+l1Xg== - -cookiejar@^2.1.1: - version "2.1.2" - resolved "https://registry.yarnpkg.com/cookiejar/-/cookiejar-2.1.2.tgz#dd8a235530752f988f9a0844f3fc589e3111125c" - integrity sha512-Mw+adcfzPxcPeI+0WlvRrr/3lGVO0bD75SxX6811cxSh1Wbxx7xZBGK1eVtDf6si8rg2lhnUjsVLMFMfbRIuwA== + "@nodelib/fs.stat" "^2.0.2" + "@nodelib/fs.walk" "^1.2.3" + glob-parent "^5.1.0" + merge2 "^1.3.0" + micromatch "^4.0.2" + picomatch "^2.2.1" -copy-descriptor@^0.1.0: - version "0.1.1" - resolved "https://registry.yarnpkg.com/copy-descriptor/-/copy-descriptor-0.1.1.tgz#676f6eb3c39997c2ee1ac3a924fd6124748f578d" - integrity sha1-Z29us8OZl8LuGsOpJP1hJHSPV40= - -core-js@^2.4.0: - version "2.6.12" - resolved "https://registry.yarnpkg.com/core-js/-/core-js-2.6.12.tgz#d9333dfa7b065e347cc5682219d6f690859cc2ec" - integrity sha512-Kb2wC0fvsWfQrgk8HU5lW6U/Lcs8+9aaYcy4ZFc6DDlo4nZ7n70dEgE5rtR0oG6ufKDUnrwfWL1mXR5ljDatrQ== - -core-js@^3.0.1: - version "3.9.1" - resolved "https://registry.yarnpkg.com/core-js/-/core-js-3.9.1.tgz#cec8de593db8eb2a85ffb0dbdeb312cb6e5460ae" - integrity sha512-gSjRvzkxQc1zjM/5paAmL4idJBFzuJoo+jDjF1tStYFMV2ERfD02HhahhCGXUyHxQRG4yFKVSdO6g62eoRMcDg== - -core-js@^3.2.1: - version "3.16.2" - resolved "https://registry.yarnpkg.com/core-js/-/core-js-3.16.2.tgz#3f485822889c7fc48ef463e35be5cc2a4a01a1f4" - integrity sha512-P0KPukO6OjMpjBtHSceAZEWlDD1M2Cpzpg6dBbrjFqFhBHe/BwhxaP820xKOjRn/lZRQirrCusIpLS/n2sgXLQ== - -core-util-is@1.0.2, core-util-is@~1.0.0: - version "1.0.2" - resolved "https://registry.yarnpkg.com/core-util-is/-/core-util-is-1.0.2.tgz#b5fd54220aa2bc5ab57aab7140c940754503c1a7" - integrity sha1-tf1UIgqivFq1eqtxQMlAdUUDwac= - -cors@^2.8.1, cors@^2.8.4: - version "2.8.5" - resolved "https://registry.yarnpkg.com/cors/-/cors-2.8.5.tgz#eac11da51592dd86b9f06f6e7ac293b3df875d29" - integrity sha512-KIHbLJqu73RGr/hnbrO9uBeixNGuvSQjul/jdFvS/KFSIH1hWVd1ng7zOHx+YrEfInLG7q4n6GHQ9cDtxv/P6g== - dependencies: - object-assign "^4" - vary "^1" - -coveralls@^3.1.1: - version "3.1.1" - resolved "https://registry.yarnpkg.com/coveralls/-/coveralls-3.1.1.tgz#f5d4431d8b5ae69c5079c8f8ca00d64ac77cf081" - integrity sha512-+dxnG2NHncSD1NrqbSM3dn/lE57O6Qf/koe9+I7c+wzkqRmEvcp0kgJdxKInzYzkICKkFMZsX3Vct3++tsF9ww== - dependencies: - js-yaml "^3.13.1" - lcov-parse "^1.0.0" - log-driver "^1.2.7" - minimist "^1.2.5" - request "^2.88.2" - -crc-32@^1.2.0: - version "1.2.0" - resolved "https://registry.yarnpkg.com/crc-32/-/crc-32-1.2.0.tgz#cb2db6e29b88508e32d9dd0ec1693e7b41a18208" - 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.3" - resolved "https://registry.yarnpkg.com/create-ecdh/-/create-ecdh-4.0.3.tgz#c9111b6f33045c4697f144787f9254cdc77c45ff" - integrity sha512-GbEHQPMOswGpKXM9kCWVrremUcBmjteUaQ01T9rkKCPDXfUHX0IoP9LpHYo2NPFampa4e+/pFDc3jQdxrxQLaw== - dependencies: - bn.js "^4.1.0" - elliptic "^6.0.0" - -create-hash@^1.1.0, create-hash@^1.1.2, create-hash@^1.2.0: - version "1.2.0" - resolved "https://registry.yarnpkg.com/create-hash/-/create-hash-1.2.0.tgz#889078af11a63756bcfb59bd221996be3a9ef196" - integrity sha512-z00bCGNHDG8mHAkP7CtT1qVu+bFQUPjYq/4Iv3C3kWjTFV10zIjfSoeqXo9Asws8gwSHDGj/hl2u4OGIjapeCg== - dependencies: - cipher-base "^1.0.1" - inherits "^2.0.1" - md5.js "^1.3.4" - ripemd160 "^2.0.1" - sha.js "^2.4.0" - -create-hmac@^1.1.0, create-hmac@^1.1.2, create-hmac@^1.1.4, create-hmac@^1.1.7: - version "1.1.7" - resolved "https://registry.yarnpkg.com/create-hmac/-/create-hmac-1.1.7.tgz#69170c78b3ab957147b2b8b04572e47ead2243ff" - integrity sha512-MJG9liiZ+ogc4TzUwuvbER1JRdgvUFSB5+VR/g5h82fGaIRWMWddtKBHi7/sVhfjQZ6SehlyhvQYrcYkaUIpLg== - dependencies: - cipher-base "^1.0.3" - create-hash "^1.1.0" - inherits "^2.0.1" - ripemd160 "^2.0.0" - safe-buffer "^5.0.1" - sha.js "^2.4.8" - -create-require@^1.1.0: - version "1.1.1" - resolved "https://registry.yarnpkg.com/create-require/-/create-require-1.1.1.tgz#c1d7e8f1e5f6cfc9ff65f9cd352d37348756c333" - integrity sha512-dcKFX3jn0MpIaXjisoRvexIJVEKzaq7z2rZKxf+MSr9TkdmHmsU4m2lcLojrj/FHl8mk5VxMmYA+ftRkP/3oKQ== - -cross-fetch@3.0.6: - version "3.0.6" - resolved "https://registry.yarnpkg.com/cross-fetch/-/cross-fetch-3.0.6.tgz#3a4040bc8941e653e0e9cf17f29ebcd177d3365c" - integrity sha512-KBPUbqgFjzWlVcURG+Svp9TlhA5uliYtiNx/0r8nv0pdypeQCRJ9IaSIc3q/x3q8t3F75cHuwxVql1HFGHCNJQ== - dependencies: - node-fetch "2.6.1" - -cross-fetch@^3.0.4: - version "3.1.0" - resolved "https://registry.yarnpkg.com/cross-fetch/-/cross-fetch-3.1.0.tgz#6447c13cc8887fa2a66caef92888d7fdaab6e0d1" - integrity sha512-a+yso9lSpXQI9DH+YjAu/m0dVfP8IVoZDPBLLFcvGpeq3KHNdikkekTOdkHiXEuTq4GBOeO0MfWkE40yzF1w7g== - dependencies: - node-fetch "2.6.1" - -cross-spawn@^5.0.1: - version "5.1.0" - resolved "https://registry.yarnpkg.com/cross-spawn/-/cross-spawn-5.1.0.tgz#e8bd0efee58fcff6f8f94510a0a554bbfa235449" - integrity sha1-6L0O/uWPz/b4+UUQoKVUu/ojVEk= - dependencies: - lru-cache "^4.0.1" - shebang-command "^1.2.0" - which "^1.2.9" - -cross-spawn@^6.0.0, cross-spawn@^6.0.5: - version "6.0.5" - resolved "https://registry.yarnpkg.com/cross-spawn/-/cross-spawn-6.0.5.tgz#4a5ec7c64dfae22c3a14124dbacdee846d80cbc4" - 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" - -"crypt@>= 0.0.1": - version "0.0.2" - resolved "https://registry.yarnpkg.com/crypt/-/crypt-0.0.2.tgz#88d7ff7ec0dfb86f713dc87bbb42d044d3e6c41b" - integrity sha1-iNf/fsDfuG9xPch7u0LQRNPmxBs= - -crypto-addr-codec@^0.1.7: - version "0.1.7" - resolved "https://registry.yarnpkg.com/crypto-addr-codec/-/crypto-addr-codec-0.1.7.tgz#e16cea892730178fe25a38f6d15b680cab3124ae" - integrity sha512-X4hzfBzNhy4mAc3UpiXEC/L0jo5E8wAa9unsnA8nNXYzXjCcGk83hfC5avJWCSGT8V91xMnAS9AKMHmjw5+XCg== - dependencies: - base-x "^3.0.8" - big-integer "1.6.36" - blakejs "^1.1.0" - bs58 "^4.0.1" - ripemd160-min "0.0.6" - safe-buffer "^5.2.0" - sha3 "^2.1.1" - -crypto-browserify@3.12.0, crypto-browserify@^3.11.0: - version "3.12.0" - resolved "https://registry.yarnpkg.com/crypto-browserify/-/crypto-browserify-3.12.0.tgz#396cf9f3137f03e4b8e532c58f698254e00f80ec" - integrity sha512-fz4spIh+znjO2VjL+IdhEpRJ3YN6sMzITSBijk6FK2UvTqruSQW+/cCZTSNsMiZNvUeq0CqurF+dAbyiGOY6Wg== - dependencies: - browserify-cipher "^1.0.0" - browserify-sign "^4.0.0" - create-ecdh "^4.0.0" - create-hash "^1.1.0" - create-hmac "^1.1.0" - diffie-hellman "^5.0.0" - inherits "^2.0.1" - pbkdf2 "^3.0.3" - public-encrypt "^4.0.0" - randombytes "^2.0.0" - randomfill "^1.0.3" - -crypto-random-string@^1.0.0: - version "1.0.0" - resolved "https://registry.yarnpkg.com/crypto-random-string/-/crypto-random-string-1.0.0.tgz#a230f64f568310e1498009940790ec99545bca7e" - integrity sha1-ojD2T1aDEOFJgAmUB5DsmVRbyn4= - -css-select@^4.1.3: - version "4.1.3" - resolved "https://registry.yarnpkg.com/css-select/-/css-select-4.1.3.tgz#a70440f70317f2669118ad74ff105e65849c7067" - integrity sha512-gT3wBNd9Nj49rAbmtFHj1cljIAOLYSX1nZ8CB7TBO3INYckygm5B7LISU/szY//YmdiSLbJvDLOx9VnMVpMBxA== - dependencies: - boolbase "^1.0.0" - css-what "^5.0.0" - domhandler "^4.2.0" - domutils "^2.6.0" - nth-check "^2.0.0" - -css-select@~1.2.0: - version "1.2.0" - resolved "https://registry.yarnpkg.com/css-select/-/css-select-1.2.0.tgz#2b3a110539c5355f1cd8d314623e870b121ec858" - integrity sha1-KzoRBTnFNV8c2NMUYj6HCxIeyFg= - dependencies: - boolbase "~1.0.0" - css-what "2.1" - domutils "1.5.1" - nth-check "~1.0.1" - -css-what@2.1: - version "2.1.3" - resolved "https://registry.yarnpkg.com/css-what/-/css-what-2.1.3.tgz#a6d7604573365fe74686c3f311c56513d88285f2" - integrity sha512-a+EPoD+uZiNfh+5fxw2nO9QwFa6nJe2Or35fGY6Ipw1R3R4AGz1d1TEZrCegvw2YTmZ0jXirGYlzxxpYSHwpEg== - -css-what@^5.0.0, css-what@^5.0.1: - version "5.0.1" - resolved "https://registry.yarnpkg.com/css-what/-/css-what-5.0.1.tgz#3efa820131f4669a8ac2408f9c32e7c7de9f4cad" - integrity sha512-FYDTSHb/7KXsWICVsxdmiExPjCfRC4qRFBdVwv7Ax9hMnvMmEjP9RfxTEZ3qPZGmADDn2vAKSo9UcN1jKVYscg== - -css@2.X: - version "2.2.4" - resolved "https://registry.yarnpkg.com/css/-/css-2.2.4.tgz#c646755c73971f2bba6a601e2cf2fd71b1298929" - integrity sha512-oUnjmWpy0niI3x/mPL8dVEI1l7MnG3+HHyRPHf+YFSbK+svOhXpmSOcDURUh2aOCgl2grzrOPt1nHLuCVFULLw== - dependencies: - inherits "^2.0.3" - source-map "^0.6.1" - source-map-resolve "^0.5.2" - urix "^0.1.0" - -cssfilter@0.0.10: - version "0.0.10" - resolved "https://registry.yarnpkg.com/cssfilter/-/cssfilter-0.0.10.tgz#c6d2672632a2e5c83e013e6864a42ce8defd20ae" - integrity sha1-xtJnJjKi5cg+AT5oZKQs6N79IK4= - -cssom@0.3.x, "cssom@>= 0.3.0 < 0.4.0": - version "0.3.8" - resolved "https://registry.yarnpkg.com/cssom/-/cssom-0.3.8.tgz#9f1276f5b2b463f2114d3f2c75250af8c1a36f4a" - integrity sha512-b0tGHbfegbhPJpxpiBPU2sCkigAqtM9O121le6bbOlgyV+NyGyCmVfJ6QW9eRjz8CpNfWEOYBIMIGRYkLwsIYg== - -"cssstyle@>= 0.2.29 < 0.3.0": - version "0.2.37" - resolved "https://registry.yarnpkg.com/cssstyle/-/cssstyle-0.2.37.tgz#541097234cb2513c83ceed3acddc27ff27987d54" - integrity sha1-VBCXI0yyUTyDzu06zdwn/yeYfVQ= - dependencies: - cssom "0.3.x" - -d@1, d@^1.0.1: - version "1.0.1" - resolved "https://registry.yarnpkg.com/d/-/d-1.0.1.tgz#8698095372d58dbee346ffd0c7093f99f8f9eb5a" - integrity sha512-m62ShEObQ39CfralilEQRjH6oAMtNCV1xJyEx5LpRYUVN+EviphDgUc/F3hnYbADmkiNs67Y+3ylmlG7Lnu+FA== - dependencies: - es5-ext "^0.10.50" - type "^1.0.1" - -dashdash@^1.12.0: - version "1.14.1" - resolved "https://registry.yarnpkg.com/dashdash/-/dashdash-1.14.1.tgz#853cfa0f7cbe2fed5de20326b8dd581035f6e2f0" - integrity sha1-hTz6D3y+L+1d4gMmuN1YEDX24vA= - dependencies: - assert-plus "^1.0.0" - -dataloader@2.0.0: - version "2.0.0" - resolved "https://registry.yarnpkg.com/dataloader/-/dataloader-2.0.0.tgz#41eaf123db115987e21ca93c005cd7753c55fe6f" - integrity sha512-YzhyDAwA4TaQIhM5go+vCLmU0UikghC/t9DTQYZR2M/UvZ1MdOhPezSDZcjj9uqQJOMqjLcpWtyW2iNINdlatQ== - -death@^1.1.0: - version "1.1.0" - resolved "https://registry.yarnpkg.com/death/-/death-1.1.0.tgz#01aa9c401edd92750514470b8266390c66c67318" - integrity sha1-AaqcQB7dknUFFEcLgmY5DGbGcxg= - -debug-fabulous@0.0.X: - version "0.0.4" - resolved "https://registry.yarnpkg.com/debug-fabulous/-/debug-fabulous-0.0.4.tgz#fa071c5d87484685424807421ca4b16b0b1a0763" - integrity sha1-+gccXYdIRoVCSAdCHKSxawsaB2M= - dependencies: - debug "2.X" - lazy-debug-legacy "0.0.X" - object-assign "4.1.0" - -debug@2.6.9, debug@2.X, debug@^2.2.0, debug@^2.3.3, debug@^2.6.0, debug@^2.6.8: - version "2.6.9" - resolved "https://registry.yarnpkg.com/debug/-/debug-2.6.9.tgz#5d128515df134ff327e90a4c93f4e077a536341f" - integrity sha512-bC7ElrdJaJnPbAP+1EotYvqZsb3ecl5wi6Bfi6BJTUcNowp6cvspg0jXznRTKDjm/E7AdgFBVeAPVMNcKGsHMA== - dependencies: - ms "2.0.0" - -debug@3.1.0, debug@=3.1.0: - version "3.1.0" - resolved "https://registry.yarnpkg.com/debug/-/debug-3.1.0.tgz#5bb5a0672628b64149566ba16819e61518c67261" - integrity sha512-OX8XqP7/1a9cqkxYw2yXss15f26NKWBpDXQd0/uK/KPqdQhxbPa994hnzjcE2VqQpDslf55723cKPUOGSmMY3g== - dependencies: - ms "2.0.0" - -debug@3.2.6, debug@^3.1.0: - version "3.2.6" - resolved "https://registry.yarnpkg.com/debug/-/debug-3.2.6.tgz#e83d17de16d8a7efb7717edbe5fb10135eee629b" - integrity sha512-mel+jf7nrtEl5Pn1Qx46zARXKDpBbvzezse7p7LqINmdoIk8PYP5SySaxEmYv6TZ0JyEKA1hsCId6DIhgITtWQ== - dependencies: - ms "^2.1.1" - -debug@4.1.1, debug@^4.1.1: - version "4.1.1" - resolved "https://registry.yarnpkg.com/debug/-/debug-4.1.1.tgz#3b72260255109c6b589cee050f1d516139664791" - integrity sha512-pYAIzeRo8J6KPEaJ0VWOh5Pzkbw/RetuzehGM7QRRX5he4fPHx2rdKMB256ehJCkX+XRQm16eZLqLNS8RSZXZw== - dependencies: - ms "^2.1.1" - -debug@^3.2.6: - version "3.2.7" - resolved "https://registry.yarnpkg.com/debug/-/debug-3.2.7.tgz#72580b7e9145fb39b6676f9c5e5fb100b934179a" - integrity sha512-CFjzYYAi4ThfiQvizrFQevTTXHtnCqWfe7x1AhgEscTz6ZbLbfoLRLPugTQyBth6f8ZERVUSyWHFD/7Wu4t1XQ== - dependencies: - ms "^2.1.1" - -debug@^4.1.0, debug@^4.3.1: - version "4.3.1" - resolved "https://registry.yarnpkg.com/debug/-/debug-4.3.1.tgz#f0d229c505e0c6d8c49ac553d1b13dc183f6b2ee" - integrity sha512-doEwdvm4PCeK4K3RQN2ZC2BYUBaxwLARCqZmMjtF8a51J2Rb0xpVloFRnCODwqjpwnAoao4pelN8l3RJdv3gRQ== - dependencies: - ms "2.1.2" - -decamelize@^1.0.0, decamelize@^1.1.1, decamelize@^1.2.0: - version "1.2.0" - resolved "https://registry.yarnpkg.com/decamelize/-/decamelize-1.2.0.tgz#f6534d15148269b20352e7bee26f501f9a191290" - integrity sha1-9lNNFRSCabIDUue+4m9QH5oZEpA= - -decode-uri-component@^0.2.0: - version "0.2.0" - resolved "https://registry.yarnpkg.com/decode-uri-component/-/decode-uri-component-0.2.0.tgz#eb3913333458775cb84cd1a1fae062106bb87545" - integrity sha1-6zkTMzRYd1y4TNGh+uBiEGu4dUU= - -decompress-response@^3.2.0, decompress-response@^3.3.0: - version "3.3.0" - resolved "https://registry.yarnpkg.com/decompress-response/-/decompress-response-3.3.0.tgz#80a4dd323748384bfa248083622aedec982adff3" - integrity sha1-gKTdMjdIOEv6JICDYirt7Jgq3/M= - dependencies: - mimic-response "^1.0.0" - -decompress-tar@^4.0.0, decompress-tar@^4.1.0, decompress-tar@^4.1.1: - version "4.1.1" - resolved "https://registry.yarnpkg.com/decompress-tar/-/decompress-tar-4.1.1.tgz#718cbd3fcb16209716e70a26b84e7ba4592e5af1" - integrity sha512-JdJMaCrGpB5fESVyxwpCx4Jdj2AagLmv3y58Qy4GE6HMVjWz1FeVQk1Ct4Kye7PftcdOo/7U7UKzYBJgqnGeUQ== - dependencies: - file-type "^5.2.0" - is-stream "^1.1.0" - tar-stream "^1.5.2" - -decompress-tarbz2@^4.0.0: - version "4.1.1" - resolved "https://registry.yarnpkg.com/decompress-tarbz2/-/decompress-tarbz2-4.1.1.tgz#3082a5b880ea4043816349f378b56c516be1a39b" - integrity sha512-s88xLzf1r81ICXLAVQVzaN6ZmX4A6U4z2nMbOwobxkLoIIfjVMBg7TeguTUXkKeXni795B6y5rnvDw7rxhAq9A== - dependencies: - decompress-tar "^4.1.0" - file-type "^6.1.0" - is-stream "^1.1.0" - seek-bzip "^1.0.5" - unbzip2-stream "^1.0.9" - -decompress-targz@^4.0.0: - version "4.1.1" - resolved "https://registry.yarnpkg.com/decompress-targz/-/decompress-targz-4.1.1.tgz#c09bc35c4d11f3de09f2d2da53e9de23e7ce1eee" - integrity sha512-4z81Znfr6chWnRDNfFNqLwPvm4db3WuZkqV+UgXQzSngG3CEKdBkw5jrv3axjjL96glyiiKjsxJG3X6WBZwX3w== - dependencies: - decompress-tar "^4.1.1" - file-type "^5.2.0" - is-stream "^1.1.0" - -decompress-unzip@^4.0.1: - version "4.0.1" - resolved "https://registry.yarnpkg.com/decompress-unzip/-/decompress-unzip-4.0.1.tgz#deaaccdfd14aeaf85578f733ae8210f9b4848f69" - integrity sha1-3qrM39FK6vhVePczroIQ+bSEj2k= - dependencies: - file-type "^3.8.0" - get-stream "^2.2.0" - pify "^2.3.0" - yauzl "^2.4.2" - -decompress@^4.0.0: - version "4.2.0" - resolved "https://registry.yarnpkg.com/decompress/-/decompress-4.2.0.tgz#7aedd85427e5a92dacfe55674a7c505e96d01f9d" - integrity sha1-eu3YVCflqS2s/lVnSnxQXpbQH50= - dependencies: - decompress-tar "^4.0.0" - decompress-tarbz2 "^4.0.0" - decompress-targz "^4.0.0" - decompress-unzip "^4.0.1" - graceful-fs "^4.1.10" - make-dir "^1.0.0" - pify "^2.3.0" - strip-dirs "^2.0.0" - -deep-eql@^0.1.3: - version "0.1.3" - resolved "https://registry.yarnpkg.com/deep-eql/-/deep-eql-0.1.3.tgz#ef558acab8de25206cd713906d74e56930eb69f2" - integrity sha1-71WKyrjeJSBs1xOQbXTlaTDrafI= - dependencies: - type-detect "0.1.1" - -deep-eql@^3.0.1: - version "3.0.1" - resolved "https://registry.yarnpkg.com/deep-eql/-/deep-eql-3.0.1.tgz#dfc9404400ad1c8fe023e7da1df1c147c4b444df" - integrity sha512-+QeIQyN5ZuO+3Uk5DYh6/1eKO0m0YmJFGNmFHGACpf1ClL1nmlV/p4gNgbl2pJGxgXb4faqo6UE+M5ACEMyVcw== - dependencies: - type-detect "^4.0.0" - -deep-extend@^0.6.0: - version "0.6.0" - resolved "https://registry.yarnpkg.com/deep-extend/-/deep-extend-0.6.0.tgz#c4fa7c95404a17a9c3e8ca7e1537312b736330ac" - integrity sha512-LOHxIOaPYdHlJRtCQfDIVZtfw/ufM8+rVj649RIHzcm/vGwQRXFt6OPqIFWsm2XEMrNIEtWR64sY1LEKD2vAOA== - -deep-is@~0.1.3: - version "0.1.3" - resolved "https://registry.yarnpkg.com/deep-is/-/deep-is-0.1.3.tgz#b369d6fb5dbc13eecf524f91b070feedc357cf34" - integrity sha1-s2nW+128E+7PUk+RsHD+7cNXzzQ= - -defaults@^1.0.3: - version "1.0.3" - resolved "https://registry.yarnpkg.com/defaults/-/defaults-1.0.3.tgz#c656051e9817d9ff08ed881477f3fe4019f3ef7d" - integrity sha1-xlYFHpgX2f8I7YgUd/P+QBnz730= - dependencies: - clone "^1.0.2" - -defer-to-connect@^1.0.1: - version "1.1.3" - resolved "https://registry.yarnpkg.com/defer-to-connect/-/defer-to-connect-1.1.3.tgz#331ae050c08dcf789f8c83a7b81f0ed94f4ac591" - integrity sha512-0ISdNousHvZT2EiFlZeZAHBUvSxmKswVCEf8hW7KWgG4a8MVEu/3Vb6uWYozkjylyCxe0JBIiRB1jV45S70WVQ== - -deferred-leveldown@~5.0.0: - version "5.0.1" - resolved "https://registry.yarnpkg.com/deferred-leveldown/-/deferred-leveldown-5.0.1.tgz#1642eb18b535dfb2b6ac4d39fb10a9cbcfd13b09" - integrity sha512-BXohsvTedWOLkj2n/TY+yqVlrCWa2Zs8LSxh3uCAgFOru7/pjxKyZAexGa1j83BaKloER4PqUyQ9rGPJLt9bqA== - dependencies: - abstract-leveldown "~6.0.0" - inherits "^2.0.3" - -deferred-leveldown@~5.3.0: - version "5.3.0" - resolved "https://registry.yarnpkg.com/deferred-leveldown/-/deferred-leveldown-5.3.0.tgz#27a997ad95408b61161aa69bd489b86c71b78058" - integrity sha512-a59VOT+oDy7vtAbLRCZwWgxu2BaCfd5Hk7wxJd48ei7I+nsg8Orlb9CLG0PMZienk9BSUKgeAqkO2+Lw+1+Ukw== - dependencies: - abstract-leveldown "~6.2.1" - inherits "^2.0.3" - -define-properties@^1.1.2, define-properties@^1.1.3: - version "1.1.3" - resolved "https://registry.yarnpkg.com/define-properties/-/define-properties-1.1.3.tgz#cf88da6cbee26fe6db7094f61d870cbd84cee9f1" - 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.yarnpkg.com/define-property/-/define-property-0.2.5.tgz#c35b1ef918ec3c990f9a5bc57be04aacec5c8116" - integrity sha1-w1se+RjsPJkPmlvFe+BKrOxcgRY= - dependencies: - is-descriptor "^0.1.0" - -define-property@^1.0.0: - version "1.0.0" - resolved "https://registry.yarnpkg.com/define-property/-/define-property-1.0.0.tgz#769ebaaf3f4a63aad3af9e8d304c9bbe79bfb0e6" - integrity sha1-dp66rz9KY6rTr56NMEybvnm/sOY= - dependencies: - is-descriptor "^1.0.0" - -define-property@^2.0.2: - version "2.0.2" - resolved "https://registry.yarnpkg.com/define-property/-/define-property-2.0.2.tgz#d459689e8d654ba77e02a817f8710d702cb16e9d" - integrity sha512-jwK2UV4cnPpbcG7+VRARKTZPUWowwXA8bzH5NP6ud0oeAxyYPuGZUAC7hMugpCdz4BeSZl2Dl9k66CHJ/46ZYQ== - dependencies: - is-descriptor "^1.0.2" - isobject "^3.0.1" - -delay@^5.0.0: - version "5.0.0" - resolved "https://registry.yarnpkg.com/delay/-/delay-5.0.0.tgz#137045ef1b96e5071060dd5be60bf9334436bd1d" - integrity sha512-ReEBKkIfe4ya47wlPYf/gu5ib6yUG0/Aez0JQZQz94kiWtRQvZIQbTiehsnwHvLSWJnQdhVeqYue7Id1dKr0qw== - -delayed-stream@~1.0.0: - version "1.0.0" - resolved "https://registry.yarnpkg.com/delayed-stream/-/delayed-stream-1.0.0.tgz#df3ae199acadfb7d440aaae0b29e2272b24ec619" - integrity sha1-3zrhmayt+31ECqrgsp4icrJOxhk= - -delegates@^1.0.0: - version "1.0.0" - resolved "https://registry.yarnpkg.com/delegates/-/delegates-1.0.0.tgz#84c6e159b81904fdca59a0ef44cd870d31250f9a" - integrity sha1-hMbhWbgZBP3KWaDvRM2HDTElD5o= - -delimit-stream@0.1.0: - version "0.1.0" - resolved "https://registry.yarnpkg.com/delimit-stream/-/delimit-stream-0.1.0.tgz#9b8319477c0e5f8aeb3ce357ae305fc25ea1cd2b" - integrity sha1-m4MZR3wOX4rrPONXrjBfwl6hzSs= - -depd@~1.1.2: - version "1.1.2" - resolved "https://registry.yarnpkg.com/depd/-/depd-1.1.2.tgz#9bcd52e14c097763e749b274c4346ed2e560b5a9" - integrity sha1-m81S4UwJd2PnSbJ0xDRu0uVgtak= - -deprecated-decorator@^0.1.6: - version "0.1.6" - resolved "https://registry.yarnpkg.com/deprecated-decorator/-/deprecated-decorator-0.1.6.tgz#00966317b7a12fe92f3cc831f7583af329b86c37" - integrity sha1-AJZjF7ehL+kvPMgx91g68ym4bDc= - -des.js@^1.0.0: - version "1.0.1" - resolved "https://registry.yarnpkg.com/des.js/-/des.js-1.0.1.tgz#5382142e1bdc53f85d86d53e5f4aa7deb91e0843" - integrity sha512-Q0I4pfFrv2VPd34/vfLrFOoRmlYj3OV50i7fskps1jZWK1kApMWWT9G6RRUeYedLcBDIhnSDaUvJMb3AhUlaEA== - dependencies: - inherits "^2.0.1" - minimalistic-assert "^1.0.0" - -destroy@~1.0.4: - version "1.0.4" - resolved "https://registry.yarnpkg.com/destroy/-/destroy-1.0.4.tgz#978857442c44749e4206613e37946205826abd80" - integrity sha1-l4hXRCxEdJ5CBmE+N5RiBYJqvYA= - -detect-indent@^4.0.0: - version "4.0.0" - resolved "https://registry.yarnpkg.com/detect-indent/-/detect-indent-4.0.0.tgz#f76d064352cdf43a1cb6ce619c4ee3a9475de208" - integrity sha1-920GQ1LN9Docts5hnE7jqUdd4gg= - dependencies: - repeating "^2.0.0" - -detect-indent@^5.0.0: - version "5.0.0" - resolved "https://registry.yarnpkg.com/detect-indent/-/detect-indent-5.0.0.tgz#3871cc0a6a002e8c3e5b3cf7f336264675f06b9d" - integrity sha1-OHHMCmoALow+Wzz38zYmRnXwa50= - -detect-installed@^2.0.4: - version "2.0.4" - resolved "https://registry.yarnpkg.com/detect-installed/-/detect-installed-2.0.4.tgz#a0850465e7c3ebcff979d6b6535ad344b80dd7c5" - integrity sha1-oIUEZefD68/5eda2U1rTRLgN18U= - dependencies: - get-installed-path "^2.0.3" - -detect-libc@^1.0.2: - version "1.0.3" - resolved "https://registry.yarnpkg.com/detect-libc/-/detect-libc-1.0.3.tgz#fa137c4bd698edf55cd5cd02ac559f91a4c4ba9b" - integrity sha1-+hN8S9aY7fVc1c0CrFWfkaTEups= - -detect-newline@2.X: - version "2.1.0" - resolved "https://registry.yarnpkg.com/detect-newline/-/detect-newline-2.1.0.tgz#f41f1c10be4b00e87b5f13da680759f2c5bfd3e2" - integrity sha1-9B8cEL5LAOh7XxPaaAdZ8sW/0+I= - -detect-port@^1.3.0: - version "1.3.0" - resolved "https://registry.yarnpkg.com/detect-port/-/detect-port-1.3.0.tgz#d9c40e9accadd4df5cac6a782aefd014d573d1f1" - integrity sha512-E+B1gzkl2gqxt1IhUzwjrxBKRqx1UzC3WLONHinn8S3T6lwV/agVCyitiFOsGJ/eYuEUBvD71MZHy3Pv1G9doQ== - dependencies: - address "^1.0.1" - debug "^2.6.0" - -dicer@0.3.0: - version "0.3.0" - resolved "https://registry.yarnpkg.com/dicer/-/dicer-0.3.0.tgz#eacd98b3bfbf92e8ab5c2fdb71aaac44bb06b872" - integrity sha512-MdceRRWqltEG2dZqO769g27N/3PXfcKl04VhYnBlo2YhH7zPi88VebsjTKclaOyiuMaGU72hTfw3VkUitGcVCA== - dependencies: - streamsearch "0.1.2" - -diff@3.5.0: - version "3.5.0" - resolved "https://registry.yarnpkg.com/diff/-/diff-3.5.0.tgz#800c0dd1e0a8bfbc95835c202ad220fe317e5a12" - integrity sha512-A46qtFgd+g7pDZinpnwiRJtxbC1hpgf0uzP3iG89scHk0AUC7A1TGxf5OiiOUv/JMZR8GOt8hL900hV0bOy5xA== - -diff@4.0.2, diff@^4.0.1: - version "4.0.2" - resolved "https://registry.yarnpkg.com/diff/-/diff-4.0.2.tgz#60f3aecb89d5fae520c11aa19efc2bb982aade7d" - integrity sha512-58lmxKSA4BNyLz+HHMUzlOEpg09FV+ev6ZMe3vJihgdxzgcwZ8VoEEPmALCZG9LmqfVoNMMKpttIYTVG6uDY7A== - -diffie-hellman@^5.0.0: - version "5.0.3" - resolved "https://registry.yarnpkg.com/diffie-hellman/-/diffie-hellman-5.0.3.tgz#40e8ee98f55a2149607146921c63e1ae5f3d2875" - integrity sha512-kqag/Nl+f3GwyK25fhUMYj81BUOrZ9IuJsjIcDE5icNM9FJHAVm3VcUDxdLPoQtTuUylWm6ZIknYJwwaPxsUzg== - dependencies: - bn.js "^4.1.0" - miller-rabin "^4.0.0" - randombytes "^2.0.0" - -dir-glob@^3.0.1: - version "3.0.1" - resolved "https://registry.yarnpkg.com/dir-glob/-/dir-glob-3.0.1.tgz#56dbf73d992a4a93ba1584f4534063fd2e41717f" - integrity sha512-WkrWp9GR4KXfKGYzOLmTuGVi1UWFfws377n9cc55/tb6DuqyF6pcQ5AbiHEshaDpY9v6oaSr2XCDidGmMwdzIA== - dependencies: - path-type "^4.0.0" - -dns-over-http-resolver@^1.0.0: - version "1.2.3" - resolved "https://registry.yarnpkg.com/dns-over-http-resolver/-/dns-over-http-resolver-1.2.3.tgz#194d5e140a42153f55bb79ac5a64dd2768c36af9" - integrity sha512-miDiVSI6KSNbi4SVifzO/reD8rMnxgrlnkrlkugOLQpWQTe2qMdHsZp5DmfKjxNE+/T3VAAYLQUZMv9SMr6+AA== - dependencies: - debug "^4.3.1" - native-fetch "^3.0.0" - receptacle "^1.3.2" - -dom-serializer@0: - version "0.2.2" - resolved "https://registry.yarnpkg.com/dom-serializer/-/dom-serializer-0.2.2.tgz#1afb81f533717175d478655debc5e332d9f9bb51" - integrity sha512-2/xPb3ORsQ42nHYiSunXkDjPLBaEj/xTwUO4B7XCZQTRk7EBtTOPaygh10YAAh2OI1Qrp6NWfpAhzswj0ydt9g== - dependencies: - domelementtype "^2.0.1" - entities "^2.0.0" - -dom-serializer@^1.0.1, dom-serializer@^1.3.2: - version "1.3.2" - resolved "https://registry.yarnpkg.com/dom-serializer/-/dom-serializer-1.3.2.tgz#6206437d32ceefaec7161803230c7a20bc1b4d91" - integrity sha512-5c54Bk5Dw4qAxNOI1pFEizPSjVsx5+bpJKmL2kPn8JhBUq2q09tTCa3mjijun2NfK78NMouDYNMBkOrPZiS+ig== - dependencies: - domelementtype "^2.0.1" - domhandler "^4.2.0" - entities "^2.0.0" - -dom-serializer@~0.1.0: - version "0.1.1" - resolved "https://registry.yarnpkg.com/dom-serializer/-/dom-serializer-0.1.1.tgz#1ec4059e284babed36eec2941d4a970a189ce7c0" - integrity sha512-l0IU0pPzLWSHBcieZbpOKgkIn3ts3vAh7ZuFyXNwJxJXk/c4Gwj9xaTJwIDVQCXawWD0qb3IzMGH5rglQaO0XA== - dependencies: - domelementtype "^1.3.0" - entities "^1.1.1" - -dom-walk@^0.1.0: - version "0.1.1" - resolved "https://registry.yarnpkg.com/dom-walk/-/dom-walk-0.1.1.tgz#672226dc74c8f799ad35307df936aba11acd6018" - integrity sha1-ZyIm3HTI95mtNTB9+TaroRrNYBg= - -domain-browser@^1.1.1: - version "1.2.0" - resolved "https://registry.yarnpkg.com/domain-browser/-/domain-browser-1.2.0.tgz#3d31f50191a6749dd1375a7f522e823d42e54eda" - integrity sha512-jnjyiM6eRyZl2H+W8Q/zLMA481hzi0eszAaBUzIVnmYVDBbnLxVNnfu1HgEBvCbL+71FrxMl3E6lpKH7Ge3OXA== - -domelementtype@1, domelementtype@^1.3.0, domelementtype@^1.3.1: - version "1.3.1" - resolved "https://registry.yarnpkg.com/domelementtype/-/domelementtype-1.3.1.tgz#d048c44b37b0d10a7f2a3d5fee3f4333d790481f" - integrity sha512-BSKB+TSpMpFI/HOxCNr1O8aMOTZ8hT3pM3GQ0w/mWRmkhEDSFJkkyzz4XQsBV44BChwGkrDfMyjVD0eA2aFV3w== - -domelementtype@^2.0.1: - version "2.1.0" - resolved "https://registry.yarnpkg.com/domelementtype/-/domelementtype-2.1.0.tgz#a851c080a6d1c3d94344aed151d99f669edf585e" - integrity sha512-LsTgx/L5VpD+Q8lmsXSHW2WpA+eBlZ9HPf3erD1IoPF00/3JKHZ3BknUVA2QGDNu69ZNmyFmCWBSO45XjYKC5w== - -domelementtype@^2.2.0: - version "2.2.0" - resolved "https://registry.yarnpkg.com/domelementtype/-/domelementtype-2.2.0.tgz#9a0b6c2782ed6a1c7323d42267183df9bd8b1d57" - integrity sha512-DtBMo82pv1dFtUmHyr48beiuq792Sxohr+8Hm9zoxklYPfa6n0Z3Byjj2IV7bmr2IyqClnqEQhfgHJJ5QF0R5A== - -domhandler@2.3: - version "2.3.0" - resolved "https://registry.yarnpkg.com/domhandler/-/domhandler-2.3.0.tgz#2de59a0822d5027fabff6f032c2b25a2a8abe738" - integrity sha1-LeWaCCLVAn+r/28DLCsloqir5zg= - dependencies: - domelementtype "1" - -domhandler@^2.3.0: - version "2.4.2" - resolved "https://registry.yarnpkg.com/domhandler/-/domhandler-2.4.2.tgz#8805097e933d65e85546f726d60f5eb88b44f803" - integrity sha512-JiK04h0Ht5u/80fdLMCEmV4zkNh2BcoMFBmZ/91WtYZ8qVXSKjiw7fXMgFPnHcSZgOo3XdinHvmnDUeMf5R4wA== - dependencies: - domelementtype "1" - -domhandler@^4.0.0, domhandler@^4.2.0: - version "4.2.0" - resolved "https://registry.yarnpkg.com/domhandler/-/domhandler-4.2.0.tgz#f9768a5f034be60a89a27c2e4d0f74eba0d8b059" - integrity sha512-zk7sgt970kzPks2Bf+dwT/PLzghLnsivb9CcxkvR8Mzr66Olr0Ofd8neSbglHJHaHa2MadfoSdNlKYAaafmWfA== - dependencies: - domelementtype "^2.2.0" - -domutils@1.5, domutils@1.5.1: - version "1.5.1" - resolved "https://registry.yarnpkg.com/domutils/-/domutils-1.5.1.tgz#dcd8488a26f563d61079e48c9f7b7e32373682cf" - integrity sha1-3NhIiib1Y9YQeeSMn3t+Mjc2gs8= - dependencies: - dom-serializer "0" - domelementtype "1" - -domutils@^1.5.1: - version "1.7.0" - resolved "https://registry.yarnpkg.com/domutils/-/domutils-1.7.0.tgz#56ea341e834e06e6748af7a1cb25da67ea9f8c2a" - integrity sha512-Lgd2XcJ/NjEw+7tFvfKxOzCYKZsdct5lczQ2ZaQY8Djz7pfAD3Gbp8ySJWtreII/vDlMVmxwa6pHmdxIYgttDg== - dependencies: - dom-serializer "0" - domelementtype "1" - -domutils@^2.5.2, domutils@^2.6.0, domutils@^2.7.0: - version "2.7.0" - resolved "https://registry.yarnpkg.com/domutils/-/domutils-2.7.0.tgz#8ebaf0c41ebafcf55b0b72ec31c56323712c5442" - integrity sha512-8eaHa17IwJUPAiB+SoTYBo5mCdeMgdcAoXJ59m6DT1vw+5iLS3gNoqYaRowaBKtGVrOF1Jz4yDTgYKLK2kvfJg== - dependencies: - dom-serializer "^1.0.1" - domelementtype "^2.2.0" - domhandler "^4.2.0" - -dot-case@^2.1.0: - version "2.1.1" - resolved "https://registry.yarnpkg.com/dot-case/-/dot-case-2.1.1.tgz#34dcf37f50a8e93c2b3bca8bb7fb9155c7da3bee" - integrity sha1-NNzzf1Co6TwrO8qLt/uRVcfaO+4= - dependencies: - no-case "^2.2.0" - -dot-prop@^4.1.0: - version "4.2.1" - resolved "https://registry.yarnpkg.com/dot-prop/-/dot-prop-4.2.1.tgz#45884194a71fc2cda71cbb4bceb3a4dd2f433ba4" - integrity sha512-l0p4+mIuJIua0mhxGoh4a+iNL9bmeK5DvnSVQa6T0OhrVmaEa1XScX5Etc673FePCJOArq/4Pa2cLGODUWTPOQ== - dependencies: - is-obj "^1.0.0" - -dotenv@^10.0.0: - version "10.0.0" - resolved "https://registry.yarnpkg.com/dotenv/-/dotenv-10.0.0.tgz#3d4227b8fb95f81096cdd2b66653fb2c7085ba81" - integrity sha512-rlBi9d8jpv9Sf1klPjNfFAuWDjKLwTIJJ/VxtoTwIR6hnZxcEOQCZg2oIL3MWBYw5GpUDKOEnND7LXTbIpQ03Q== - -double-ended-queue@2.1.0-0: - version "2.1.0-0" - resolved "https://registry.yarnpkg.com/double-ended-queue/-/double-ended-queue-2.1.0-0.tgz#103d3527fd31528f40188130c841efdd78264e5c" - integrity sha1-ED01J/0xUo9AGIEwyEHv3XgmTlw= - -drbg.js@^1.0.1: - version "1.0.1" - resolved "https://registry.yarnpkg.com/drbg.js/-/drbg.js-1.0.1.tgz#3e36b6c42b37043823cdbc332d58f31e2445480b" - integrity sha1-Pja2xCs3BDgjzbwzLVjzHiRFSAs= - dependencies: - browserify-aes "^1.0.6" - create-hash "^1.1.2" - create-hmac "^1.1.4" - -duplexer3@^0.1.4: - version "0.1.4" - resolved "https://registry.yarnpkg.com/duplexer3/-/duplexer3-0.1.4.tgz#ee01dd1cac0ed3cbc7fdbea37dc0a8f1ce002ce2" - integrity sha1-7gHdHKwO08vH/b6jfcCo8c4ALOI= - -duplexify@^3.2.0: - version "3.7.1" - resolved "https://registry.yarnpkg.com/duplexify/-/duplexify-3.7.1.tgz#2a4df5317f6ccfd91f86d6fd25d8d8a103b88309" - integrity sha512-07z8uv2wMyS51kKhD1KsdXJg5WQ6t93RneqRxUHnskXVtlYYkLqM0gqStQZ3pj073g687jPCHrqNfCzawLYh5g== - dependencies: - end-of-stream "^1.0.0" - inherits "^2.0.1" - readable-stream "^2.0.0" - stream-shift "^1.0.0" - -ecc-jsbn@~0.1.1: - version "0.1.2" - resolved "https://registry.yarnpkg.com/ecc-jsbn/-/ecc-jsbn-0.1.2.tgz#3a83a904e54353287874c564b7549386849a98c9" - integrity sha1-OoOpBOVDUyh4dMVkt1SThoSamMk= - dependencies: - jsbn "~0.1.0" - safer-buffer "^2.1.0" - -ed2curve@^0.3.0: - version "0.3.0" - resolved "https://registry.yarnpkg.com/ed2curve/-/ed2curve-0.3.0.tgz#322b575152a45305429d546b071823a93129a05d" - integrity sha512-8w2fmmq3hv9rCrcI7g9hms2pMunQr1JINfcjwR9tAyZqhtyaMN991lF/ZfHfr5tzZQ8c7y7aBgZbjfbd0fjFwQ== - dependencies: - tweetnacl "1.x.x" - -ee-first@1.1.1: - version "1.1.1" - resolved "https://registry.yarnpkg.com/ee-first/-/ee-first-1.1.1.tgz#590c61156b0ae2f4f0255732a158b266bc56b21d" - integrity sha1-WQxhFWsK4vTwJVcyoViyZrxWsh0= - -electron-fetch@^1.7.2: - version "1.7.3" - resolved "https://registry.yarnpkg.com/electron-fetch/-/electron-fetch-1.7.3.tgz#06cf363d7f64073ec00a37e9949ec9d29ce6b08a" - integrity sha512-1AVMaxrHXTTMqd7EK0MGWusdqNr07Rpj8Th6bG4at0oNgIi/1LBwa9CjT/0Zy+M0k/tSJPS04nFxHj0SXDVgVw== - dependencies: - encoding "^0.1.13" - -electron-to-chromium@^1.3.649: - version "1.3.687" - resolved "https://registry.yarnpkg.com/electron-to-chromium/-/electron-to-chromium-1.3.687.tgz#c336184b7ab70427ffe2ee79eaeaedbc1ad8c374" - integrity sha512-IpzksdQNl3wdgkzf7dnA7/v10w0Utf1dF2L+B4+gKrloBrxCut+au+kky3PYvle3RMdSxZP+UiCZtLbcYRxSNQ== - -elliptic@6.3.3: - version "6.3.3" - resolved "https://registry.yarnpkg.com/elliptic/-/elliptic-6.3.3.tgz#5482d9646d54bcb89fd7d994fc9e2e9568876e3f" - integrity sha1-VILZZG1UvLif19mU/J4ulWiHbj8= - dependencies: - bn.js "^4.4.0" - brorand "^1.0.1" - hash.js "^1.0.0" - inherits "^2.0.1" - -elliptic@6.5.2, elliptic@^6.0.0, elliptic@^6.4.0, elliptic@^6.5.2: - version "6.5.2" - resolved "https://registry.yarnpkg.com/elliptic/-/elliptic-6.5.2.tgz#05c5678d7173c049d8ca433552224a495d0e3762" - integrity sha512-f4x70okzZbIQl/NSRLkI/+tteV/9WqL98zx+SQ69KbXxmVrmjwsNUPn/gYJJ0sHvEak24cZgHIPegRePAtA/xw== - 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" - -elliptic@6.5.4, elliptic@^6.5.3: - version "6.5.4" - resolved "https://registry.yarnpkg.com/elliptic/-/elliptic-6.5.4.tgz#da37cebd31e79a1367e941b592ed1fbebd58abbb" - integrity sha512-iLhC6ULemrljPZb+QutR5TQGB+pdW6KGD5RSegS+8sorOZT+rdQFbsQFJgvN3eRqNALqJer4oQ16YvJHlU8hzQ== - dependencies: - bn.js "^4.11.9" - brorand "^1.1.0" - hash.js "^1.0.0" - hmac-drbg "^1.0.1" - inherits "^2.0.4" - minimalistic-assert "^1.0.1" - minimalistic-crypto-utils "^1.0.1" - -emittery@^0.4.1: - version "0.4.1" - resolved "https://registry.yarnpkg.com/emittery/-/emittery-0.4.1.tgz#abe9d3297389ba424ac87e53d1c701962ce7433d" - integrity sha512-r4eRSeStEGf6M5SKdrQhhLK5bOwOBxQhIE3YSTnZE3GpKiLfnnhE+tPtrJE79+eDJgm39BM6LSoI8SCx4HbwlQ== - -emoji-regex@^7.0.1: - version "7.0.3" - resolved "https://registry.yarnpkg.com/emoji-regex/-/emoji-regex-7.0.3.tgz#933a04052860c85e83c122479c4748a8e4c72156" - integrity sha512-CwBLREIQ7LvYFB0WyRvwhq5N5qPhc6PMjD6bYggFlI5YyDgl+0vxq5VHbMOFqLg7hfWzmu8T5Z1QofhmTIhItA== - -emoji-regex@^8.0.0: - version "8.0.0" - resolved "https://registry.yarnpkg.com/emoji-regex/-/emoji-regex-8.0.0.tgz#e818fd69ce5ccfcb404594f842963bf53164cc37" - integrity sha512-MSjYzcWNOA0ewAHpz0MxpYFvwg6yjy1NG3xteoqz644VCo/RPgnr1/GGt+ic3iJTzQ8Eu3TdM14SawnVUmGE6A== - -emoji-regex@^9.2.2: - version "9.2.2" - resolved "https://registry.yarnpkg.com/emoji-regex/-/emoji-regex-9.2.2.tgz#840c8803b0d8047f4ff0cf963176b32d4ef3ed72" - integrity sha512-L18DaJsXSUk2+42pv8mLs5jJT2hqFkFE4j21wOmgbUqsZ2hL72NsUU785g9RXgo3s0ZNgVl42TiHp3ZtOv/Vyg== - -emojis-list@^3.0.0: - version "3.0.0" - resolved "https://registry.yarnpkg.com/emojis-list/-/emojis-list-3.0.0.tgz#5570662046ad29e2e916e71aae260abdff4f6a78" - integrity sha512-/kyM18EfinwXZbno9FyUGeFh87KC8HRQBQGildHZbEuRyWFOmv1U10o9BBp8XVZDVNNuQKyIGIu5ZYAAXJ0V2Q== - -encodeurl@~1.0.2: - version "1.0.2" - resolved "https://registry.yarnpkg.com/encodeurl/-/encodeurl-1.0.2.tgz#ad3ff4c86ec2d029322f5a02c3a9a606c95b3f59" - integrity sha1-rT/0yG7C0CkyL1oCw6mmBslbP1k= - -encoding-down@^6.3.0: - version "6.3.0" - resolved "https://registry.yarnpkg.com/encoding-down/-/encoding-down-6.3.0.tgz#b1c4eb0e1728c146ecaef8e32963c549e76d082b" - integrity sha512-QKrV0iKR6MZVJV08QY0wp1e7vF6QbhnbQhb07bwpEyuz4uZiZgPlEGdkCROuFkUwdxlFaiPIhjyarH1ee/3vhw== - dependencies: - abstract-leveldown "^6.2.1" - inherits "^2.0.3" - level-codec "^9.0.0" - level-errors "^2.0.0" - -encoding@^0.1.13: - version "0.1.13" - resolved "https://registry.yarnpkg.com/encoding/-/encoding-0.1.13.tgz#56574afdd791f54a8e9b2785c0582a2d26210fa9" - integrity sha512-ETBauow1T35Y/WZMkio9jiM0Z5xjHHmJ4XmjZOq1l/dXz3lr2sRn87nJy20RupqSh1F2m3HHPSp8ShIPQJrJ3A== - dependencies: - iconv-lite "^0.6.2" - -end-of-stream@^1.0.0, end-of-stream@^1.1.0: - version "1.4.4" - resolved "https://registry.yarnpkg.com/end-of-stream/-/end-of-stream-1.4.4.tgz#5ae64a5f45057baf3626ec14da0ca5e4b2431eb0" - integrity sha512-+uw1inIHVPQoaVuHzRyXd21icM+cnt4CzD5rW+NC1wjOUSTOs+Te7FOv7AhN7vS9x/oIyhLP5PR1H+phQAHu5Q== - dependencies: - once "^1.4.0" - -end-stream@~0.1.0: - version "0.1.0" - resolved "https://registry.yarnpkg.com/end-stream/-/end-stream-0.1.0.tgz#32003f3f438a2b0143168137f8fa6e9866c81ed5" - integrity sha1-MgA/P0OKKwFDFoE3+PpumGbIHtU= - dependencies: - write-stream "~0.4.3" - -enhanced-resolve@^3.4.0: - version "3.4.1" - resolved "https://registry.yarnpkg.com/enhanced-resolve/-/enhanced-resolve-3.4.1.tgz#0421e339fd71419b3da13d129b3979040230476e" - integrity sha1-BCHjOf1xQZs9oT0Smzl5BAIwR24= - dependencies: - graceful-fs "^4.1.2" - memory-fs "^0.4.0" - object-assign "^4.0.1" - tapable "^0.2.7" - -entities@1.0: - version "1.0.0" - resolved "https://registry.yarnpkg.com/entities/-/entities-1.0.0.tgz#b2987aa3821347fcde642b24fdfc9e4fb712bf26" - integrity sha1-sph6o4ITR/zeZCsk/fyeT7cSvyY= - -entities@^1.1.1, entities@~1.1.1: - version "1.1.2" - resolved "https://registry.yarnpkg.com/entities/-/entities-1.1.2.tgz#bdfa735299664dfafd34529ed4f8522a275fea56" - integrity sha512-f2LZMYl1Fzu7YSBKg+RoROelpOaNrcGmE9AZubeDfrCEia483oW4MI4VyFd5VNHIgQ/7qm1I0wUHK1eJnn2y2w== - -entities@^2.0.0: - version "2.2.0" - resolved "https://registry.yarnpkg.com/entities/-/entities-2.2.0.tgz#098dc90ebb83d8dffa089d55256b351d34c4da55" - integrity sha512-p92if5Nz619I0w+akJrLZH0MX0Pb5DX39XOwQTtXSdQQOaYH03S1uIQp4mhOZtAXrxq4ViO67YTiLBo2638o9A== - -err-code@^2.0.0, err-code@^2.0.3: - version "2.0.3" - resolved "https://registry.yarnpkg.com/err-code/-/err-code-2.0.3.tgz#23c2f3b756ffdfc608d30e27c9a941024807e7f9" - integrity sha512-2bmlRpNKBxT/CRmPOlyISQpNj+qSeYvcym/uT0Jx2bMOlKLtSy1ZmLuVxSEKKyor/N5yhvp/ZiG1oE3DEYMSFA== - -err-code@^3.0.0, err-code@^3.0.1: - version "3.0.1" - resolved "https://registry.yarnpkg.com/err-code/-/err-code-3.0.1.tgz#a444c7b992705f2b120ee320b09972eef331c920" - integrity sha512-GiaH0KJUewYok+eeY05IIgjtAe4Yltygk9Wqp1V5yVWLdhf0hYZchRjNIT9bb0mSwRcIusT3cx7PJUf3zEIfUA== - -errno@^0.1.3, errno@~0.1.1: - version "0.1.8" - resolved "https://registry.yarnpkg.com/errno/-/errno-0.1.8.tgz#8bb3e9c7d463be4976ff888f76b4809ebc2e811f" - integrity sha512-dJ6oBr5SQ1VSd9qkk7ByRgb/1SH4JZjCHSW/mr63/QcXO9zLVxvJ6Oy13nio03rxpSnVDDjFor75SjVeZWPW/A== - dependencies: - prr "~1.0.1" - -error-ex@^1.2.0: - version "1.3.2" - resolved "https://registry.yarnpkg.com/error-ex/-/error-ex-1.3.2.tgz#b4ac40648107fdcdcfae242f428bea8a14d4f1bf" - integrity sha512-7dFHNmqeFSEt2ZBsCriorKnn3Z2pj+fd9kmI6QoWw4//DL+icEBfc0U7qJCisqrTsKTjw4fNFy2pW9OqStD84g== - dependencies: - is-arrayish "^0.2.1" - -es-abstract@^1.17.0-next.1, es-abstract@^1.18.0-next.1, es-abstract@^1.18.0-next.2: - version "1.18.0" - resolved "https://registry.yarnpkg.com/es-abstract/-/es-abstract-1.18.0.tgz#ab80b359eecb7ede4c298000390bc5ac3ec7b5a4" - integrity sha512-LJzK7MrQa8TS0ja2w3YNLzUgJCGPdPOV1yVvezjNnS89D+VR08+Szt2mz3YB2Dck/+w5tfIq/RoUAFqJJGM2yw== - dependencies: - call-bind "^1.0.2" - es-to-primitive "^1.2.1" - function-bind "^1.1.1" - get-intrinsic "^1.1.1" - has "^1.0.3" - has-symbols "^1.0.2" - is-callable "^1.2.3" - is-negative-zero "^2.0.1" - is-regex "^1.1.2" - is-string "^1.0.5" - object-inspect "^1.9.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.0" - -es-array-method-boxes-properly@^1.0.0: - version "1.0.0" - resolved "https://registry.yarnpkg.com/es-array-method-boxes-properly/-/es-array-method-boxes-properly-1.0.0.tgz#873f3e84418de4ee19c5be752990b2e44718d09e" - integrity sha512-wd6JXUmyHmt8T5a2xreUwKcGPq6f1f+WwIJkijUqiGcJz1qqnZgP6XIK+QyIWU5lT7imeNxUll48bziG+TSYcA== - -es-get-iterator@^1.0.2: - version "1.1.2" - resolved "https://registry.yarnpkg.com/es-get-iterator/-/es-get-iterator-1.1.2.tgz#9234c54aba713486d7ebde0220864af5e2b283f7" - integrity sha512-+DTO8GYwbMCwbywjimwZMHp8AuYXOS2JZFWoi2AlPOS3ebnII9w/NLpNZtA7A0YLaVDw+O7KFCeoIV7OPvM7hQ== - dependencies: - call-bind "^1.0.2" - get-intrinsic "^1.1.0" - has-symbols "^1.0.1" - is-arguments "^1.1.0" - is-map "^2.0.2" - is-set "^2.0.2" - is-string "^1.0.5" - isarray "^2.0.5" - -es-to-primitive@^1.2.1: - version "1.2.1" - resolved "https://registry.yarnpkg.com/es-to-primitive/-/es-to-primitive-1.2.1.tgz#e55cd4c9cdc188bcefb03b366c736323fc5c898a" - integrity sha512-QCOllgZJtaUo9miYBcLChTUaHNjJF3PYs1VidD7AwiEj1kYxKeQTctLAezAOH5ZKRH0g2IgPn6KwB4IT8iRpvA== - dependencies: - is-callable "^1.1.4" - is-date-object "^1.0.1" - is-symbol "^1.0.2" - -es5-ext@^0.10.35, es5-ext@^0.10.45, es5-ext@^0.10.46, es5-ext@^0.10.50, es5-ext@~0.10.14, es5-ext@~0.10.2, es5-ext@~0.10.46: - version "0.10.53" - resolved "https://registry.yarnpkg.com/es5-ext/-/es5-ext-0.10.53.tgz#93c5a3acfdbef275220ad72644ad02ee18368de1" - integrity sha512-Xs2Stw6NiNHWypzRTY1MtaG/uJlwCk8kH81920ma8mvN8Xq1gsfhZvpkImLQArw8AHnv8MT2I45J3c0R8slE+Q== - dependencies: - es6-iterator "~2.0.3" - es6-symbol "~3.1.3" - next-tick "~1.0.0" - -es6-denodeify@^0.1.1: - version "0.1.5" - resolved "https://registry.yarnpkg.com/es6-denodeify/-/es6-denodeify-0.1.5.tgz#31d4d5fe9c5503e125460439310e16a2a3f39c1f" - integrity sha1-MdTV/pxVA+ElRgQ5MQ4WoqPznB8= - -es6-iterator@^2.0.3, es6-iterator@~2.0.1, es6-iterator@~2.0.3: - version "2.0.3" - resolved "https://registry.yarnpkg.com/es6-iterator/-/es6-iterator-2.0.3.tgz#a7de889141a05a94b0854403b2d0a0fbfa98f3b7" - integrity sha1-p96IkUGgWpSwhUQDstCg+/qY87c= - dependencies: - d "1" - es5-ext "^0.10.35" - es6-symbol "^3.1.1" - -es6-map@^0.1.3: - version "0.1.5" - resolved "https://registry.yarnpkg.com/es6-map/-/es6-map-0.1.5.tgz#9136e0503dcc06a301690f0bb14ff4e364e949f0" - integrity sha1-kTbgUD3MBqMBaQ8LsU/042TpSfA= - dependencies: - d "1" - es5-ext "~0.10.14" - es6-iterator "~2.0.1" - es6-set "~0.1.5" - es6-symbol "~3.1.1" - event-emitter "~0.3.5" - -es6-set@~0.1.5: - version "0.1.5" - resolved "https://registry.yarnpkg.com/es6-set/-/es6-set-0.1.5.tgz#d2b3ec5d4d800ced818db538d28974db0a73ccb1" - integrity sha1-0rPsXU2ADO2BjbU40ol02wpzzLE= - dependencies: - d "1" - es5-ext "~0.10.14" - es6-iterator "~2.0.1" - es6-symbol "3.1.1" - event-emitter "~0.3.5" - -es6-symbol@3.1.1: - version "3.1.1" - resolved "https://registry.yarnpkg.com/es6-symbol/-/es6-symbol-3.1.1.tgz#bf00ef4fdab6ba1b46ecb7b629b4c7ed5715cc77" - integrity sha1-vwDvT9q2uhtG7Le2KbTH7VcVzHc= - dependencies: - d "1" - es5-ext "~0.10.14" - -es6-symbol@^3.1.1, es6-symbol@~3.1.1, es6-symbol@~3.1.3: - version "3.1.3" - resolved "https://registry.yarnpkg.com/es6-symbol/-/es6-symbol-3.1.3.tgz#bad5d3c1bcdac28269f4cb331e431c78ac705d18" - integrity sha512-NJ6Yn3FuDinBaBRWl/q5X/s4koRHBrgKAu+yGI6JCBeiu3qrcbJhwT2GeR/EXVfylRk8dpQVJoLEFhK+Mu31NA== - dependencies: - d "^1.0.1" - ext "^1.1.2" - -es6-weak-map@^2.0.1, es6-weak-map@^2.0.2: - version "2.0.3" - resolved "https://registry.yarnpkg.com/es6-weak-map/-/es6-weak-map-2.0.3.tgz#b6da1f16cc2cc0d9be43e6bdbfc5e7dfcdf31d53" - integrity sha512-p5um32HOTO1kP+w7PRnB+5lQ43Z6muuMuIMffvDN8ZB4GcnjLBV6zGStpbASIMk4DCAvEaamhe2zhyCb/QXXsA== - dependencies: - d "1" - es5-ext "^0.10.46" - es6-iterator "^2.0.3" - es6-symbol "^3.1.1" - -escalade@^3.1.1: - version "3.1.1" - resolved "https://registry.yarnpkg.com/escalade/-/escalade-3.1.1.tgz#d8cfdc7000965c5a0174b4a82eaa5c0552742e40" - integrity sha512-k0er2gUkLf8O0zKJiAhmkTnJlTvINGv7ygDNPbeIsX/TJjGJZHuh9B2UxbsaEkmlEo9MfhrSzmhIlhRlI2GXnw== - -escape-html@1.0.3, escape-html@~1.0.3: - version "1.0.3" - resolved "https://registry.yarnpkg.com/escape-html/-/escape-html-1.0.3.tgz#0258eae4d3d0c0974de1c169188ef0051d1d1988" - integrity sha1-Aljq5NPQwJdN4cFpGI7wBR0dGYg= - -escape-string-regexp@1.0.5, escape-string-regexp@^1.0.2, escape-string-regexp@^1.0.5: - version "1.0.5" - resolved "https://registry.yarnpkg.com/escape-string-regexp/-/escape-string-regexp-1.0.5.tgz#1b61c0562190a8dff6ae3bb2cf0200ca130b86d4" - integrity sha1-G2HAViGQqN/2rjuyzwIAyhMLhtQ= - -escape-string-regexp@4.0.0, escape-string-regexp@^4.0.0: - version "4.0.0" - resolved "https://registry.yarnpkg.com/escape-string-regexp/-/escape-string-regexp-4.0.0.tgz#14ba83a5d373e3d311e5afca29cf5bfad965bf34" - integrity sha512-TtpcNJ3XAzx3Gq8sWRzJaVajRs0uVxA2YAkdb1jm2YkPz4G6egUFAyA3n5vtEIZefPk5Wa4UXbKuS5fKkJWdgA== - -escodegen@1.8.x: - version "1.8.1" - resolved "https://registry.yarnpkg.com/escodegen/-/escodegen-1.8.1.tgz#5a5b53af4693110bebb0867aa3430dd3b70a1018" - 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" - -escodegen@^1.6.1: - version "1.14.3" - resolved "https://registry.yarnpkg.com/escodegen/-/escodegen-1.14.3.tgz#4e7b81fba61581dc97582ed78cab7f0e8d63f503" - integrity sha512-qFcX0XJkdg+PB3xjZZG/wKSuT1PnQWx57+TVSjIMmILd2yC/6ByYElPwJnslDsuWuSAp4AwJGumarAAmJch5Kw== - dependencies: - esprima "^4.0.1" - estraverse "^4.2.0" - esutils "^2.0.2" - optionator "^0.8.1" - optionalDependencies: - source-map "~0.6.1" - -escope@^3.6.0: - version "3.6.0" - resolved "https://registry.yarnpkg.com/escope/-/escope-3.6.0.tgz#e01975e812781a163a6dadfdd80398dc64c889c3" - integrity sha1-4Bl16BJ4GhY6ba392AOY3GTIicM= - dependencies: - es6-map "^0.1.3" - es6-weak-map "^2.0.1" - esrecurse "^4.1.0" - estraverse "^4.1.1" - -esdoc@^1.0.4: - version "1.1.0" - resolved "https://registry.yarnpkg.com/esdoc/-/esdoc-1.1.0.tgz#07d40ebf791764cd537929c29111e20a857624f3" - integrity sha512-vsUcp52XJkOWg9m1vDYplGZN2iDzvmjDL5M/Mp8qkoDG3p2s0yIQCIjKR5wfPBaM3eV14a6zhQNYiNTCVzPnxA== - dependencies: - babel-generator "6.26.1" - babel-traverse "6.26.0" - babylon "6.18.0" - cheerio "1.0.0-rc.2" - color-logger "0.0.6" - escape-html "1.0.3" - fs-extra "5.0.0" - ice-cap "0.0.4" - marked "0.3.19" - minimist "1.2.0" - taffydb "2.7.3" - -esprima@2.7.x, esprima@^2.7.1: - version "2.7.3" - resolved "https://registry.yarnpkg.com/esprima/-/esprima-2.7.3.tgz#96e3b70d5779f6ad49cd032673d1c312767ba581" - integrity sha1-luO3DVd59q1JzQMmc9HDEnZ7pYE= - -esprima@^4.0.0, esprima@^4.0.1: - version "4.0.1" - resolved "https://registry.yarnpkg.com/esprima/-/esprima-4.0.1.tgz#13b04cdb3e6c5d19df91ab6987a8695619b0aa71" - integrity sha512-eGuFFw7Upda+g4p+QHvnW0RyTX/SVeJBDM/gCtMARO0cLuT2HcEKnTPvhjV6aGeqrCB/sbNop0Kszm0jsaWU4A== - -esrecurse@^4.1.0: - version "4.3.0" - resolved "https://registry.yarnpkg.com/esrecurse/-/esrecurse-4.3.0.tgz#7ad7964d679abb28bee72cec63758b1c5d2c9921" - integrity sha512-KmfKL3b6G+RXvP8N1vr3Tq1kL/oCFgn2NYXEtqP8/L3pKapUA4G8cFVaoF3SU323CD4XypR/ffioHmkti6/Tag== - dependencies: - estraverse "^5.2.0" - -estraverse@^1.9.1: - version "1.9.3" - resolved "https://registry.yarnpkg.com/estraverse/-/estraverse-1.9.3.tgz#af67f2dc922582415950926091a4005d29c9bb44" - integrity sha1-r2fy3JIlgkFZUJJgkaQAXSnJu0Q= - -estraverse@^4.1.1, estraverse@^4.2.0: - version "4.3.0" - resolved "https://registry.yarnpkg.com/estraverse/-/estraverse-4.3.0.tgz#398ad3f3c5a24948be7725e83d11a7de28cdbd1d" - integrity sha512-39nnKffWz8xN1BU/2c79n9nB9HDzo0niYUqx6xyqUnyoAnQyyWpOTdZEeiCch8BBu515t4wp9ZmgVfVhn9EBpw== - -estraverse@^5.2.0: - version "5.2.0" - resolved "https://registry.yarnpkg.com/estraverse/-/estraverse-5.2.0.tgz#307df42547e6cc7324d3cf03c155d5cdb8c53880" - integrity sha512-BxbNGGNm0RyRYvUdHpIwv9IWzeM9XClbOxwoATuFdOE7ZE6wHL+HQ5T8hoPM+zHvmKzzsEqhgy0GrQ5X13afiQ== - -esutils@^2.0.2: - version "2.0.3" - resolved "https://registry.yarnpkg.com/esutils/-/esutils-2.0.3.tgz#74d2eb4de0b8da1293711910d50775b9b710ef64" - integrity sha512-kVscqXk4OCp68SZ0dkgEKVi6/8ij300KBWTJq32P/dYeWTSwK41WyTxalN1eRmA5Z9UU/LX9D7FWSmV9SAYx6g== - -etag@~1.8.1: - version "1.8.1" - resolved "https://registry.yarnpkg.com/etag/-/etag-1.8.1.tgz#41ae2eeb65efa62268aebfea83ac7d79299b0887" - integrity sha1-Qa4u62XvpiJorr/qg6x9eSmbCIc= - -eth-ens-namehash@2.0.8, eth-ens-namehash@^2.0.8: - version "2.0.8" - resolved "https://registry.yarnpkg.com/eth-ens-namehash/-/eth-ens-namehash-2.0.8.tgz#229ac46eca86d52e0c991e7cb2aef83ff0f68bcf" - integrity sha1-IprEbsqG1S4MmR58sq74P/D2i88= - dependencies: - idna-uts46-hx "^2.3.1" - js-sha3 "^0.5.7" - -eth-gas-reporter@^0.2.22: - version "0.2.22" - resolved "https://registry.yarnpkg.com/eth-gas-reporter/-/eth-gas-reporter-0.2.22.tgz#bbe91f5d7b22433d26f099eeb5b20118ced0e575" - integrity sha512-L1FlC792aTf3j/j+gGzSNlGrXKSxNPXQNk6TnV5NNZ2w3jnQCRyJjDl0zUo25Cq2t90IS5vGdbkwqFQK7Ce+kw== - dependencies: - "@ethersproject/abi" "^5.0.0-beta.146" - "@solidity-parser/parser" "^0.12.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-lib@0.2.7: - version "0.2.7" - resolved "https://registry.yarnpkg.com/eth-lib/-/eth-lib-0.2.7.tgz#2f93f17b1e23aec3759cd4a3fe20c1286a3fc1ca" - integrity sha1-L5Pxex4jrsN1nNSj/iDBKGo/wco= - dependencies: - bn.js "^4.11.6" - elliptic "^6.4.0" - xhr-request-promise "^0.1.2" - -eth-lib@0.2.8, eth-lib@^0.2.8: - version "0.2.8" - resolved "https://registry.yarnpkg.com/eth-lib/-/eth-lib-0.2.8.tgz#b194058bef4b220ad12ea497431d6cb6aa0623c8" - integrity sha512-ArJ7x1WcWOlSpzdoTBX8vkwlkSQ85CjjifSZtV4co64vWxSV8geWfPI9x4SVYu3DSxnX4yWFVTtGL+j9DUFLNw== - dependencies: - bn.js "^4.11.6" - elliptic "^6.4.0" - xhr-request-promise "^0.1.2" - -eth-lib@^0.1.26: - version "0.1.29" - resolved "https://registry.yarnpkg.com/eth-lib/-/eth-lib-0.1.29.tgz#0c11f5060d42da9f931eab6199084734f4dbd1d9" - integrity sha512-bfttrr3/7gG4E02HoWTDUcDDslN003OlOoBxk9virpAZQ1ja/jDgwkWB8QfJF7ojuEowrqy+lzp9VcJG7/k5bQ== - dependencies: - bn.js "^4.11.6" - elliptic "^6.4.0" - nano-json-stream-parser "^0.1.2" - servify "^0.1.12" - ws "^3.0.0" - xhr-request-promise "^0.1.2" - -ethereum-bloom-filters@^1.0.6: - version "1.0.6" - resolved "https://registry.yarnpkg.com/ethereum-bloom-filters/-/ethereum-bloom-filters-1.0.6.tgz#9cdebb3ec20de96ec4a434c6bad6ea5a513037aa" - integrity sha512-dE9CGNzgOOsdh7msZirvv8qjHtnHpvBlKe2647kM8v+yeF71IRso55jpojemvHV+jMjr48irPWxMRaHuOWzAFA== - dependencies: - js-sha3 "^0.8.0" - -ethereum-common@^0.0.18: - version "0.0.18" - resolved "https://registry.yarnpkg.com/ethereum-common/-/ethereum-common-0.0.18.tgz#2fdc3576f232903358976eb39da783213ff9523f" - integrity sha1-L9w1dvIykDNYl26znaeDIT/5Uj8= - -ethereum-cryptography@^0.1.3: - version "0.1.3" - resolved "https://registry.yarnpkg.com/ethereum-cryptography/-/ethereum-cryptography-0.1.3.tgz#8d6143cfc3d74bf79bbd8edecdf29e4ae20dd191" - integrity sha512-w8/4x1SGGzc+tO97TASLja6SLd3fRIK2tLVcV2Gx4IB21hE19atll5Cq9o3d0ZmAYC/8aw0ipieTSiekAea4SQ== - 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" - -ethereumjs-abi@^0.6.8: - version "0.6.8" - resolved "https://registry.yarnpkg.com/ethereumjs-abi/-/ethereumjs-abi-0.6.8.tgz#71bc152db099f70e62f108b7cdfca1b362c6fcae" - integrity sha512-Tx0r/iXI6r+lRsdvkFDlut0N08jWMnKRZ6Gkq+Nmw75lZe4e6o3EkSnkaBP5NF6+m5PTGAr9JP43N3LyeoglsA== - dependencies: - bn.js "^4.11.8" - ethereumjs-util "^6.0.0" - -ethereumjs-common@^1.3.2, ethereumjs-common@^1.5.0: - version "1.5.0" - resolved "https://registry.yarnpkg.com/ethereumjs-common/-/ethereumjs-common-1.5.0.tgz#d3e82fc7c47c0cef95047f431a99485abc9bb1cd" - integrity sha512-SZOjgK1356hIY7MRj3/ma5qtfr/4B5BL+G4rP/XSMYr2z1H5el4RX5GReYCKmQmYI/nSBmRnwrZ17IfHuG0viQ== - -ethereumjs-testrpc@^6.0.3: - version "6.0.3" - resolved "https://registry.yarnpkg.com/ethereumjs-testrpc/-/ethereumjs-testrpc-6.0.3.tgz#7a0b87bf3670f92f607f98fa6a78801d9741b124" - integrity sha512-lAxxsxDKK69Wuwqym2K49VpXtBvLEsXr1sryNG4AkvL5DomMdeCBbu3D87UEevKenLHBiT8GTjARwN6Yj039gA== - dependencies: - webpack "^3.0.0" - -ethereumjs-tx@^1.3.7: - version "1.3.7" - resolved "https://registry.yarnpkg.com/ethereumjs-tx/-/ethereumjs-tx-1.3.7.tgz#88323a2d875b10549b8347e09f4862b546f3d89a" - integrity sha512-wvLMxzt1RPhAQ9Yi3/HKZTn0FZYpnsmQdbKYfUUpi4j1SEIcbkd9tndVjcPrufY3V7j2IebOpC00Zp2P/Ay2kA== - dependencies: - ethereum-common "^0.0.18" - ethereumjs-util "^5.0.0" - -ethereumjs-tx@^2.1.1: - version "2.1.2" - resolved "https://registry.yarnpkg.com/ethereumjs-tx/-/ethereumjs-tx-2.1.2.tgz#5dfe7688bf177b45c9a23f86cf9104d47ea35fed" - integrity sha512-zZEK1onCeiORb0wyCXUvg94Ve5It/K6GD1K+26KfFKodiBiS6d9lfCXlUKGBBdQ+bv7Day+JK0tj1K+BeNFRAw== - dependencies: - ethereumjs-common "^1.5.0" - ethereumjs-util "^6.0.0" - -ethereumjs-util@6.2.0, ethereumjs-util@^6.0.0: - version "6.2.0" - resolved "https://registry.yarnpkg.com/ethereumjs-util/-/ethereumjs-util-6.2.0.tgz#23ec79b2488a7d041242f01e25f24e5ad0357960" - 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-util@6.2.1: - version "6.2.1" - resolved "https://registry.yarnpkg.com/ethereumjs-util/-/ethereumjs-util-6.2.1.tgz#fcb4e4dd5ceacb9d2305426ab1a5cd93e3163b69" - integrity sha512-W2Ktez4L01Vexijrm5EB6w7dg4n/TgpoYU4avuT5T3Vmnw/eCRtiBrJfQYS/DCSvDIOLn2k57GcHdeBcgVxAqw== - 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@^5.0.0: - version "5.2.0" - resolved "https://registry.yarnpkg.com/ethereumjs-util/-/ethereumjs-util-5.2.0.tgz#3e0c0d1741471acf1036052d048623dee54ad642" - integrity sha512-CJAKdI0wgMbQFLlLRtZKGcy/L6pzVRgelIZqRqNbuVFM3K9VEnyfbcvz0ncWMRNCe4kaHWjwRYQcYMucmwsnWA== - dependencies: - bn.js "^4.11.0" - create-hash "^1.1.2" - ethjs-util "^0.1.3" - keccak "^1.0.2" - rlp "^2.0.0" - safe-buffer "^5.1.1" - secp256k1 "^3.0.1" - -ethereumjs-util@^7.0.10, ethereumjs-util@^7.1.0: - version "7.1.0" - resolved "https://registry.yarnpkg.com/ethereumjs-util/-/ethereumjs-util-7.1.0.tgz#e2b43a30bfcdbcb432a4eb42bd5f2393209b3fd5" - integrity sha512-kR+vhu++mUDARrsMMhsjjzPduRVAeundLGXucGRHF3B4oEltOUspfgCVco4kckucj3FMlLaZHUl9n7/kdmr6Tw== - dependencies: - "@types/bn.js" "^5.1.0" - bn.js "^5.1.2" - create-hash "^1.1.2" - ethereum-cryptography "^0.1.3" - ethjs-util "0.1.6" - rlp "^2.2.4" - -ethers@4.0.0-beta.3: - version "4.0.0-beta.3" - resolved "https://registry.yarnpkg.com/ethers/-/ethers-4.0.0-beta.3.tgz#15bef14e57e94ecbeb7f9b39dd0a4bd435bc9066" - integrity sha512-YYPogooSknTwvHg3+Mv71gM/3Wcrx+ZpCzarBj3mqs9njjRkrOo2/eufzhHloOCo3JSoNI4TQJJ6yU5ABm3Uog== - dependencies: - "@types/node" "^10.3.2" - aes-js "3.0.0" - bn.js "^4.4.0" - elliptic "6.3.3" - hash.js "1.1.3" - js-sha3 "0.5.7" - scrypt-js "2.0.3" - setimmediate "1.0.4" - uuid "2.0.1" - xmlhttprequest "1.8.0" - -ethers@^4.0.20, ethers@^4.0.27, ethers@^4.0.32, ethers@^4.0.40: - version "4.0.45" - resolved "https://registry.yarnpkg.com/ethers/-/ethers-4.0.45.tgz#8d4cd764d7c7690836b583d4849203c225eb56e2" - integrity sha512-N/Wmc6Mw4pQO+Sss1HnKDCSS6KSCx0luoBMiPNq+1GbOaO3YaZOyplBEhj+NEoYsizZYODtkITg2oecPeNnidQ== - dependencies: - aes-js "3.0.0" - bn.js "^4.4.0" - elliptic "6.5.2" - hash.js "1.1.3" - js-sha3 "0.5.7" - scrypt-js "2.0.4" - setimmediate "1.0.4" - uuid "2.0.1" - xmlhttprequest "1.8.0" - -ethers@^5.0.13: - version "5.4.5" - resolved "https://registry.yarnpkg.com/ethers/-/ethers-5.4.5.tgz#cec133b9f5b514dc55e2561ee7aa7218c33affd7" - integrity sha512-PPZ6flOAj230sXEWf/r/It6ZZ5c7EOVWx+PU87Glkbg79OtT7pLE1WgL4MRdwx6iF7HzSOvUUI+8cAmcdzo12w== - dependencies: - "@ethersproject/abi" "5.4.0" - "@ethersproject/abstract-provider" "5.4.1" - "@ethersproject/abstract-signer" "5.4.1" - "@ethersproject/address" "5.4.0" - "@ethersproject/base64" "5.4.0" - "@ethersproject/basex" "5.4.0" - "@ethersproject/bignumber" "5.4.1" - "@ethersproject/bytes" "5.4.0" - "@ethersproject/constants" "5.4.0" - "@ethersproject/contracts" "5.4.1" - "@ethersproject/hash" "5.4.0" - "@ethersproject/hdnode" "5.4.0" - "@ethersproject/json-wallets" "5.4.0" - "@ethersproject/keccak256" "5.4.0" - "@ethersproject/logger" "5.4.0" - "@ethersproject/networks" "5.4.2" - "@ethersproject/pbkdf2" "5.4.0" - "@ethersproject/properties" "5.4.0" - "@ethersproject/providers" "5.4.4" - "@ethersproject/random" "5.4.0" - "@ethersproject/rlp" "5.4.0" - "@ethersproject/sha2" "5.4.0" - "@ethersproject/signing-key" "5.4.0" - "@ethersproject/solidity" "5.4.0" - "@ethersproject/strings" "5.4.0" - "@ethersproject/transactions" "5.4.0" - "@ethersproject/units" "5.4.0" - "@ethersproject/wallet" "5.4.0" - "@ethersproject/web" "5.4.0" - "@ethersproject/wordlists" "5.4.0" - -ethjs-unit@0.1.6, ethjs-unit@^0.1.6: - version "0.1.6" - resolved "https://registry.yarnpkg.com/ethjs-unit/-/ethjs-unit-0.1.6.tgz#c665921e476e87bce2a9d588a6fe0405b2c41699" - integrity sha1-xmWSHkduh7ziqdWIpv4EBbLEFpk= - dependencies: - bn.js "4.11.6" - number-to-bn "1.7.0" - -ethjs-util@0.1.6, ethjs-util@^0.1.3: - version "0.1.6" - resolved "https://registry.yarnpkg.com/ethjs-util/-/ethjs-util-0.1.6.tgz#f308b62f185f9fe6237132fb2a9818866a5cd536" - integrity sha512-CUnVOQq7gSpDHZVVrQW8ExxUETWrnrvXYvYz55wOU8Uj4VCgw56XC2B/fVqQN+f7gmrnRHSLVnFAwsCuNwji8w== - dependencies: - is-hex-prefixed "1.0.0" - strip-hex-prefix "1.0.0" - -event-emitter@^0.3.5, event-emitter@~0.3.5: - version "0.3.5" - resolved "https://registry.yarnpkg.com/event-emitter/-/event-emitter-0.3.5.tgz#df8c69eef1647923c7157b9ce83840610b02cc39" - integrity sha1-34xp7vFkeSPHFXuc6DhAYQsCzDk= - dependencies: - d "1" - es5-ext "~0.10.14" - -event-iterator@^1.0.0: - version "1.2.0" - resolved "https://registry.yarnpkg.com/event-iterator/-/event-iterator-1.2.0.tgz#2e71dc6ca56f1cf8ebcb2b9be7fdfd10acabbb76" - integrity sha512-Daq7YUl0Mv1i4QEgzGQlz0jrx7hUFNyLGbiF+Ap7NCMCjDLCCnolyj6s0TAc6HmrBziO5rNVHsPwGMp7KdRPvw== - -event-iterator@^2.0.0: - version "2.0.0" - resolved "https://registry.yarnpkg.com/event-iterator/-/event-iterator-2.0.0.tgz#10f06740cc1e9fd6bc575f334c2bc1ae9d2dbf62" - integrity sha512-KGft0ldl31BZVV//jj+IAIGCxkvvUkkON+ScH6zfoX+l+omX6001ggyRSpI0Io2Hlro0ThXotswCtfzS8UkIiQ== - -event-target-shim@^5.0.0: - version "5.0.1" - resolved "https://registry.yarnpkg.com/event-target-shim/-/event-target-shim-5.0.1.tgz#5d4d3ebdf9583d63a5333ce2deb7480ab2b05789" - integrity sha512-i/2XbnSz/uxRCU6+NdVJgKWDTM427+MqYbkQzD321DuCQJUqOuJKIA0IM2+W2xtYHdKOmZ4dR6fExsd4SXL+WQ== - -eventemitter3@3.1.0: - version "3.1.0" - resolved "https://registry.yarnpkg.com/eventemitter3/-/eventemitter3-3.1.0.tgz#090b4d6cdbd645ed10bf750d4b5407942d7ba163" - integrity sha512-ivIvhpq/Y0uSjcHDcOIccjmYjGLcP09MFGE7ysAwkAvkXfpZlC985pH2/ui64DKazbTW/4kN3yqozUxlXzI6cA== - -eventemitter3@3.1.2, eventemitter3@^3.1.0, eventemitter3@^3.1.2: - version "3.1.2" - resolved "https://registry.yarnpkg.com/eventemitter3/-/eventemitter3-3.1.2.tgz#2d3d48f9c346698fce83a85d7d664e98535df6e7" - integrity sha512-tvtQIeLVHjDkJYnzf2dgVMxfuSGJeM/7UCG17TT4EumTfNtF+0nebF/4zWOIkCreAbtNqhGEboB6BWrwqNaw4Q== - -eventemitter3@4.0.4: - version "4.0.4" - resolved "https://registry.yarnpkg.com/eventemitter3/-/eventemitter3-4.0.4.tgz#b5463ace635a083d018bdc7c917b4c5f10a85384" - integrity sha512-rlaVLnVxtxvoyLsQQFBx53YmXHDxRIzzTLbdfxqi4yocpSjAxXwkU0cScM5JgSKMqEhrZpnvQ2D9gjylR0AimQ== - -eventemitter3@^4.0.0: - version "4.0.0" - resolved "https://registry.yarnpkg.com/eventemitter3/-/eventemitter3-4.0.0.tgz#d65176163887ee59f386d64c82610b696a4a74eb" - integrity sha512-qerSRB0p+UDEssxTtm6EDKcE7W4OaoisfIMl4CngyEhjpYglocpNg6UEqCvemdGhosAsg4sO2dXJOdyBifPGCg== - -events@^3.0.0, events@^3.2.0, events@^3.3.0: - version "3.3.0" - resolved "https://registry.yarnpkg.com/events/-/events-3.3.0.tgz#31a95ad0a924e2d2c419a813aeb2c4e878ea7400" - integrity sha512-mQw+2fkQbALzQ7V0MY0IqdnXNOeTtP4r0lN9z7AAawCXgqea7bDii20AYrIBrFd/Hx0M2Ocz6S111CaFkUcb0Q== - -eventsource@1.0.7: - version "1.0.7" - resolved "https://registry.yarnpkg.com/eventsource/-/eventsource-1.0.7.tgz#8fbc72c93fcd34088090bc0a4e64f4b5cee6d8d0" - integrity sha512-4Ln17+vVT0k8aWq+t/bF5arcS3EpT9gYtW66EPacdj/mAFevznsnyoHLPy2BA8gbIQeIHoPsvwmfBftfcG//BQ== - dependencies: - original "^1.0.0" - -evp_bytestokey@^1.0.0, evp_bytestokey@^1.0.3: - version "1.0.3" - resolved "https://registry.yarnpkg.com/evp_bytestokey/-/evp_bytestokey-1.0.3.tgz#7fcbdb198dc71959432efe13842684e0525acb02" - integrity sha512-/f2Go4TognH/KvCISP7OUsHn85hT9nUkxxA9BEWxFn+Oj9o8ZNLm/40hdlgSLyuOimsrTKLUMEorQexp/aPQeA== - dependencies: - md5.js "^1.3.4" - safe-buffer "^5.1.1" - -execa@^0.7.0: - version "0.7.0" - resolved "https://registry.yarnpkg.com/execa/-/execa-0.7.0.tgz#944becd34cc41ee32a63a9faf27ad5a65fc59777" - integrity sha1-lEvs00zEHuMqY6n68nrVpl/Fl3c= - dependencies: - cross-spawn "^5.0.1" - get-stream "^3.0.0" - is-stream "^1.1.0" - npm-run-path "^2.0.0" - p-finally "^1.0.0" - signal-exit "^3.0.0" - strip-eof "^1.0.0" - -execa@^1.0.0: - version "1.0.0" - resolved "https://registry.yarnpkg.com/execa/-/execa-1.0.0.tgz#c6236a5bb4df6d6f15e88e7f017798216749ddd8" - integrity sha512-adbxcyWV46qiHyvSp50TKt05tB4tK3HcmF7/nxfAdhnox83seTDbwnaqKO4sXRy7roHAIFqJP/Rw/AuEbX61LA== - dependencies: - cross-spawn "^6.0.0" - get-stream "^4.0.0" - is-stream "^1.1.0" - npm-run-path "^2.0.0" - p-finally "^1.0.0" - signal-exit "^3.0.0" - strip-eof "^1.0.0" - -exit-on-epipe@~1.0.1: - version "1.0.1" - resolved "https://registry.yarnpkg.com/exit-on-epipe/-/exit-on-epipe-1.0.1.tgz#0bdd92e87d5285d267daa8171d0eb06159689692" - integrity sha512-h2z5mrROTxce56S+pnvAV890uu7ls7f1kEvVGJbw1OlFH3/mlJ5bkXu0KRyW94v37zzHPiUd55iLn3DA7TjWpw== - -expand-brackets@^0.1.4: - version "0.1.5" - resolved "https://registry.yarnpkg.com/expand-brackets/-/expand-brackets-0.1.5.tgz#df07284e342a807cd733ac5af72411e581d1177b" - integrity sha1-3wcoTjQqgHzXM6xa9yQR5YHRF3s= - dependencies: - is-posix-bracket "^0.1.0" - -expand-brackets@^2.1.4: - version "2.1.4" - resolved "https://registry.yarnpkg.com/expand-brackets/-/expand-brackets-2.1.4.tgz#b77735e315ce30f6b6eff0f83b04151a22449622" - integrity sha1-t3c14xXOMPa27/D4OwQVGiJEliI= - dependencies: - debug "^2.3.3" - define-property "^0.2.5" - extend-shallow "^2.0.1" - posix-character-classes "^0.1.0" - regex-not "^1.0.0" - snapdragon "^0.8.1" - to-regex "^3.0.1" - -expand-range@^1.8.1: - version "1.8.2" - resolved "https://registry.yarnpkg.com/expand-range/-/expand-range-1.8.2.tgz#a299effd335fe2721ebae8e257ec79644fc85337" - integrity sha1-opnv/TNf4nIeuujiV+x5ZE/IUzc= - dependencies: - fill-range "^2.1.0" - -expand-tilde@^2.0.0, expand-tilde@^2.0.2: - version "2.0.2" - resolved "https://registry.yarnpkg.com/expand-tilde/-/expand-tilde-2.0.2.tgz#97e801aa052df02454de46b02bf621642cdc8502" - integrity sha1-l+gBqgUt8CRU3kawK/YhZCzchQI= - dependencies: - homedir-polyfill "^1.0.1" - -express@^4.0.0, express@^4.14.0, express@^4.17.1: - version "4.17.1" - resolved "https://registry.yarnpkg.com/express/-/express-4.17.1.tgz#4491fc38605cf51f8629d39c2b5d026f98a4c134" - integrity sha512-mHJ9O79RqluphRrcw2X/GTh3k9tVv8YcoyY4Kkh4WDMUYKRZUq0h1o0w2rrrxBqM7VoeUVqgb27xlEMXTnYt4g== - dependencies: - accepts "~1.3.7" - array-flatten "1.1.1" - body-parser "1.19.0" - content-disposition "0.5.3" - content-type "~1.0.4" - cookie "0.4.0" - cookie-signature "1.0.6" - debug "2.6.9" - depd "~1.1.2" - encodeurl "~1.0.2" - escape-html "~1.0.3" - etag "~1.8.1" - finalhandler "~1.1.2" - fresh "0.5.2" - merge-descriptors "1.0.1" - methods "~1.1.2" - on-finished "~2.3.0" - parseurl "~1.3.3" - path-to-regexp "0.1.7" - proxy-addr "~2.0.5" - qs "6.7.0" - range-parser "~1.2.1" - safe-buffer "5.1.2" - send "0.17.1" - serve-static "1.14.1" - setprototypeof "1.1.1" - statuses "~1.5.0" - type-is "~1.6.18" - utils-merge "1.0.1" - vary "~1.1.2" - -ext@^1.1.2: - version "1.4.0" - resolved "https://registry.yarnpkg.com/ext/-/ext-1.4.0.tgz#89ae7a07158f79d35517882904324077e4379244" - integrity sha512-Key5NIsUxdqKg3vIsdw9dSuXpPCQ297y6wBjL30edxwPgt2E44WcWBZey/ZvUc6sERLTxKdyCu4gZFmUbk1Q7A== - dependencies: - type "^2.0.0" - -extend-shallow@^2.0.1: - version "2.0.1" - resolved "https://registry.yarnpkg.com/extend-shallow/-/extend-shallow-2.0.1.tgz#51af7d614ad9a9f610ea1bafbb989d6b1c56890f" - integrity sha1-Ua99YUrZqfYQ6huvu5idaxxWiQ8= - dependencies: - is-extendable "^0.1.0" - -extend-shallow@^3.0.0, extend-shallow@^3.0.2: - version "3.0.2" - resolved "https://registry.yarnpkg.com/extend-shallow/-/extend-shallow-3.0.2.tgz#26a71aaf073b39fb2127172746131c2704028db8" - integrity sha1-Jqcarwc7OfshJxcnRhMcJwQCjbg= - dependencies: - assign-symbols "^1.0.0" - is-extendable "^1.0.1" - -extend@^3.0.0, extend@~3.0.2: - version "3.0.2" - resolved "https://registry.yarnpkg.com/extend/-/extend-3.0.2.tgz#f8b1136b4071fbd8eb140aff858b1019ec2915fa" - integrity sha512-fjquC59cD7CyW6urNXK0FBufkZcoiGG80wTuPujX590cB5Ttln20E2UB4S/WARVqhXffZl2LNgS+gQdPIIim/g== - -extglob@^0.3.1: - version "0.3.2" - resolved "https://registry.yarnpkg.com/extglob/-/extglob-0.3.2.tgz#2e18ff3d2f49ab2765cec9023f011daa8d8349a1" - integrity sha1-Lhj/PS9JqydlzskCPwEdqo2DSaE= - dependencies: - is-extglob "^1.0.0" - -extglob@^2.0.4: - version "2.0.4" - resolved "https://registry.yarnpkg.com/extglob/-/extglob-2.0.4.tgz#ad00fe4dc612a9232e8718711dc5cb5ab0285543" - 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, extract-files@^9.0.0: - version "9.0.0" - resolved "https://registry.yarnpkg.com/extract-files/-/extract-files-9.0.0.tgz#8a7744f2437f81f5ed3250ed9f1550de902fe54a" - integrity sha512-CvdFfHkC95B4bBBk36hcEmvdR2awOdhhVUYH6S/zrVj3477zven/fJMYg7121h4T1xHZC+tetUpubpAhxwI7hQ== - -extsprintf@1.3.0: - version "1.3.0" - resolved "https://registry.yarnpkg.com/extsprintf/-/extsprintf-1.3.0.tgz#96918440e3041a7a414f8c52e3c574eb3c3e1e05" - integrity sha1-lpGEQOMEGnpBT4xS48V06zw+HgU= - -extsprintf@^1.2.0: - version "1.4.0" - resolved "https://registry.yarnpkg.com/extsprintf/-/extsprintf-1.4.0.tgz#e2689f8f356fad62cca65a3a91c5df5f9551692f" - integrity sha1-4mifjzVvrWLMplo6kcXfX5VRaS8= - -faker@^5.3.1: - version "5.4.0" - resolved "https://registry.yarnpkg.com/faker/-/faker-5.4.0.tgz#f18e55993c6887918182b003d163df14daeb3011" - integrity sha512-Y9n/Ky/xZx/Bj8DePvXspUYRtHl/rGQytoIT5LaxmNwSe3wWyOeOXb3lT6Dpipq240PVpeFaGKzScz/5fvff2g== - -fast-check@^2.12.1: - version "2.13.0" - resolved "https://registry.yarnpkg.com/fast-check/-/fast-check-2.13.0.tgz#92a50a6a39b58760d4b0b52b12f98f28a9f020f6" - integrity sha512-IOfzKm/SCA+jpUEgAfqAuxHYPmgtmpnnwljQmYPRGrqYczcTKApXKHza/SNxFxYkecWfZilYa0DJdBvqz1bcSw== - dependencies: - pure-rand "^4.1.1" - -fast-deep-equal@^3.1.1: - version "3.1.1" - resolved "https://registry.yarnpkg.com/fast-deep-equal/-/fast-deep-equal-3.1.1.tgz#545145077c501491e33b15ec408c294376e94ae4" - integrity sha512-8UEa58QDLauDNfpbrX55Q9jrGHThw2ZMdOky5Gl1CDtVeJDPVrG4Jxx1N8jw2gkWaff5UUuX1KJd+9zGe2B+ZA== - -fast-fifo@^1.0.0: - version "1.0.0" - resolved "https://registry.yarnpkg.com/fast-fifo/-/fast-fifo-1.0.0.tgz#9bc72e6860347bb045a876d1c5c0af11e9b984e7" - integrity sha512-4VEXmjxLj7sbs8J//cn2qhRap50dGzF5n8fjay8mau+Jn4hxSeR3xPFwxMaQq/pDaq7+KQk0PAbC2+nWDkJrmQ== - -fast-future@~1.0.2: - version "1.0.2" - resolved "https://registry.yarnpkg.com/fast-future/-/fast-future-1.0.2.tgz#8435a9aaa02d79248d17d704e76259301d99280a" - integrity sha1-hDWpqqAteSSNF9cE52JZMB2ZKAo= - -fast-glob@^3.0.3: - version "3.2.2" - resolved "https://registry.yarnpkg.com/fast-glob/-/fast-glob-3.2.2.tgz#ade1a9d91148965d4bf7c51f72e1ca662d32e63d" - integrity sha512-UDV82o4uQyljznxwMxyVRJgZZt3O5wENYojjzbaGEGZgeOxkLFf+V4cnUD+krzb2F72E18RhamkMZ7AdeggF7A== - dependencies: - "@nodelib/fs.stat" "^2.0.2" - "@nodelib/fs.walk" "^1.2.3" - glob-parent "^5.1.0" - merge2 "^1.3.0" - micromatch "^4.0.2" - picomatch "^2.2.1" - -fast-glob@^3.1.1: - version "3.2.5" - resolved "https://registry.yarnpkg.com/fast-glob/-/fast-glob-3.2.5.tgz#7939af2a656de79a4f1901903ee8adcaa7cb9661" - integrity sha512-2DtFcgT68wiTTiwZ2hNdJfcHNke9XOfnwmBRWXhmeKM8rF0TGwmC/Qto3S7RoZKp5cilZbxzO5iTNTQsJ+EeDg== - dependencies: - "@nodelib/fs.stat" "^2.0.2" - "@nodelib/fs.walk" "^1.2.3" - glob-parent "^5.1.0" - merge2 "^1.3.0" - micromatch "^4.0.2" - picomatch "^2.2.1" - -fast-json-stable-stringify@^2.0.0: - version "2.1.0" - resolved "https://registry.yarnpkg.com/fast-json-stable-stringify/-/fast-json-stable-stringify-2.1.0.tgz#874bf69c6f404c2b5d99c481341399fd55892633" - integrity sha512-lhd/wF+Lk98HZoTCtlVraHtfh5XYijIjalXck7saUtuanSDyLMxnHhSXEDJqHxD7msR8D0uCmqlkwjCV8xvwHw== - -fast-levenshtein@~2.0.6: - version "2.0.6" - resolved "https://registry.yarnpkg.com/fast-levenshtein/-/fast-levenshtein-2.0.6.tgz#3d8a5c66883a16a30ca8643e851f19baa7797917" - integrity sha1-PYpcZog6FqMMqGQ+hR8Zuqd5eRc= - -fast-sha256@^1.3.0: - version "1.3.0" - resolved "https://registry.yarnpkg.com/fast-sha256/-/fast-sha256-1.3.0.tgz#7916ba2054eeb255982608cccd0f6660c79b7ae6" - integrity sha512-n11RGP/lrWEFI/bWdygLxhI+pVeo1ZYIVwvvPkW7azl/rOy+F3HYRZ2K5zeE9mmkhQppyv9sQFx0JM9UabnpPQ== - -fastestsmallesttextencoderdecoder@^1.0.22: - version "1.0.22" - resolved "https://registry.yarnpkg.com/fastestsmallesttextencoderdecoder/-/fastestsmallesttextencoderdecoder-1.0.22.tgz#59b47e7b965f45258629cc6c127bf783281c5e93" - integrity sha512-Pb8d48e+oIuY4MaM64Cd7OW1gt4nxCHs7/ddPPZ/Ic3sg8yVGM7O9wDvZ7us6ScaUupzM+pfBolwtYhN1IxBIw== - -fastq@^1.6.0: - version "1.6.1" - resolved "https://registry.yarnpkg.com/fastq/-/fastq-1.6.1.tgz#4570c74f2ded173e71cf0beb08ac70bb85826791" - integrity sha512-mpIH5sKYueh3YyeJwqtVo8sORi0CgtmkVbK6kZStpQlZBYQuTzG2CZ7idSiJuA7bY0SFCWUc5WIs+oYumGCQNw== - dependencies: - reusify "^1.0.4" - -fb-watchman@^2.0.0: - version "2.0.1" - resolved "https://registry.yarnpkg.com/fb-watchman/-/fb-watchman-2.0.1.tgz#fc84fb39d2709cf3ff6d743706157bb5708a8a85" - integrity sha512-DkPJKQeY6kKwmuMretBhr7G6Vodr7bFwDYTXIkfG1gjvNpaxBTQV3PbXg6bR1c1UP4jPOX0jHUbbHANL9vRjVg== - dependencies: - bser "2.1.1" - -fbjs-css-vars@^1.0.0: - version "1.0.2" - resolved "https://registry.yarnpkg.com/fbjs-css-vars/-/fbjs-css-vars-1.0.2.tgz#216551136ae02fe255932c3ec8775f18e2c078b8" - integrity sha512-b2XGFAFdWZWg0phtAWLHCk836A1Xann+I+Dgd3Gk64MHKZO44FfoD1KxyvbSh0qZsIoXQGGlVztIY+oitJPpRQ== - -fbjs@^3.0.0: - version "3.0.0" - resolved "https://registry.yarnpkg.com/fbjs/-/fbjs-3.0.0.tgz#0907067fb3f57a78f45d95f1eacffcacd623c165" - integrity sha512-dJd4PiDOFuhe7vk4F80Mba83Vr2QuK86FoxtgPmzBqEJahncp+13YCmfoa53KHCo6OnlXLG7eeMWPfB5CrpVKg== - dependencies: - cross-fetch "^3.0.4" - fbjs-css-vars "^1.0.0" - loose-envify "^1.0.0" - object-assign "^4.1.0" - promise "^7.1.1" - setimmediate "^1.0.5" - ua-parser-js "^0.7.18" - -fd-slicer@~1.1.0: - version "1.1.0" - resolved "https://registry.yarnpkg.com/fd-slicer/-/fd-slicer-1.1.0.tgz#25c7c89cb1f9077f8891bbe61d8f390eae256f1e" - integrity sha1-JcfInLH5B3+IkbvmHY85Dq4lbx4= - dependencies: - pend "~1.2.0" - -fetch-cookie@0.10.1: - version "0.10.1" - resolved "https://registry.yarnpkg.com/fetch-cookie/-/fetch-cookie-0.10.1.tgz#5ea88f3d36950543c87997c27ae2aeafb4b5c4d4" - integrity sha512-beB+VEd4cNeVG1PY+ee74+PkuCQnik78pgLi5Ah/7qdUfov8IctU0vLUbBT8/10Ma5GMBeI4wtxhGrEfKNYs2g== - dependencies: - tough-cookie "^2.3.3 || ^3.0.1 || ^4.0.0" - -fetch-cookie@0.7.0: - version "0.7.0" - resolved "https://registry.yarnpkg.com/fetch-cookie/-/fetch-cookie-0.7.0.tgz#a6fc137ad8363aa89125864c6451b86ecb7de802" - integrity sha512-Mm5pGlT3agW6t71xVM7vMZPIvI7T4FaTuFW4jari6dVzYHFDb3WZZsGpN22r/o3XMdkM0E7sPd1EGeyVbH2Tgg== - dependencies: - es6-denodeify "^0.1.1" - tough-cookie "^2.3.1" - -file-type@^3.8.0: - version "3.9.0" - resolved "https://registry.yarnpkg.com/file-type/-/file-type-3.9.0.tgz#257a078384d1db8087bc449d107d52a52672b9e9" - integrity sha1-JXoHg4TR24CHvESdEH1SpSZyuek= - -file-type@^5.2.0: - version "5.2.0" - resolved "https://registry.yarnpkg.com/file-type/-/file-type-5.2.0.tgz#2ddbea7c73ffe36368dfae49dc338c058c2b8ad6" - integrity sha1-LdvqfHP/42No365J3DOMBYwritY= - -file-type@^6.1.0: - version "6.2.0" - resolved "https://registry.yarnpkg.com/file-type/-/file-type-6.2.0.tgz#e50cd75d356ffed4e306dc4f5bcf52a79903a919" - integrity sha512-YPcTBDV+2Tm0VqjybVd32MHdlEGAtuxS3VAYsumFokDSMG+ROT5wawGlnHDoz7bfMcMDt9hxuXvXwoKUx2fkOg== - -file-uri-to-path@1.0.0: - version "1.0.0" - resolved "https://registry.yarnpkg.com/file-uri-to-path/-/file-uri-to-path-1.0.0.tgz#553a7b8446ff6f684359c445f1e37a05dacc33dd" - integrity sha512-0Zt+s3L7Vf1biwWZ29aARiVYLx7iMGnEUl9x33fbB/j3jR81u/O2LbqK+Bm1CDSNDKVtJ/YjwY7TUd5SkeLQLw== - -filecoin.js@^0.0.5-alpha: - version "0.0.5-alpha" - resolved "https://registry.yarnpkg.com/filecoin.js/-/filecoin.js-0.0.5-alpha.tgz#cf6f14ae0715e88c290aeacfe813ff48a69442cd" - integrity sha512-xPrB86vDnTPfmvtN/rJSrhl4M77694ruOgNXd0+5gP67mgmCDhStLCqcr+zHIDRgDpraf7rY+ELbwjXZcQNdpQ== - dependencies: - "@ledgerhq/hw-transport-webusb" "^5.22.0" - "@nodefactory/filsnap-adapter" "^0.2.1" - "@nodefactory/filsnap-types" "^0.2.1" - "@zondax/filecoin-signing-tools" "github:Digital-MOB-Filecoin/filecoin-signing-tools-js" - bignumber.js "^9.0.0" - bitcore-lib "^8.22.2" - bitcore-mnemonic "^8.22.2" - btoa-lite "^1.0.0" - events "^3.2.0" - isomorphic-ws "^4.0.1" - node-fetch "^2.6.0" - rpc-websockets "^5.3.1" - scrypt-async "^2.0.1" - tweetnacl "^1.0.3" - tweetnacl-util "^0.15.1" - websocket "^1.0.31" - ws "^7.3.1" - -filename-regex@^2.0.0: - version "2.0.1" - resolved "https://registry.yarnpkg.com/filename-regex/-/filename-regex-2.0.1.tgz#c1c4b9bee3e09725ddb106b75c1e301fe2f18b26" - integrity sha1-wcS5vuPglyXdsQa3XB4wH+LxiyY= - -fill-range@^2.1.0: - version "2.2.4" - resolved "https://registry.yarnpkg.com/fill-range/-/fill-range-2.2.4.tgz#eb1e773abb056dcd8df2bfdf6af59b8b3a936565" - integrity sha512-cnrcCbj01+j2gTG921VZPnHbjmdAf8oQV/iGeV2kZxGSyfYjjTyY79ErsK1WJWMpw6DaApEX72binqJE+/d+5Q== - dependencies: - is-number "^2.1.0" - isobject "^2.0.0" - randomatic "^3.0.0" - repeat-element "^1.1.2" - repeat-string "^1.5.2" - -fill-range@^4.0.0: - version "4.0.0" - resolved "https://registry.yarnpkg.com/fill-range/-/fill-range-4.0.0.tgz#d544811d428f98eb06a63dc402d2403c328c38f7" - integrity sha1-1USBHUKPmOsGpj3EAtJAPDKMOPc= - 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.yarnpkg.com/fill-range/-/fill-range-7.0.1.tgz#1919a6a7c75fe38b2c7c77e5198535da9acdda40" - integrity sha512-qOo9F+dMUmC2Lcb4BbVvnKJxTPjCm+RRpe4gDuGrzkL7mEVl/djYSu2OdQ2Pa302N4oqkSg9ir6jaLWJ2USVpQ== - dependencies: - to-regex-range "^5.0.1" - -finalhandler@~1.1.2: - version "1.1.2" - resolved "https://registry.yarnpkg.com/finalhandler/-/finalhandler-1.1.2.tgz#b7e7d000ffd11938d0fdb053506f6ebabe9f587d" - integrity sha512-aAWcW57uxVNrQZqFXjITpW3sIUQmHGG3qSb9mUah9MgMC4NeWhNOlNjXEYq3HjRAvL6arUviZGGJsBg6z0zsWA== - 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" - -find-replace@^1.0.3: - version "1.0.3" - resolved "https://registry.yarnpkg.com/find-replace/-/find-replace-1.0.3.tgz#b88e7364d2d9c959559f388c66670d6130441fa0" - integrity sha1-uI5zZNLZyVlVnziMZmcNYTBEH6A= - dependencies: - array-back "^1.0.4" - test-value "^2.1.0" - -find-up@3.0.0, find-up@^3.0.0: - version "3.0.0" - resolved "https://registry.yarnpkg.com/find-up/-/find-up-3.0.0.tgz#49169f1d7993430646da61ecc5ae355c21c97b73" - integrity sha512-1yD6RmLI1XBfxugvORwlck6f75tYL+iR0jqwsOrOxMZyGYqUuDhJ0l4AXdO1iX/FTs9cBAMEk1gWSEx1kSbylg== - dependencies: - locate-path "^3.0.0" - -find-up@5.0.0: - version "5.0.0" - resolved "https://registry.yarnpkg.com/find-up/-/find-up-5.0.0.tgz#4c92819ecb7083561e4f4a240a86be5198f536fc" - integrity sha512-78/PXT1wlLLDgTzDs7sjq9hzz0vXD+zn+7wypEe4fXQxCmdmqfGsEPQxmiCSQI3ajFV91bVSsvNtrJRiW6nGng== - dependencies: - locate-path "^6.0.0" - path-exists "^4.0.0" - -find-up@^1.0.0: - version "1.1.2" - resolved "https://registry.yarnpkg.com/find-up/-/find-up-1.1.2.tgz#6b2e9822b1a2ce0a60ab64d610eccad53cb24d0f" - integrity sha1-ay6YIrGizgpgq2TWEOzK1TyyTQ8= - dependencies: - path-exists "^2.0.0" - pinkie-promise "^2.0.0" - -find-up@^2.0.0, find-up@^2.1.0: - version "2.1.0" - resolved "https://registry.yarnpkg.com/find-up/-/find-up-2.1.0.tgz#45d1b7e506c717ddd482775a2b77920a3c0c57a7" - integrity sha1-RdG35QbHF93UgndaK3eSCjwMV6c= - dependencies: - locate-path "^2.0.0" - -find-up@^4.1.0: - version "4.1.0" - resolved "https://registry.yarnpkg.com/find-up/-/find-up-4.1.0.tgz#97afe7d6cdc0bc5928584b7c8d7b16e8a9aa5d19" - integrity sha512-PpOwAdQ/YlXQ2vj8a3h8IipDuYRi3wceVQQGYWxNINccq40Anw7BlsEXCMbt1Zt+OLA6Fq9suIpIWD0OsnISlw== - dependencies: - locate-path "^5.0.0" - path-exists "^4.0.0" - -find-yarn-workspace-root@^2.0.0: - version "2.0.0" - resolved "https://registry.yarnpkg.com/find-yarn-workspace-root/-/find-yarn-workspace-root-2.0.0.tgz#f47fb8d239c900eb78179aa81b66673eac88f7bd" - integrity sha512-1IMnbjt4KzsQfnhnzNd8wUEgXZ44IzZaZmnLYx7D5FZlaHt2gW20Cri8Q+E/t5tIj4+epTBub+2Zxu/vNILzqQ== - dependencies: - micromatch "^4.0.2" - -first-chunk-stream@^1.0.0: - version "1.0.0" - resolved "https://registry.yarnpkg.com/first-chunk-stream/-/first-chunk-stream-1.0.0.tgz#59bfb50cd905f60d7c394cd3d9acaab4e6ad934e" - integrity sha1-Wb+1DNkF9g18OUzT2ayqtOatk04= - -flat@^4.1.0: - version "4.1.1" - resolved "https://registry.yarnpkg.com/flat/-/flat-4.1.1.tgz#a392059cc382881ff98642f5da4dde0a959f309b" - integrity sha512-FmTtBsHskrU6FJ2VxCnsDb84wu9zhmO3cUX2kGFb5tuwhfXxGciiT0oRY+cck35QmG+NmGh5eLz6lLCpWTqwpA== - dependencies: - is-buffer "~2.0.3" - -follow-redirects@1.5.10: - version "1.5.10" - resolved "https://registry.yarnpkg.com/follow-redirects/-/follow-redirects-1.5.10.tgz#7b7a9f9aea2fdff36786a94ff643ed07f4ff5e2a" - integrity sha512-0V5l4Cizzvqt5D44aTXbFZz+FtyXV1vrDN6qrelxtfYQKW0KO0W2T/hkE8xvGa/540LkZlkaUjO4ailYTFtHVQ== - dependencies: - debug "=3.1.0" - -follow-redirects@^1.10.0: - version "1.14.2" - resolved "https://registry.yarnpkg.com/follow-redirects/-/follow-redirects-1.14.2.tgz#cecb825047c00f5e66b142f90fed4f515dec789b" - integrity sha512-yLR6WaE2lbF0x4K2qE2p9PEXKLDjUjnR/xmjS3wHAYxtlsI9MLLBJUZirAHKzUZDGLxje7w/cXR49WOUo4rbsA== - -for-each@^0.3.3: - version "0.3.3" - resolved "https://registry.yarnpkg.com/for-each/-/for-each-0.3.3.tgz#69b447e88a0a5d32c3e7084f3f1710034b21376e" - integrity sha512-jqYfLp7mo9vIyQf8ykW2v7A+2N4QjeCeI5+Dz9XraiO1ign81wjiH7Fb9vSOWvQfNtmSa4H2RoQTrrXivdUZmw== - dependencies: - is-callable "^1.1.3" - -for-in@^1.0.1, for-in@^1.0.2: - version "1.0.2" - resolved "https://registry.yarnpkg.com/for-in/-/for-in-1.0.2.tgz#81068d295a8142ec0ac726c6e2200c30fb6d5e80" - integrity sha1-gQaNKVqBQuwKxybG4iAMMPttXoA= - -for-own@^0.1.4: - version "0.1.5" - resolved "https://registry.yarnpkg.com/for-own/-/for-own-0.1.5.tgz#5265c681a4f294dabbf17c9509b6763aa84510ce" - integrity sha1-UmXGgaTylNq78XyVCbZ2OqhFEM4= - dependencies: - for-in "^1.0.1" - -foreach@^2.0.4, foreach@^2.0.5: - version "2.0.5" - resolved "https://registry.yarnpkg.com/foreach/-/foreach-2.0.5.tgz#0bee005018aeb260d0a3af3ae658dd0136ec1b99" - integrity sha1-C+4AUBiusmDQo6865ljdATbsG5k= - -forever-agent@~0.6.1: - version "0.6.1" - resolved "https://registry.yarnpkg.com/forever-agent/-/forever-agent-0.6.1.tgz#fbc71f0c41adeb37f96c577ad1ed42d8fdacca91" - integrity sha1-+8cfDEGt6zf5bFd60e1C2P2sypE= - -form-data@3.0.0: - version "3.0.0" - resolved "https://registry.yarnpkg.com/form-data/-/form-data-3.0.0.tgz#31b7e39c85f1355b7139ee0c647cf0de7f83c682" - integrity sha512-CKMFDglpbMi6PyN+brwB9Q/GOw0eAnsrEZDgcsH5Krhz5Od/haKHAX0NmQfha2zPPz0JpWzA7GJHGSnvCRLWsg== - 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.yarnpkg.com/form-data/-/form-data-4.0.0.tgz#93919daeaf361ee529584b9b31664dc12c9fa452" - integrity sha512-ETEklSGi5t0QMZuiXoA/Q6vcnxcLQP5vdugSpuAyi6SVGi2clPPp+xgEhuMaHC+zGgn31Kd235W35f7Hykkaww== - dependencies: - asynckit "^0.4.0" - combined-stream "^1.0.8" - mime-types "^2.1.12" - -form-data@^2.2.0: - version "2.5.1" - resolved "https://registry.yarnpkg.com/form-data/-/form-data-2.5.1.tgz#f2cbec57b5e59e23716e128fe44d4e5dd23895f4" - 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.yarnpkg.com/form-data/-/form-data-3.0.1.tgz#ebd53791b78356a99af9a300d4282c4d5eb9755f" - integrity sha512-RHkBKtLWUVwd7SqRIvCZMEvAMoGUp0XU+seQiZejj0COz3RI3hWP4sCv3gZWWLjJTd7rGwcsF5eKZGii0r/hbg== - dependencies: - asynckit "^0.4.0" - combined-stream "^1.0.8" - mime-types "^2.1.12" - -form-data@~2.3.2: - version "2.3.3" - resolved "https://registry.yarnpkg.com/form-data/-/form-data-2.3.3.tgz#dcce52c05f644f298c6a7ab936bd724ceffbf3a6" - integrity sha512-1lLKB2Mu3aGP1Q/2eCOx0fNbRMe7XdwktwOruhfqqd0rIJWwN4Dh+E3hrPSlDCXnSR7UtZ1N38rVXm+6+MEhJQ== - dependencies: - asynckit "^0.4.0" - combined-stream "^1.0.6" - mime-types "^2.1.12" - -forwarded@~0.1.2: - version "0.1.2" - resolved "https://registry.yarnpkg.com/forwarded/-/forwarded-0.1.2.tgz#98c23dab1175657b8c0573e8ceccd91b0ff18c84" - integrity sha1-mMI9qxF1ZXuMBXPozszZGw/xjIQ= - -fragment-cache@^0.2.1: - version "0.2.1" - resolved "https://registry.yarnpkg.com/fragment-cache/-/fragment-cache-0.2.1.tgz#4290fad27f13e89be7f33799c6bc5a0abfff0d19" - integrity sha1-QpD60n8T6Jvn8zeZxrxaCr//DRk= - dependencies: - map-cache "^0.2.2" - -fresh@0.5.2: - version "0.5.2" - resolved "https://registry.yarnpkg.com/fresh/-/fresh-0.5.2.tgz#3d8cadd90d976569fa835ab1f8e4b23a105605a7" - integrity sha1-PYyt2Q2XZWn6g1qx+OSyOhBWBac= - -fs-capacitor@^2.0.4: - version "2.0.4" - resolved "https://registry.yarnpkg.com/fs-capacitor/-/fs-capacitor-2.0.4.tgz#5a22e72d40ae5078b4fe64fe4d08c0d3fc88ad3c" - integrity sha512-8S4f4WsCryNw2mJJchi46YgB6CR5Ze+4L1h8ewl9tEpL4SJ3ZO+c/bS4BWhB8bK+O3TMqhuZarTitd0S0eh2pA== - -fs-capacitor@^6.1.0: - version "6.2.0" - resolved "https://registry.yarnpkg.com/fs-capacitor/-/fs-capacitor-6.2.0.tgz#fa79ac6576629163cb84561995602d8999afb7f5" - integrity sha512-nKcE1UduoSKX27NSZlg879LdQc94OtbOsEmKMN2MBNudXREvijRKx2GEBsTMTfws+BrbkJoEuynbGSVRSpauvw== - -fs-constants@^1.0.0: - version "1.0.0" - resolved "https://registry.yarnpkg.com/fs-constants/-/fs-constants-1.0.0.tgz#6be0de9be998ce16af8afc24497b9ee9b7ccd9ad" - integrity sha512-y6OAwoSIf7FyjMIv94u+b5rdheZEjzR63GTyZJm5qh4Bi+2YgwLCcI/fPFZkL5PSixOt6ZNKm+w+Hfp/Bciwow== - -fs-extra@5.0.0: - version "5.0.0" - resolved "https://registry.yarnpkg.com/fs-extra/-/fs-extra-5.0.0.tgz#414d0110cdd06705734d055652c5411260c31abd" - integrity sha512-66Pm4RYbjzdyeuqudYqhFiNBbCIuI9kgRqLPSHIlXHidW8NIQtVdkM1yeZ4lXwuhbTETv3EUGMNHAAw6hiundQ== - dependencies: - graceful-fs "^4.1.2" - jsonfile "^4.0.0" - universalify "^0.1.0" - -fs-extra@^0.30.0: - version "0.30.0" - resolved "https://registry.yarnpkg.com/fs-extra/-/fs-extra-0.30.0.tgz#f233ffcc08d4da7d432daa449776989db1df93f0" - integrity sha1-8jP/zAjU2n1DLapEl3aYnbHfk/A= - 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@^4.0.2: - version "4.0.3" - resolved "https://registry.yarnpkg.com/fs-extra/-/fs-extra-4.0.3.tgz#0d852122e5bc5beb453fb028e9c0c9bf36340c94" - integrity sha512-q6rbdDd1o2mAnQreO7YADIxf/Whx4AHBiRf6d+/cVT8h44ss+lHgxf1FemcqDnQt9X3ct4McHr+JMGlYSsK7Cg== - dependencies: - graceful-fs "^4.1.2" - jsonfile "^4.0.0" - universalify "^0.1.0" - -fs-extra@^7.0.0, fs-extra@^7.0.1: - version "7.0.1" - resolved "https://registry.yarnpkg.com/fs-extra/-/fs-extra-7.0.1.tgz#4f189c44aa123b895f722804f55ea23eadc348e9" - integrity sha512-YJDaCJZEnBmcbw13fvdAM9AwNOJwOzrE4pqMqBq5nFiEqXUqHwlK4B+3pUw6JNvfSPtX05xFHtYy/1ni01eGCw== - dependencies: - graceful-fs "^4.1.2" - jsonfile "^4.0.0" - universalify "^0.1.0" - -fs-extra@^8.0.1, fs-extra@^8.1.0: - version "8.1.0" - resolved "https://registry.yarnpkg.com/fs-extra/-/fs-extra-8.1.0.tgz#49d43c45a88cd9677668cb7be1b46efdb8d2e1c0" - integrity sha512-yhlQgA6mnOJUKOsRUFsgJdQCvkKhcz8tlZG5HBQfReYZy46OwLcY+Zia0mtdHsOo9y/hP+CxMN0TU9QxoOtG4g== - dependencies: - graceful-fs "^4.2.0" - jsonfile "^4.0.0" - universalify "^0.1.0" - -fs-extra@^9.0.1, fs-extra@^9.1.0: - version "9.1.0" - resolved "https://registry.yarnpkg.com/fs-extra/-/fs-extra-9.1.0.tgz#5954460c764a8da2094ba3554bf839e6b9a7c86d" - integrity sha512-hcg3ZmepS30/7BSFqRvoo3DOMQu7IjqxO5nCDt+zM9XWjb33Wg7ziNT+Qvqbuc3+gWpzO02JubVyk2G4Zvo1OQ== - dependencies: - at-least-node "^1.0.0" - graceful-fs "^4.2.0" - jsonfile "^6.0.1" - universalify "^2.0.0" - -fs-minipass@^1.2.5: - version "1.2.7" - resolved "https://registry.yarnpkg.com/fs-minipass/-/fs-minipass-1.2.7.tgz#ccff8570841e7fe4265693da88936c55aed7f7c7" - integrity sha512-GWSSJGFy4e9GUeCcbIkED+bgAoFyj7XF1mV8rma3QW4NIqX9Kyx79N/PF61H5udOV3aY1IaMLs6pGbH71nlCTA== - dependencies: - minipass "^2.6.0" - -fs-readdir-recursive@^1.1.0: - version "1.1.0" - resolved "https://registry.yarnpkg.com/fs-readdir-recursive/-/fs-readdir-recursive-1.1.0.tgz#e32fc030a2ccee44a6b5371308da54be0b397d27" - integrity sha512-GNanXlVr2pf02+sPN40XN8HG+ePaNcvM0q5mZBd668Obwb0yD5GiUbZOFgwn8kGMY6I3mdyDJzieUy3PTYyTRA== - -fs.realpath@^1.0.0: - version "1.0.0" - resolved "https://registry.yarnpkg.com/fs.realpath/-/fs.realpath-1.0.0.tgz#1504ad2523158caa40db4a2787cb01411994ea4f" - integrity sha1-FQStJSMVjKpA20onh8sBQRmU6k8= - -fsevents@^1.2.7: - version "1.2.13" - resolved "https://registry.yarnpkg.com/fsevents/-/fsevents-1.2.13.tgz#f325cb0455592428bcf11b383370ef70e3bfcc38" - integrity sha512-oWb1Z6mkHIskLzEJ/XWX0srkpkTQ7vaopMQkyaEIoq0fmtFVxOthb8cCxeT+p3ynTdkk/RZwbgG4brR5BeWECw== - dependencies: - bindings "^1.5.0" - nan "^2.12.1" - -fsevents@~2.1.1, fsevents@~2.1.2: - version "2.1.3" - resolved "https://registry.yarnpkg.com/fsevents/-/fsevents-2.1.3.tgz#fb738703ae8d2f9fe900c33836ddebee8b97f23e" - integrity sha512-Auw9a4AxqWpa9GUfj370BMPzzyncfBABW8Mab7BGWBYDj4Isgq+cDKtx0i6u9jcX9pQDnswsaaOTgTmA5pEjuQ== - -fsevents@~2.3.2: - version "2.3.2" - resolved "https://registry.yarnpkg.com/fsevents/-/fsevents-2.3.2.tgz#8a526f78b8fdf4623b709e0b975c52c24c02fd1a" - integrity sha512-xiqMQR4xAeHTuB9uWm+fFRcIOgKBMiOBP+eXiyT7jsgVCq1bkVygt00oASowB7EdtpOHaaPgKt812P9ab+DDKA== - -function-bind@^1.1.1: - version "1.1.1" - resolved "https://registry.yarnpkg.com/function-bind/-/function-bind-1.1.1.tgz#a56899d3ea3c9bab874bb9773b7c5ede92f4895d" - integrity sha512-yIovAzMX49sF8Yl58fSCWJ5svSLuaibPxXQJFLmBObTuCr0Mf1KiPopGM9NiFjiYBCbfaa2Fh6breQ6ANVTI0A== - -functional-red-black-tree@^1.0.1: - version "1.0.1" - resolved "https://registry.yarnpkg.com/functional-red-black-tree/-/functional-red-black-tree-1.0.1.tgz#1b0ab3bd553b2a0d6399d29c0e3ea0b252078327" - integrity sha1-GwqzvVU7Kg1jmdKcDj6gslIHgyc= - -ganache-cli@^6.1.0, ganache-cli@^6.11.0, ganache-cli@^6.12.2: - version "6.12.2" - resolved "https://registry.yarnpkg.com/ganache-cli/-/ganache-cli-6.12.2.tgz#c0920f7db0d4ac062ffe2375cb004089806f627a" - integrity sha512-bnmwnJDBDsOWBUP8E/BExWf85TsdDEFelQSzihSJm9VChVO1SHp94YXLP5BlA4j/OTxp0wR4R1Tje9OHOuAJVw== - dependencies: - ethereumjs-util "6.2.1" - source-map-support "0.5.12" - yargs "13.2.4" - -gauge@~2.7.3: - version "2.7.4" - resolved "https://registry.yarnpkg.com/gauge/-/gauge-2.7.4.tgz#2c03405c7538c39d7eb37b317022e325fb018bf7" - integrity sha1-LANAXHU4w51+s3sxcCLjJfsBi/c= - dependencies: - aproba "^1.0.3" - console-control-strings "^1.0.0" - has-unicode "^2.0.0" - object-assign "^4.1.0" - signal-exit "^3.0.0" - string-width "^1.0.1" - strip-ansi "^3.0.1" - wide-align "^1.1.0" - -gensync@^1.0.0-beta.2: - version "1.0.0-beta.2" - resolved "https://registry.yarnpkg.com/gensync/-/gensync-1.0.0-beta.2.tgz#32a6ee76c3d7f52d46b2b1ae5d93fea8580a25e0" - integrity sha512-3hN7NaskYvMDLQY55gnW3NQ+mesEAepTqlg+VEbj7zzqEMBVNhzcGYYeqFo/TlYz6eQiFcp1HcsCZO+nGgS8zg== - -get-caller-file@^1.0.1: - version "1.0.3" - resolved "https://registry.yarnpkg.com/get-caller-file/-/get-caller-file-1.0.3.tgz#f978fa4c90d1dfe7ff2d6beda2a515e713bdcf4a" - integrity sha512-3t6rVToeoZfYSGd8YoLFR2DJkiQrIiUrGcjvFX2mDw3bn6k2OtwHN0TNCLbBO+w8qTvimhDkv+LSscbJY1vE6w== - -get-caller-file@^2.0.1: - version "2.0.5" - resolved "https://registry.yarnpkg.com/get-caller-file/-/get-caller-file-2.0.5.tgz#4f94412a82db32f36e3b0b9741f8a97feb031f7e" - integrity sha512-DyFP3BM/3YHTQOCUL/w0OZHR0lpKeGrxotcHWcqNEdnltqFwXVfhEBQ94eIo34AfQpo0rGki4cyIiftY06h2Fg== - -get-func-name@^2.0.0: - version "2.0.0" - resolved "https://registry.yarnpkg.com/get-func-name/-/get-func-name-2.0.0.tgz#ead774abee72e20409433a066366023dd6887a41" - integrity sha1-6td0q+5y4gQJQzoGY2YCPdaIekE= - -get-installed-path@^2.0.3: - version "2.1.1" - resolved "https://registry.yarnpkg.com/get-installed-path/-/get-installed-path-2.1.1.tgz#a1f33dc6b8af542c9331084e8edbe37fe2634152" - integrity sha512-Qkn9eq6tW5/q9BDVdMpB8tOHljX9OSP0jRC5TRNVA4qRc839t4g8KQaR8t0Uv0EFVL0MlyG7m/ofjEgAROtYsA== - dependencies: - global-modules "1.0.0" - -get-installed-path@^4.0.8: - version "4.0.8" - resolved "https://registry.yarnpkg.com/get-installed-path/-/get-installed-path-4.0.8.tgz#a4fee849f5f327c12c551bb37477acd5151e5f7d" - integrity sha512-PmANK1xElIHlHH2tXfOoTnSDUjX1X3GvKK6ZyLbUnSCCn1pADwu67eVWttuPzJWrXDDT2MfO6uAaKILOFfitmA== - dependencies: - global-modules "1.0.0" - -get-intrinsic@^1.0.2, get-intrinsic@^1.1.0, get-intrinsic@^1.1.1: - version "1.1.1" - resolved "https://registry.yarnpkg.com/get-intrinsic/-/get-intrinsic-1.1.1.tgz#15f59f376f855c446963948f0d24cd3637b4abc6" - integrity sha512-kWZrnVM42QCiEA2Ig1bG8zjoIMOgxWwYCEeNdwY6Tv/cOSeGpcoX4pXHfKUxNKVoArnrEr2e9srnAxxGIraS9Q== - dependencies: - function-bind "^1.1.1" - has "^1.0.3" - has-symbols "^1.0.1" - -get-iterator@^1.0.2: - version "1.0.2" - resolved "https://registry.yarnpkg.com/get-iterator/-/get-iterator-1.0.2.tgz#cd747c02b4c084461fac14f48f6b45a80ed25c82" - integrity sha512-v+dm9bNVfOYsY1OrhaCrmyOcYoSeVvbt+hHZ0Au+T+p1y+0Uyj9aMaGIeUTT6xdpRbWzDeYKvfOslPhggQMcsg== - -get-params@^0.1.2: - version "0.1.2" - resolved "https://registry.yarnpkg.com/get-params/-/get-params-0.1.2.tgz#bae0dfaba588a0c60d7834c0d8dc2ff60eeef2fe" - integrity sha1-uuDfq6WIoMYNeDTA2Nwv9g7u8v4= - -get-port@^3.1.0: - version "3.2.0" - resolved "https://registry.yarnpkg.com/get-port/-/get-port-3.2.0.tgz#dd7ce7de187c06c8bf353796ac71e099f0980ebc" - integrity sha1-3Xzn3hh8Bsi/NTeWrHHgmfCYDrw= - -get-prototype-of@0.0.0: - version "0.0.0" - resolved "https://registry.yarnpkg.com/get-prototype-of/-/get-prototype-of-0.0.0.tgz#98772bd10716d16deb4b322516c469efca28ac44" - integrity sha1-mHcr0QcW0W3rSzIlFsRp78oorEQ= - -get-stream@^2.2.0: - version "2.3.1" - resolved "https://registry.yarnpkg.com/get-stream/-/get-stream-2.3.1.tgz#5f38f93f346009666ee0150a054167f91bdd95de" - integrity sha1-Xzj5PzRgCWZu4BUKBUFn+Rvdld4= - dependencies: - object-assign "^4.0.1" - pinkie-promise "^2.0.0" - -get-stream@^3.0.0: - version "3.0.0" - resolved "https://registry.yarnpkg.com/get-stream/-/get-stream-3.0.0.tgz#8e943d1358dc37555054ecbe2edb05aa174ede14" - integrity sha1-jpQ9E1jcN1VQVOy+LtsFqhdO3hQ= - -get-stream@^4.0.0, get-stream@^4.1.0: - version "4.1.0" - resolved "https://registry.yarnpkg.com/get-stream/-/get-stream-4.1.0.tgz#c1b255575f3dc21d59bfc79cd3d2b46b1c3a54b5" - integrity sha512-GMat4EJ5161kIy2HevLlr4luNjBgvmj413KaQA7jt4V8B4RDsfpHk7WQ9GVqfYyyx8OS/L66Kox+rJRNklLK7w== - dependencies: - pump "^3.0.0" - -get-stream@^5.1.0: - version "5.1.0" - resolved "https://registry.yarnpkg.com/get-stream/-/get-stream-5.1.0.tgz#01203cdc92597f9b909067c3e656cc1f4d3c4dc9" - integrity sha512-EXr1FOzrzTfGeL0gQdeFEvOMm2mzMOglyiOXSTpPC+iAjAKftbr3jpCMWynogwYnM+eSj9sHGc6wjIcDvYiygw== - dependencies: - pump "^3.0.0" - -get-value@^2.0.3, get-value@^2.0.6: - version "2.0.6" - resolved "https://registry.yarnpkg.com/get-value/-/get-value-2.0.6.tgz#dc15ca1c672387ca76bd37ac0a395ba2042a2c28" - integrity sha1-3BXKHGcjh8p2vTesCjlbogQqLCg= - -getpass@^0.1.1: - version "0.1.7" - resolved "https://registry.yarnpkg.com/getpass/-/getpass-0.1.7.tgz#5eff8e3e684d569ae4cb2b1282604e8ba62149fa" - integrity sha1-Xv+OPmhNVprkyysSgmBOi6YhSfo= - dependencies: - assert-plus "^1.0.0" - -ghost-testrpc@^0.0.2: - version "0.0.2" - resolved "https://registry.yarnpkg.com/ghost-testrpc/-/ghost-testrpc-0.0.2.tgz#c4de9557b1d1ae7b2d20bbe474a91378ca90ce92" - integrity sha512-i08dAEgJ2g8z5buJIrCTduwPIhih3DP+hOCTyyryikfV8T0bNvHnGXO67i0DD1H4GBDETTclPy9njZbfluQYrQ== - dependencies: - chalk "^2.4.2" - node-emoji "^1.10.0" - -glob-base@^0.3.0: - version "0.3.0" - resolved "https://registry.yarnpkg.com/glob-base/-/glob-base-0.3.0.tgz#dbb164f6221b1c0b1ccf82aea328b497df0ea3c4" - integrity sha1-27Fk9iIbHAscz4Kuoyi0l98Oo8Q= - dependencies: - glob-parent "^2.0.0" - is-glob "^2.0.0" - -glob-parent@^2.0.0: - version "2.0.0" - resolved "https://registry.yarnpkg.com/glob-parent/-/glob-parent-2.0.0.tgz#81383d72db054fcccf5336daa902f182f6edbb28" - integrity sha1-gTg9ctsFT8zPUzbaqQLxgvbtuyg= - dependencies: - is-glob "^2.0.0" - -glob-parent@^3.0.0, glob-parent@^3.1.0: - version "3.1.0" - resolved "https://registry.yarnpkg.com/glob-parent/-/glob-parent-3.1.0.tgz#9e6af6299d8d3bd2bd40430832bd113df906c5ae" - integrity sha1-nmr2KZ2NO9K9QEMIMr0RPfkGxa4= - dependencies: - is-glob "^3.1.0" - path-dirname "^1.0.0" - -glob-parent@^5.1.0: - version "5.1.0" - resolved "https://registry.yarnpkg.com/glob-parent/-/glob-parent-5.1.0.tgz#5f4c1d1e748d30cd73ad2944b3577a81b081e8c2" - integrity sha512-qjtRgnIVmOfnKUE3NJAQEdk+lKrxfw8t5ke7SXtfMTHcjsBfOfWXCQfdb30zfDoZQ2IRSIiidmjtbHZPZ++Ihw== - dependencies: - is-glob "^4.0.1" - -glob-parent@~5.1.0, glob-parent@~5.1.2: - version "5.1.2" - resolved "https://registry.yarnpkg.com/glob-parent/-/glob-parent-5.1.2.tgz#869832c58034fe68a4093c17dc15e8340d8401c4" - integrity sha512-AOIgSQCepiJYwP3ARnGx+5VnTu2HBYdzbGP45eLw1vr3zB3vZLeyed1sC9hnbcOc9/SrMyM5RPQrkGz4aS9Zow== - dependencies: - is-glob "^4.0.1" - -glob-stream@^5.3.2: - version "5.3.5" - resolved "https://registry.yarnpkg.com/glob-stream/-/glob-stream-5.3.5.tgz#a55665a9a8ccdc41915a87c701e32d4e016fad22" - integrity sha1-pVZlqajM3EGRWofHAeMtTgFvrSI= - dependencies: - extend "^3.0.0" - glob "^5.0.3" - glob-parent "^3.0.0" - micromatch "^2.3.7" - ordered-read-streams "^0.3.0" - through2 "^0.6.0" - to-absolute-glob "^0.1.1" - unique-stream "^2.0.2" - -glob@7.1.3: - version "7.1.3" - resolved "https://registry.yarnpkg.com/glob/-/glob-7.1.3.tgz#3960832d3f1574108342dafd3a67b332c0969df1" - integrity sha512-vcfuiIxogLV4DlGBHIUOwI0IbrJ8HWPc4MU7HzviGeNho/UJDfi6B5p3sHeWIQ0KGIU0Jpxi5ZHxemQfLkkAwQ== - dependencies: - fs.realpath "^1.0.0" - inflight "^1.0.4" - inherits "2" - minimatch "^3.0.4" - once "^1.3.0" - path-is-absolute "^1.0.0" - -glob@7.1.6, glob@^7.0.0, glob@^7.1.1, glob@^7.1.2, glob@^7.1.3: - version "7.1.6" - resolved "https://registry.yarnpkg.com/glob/-/glob-7.1.6.tgz#141f33b81a7c2492e125594307480c46679278a6" - integrity sha512-LwaxwyZ72Lk7vZINtNNrywX0ZuLyStrdDtabefZKAY5ZGJhVtgdznluResxNmPitE0SAO+O26sWTHeKSI2wMBA== - dependencies: - fs.realpath "^1.0.0" - inflight "^1.0.4" - inherits "2" - minimatch "^3.0.4" - once "^1.3.0" - path-is-absolute "^1.0.0" - -glob@^5.0.15, glob@^5.0.3: - version "5.0.15" - resolved "https://registry.yarnpkg.com/glob/-/glob-5.0.15.tgz#1bc936b9e02f4a603fcc222ecf7633d30b8b93b1" - 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.1.6: - version "7.1.7" - resolved "https://registry.yarnpkg.com/glob/-/glob-7.1.7.tgz#3b193e9233f01d42d0b3f78294bbeeb418f94a90" - integrity sha512-OvD9ENzPLbegENnYP5UUfJIirTg4+XwMWGaQfQTY0JenxNvvIKP3U3/tAQSPIu/lHxXYSZmpXlUHeqAIdKzBLQ== - dependencies: - fs.realpath "^1.0.0" - inflight "^1.0.4" - inherits "2" - minimatch "^3.0.4" - once "^1.3.0" - path-is-absolute "^1.0.0" - -global-modules@1.0.0, global-modules@^1.0.0: - version "1.0.0" - resolved "https://registry.yarnpkg.com/global-modules/-/global-modules-1.0.0.tgz#6d770f0eb523ac78164d72b5e71a8877265cc3ea" - integrity sha512-sKzpEkf11GpOFuw0Zzjzmt4B4UZwjOcG757PPvrfhxcLFbq0wpsgpOqxpxtxFiCG4DtG93M6XRVbF2oGdev7bg== - dependencies: - global-prefix "^1.0.1" - is-windows "^1.0.1" - resolve-dir "^1.0.0" - -global-modules@^2.0.0: - version "2.0.0" - resolved "https://registry.yarnpkg.com/global-modules/-/global-modules-2.0.0.tgz#997605ad2345f27f51539bea26574421215c7780" - integrity sha512-NGbfmJBp9x8IxyJSd1P+otYK8vonoJactOogrVfFRIAEY1ukil8RSKDz2Yo7wh1oihl51l/r6W4epkeKJHqL8A== - dependencies: - global-prefix "^3.0.0" - -global-prefix@^1.0.1: - version "1.0.2" - resolved "https://registry.yarnpkg.com/global-prefix/-/global-prefix-1.0.2.tgz#dbf743c6c14992593c655568cb66ed32c0122ebe" - integrity sha1-2/dDxsFJklk8ZVVoy2btMsASLr4= - dependencies: - expand-tilde "^2.0.2" - homedir-polyfill "^1.0.1" - ini "^1.3.4" - is-windows "^1.0.1" - which "^1.2.14" - -global-prefix@^3.0.0: - version "3.0.0" - resolved "https://registry.yarnpkg.com/global-prefix/-/global-prefix-3.0.0.tgz#fc85f73064df69f50421f47f883fe5b913ba9b97" - integrity sha512-awConJSVCHVGND6x3tmMaKcQvwXLhjdkmomy2W+Goaui8YPgYgXJZewhg3fWC+DlfqqQuWg8AwqjGTD2nAPVWg== - dependencies: - ini "^1.3.5" - kind-of "^6.0.2" - which "^1.3.1" - -global@~4.3.0: - version "4.3.2" - resolved "https://registry.yarnpkg.com/global/-/global-4.3.2.tgz#e76989268a6c74c38908b1305b10fc0e394e9d0f" - integrity sha1-52mJJopsdMOJCLEwWxD8DjlOnQ8= - dependencies: - min-document "^2.19.0" - process "~0.5.1" - -globals@^11.1.0: - version "11.12.0" - resolved "https://registry.yarnpkg.com/globals/-/globals-11.12.0.tgz#ab8795338868a0babd8525758018c2a7eb95c42e" - integrity sha512-WOBp/EEGUiIsJSp7wcv/y6MO+lV9UoncWqxuFfm8eBwzWNgyfBd6Gz+IeKQ9jCmyhoH99g15M3T+QaVHFjizVA== - -globals@^9.18.0: - version "9.18.0" - resolved "https://registry.yarnpkg.com/globals/-/globals-9.18.0.tgz#aa3896b3e69b487f17e31ed2143d69a8e30c2d8a" - integrity sha512-S0nG3CLEQiY/ILxqtztTWH/3iRRdyBLw6KMDxnKMchrtbj2OFmehVh0WUCfW3DUrIgx/qFrJPICrq4Z4sTR9UQ== - -globalthis@^1.0.1: - version "1.0.2" - resolved "https://registry.yarnpkg.com/globalthis/-/globalthis-1.0.2.tgz#2a235d34f4d8036219f7e34929b5de9e18166b8b" - integrity sha512-ZQnSFO1la8P7auIOQECnm0sSuoMeaSq0EEdXMBFF2QJO4uNcwbyhSgG3MruWNbFTqCLmxVwGOl7LZ9kASvHdeQ== - dependencies: - define-properties "^1.1.3" - -globby@11.0.2: - version "11.0.2" - resolved "https://registry.yarnpkg.com/globby/-/globby-11.0.2.tgz#1af538b766a3b540ebfb58a32b2e2d5897321d83" - integrity sha512-2ZThXDvvV8fYFRVIxnrMQBipZQDr7MxKAmQK1vujaj9/7eF0efG7BPUKJ7jP7G5SLF37xKDXvO4S/KKLj/Z0og== - dependencies: - array-union "^2.1.0" - dir-glob "^3.0.1" - fast-glob "^3.1.1" - ignore "^5.1.4" - merge2 "^1.3.0" - slash "^3.0.0" - -globby@^10.0.1: - version "10.0.2" - resolved "https://registry.yarnpkg.com/globby/-/globby-10.0.2.tgz#277593e745acaa4646c3ab411289ec47a0392543" - 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" - -google-protobuf@^3.13.0, google-protobuf@^3.17.3: - version "3.17.3" - resolved "https://registry.yarnpkg.com/google-protobuf/-/google-protobuf-3.17.3.tgz#f87595073545a77946c8f0b67c302c5f7646d700" - integrity sha512-OVPzcSWIAJ+d5yiHyeaLrdufQtrvaBrF4JQg+z8ynTkbO3uFcujqXszTumqg1cGsAsjkWnI+M5B1xZ19yR4Wyg== - -got@9.6.0: - version "9.6.0" - resolved "https://registry.yarnpkg.com/got/-/got-9.6.0.tgz#edf45e7d67f99545705de1f7bbeeeb121765ed85" - integrity sha512-R7eWptXuGYxwijs0eV+v3o6+XH1IqVK8dJOEecQfTmkncw9AV4dcw/Dhxi8MdlqPthxxpZyizMzyg8RTmEsG+Q== - dependencies: - "@sindresorhus/is" "^0.14.0" - "@szmarczak/http-timer" "^1.1.2" - cacheable-request "^6.0.0" - decompress-response "^3.3.0" - duplexer3 "^0.1.4" - get-stream "^4.1.0" - lowercase-keys "^1.0.1" - mimic-response "^1.0.1" - p-cancelable "^1.0.0" - to-readable-stream "^1.0.0" - url-parse-lax "^3.0.0" - -got@^7.1.0: - version "7.1.0" - resolved "https://registry.yarnpkg.com/got/-/got-7.1.0.tgz#05450fd84094e6bbea56f451a43a9c289166385a" - 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" - -graceful-fs@4.X, graceful-fs@^4.0.0: - version "4.2.6" - resolved "https://registry.yarnpkg.com/graceful-fs/-/graceful-fs-4.2.6.tgz#ff040b2b0853b23c3d31027523706f1885d76bee" - integrity sha512-nTnJ528pbqxYanhpDYsi4Rd8MAeaBA67+RZ10CM1m3bTAVFEDcd5AuA4a6W5YkGZ1iNXHzZz8T6TBKLeBuNriQ== - -graceful-fs@^4.1.10, 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: - version "4.2.3" - resolved "https://registry.yarnpkg.com/graceful-fs/-/graceful-fs-4.2.3.tgz#4a12ff1b60376ef09862c2093edd908328be8423" - integrity sha512-a30VEBm4PEdx1dRB7MFK7BejejvCvBronbLjht+sHuGYj8PHs7M/5Z+rt5lw551vZ7yfTCj4Vuyy3mSJytDWRQ== - -"graceful-readlink@>= 1.0.0": - version "1.0.1" - resolved "https://registry.yarnpkg.com/graceful-readlink/-/graceful-readlink-1.0.1.tgz#4cafad76bc62f02fa039b2f94e9a3dd3a391a725" - integrity sha1-TK+tdrxi8C+gObL5Tpo906ORpyU= - -grapheme-splitter@^1.0.4: - version "1.0.4" - resolved "https://registry.yarnpkg.com/grapheme-splitter/-/grapheme-splitter-1.0.4.tgz#9cf3a665c6247479896834af35cf1dbb4400767e" - integrity sha512-bzh50DW9kTPM00T8y4o8vQg89Di9oLJVLW/KaOGIXJWP/iqCN6WKYkbNOF04vFLJhwcpYUh9ydh/+5vpOqV4YQ== - -graphql-extensions@^0.12.8: - version "0.12.8" - resolved "https://registry.yarnpkg.com/graphql-extensions/-/graphql-extensions-0.12.8.tgz#9cdc2c43d8fe5e0f6c3177a004ac011da2a8aa0f" - integrity sha512-xjsSaB6yKt9jarFNNdivl2VOx52WySYhxPgf8Y16g6GKZyAzBoIFiwyGw5PJDlOSUa6cpmzn6o7z8fVMbSAbkg== - dependencies: - "@apollographql/apollo-tools" "^0.4.3" - apollo-server-env "^3.0.0" - apollo-server-types "^0.6.3" - -graphql-subscriptions@^1.0.0: - version "1.2.1" - resolved "https://registry.yarnpkg.com/graphql-subscriptions/-/graphql-subscriptions-1.2.1.tgz#2142b2d729661ddf967b7388f7cf1dd4cf2e061d" - integrity sha512-95yD/tKi24q8xYa7Q9rhQN16AYj5wPbrb8tmHGM3WRc9EBmWrG/0kkMl+tQG8wcEuE9ibR4zyOM31p5Sdr2v4g== - dependencies: - iterall "^1.3.0" - -graphql-tag@^2.11.0: - version "2.11.0" - resolved "https://registry.yarnpkg.com/graphql-tag/-/graphql-tag-2.11.0.tgz#1deb53a01c46a7eb401d6cb59dec86fa1cccbffd" - integrity sha512-VmsD5pJqWJnQZMUeRwrDhfgoyqcfwEkvtpANqcoUG8/tOLkwNgU9mzub/Mc78OJMhHjx7gfAMTxzdG43VGg3bA== - -graphql-tag@^2.12.0: - version "2.12.1" - resolved "https://registry.yarnpkg.com/graphql-tag/-/graphql-tag-2.12.1.tgz#b065ef885e4800e4afd0842811b718a205f4aa58" - integrity sha512-LPewEE1vzGkHnCO8zdOGogKsHHBdtpGyihow1UuMwp6RnZa0lAS7NcbvltLOuo4pi5diQCPASAXZkQq44ffixA== - dependencies: - tslib "^1.14.1" - -graphql-tools@^4.0.8: - version "4.0.8" - resolved "https://registry.yarnpkg.com/graphql-tools/-/graphql-tools-4.0.8.tgz#e7fb9f0d43408fb0878ba66b522ce871bafe9d30" - integrity sha512-MW+ioleBrwhRjalKjYaLQbr+920pHBgy9vM/n47sswtns8+96sRn5M/G+J1eu7IMeKWiN/9p6tmwCHU7552VJg== - dependencies: - apollo-link "^1.2.14" - apollo-utilities "^1.0.1" - deprecated-decorator "^0.1.6" - iterall "^1.1.3" - uuid "^3.1.0" - -graphql-tools@^6.2.4: - version "6.2.6" - resolved "https://registry.yarnpkg.com/graphql-tools/-/graphql-tools-6.2.6.tgz#557c6d32797a02988f214bd596dec2abd12425dd" - integrity sha512-OyhSvK5ALVVD6bFiWjAqv2+lRyvjIRfb6Br5Tkjrv++rxnXDodPH/zhMbDGRw+W3SD5ioGEEz84yO48iPiN7jA== - dependencies: - "@graphql-tools/batch-delegate" "^6.2.6" - "@graphql-tools/code-file-loader" "^6.2.4" - "@graphql-tools/delegate" "^6.2.4" - "@graphql-tools/git-loader" "^6.2.4" - "@graphql-tools/github-loader" "^6.2.4" - "@graphql-tools/graphql-file-loader" "^6.2.4" - "@graphql-tools/graphql-tag-pluck" "^6.2.4" - "@graphql-tools/import" "^6.2.4" - "@graphql-tools/json-file-loader" "^6.2.4" - "@graphql-tools/links" "^6.2.4" - "@graphql-tools/load" "^6.2.4" - "@graphql-tools/load-files" "^6.2.4" - "@graphql-tools/merge" "^6.2.4" - "@graphql-tools/mock" "^6.2.4" - "@graphql-tools/module-loader" "^6.2.4" - "@graphql-tools/relay-operation-optimizer" "^6.2.4" - "@graphql-tools/resolvers-composition" "^6.2.4" - "@graphql-tools/schema" "^6.2.4" - "@graphql-tools/stitch" "^6.2.4" - "@graphql-tools/url-loader" "^6.2.4" - "@graphql-tools/utils" "^6.2.4" - "@graphql-tools/wrap" "^6.2.4" - tslib "~2.0.1" - -graphql-upload@^11.0.0: - version "11.0.0" - resolved "https://registry.yarnpkg.com/graphql-upload/-/graphql-upload-11.0.0.tgz#24b245ff18f353bab6715e8a055db9fd73035e10" - integrity sha512-zsrDtu5gCbQFDWsNa5bMB4nf1LpKX9KDgh+f8oL1288ijV4RxeckhVozAjqjXAfRpxOHD1xOESsh6zq8SjdgjA== - dependencies: - busboy "^0.3.1" - fs-capacitor "^6.1.0" - http-errors "^1.7.3" - isobject "^4.0.0" - object-path "^0.11.4" - -graphql-ws@4.1.5: - version "4.1.5" - resolved "https://registry.yarnpkg.com/graphql-ws/-/graphql-ws-4.1.5.tgz#03526b29acb54a424a9fbe300a4bd69ff65a50b3" - integrity sha512-yUQ1AjegD1Y9jDS699kyw7Mw+9H+rILm2HoS8N5a5B5YTH93xy3yifFhAJpKGc2wb/8yGdlVy8gTcud0TPqi6Q== - -graphql@^15.3.0: - version "15.5.0" - resolved "https://registry.yarnpkg.com/graphql/-/graphql-15.5.0.tgz#39d19494dbe69d1ea719915b578bf920344a69d5" - integrity sha512-OmaM7y0kaK31NKG31q4YbD2beNYa6jBBKtMFT6gLYJljHLJr42IqJ8KX08u3Li/0ifzTU5HjmoOOrwa5BRLeDA== - -growl@1.10.5: - version "1.10.5" - resolved "https://registry.yarnpkg.com/growl/-/growl-1.10.5.tgz#f2735dc2283674fa67478b10181059355c369e5e" - integrity sha512-qBr4OuELkhPenW6goKVXiv47US3clb3/IbuWF9KNKEijAy9oeHxU9IgzjvJhHkUzhaj7rOUD7+YGWqUjLp5oSA== - -gulp-sourcemaps@^1.5.2: - version "1.12.1" - resolved "https://registry.yarnpkg.com/gulp-sourcemaps/-/gulp-sourcemaps-1.12.1.tgz#b437d1f3d980cf26e81184823718ce15ae6597b6" - integrity sha1-tDfR89mAzyboEYSCNxjOFa5ll7Y= - dependencies: - "@gulp-sourcemaps/map-sources" "1.X" - acorn "4.X" - convert-source-map "1.X" - css "2.X" - debug-fabulous "0.0.X" - detect-newline "2.X" - graceful-fs "4.X" - source-map "~0.6.0" - strip-bom "2.X" - through2 "2.X" - vinyl "1.X" - -handlebars@^4.0.1: - version "4.7.3" - resolved "https://registry.yarnpkg.com/handlebars/-/handlebars-4.7.3.tgz#8ece2797826886cf8082d1726ff21d2a022550ee" - integrity sha512-SRGwSYuNfx8DwHD/6InAPzD6RgeruWLT+B8e8a7gGs8FWgHzlExpTFMEq2IA6QpAfOClpKHy6+8IqTjeBCu6Kg== - dependencies: - neo-async "^2.6.0" - optimist "^0.6.1" - source-map "^0.6.1" - optionalDependencies: - uglify-js "^3.1.4" - -har-schema@^2.0.0: - version "2.0.0" - resolved "https://registry.yarnpkg.com/har-schema/-/har-schema-2.0.0.tgz#a94c2224ebcac04782a0d9035521f24735b7ec92" - integrity sha1-qUwiJOvKwEeCoNkDVSHyRzW37JI= - -har-validator@~5.1.3: - version "5.1.3" - resolved "https://registry.yarnpkg.com/har-validator/-/har-validator-5.1.3.tgz#1ef89ebd3e4996557675eed9893110dc350fa080" - integrity sha512-sNvOCzEQNr/qrvJgc3UG/kD4QtlHycrzwS+6mfTrrSq97BvaYcPZZI1ZSqGSPR73Cxn4LKTD4PttRwfU7jWq5g== - dependencies: - ajv "^6.5.5" - har-schema "^2.0.0" - -has-ansi@^2.0.0: - version "2.0.0" - resolved "https://registry.yarnpkg.com/has-ansi/-/has-ansi-2.0.0.tgz#34f5049ce1ecdf2b0649af3ef24e45ed35416d91" - integrity sha1-NPUEnOHs3ysGSa8+8k5F7TVBbZE= - dependencies: - ansi-regex "^2.0.0" - -has-bigints@^1.0.0: - version "1.0.1" - resolved "https://registry.yarnpkg.com/has-bigints/-/has-bigints-1.0.1.tgz#64fe6acb020673e3b78db035a5af69aa9d07b113" - integrity sha512-LSBS2LjbNBTf6287JEbEzvJgftkF5qFkmCo9hDRpAzKhUOlJ+hx8dd4USs00SgsUNwc4617J9ki5YtEClM2ffA== - -has-color@~0.1.0: - version "0.1.7" - resolved "https://registry.yarnpkg.com/has-color/-/has-color-0.1.7.tgz#67144a5260c34fc3cca677d041daf52fe7b78b2f" - integrity sha1-ZxRKUmDDT8PMpnfQQdr1L+e3iy8= - -has-flag@^1.0.0: - version "1.0.0" - resolved "https://registry.yarnpkg.com/has-flag/-/has-flag-1.0.0.tgz#9d9e793165ce017a00f00418c43f942a7b1d11fa" - integrity sha1-nZ55MWXOAXoA8AQYxD+UKnsdEfo= - -has-flag@^2.0.0: - version "2.0.0" - resolved "https://registry.yarnpkg.com/has-flag/-/has-flag-2.0.0.tgz#e8207af1cc7b30d446cc70b734b5e8be18f88d51" - integrity sha1-6CB68cx7MNRGzHC3NLXovhj4jVE= - -has-flag@^3.0.0: - version "3.0.0" - resolved "https://registry.yarnpkg.com/has-flag/-/has-flag-3.0.0.tgz#b5d454dc2199ae225699f3467e5a07f3b955bafd" - integrity sha1-tdRU3CGZriJWmfNGfloH87lVuv0= - -has-flag@^4.0.0: - version "4.0.0" - resolved "https://registry.yarnpkg.com/has-flag/-/has-flag-4.0.0.tgz#944771fd9c81c81265c4d6941860da06bb59479b" - integrity sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ== - -has-symbol-support-x@^1.4.1: - version "1.4.2" - resolved "https://registry.yarnpkg.com/has-symbol-support-x/-/has-symbol-support-x-1.4.2.tgz#1409f98bc00247da45da67cee0a36f282ff26455" - 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.yarnpkg.com/has-symbols/-/has-symbols-1.0.2.tgz#165d3070c00309752a1236a479331e3ac56f1423" - integrity sha512-chXa79rL/UC2KlX17jo3vRGz0azaWEx5tGqZg5pO3NUyEJVB17dMruQlzCCOfUvElghKcm5194+BCRvi2Rv/Gw== - -has-to-string-tag-x@^1.2.0: - version "1.4.1" - resolved "https://registry.yarnpkg.com/has-to-string-tag-x/-/has-to-string-tag-x-1.4.1.tgz#a045ab383d7b4b2012a00148ab0aa5f290044d4d" - integrity sha512-vdbKfmw+3LoOYVr+mtxHaX5a96+0f3DljYd8JOqvOLsf5mw2Otda2qCDT9qRqLAhrjyQ0h7ual5nOiASpsGNFw== - dependencies: - has-symbol-support-x "^1.4.1" - -has-unicode@^2.0.0: - version "2.0.1" - resolved "https://registry.yarnpkg.com/has-unicode/-/has-unicode-2.0.1.tgz#e0e6fe6a28cf51138855e086d1691e771de2a8b9" - integrity sha1-4Ob+aijPUROIVeCG0Wkedx3iqLk= - -has-value@^0.3.1: - version "0.3.1" - resolved "https://registry.yarnpkg.com/has-value/-/has-value-0.3.1.tgz#7b1f58bada62ca827ec0a2078025654845995e1f" - integrity sha1-ex9YutpiyoJ+wKIHgCVlSEWZXh8= - 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.yarnpkg.com/has-value/-/has-value-1.0.0.tgz#18b281da585b1c5c51def24c930ed29a0be6b177" - integrity sha1-GLKB2lhbHFxR3vJMkw7SmgvmsXc= - 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.yarnpkg.com/has-values/-/has-values-0.1.4.tgz#6d61de95d91dfca9b9a02089ad384bff8f62b771" - integrity sha1-bWHeldkd/Km5oCCJrThL/49it3E= - -has-values@^1.0.0: - version "1.0.0" - resolved "https://registry.yarnpkg.com/has-values/-/has-values-1.0.0.tgz#95b0b63fec2146619a6fe57fe75628d5a39efe4f" - integrity sha1-lbC2P+whRmGab+V/51Yo1aOe/k8= - dependencies: - is-number "^3.0.0" - kind-of "^4.0.0" - -has@^1.0.3: - version "1.0.3" - resolved "https://registry.yarnpkg.com/has/-/has-1.0.3.tgz#722d7cbfc1f6aa8241f16dd814e011e1f41e8796" - integrity sha512-f2dvO0VU6Oej7RkWJGrehjbzMAjFp5/VKPp5tTpWIV4JHHZK1/BxbFRtf/siA2SWTe09caDmVtYYzWEIbBS4zw== - dependencies: - function-bind "^1.1.1" - -hash-base@^3.0.0: - version "3.0.4" - resolved "https://registry.yarnpkg.com/hash-base/-/hash-base-3.0.4.tgz#5fc8686847ecd73499403319a6b0a3f3f6ae4918" - integrity sha1-X8hoaEfs1zSZQDMZprCj8/auSRg= - dependencies: - inherits "^2.0.1" - safe-buffer "^5.0.1" - -hash.js@1.1.3: - version "1.1.3" - resolved "https://registry.yarnpkg.com/hash.js/-/hash.js-1.1.3.tgz#340dedbe6290187151c1ea1d777a3448935df846" - integrity sha512-/UETyP0W22QILqS+6HowevwhEFJ3MBJnwTf75Qob9Wz9t0DPuisL8kW8YZMK62dHAKE1c1p+gY1TtOLY+USEHA== - dependencies: - inherits "^2.0.3" - minimalistic-assert "^1.0.0" - -hash.js@1.1.7, hash.js@^1.0.0, hash.js@^1.0.3, hash.js@^1.1.7: - version "1.1.7" - resolved "https://registry.yarnpkg.com/hash.js/-/hash.js-1.1.7.tgz#0babca538e8d4ee4a0f8988d68866537a003cf42" - integrity sha512-taOaskGt4z4SOANNseOviYDvjEJinIkRgmp7LbKP2YTTmVxWBl87s/uzK9r+44BclBSp2X7K1hqeNfz9JbBeXA== - dependencies: - inherits "^2.0.3" - minimalistic-assert "^1.0.1" - -he@1.2.0, he@^1.1.1: - version "1.2.0" - resolved "https://registry.yarnpkg.com/he/-/he-1.2.0.tgz#84ae65fa7eafb165fddb61566ae14baf05664f0f" - integrity sha512-F/1DnUGPopORZi0ni+CvrCgHQ5FyEAHRLSApuYWMmrbSwoN2Mn/7k+Gl38gJnR7yyDZk6WLXwiGod1JOWNDKGw== - -header-case@^1.0.0: - version "1.0.1" - resolved "https://registry.yarnpkg.com/header-case/-/header-case-1.0.1.tgz#9535973197c144b09613cd65d317ef19963bd02d" - integrity sha1-lTWXMZfBRLCWE81l0xfvGZY70C0= - dependencies: - no-case "^2.2.0" - upper-case "^1.1.3" - -highlight.js@^10.4.1: - version "10.7.3" - resolved "https://registry.yarnpkg.com/highlight.js/-/highlight.js-10.7.3.tgz#697272e3991356e40c3cac566a74eef681756531" - integrity sha512-tzcUFauisWKNHaRkN4Wjl/ZA07gENAjFl3J/c480dprkGTg5EQstgaNFqBfUqCq54kZRIEcreTsAgF/m2quD7A== - -highlightjs-solidity@^1.2.2: - version "1.2.2" - resolved "https://registry.yarnpkg.com/highlightjs-solidity/-/highlightjs-solidity-1.2.2.tgz#049a050c0d8009c99b373537a4e66bf55366de51" - integrity sha512-+cZ+1+nAO5Pi6c70TKuMcPmwqLECxiYhnQc1MxdXckK94zyWFMNZADzu98ECNlf5xCRdNh+XKp+eklmRU+Dniw== - -hmac-drbg@^1.0.0, hmac-drbg@^1.0.1: - version "1.0.1" - resolved "https://registry.yarnpkg.com/hmac-drbg/-/hmac-drbg-1.0.1.tgz#d2745701025a6c775a6c545793ed502fc0c649a1" - integrity sha1-0nRXAQJabHdabFRXk+1QL8DGSaE= - dependencies: - hash.js "^1.0.3" - minimalistic-assert "^1.0.0" - minimalistic-crypto-utils "^1.0.1" - -hoist-non-react-statics@^3.3.2: - version "3.3.2" - resolved "https://registry.yarnpkg.com/hoist-non-react-statics/-/hoist-non-react-statics-3.3.2.tgz#ece0acaf71d62c2969c2ec59feff42a4b1a85b45" - integrity sha512-/gGivxi8JPKWNm/W0jSmzcMPpfpPLc3dY/6GxhX2hQ9iGj3aDfklV4ET7NjKpSinLpJ5vafa9iiGIEZg10SfBw== - dependencies: - react-is "^16.7.0" - -homedir-polyfill@^1.0.1: - version "1.0.3" - resolved "https://registry.yarnpkg.com/homedir-polyfill/-/homedir-polyfill-1.0.3.tgz#743298cef4e5af3e194161fbadcc2151d3a058e8" - integrity sha512-eSmmWE5bZTK2Nou4g0AI3zZ9rswp7GRKoKXS1BLUkvPviOqs4YTN1djQIqrXy9k5gEtdLPy86JjRwsNM9tnDcA== - dependencies: - parse-passwd "^1.0.0" - -hosted-git-info@^2.1.4: - version "2.8.8" - resolved "https://registry.yarnpkg.com/hosted-git-info/-/hosted-git-info-2.8.8.tgz#7539bd4bc1e0e0a895815a2e0262420b12858488" - integrity sha512-f/wzC2QaWBs7t9IYqB4T3sR1xviIViXJRJTWBlx2Gf3g0Xi5vI7Yy4koXQ1c9OYDGHN9sBy1DQ2AB8fqZBWhUg== - -hosted-git-info@^2.6.0: - version "2.8.5" - resolved "https://registry.yarnpkg.com/hosted-git-info/-/hosted-git-info-2.8.5.tgz#759cfcf2c4d156ade59b0b2dfabddc42a6b9c70c" - integrity sha512-kssjab8CvdXfcXMXVcvsXum4Hwdq9XGtRD3TteMEvEbq0LXyiNQr6AprqKqfeaDXze7SxWvRxdpwE6ku7ikLkg== - -htmlparser2@^3.9.1: - version "3.10.1" - resolved "https://registry.yarnpkg.com/htmlparser2/-/htmlparser2-3.10.1.tgz#bd679dc3f59897b6a34bb10749c855bb53a9392f" - integrity sha512-IgieNijUMbkDovyoKObU1DUhm1iwNYE/fuifEoEHfd1oZKZDaONBSkal7Y01shxsM49R4XaMdGez3WnF9UfiCQ== - dependencies: - domelementtype "^1.3.1" - domhandler "^2.3.0" - domutils "^1.5.1" - entities "^1.1.1" - inherits "^2.0.1" - readable-stream "^3.1.1" - -htmlparser2@^6.1.0: - version "6.1.0" - resolved "https://registry.yarnpkg.com/htmlparser2/-/htmlparser2-6.1.0.tgz#c4d762b6c3371a05dbe65e94ae43a9f845fb8fb7" - integrity sha512-gyyPk6rgonLFEDGoeRgQNaEUvdJ4ktTmmUh/h2t7s+M8oPpIPxgNACWa+6ESR57kXstwqPiCut0V8NRpcwgU7A== - dependencies: - domelementtype "^2.0.1" - domhandler "^4.0.0" - domutils "^2.5.2" - entities "^2.0.0" - -htmlparser2@~3.8.1: - version "3.8.3" - resolved "https://registry.yarnpkg.com/htmlparser2/-/htmlparser2-3.8.3.tgz#996c28b191516a8be86501a7d79757e5c70c1068" - integrity sha1-mWwosZFRaovoZQGn15dX5ccMEGg= - dependencies: - domelementtype "1" - domhandler "2.3" - domutils "1.5" - entities "1.0" - readable-stream "1.1" - -http-basic@^8.1.1: - version "8.1.3" - resolved "https://registry.yarnpkg.com/http-basic/-/http-basic-8.1.3.tgz#a7cabee7526869b9b710136970805b1004261bbf" - 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.0.4" - resolved "https://registry.yarnpkg.com/http-cache-semantics/-/http-cache-semantics-4.0.4.tgz#13eeb612424bb113d52172c28a13109c46fa85d7" - integrity sha512-Z2EICWNJou7Tr9Bd2M2UqDJq3A9F2ePG9w3lIpjoyuSyXFP9QbniJVu3XQYytuw5ebmG7dXSXO9PgAjJG8DDKA== - -http-errors@1.7.2: - version "1.7.2" - resolved "https://registry.yarnpkg.com/http-errors/-/http-errors-1.7.2.tgz#4f5029cf13239f31036e5b2e55292bcfbcc85c8f" - integrity sha512-uUQBt3H/cSIVfch6i1EuPNy/YsRSOUBXTVfZ+yR7Zjez3qjBz6i9+i4zjNaoqcoFVI4lQJ5plg63TvGfRSDCRg== - dependencies: - depd "~1.1.2" - inherits "2.0.3" - setprototypeof "1.1.1" - statuses ">= 1.5.0 < 2" - toidentifier "1.0.0" - -http-errors@^1.7.3: - version "1.8.0" - resolved "https://registry.yarnpkg.com/http-errors/-/http-errors-1.8.0.tgz#75d1bbe497e1044f51e4ee9e704a62f28d336507" - integrity sha512-4I8r0C5JDhT5VkvI47QktDW75rNlGVsUf/8hzjCC/wkWI/jdTRmBb9aI7erSG82r1bjKY3F6k28WnsVxB1C73A== - dependencies: - depd "~1.1.2" - inherits "2.0.4" - setprototypeof "1.2.0" - statuses ">= 1.5.0 < 2" - toidentifier "1.0.0" - -http-errors@~1.7.2: - version "1.7.3" - resolved "https://registry.yarnpkg.com/http-errors/-/http-errors-1.7.3.tgz#6c619e4f9c60308c38519498c14fbb10aacebb06" - integrity sha512-ZTTX0MWrsQ2ZAhA1cejAwDLycFsd7I7nVtnkT3Ol0aqodaKW+0CTZDQ1uBv5whptCnc8e8HeRRJxRs0kmm/Qfw== - dependencies: - depd "~1.1.2" - inherits "2.0.4" - setprototypeof "1.1.1" - statuses ">= 1.5.0 < 2" - toidentifier "1.0.0" - -http-https@^1.0.0: - version "1.0.0" - resolved "https://registry.yarnpkg.com/http-https/-/http-https-1.0.0.tgz#2f908dd5f1db4068c058cd6e6d4ce392c913389b" - integrity sha1-L5CN1fHbQGjAWM1ubUzjkskTOJs= - -http-response-object@^3.0.1: - version "3.0.2" - resolved "https://registry.yarnpkg.com/http-response-object/-/http-response-object-3.0.2.tgz#7f435bb210454e4360d074ef1f989d5ea8aa9810" - integrity sha512-bqX0XTF6fnXSQcEJ2Iuyr75yVakyjIDCqroJQ/aHfSdlM743Cwqoi2nDYMzLGWUcuTWGWy8AAvOKXTfiv6q9RA== - dependencies: - "@types/node" "^10.0.3" - -http-signature@~1.2.0: - version "1.2.0" - resolved "https://registry.yarnpkg.com/http-signature/-/http-signature-1.2.0.tgz#9aecd925114772f3d95b65a60abb8f7c18fbace1" - 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.yarnpkg.com/https-browserify/-/https-browserify-1.0.0.tgz#ec06c10e0a34c0f2faf199f7fd7fc78fffd03c73" - integrity sha1-7AbBDgo0wPL68Zn3/X/Hj//QPHM= - -ice-cap@0.0.4: - version "0.0.4" - resolved "https://registry.yarnpkg.com/ice-cap/-/ice-cap-0.0.4.tgz#8a6d31ab4cac8d4b56de4fa946df3352561b6e18" - integrity sha1-im0xq0ysjUtW3k+pRt8zUlYbbhg= - dependencies: - cheerio "0.20.0" - color-logger "0.0.3" - -iconv-lite@0.4.24, iconv-lite@^0.4.4: - version "0.4.24" - resolved "https://registry.yarnpkg.com/iconv-lite/-/iconv-lite-0.4.24.tgz#2022b4b25fbddc21d2f524974a474aafe733908b" - integrity sha512-v3MXnZAcvnywkTUEZomIActle7RXXeedOR31wwl7VlyoXO4Qi9arvSenNQWne1TcRwhCL1HwLI21bEqdpj8/rA== - dependencies: - safer-buffer ">= 2.1.2 < 3" - -iconv-lite@^0.6.2: - version "0.6.3" - resolved "https://registry.yarnpkg.com/iconv-lite/-/iconv-lite-0.6.3.tgz#a52f80bf38da1952eb5c681790719871a1a72501" - integrity sha512-4fCk79wshMdzMp2rH06qWrJE4iolqLhCUH+OiuIgU++RB0+94NlDL81atO7GX55uUKueo0txHNtvEyI6D7WdMw== - dependencies: - safer-buffer ">= 2.1.2 < 3.0.0" - -idna-uts46-hx@^2.3.1: - version "2.3.1" - resolved "https://registry.yarnpkg.com/idna-uts46-hx/-/idna-uts46-hx-2.3.1.tgz#a1dc5c4df37eee522bf66d969cc980e00e8711f9" - integrity sha512-PWoF9Keq6laYdIRwwCdhTPl60xRqAloYNMQLiyUnG42VjT53oW07BXIRM+NK7eQjzXjAk2gUvX9caRxlnF9TAA== - dependencies: - punycode "2.1.0" - -ieee754@^1.1.13, ieee754@^1.2.1: - version "1.2.1" - resolved "https://registry.yarnpkg.com/ieee754/-/ieee754-1.2.1.tgz#8eb7a10a63fff25d15a57b001586d177d1b0d352" - integrity sha512-dcyqhDvX1C46lXZcVqCpK+FtMRQVdIMN6/Df5js2zouUsqG7I6sFxitIC+7KYK29KdXOLHdu9zL4sFnoVQnqaA== - -ieee754@^1.1.4: - version "1.1.13" - resolved "https://registry.yarnpkg.com/ieee754/-/ieee754-1.1.13.tgz#ec168558e95aa181fd87d37f55c32bbcb6708b84" - integrity sha512-4vf7I2LYV/HaWerSo3XmlMkp5eZ83i+/CDluXi/IGTs/O1sejBNhTtnxzmRZfvOUqj7lZjqHkeTvpgSFDlWZTg== - -ignore-walk@^3.0.1: - version "3.0.3" - resolved "https://registry.yarnpkg.com/ignore-walk/-/ignore-walk-3.0.3.tgz#017e2447184bfeade7c238e4aefdd1e8f95b1e37" - integrity sha512-m7o6xuOaT1aqheYHKf8W6J5pYH85ZI9w077erOzLje3JsB1gkafkAhHHY19dqjulgIZHFm32Cp5uNZgcQqdJKw== - dependencies: - minimatch "^3.0.4" - -ignore@^5.1.1: - version "5.1.4" - resolved "https://registry.yarnpkg.com/ignore/-/ignore-5.1.4.tgz#84b7b3dbe64552b6ef0eca99f6743dbec6d97adf" - integrity sha512-MzbUSahkTW1u7JpKKjY7LCARd1fU5W2rLdxlM4kdkayuCwZImjkpluF9CM1aLewYJguPDqewLam18Y6AU69A8A== - -ignore@^5.1.4: - version "5.1.8" - resolved "https://registry.yarnpkg.com/ignore/-/ignore-5.1.8.tgz#f150a8b50a34289b33e22f5889abd4d8016f0e57" - integrity sha512-BMpfD7PpiETpBl/A6S498BaIJ6Y/ABT93ETbby2fP00v4EbvPBXWEoaR1UBPKs3iR53pJY7EtZk5KACI57i1Uw== - -immediate@3.0.6: - version "3.0.6" - resolved "https://registry.yarnpkg.com/immediate/-/immediate-3.0.6.tgz#9db1dbd0faf8de6fbe0f5dd5e56bb606280de69b" - integrity sha1-nbHb0Pr43m++D13V5Wu2BigN5ps= - -immediate@3.3.0, immediate@^3.2.2, immediate@^3.2.3: - version "3.3.0" - resolved "https://registry.yarnpkg.com/immediate/-/immediate-3.3.0.tgz#1aef225517836bcdf7f2a2de2600c79ff0269266" - integrity sha512-HR7EVodfFUdQCTIeySw+WDRFJlPcLOJbXfwwZ7Oom6tjsvZ3bOkCDJHehQC3nxJrv7+f9XecwazynjU8e4Vw3Q== - -immediate@~3.2.3: - version "3.2.3" - resolved "https://registry.yarnpkg.com/immediate/-/immediate-3.2.3.tgz#d140fa8f614659bd6541233097ddaac25cdd991c" - integrity sha1-0UD6j2FGWb1lQSMwl92qwlzdmRw= - -immutable@^4.0.0-rc.14: - version "4.0.0-rc.14" - resolved "https://registry.yarnpkg.com/immutable/-/immutable-4.0.0-rc.14.tgz#29ba96631ec10867d1348515ac4e6bdba462f071" - integrity sha512-pfkvmRKJSoW7JFx0QeYlAmT+kNYvn5j0u7bnpNq4N2RCvHSTlLT208G8jgaquNe+Q8kCPHKOSpxJkyvLDpYq0w== - -immutable@~3.7.6: - version "3.7.6" - resolved "https://registry.yarnpkg.com/immutable/-/immutable-3.7.6.tgz#13b4d3cb12befa15482a26fe1b2ebae640071e4b" - integrity sha1-E7TTyxK++hVIKib+Gy665kAHHks= - -import-from@3.0.0: - version "3.0.0" - resolved "https://registry.yarnpkg.com/import-from/-/import-from-3.0.0.tgz#055cfec38cd5a27d8057ca51376d7d3bf0891966" - integrity sha512-CiuXOFFSzkU5x/CR0+z7T91Iht4CXgfCxVOFRhh2Zyhg5wOpWvvDLQUsWl+gcN+QscYBjez8hDCt85O7RLDttQ== - dependencies: - resolve-from "^5.0.0" - -imurmurhash@^0.1.4: - version "0.1.4" - resolved "https://registry.yarnpkg.com/imurmurhash/-/imurmurhash-0.1.4.tgz#9218b9b2b928a238b13dc4fb6b6d576f231453ea" - integrity sha1-khi5srkoojixPcT7a21XbyMUU+o= - -inflight@^1.0.4: - version "1.0.6" - resolved "https://registry.yarnpkg.com/inflight/-/inflight-1.0.6.tgz#49bd6331d7d02d0c09bc910a1075ba8165b56df9" - integrity sha1-Sb1jMdfQLQwJvJEKEHW6gWW1bfk= - dependencies: - once "^1.3.0" - wrappy "1" - -inherits@2, inherits@2.0.4, inherits@^2.0.1, inherits@^2.0.3, inherits@^2.0.4, inherits@~2.0.1, inherits@~2.0.3: - version "2.0.4" - resolved "https://registry.yarnpkg.com/inherits/-/inherits-2.0.4.tgz#0fa2c64f932917c3433a0ded55363aae37416b7c" - integrity sha512-k/vGaX4/Yla3WzyMCvTQOXYeIHvqOKtnqBduzTHpzpQZzAskKMhZ2K+EnBiSM9zGSoIFeMpXKxa4dYeZIQqewQ== - -inherits@2.0.1, inherits@=2.0.1: - version "2.0.1" - resolved "https://registry.yarnpkg.com/inherits/-/inherits-2.0.1.tgz#b17d08d326b4423e568eff719f91b0b1cbdf69f1" - integrity sha1-sX0I0ya0Qj5Wjv9xn5GwscvfafE= - -inherits@2.0.3: - version "2.0.3" - resolved "https://registry.yarnpkg.com/inherits/-/inherits-2.0.3.tgz#633c2c83e3da42a502f52466022480f4208261de" - integrity sha1-Yzwsg+PaQqUC9SRmAiSA9CCCYd4= - -ini@^1.3.4, ini@~1.3.0: - version "1.3.8" - resolved "https://registry.yarnpkg.com/ini/-/ini-1.3.8.tgz#a29da425b48806f34767a4efce397269af28432c" - integrity sha512-JV/yugV2uzW5iMRSiZAyDtQd+nxtUnjeLt0acNdw98kKLrvuRVyB80tsREOE7yvGVgalhZ6RNXCmEHkUKBKxew== - -ini@^1.3.5: - version "1.3.5" - resolved "https://registry.yarnpkg.com/ini/-/ini-1.3.5.tgz#eee25f56db1c9ec6085e0c22778083f596abf927" - integrity sha512-RZY5huIKCMRWDUqZlEi72f/lmXKMvuszcMBduliQ3nnWbx9X/ZBQO7DijMEYS9EhHBb2qacRUMtC7svLwe0lcw== - -interpret@^1.0.0: - version "1.2.0" - resolved "https://registry.yarnpkg.com/interpret/-/interpret-1.2.0.tgz#d5061a6224be58e8083985f5014d844359576296" - integrity sha512-mT34yGKMNceBQUoVn7iCDKDntA7SC6gycMAWzGx1z/CMCTV7b2AAtXlo3nRyHZ1FelRkQbQjprHSYGwzLtkVbw== - -invariant@^2.2.2: - version "2.2.4" - resolved "https://registry.yarnpkg.com/invariant/-/invariant-2.2.4.tgz#610f3c92c9359ce1db616e538008d23ff35158e6" - integrity sha512-phJfQVBuaJM5raOpJjSfkiD6BpbCE4Ns//LaXl6wGYtUBY83nWS6Rf9tXm2e8VaK60JEjYldbPif/A2B1C2gNA== - dependencies: - loose-envify "^1.0.0" - -invert-kv@^1.0.0: - version "1.0.0" - resolved "https://registry.yarnpkg.com/invert-kv/-/invert-kv-1.0.0.tgz#104a8e4aaca6d3d8cd157a8ef8bfab2d7a3ffdb6" - integrity sha1-EEqOSqym09jNFXqO+L+rLXo//bY= - -invert-kv@^2.0.0: - version "2.0.0" - resolved "https://registry.yarnpkg.com/invert-kv/-/invert-kv-2.0.0.tgz#7393f5afa59ec9ff5f67a27620d11c226e3eec02" - integrity sha512-wPVv/y/QQ/Uiirj/vh3oP+1Ww+AWehmi1g5fFWGPF6IpCBCDVrhgHRMvrLfdYcwDh3QJbGXDW4JAuzxElLSqKA== - -ip-regex@^4.0.0: - version "4.3.0" - resolved "https://registry.yarnpkg.com/ip-regex/-/ip-regex-4.3.0.tgz#687275ab0f57fa76978ff8f4dddc8a23d5990db5" - integrity sha512-B9ZWJxHHOHUhUjCPrMpLD4xEq35bUTClHM1S6CBU5ixQnkZmwipwgc96vAd7AAGM9TGHvJR+Uss+/Ak6UphK+Q== - -ipaddr.js@1.9.0: - version "1.9.0" - resolved "https://registry.yarnpkg.com/ipaddr.js/-/ipaddr.js-1.9.0.tgz#37df74e430a0e47550fe54a2defe30d8acd95f65" - integrity sha512-M4Sjn6N/+O6/IXSJseKqHoFc+5FdGJ22sXqnjTpdZweHK64MzEPAyQZyEU3R/KRv2GLoa7nNtg/C2Ev6m7z+eA== - -ipfs-core-types@^0.2.1: - version "0.2.1" - resolved "https://registry.yarnpkg.com/ipfs-core-types/-/ipfs-core-types-0.2.1.tgz#460bf2116477ce621995468c962c685dbdc4ac6f" - integrity sha512-q93+93qSybku6woZaajE9mCrHeVoMzNtZ7S5m/zx0+xHRhnoLlg8QNnGGsb5/+uFQt/RiBArsIw/Q61K9Jwkzw== - dependencies: - cids "^1.1.5" - multiaddr "^8.0.0" - peer-id "^0.14.1" - -ipfs-core-utils@^0.6.1: - version "0.6.1" - resolved "https://registry.yarnpkg.com/ipfs-core-utils/-/ipfs-core-utils-0.6.1.tgz#59d1ca9ff4a33bbf6497c4abe024573c3fd7d784" - integrity sha512-UFIklwE3CFcsNIhYFDuz0qB7E2QtdFauRfc76kskgiqhGWcjqqiDeND5zBCrAy0u8UMaDqAbFl02f/mIq1yKXw== - dependencies: - any-signal "^2.0.0" - blob-to-it "^1.0.1" - browser-readablestream-to-it "^1.0.1" - cids "^1.1.5" - err-code "^2.0.3" - ipfs-core-types "^0.2.1" - ipfs-utils "^5.0.0" - it-all "^1.0.4" - it-map "^1.0.4" - it-peekable "^1.0.1" - multiaddr "^8.0.0" - multiaddr-to-uri "^6.0.0" - parse-duration "^0.4.4" - timeout-abort-controller "^1.1.1" - uint8arrays "^1.1.0" - -ipfs-http-client@^48.2.2: - version "48.2.2" - resolved "https://registry.yarnpkg.com/ipfs-http-client/-/ipfs-http-client-48.2.2.tgz#b570fb99866f94df1c394a6101a2eb750ff46599" - integrity sha512-f3ppfWe913SJLvunm0UgqdA1dxVZSGQJPaEVJtqgjxPa5x0fPDiBDdo60g2MgkW1W6bhF9RGlxvHHIE9sv/tdg== - dependencies: - any-signal "^2.0.0" - bignumber.js "^9.0.0" - cids "^1.1.5" - debug "^4.1.1" - form-data "^3.0.0" - ipfs-core-types "^0.2.1" - ipfs-core-utils "^0.6.1" - ipfs-utils "^5.0.0" - ipld-block "^0.11.0" - ipld-dag-cbor "^0.17.0" - ipld-dag-pb "^0.20.0" - ipld-raw "^6.0.0" - it-last "^1.0.4" - it-map "^1.0.4" - it-tar "^1.2.2" - it-to-stream "^0.1.2" - merge-options "^2.0.0" - multiaddr "^8.0.0" - multibase "^3.0.0" - multicodec "^2.0.1" - multihashes "^3.0.1" - nanoid "^3.1.12" - native-abort-controller "~0.0.3" - parse-duration "^0.4.4" - stream-to-it "^0.2.2" - uint8arrays "^1.1.0" - -ipfs-utils@^5.0.0: - version "5.0.1" - resolved "https://registry.yarnpkg.com/ipfs-utils/-/ipfs-utils-5.0.1.tgz#7c0053d5e77686f45577257a73905d4523e6b4f7" - integrity sha512-28KZPgO4Uf5duT2ORLAYfboUp98iUshDD7yRAfbNxNAR8Dtidfn6o20rZfoXnkri2zKBVIPlJkuCPmPJB+6erg== - dependencies: - abort-controller "^3.0.0" - any-signal "^2.1.0" - buffer "^6.0.1" - electron-fetch "^1.7.2" - err-code "^2.0.0" - fs-extra "^9.0.1" - is-electron "^2.2.0" - iso-url "^1.0.0" - it-glob "0.0.10" - it-to-stream "^0.1.2" - merge-options "^2.0.0" - nanoid "^3.1.3" - native-abort-controller "0.0.3" - native-fetch "^2.0.0" - node-fetch "^2.6.0" - stream-to-it "^0.2.0" - -ipld-block@^0.11.0: - version "0.11.1" - resolved "https://registry.yarnpkg.com/ipld-block/-/ipld-block-0.11.1.tgz#c3a7b41aee3244187bd87a73f980e3565d299b6e" - integrity sha512-sDqqLqD5qh4QzGq6ssxLHUCnH4emCf/8F8IwjQM2cjEEIEHMUj57XhNYgmGbemdYPznUhffxFGEHsruh5+HQRw== - dependencies: - cids "^1.0.0" - -ipld-dag-cbor@^0.17.0: - version "0.17.1" - resolved "https://registry.yarnpkg.com/ipld-dag-cbor/-/ipld-dag-cbor-0.17.1.tgz#842e6c250603e5791049168831a425ec03471fb1" - integrity sha512-Bakj/cnxQBdscORyf4LRHxQJQfoaY8KWc7PWROQgX+aw5FCzBt8ga0VM/59K+ABOznsqNvyLR/wz/oYImOpXJw== - dependencies: - borc "^2.1.2" - cids "^1.0.0" - is-circular "^1.0.2" - multicodec "^3.0.1" - multihashing-async "^2.0.0" - uint8arrays "^2.1.3" - -ipld-dag-pb@^0.20.0: - version "0.20.0" - resolved "https://registry.yarnpkg.com/ipld-dag-pb/-/ipld-dag-pb-0.20.0.tgz#025c0343aafe6cb9db395dd1dc93c8c60a669360" - integrity sha512-zfM0EdaolqNjAxIrtpuGKvXxWk5YtH9jKinBuQGTcngOsWFQhyybGCTJHGNGGtRjHNJi2hz5Udy/8pzv4kcKyg== - dependencies: - cids "^1.0.0" - class-is "^1.1.0" - multicodec "^2.0.0" - multihashing-async "^2.0.0" - protons "^2.0.0" - reset "^0.1.0" - run "^1.4.0" - stable "^0.1.8" - uint8arrays "^1.0.0" - -ipld-raw@^6.0.0: - version "6.0.0" - resolved "https://registry.yarnpkg.com/ipld-raw/-/ipld-raw-6.0.0.tgz#74d947fcd2ce4e0e1d5bb650c1b5754ed8ea6da0" - integrity sha512-UK7fjncAzs59iu/o2kwYtb8jgTtW6B+cNWIiNpAJkfRwqoMk1xD/6i25ktzwe4qO8gQgoR9RxA5ibC23nq8BLg== - dependencies: - cids "^1.0.0" - multicodec "^2.0.0" - multihashing-async "^2.0.0" - -is-accessor-descriptor@^0.1.6: - version "0.1.6" - resolved "https://registry.yarnpkg.com/is-accessor-descriptor/-/is-accessor-descriptor-0.1.6.tgz#a9e12cb3ae8d876727eeef3843f8a0897b5c98d6" - integrity sha1-qeEss66Nh2cn7u84Q/igiXtcmNY= - dependencies: - kind-of "^3.0.2" - -is-accessor-descriptor@^1.0.0: - version "1.0.0" - resolved "https://registry.yarnpkg.com/is-accessor-descriptor/-/is-accessor-descriptor-1.0.0.tgz#169c2f6d3df1f992618072365c9b0ea1f6878656" - integrity sha512-m5hnHTkcVsPfqx3AKlyttIPb7J+XykHvJP2B9bZDjlhLIoEq4XoK64Vg7boZlVWYK6LUY94dYPEE7Lh0ZkZKcQ== - dependencies: - kind-of "^6.0.0" - -is-arguments@^1.0.4, is-arguments@^1.1.0: - version "1.1.0" - resolved "https://registry.yarnpkg.com/is-arguments/-/is-arguments-1.1.0.tgz#62353031dfbee07ceb34656a6bde59efecae8dd9" - integrity sha512-1Ij4lOMPl/xB5kBDn7I+b2ttPMKa8szhEIrXDuXQD/oe3HJLTLhqhgGspwgyGd6MOywBUqVvYicF72lkgDnIHg== - dependencies: - call-bind "^1.0.0" - -is-arrayish@^0.2.1: - version "0.2.1" - resolved "https://registry.yarnpkg.com/is-arrayish/-/is-arrayish-0.2.1.tgz#77c99840527aa8ecb1a8ba697b80645a7a926a9d" - integrity sha1-d8mYQFJ6qOyxqLppe4BkWnqSap0= - -is-bigint@^1.0.1: - version "1.0.1" - resolved "https://registry.yarnpkg.com/is-bigint/-/is-bigint-1.0.1.tgz#6923051dfcbc764278540b9ce0e6b3213aa5ebc2" - integrity sha512-J0ELF4yHFxHy0cmSxZuheDOz2luOdVvqjwmEcj8H/L1JHeuEDSDbeRP+Dk9kFVk5RTFzbucJ2Kb9F7ixY2QaCg== - -is-binary-path@^1.0.0: - version "1.0.1" - resolved "https://registry.yarnpkg.com/is-binary-path/-/is-binary-path-1.0.1.tgz#75f16642b480f187a711c814161fd3a4a7655898" - integrity sha1-dfFmQrSA8YenEcgUFh/TpKdlWJg= - dependencies: - binary-extensions "^1.0.0" - -is-binary-path@~2.1.0: - version "2.1.0" - resolved "https://registry.yarnpkg.com/is-binary-path/-/is-binary-path-2.1.0.tgz#ea1f7f3b80f064236e83470f86c09c254fb45b09" - integrity sha512-ZMERYes6pDydyuGidse7OsHxtbI7WVeUEozgR/g7rd0xUimYNlvZRE/K2MgZTjWy725IfelLeVcEM97mmtRGXw== - dependencies: - binary-extensions "^2.0.0" - -is-boolean-object@^1.1.0: - version "1.1.0" - resolved "https://registry.yarnpkg.com/is-boolean-object/-/is-boolean-object-1.1.0.tgz#e2aaad3a3a8fca34c28f6eee135b156ed2587ff0" - integrity sha512-a7Uprx8UtD+HWdyYwnD1+ExtTgqQtD2k/1yJgtXP6wnMm8byhkoTZRl+95LLThpzNZJ5aEvi46cdH+ayMFRwmA== - dependencies: - call-bind "^1.0.0" - -is-buffer@^1.1.5: - version "1.1.6" - resolved "https://registry.yarnpkg.com/is-buffer/-/is-buffer-1.1.6.tgz#efaa2ea9daa0d7ab2ea13a97b2b8ad51fefbe8be" - integrity sha512-NcdALwpXkTm5Zvvbk7owOUSvVvBKDgKP5/ewfXEznmQFfs4ZRmanOeKBTjRVjka3QFoN6XJ+9F3USqfHqTaU5w== - -is-buffer@^2.0.2: - version "2.0.4" - resolved "https://registry.yarnpkg.com/is-buffer/-/is-buffer-2.0.4.tgz#3e572f23c8411a5cfd9557c849e3665e0b290623" - integrity sha512-Kq1rokWXOPXWuaMAqZiJW4XxsmD9zGx9q4aePabbn3qCRGedtH7Cm+zV8WETitMfu1wdh+Rvd6w5egwSngUX2A== - -is-buffer@~2.0.3: - version "2.0.5" - resolved "https://registry.yarnpkg.com/is-buffer/-/is-buffer-2.0.5.tgz#ebc252e400d22ff8d77fa09888821a24a658c191" - integrity sha512-i2R6zNFDwgEHJyQUtJEk0XFi1i0dPFn/oqjK3/vPCcDeJvW5NQ83V8QbicfF1SupOaB0h8ntgBC2YiE7dfyctQ== - -is-callable@^1.1.3, is-callable@^1.1.4, is-callable@^1.2.3: - version "1.2.3" - resolved "https://registry.yarnpkg.com/is-callable/-/is-callable-1.2.3.tgz#8b1e0500b73a1d76c70487636f368e519de8db8e" - integrity sha512-J1DcMe8UYTBSrKezuIUTUwjXsho29693unXM2YhJUTR2txK/eG47bvNa/wipPFmZFgr/N6f1GA66dv0mEyTIyQ== - -is-capitalized@^1.0.0: - version "1.0.0" - resolved "https://registry.yarnpkg.com/is-capitalized/-/is-capitalized-1.0.0.tgz#4c8464b4d91d3e4eeb44889dd2cd8f1b0ac4c136" - integrity sha1-TIRktNkdPk7rRIid0s2PGwrEwTY= - -is-ci@^2.0.0: - version "2.0.0" - resolved "https://registry.yarnpkg.com/is-ci/-/is-ci-2.0.0.tgz#6bc6334181810e04b5c22b3d589fdca55026404c" - integrity sha512-YfJT7rkpQB0updsdHLGWrvhBJfcfzNNawYDNIyQXJz0IViGf75O8EBPKSdvw2rF+LGCsX4FZ8tcr3b19LcZq4w== - dependencies: - ci-info "^2.0.0" - -is-circular@^1.0.2: - version "1.0.2" - resolved "https://registry.yarnpkg.com/is-circular/-/is-circular-1.0.2.tgz#2e0ab4e9835f4c6b0ea2b9855a84acd501b8366c" - integrity sha512-YttjnrswnUYRVJvxCvu8z+PGMUSzC2JttP0OEXezlAEdp3EXzhf7IZ3j0gRAybJBQupedIZFhY61Tga6E0qASA== - -is-class@0.0.4: - version "0.0.4" - resolved "https://registry.yarnpkg.com/is-class/-/is-class-0.0.4.tgz#e057451705bb34e39e3e33598c93a9837296b736" - integrity sha1-4FdFFwW7NOOePjNZjJOpg3KWtzY= - -is-core-module@^2.2.0: - version "2.2.0" - resolved "https://registry.yarnpkg.com/is-core-module/-/is-core-module-2.2.0.tgz#97037ef3d52224d85163f5597b2b63d9afed981a" - integrity sha512-XRAfAdyyY5F5cOXn7hYQDqh2Xmii+DEfIcQGxK/uNwMHhIkPWO0g8msXcbzLe+MpGoR951MlqM/2iIlU4vKDdQ== - dependencies: - has "^1.0.3" - -is-data-descriptor@^0.1.4: - version "0.1.4" - resolved "https://registry.yarnpkg.com/is-data-descriptor/-/is-data-descriptor-0.1.4.tgz#0b5ee648388e2c860282e793f1856fec3f301b56" - integrity sha1-C17mSDiOLIYCgueT8YVv7D8wG1Y= - dependencies: - kind-of "^3.0.2" - -is-data-descriptor@^1.0.0: - version "1.0.0" - resolved "https://registry.yarnpkg.com/is-data-descriptor/-/is-data-descriptor-1.0.0.tgz#d84876321d0e7add03990406abbbbd36ba9268c7" - integrity sha512-jbRXy1FmtAoCjQkVmIVYwuuqDFUbaOeDjmed1tOGPrsMhtJA4rD9tkgA0F1qJ3gRFRXcHYVkdeaP50Q5rE/jLQ== - dependencies: - kind-of "^6.0.0" - -is-date-object@^1.0.1: - version "1.0.2" - resolved "https://registry.yarnpkg.com/is-date-object/-/is-date-object-1.0.2.tgz#bda736f2cd8fd06d32844e7743bfa7494c3bfd7e" - integrity sha512-USlDT524woQ08aoZFzh3/Z6ch9Y/EWXEHQ/AaRN0SkKq4t2Jw2R2339tSXmwuVoY7LLlBCbOIlx2myP/L5zk0g== - -is-descriptor@^0.1.0: - version "0.1.6" - resolved "https://registry.yarnpkg.com/is-descriptor/-/is-descriptor-0.1.6.tgz#366d8240dde487ca51823b1ab9f07a10a78251ca" - 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.yarnpkg.com/is-descriptor/-/is-descriptor-1.0.2.tgz#3b159746a66604b04f8c81524ba365c5f14d86ec" - 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: - version "2.2.1" - resolved "https://registry.yarnpkg.com/is-docker/-/is-docker-2.2.1.tgz#33eeabe23cfe86f14bde4408a02c0cfb853acdaa" - integrity sha512-F+i2BKsFrH66iaUFc0woD8sLy8getkwTwtOBjvs56Cx4CgJDeKQeqfz8wAYiSb8JOprWhHH5p77PbmYCvvUuXQ== - -is-dotfile@^1.0.0: - version "1.0.3" - resolved "https://registry.yarnpkg.com/is-dotfile/-/is-dotfile-1.0.3.tgz#a6a2f32ffd2dfb04f5ca25ecd0f6b83cf798a1e1" - integrity sha1-pqLzL/0t+wT1yiXs0Pa4PPeYoeE= - -is-electron@^2.2.0: - version "2.2.0" - resolved "https://registry.yarnpkg.com/is-electron/-/is-electron-2.2.0.tgz#8943084f09e8b731b3a7a0298a7b5d56f6b7eef0" - integrity sha512-SpMppC2XR3YdxSzczXReBjqs2zGscWQpBIKqwXYBFic0ERaxNVgwLCHwOLZeESfdJQjX0RDvrJ1lBXX2ij+G1Q== - -is-equal-shallow@^0.1.3: - version "0.1.3" - resolved "https://registry.yarnpkg.com/is-equal-shallow/-/is-equal-shallow-0.1.3.tgz#2238098fc221de0bcfa5d9eac4c45d638aa1c534" - integrity sha1-IjgJj8Ih3gvPpdnqxMRdY4qhxTQ= - dependencies: - is-primitive "^2.0.0" - -is-extendable@^0.1.0, is-extendable@^0.1.1: - version "0.1.1" - resolved "https://registry.yarnpkg.com/is-extendable/-/is-extendable-0.1.1.tgz#62b110e289a471418e3ec36a617d472e301dfc89" - integrity sha1-YrEQ4omkcUGOPsNqYX1HLjAd/Ik= - -is-extendable@^1.0.1: - version "1.0.1" - resolved "https://registry.yarnpkg.com/is-extendable/-/is-extendable-1.0.1.tgz#a7470f9e426733d81bd81e1155264e3a3507cab4" - integrity sha512-arnXMxT1hhoKo9k1LZdmlNyJdDDfy2v0fXjFlmok4+i8ul/6WlbVge9bhM74OpNPQPMGUToDtz+KXa1PneJxOA== - dependencies: - is-plain-object "^2.0.4" - -is-extglob@^1.0.0: - version "1.0.0" - resolved "https://registry.yarnpkg.com/is-extglob/-/is-extglob-1.0.0.tgz#ac468177c4943405a092fc8f29760c6ffc6206c0" - integrity sha1-rEaBd8SUNAWgkvyPKXYMb/xiBsA= - -is-extglob@^2.1.0, is-extglob@^2.1.1: - version "2.1.1" - resolved "https://registry.yarnpkg.com/is-extglob/-/is-extglob-2.1.1.tgz#a88c02535791f02ed37c76a1b9ea9773c833f8c2" - integrity sha1-qIwCU1eR8C7TfHahueqXc8gz+MI= - -is-finite@^1.0.0: - version "1.1.0" - resolved "https://registry.yarnpkg.com/is-finite/-/is-finite-1.1.0.tgz#904135c77fb42c0641d6aa1bcdbc4daa8da082f3" - integrity sha512-cdyMtqX/BOqqNBBiKlIVkytNHm49MtMlYyn1zxzvJKWmFMlGzm+ry5BBfYyeY9YmNKbRSo/o7OX9w9ale0wg3w== - -is-fullwidth-code-point@^1.0.0: - version "1.0.0" - resolved "https://registry.yarnpkg.com/is-fullwidth-code-point/-/is-fullwidth-code-point-1.0.0.tgz#ef9e31386f031a7f0d643af82fde50c457ef00cb" - integrity sha1-754xOG8DGn8NZDr4L95QxFfvAMs= - dependencies: - number-is-nan "^1.0.0" - -is-fullwidth-code-point@^2.0.0: - version "2.0.0" - resolved "https://registry.yarnpkg.com/is-fullwidth-code-point/-/is-fullwidth-code-point-2.0.0.tgz#a3b30a5c4f199183167aaab93beefae3ddfb654f" - integrity sha1-o7MKXE8ZkYMWeqq5O+764937ZU8= - -is-fullwidth-code-point@^3.0.0: - version "3.0.0" - resolved "https://registry.yarnpkg.com/is-fullwidth-code-point/-/is-fullwidth-code-point-3.0.0.tgz#f116f8064fe90b3f7844a38997c0b75051269f1d" - integrity sha512-zymm5+u+sCsSWyD9qNaejV3DFvhCKclKdizYaJUuHA83RLjb7nSuGnddCHGv0hk+KY7BMAlsWeK4Ueg6EV6XQg== - -is-function@^1.0.1: - version "1.0.1" - resolved "https://registry.yarnpkg.com/is-function/-/is-function-1.0.1.tgz#12cfb98b65b57dd3d193a3121f5f6e2f437602b5" - integrity sha1-Es+5i2W1fdPRk6MSH19uL0N2ArU= - -is-generator-function@^1.0.7: - version "1.0.8" - resolved "https://registry.yarnpkg.com/is-generator-function/-/is-generator-function-1.0.8.tgz#dfb5c2b120e02b0a8d9d2c6806cd5621aa922f7b" - integrity sha512-2Omr/twNtufVZFr1GhxjOMFPAj2sjc/dKaIqBhvo4qciXfJmITGH6ZGd8eZYNHza8t1y0e01AuqRhJwfWp26WQ== - -is-glob@4.0.1, is-glob@^4.0.0, is-glob@^4.0.1, is-glob@~4.0.1: - version "4.0.1" - resolved "https://registry.yarnpkg.com/is-glob/-/is-glob-4.0.1.tgz#7567dbe9f2f5e2467bc77ab83c4a29482407a5dc" - integrity sha512-5G0tKtBTFImOqDnLB2hG6Bp2qcKEFduo4tZu9MT/H6NQv/ghhy30o55ufafxJ/LdH79LLs2Kfrn85TLKyA7BUg== - dependencies: - is-extglob "^2.1.1" - -is-glob@^2.0.0, is-glob@^2.0.1: - version "2.0.1" - resolved "https://registry.yarnpkg.com/is-glob/-/is-glob-2.0.1.tgz#d096f926a3ded5600f3fdfd91198cb0888c2d863" - integrity sha1-0Jb5JqPe1WAPP9/ZEZjLCIjC2GM= - dependencies: - is-extglob "^1.0.0" - -is-glob@^3.1.0: - version "3.1.0" - resolved "https://registry.yarnpkg.com/is-glob/-/is-glob-3.1.0.tgz#7ba5ae24217804ac70707b96922567486cc3e84a" - integrity sha1-e6WuJCF4BKxwcHuWkiVnSGzD6Eo= - dependencies: - is-extglob "^2.1.0" - -is-hex-prefixed@1.0.0: - version "1.0.0" - resolved "https://registry.yarnpkg.com/is-hex-prefixed/-/is-hex-prefixed-1.0.0.tgz#7d8d37e6ad77e5d127148913c573e082d777f554" - integrity sha1-fY035q135dEnFIkTxXPggtd39VQ= - -is-ip@^3.1.0: - version "3.1.0" - resolved "https://registry.yarnpkg.com/is-ip/-/is-ip-3.1.0.tgz#2ae5ddfafaf05cb8008a62093cf29734f657c5d8" - integrity sha512-35vd5necO7IitFPjd/YBeqwWnyDWbuLH9ZXQdMfDA8TEo7pv5X8yfrvVO3xbJbLUlERCMvf6X0hTUamQxCYJ9Q== - dependencies: - ip-regex "^4.0.0" - -is-lower-case@^1.1.0: - version "1.1.3" - resolved "https://registry.yarnpkg.com/is-lower-case/-/is-lower-case-1.1.3.tgz#7e147be4768dc466db3bfb21cc60b31e6ad69393" - integrity sha1-fhR75HaNxGbbO/shzGCzHmrWk5M= - dependencies: - lower-case "^1.1.0" - -is-map@^2.0.2: - version "2.0.2" - resolved "https://registry.yarnpkg.com/is-map/-/is-map-2.0.2.tgz#00922db8c9bf73e81b7a335827bc2a43f2b91127" - integrity sha512-cOZFQQozTha1f4MxLFzlgKYPTyj26picdZTx82hbc/Xf4K/tZOOXSCkMvU4pKioRXGDLJRn0GM7Upe7kR721yg== - -is-natural-number@^4.0.1: - version "4.0.1" - resolved "https://registry.yarnpkg.com/is-natural-number/-/is-natural-number-4.0.1.tgz#ab9d76e1db4ced51e35de0c72ebecf09f734cde8" - integrity sha1-q5124dtM7VHjXeDHLr7PCfc0zeg= - -is-negative-zero@^2.0.1: - version "2.0.1" - resolved "https://registry.yarnpkg.com/is-negative-zero/-/is-negative-zero-2.0.1.tgz#3de746c18dda2319241a53675908d8f766f11c24" - integrity sha512-2z6JzQvZRa9A2Y7xC6dQQm4FSTSTNWjKIYYTt4246eMTJmIo0Q+ZyOsU66X8lxK1AbB92dFeglPLrhwpeRKO6w== - -is-number-object@^1.0.4: - version "1.0.4" - resolved "https://registry.yarnpkg.com/is-number-object/-/is-number-object-1.0.4.tgz#36ac95e741cf18b283fc1ddf5e83da798e3ec197" - integrity sha512-zohwelOAur+5uXtk8O3GPQ1eAcu4ZX3UwxQhUlfFFMNpUd83gXgjbhJh6HmB6LUNV/ieOLQuDwJO3dWJosUeMw== - -is-number@^2.1.0: - version "2.1.0" - resolved "https://registry.yarnpkg.com/is-number/-/is-number-2.1.0.tgz#01fcbbb393463a548f2f466cce16dece49db908f" - integrity sha1-Afy7s5NGOlSPL0ZszhbezknbkI8= - dependencies: - kind-of "^3.0.2" - -is-number@^3.0.0: - version "3.0.0" - resolved "https://registry.yarnpkg.com/is-number/-/is-number-3.0.0.tgz#24fd6201a4782cf50561c810276afc7d12d71195" - integrity sha1-JP1iAaR4LPUFYcgQJ2r8fRLXEZU= - dependencies: - kind-of "^3.0.2" - -is-number@^4.0.0: - version "4.0.0" - resolved "https://registry.yarnpkg.com/is-number/-/is-number-4.0.0.tgz#0026e37f5454d73e356dfe6564699867c6a7f0ff" - integrity sha512-rSklcAIlf1OmFdyAqbnWTLVelsQ58uvZ66S/ZyawjWqIviTWCjg2PzVGw8WUA+nNuPTqb4wgA+NszrJ+08LlgQ== - -is-number@^7.0.0: - version "7.0.0" - resolved "https://registry.yarnpkg.com/is-number/-/is-number-7.0.0.tgz#7535345b896734d5f80c4d06c50955527a14f12b" - integrity sha512-41Cifkg6e8TylSpdtTpeLVMqvSBEVzTttHvERD741+pnZ8ANv0004MRL43QKPDlK9cGvNp6NZWZUBlbGXYxxng== - -is-obj@^1.0.0: - version "1.0.1" - resolved "https://registry.yarnpkg.com/is-obj/-/is-obj-1.0.1.tgz#3e4729ac1f5fde025cd7d83a896dab9f4f67db0f" - integrity sha1-PkcprB9f3gJc19g6iW2rn09n2w8= - -is-object@^1.0.1: - version "1.0.1" - resolved "https://registry.yarnpkg.com/is-object/-/is-object-1.0.1.tgz#8952688c5ec2ffd6b03ecc85e769e02903083470" - integrity sha1-iVJojF7C/9awPsyF52ngKQMINHA= - -is-plain-obj@^1.1.0: - version "1.1.0" - resolved "https://registry.yarnpkg.com/is-plain-obj/-/is-plain-obj-1.1.0.tgz#71a50c8429dfca773c92a390a4a03b39fcd51d3e" - integrity sha1-caUMhCnfync8kqOQpKA7OfzVHT4= - -is-plain-obj@^2.0.0: - version "2.1.0" - resolved "https://registry.yarnpkg.com/is-plain-obj/-/is-plain-obj-2.1.0.tgz#45e42e37fccf1f40da8e5f76ee21515840c09287" - 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.yarnpkg.com/is-plain-object/-/is-plain-object-2.0.4.tgz#2c163b3fafb1b606d9d17928f05c2a1c38e07677" - integrity sha512-h5PpgXkWitc38BBMYawTYMWJHFZJVnBquFE57xFpjB8pJFiF6gZ+bU+WyI/yqXiFR5mdLsgYNaPe8uao6Uv9Og== - dependencies: - isobject "^3.0.1" - -is-posix-bracket@^0.1.0: - version "0.1.1" - resolved "https://registry.yarnpkg.com/is-posix-bracket/-/is-posix-bracket-0.1.1.tgz#3334dc79774368e92f016e6fbc0a88f5cd6e6bc4" - integrity sha1-MzTceXdDaOkvAW5vvAqI9c1ua8Q= - -is-primitive@^2.0.0: - version "2.0.0" - resolved "https://registry.yarnpkg.com/is-primitive/-/is-primitive-2.0.0.tgz#207bab91638499c07b2adf240a41a87210034575" - integrity sha1-IHurkWOEmcB7Kt8kCkGochADRXU= - -is-promise@4.0.0: - version "4.0.0" - resolved "https://registry.yarnpkg.com/is-promise/-/is-promise-4.0.0.tgz#42ff9f84206c1991d26debf520dd5c01042dd2f3" - integrity sha512-hvpoI6korhJMnej285dSg6nu1+e6uxs7zG3BYAm5byqDsgJNWwxzM6z6iZiAgQR4TJ30JmBTOwqZUw3WlyH3AQ== - -is-promise@^2.1: - version "2.1.0" - resolved "https://registry.yarnpkg.com/is-promise/-/is-promise-2.1.0.tgz#79a2a9ece7f096e80f36d2b2f3bc16c1ff4bf3fa" - integrity sha1-eaKp7OfwlugPNtKy87wWwf9L8/o= - -is-regex@^1.1.2: - version "1.1.2" - resolved "https://registry.yarnpkg.com/is-regex/-/is-regex-1.1.2.tgz#81c8ebde4db142f2cf1c53fc86d6a45788266251" - integrity sha512-axvdhb5pdhEVThqJzYXwMlVuZwC+FF2DpcOhTS+y/8jVq4trxyPgfcwIxIKiyeuLlSQYKkmUaPQJ8ZE4yNKXDg== - dependencies: - call-bind "^1.0.2" - has-symbols "^1.0.1" - -is-retry-allowed@^1.0.0: - version "1.2.0" - resolved "https://registry.yarnpkg.com/is-retry-allowed/-/is-retry-allowed-1.2.0.tgz#d778488bd0a4666a3be8a1482b9f2baafedea8b4" - integrity sha512-RUbUeKwvm3XG2VYamhJL1xFktgjvPzL0Hq8C+6yrWIswDy3BIXGqCxhxkc30N9jqK311gVU137K8Ei55/zVJRg== - -is-set@^2.0.2: - version "2.0.2" - resolved "https://registry.yarnpkg.com/is-set/-/is-set-2.0.2.tgz#90755fa4c2562dc1c5d4024760d6119b94ca18ec" - integrity sha512-+2cnTEZeY5z/iXGbLhPrOAaK/Mau5k5eXq9j14CpRTftq0pAJu2MwVRSZhyZWBzx3o6X795Lz6Bpb6R0GKf37g== - -is-stream@^1.0.0, is-stream@^1.0.1, is-stream@^1.1.0: - version "1.1.0" - resolved "https://registry.yarnpkg.com/is-stream/-/is-stream-1.1.0.tgz#12d4a3dd4e68e0b79ceb8dbc84173ae80d91ca44" - integrity sha1-EtSj3U5o4Lec6428hBc66A2RykQ= - -is-string@^1.0.5: - version "1.0.5" - resolved "https://registry.yarnpkg.com/is-string/-/is-string-1.0.5.tgz#40493ed198ef3ff477b8c7f92f644ec82a5cd3a6" - integrity sha512-buY6VNRjhQMiF1qWDouloZlQbRhDPCebwxSjxMjxgemYT46YMd2NR0/H+fBhEfWX4A/w9TBJ+ol+okqJKFE6vQ== - -is-symbol@^1.0.2, is-symbol@^1.0.3: - version "1.0.3" - resolved "https://registry.yarnpkg.com/is-symbol/-/is-symbol-1.0.3.tgz#38e1014b9e6329be0de9d24a414fd7441ec61937" - integrity sha512-OwijhaRSgqvhm/0ZdAcXNZt9lYdKFpcRDT5ULUuYXPoT794UNOdU+gpT6Rzo7b4V2HUl/op6GqY894AZwv9faQ== - dependencies: - has-symbols "^1.0.1" - -is-typed-array@^1.1.3: - version "1.1.5" - resolved "https://registry.yarnpkg.com/is-typed-array/-/is-typed-array-1.1.5.tgz#f32e6e096455e329eb7b423862456aa213f0eb4e" - integrity sha512-S+GRDgJlR3PyEbsX/Fobd9cqpZBuvUS+8asRqYDMLCb2qMzt1oz5m5oxQCxOgUDxiWsOVNi4yaF+/uvdlHlYug== - dependencies: - available-typed-arrays "^1.0.2" - call-bind "^1.0.2" - es-abstract "^1.18.0-next.2" - foreach "^2.0.5" - has-symbols "^1.0.1" - -is-typedarray@^1.0.0, is-typedarray@~1.0.0: - version "1.0.0" - resolved "https://registry.yarnpkg.com/is-typedarray/-/is-typedarray-1.0.0.tgz#e479c80858df0c1b11ddda6940f96011fcda4a9a" - integrity sha1-5HnICFjfDBsR3dppQPlgEfzaSpo= - -is-upper-case@^1.1.0: - version "1.1.2" - resolved "https://registry.yarnpkg.com/is-upper-case/-/is-upper-case-1.1.2.tgz#8d0b1fa7e7933a1e58483600ec7d9661cbaf756f" - integrity sha1-jQsfp+eTOh5YSDYA7H2WYcuvdW8= - dependencies: - upper-case "^1.1.0" - -is-utf8@^0.2.0: - version "0.2.1" - resolved "https://registry.yarnpkg.com/is-utf8/-/is-utf8-0.2.1.tgz#4b0da1442104d1b336340e80797e865cf39f7d72" - integrity sha1-Sw2hRCEE0bM2NA6AeX6GXPOffXI= - -is-valid-glob@^0.3.0: - version "0.3.0" - resolved "https://registry.yarnpkg.com/is-valid-glob/-/is-valid-glob-0.3.0.tgz#d4b55c69f51886f9b65c70d6c2622d37e29f48fe" - integrity sha1-1LVcafUYhvm2XHDWwmItN+KfSP4= - -is-windows@^1.0.1, is-windows@^1.0.2: - version "1.0.2" - resolved "https://registry.yarnpkg.com/is-windows/-/is-windows-1.0.2.tgz#d1850eb9791ecd18e6182ce12a30f396634bb19d" - integrity sha512-eXK1UInq2bPmjyX6e3VHIzMLobc4J94i4AWn+Hpq3OU5KkrRC96OAcR3PRJ/pGu6m8TRnBHP9dkXQVsT/COVIA== - -is-wsl@^2.1.1: - version "2.2.0" - resolved "https://registry.yarnpkg.com/is-wsl/-/is-wsl-2.2.0.tgz#74a4c76e77ca9fd3f932f290c17ea326cd157271" - integrity sha512-fKzAra0rGJUUBwGBgNkHZuToZcn+TtXHpeCgmkMJMMYx1sQDYaCSyjJBSCa2nH1DGm7s3n1oBnohoVTBaN7Lww== - dependencies: - is-docker "^2.0.0" - -isarray@0.0.1: - version "0.0.1" - resolved "https://registry.yarnpkg.com/isarray/-/isarray-0.0.1.tgz#8a18acfca9a8f4177e09abfc6038939b05d1eedf" - integrity sha1-ihis/Kmo9Bd+Cav8YDiTmwXR7t8= - -isarray@1.0.0, isarray@^1.0.0, isarray@~1.0.0: - version "1.0.0" - resolved "https://registry.yarnpkg.com/isarray/-/isarray-1.0.0.tgz#bb935d48582cba168c06834957a54a3e07124f11" - integrity sha1-u5NdSFgsuhaMBoNJV6VKPgcSTxE= - -isarray@^2.0.5: - version "2.0.5" - resolved "https://registry.yarnpkg.com/isarray/-/isarray-2.0.5.tgz#8af1e4c1221244cc62459faf38940d4e644a5723" - integrity sha512-xHjhDr3cNBK0BzdUJSPXZntQUx/mwMS5Rw4A7lPJ90XGAO6ISP/ePDNuo0vhqOZU+UD5JoodwCAAoZQd3FeAKw== - -isexe@^2.0.0: - version "2.0.0" - resolved "https://registry.yarnpkg.com/isexe/-/isexe-2.0.0.tgz#e8fbf374dc556ff8947a10dcb0572d633f2cfa10" - integrity sha1-6PvzdNxVb/iUehDcsFctYz8s+hA= - -iso-constants@^0.1.2: - version "0.1.2" - resolved "https://registry.yarnpkg.com/iso-constants/-/iso-constants-0.1.2.tgz#3d2456ed5aeaa55d18564f285ba02a47a0d885b4" - integrity sha512-OTCM5ZCQsHBCI4Wdu4tSxvDIkmDHd5EwJDps5mKqnQnWJSKlnwMs3EDZ4n3Fh1tmkWkDlyd2vCDbEYuPbyrUNQ== - -iso-random-stream@^2.0.0: - version "2.0.0" - resolved "https://registry.yarnpkg.com/iso-random-stream/-/iso-random-stream-2.0.0.tgz#3f0118166d5443148bbc134345fb100002ad0f1d" - integrity sha512-lGuIu104KfBV9ubYTSaE3GeAr6I69iggXxBHbTBc5u/XKlwlWl0LCytnkIZissaKqvxablwRD9B3ktVnmIUnEg== - dependencies: - events "^3.3.0" - readable-stream "^3.4.0" - -iso-url@^1.0.0: - version "1.1.5" - resolved "https://registry.yarnpkg.com/iso-url/-/iso-url-1.1.5.tgz#875a0f2bf33fa1fc200f8d89e3f49eee57a8f0d9" - integrity sha512-+3JqoKdBTGmyv9vOkS6b9iHhvK34UajfTibrH/1HOK8TI7K2VsM0qOCd+aJdWKtSOA8g3PqZfcwDmnR0p3klqQ== - -iso-url@~0.4.7: - version "0.4.7" - resolved "https://registry.yarnpkg.com/iso-url/-/iso-url-0.4.7.tgz#de7e48120dae46921079fe78f325ac9e9217a385" - integrity sha512-27fFRDnPAMnHGLq36bWTpKET+eiXct3ENlCcdcMdk+mjXrb2kw3mhBUg1B7ewAC0kVzlOPhADzQgz1SE6Tglog== - -isobject@^2.0.0: - version "2.1.0" - resolved "https://registry.yarnpkg.com/isobject/-/isobject-2.1.0.tgz#f065561096a3f1da2ef46272f815c840d87e0c89" - integrity sha1-8GVWEJaj8dou9GJy+BXIQNh+DIk= - dependencies: - isarray "1.0.0" - -isobject@^3.0.0, isobject@^3.0.1: - version "3.0.1" - resolved "https://registry.yarnpkg.com/isobject/-/isobject-3.0.1.tgz#4e431e92b11a9731636aa1f9c8d1ccbcfdab78df" - integrity sha1-TkMekrEalzFjaqH5yNHMvP2reN8= - -isobject@^4.0.0: - version "4.0.0" - resolved "https://registry.yarnpkg.com/isobject/-/isobject-4.0.0.tgz#3f1c9155e73b192022a80819bacd0343711697b0" - integrity sha512-S/2fF5wH8SJA/kmwr6HYhK/RI/OkhD84k8ntalo0iJjZikgq1XFvR5M8NPT1x5F7fBwCG3qHfnzeP/Vh/ZxCUA== - -isomorphic-ws@4.0.1, isomorphic-ws@^4.0.1: - version "4.0.1" - resolved "https://registry.yarnpkg.com/isomorphic-ws/-/isomorphic-ws-4.0.1.tgz#55fd4cd6c5e6491e76dc125938dd863f5cd4f2dc" - integrity sha512-BhBvN2MBpWTaSHdWRb/bwdZJ1WaehQ2L1KngkCkfLUGF0mAWAT1sQUQacEmQ0jXkFw/czDXPNQSL5u2/Krsz1w== - -isstream@~0.1.2: - version "0.1.2" - resolved "https://registry.yarnpkg.com/isstream/-/isstream-0.1.2.tgz#47e63f7af55afa6f92e1500e690eb8b8529c099a" - integrity sha1-R+Y/evVa+m+S4VAOaQ64uFKcCZo= - -isurl@^1.0.0-alpha5: - version "1.0.0" - resolved "https://registry.yarnpkg.com/isurl/-/isurl-1.0.0.tgz#b27f4f49f3cdaa3ea44a0a5b7f3462e6edc39d67" - integrity sha512-1P/yWsxPlDtn7QeRD+ULKQPaIaN6yF368GZ2vDfv0AL0NwpStafjWCDDdn0k8wgFMWpVAqG7oJhxHnlud42i9w== - dependencies: - has-to-string-tag-x "^1.2.0" - is-object "^1.0.1" - -it-all@^1.0.4: - version "1.0.5" - resolved "https://registry.yarnpkg.com/it-all/-/it-all-1.0.5.tgz#e880510d7e73ebb79063a76296a2eb3cb77bbbdb" - integrity sha512-ygD4kA4vp8fi+Y+NBgEKt6W06xSbv6Ub/0V8d1r3uCyJ9Izwa1UspkIOlqY9fOee0Z1w3WRo1+VWyAU4DgtufA== - -it-concat@^1.0.0: - version "1.0.3" - resolved "https://registry.yarnpkg.com/it-concat/-/it-concat-1.0.3.tgz#84db9376e4c77bf7bc1fd933bb90f184e7cef32b" - integrity sha512-sjeZQ1BWQ9U/W2oI09kZgUyvSWzQahTkOkLIsnEPgyqZFaF9ME5gV6An4nMjlyhXKWQMKEakQU8oRHs2SdmeyA== - dependencies: - bl "^4.0.0" - -it-drain@^1.0.3: - version "1.0.4" - resolved "https://registry.yarnpkg.com/it-drain/-/it-drain-1.0.4.tgz#15ee0e90fba4b5bc8cff1c61b8c59d4203293baa" - integrity sha512-coB7mcyZ4lWBQKoQGJuqM+P94pvpn2T3KY27vcVWPqeB1WmoysRC76VZnzAqrBWzpWcoEJMjZ+fsMBslxNaWfQ== - -it-glob@0.0.10: - version "0.0.10" - resolved "https://registry.yarnpkg.com/it-glob/-/it-glob-0.0.10.tgz#4defd9286f693847c3ff483d2ff65f22e1359ad8" - integrity sha512-p1PR15djgPV7pxdLOW9j4WcJdla8+91rJdUU2hU2Jm68vkxpIEXK55VHBeH8Lvqh2vqLtM83t8q4BuJxue6niA== - dependencies: - fs-extra "^9.0.1" - minimatch "^3.0.4" - -it-last@^1.0.4: - version "1.0.5" - resolved "https://registry.yarnpkg.com/it-last/-/it-last-1.0.5.tgz#5c711c7d58948bcbc8e0cb129af3a039ba2a585b" - integrity sha512-PV/2S4zg5g6dkVuKfgrQfN2rUN4wdTI1FzyAvU+i8RV96syut40pa2s9Dut5X7SkjwA3P0tOhLABLdnOJ0Y/4Q== - -it-map@^1.0.4: - version "1.0.5" - resolved "https://registry.yarnpkg.com/it-map/-/it-map-1.0.5.tgz#2f6a9b8f0ba1ed1aeadabf86e00b38c73a1dc299" - integrity sha512-EElupuWhHVStUgUY+OfTJIS2MZed96lDrAXzJUuqiiqLnIKoBRqtX1ZG2oR0bGDsSppmz83MtzCeKLZ9TVAUxQ== - -it-peekable@^1.0.1: - version "1.0.2" - resolved "https://registry.yarnpkg.com/it-peekable/-/it-peekable-1.0.2.tgz#3b2c7948b765f35b3bb07abbb9b2108c644e73c1" - integrity sha512-LRPLu94RLm+lxLZbChuc9iCXrKCOu1obWqxfaKhF00yIp30VGkl741b5P60U+rdBxuZD/Gt1bnmakernv7bVFg== - -it-reader@^2.0.0: - version "2.1.0" - resolved "https://registry.yarnpkg.com/it-reader/-/it-reader-2.1.0.tgz#b1164be343f8538d8775e10fb0339f61ccf71b0f" - integrity sha512-hSysqWTO9Tlwc5EGjVf8JYZzw0D2FsxD/g+eNNWrez9zODxWt6QlN6JAMmycK72Mv4jHEKEXoyzUN4FYGmJaZw== - dependencies: - bl "^4.0.0" - -it-tar@^1.2.2: - version "1.2.2" - resolved "https://registry.yarnpkg.com/it-tar/-/it-tar-1.2.2.tgz#8d79863dad27726c781a4bcc491f53c20f2866cf" - integrity sha512-M8V4a9I+x/vwXTjqvixcEZbQZHjwDIb8iUQ+D4M2QbhAdNs3WKVSl+45u5/F2XFx6jYMFOGzMVlKNK/uONgNIA== - dependencies: - bl "^4.0.0" - buffer "^5.4.3" - iso-constants "^0.1.2" - it-concat "^1.0.0" - it-reader "^2.0.0" - p-defer "^3.0.0" - -it-to-stream@^0.1.2: - version "0.1.2" - resolved "https://registry.yarnpkg.com/it-to-stream/-/it-to-stream-0.1.2.tgz#7163151f75b60445e86b8ab1a968666acaacfe7b" - integrity sha512-DTB5TJRZG3untmZehcaFN0kGWl2bNv7tnJRgQHAO9QEt8jfvVRrebZtnD5NZd4SCj4WVPjl0LSrugNWE/UaZRQ== - dependencies: - buffer "^5.6.0" - fast-fifo "^1.0.0" - get-iterator "^1.0.2" - p-defer "^3.0.0" - p-fifo "^1.0.0" - readable-stream "^3.6.0" - -iter-tools@^7.0.2: - version "7.1.3" - resolved "https://registry.yarnpkg.com/iter-tools/-/iter-tools-7.1.3.tgz#eeafa7cde16ae8ff3b67ce6890f5e2f745a65fe7" - integrity sha512-Pnd3FVHgKnDHrTVjggXLMq5O/P60fho5iL0a0kkdLcofxX8STHw6cgYZ4ZHQS3Zb4Hg/VeqeNUxDs4vlVwUL4A== - dependencies: - "@babel/runtime" "^7.12.1" - -iterall@^1.1.3, iterall@^1.2.1, iterall@^1.3.0: - version "1.3.0" - resolved "https://registry.yarnpkg.com/iterall/-/iterall-1.3.0.tgz#afcb08492e2915cbd8a0884eb93a8c94d0d72fea" - integrity sha512-QZ9qOMdF+QLHxy1QIpUHUU1D5pS2CG2P69LF6L6CPjPYA/XMOmKV3PZpawHoAjHNyB0swdVTRxdYT4tbBbxqwg== - -iterate-iterator@^1.0.1: - version "1.0.1" - resolved "https://registry.yarnpkg.com/iterate-iterator/-/iterate-iterator-1.0.1.tgz#1693a768c1ddd79c969051459453f082fe82e9f6" - integrity sha512-3Q6tudGN05kbkDQDI4CqjaBf4qf85w6W6GnuZDtUVYwKgtC1q8yxYX7CZed7N+tLzQqS6roujWvszf13T+n9aw== - -iterate-value@^1.0.0: - version "1.0.2" - resolved "https://registry.yarnpkg.com/iterate-value/-/iterate-value-1.0.2.tgz#935115bd37d006a52046535ebc8d07e9c9337f57" - integrity sha512-A6fMAio4D2ot2r/TYzr4yUWrmwNdsN5xL7+HUiyACE4DXm+q8HtPcnFTp+NnW3k4N05tZ7FVYFFb2CR13NxyHQ== - dependencies: - es-get-iterator "^1.0.2" - iterate-iterator "^1.0.1" - -js-sha3@0.5.7, js-sha3@^0.5.7: - version "0.5.7" - resolved "https://registry.yarnpkg.com/js-sha3/-/js-sha3-0.5.7.tgz#0d4ffd8002d5333aabaf4a23eed2f6374c9f28e7" - integrity sha1-DU/9gALVMzqrr0oj7tL2N0yfKOc= - -js-sha3@0.8.0, js-sha3@^0.8.0: - version "0.8.0" - resolved "https://registry.yarnpkg.com/js-sha3/-/js-sha3-0.8.0.tgz#b9b7a5da73afad7dedd0f8c463954cbde6818840" - integrity sha512-gF1cRrHhIzNfToc802P800N8PpXS+evLLXfsVpowqmAFR9uwbi89WvXg2QspOmXL8QL86J4T1EpFu+yUkwJY3Q== - -"js-tokens@^3.0.0 || ^4.0.0", js-tokens@^4.0.0: - version "4.0.0" - resolved "https://registry.yarnpkg.com/js-tokens/-/js-tokens-4.0.0.tgz#19203fb59991df98e3a287050d4647cdeaf32499" - integrity sha512-RdJUflcE3cUzKiMqQgsCu06FPu9UdIJO0beYbPhHN4k6apgJtifcoCtT9bcxOpYBtpD2kCM6Sbzg4CausW/PKQ== - -js-tokens@^3.0.2: - version "3.0.2" - resolved "https://registry.yarnpkg.com/js-tokens/-/js-tokens-3.0.2.tgz#9866df395102130e38f7f996bceb65443209c25b" - integrity sha1-mGbfOVECEw449/mWvOtlRDIJwls= - -js-yaml@3.13.1, js-yaml@3.x, js-yaml@^3.13.1: - version "3.13.1" - resolved "https://registry.yarnpkg.com/js-yaml/-/js-yaml-3.13.1.tgz#aff151b30bfdfa8e49e05da22e7415e9dfa37847" - integrity sha512-YfbcO7jXDdyj0DGxYVSlSeQNHbD7XPWvrVWeVUujrQEoZzWJIRrCPoyk6kL6IAjAG2IolMK4T0hNUe0HOUs5Jw== - dependencies: - argparse "^1.0.7" - esprima "^4.0.0" - -js-yaml@3.14.0: - version "3.14.0" - resolved "https://registry.yarnpkg.com/js-yaml/-/js-yaml-3.14.0.tgz#a7a34170f26a21bb162424d8adacb4113a69e482" - integrity sha512-/4IbIeHcD9VMHFqDR/gQ7EdZdLimOvW2DdcxFjdyyZ9NsbS+ccrXqVWDtab/lRl5AlUqmpBx8EhPaWR+OtY17A== - dependencies: - argparse "^1.0.7" - esprima "^4.0.0" - -jsan@^3.1.13: - version "3.1.13" - resolved "https://registry.yarnpkg.com/jsan/-/jsan-3.1.13.tgz#4de8c7bf8d1cfcd020c313d438f930cec4b91d86" - integrity sha512-9kGpCsGHifmw6oJet+y8HaCl14y7qgAsxVdV3pCHDySNR3BfDC30zgkssd7x5LRVAT22dnpbe9JdzzmXZnq9/g== - -jsbn@~0.1.0: - version "0.1.1" - resolved "https://registry.yarnpkg.com/jsbn/-/jsbn-0.1.1.tgz#a5e654c2e5a2deb5f201d96cefbca80c0ef2f513" - integrity sha1-peZUwuWi3rXyAdls77yoDA7y9RM= - -jsdom@^7.0.2: - version "7.2.2" - resolved "https://registry.yarnpkg.com/jsdom/-/jsdom-7.2.2.tgz#40b402770c2bda23469096bee91ab675e3b1fc6e" - integrity sha1-QLQCdwwr2iNGkJa+6Rq2deOx/G4= - dependencies: - abab "^1.0.0" - acorn "^2.4.0" - acorn-globals "^1.0.4" - cssom ">= 0.3.0 < 0.4.0" - cssstyle ">= 0.2.29 < 0.3.0" - escodegen "^1.6.1" - nwmatcher ">= 1.3.7 < 2.0.0" - parse5 "^1.5.1" - request "^2.55.0" - sax "^1.1.4" - symbol-tree ">= 3.1.0 < 4.0.0" - tough-cookie "^2.2.0" - webidl-conversions "^2.0.0" - whatwg-url-compat "~0.6.5" - xml-name-validator ">= 2.0.1 < 3.0.0" - -jsesc@^1.3.0: - version "1.3.0" - resolved "https://registry.yarnpkg.com/jsesc/-/jsesc-1.3.0.tgz#46c3fec8c1892b12b0833db9bc7622176dbab34b" - integrity sha1-RsP+yMGJKxKwgz25vHYiF226s0s= - -jsesc@^2.5.1: - version "2.5.2" - resolved "https://registry.yarnpkg.com/jsesc/-/jsesc-2.5.2.tgz#80564d2e483dacf6e8ef209650a67df3f0c283a4" - integrity sha512-OYu7XEzjkCQ3C5Ps3QIZsQfNpqoJyZZA99wd9aWd05NCtC5pWOkShK2mkL6HXQR6/Cy2lbNdPlZBpuQHXE63gA== - -json-buffer@3.0.0: - version "3.0.0" - resolved "https://registry.yarnpkg.com/json-buffer/-/json-buffer-3.0.0.tgz#5b1f397afc75d677bde8bcfc0e47e1f9a3d9a898" - integrity sha1-Wx85evx11ne96Lz8Dkfh+aPZqJg= - -json-loader@^0.5.4: - version "0.5.7" - resolved "https://registry.yarnpkg.com/json-loader/-/json-loader-0.5.7.tgz#dca14a70235ff82f0ac9a3abeb60d337a365185d" - integrity sha512-QLPs8Dj7lnf3e3QYS1zkCo+4ZwqOiF9d/nZnYozTISxXWCfNs9yuky5rJw4/W34s7POaNlbZmQGaB5NiXCbP4w== - -json-pointer@^0.6.0: - version "0.6.1" - resolved "https://registry.yarnpkg.com/json-pointer/-/json-pointer-0.6.1.tgz#3c6caa6ac139e2599f5a1659d39852154015054d" - integrity sha512-3OvjqKdCBvH41DLpV4iSt6v2XhZXV1bPB4OROuknvUXI7ZQNofieCPkmE26stEJ9zdQuvIxDHCuYhfgxFAAs+Q== - dependencies: - foreach "^2.0.4" - -json-schema-traverse@^0.4.1: - version "0.4.1" - resolved "https://registry.yarnpkg.com/json-schema-traverse/-/json-schema-traverse-0.4.1.tgz#69f6a87d9513ab8bb8fe63bdb0979c448e684660" - integrity sha512-xbbCH5dCYU5T8LcEhhuh7HJ88HXuW3qsI3Y0zOZFKfZEHcpWiHU/Jxzk629Brsab/mMiHQti9wMP+845RPe3Vg== - -json-schema@0.2.3: - version "0.2.3" - resolved "https://registry.yarnpkg.com/json-schema/-/json-schema-0.2.3.tgz#b480c892e59a2f05954ce727bd3f2a4e882f9e13" - integrity sha1-tIDIkuWaLwWVTOcnvT8qTogvnhM= - -json-stable-stringify-without-jsonify@^1.0.1: - version "1.0.1" - resolved "https://registry.yarnpkg.com/json-stable-stringify-without-jsonify/-/json-stable-stringify-without-jsonify-1.0.1.tgz#9db7b59496ad3f3cfef30a75142d2d930ad72651" - integrity sha1-nbe1lJatPzz+8wp1FC0tkwrXJlE= - -json-stable-stringify@^1.0.1: - version "1.0.1" - resolved "https://registry.yarnpkg.com/json-stable-stringify/-/json-stable-stringify-1.0.1.tgz#9a759d39c5f2ff503fd5300646ed445f88c4f9af" - integrity sha1-mnWdOcXy/1A/1TAGRu1EX4jE+a8= - dependencies: - jsonify "~0.0.0" - -json-stringify-safe@~5.0.1: - version "5.0.1" - resolved "https://registry.yarnpkg.com/json-stringify-safe/-/json-stringify-safe-5.0.1.tgz#1296a2d58fd45f19a0f6ce01d65701e2c735b6eb" - integrity sha1-Epai1Y/UXxmg9s4B1lcB4sc1tus= - -json-text-sequence@^0.1, json-text-sequence@~0.1.0: - version "0.1.1" - resolved "https://registry.yarnpkg.com/json-text-sequence/-/json-text-sequence-0.1.1.tgz#a72f217dc4afc4629fff5feb304dc1bd51a2f3d2" - integrity sha1-py8hfcSvxGKf/1/rME3BvVGi89I= - dependencies: - delimit-stream "0.1.0" - -json-to-ast@^2.0.3: - version "2.1.0" - resolved "https://registry.yarnpkg.com/json-to-ast/-/json-to-ast-2.1.0.tgz#041a9fcd03c0845036acb670d29f425cea4faaf9" - integrity sha512-W9Lq347r8tA1DfMvAGn9QNcgYm4Wm7Yc+k8e6vezpMnRT+NHbtlxgNBXRVjXe9YM6eTn6+p/MKOlV/aABJcSnQ== - dependencies: - code-error-fragment "0.0.230" - grapheme-splitter "^1.0.4" - -json5@^0.5.1: - version "0.5.1" - resolved "https://registry.yarnpkg.com/json5/-/json5-0.5.1.tgz#1eade7acc012034ad84e2396767ead9fa5495821" - integrity sha1-Hq3nrMASA0rYTiOWdn6tn6VJWCE= - -json5@^1.0.1: - version "1.0.1" - resolved "https://registry.yarnpkg.com/json5/-/json5-1.0.1.tgz#779fb0018604fa854eacbf6252180d83543e3dbe" - integrity sha512-aKS4WQjPenRxiQsC93MNfjx+nbF4PAdYzmd/1JIj8HYzqfbu86beTuNgXDzPknWk0n0uARlyewZo4s++ES36Ow== - dependencies: - minimist "^1.2.0" - -json5@^2.1.2: - version "2.2.0" - resolved "https://registry.yarnpkg.com/json5/-/json5-2.2.0.tgz#2dfefe720c6ba525d9ebd909950f0515316c89a3" - integrity sha512-f+8cldu7X/y7RAJurMEJmdoKXGB/X550w2Nr3tTbezL6RwEE/iMcm+tZnXeoZtKuOq6ft8+CqzEkrIgx1fPoQA== - dependencies: - minimist "^1.2.5" - -jsondown@^1.0.0: - version "1.0.0" - resolved "https://registry.yarnpkg.com/jsondown/-/jsondown-1.0.0.tgz#c5cc5cda65f515d2376136a104b5f535534f26e3" - integrity sha512-p6XxPaq59aXwcdDQV3ISMA5xk+1z6fJuctcwwSdR9iQgbYOcIrnknNrhcMGG+0FaUfKHGkdDpQNaZrovfBoyOw== - dependencies: - memdown "1.4.1" - mkdirp "0.5.1" - -jsonfile@^2.1.0: - version "2.4.0" - resolved "https://registry.yarnpkg.com/jsonfile/-/jsonfile-2.4.0.tgz#3736a2b428b87bbda0cc83b53fa3d633a35c2ae8" - integrity sha1-NzaitCi4e72gzIO1P6PWM6NcKug= - optionalDependencies: - graceful-fs "^4.1.6" - -jsonfile@^4.0.0: - version "4.0.0" - resolved "https://registry.yarnpkg.com/jsonfile/-/jsonfile-4.0.0.tgz#8771aae0799b64076b76640fca058f9c10e33ecb" - integrity sha1-h3Gq4HmbZAdrdmQPygWPnBDjPss= - optionalDependencies: - graceful-fs "^4.1.6" - -jsonfile@^6.0.1: - version "6.1.0" - resolved "https://registry.yarnpkg.com/jsonfile/-/jsonfile-6.1.0.tgz#bc55b2634793c679ec6403094eb13698a6ec0aae" - integrity sha512-5dgndWOriYSm5cnYaJNhalLNDKOqFwyDB/rr1E9ZsGciGvKPs8R2xYGCacuf3z6K1YKDz182fd+fY3cn3pMqXQ== - dependencies: - universalify "^2.0.0" - optionalDependencies: - graceful-fs "^4.1.6" - -jsonify@~0.0.0: - version "0.0.0" - resolved "https://registry.yarnpkg.com/jsonify/-/jsonify-0.0.0.tgz#2c74b6ee41d93ca51b7b5aaee8f503631d252a73" - integrity sha1-LHS27kHZPKUbe1qu6PUDYx0lKnM= - -jsonpointer@^4.0.1: - version "4.1.0" - resolved "https://registry.yarnpkg.com/jsonpointer/-/jsonpointer-4.1.0.tgz#501fb89986a2389765ba09e6053299ceb4f2c2cc" - integrity sha512-CXcRvMyTlnR53xMcKnuMzfCA5i/nfblTnnr74CZb6C4vG39eu6w51t7nKmU5MfLfbTgGItliNyjO/ciNPDqClg== - -jsonschema@^1.2.4: - version "1.2.5" - resolved "https://registry.yarnpkg.com/jsonschema/-/jsonschema-1.2.5.tgz#bab69d97fa28946aec0a56a9cc266d23fe80ae61" - integrity sha512-kVTF+08x25PQ0CjuVc0gRM9EUPb0Fe9Ln/utFOgcdxEIOHuU7ooBk/UPTd7t1M91pP35m0MU1T8M5P7vP1bRRw== - -jsprim@^1.2.2: - version "1.4.1" - resolved "https://registry.yarnpkg.com/jsprim/-/jsprim-1.4.1.tgz#313e66bc1e5cc06e438bc1b7499c2e5c56acb6a2" - integrity sha1-MT5mvB5cwG5Di8G3SZwuXFastqI= - dependencies: - assert-plus "1.0.0" - extsprintf "1.3.0" - json-schema "0.2.3" - verror "1.10.0" - -keccak@^1.0.2: - version "1.4.0" - resolved "https://registry.yarnpkg.com/keccak/-/keccak-1.4.0.tgz#572f8a6dbee8e7b3aa421550f9e6408ca2186f80" - integrity sha512-eZVaCpblK5formjPjeTBik7TAg+pqnDrMHIffSvi9Lh7PQgM1+hSzakUeZFCk9DVVG0dacZJuaz2ntwlzZUIBw== - dependencies: - bindings "^1.2.1" - inherits "^2.0.3" - nan "^2.2.1" - safe-buffer "^5.1.0" - -keccak@^2.0.0: - version "2.1.0" - resolved "https://registry.yarnpkg.com/keccak/-/keccak-2.1.0.tgz#734ea53f2edcfd0f42cdb8d5f4c358fef052752b" - 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: - version "3.0.1" - resolved "https://registry.yarnpkg.com/keccak/-/keccak-3.0.1.tgz#ae30a0e94dbe43414f741375cff6d64c8bea0bff" - integrity sha512-epq90L9jlFWCW7+pQa6JOnKn2Xgl2mtI664seYR6MHskvI9agt7AnDqmAlp9TqU4/caMYbA08Hi5DMZAl5zdkA== - dependencies: - node-addon-api "^2.0.0" - node-gyp-build "^4.2.0" - -keypair@^1.0.1: - version "1.0.3" - resolved "https://registry.yarnpkg.com/keypair/-/keypair-1.0.3.tgz#4314109d94052a0acfd6b885695026ad29529c80" - integrity sha512-0wjZ2z/SfZZq01+3/8jYLd8aEShSa+aat1zyPGQY3IuKoEAp6DJGvu2zt6snELrQU9jbCkIlCyNOD7RdQbHhkQ== - -keypather@^1.10.2: - version "1.10.2" - resolved "https://registry.yarnpkg.com/keypather/-/keypather-1.10.2.tgz#e0449632d4b3e516f21cc014ce7c5644fddce614" - integrity sha1-4ESWMtSz5RbyHMAUznxWRP3c5hQ= - dependencies: - "101" "^1.0.0" - -keyv@^3.0.0: - version "3.1.0" - resolved "https://registry.yarnpkg.com/keyv/-/keyv-3.1.0.tgz#ecc228486f69991e49e9476485a5be1e8fc5c4d9" - integrity sha512-9ykJ/46SN/9KPM/sichzQ7OvXyGDYKGTaDlKMGCAlg2UK8KRy4jb0d8sFc+0Tt0YYnThq8X2RZgCg74RPxgcVA== - dependencies: - json-buffer "3.0.0" - -kind-of@^3.0.2, kind-of@^3.0.3, kind-of@^3.2.0: - version "3.2.2" - resolved "https://registry.yarnpkg.com/kind-of/-/kind-of-3.2.2.tgz#31ea21a734bab9bbb0f32466d893aea51e4a3c64" - integrity sha1-MeohpzS6ubuw8yRm2JOupR5KPGQ= - dependencies: - is-buffer "^1.1.5" - -kind-of@^4.0.0: - version "4.0.0" - resolved "https://registry.yarnpkg.com/kind-of/-/kind-of-4.0.0.tgz#20813df3d712928b207378691a45066fae72dd57" - integrity sha1-IIE989cSkosgc3hpGkUGb65y3Vc= - dependencies: - is-buffer "^1.1.5" - -kind-of@^5.0.0: - version "5.1.0" - resolved "https://registry.yarnpkg.com/kind-of/-/kind-of-5.1.0.tgz#729c91e2d857b7a419a1f9aa65685c4c33f5845d" - integrity sha512-NGEErnH6F2vUuXDh+OlbcKW7/wOcfdRHaZ7VWtqCztfHri/++YKmP51OdWeGPuqCOba6kk2OTe5d02VmTB80Pw== - -kind-of@^6.0.0, kind-of@^6.0.2: - version "6.0.3" - resolved "https://registry.yarnpkg.com/kind-of/-/kind-of-6.0.3.tgz#07c05034a6c349fa06e24fa35aa76db4580ce4dd" - integrity sha512-dcS1ul+9tmeD95T+x28/ehLgd9mENa3LsvDTtzm3vyBEO7RPptvAD+t44WVXaUjTBRcrpFeFlC8WCruUR456hw== - -klaw-sync@^6.0.0: - version "6.0.0" - resolved "https://registry.yarnpkg.com/klaw-sync/-/klaw-sync-6.0.0.tgz#1fd2cfd56ebb6250181114f0a581167099c2b28c" - integrity sha512-nIeuVSzdCCs6TDPTqI8w1Yre34sSq7AkZ4B3sfOBbI2CgVSB4Du4aLQijFU2+lhAFCwt9+42Hel6lQNIv6AntQ== - dependencies: - graceful-fs "^4.1.11" - -klaw@^1.0.0: - version "1.3.1" - resolved "https://registry.yarnpkg.com/klaw/-/klaw-1.3.1.tgz#4088433b46b3b1ba259d78785d8e96f73ba02439" - integrity sha1-QIhDO0azsbolnXh4XY6W9zugJDk= - optionalDependencies: - graceful-fs "^4.1.9" - -lazy-cache@^1.0.3: - version "1.0.4" - resolved "https://registry.yarnpkg.com/lazy-cache/-/lazy-cache-1.0.4.tgz#a1d78fc3a50474cb80845d3b3b6e1da49a446e8e" - integrity sha1-odePw6UEdMuAhF07O24dpJpEbo4= - -lazy-debug-legacy@0.0.X: - version "0.0.1" - resolved "https://registry.yarnpkg.com/lazy-debug-legacy/-/lazy-debug-legacy-0.0.1.tgz#537716c0776e4cf79e3ed1b621f7658c2911b1b1" - integrity sha1-U3cWwHduTPeePtG2IfdljCkRsbE= - -lazystream@^1.0.0: - version "1.0.0" - resolved "https://registry.yarnpkg.com/lazystream/-/lazystream-1.0.0.tgz#f6995fe0f820392f61396be89462407bb77168e4" - integrity sha1-9plf4PggOS9hOWvolGJAe7dxaOQ= - dependencies: - readable-stream "^2.0.5" - -lcid@^1.0.0: - version "1.0.0" - resolved "https://registry.yarnpkg.com/lcid/-/lcid-1.0.0.tgz#308accafa0bc483a3867b4b6f2b9506251d1b835" - integrity sha1-MIrMr6C8SDo4Z7S28rlQYlHRuDU= - dependencies: - invert-kv "^1.0.0" - -lcid@^2.0.0: - version "2.0.0" - resolved "https://registry.yarnpkg.com/lcid/-/lcid-2.0.0.tgz#6ef5d2df60e52f82eb228a4c373e8d1f397253cf" - integrity sha512-avPEb8P8EGnwXKClwsNUgryVjllcRqtMYa49NTsbQagYuT1DcXnl1915oxWjoyGrXR6zH/Y0Zc96xWsPcoDKeA== - dependencies: - invert-kv "^2.0.0" - -lcov-parse@^1.0.0: - version "1.0.0" - resolved "https://registry.yarnpkg.com/lcov-parse/-/lcov-parse-1.0.0.tgz#eb0d46b54111ebc561acb4c408ef9363bdc8f7e0" - integrity sha1-6w1GtUER68VhrLTECO+TY73I9+A= - -leb128@0.0.5: - version "0.0.5" - resolved "https://registry.yarnpkg.com/leb128/-/leb128-0.0.5.tgz#84524a86ef7799fb3933ce41345f6490e27ac948" - integrity sha512-elbNtfmu3GndZbesVF6+iQAfVjOXW9bM/aax9WwMlABZW+oK9sbAZEXoewaPHmL34sxa8kVwWsru8cNE/yn2gg== - dependencies: - bn.js "^5.0.0" - buffer-pipe "0.0.3" - -level-codec@9.0.1: - version "9.0.1" - resolved "https://registry.yarnpkg.com/level-codec/-/level-codec-9.0.1.tgz#042f4aa85e56d4328ace368c950811ba802b7247" - integrity sha512-ajFP0kJ+nyq4i6kptSM+mAvJKLOg1X5FiFPtLG9M5gCEZyBmgDi3FkDrvlMkEzrUn1cWxtvVmrvoS4ASyO/q+Q== - -level-codec@9.0.2, level-codec@^9.0.0: - version "9.0.2" - resolved "https://registry.yarnpkg.com/level-codec/-/level-codec-9.0.2.tgz#fd60df8c64786a80d44e63423096ffead63d8cbc" - integrity sha512-UyIwNb1lJBChJnGfjmO0OR+ezh2iVu1Kas3nvBS/BzGnx79dv6g7unpKIDNPMhfdTEGoc7mC8uAu51XEtX+FHQ== - dependencies: - buffer "^5.6.0" - -level-concat-iterator@~2.0.0: - version "2.0.1" - resolved "https://registry.yarnpkg.com/level-concat-iterator/-/level-concat-iterator-2.0.1.tgz#1d1009cf108340252cb38c51f9727311193e6263" - integrity sha512-OTKKOqeav2QWcERMJR7IS9CUo1sHnke2C0gkSmcR7QuEtFNLLzHQAvnMw8ykvEcv0Qtkg0p7FOwP1v9e5Smdcw== - -level-errors@^2.0.0, level-errors@~2.0.0: - version "2.0.1" - resolved "https://registry.yarnpkg.com/level-errors/-/level-errors-2.0.1.tgz#2132a677bf4e679ce029f517c2f17432800c05c8" - integrity sha512-UVprBJXite4gPS+3VznfgDSU8PTRuVX0NXwoWW50KLxd2yw4Y1t2JUR5In1itQnudZqRMT9DlAM3Q//9NCjCFw== - dependencies: - errno "~0.1.1" - -level-iterator-stream@~4.0.0: - version "4.0.2" - resolved "https://registry.yarnpkg.com/level-iterator-stream/-/level-iterator-stream-4.0.2.tgz#7ceba69b713b0d7e22fcc0d1f128ccdc8a24f79c" - integrity sha512-ZSthfEqzGSOMWoUGhTXdX9jv26d32XJuHz/5YnuHZzH6wldfWMOVwI9TBtKcya4BKTyTt3XVA0A3cF3q5CY30Q== - dependencies: - inherits "^2.0.4" - readable-stream "^3.4.0" - xtend "^4.0.2" - -level-js@^4.0.0: - version "4.0.2" - resolved "https://registry.yarnpkg.com/level-js/-/level-js-4.0.2.tgz#fa51527fa38b87c4d111b0d0334de47fcda38f21" - integrity sha512-PeGjZsyMG4O89KHiez1zoMJxStnkM+oBIqgACjoo5PJqFiSUUm3GNod/KcbqN5ktyZa8jkG7I1T0P2u6HN9lIg== - dependencies: - abstract-leveldown "~6.0.1" - immediate "~3.2.3" - inherits "^2.0.3" - ltgt "^2.1.2" - typedarray-to-buffer "~3.1.5" - -level-packager@^5.0.0: - version "5.1.1" - resolved "https://registry.yarnpkg.com/level-packager/-/level-packager-5.1.1.tgz#323ec842d6babe7336f70299c14df2e329c18939" - integrity sha512-HMwMaQPlTC1IlcwT3+swhqf/NUO+ZhXVz6TY1zZIIZlIR0YSn8GtAAWmIvKjNY16ZkEg/JcpAuQskxsXqC0yOQ== - dependencies: - encoding-down "^6.3.0" - levelup "^4.3.2" - -level-supports@~1.0.0: - version "1.0.1" - resolved "https://registry.yarnpkg.com/level-supports/-/level-supports-1.0.1.tgz#2f530a596834c7301622521988e2c36bb77d122d" - integrity sha512-rXM7GYnW8gsl1vedTJIbzOrRv85c/2uCMpiiCzO2fndd06U/kUXEEU9evYn4zFggBOg36IsBW8LzqIpETwwQzg== - dependencies: - xtend "^4.0.2" - -level-write-stream@1.0.0: - version "1.0.0" - resolved "https://registry.yarnpkg.com/level-write-stream/-/level-write-stream-1.0.0.tgz#3f7fbb679a55137c0feb303dee766e12ee13c1dc" - integrity sha1-P3+7Z5pVE3wP6zA97nZuEu4Twdw= - dependencies: - end-stream "~0.1.0" - -level@5.0.1: - version "5.0.1" - resolved "https://registry.yarnpkg.com/level/-/level-5.0.1.tgz#8528cc1ee37ac413270129a1eab938c610be3ccb" - integrity sha512-wcak5OQeA4rURGacqS62R/xNHjCYnJSQDBOlm4KNUGJVE9bWv2B04TclqReYejN+oD65PzD4FsqeWoI5wNC5Lg== - dependencies: - level-js "^4.0.0" - level-packager "^5.0.0" - leveldown "^5.0.0" - opencollective-postinstall "^2.0.0" - -leveldown@5.0.2: - version "5.0.2" - resolved "https://registry.yarnpkg.com/leveldown/-/leveldown-5.0.2.tgz#c8edc2308c8abf893ffc81e66ab6536111cae92c" - integrity sha512-Ib6ygFYBleS8x2gh3C1AkVsdrUShqXpe6jSTnZ6sRycEXKhqVf+xOSkhgSnjidpPzyv0d95LJVFrYQ4NuXAqHA== - dependencies: - abstract-leveldown "~6.0.0" - fast-future "~1.0.2" - napi-macros "~1.8.1" - node-gyp-build "~3.8.0" - -leveldown@^5.0.0: - version "5.6.0" - resolved "https://registry.yarnpkg.com/leveldown/-/leveldown-5.6.0.tgz#16ba937bb2991c6094e13ac5a6898ee66d3eee98" - integrity sha512-iB8O/7Db9lPaITU1aA2txU/cBEXAt4vWwKQRrrWuS6XDgbP4QZGj9BL2aNbwb002atoQ/lIotJkfyzz+ygQnUQ== - dependencies: - abstract-leveldown "~6.2.1" - napi-macros "~2.0.0" - node-gyp-build "~4.1.0" - -levelup@4.0.2: - version "4.0.2" - resolved "https://registry.yarnpkg.com/levelup/-/levelup-4.0.2.tgz#bcb8d28d0a82ee97f1c6d00f20ea6d32c2803c5b" - integrity sha512-cx9PmLENwbGA3svWBEbeO2HazpOSOYSXH4VA+ahVpYyurvD+SDSfURl29VBY2qgyk+Vfy2dJd71SBRckj/EZVA== - dependencies: - deferred-leveldown "~5.0.0" - level-errors "~2.0.0" - level-iterator-stream "~4.0.0" - xtend "~4.0.0" - -levelup@4.4.0, levelup@^4.3.2: - version "4.4.0" - resolved "https://registry.yarnpkg.com/levelup/-/levelup-4.4.0.tgz#f89da3a228c38deb49c48f88a70fb71f01cafed6" - integrity sha512-94++VFO3qN95cM/d6eBXvd894oJE0w3cInq9USsyQzzoJxmiYzPAocNcuGCPGGjoXqDVJcr3C1jzt1TSjyaiLQ== - dependencies: - deferred-leveldown "~5.3.0" - level-errors "~2.0.0" - level-iterator-stream "~4.0.0" - level-supports "~1.0.0" - xtend "~4.0.0" - -leven@^3.1.0: - version "3.1.0" - resolved "https://registry.yarnpkg.com/leven/-/leven-3.1.0.tgz#77891de834064cccba82ae7842bb6b14a13ed7f2" - integrity sha512-qsda+H8jTaUaN/x5vzW2rzc+8Rw4TAQ/4KjB46IwK5VH+IlVeeeje/EoZRpiXvIqjFgK84QffqPztGI3VBLG1A== - -levn@~0.3.0: - version "0.3.0" - resolved "https://registry.yarnpkg.com/levn/-/levn-0.3.0.tgz#3b09924edf9f083c0490fdd4c0bc4421e04764ee" - integrity sha1-OwmSTt+fCDwEkP3UwLxEIeBHZO4= - dependencies: - prelude-ls "~1.1.2" - type-check "~0.3.2" - -libp2p-crypto@^0.19.0: - version "0.19.7" - resolved "https://registry.yarnpkg.com/libp2p-crypto/-/libp2p-crypto-0.19.7.tgz#e96a95bd430e672a695209fe0fbd2bcbd348bc35" - integrity sha512-Qb5o/3WFKF2j6mYSt4UBPyi2kbKl3jYV0podBJoJCw70DlpM5Xc+oh3fFY9ToSunu8aSQQ5GY8nutjXgX/uGRA== - dependencies: - err-code "^3.0.1" - is-typedarray "^1.0.0" - iso-random-stream "^2.0.0" - keypair "^1.0.1" - multiformats "^9.4.5" - node-forge "^0.10.0" - pem-jwk "^2.0.0" - protobufjs "^6.11.2" - secp256k1 "^4.0.0" - uint8arrays "^3.0.0" - ursa-optional "^0.10.1" - -linked-list@0.1.0: - version "0.1.0" - resolved "https://registry.yarnpkg.com/linked-list/-/linked-list-0.1.0.tgz#798b0ff97d1b92a4fd08480f55aea4e9d49d37bf" - integrity sha1-eYsP+X0bkqT9CEgPVa6k6dSdN78= - -load-json-file@^1.0.0, load-json-file@^1.1.0: - version "1.1.0" - resolved "https://registry.yarnpkg.com/load-json-file/-/load-json-file-1.1.0.tgz#956905708d58b4bab4c2261b04f59f31c99374c0" - integrity sha1-lWkFcI1YtLq0wiYbBPWfMcmTdMA= - 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" - -load-json-file@^2.0.0: - version "2.0.0" - resolved "https://registry.yarnpkg.com/load-json-file/-/load-json-file-2.0.0.tgz#7947e42149af80d696cbf797bcaabcfe1fe29ca8" - integrity sha1-eUfkIUmvgNaWy/eXvKq8/h/inKg= - dependencies: - graceful-fs "^4.1.2" - parse-json "^2.2.0" - pify "^2.0.0" - strip-bom "^3.0.0" - -loader-runner@^2.3.0: - version "2.4.0" - resolved "https://registry.yarnpkg.com/loader-runner/-/loader-runner-2.4.0.tgz#ed47066bfe534d7e84c4c7b9998c2a75607d9357" - integrity sha512-Jsmr89RcXGIwivFY21FcRrisYZfvLMTWx5kOLc+JTxtpBOG6xML0vzbc6SEQG2FO9/4Fc3wW4LVcB5DmGflaRw== - -loader-utils@^1.1.0: - version "1.4.0" - resolved "https://registry.yarnpkg.com/loader-utils/-/loader-utils-1.4.0.tgz#c579b5e34cb34b1a74edc6c1fb36bfa371d5a613" - integrity sha512-qH0WSMBtn/oHuwjy/NucEgbx5dbxxnxup9s4PVXJUDHZBQY+s0NWA9rJf53RBnQZxfch7euUui7hpoAPvALZdA== - dependencies: - big.js "^5.2.2" - emojis-list "^3.0.0" - json5 "^1.0.1" - -locate-path@^2.0.0: - version "2.0.0" - resolved "https://registry.yarnpkg.com/locate-path/-/locate-path-2.0.0.tgz#2b568b265eec944c6d9c0de9c3dbbbca0354cd8e" - 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.yarnpkg.com/locate-path/-/locate-path-3.0.0.tgz#dbec3b3ab759758071b58fe59fc41871af21400e" - integrity sha512-7AO748wWnIhNqAuaty2ZWHkQHRSNfPVIsPIfwEOWO22AmaoVrWavlOcMR5nzTLNYvp36X220/maaRsrec1G65A== - dependencies: - p-locate "^3.0.0" - path-exists "^3.0.0" - -locate-path@^5.0.0: - version "5.0.0" - resolved "https://registry.yarnpkg.com/locate-path/-/locate-path-5.0.0.tgz#1afba396afd676a6d42504d0a67a3a7eb9f62aa0" - integrity sha512-t7hw9pI+WvuwNJXwk5zVHpyhIqzg2qTlklJOf0mVxGSbe3Fp2VieZcduNYjaLDoy6p9uGpQEGWG87WpMKlNq8g== - dependencies: - p-locate "^4.1.0" - -locate-path@^6.0.0: - version "6.0.0" - resolved "https://registry.yarnpkg.com/locate-path/-/locate-path-6.0.0.tgz#55321eb309febbc59c4801d931a72452a681d286" - integrity sha512-iPZK6eYjbxRu3uB4/WZ3EsEIMJFMqAoopl3R+zuq0UjcAm/MO6KCweDgPfP3elTztoKP3KtnVHxTn2NHBSDVUw== - dependencies: - p-locate "^5.0.0" - -lodash-es@^4.2.1: - version "4.17.21" - resolved "https://registry.yarnpkg.com/lodash-es/-/lodash-es-4.17.21.tgz#43e626c46e6591b7750beb2b50117390c609e3ee" - integrity sha512-mKnC+QJ9pWVzv+C4/U3rRsHapFfHvQFoFB92e52xeyGMcX6/OlIl78je1u8vePzYZSkkogMPJ2yjxxsb89cxyw== - -lodash._reinterpolate@^3.0.0, lodash._reinterpolate@~3.0.0: - version "3.0.0" - resolved "https://registry.yarnpkg.com/lodash._reinterpolate/-/lodash._reinterpolate-3.0.0.tgz#0ccf2d89166af03b3663c796538b75ac6e114d9d" - integrity sha1-DM8tiRZq8Ds2Y8eWU4t1rG4RTZ0= - -lodash.assign@^4.0.3, lodash.assign@^4.0.6: - version "4.2.0" - resolved "https://registry.yarnpkg.com/lodash.assign/-/lodash.assign-4.2.0.tgz#0d99f3ccd7a6d261d19bdaeb9245005d285808e7" - integrity sha1-DZnzzNem0mHRm9rrkkUAXShYCOc= - -lodash.assignin@^4.2.0: - version "4.2.0" - resolved "https://registry.yarnpkg.com/lodash.assignin/-/lodash.assignin-4.2.0.tgz#ba8df5fb841eb0a3e8044232b0e263a8dc6a28a2" - integrity sha1-uo31+4QesKPoBEIysOJjqNxqKKI= - -lodash.assigninwith@^4.0.0: - version "4.2.0" - resolved "https://registry.yarnpkg.com/lodash.assigninwith/-/lodash.assigninwith-4.2.0.tgz#af02c98432ac86d93da695b4be801401971736af" - integrity sha1-rwLJhDKshtk9ppW0voAUAZcXNq8= - -lodash.clonedeep@^4.5.0: - version "4.5.0" - resolved "https://registry.yarnpkg.com/lodash.clonedeep/-/lodash.clonedeep-4.5.0.tgz#e23f3f9c4f8fbdde872529c1071857a086e5ccef" - integrity sha1-4j8/nE+Pvd6HJSnBBxhXoIblzO8= - -lodash.escaperegexp@^4.1.2: - version "4.1.2" - resolved "https://registry.yarnpkg.com/lodash.escaperegexp/-/lodash.escaperegexp-4.1.2.tgz#64762c48618082518ac3df4ccf5d5886dae20347" - integrity sha1-ZHYsSGGAglGKw99Mz11YhtriA0c= - -lodash.flatten@^4.4.0: - version "4.4.0" - resolved "https://registry.yarnpkg.com/lodash.flatten/-/lodash.flatten-4.4.0.tgz#f31c22225a9632d2bbf8e4addbef240aa765a61f" - integrity sha1-8xwiIlqWMtK7+OSt2+8kCqdlph8= - -lodash.isequal@^4.0.0, lodash.isequal@^4.5.0: - version "4.5.0" - resolved "https://registry.yarnpkg.com/lodash.isequal/-/lodash.isequal-4.5.0.tgz#415c4478f2bcc30120c22ce10ed3226f7d3e18e0" - integrity sha1-QVxEePK8wwEgwizhDtMib30+GOA= - -lodash.keys@^4.0.0, lodash.keys@^4.2.0: - version "4.2.0" - resolved "https://registry.yarnpkg.com/lodash.keys/-/lodash.keys-4.2.0.tgz#a08602ac12e4fb83f91fc1fb7a360a4d9ba35205" - integrity sha1-oIYCrBLk+4P5H8H7ejYKTZujUgU= - -lodash.merge@^4.6.2: - version "4.6.2" - resolved "https://registry.yarnpkg.com/lodash.merge/-/lodash.merge-4.6.2.tgz#558aa53b43b661e1925a0afdfa36a9a1085fe57a" - integrity sha512-0KpjqXRVvrYyCsX1swR/XTK0va6VQkQM6MNo7PqW77ByjAhoARA8EfrP1N4+KlKj8YS0ZUCtRT/YUuhyYDujIQ== - -lodash.omit@^4.5.0: - version "4.5.0" - resolved "https://registry.yarnpkg.com/lodash.omit/-/lodash.omit-4.5.0.tgz#6eb19ae5a1ee1dd9df0b969e66ce0b7fa30b5e60" - integrity sha1-brGa5aHuHdnfC5aeZs4Lf6MLXmA= - -lodash.partition@^4.6.0: - version "4.6.0" - resolved "https://registry.yarnpkg.com/lodash.partition/-/lodash.partition-4.6.0.tgz#a38e46b73469e0420b0da1212e66d414be364ba4" - integrity sha1-o45GtzRp4EILDaEhLmbUFL42S6Q= - -lodash.pick@^4.4.0: - version "4.4.0" - resolved "https://registry.yarnpkg.com/lodash.pick/-/lodash.pick-4.4.0.tgz#52f05610fff9ded422611441ed1fc123a03001b3" - integrity sha1-UvBWEP/53tQiYRRB7R/BI6AwAbM= - -lodash.rest@^4.0.0: - version "4.0.5" - resolved "https://registry.yarnpkg.com/lodash.rest/-/lodash.rest-4.0.5.tgz#954ef75049262038c96d1fc98b28fdaf9f0772aa" - integrity sha1-lU73UEkmIDjJbR/Jiyj9r58Hcqo= - -lodash.sortby@^4.7.0: - version "4.7.0" - resolved "https://registry.yarnpkg.com/lodash.sortby/-/lodash.sortby-4.7.0.tgz#edd14c824e2cc9c1e0b0a1b42bb5210516a42438" - integrity sha1-7dFMgk4sycHgsKG0K7UhBRakJDg= - -lodash.sum@^4.0.2: - version "4.0.2" - resolved "https://registry.yarnpkg.com/lodash.sum/-/lodash.sum-4.0.2.tgz#ad90e397965d803d4f1ff7aa5b2d0197f3b4637b" - integrity sha1-rZDjl5ZdgD1PH/eqWy0Bl/O0Y3s= - -lodash.template@4.2.4: - version "4.2.4" - resolved "https://registry.yarnpkg.com/lodash.template/-/lodash.template-4.2.4.tgz#d053c19e8e74e38d965bf4fb495d80f109e7f7a4" - integrity sha1-0FPBno50442WW/T7SV2A8Qnn96Q= - dependencies: - lodash._reinterpolate "~3.0.0" - lodash.assigninwith "^4.0.0" - lodash.keys "^4.0.0" - lodash.rest "^4.0.0" - lodash.templatesettings "^4.0.0" - lodash.tostring "^4.0.0" - -lodash.templatesettings@^4.0.0: - version "4.2.0" - resolved "https://registry.yarnpkg.com/lodash.templatesettings/-/lodash.templatesettings-4.2.0.tgz#e481310f049d3cf6d47e912ad09313b154f0fb33" - integrity sha512-stgLz+i3Aa9mZgnjr/O+v9ruKZsPsndy7qPZOchbqk2cnTU1ZaldKK+v7m54WoKIyxiuMZTKT2H81F8BeAc3ZQ== - dependencies: - lodash._reinterpolate "^3.0.0" - -lodash.toarray@^4.4.0: - version "4.4.0" - resolved "https://registry.yarnpkg.com/lodash.toarray/-/lodash.toarray-4.4.0.tgz#24c4bfcd6b2fba38bfd0594db1179d8e9b656561" - integrity sha1-JMS/zWsvuji/0FlNsRedjptlZWE= - -lodash.tostring@^4.0.0: - version "4.1.4" - resolved "https://registry.yarnpkg.com/lodash.tostring/-/lodash.tostring-4.1.4.tgz#560c27d1f8eadde03c2cce198fef5c031d8298fb" - integrity sha1-Vgwn0fjq3eA8LM4Zj+9cAx2CmPs= - -lodash.without@^4.4.0: - version "4.4.0" - resolved "https://registry.yarnpkg.com/lodash.without/-/lodash.without-4.4.0.tgz#3cd4574a00b67bae373a94b748772640507b7aac" - integrity sha1-PNRXSgC2e643OpS3SHcmQFB7eqw= - -lodash.xor@^4.5.0: - version "4.5.0" - resolved "https://registry.yarnpkg.com/lodash.xor/-/lodash.xor-4.5.0.tgz#4d48ed7e98095b0632582ba714d3ff8ae8fb1db6" - integrity sha1-TUjtfpgJWwYyWCunFNP/iuj7HbY= - -lodash.zipwith@^4.2.0: - version "4.2.0" - resolved "https://registry.yarnpkg.com/lodash.zipwith/-/lodash.zipwith-4.2.0.tgz#afacf03fd2f384af29e263c3c6bda3b80e3f51fd" - integrity sha1-r6zwP9LzhK8p4mPDxr2juA4/Uf0= - -lodash@4.17.21, lodash@^4.1.0, lodash@^4.15.0, lodash@^4.17.19, lodash@^4.17.20, lodash@^4.17.4, lodash@^4.2.1: - version "4.17.21" - resolved "https://registry.yarnpkg.com/lodash/-/lodash-4.17.21.tgz#679591c564c3bffaae8454cf0b3df370c3d6911c" - integrity sha512-v2kDEe57lecTulaDIuNTPy3Ry4gLGJ6Z1O3vE1krgXZNrsQ+LFTGHVxVjcXPs17LhbZVGedAJv8XZ1tvj5FvSg== - -lodash@^4.17.11, lodash@^4.17.14, lodash@^4.17.15: - version "4.17.15" - resolved "https://registry.yarnpkg.com/lodash/-/lodash-4.17.15.tgz#b447f6670a0455bbfeedd11392eff330ea097548" - integrity sha512-8xOcRHvCjnocdS5cpwXQXVzmmh5e5+saE2QGoeQmbKmRS6J3VQppPOIt0MnmE+4xlZoumy0GPG0D0MVIQbNA1A== - -log-driver@^1.2.7: - version "1.2.7" - resolved "https://registry.yarnpkg.com/log-driver/-/log-driver-1.2.7.tgz#63b95021f0702fedfa2c9bb0a24e7797d71871d8" - integrity sha512-U7KCmLdqsGHBLeWqYlFA0V0Sl6P08EE1ZrmA9cxjUE0WVqT9qnyVDPz1kzpFEP0jdJuFnasWIfSd7fsaNXkpbg== - -log-symbols@3.0.0: - version "3.0.0" - resolved "https://registry.yarnpkg.com/log-symbols/-/log-symbols-3.0.0.tgz#f3a08516a5dea893336a7dee14d18a1cfdab77c4" - integrity sha512-dSkNGuI7iG3mfvDzUuYZyvk5dD9ocYCYzNU6CYDE6+Xqd+gwme6Z00NS3dUh8mq/73HaEtT7m6W+yUPtU6BZnQ== - dependencies: - chalk "^2.4.2" - -log-symbols@4.0.0: - version "4.0.0" - resolved "https://registry.yarnpkg.com/log-symbols/-/log-symbols-4.0.0.tgz#69b3cc46d20f448eccdb75ea1fa733d9e821c920" - integrity sha512-FN8JBzLx6CzeMrB0tg6pqlGU1wCrXW+ZXGH481kfsBqer0hToTIiHdjH4Mq8xJUbvATujKCvaREGWpGUionraA== - dependencies: - chalk "^4.0.0" - -log-symbols@^2.2.0: - version "2.2.0" - resolved "https://registry.yarnpkg.com/log-symbols/-/log-symbols-2.2.0.tgz#5740e1c5d6f0dfda4ad9323b5332107ef6b4c40a" - integrity sha512-VeIAFslyIerEJLXHziedo2basKbMKtTw3vfn5IzG0XTjhAVEJyNHnL2p7vc+wBDSdQuUpNw3M2u6xb9QsAY5Eg== - dependencies: - chalk "^2.0.1" - -loglevel@^1.6.6, loglevel@^1.6.7, loglevel@^1.6.8, loglevel@^1.7.0: - version "1.7.1" - resolved "https://registry.yarnpkg.com/loglevel/-/loglevel-1.7.1.tgz#005fde2f5e6e47068f935ff28573e125ef72f197" - integrity sha512-Hesni4s5UkWkwCGJMQGAh71PaLUmKFM60dHvq0zi/vDhhrzuk+4GgNbTXJ12YYQJn6ZKBDNIjYcuQGKudvqrIw== - -long@^4.0.0: - version "4.0.0" - resolved "https://registry.yarnpkg.com/long/-/long-4.0.0.tgz#9a7b71cfb7d361a194ea555241c92f7468d5bf28" - integrity sha512-XsP+KhQif4bjX1kbuSiySJFNAehNxgLb6hPRGJ9QsUr8ajHkuXGdrHmFUTUUXhDwVX2R5bY4JNZEwbUiMhV+MA== - -longest@^1.0.1: - version "1.0.1" - resolved "https://registry.yarnpkg.com/longest/-/longest-1.0.1.tgz#30a0b2da38f73770e8294a0d22e6625ed77d0097" - integrity sha1-MKCy2jj3N3DoKUoNIuZiXtd9AJc= - -loose-envify@^1.0.0, loose-envify@^1.1.0, loose-envify@^1.4.0: - version "1.4.0" - resolved "https://registry.yarnpkg.com/loose-envify/-/loose-envify-1.4.0.tgz#71ee51fa7be4caec1a63839f7e682d8132d30caf" - integrity sha512-lyuxPGr/Wfhrlem2CL/UcnUc1zcqKAImBDzukY7Y5F/yQiNdko6+fRLevlw1HgMySw7f611UIY408EtxRSoK3Q== - dependencies: - js-tokens "^3.0.0 || ^4.0.0" - -lower-case-first@^1.0.0: - version "1.0.2" - resolved "https://registry.yarnpkg.com/lower-case-first/-/lower-case-first-1.0.2.tgz#e5da7c26f29a7073be02d52bac9980e5922adfa1" - 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.yarnpkg.com/lower-case/-/lower-case-1.1.4.tgz#9a2cabd1b9e8e0ae993a4bf7d5875c39c42e8eac" - integrity sha1-miyr0bno4K6ZOkv31YdcOcQujqw= - -lower-case@^2.0.2: - version "2.0.2" - resolved "https://registry.yarnpkg.com/lower-case/-/lower-case-2.0.2.tgz#6fa237c63dbdc4a82ca0fd882e4722dc5e634e28" - integrity sha512-7fm3l3NAF9WfN6W3JOmf5drwpVqX78JtoGJ3A6W0a6ZnldM41w2fV5D490psKFTpMds8TJse/eHLFFsNHHjHgg== - dependencies: - tslib "^2.0.3" - -lowercase-keys@^1.0.0, lowercase-keys@^1.0.1: - version "1.0.1" - resolved "https://registry.yarnpkg.com/lowercase-keys/-/lowercase-keys-1.0.1.tgz#6f9e30b47084d971a7c820ff15a6c5167b74c26f" - integrity sha512-G2Lj61tXDnVFFOi8VZds+SoQjtQC3dgokKdDG2mTm1tx4m50NUHBOZSBwQQHyy0V12A0JTG4icfZQH+xPyh8VA== - -lowercase-keys@^2.0.0: - version "2.0.0" - resolved "https://registry.yarnpkg.com/lowercase-keys/-/lowercase-keys-2.0.0.tgz#2603e78b7b4b0006cbca2fbcc8a3202558ac9479" - integrity sha512-tqNXrS78oMOE73NMxK4EMLQsQowWf8jKooH9g7xPavRT706R6bkQJ6DY2Te7QukaZsulxa30wQ7bk0pm4XiHmA== - -lru-cache@^4.0.1: - version "4.1.5" - resolved "https://registry.yarnpkg.com/lru-cache/-/lru-cache-4.1.5.tgz#8bbe50ea85bed59bc9e33dcab8235ee9bcf443cd" - integrity sha512-sWZlbEP2OsHNkXrMl5GYk/jKk70MBng6UU4YI/qGDYbgf6YbP4EvmqISbXCoJiRKs+1bSpFHVgQxvJ17F2li5g== - dependencies: - pseudomap "^1.0.2" - yallist "^2.1.2" - -lru-cache@^6.0.0: - version "6.0.0" - resolved "https://registry.yarnpkg.com/lru-cache/-/lru-cache-6.0.0.tgz#6d6fe6570ebd96aaf90fcad1dafa3b2566db3a94" - integrity sha512-Jo6dJ04CmSjuznwJSS3pUeWmd/H0ffTlkXXgwZi+eq1UCmqQwCh+eLsYOYCwY991i2Fah4h1BEMCx4qThGbsiA== - dependencies: - yallist "^4.0.0" - -lru-queue@0.1: - version "0.1.0" - resolved "https://registry.yarnpkg.com/lru-queue/-/lru-queue-0.1.0.tgz#2738bd9f0d3cf4f84490c5736c48699ac632cda3" - integrity sha1-Jzi9nw089PhEkMVzbEhpmsYyzaM= - dependencies: - es5-ext "~0.10.2" - -ltgt@2.2.1, ltgt@^2.1.2, ltgt@~2.2.0: - version "2.2.1" - resolved "https://registry.yarnpkg.com/ltgt/-/ltgt-2.2.1.tgz#f35ca91c493f7b73da0e07495304f17b31f87ee5" - integrity sha1-81ypHEk/e3PaDgdJUwTxezH4fuU= - -make-dir@^1.0.0: - version "1.3.0" - resolved "https://registry.yarnpkg.com/make-dir/-/make-dir-1.3.0.tgz#79c1033b80515bd6d24ec9933e860ca75ee27f0c" - integrity sha512-2w31R7SJtieJJnQtGc7RVL2StM2vGYVfqUOvUDxH6bC6aJTxPxTF0GnIgCyu7tjockiUWAYQRbxa7vKn34s5sQ== - dependencies: - pify "^3.0.0" - -make-error@^1.1.1: - version "1.3.5" - resolved "https://registry.yarnpkg.com/make-error/-/make-error-1.3.5.tgz#efe4e81f6db28cadd605c70f29c831b58ef776c8" - integrity sha512-c3sIjNUow0+8swNwVpqoH4YCShKNFkMaw6oH1mNS2haDZQqkeZFlHS3dhoeEbKKmJB4vXpJucU6oH75aDYeE9g== - -map-age-cleaner@^0.1.1: - version "0.1.3" - resolved "https://registry.yarnpkg.com/map-age-cleaner/-/map-age-cleaner-0.1.3.tgz#7d583a7306434c055fe474b0f45078e6e1b4b92a" - integrity sha512-bJzx6nMoP6PDLPBFmg7+xRKeFZvFboMrGlxmNj9ClvX53KrmvM5bXFXEWjbz4cz1AFn+jWJ9z/DJSz7hrs0w3w== - dependencies: - p-defer "^1.0.0" - -map-cache@^0.2.2: - version "0.2.2" - resolved "https://registry.yarnpkg.com/map-cache/-/map-cache-0.2.2.tgz#c32abd0bd6525d9b051645bb4f26ac5dc98a0dbf" - integrity sha1-wyq9C9ZSXZsFFkW7TyasXcmKDb8= - -map-stream@0.0.6: - version "0.0.6" - resolved "https://registry.yarnpkg.com/map-stream/-/map-stream-0.0.6.tgz#d2ef4eb811a28644c7a8989985c69c2fdd496827" - integrity sha1-0u9OuBGihkTHqJiZhcacL91JaCc= - -map-visit@^1.0.0: - version "1.0.0" - resolved "https://registry.yarnpkg.com/map-visit/-/map-visit-1.0.0.tgz#ecdca8f13144e660f1b5bd41f12f3479d98dfb8f" - integrity sha1-7Nyo8TFE5mDxtb1B8S80edmN+48= - dependencies: - object-visit "^1.0.0" - -markdown-table@^1.1.3: - version "1.1.3" - resolved "https://registry.yarnpkg.com/markdown-table/-/markdown-table-1.1.3.tgz#9fcb69bcfdb8717bfd0398c6ec2d93036ef8de60" - integrity sha512-1RUZVgQlpJSPWYbFSpmudq5nHY1doEIv89gBtF0s4gW1GF2XorxcA/70M5vq7rLv0a6mhOUccRsqkwhwLCIQ2Q== - -marked@0.3.19: - version "0.3.19" - resolved "https://registry.yarnpkg.com/marked/-/marked-0.3.19.tgz#5d47f709c4c9fc3c216b6d46127280f40b39d790" - integrity sha512-ea2eGWOqNxPcXv8dyERdSr/6FmzvWwzjMxpfGB/sbMccXoct+xY+YukPD+QTUZwyvK7BZwcr4m21WBOW41pAkg== - -math-random@^1.0.1: - version "1.0.4" - resolved "https://registry.yarnpkg.com/math-random/-/math-random-1.0.4.tgz#5dd6943c938548267016d4e34f057583080c514c" - integrity sha512-rUxjysqif/BZQH2yhd5Aaq7vXMSx9NdEsQcyA07uEzIvxgI7zIr33gGsh+RU0/XjmQpCW7RsVof1vlkvQVCK5A== - -md5.js@^1.3.4: - version "1.3.5" - resolved "https://registry.yarnpkg.com/md5.js/-/md5.js-1.3.5.tgz#b5d07b8e3216e3e27cd728d72f70d1e6a342005f" - integrity sha512-xitP+WxNPcTTOgnTJcrhM0xvdPepipPSf3I8EIpGKeFLjt3PlJLIDG3u8EX53ZIubkb+5U2+3rELYpEhHhzdkg== - dependencies: - hash-base "^3.0.0" - inherits "^2.0.1" - safe-buffer "^5.1.2" - -media-typer@0.3.0: - version "0.3.0" - resolved "https://registry.yarnpkg.com/media-typer/-/media-typer-0.3.0.tgz#8710d7af0aa626f8fffa1ce00168545263255748" - integrity sha1-hxDXrwqmJvj/+hzgAWhUUmMlV0g= - -mem@^1.1.0: - version "1.1.0" - resolved "https://registry.yarnpkg.com/mem/-/mem-1.1.0.tgz#5edd52b485ca1d900fe64895505399a0dfa45f76" - integrity sha1-Xt1StIXKHZAP5kiVUFOZoN+kX3Y= - dependencies: - mimic-fn "^1.0.0" - -mem@^4.0.0: - version "4.3.0" - resolved "https://registry.yarnpkg.com/mem/-/mem-4.3.0.tgz#461af497bc4ae09608cdb2e60eefb69bff744178" - integrity sha512-qX2bG48pTqYRVmDB37rn/6PT7LcR8T7oAX3bf99u1Tt1nzxYfxkgqDwUwolPlXweM0XzBOBFzSx4kfp7KP1s/w== - dependencies: - map-age-cleaner "^0.1.1" - mimic-fn "^2.0.0" - p-is-promise "^2.0.0" - -memdown@1.4.1: - version "1.4.1" - resolved "https://registry.yarnpkg.com/memdown/-/memdown-1.4.1.tgz#b4e4e192174664ffbae41361aa500f3119efe215" - integrity sha1-tOThkhdGZP+65BNhqlAPMRnv4hU= - dependencies: - abstract-leveldown "~2.7.1" - functional-red-black-tree "^1.0.1" - immediate "^3.2.3" - inherits "~2.0.1" - ltgt "~2.2.0" - safe-buffer "~5.1.1" - -memoizee@^0.4.14: - version "0.4.14" - resolved "https://registry.yarnpkg.com/memoizee/-/memoizee-0.4.14.tgz#07a00f204699f9a95c2d9e77218271c7cd610d57" - integrity sha512-/SWFvWegAIYAO4NQMpcX+gcra0yEZu4OntmUdrBaWrJncxOqAziGFlHxc7yjKVK2uu3lpPW27P27wkR82wA8mg== - dependencies: - d "1" - es5-ext "^0.10.45" - es6-weak-map "^2.0.2" - event-emitter "^0.3.5" - is-promise "^2.1" - lru-queue "0.1" - next-tick "1" - timers-ext "^0.1.5" - -memory-fs@^0.4.0, memory-fs@~0.4.1: - version "0.4.1" - resolved "https://registry.yarnpkg.com/memory-fs/-/memory-fs-0.4.1.tgz#3a9a20b8462523e447cfbc7e8bb80ed667bfc552" - integrity sha1-OpoguEYlI+RHz7x+i7gO1me/xVI= - dependencies: - errno "^0.1.3" - readable-stream "^2.0.1" - -memorystream@^0.3.1: - version "0.3.1" - resolved "https://registry.yarnpkg.com/memorystream/-/memorystream-0.3.1.tgz#86d7090b30ce455d63fbae12dda51a47ddcaf9b2" - integrity sha1-htcJCzDORV1j+64S3aUaR93K+bI= - -merge-descriptors@1.0.1: - version "1.0.1" - resolved "https://registry.yarnpkg.com/merge-descriptors/-/merge-descriptors-1.0.1.tgz#b00aaa556dd8b44568150ec9d1b953f3f90cbb61" - integrity sha1-sAqqVW3YtEVoFQ7J0blT8/kMu2E= - -merge-options@^2.0.0: - version "2.0.0" - resolved "https://registry.yarnpkg.com/merge-options/-/merge-options-2.0.0.tgz#36ca5038badfc3974dbde5e58ba89d3df80882c3" - integrity sha512-S7xYIeWHl2ZUKF7SDeBhGg6rfv5bKxVBdk95s/I7wVF8d+hjLSztJ/B271cnUiF6CAFduEQ5Zn3HYwAjT16DlQ== - dependencies: - is-plain-obj "^2.0.0" - -merge-stream@^1.0.0: - version "1.0.1" - resolved "https://registry.yarnpkg.com/merge-stream/-/merge-stream-1.0.1.tgz#4041202d508a342ba00174008df0c251b8c135e1" - integrity sha1-QEEgLVCKNCugAXQAjfDCUbjBNeE= - dependencies: - readable-stream "^2.0.1" - -merge2@^1.2.3, merge2@^1.3.0: - version "1.3.0" - resolved "https://registry.yarnpkg.com/merge2/-/merge2-1.3.0.tgz#5b366ee83b2f1582c48f87e47cf1a9352103ca81" - integrity sha512-2j4DAdlBOkiSZIsaXk4mTE3sRS02yBHAtfy127xRV3bQUFqXkjHCHLW6Scv7DwNRbIWNHH8zpnz9zMaKXIdvYw== - -methods@~1.1.2: - version "1.1.2" - resolved "https://registry.yarnpkg.com/methods/-/methods-1.1.2.tgz#5529a4d67654134edcc5266656835b0f851afcee" - integrity sha1-VSmk1nZUE07cxSZmVoNbD4Ua/O4= - -micromatch@^2.3.7: - version "2.3.11" - resolved "https://registry.yarnpkg.com/micromatch/-/micromatch-2.3.11.tgz#86677c97d1720b363431d04d0d15293bd38c1565" - integrity sha1-hmd8l9FyCzY0MdBNDRUpO9OMFWU= - dependencies: - arr-diff "^2.0.0" - array-unique "^0.2.1" - braces "^1.8.2" - expand-brackets "^0.1.4" - extglob "^0.3.1" - filename-regex "^2.0.0" - is-extglob "^1.0.0" - is-glob "^2.0.1" - kind-of "^3.0.2" - normalize-path "^2.0.1" - object.omit "^2.0.0" - parse-glob "^3.0.4" - regex-cache "^0.4.2" - -micromatch@^3.1.10, micromatch@^3.1.4: - version "3.1.10" - resolved "https://registry.yarnpkg.com/micromatch/-/micromatch-3.1.10.tgz#70859bc95c9840952f359a068a3fc49f9ecfac23" - 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: - version "4.0.2" - resolved "https://registry.yarnpkg.com/micromatch/-/micromatch-4.0.2.tgz#4fcb0999bf9fbc2fcbdd212f6d629b9a56c39259" - integrity sha512-y7FpHSbMUMoyPbYUSzO6PaZ6FyRnQOpHuKwbo1G+Knck95XVU4QAiKdGEnj5wwoS7PlOgthX/09u5iFJ+aYf5Q== - dependencies: - braces "^3.0.1" - picomatch "^2.0.5" - -miller-rabin@^4.0.0: - version "4.0.1" - resolved "https://registry.yarnpkg.com/miller-rabin/-/miller-rabin-4.0.1.tgz#f080351c865b0dc562a8462966daa53543c78a4d" - integrity sha512-115fLhvZVqWwHPbClyntxEVfVDfl9DLLTuJvq3g2O/Oxi8AiNouAHvDSzHS0viUJc+V5vm3eq91Xwqn9dp4jRA== - dependencies: - bn.js "^4.0.0" - brorand "^1.0.1" - -mime-db@1.43.0: - version "1.43.0" - resolved "https://registry.yarnpkg.com/mime-db/-/mime-db-1.43.0.tgz#0a12e0502650e473d735535050e7c8f4eb4fae58" - integrity sha512-+5dsGEEovYbT8UY9yD7eE4XTc4UwJ1jBYlgaQQF38ENsKR3wj/8q8RFZrF9WIZpB2V1ArTVFUva8sAul1NzRzQ== - -mime-types@^2.1.12, mime-types@^2.1.16, mime-types@~2.1.19, mime-types@~2.1.24: - version "2.1.26" - resolved "https://registry.yarnpkg.com/mime-types/-/mime-types-2.1.26.tgz#9c921fc09b7e149a65dfdc0da4d20997200b0a06" - integrity sha512-01paPWYgLrkqAyrlDorC1uDwl2p3qZT7yl806vW7DvDoxwXi46jsjFbg+WdwotBIk6/MbEhO/dh5aZ5sNj/dWQ== - dependencies: - mime-db "1.43.0" - -mime@1.6.0: - version "1.6.0" - resolved "https://registry.yarnpkg.com/mime/-/mime-1.6.0.tgz#32cd9e5c64553bd58d19a568af452acff04981b1" - integrity sha512-x0Vn8spI+wuJ1O6S7gnbaQg8Pxh4NNHb7KSINmEWKiPE4RKOplvijn+NkmYmmRgP68mc70j2EbeTFRsrswaQeg== - -mimic-fn@^1.0.0: - version "1.2.0" - resolved "https://registry.yarnpkg.com/mimic-fn/-/mimic-fn-1.2.0.tgz#820c86a39334640e99516928bd03fca88057d022" - integrity sha512-jf84uxzwiuiIVKiOLpfYk7N46TSy8ubTonmneY9vrpHNAnp0QBt2BxWV9dO3/j+BoVAb+a5G6YDPW3M5HOdMWQ== - -mimic-fn@^2.0.0, mimic-fn@^2.1.0: - version "2.1.0" - resolved "https://registry.yarnpkg.com/mimic-fn/-/mimic-fn-2.1.0.tgz#7ed2c2ccccaf84d3ffcb7a69b57711fc2083401b" - integrity sha512-OqbOk5oEQeAZ8WXWydlu9HJjz9WVdEIvamMCcXmuqUYjTknH/sqsWvhQ3vgwKFRR1HpjvNBKQ37nbJgYzGqGcg== - -mimic-response@^1.0.0, mimic-response@^1.0.1: - version "1.0.1" - resolved "https://registry.yarnpkg.com/mimic-response/-/mimic-response-1.0.1.tgz#4923538878eef42063cb8a3e3b0798781487ab1b" - integrity sha512-j5EctnkH7amfV/q5Hgmoal1g2QHFJRraOtmx0JpIqkxhBhI/lJSl1nMpQ45hVarwNETOoWEimndZ4QK0RHxuxQ== - -min-document@^2.19.0: - version "2.19.0" - resolved "https://registry.yarnpkg.com/min-document/-/min-document-2.19.0.tgz#7bd282e3f5842ed295bb748cdd9f1ffa2c824685" - integrity sha1-e9KC4/WELtKVu3SM3Z8f+iyCRoU= - dependencies: - dom-walk "^0.1.0" - -min-indent@^1.0.0: - version "1.0.1" - resolved "https://registry.yarnpkg.com/min-indent/-/min-indent-1.0.1.tgz#a63f681673b30571fbe8bc25686ae746eefa9869" - integrity sha512-I9jwMn07Sy/IwOj3zVkVik2JTvgpaykDZEigL6Rx6N9LbMywwUSMtxET+7lVoDLLd3O3IXwJwvuuns8UB/HeAg== - -minimalistic-assert@^1.0.0, minimalistic-assert@^1.0.1: - version "1.0.1" - resolved "https://registry.yarnpkg.com/minimalistic-assert/-/minimalistic-assert-1.0.1.tgz#2e194de044626d4a10e7f7fbc00ce73e83e4d5c7" - integrity sha512-UtJcAD4yEaGtjPezWuO9wC4nwUnVH/8/Im3yEHQP4b67cXlD/Qr9hdITCU1xDbSEXg2XKNaP8jsReV7vQd00/A== - -minimalistic-crypto-utils@^1.0.0, minimalistic-crypto-utils@^1.0.1: - version "1.0.1" - resolved "https://registry.yarnpkg.com/minimalistic-crypto-utils/-/minimalistic-crypto-utils-1.0.1.tgz#f6c00c1c0b082246e5c4d99dfb8c7c083b2b582a" - integrity sha1-9sAMHAsIIkblxNmd+4x8CDsrWCo= - -minimatch@*, "minimatch@2 || 3", minimatch@3.0.4, minimatch@^3.0.4: - version "3.0.4" - resolved "https://registry.yarnpkg.com/minimatch/-/minimatch-3.0.4.tgz#5166e286457f03306064be5497e8dbb0c3d32083" - integrity sha512-yJHVQEhyqPLUTgt9B83PXu6W3rx4MvvHvSUvToogpwoGDOUQ+yDrR0HRot+yOCdCO7u4hX3pWft6kWBBcqh0UA== - dependencies: - brace-expansion "^1.1.7" - -minimist@0.0.8: - version "0.0.8" - resolved "https://registry.yarnpkg.com/minimist/-/minimist-0.0.8.tgz#857fcabfc3397d2625b8228262e86aa7a011b05d" - integrity sha1-hX/Kv8M5fSYluCKCYuhqp6ARsF0= - -minimist@1.2.0, minimist@^1.2.0: - version "1.2.0" - resolved "https://registry.yarnpkg.com/minimist/-/minimist-1.2.0.tgz#a35008b20f41383eec1fb914f4cd5df79a264284" - integrity sha1-o1AIsg9BOD7sH7kU9M1d95omQoQ= - -minimist@^1.1.0, minimist@^1.2.5: - version "1.2.5" - resolved "https://registry.yarnpkg.com/minimist/-/minimist-1.2.5.tgz#67d66014b66a6a8aaa0c083c5fd58df4e4e97602" - integrity sha512-FM9nNUYrRBAELZQT3xeZQ7fmMOBg6nWNmJKTcgsJeaLstP/UODVpGsr5OhXhhXg6f+qtJ8uiZ+PUxkDWcgIXLw== - -minimist@~0.0.1: - version "0.0.10" - resolved "https://registry.yarnpkg.com/minimist/-/minimist-0.0.10.tgz#de3f98543dbf96082be48ad1a0c7cda836301dcf" - integrity sha1-3j+YVD2/lggr5IrRoMfNqDYwHc8= - -minipass@^2.6.0, minipass@^2.8.6, minipass@^2.9.0: - version "2.9.0" - resolved "https://registry.yarnpkg.com/minipass/-/minipass-2.9.0.tgz#e713762e7d3e32fed803115cf93e04bca9fcc9a6" - integrity sha512-wxfUjg9WebH+CUDX/CdbRlh5SmfZiy/hpkxaRI16Y9W56Pa75sWgd/rvFilSgrauD9NyFymP/+JFV3KwzIsJeg== - dependencies: - safe-buffer "^5.1.2" - yallist "^3.0.0" - -minizlib@^1.2.1: - version "1.3.3" - resolved "https://registry.yarnpkg.com/minizlib/-/minizlib-1.3.3.tgz#2290de96818a34c29551c8a8d301216bd65a861d" - integrity sha512-6ZYMOEnmVsdCeTJVE0W9ZD+pVnE8h9Hma/iOwwRDsdQoePpoX56/8B6z3P9VNwppJuBKNRuFDRNRqRWexT9G9Q== - dependencies: - minipass "^2.9.0" - -mixin-deep@^1.2.0: - version "1.3.2" - resolved "https://registry.yarnpkg.com/mixin-deep/-/mixin-deep-1.3.2.tgz#1120b43dc359a785dce65b55b82e257ccf479566" - integrity sha512-WRoDn//mXBiJ1H40rqa3vH0toePwSsGb45iInWlTySa+Uu4k3tYUSxa2v1KqAiLtvlrSzaExqS1gtk96A9zvEA== - dependencies: - for-in "^1.0.2" - is-extendable "^1.0.1" - -mkdirp-promise@^5.0.1: - version "5.0.1" - resolved "https://registry.yarnpkg.com/mkdirp-promise/-/mkdirp-promise-5.0.1.tgz#e9b8f68e552c68a9c1713b84883f7a1dd039b8a1" - integrity sha1-6bj2jlUsaKnBcTuEiD96HdA5uKE= - dependencies: - mkdirp "*" - -mkdirp@*: - version "1.0.3" - resolved "https://registry.yarnpkg.com/mkdirp/-/mkdirp-1.0.3.tgz#4cf2e30ad45959dddea53ad97d518b6c8205e1ea" - integrity sha512-6uCP4Qc0sWsgMLy1EOqqS/3rjDHOEnsStVr/4vtAIK2Y5i2kA7lFFejYrpIyiN9w0pYf4ckeCYT9f1r1P9KX5g== - -mkdirp@0.5.1, mkdirp@0.5.x, mkdirp@^0.5.0, mkdirp@^0.5.1: - version "0.5.1" - resolved "https://registry.yarnpkg.com/mkdirp/-/mkdirp-0.5.1.tgz#30057438eac6cf7f8c4767f38648d6697d75c903" - integrity sha1-MAV0OOrGz3+MR2fzhkjWaX11yQM= - dependencies: - minimist "0.0.8" - -mkdirp@0.5.5, mkdirp@^0.5.3, mkdirp@~0.5.0: - version "0.5.5" - resolved "https://registry.yarnpkg.com/mkdirp/-/mkdirp-0.5.5.tgz#d91cefd62d1436ca0f41620e251288d420099def" - integrity sha512-NKmAlESf6jMGym1++R0Ra7wvhV+wFW63FaSOFPwRahvea0gMUcGUhVeAg/0BC0wiv9ih5NYPB1Wn1UEI1/L+xQ== - dependencies: - minimist "^1.2.5" - -mkdirp@^1.0.4: - version "1.0.4" - resolved "https://registry.yarnpkg.com/mkdirp/-/mkdirp-1.0.4.tgz#3eb5ed62622756d79a5f0e2a221dfebad75c2f7e" - integrity sha512-vVqVZQyf3WLx2Shd0qJ9xuvqgAyKPLAiqITEtqW0oIUjzo3PePDd6fW9iFz30ef7Ysp/oiWqbhszeGWW2T6Gzw== - -mocha@8.1.2: - version "8.1.2" - resolved "https://registry.yarnpkg.com/mocha/-/mocha-8.1.2.tgz#d67fad13300e4f5cd48135a935ea566f96caf827" - integrity sha512-I8FRAcuACNMLQn3lS4qeWLxXqLvGf6r2CaLstDpZmMUUSmvW6Cnm1AuHxgbc7ctZVRcfwspCRbDHymPsi3dkJw== - dependencies: - ansi-colors "4.1.1" - browser-stdout "1.3.1" - chokidar "3.4.2" - debug "4.1.1" - diff "4.0.2" - escape-string-regexp "4.0.0" - find-up "5.0.0" - glob "7.1.6" - growl "1.10.5" - he "1.2.0" - js-yaml "3.14.0" - log-symbols "4.0.0" - minimatch "3.0.4" - ms "2.1.2" - object.assign "4.1.0" - promise.allsettled "1.0.2" - serialize-javascript "4.0.0" - strip-json-comments "3.0.1" - supports-color "7.1.0" - which "2.0.2" - wide-align "1.1.3" - workerpool "6.0.0" - yargs "13.3.2" - yargs-parser "13.1.2" - yargs-unparser "1.6.1" - -mocha@^7.1.1: - version "7.2.0" - resolved "https://registry.yarnpkg.com/mocha/-/mocha-7.2.0.tgz#01cc227b00d875ab1eed03a75106689cfed5a604" - 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.10.4" - resolved "https://registry.yarnpkg.com/mock-fs/-/mock-fs-4.10.4.tgz#4eaa3d6f7da2f44e1f3dd6b462cbbcb7b082e3d4" - integrity sha512-gDfZDLaPIvtOusbusLinfx6YSe2YpQsDT8qdP41P47dQ/NQggtkHukz7hwqgt8QvMBmAv+Z6DGmXPyb5BWX2nQ== - -module@^1.2.5: - version "1.2.5" - resolved "https://registry.yarnpkg.com/module/-/module-1.2.5.tgz#b503eb06cdc13473f56818426974cde7ec59bf15" - integrity sha1-tQPrBs3BNHP1aBhCaXTN5+xZvxU= - dependencies: - chalk "1.1.3" - concat-stream "1.5.1" - lodash.template "4.2.4" - map-stream "0.0.6" - tildify "1.2.0" - vinyl-fs "2.4.3" - yargs "4.6.0" - -moment@^2.29.1: - version "2.29.1" - resolved "https://registry.yarnpkg.com/moment/-/moment-2.29.1.tgz#b2be769fa31940be9eeea6469c075e35006fa3d3" - integrity sha512-kHmoybcPV8Sqy59DwNDY3Jefr64lK/by/da0ViFcuA4DH0vQg5Q6Ze5VimxkfQNSC+Mls/Kx53s7TjP1RhFEDQ== - -ms@2.0.0: - version "2.0.0" - resolved "https://registry.yarnpkg.com/ms/-/ms-2.0.0.tgz#5608aeadfc00be6c2901df5f9861788de0d597c8" - integrity sha1-VgiurfwAvmwpAd9fmGF4jeDVl8g= - -ms@2.1.1: - version "2.1.1" - resolved "https://registry.yarnpkg.com/ms/-/ms-2.1.1.tgz#30a5864eb3ebb0a66f2ebe6d727af06a09d86e0a" - integrity sha512-tgp+dl5cGk28utYktBsrFqA7HKgrhgPsg6Z/EfhWI4gl1Hwq8B/GmY/0oXZ6nF8hDVesS/FpnYaD/kOWhYQvyg== - -ms@2.1.2, ms@^2.1.1: - version "2.1.2" - resolved "https://registry.yarnpkg.com/ms/-/ms-2.1.2.tgz#d09d1f357b443f493382a8eb3ccd183872ae6009" - integrity sha512-sGkPx+VjMtmA6MX27oA4FBFELFCZZ4S4XqeGOXCv68tT+jb3vk/RyaKWP0PTKyWtmLSM0b+adUTEvbs1PEaH2w== - -multiaddr-to-uri@^6.0.0: - version "6.0.0" - resolved "https://registry.yarnpkg.com/multiaddr-to-uri/-/multiaddr-to-uri-6.0.0.tgz#8f08a75c6eeb2370d5d24b77b8413e3f0fa9bcc0" - integrity sha512-OjpkVHOXEmIKMO8WChzzQ7aZQcSQX8squxmvtDbRpy7/QNmJ3Z7jv6qyD74C28QtaeNie8O8ngW2AkeiMmKP7A== - dependencies: - multiaddr "^8.0.0" - -multiaddr@^8.0.0, multiaddr@^8.1.2: - version "8.1.2" - resolved "https://registry.yarnpkg.com/multiaddr/-/multiaddr-8.1.2.tgz#74060ff8636ba1c01b2cf0ffd53950b852fa9b1f" - integrity sha512-r13IzW8+Sv9zab9Gt8RPMIN2WkptIPq99EpAzg4IbJ/zTELhiEwXWr9bAmEatSCI4j/LSA6ESJzvz95JZ+ZYXQ== - dependencies: - cids "^1.0.0" - class-is "^1.1.0" - dns-over-http-resolver "^1.0.0" - err-code "^2.0.3" - is-ip "^3.1.0" - multibase "^3.0.0" - uint8arrays "^1.1.0" - varint "^5.0.0" - -multibase@^0.7.0: - version "0.7.0" - resolved "https://registry.yarnpkg.com/multibase/-/multibase-0.7.0.tgz#1adfc1c50abe05eefeb5091ac0c2728d6b84581b" - integrity sha512-TW8q03O0f6PNFTQDvh3xxH03c8CjGaaYrjkl9UQPG6rz53TQzzxJVCIWVjzcbN/Q5Y53Zd0IBQBMVktVgNx4Fg== - dependencies: - base-x "^3.0.8" - buffer "^5.5.0" - -multibase@^3.0.0, multibase@^3.1.0: - version "3.1.2" - resolved "https://registry.yarnpkg.com/multibase/-/multibase-3.1.2.tgz#59314e1e2c35d018db38e4c20bb79026827f0f2f" - integrity sha512-bpklWHs70LO3smJUHOjcnzGceJJvn9ui0Vau6Za0B/GBepaXswmW8Ufea0uD9pROf/qCQ4N4lZ3sf3U+SNf0tw== - dependencies: - "@multiformats/base-x" "^4.0.1" - web-encoding "^1.0.6" - -multibase@^4.0.1: - version "4.0.5" - resolved "https://registry.yarnpkg.com/multibase/-/multibase-4.0.5.tgz#620293b524e01f504b750cef585c2bdc6ee1c64c" - integrity sha512-oqFkOYXdUkakxT8MqGyn5sE1KYeVt1zataOTvg688skQp6TVBv9XnouCcVO86XKFzh/UTiCGmEImTx6ZnPZ0qQ== - dependencies: - "@multiformats/base-x" "^4.0.1" - -multibase@~0.6.0: - version "0.6.1" - resolved "https://registry.yarnpkg.com/multibase/-/multibase-0.6.1.tgz#b76df6298536cc17b9f6a6db53ec88f85f8cc12b" - integrity sha512-pFfAwyTjbbQgNc3G7D48JkJxWtoJoBMaR4xQUOuB8RnCgRqaYmWNFeJTTvrJ2w51bjLq2zTby6Rqj9TQ9elSUw== - dependencies: - base-x "^3.0.8" - buffer "^5.5.0" - -multicodec@^0.5.5: - version "0.5.7" - resolved "https://registry.yarnpkg.com/multicodec/-/multicodec-0.5.7.tgz#1fb3f9dd866a10a55d226e194abba2dcc1ee9ffd" - integrity sha512-PscoRxm3f+88fAtELwUnZxGDkduE2HD9Q6GHUOywQLjOGT/HAdhjLDYNZ1e7VR0s0TP0EwZ16LNUTFpoBGivOA== - dependencies: - varint "^5.0.0" - -multicodec@^1.0.0: - version "1.0.4" - resolved "https://registry.yarnpkg.com/multicodec/-/multicodec-1.0.4.tgz#46ac064657c40380c28367c90304d8ed175a714f" - integrity sha512-NDd7FeS3QamVtbgfvu5h7fd1IlbaC4EQ0/pgU4zqE2vdHCmBGsUa0TiM8/TdSeG6BMPC92OOCf8F1ocE/Wkrrg== - dependencies: - buffer "^5.6.0" - varint "^5.0.0" - -multicodec@^2.0.0, multicodec@^2.0.1: - version "2.1.3" - resolved "https://registry.yarnpkg.com/multicodec/-/multicodec-2.1.3.tgz#b9850635ad4e2a285a933151b55b4a2294152a5d" - integrity sha512-0tOH2Gtio39uO41o+2xl9UhRkCWxU5ZmZSbFCh/OjGzkWJI8e6lkN/s4Mj1YfyWoBod+2+S3W+6wO6nhkwN8pA== - dependencies: - uint8arrays "1.1.0" - varint "^6.0.0" - -multicodec@^3.0.1: - version "3.1.0" - resolved "https://registry.yarnpkg.com/multicodec/-/multicodec-3.1.0.tgz#bc96faee2118d1ff114a3ee9e870a030a3b65743" - integrity sha512-f6d4DhbQ9a8WiJ/wpbKgeJSeR0/juP/1wnjbKdZ0KAWDkC/z7Lb3xOegMUG+uTcfwSYf6j1eTvFf8HDgqPRGmQ== - dependencies: - uint8arrays "^2.1.5" - varint "^6.0.0" - -multiformats@^9.4.2, multiformats@^9.4.5: - version "9.4.5" - resolved "https://registry.yarnpkg.com/multiformats/-/multiformats-9.4.5.tgz#9ac47bbc87aadb09d4bd05e9cd3da6f4436414f6" - integrity sha512-zQxukxsHM34EJi3yT3MkUlycY9wEouyrAz0PSN+CyCj6cYchJZ4LrTH74YtlsxVyAK6waz/gnVLmJwi3P0knKg== - -multihashes@3.1.2, multihashes@^3.0.1: - version "3.1.2" - resolved "https://registry.yarnpkg.com/multihashes/-/multihashes-3.1.2.tgz#ffa5e50497aceb7911f7b4a3b6cada9b9730edfc" - integrity sha512-AP4IoV/YzkNrfbQKZE3OMPibrmy350OmCd6cJkwyM8oExaXIlOY4UnOOVSQtAEuq/LR01XfXKCESidzZvSwHCQ== - dependencies: - multibase "^3.1.0" - uint8arrays "^2.0.5" - varint "^6.0.0" - -multihashes@^0.4.15, multihashes@~0.4.15: - version "0.4.21" - resolved "https://registry.yarnpkg.com/multihashes/-/multihashes-0.4.21.tgz#dc02d525579f334a7909ade8a122dabb58ccfcb5" - integrity sha512-uVSvmeCWf36pU2nB4/1kzYZjsXD9vofZKpgudqkceYY5g2aZZXJ5r9lxuzoRLl1OAp28XljXsEJ/X/85ZsKmKw== - dependencies: - buffer "^5.5.0" - multibase "^0.7.0" - varint "^5.0.0" - -multihashes@^4.0.1, multihashes@^4.0.2: - version "4.0.2" - resolved "https://registry.yarnpkg.com/multihashes/-/multihashes-4.0.2.tgz#d76aeac3a302a1bed9fe1ec964fb7a22fa662283" - integrity sha512-xpx++1iZr4ZQHjN1mcrXS6904R36LWLxX/CBifczjtmrtCXEX623DMWOF1eiNSg+pFpiZDFVBgou/4v6ayCHSQ== - dependencies: - multibase "^4.0.1" - uint8arrays "^2.1.3" - varint "^5.0.2" - -multihashing-async@^2.0.0: - version "2.1.3" - resolved "https://registry.yarnpkg.com/multihashing-async/-/multihashing-async-2.1.3.tgz#8b6a33a754dc02327a19adfaf1f1054625b1c470" - integrity sha512-z4dlnTgZLn4D8daBdMGn601aS3GLOMnW5+EKoaevLwa3Fu4FK64ofn9PdJ3s0bDkhGK2fdwSjrG/S8mWlW9bzQ== - dependencies: - blakejs "^1.1.0" - err-code "^3.0.0" - js-sha3 "^0.8.0" - multihashes "^4.0.1" - murmurhash3js-revisited "^3.0.0" - uint8arrays "^2.1.3" - -murmurhash3js-revisited@^3.0.0: - version "3.0.0" - resolved "https://registry.yarnpkg.com/murmurhash3js-revisited/-/murmurhash3js-revisited-3.0.0.tgz#6bd36e25de8f73394222adc6e41fa3fac08a5869" - integrity sha512-/sF3ee6zvScXMb1XFJ8gDsSnY+X8PbOyjIuBhtgis10W2Jx4ZjIhikUCIF9c4gpJxVnQIsPAFrSwTCuAjicP6g== - -nan@^2.12.1: - version "2.14.2" - resolved "https://registry.yarnpkg.com/nan/-/nan-2.14.2.tgz#f5376400695168f4cc694ac9393d0c9585eeea19" - integrity sha512-M2ufzIiINKCuDfBSAUr1vWQ+vuVcA9kqx8JJUsbQi6yf1uGRyb7HfpdfUr5qLXf3B/t8dPvcjhKMmlfnP47EzQ== - -nan@^2.13.2, nan@^2.14.2: - version "2.15.0" - resolved "https://registry.yarnpkg.com/nan/-/nan-2.15.0.tgz#3f34a473ff18e15c1b5626b62903b5ad6e665fee" - integrity sha512-8ZtvEnA2c5aYCZYd1cvgdnU6cqwixRoYg70xPLWUws5ORTa/lnw+u4amixRS/Ac5U5mQVgp9pnlSUnbNWFaWZQ== - -nan@^2.14.0, nan@^2.2.1: - version "2.14.0" - resolved "https://registry.yarnpkg.com/nan/-/nan-2.14.0.tgz#7818f722027b2459a86f0295d434d1fc2336c52c" - integrity sha512-INOFj37C7k3AfaNTtX8RhsTw7qRy7eLET14cROi9+5HAVbbHuIWUHEauBv5qT4Av2tWasiTY1Jw6puUNqRJXQg== - -nano-base32@^1.0.1: - version "1.0.1" - resolved "https://registry.yarnpkg.com/nano-base32/-/nano-base32-1.0.1.tgz#ba548c879efcfb90da1c4d9e097db4a46c9255ef" - integrity sha1-ulSMh578+5DaHE2eCX20pGySVe8= - -nano-json-stream-parser@^0.1.2: - version "0.1.2" - resolved "https://registry.yarnpkg.com/nano-json-stream-parser/-/nano-json-stream-parser-0.1.2.tgz#0cc8f6d0e2b622b479c40d499c46d64b755c6f5f" - integrity sha1-DMj20OK2IrR5xA1JnEbWS3Vcb18= - -nanoid@^2.0.0: - version "2.1.11" - resolved "https://registry.yarnpkg.com/nanoid/-/nanoid-2.1.11.tgz#ec24b8a758d591561531b4176a01e3ab4f0f0280" - integrity sha512-s/snB+WGm6uwi0WjsZdaVcuf3KJXlfGl2LcxgwkEwJF0D/BWzVWAZW/XY4bFaiR7s0Jk3FPvlnepg1H1b1UwlA== - -nanoid@^3.1.12, nanoid@^3.1.3: - version "3.1.25" - resolved "https://registry.yarnpkg.com/nanoid/-/nanoid-3.1.25.tgz#09ca32747c0e543f0e1814b7d3793477f9c8e152" - integrity sha512-rdwtIXaXCLFAQbnfqDRnI6jaRHp9fTcYBjtFKE8eezcZ7LuLjhUaQGNeMXf1HmRoCH32CLz6XwX0TtxEOS/A3Q== - -nanomatch@^1.2.9: - version "1.2.13" - resolved "https://registry.yarnpkg.com/nanomatch/-/nanomatch-1.2.13.tgz#b87a8aa4fc0de8fe6be88895b38983ff265bd119" - 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@~1.8.1: - version "1.8.2" - resolved "https://registry.yarnpkg.com/napi-macros/-/napi-macros-1.8.2.tgz#299265c1d8aa401351ad0675107d751228c03eda" - integrity sha512-Tr0DNY4RzTaBG2W2m3l7ZtFuJChTH6VZhXVhkGGjF/4cZTt+i8GcM9ozD+30Lmr4mDoZ5Xx34t2o4GJqYWDGcg== - -napi-macros@~2.0.0: - version "2.0.0" - resolved "https://registry.yarnpkg.com/napi-macros/-/napi-macros-2.0.0.tgz#2b6bae421e7b96eb687aa6c77a7858640670001b" - integrity sha512-A0xLykHtARfueITVDernsAWdtIMbOJgKgcluwENp3AlsKN/PloyO10HtmoqnFAQAcxPkgZN7wdfPfEd0zNGxbg== - -native-abort-controller@0.0.3, native-abort-controller@~0.0.3: - version "0.0.3" - resolved "https://registry.yarnpkg.com/native-abort-controller/-/native-abort-controller-0.0.3.tgz#4c528a6c9c7d3eafefdc2c196ac9deb1a5edf2f8" - integrity sha512-YIxU5nWqSHG1Xbu3eOu3pdFRD882ivQpIcu6AiPVe2oSVoRbfYW63DVkZm3g1gHiMtZSvZzF6THSzTGEBYl8YA== - dependencies: - globalthis "^1.0.1" - -native-abort-controller@^1.0.3: - version "1.0.3" - resolved "https://registry.yarnpkg.com/native-abort-controller/-/native-abort-controller-1.0.3.tgz#35974a2e189c0d91399c8767a989a5bf058c1435" - integrity sha512-fd5LY5q06mHKZPD5FmMrn7Lkd2H018oBGKNOAdLpctBDEPFKsfJ1nX9ke+XRa8PEJJpjqrpQkGjq2IZ27QNmYA== - -native-fetch@^2.0.0: - version "2.0.1" - resolved "https://registry.yarnpkg.com/native-fetch/-/native-fetch-2.0.1.tgz#319d53741a7040def92d5dc8ea5fe9416b1fad89" - integrity sha512-gv4Bea+ga9QdXINurpkEqun3ap3vnB+WYoe4c8ddqUYEH7B2h6iD39RF8uVN7OwmSfMY3RDxkvBnoI4e2/vLXQ== - dependencies: - globalthis "^1.0.1" - -native-fetch@^3.0.0: - version "3.0.0" - resolved "https://registry.yarnpkg.com/native-fetch/-/native-fetch-3.0.0.tgz#06ccdd70e79e171c365c75117959cf4fe14a09bb" - integrity sha512-G3Z7vx0IFb/FQ4JxvtqGABsOTIqRWvgQz6e+erkB+JJD6LrszQtMozEHI4EkmgZQvnGHrpLVzUWk7t4sJCIkVw== - -needle@^2.2.1: - version "2.6.0" - resolved "https://registry.yarnpkg.com/needle/-/needle-2.6.0.tgz#24dbb55f2509e2324b4a99d61f413982013ccdbe" - integrity sha512-KKYdza4heMsEfSWD7VPUIz3zX2XDwOyX2d+geb4vrERZMT5RMU6ujjaD+I5Yr54uZxQ2w6XRTAhHBbSCyovZBg== - dependencies: - debug "^3.2.6" - iconv-lite "^0.4.4" - sax "^1.2.4" - -negotiator@0.6.2: - version "0.6.2" - resolved "https://registry.yarnpkg.com/negotiator/-/negotiator-0.6.2.tgz#feacf7ccf525a77ae9634436a64883ffeca346fb" - integrity sha512-hZXc7K2e+PgeI1eDBe/10Ard4ekbfrrqG8Ep+8Jmf4JID2bNg7NvCPOZN+kfF574pFQI7mum2AUqDidoKqcTOw== - -neo-async@^2.5.0: - version "2.6.2" - resolved "https://registry.yarnpkg.com/neo-async/-/neo-async-2.6.2.tgz#b4aafb93e3aeb2d8174ca53cf163ab7d7308305f" - integrity sha512-Yd3UES5mWCSqR+qNT93S3UoYUkqAZ9lLg8a7g9rimsWmYGK8cVToA4/sF3RrshdyV3sAGMXVUmpMYOw+dLpOuw== - -neo-async@^2.6.0: - version "2.6.1" - resolved "https://registry.yarnpkg.com/neo-async/-/neo-async-2.6.1.tgz#ac27ada66167fa8849a6addd837f6b189ad2081c" - integrity sha512-iyam8fBuCUpWeKPGpaNMetEocMt364qkCsfL9JuhjXX6dRnguRVOfk2GZaDpPjcOKiiXCPINZC1GczQ7iTq3Zw== - -neodoc@^2.0.2: - version "2.0.2" - resolved "https://registry.yarnpkg.com/neodoc/-/neodoc-2.0.2.tgz#ad00b30b9758379dcd3cf752a0659bacbab2c4fb" - integrity sha512-NAppJ0YecKWdhSXFYCHbo6RutiX8vOt/Jo3l46mUg6pQlpJNaqc5cGxdrW2jITQm5JIYySbFVPDl3RrREXNyPw== - dependencies: - ansi-regex "^2.0.0" - -next-tick@1: - version "1.1.0" - resolved "https://registry.yarnpkg.com/next-tick/-/next-tick-1.1.0.tgz#1836ee30ad56d67ef281b22bd199f709449b35eb" - integrity sha512-CXdUiJembsNjuToQvxayPZF9Vqht7hewsvy2sOWafLvi2awflj9mOC6bHIg50orX8IJvWKY9wYQ/zB2kogPslQ== - -next-tick@~1.0.0: - version "1.0.0" - resolved "https://registry.yarnpkg.com/next-tick/-/next-tick-1.0.0.tgz#ca86d1fe8828169b0120208e3dc8424b9db8342c" - integrity sha1-yobR/ogoFpsBICCOPchCS524NCw= - -nice-try@^1.0.4: - version "1.0.5" - resolved "https://registry.yarnpkg.com/nice-try/-/nice-try-1.0.5.tgz#a3378a7696ce7d223e88fc9b764bd7ef1089e366" - integrity sha512-1nh45deeb5olNY7eX82BkPO7SSxR5SSYJiPTrTdFUVYwAl8CKMA5N9PjTYkHiRjisVcxcQ1HXdLhx2qxxJzLNQ== - -no-case@^2.2.0, no-case@^2.3.2: - version "2.3.2" - resolved "https://registry.yarnpkg.com/no-case/-/no-case-2.3.2.tgz#60b813396be39b3f1288a4c1ed5d1e7d28b464ac" - integrity sha512-rmTZ9kz+f3rCvK2TD1Ue/oZlns7OGoIWP4fc3llxxRXlOkHKoWPPWJOfFYpITabSow43QJbRIoHQXtt10VldyQ== - dependencies: - lower-case "^1.1.1" - -no-case@^3.0.4: - version "3.0.4" - resolved "https://registry.yarnpkg.com/no-case/-/no-case-3.0.4.tgz#d361fd5c9800f558551a8369fc0dcd4662b6124d" - integrity sha512-fgAN3jGAh+RoxUGZHTSOLJIqUc2wmoBwGR4tbpNAKmmovFoWq0OdRkb0VkldReO2a2iBT/OEulG9XSUc10r3zg== - dependencies: - lower-case "^2.0.2" - tslib "^2.0.3" - -node-addon-api@^2.0.0: - version "2.0.2" - resolved "https://registry.yarnpkg.com/node-addon-api/-/node-addon-api-2.0.2.tgz#432cfa82962ce494b132e9d72a15b29f71ff5d32" - integrity sha512-Ntyt4AIXyaLIuMHF6IOoTakB3K+RWxwtsHNRxllEoA6vPwP9o4866g6YWDLUdnucilZhmkxiHwHr11gAENw+QA== - -node-emoji@^1.10.0: - version "1.10.0" - resolved "https://registry.yarnpkg.com/node-emoji/-/node-emoji-1.10.0.tgz#8886abd25d9c7bb61802a658523d1f8d2a89b2da" - integrity sha512-Yt3384If5H6BYGVHiHwTL+99OzJKHhgp82S8/dktEK73T26BazdgZ4JZh92xSVtGNJvz9UbXdNAc5hcrXV42vw== - dependencies: - lodash.toarray "^4.4.0" - -node-environment-flags@1.0.6: - version "1.0.6" - resolved "https://registry.yarnpkg.com/node-environment-flags/-/node-environment-flags-1.0.6.tgz#a30ac13621f6f7d674260a54dede048c3982c088" - integrity sha512-5Evy2epuL+6TM0lCQGpFIj6KwiEsGh1SrHUhTbNX+sLbBtjidPZFAnVK9y5yU1+h//RitLbRHTIMyxQPtxMdHw== - dependencies: - object.getownpropertydescriptors "^2.0.3" - semver "^5.7.0" - -node-fetch@2.4.1: - version "2.4.1" - resolved "https://registry.yarnpkg.com/node-fetch/-/node-fetch-2.4.1.tgz#b2e38f1117b8acbedbe0524f041fb3177188255d" - integrity sha512-P9UbpFK87NyqBZzUuDBDz4f6Yiys8xm8j7ACDbi6usvFm6KItklQUKjeoqTrYS/S1k6I8oaOC2YLLDr/gg26Mw== - -node-fetch@2.6.0: - version "2.6.0" - resolved "https://registry.yarnpkg.com/node-fetch/-/node-fetch-2.6.0.tgz#e633456386d4aa55863f676a7ab0daa8fdecb0fd" - integrity sha512-8dG4H5ujfvFiqDmVu9fQ5bOHUC15JMjMY/Zumv26oOvvVJjM67KF8koCWIabKQ1GJIa9r2mMZscBq/TbdOcmNA== - -node-fetch@2.6.1, node-fetch@^2.1.2, node-fetch@^2.2.0, node-fetch@^2.6.0, node-fetch@^2.6.1: - version "2.6.1" - resolved "https://registry.yarnpkg.com/node-fetch/-/node-fetch-2.6.1.tgz#045bd323631f76ed2e2b55573394416b639a0052" - integrity sha512-V4aYg89jEoVRxRb2fJdAg8FHvI7cEyYdVAh94HH0UIK8oJxUfkjlDQN9RbMx+bEjP7+ggMiFRprSti032Oipxw== - -node-forge@^0.10.0: - version "0.10.0" - resolved "https://registry.yarnpkg.com/node-forge/-/node-forge-0.10.0.tgz#32dea2afb3e9926f02ee5ce8794902691a676bf3" - integrity sha512-PPmu8eEeG9saEUvI97fm4OYxXVB6bFvyNTyiUOBichBpFG8A1Ljw3bY62+5oOjDEMHRnd0Y7HQ+x7uzxOzC6JA== - -node-gyp-build@^4.2.0: - version "4.2.3" - resolved "https://registry.yarnpkg.com/node-gyp-build/-/node-gyp-build-4.2.3.tgz#ce6277f853835f718829efb47db20f3e4d9c4739" - integrity sha512-MN6ZpzmfNCRM+3t57PTJHgHyw/h4OWnZ6mR8P5j/uZtqQr46RRuDE/P+g3n0YR/AiYXeWixZZzaip77gdICfRg== - -node-gyp-build@~3.8.0: - version "3.8.0" - resolved "https://registry.yarnpkg.com/node-gyp-build/-/node-gyp-build-3.8.0.tgz#0f57efeb1971f404dfcbfab975c284de7c70f14a" - integrity sha512-bYbpIHyRqZ7sVWXxGpz8QIRug5JZc/hzZH4GbdT9HTZi6WmKCZ8GLvP8OZ9TTiIBvwPFKgtGrlWQSXDAvYdsPw== - -node-gyp-build@~4.1.0: - version "4.1.1" - resolved "https://registry.yarnpkg.com/node-gyp-build/-/node-gyp-build-4.1.1.tgz#d7270b5d86717068d114cc57fff352f96d745feb" - integrity sha512-dSq1xmcPDKPZ2EED2S6zw/b9NKsqzXRE6dVr8TVQnI3FJOTteUMuqF3Qqs6LZg+mLGYJWqQzMbIjMtJqTv87nQ== - -node-int64@^0.4.0: - version "0.4.0" - resolved "https://registry.yarnpkg.com/node-int64/-/node-int64-0.4.0.tgz#87a9065cdb355d3182d8f94ce11188b825c68a3b" - integrity sha1-h6kGXNs1XTGC2PlM4RGIuCXGijs= - -node-interval-tree@^1.3.3: - version "1.3.3" - resolved "https://registry.yarnpkg.com/node-interval-tree/-/node-interval-tree-1.3.3.tgz#15ffb904cde08270214acace8dc7653e89ae32b7" - integrity sha512-K9vk96HdTK5fEipJwxSvIIqwTqr4e3HRJeJrNxBSeVMNSC/JWARRaX7etOLOuTmrRMeOI/K5TCJu3aWIwZiNTw== - dependencies: - shallowequal "^1.0.2" - -node-libs-browser@^2.0.0: - version "2.2.1" - resolved "https://registry.yarnpkg.com/node-libs-browser/-/node-libs-browser-2.2.1.tgz#b64f513d18338625f90346d27b0d235e631f6425" - integrity sha512-h/zcD8H9kaDZ9ALUWwlBUDo6TKF8a7qBSCSEGfjTVIYeqsioSKaAX+BN7NgiMGp6iSIXZ3PxgCu8KS3b71YK5Q== - dependencies: - assert "^1.1.1" - browserify-zlib "^0.2.0" - buffer "^4.3.0" - console-browserify "^1.1.0" - constants-browserify "^1.0.0" - crypto-browserify "^3.11.0" - domain-browser "^1.1.1" - events "^3.0.0" - https-browserify "^1.0.0" - os-browserify "^0.3.0" - path-browserify "0.0.1" - process "^0.11.10" - punycode "^1.2.4" - querystring-es3 "^0.2.0" - readable-stream "^2.3.3" - stream-browserify "^2.0.1" - stream-http "^2.7.2" - string_decoder "^1.0.0" - timers-browserify "^2.0.4" - tty-browserify "0.0.0" - url "^0.11.0" - util "^0.11.0" - vm-browserify "^1.0.1" - -node-pre-gyp@^0.11.0: - version "0.11.0" - resolved "https://registry.yarnpkg.com/node-pre-gyp/-/node-pre-gyp-0.11.0.tgz#db1f33215272f692cd38f03238e3e9b47c5dd054" - integrity sha512-TwWAOZb0j7e9eGaf9esRx3ZcLaE5tQ2lvYy1pb5IAaG1a2e2Kv5Lms1Y4hpj+ciXJRofIxxlt5haeQ/2ANeE0Q== - dependencies: - detect-libc "^1.0.2" - mkdirp "^0.5.1" - needle "^2.2.1" - nopt "^4.0.1" - npm-packlist "^1.1.6" - npmlog "^4.0.2" - rc "^1.2.7" - rimraf "^2.6.1" - semver "^5.3.0" - tar "^4" - -node-releases@^1.1.70: - version "1.1.71" - resolved "https://registry.yarnpkg.com/node-releases/-/node-releases-1.1.71.tgz#cb1334b179896b1c89ecfdd4b725fb7bbdfc7dbb" - integrity sha512-zR6HoT6LrLCRBwukmrVbHv0EpEQjksO6GmFcZQQuCAy139BEsoVKPYnf3jongYW83fAa1torLGYwxxky/p28sg== - -nofilter@^1.0.3: - version "1.0.3" - resolved "https://registry.yarnpkg.com/nofilter/-/nofilter-1.0.3.tgz#34e54b4cc9757de0cad38cc0d19462489b1b7f5d" - integrity sha512-FlUlqwRK6reQCaFLAhMcF+6VkVG2caYjKQY3YsRDTl4/SEch595Qb3oLjJRDr8dkHAAOVj2pOx3VknfnSgkE5g== - -nofilter@^1.0.4: - version "1.0.4" - resolved "https://registry.yarnpkg.com/nofilter/-/nofilter-1.0.4.tgz#78d6f4b6a613e7ced8b015cec534625f7667006e" - integrity sha512-N8lidFp+fCz+TD51+haYdbDGrcBWwuHX40F5+z0qkUjMJ5Tp+rdSuAkMJ9N9eoolDlEVTf6u5icM+cNKkKW2mA== +fast-json-stable-stringify@^2.0.0: + version "2.1.0" + resolved "https://registry.yarnpkg.com/fast-json-stable-stringify/-/fast-json-stable-stringify-2.1.0.tgz#874bf69c6f404c2b5d99c481341399fd55892633" + integrity sha512-lhd/wF+Lk98HZoTCtlVraHtfh5XYijIjalXck7saUtuanSDyLMxnHhSXEDJqHxD7msR8D0uCmqlkwjCV8xvwHw== -noop-fn@^1.0.0: - version "1.0.0" - resolved "https://registry.yarnpkg.com/noop-fn/-/noop-fn-1.0.0.tgz#5f33d47f13d2150df93e0cb036699e982f78ffbf" - integrity sha1-XzPUfxPSFQ35PgywNmmemC94/78= +fast-levenshtein@^2.0.6, fast-levenshtein@~2.0.6: + version "2.0.6" + resolved "https://registry.yarnpkg.com/fast-levenshtein/-/fast-levenshtein-2.0.6.tgz#3d8a5c66883a16a30ca8643e851f19baa7797917" + integrity sha1-PYpcZog6FqMMqGQ+hR8Zuqd5eRc= -nopt@3.x: - version "3.0.6" - resolved "https://registry.yarnpkg.com/nopt/-/nopt-3.0.6.tgz#c6465dbf08abcd4db359317f79ac68a646b28ff9" - integrity sha1-xkZdvwirzU2zWTF/eaxopkayj/k= +fastq@^1.6.0: + version "1.11.0" + resolved "https://registry.yarnpkg.com/fastq/-/fastq-1.11.0.tgz#bb9fb955a07130a918eb63c1f5161cc32a5d0858" + integrity sha512-7Eczs8gIPDrVzT+EksYBcupqMyxSHXXrHOLRRxU2/DicV8789MRBRR8+Hc2uWzUupOs4YS4JzBmBxjjCVBxD/g== dependencies: - abbrev "1" + reusify "^1.0.4" -nopt@^4.0.1: - version "4.0.3" - resolved "https://registry.yarnpkg.com/nopt/-/nopt-4.0.3.tgz#a375cad9d02fd921278d954c2254d5aa57e15e48" - integrity sha512-CvaGwVMztSMJLOeXPrez7fyfObdZqNUK1cPAEzLHrTybIua9pMdmmPR5YwtfNftIOMv3DPUhFaxsZMNTQO20Kg== +figures@^2.0.0: + version "2.0.0" + resolved "https://registry.yarnpkg.com/figures/-/figures-2.0.0.tgz#3ab1a2d2a62c8bfb431a0c94cb797a2fce27c962" + integrity sha1-OrGi0qYsi/tDGgyUy3l6L84nyWI= dependencies: - abbrev "1" - osenv "^0.1.4" + escape-string-regexp "^1.0.5" -normalize-package-data@^2.3.2: - version "2.5.0" - resolved "https://registry.yarnpkg.com/normalize-package-data/-/normalize-package-data-2.5.0.tgz#e66db1838b200c1dfc233225d12cb36520e234a8" - integrity sha512-/5CMN3T0R4XTj4DcGaexo+roZSdSFW/0AOOTROrjxzCG1wrWXEsGbRKevjlIL+ZDE4sZlJr5ED4YW0yqmkK+eA== +file-entry-cache@^5.0.1: + version "5.0.1" + resolved "https://registry.yarnpkg.com/file-entry-cache/-/file-entry-cache-5.0.1.tgz#ca0f6efa6dd3d561333fb14515065c2fafdf439c" + integrity sha512-bCg29ictuBaKUwwArK4ouCaqDgLZcysCFLmM/Yn/FDoqndh/9vNuQfXRDvTuXKLxfD/JtZQGKFT8MGcJBK644g== dependencies: - hosted-git-info "^2.1.4" - resolve "^1.10.0" - semver "2 || 3 || 4 || 5" - validate-npm-package-license "^3.0.1" + flat-cache "^2.0.1" -normalize-path@^2.0.1, normalize-path@^2.1.1: - version "2.1.1" - resolved "https://registry.yarnpkg.com/normalize-path/-/normalize-path-2.1.1.tgz#1ab28b556e198363a8c1a6f7e6fa20137fe6aed9" - integrity sha1-GrKLVW4Zg2Oowab35vogE3/mrtk= +file-entry-cache@^6.0.1: + version "6.0.1" + resolved "https://registry.yarnpkg.com/file-entry-cache/-/file-entry-cache-6.0.1.tgz#211b2dd9659cb0394b073e7323ac3c933d522027" + integrity sha512-7Gps/XWymbLk2QLYK4NzpMOrYjMhdIxXuIvy2QBsLE6ljuodKvdkWs/cpyJJ3CVIVpH0Oi1Hvg1ovbMzLdFBBg== dependencies: - remove-trailing-separator "^1.0.1" - -normalize-path@^3.0.0, normalize-path@~3.0.0: - version "3.0.0" - resolved "https://registry.yarnpkg.com/normalize-path/-/normalize-path-3.0.0.tgz#0dcd69ff23a1c9b11fd0978316644a0388216a65" - integrity sha512-6eZs5Ls3WtCisHWp9S2GUy8dqkpGi4BVSz3GaqiE6ezub0512ESztXUwUB6C6IKbQkY2Pnb/mD4WYojCRwcwLA== + flat-cache "^3.0.4" -normalize-url@^4.1.0: - version "4.5.0" - resolved "https://registry.yarnpkg.com/normalize-url/-/normalize-url-4.5.0.tgz#453354087e6ca96957bd8f5baf753f5982142129" - integrity sha512-2s47yzUxdexf1OhyRi4Em83iQk0aPvwTddtFz4hnSSw9dCEsLEGf6SwIO8ss/19S9iBb5sJaOuTvTGDeZI00BQ== +file-uri-to-path@1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/file-uri-to-path/-/file-uri-to-path-1.0.0.tgz#553a7b8446ff6f684359c445f1e37a05dacc33dd" + integrity sha512-0Zt+s3L7Vf1biwWZ29aARiVYLx7iMGnEUl9x33fbB/j3jR81u/O2LbqK+Bm1CDSNDKVtJ/YjwY7TUd5SkeLQLw== -npm-bundled@^1.0.1: - version "1.1.1" - resolved "https://registry.yarnpkg.com/npm-bundled/-/npm-bundled-1.1.1.tgz#1edd570865a94cdb1bc8220775e29466c9fb234b" - integrity sha512-gqkfgGePhTpAEgUsGEgcq1rqPXA+tv/aVBlgEzfXwA1yiUJF7xtEt3CtVwOjNYQOVknDk0F20w58Fnm3EtG0fA== +fill-range@^7.0.1: + version "7.0.1" + resolved "https://registry.yarnpkg.com/fill-range/-/fill-range-7.0.1.tgz#1919a6a7c75fe38b2c7c77e5198535da9acdda40" + integrity sha512-qOo9F+dMUmC2Lcb4BbVvnKJxTPjCm+RRpe4gDuGrzkL7mEVl/djYSu2OdQ2Pa302N4oqkSg9ir6jaLWJ2USVpQ== dependencies: - npm-normalize-package-bin "^1.0.1" + to-regex-range "^5.0.1" -npm-normalize-package-bin@^1.0.1: - version "1.0.1" - resolved "https://registry.yarnpkg.com/npm-normalize-package-bin/-/npm-normalize-package-bin-1.0.1.tgz#6e79a41f23fd235c0623218228da7d9c23b8f6e2" - integrity sha512-EPfafl6JL5/rU+ot6P3gRSCpPDW5VmIzX959Ob1+ySFUuuYHWHekXpwdUZcKP5C+DS4GEtdJluwBjnsNDl+fSA== +finalhandler@~1.1.2: + version "1.1.2" + resolved "https://registry.yarnpkg.com/finalhandler/-/finalhandler-1.1.2.tgz#b7e7d000ffd11938d0fdb053506f6ebabe9f587d" + integrity sha512-aAWcW57uxVNrQZqFXjITpW3sIUQmHGG3qSb9mUah9MgMC4NeWhNOlNjXEYq3HjRAvL6arUviZGGJsBg6z0zsWA== + 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" -npm-packlist@^1.1.6: - version "1.4.8" - resolved "https://registry.yarnpkg.com/npm-packlist/-/npm-packlist-1.4.8.tgz#56ee6cc135b9f98ad3d51c1c95da22bbb9b2ef3e" - integrity sha512-5+AZgwru5IevF5ZdnFglB5wNlHG1AOOuw28WhUq8/8emhBmLv6jX5by4WJCh7lW0uSYZYS6DXqIsyZVIXRZU9A== +find-replace@^1.0.3: + version "1.0.3" + resolved "https://registry.yarnpkg.com/find-replace/-/find-replace-1.0.3.tgz#b88e7364d2d9c959559f388c66670d6130441fa0" + integrity sha1-uI5zZNLZyVlVnziMZmcNYTBEH6A= dependencies: - ignore-walk "^3.0.1" - npm-bundled "^1.0.1" - npm-normalize-package-bin "^1.0.1" + array-back "^1.0.4" + test-value "^2.1.0" -npm-run-path@^2.0.0: - version "2.0.2" - resolved "https://registry.yarnpkg.com/npm-run-path/-/npm-run-path-2.0.2.tgz#35a9232dfa35d7067b4cb2ddf2357b1871536c5f" - integrity sha1-NakjLfo11wZ7TLLd8jV7GHFTbF8= +find-up@3.0.0, find-up@^3.0.0: + version "3.0.0" + resolved "https://registry.yarnpkg.com/find-up/-/find-up-3.0.0.tgz#49169f1d7993430646da61ecc5ae355c21c97b73" + integrity sha512-1yD6RmLI1XBfxugvORwlck6f75tYL+iR0jqwsOrOxMZyGYqUuDhJ0l4AXdO1iX/FTs9cBAMEk1gWSEx1kSbylg== dependencies: - path-key "^2.0.0" + locate-path "^3.0.0" -npmignore@^0.2.0: - version "0.2.0" - resolved "https://registry.yarnpkg.com/npmignore/-/npmignore-0.2.0.tgz#cd971b45dd4745e6316550a5117cda0ddd8d66cf" - integrity sha1-zZcbRd1HReYxZVClEXzaDd2NZs8= +find-up@5.0.0: + version "5.0.0" + resolved "https://registry.yarnpkg.com/find-up/-/find-up-5.0.0.tgz#4c92819ecb7083561e4f4a240a86be5198f536fc" + integrity sha512-78/PXT1wlLLDgTzDs7sjq9hzz0vXD+zn+7wypEe4fXQxCmdmqfGsEPQxmiCSQI3ajFV91bVSsvNtrJRiW6nGng== dependencies: - array-uniq "^1.0.1" - minimist "^1.1.0" - verbalize "^0.1.2" + locate-path "^6.0.0" + path-exists "^4.0.0" -npmlog@^4.0.2: - version "4.1.2" - resolved "https://registry.yarnpkg.com/npmlog/-/npmlog-4.1.2.tgz#08a7f2a8bf734604779a9efa4ad5cc717abb954b" - integrity sha512-2uUqazuKlTaSI/dC8AzicUck7+IrEaOnN/e0jd3Xtt1KcGpwx30v50mL7oPyr/h9bL3E4aZccVwpwP+5W9Vjkg== +find-up@^2.1.0: + version "2.1.0" + resolved "https://registry.yarnpkg.com/find-up/-/find-up-2.1.0.tgz#45d1b7e506c717ddd482775a2b77920a3c0c57a7" + integrity sha1-RdG35QbHF93UgndaK3eSCjwMV6c= dependencies: - are-we-there-yet "~1.1.2" - console-control-strings "~1.1.0" - gauge "~2.7.3" - set-blocking "~2.0.0" + locate-path "^2.0.0" -nth-check@^2.0.0: +find-yarn-workspace-root@^2.0.0: version "2.0.0" - resolved "https://registry.yarnpkg.com/nth-check/-/nth-check-2.0.0.tgz#1bb4f6dac70072fc313e8c9cd1417b5074c0a125" - integrity sha512-i4sc/Kj8htBrAiH1viZ0TgU8Y5XqCaV/FziYK6TBczxmeKm3AEFWqqF3195yKudrarqy7Zu80Ra5dobFjn9X/Q== + resolved "https://registry.yarnpkg.com/find-yarn-workspace-root/-/find-yarn-workspace-root-2.0.0.tgz#f47fb8d239c900eb78179aa81b66673eac88f7bd" + integrity sha512-1IMnbjt4KzsQfnhnzNd8wUEgXZ44IzZaZmnLYx7D5FZlaHt2gW20Cri8Q+E/t5tIj4+epTBub+2Zxu/vNILzqQ== dependencies: - boolbase "^1.0.0" + micromatch "^4.0.2" -nth-check@~1.0.1: - version "1.0.2" - resolved "https://registry.yarnpkg.com/nth-check/-/nth-check-1.0.2.tgz#b2bd295c37e3dd58a3bf0700376663ba4d9cf05c" - integrity sha512-WeBOdju8SnzPN5vTUJYxYUxLeXpCaVP5i5e0LF8fg7WORF2Wd7wFX/pk0tYZk7s8T+J7VLy0Da6J1+wCT0AtHg== +flat-cache@^2.0.1: + version "2.0.1" + resolved "https://registry.yarnpkg.com/flat-cache/-/flat-cache-2.0.1.tgz#5d296d6f04bda44a4630a301413bdbc2ec085ec0" + integrity sha512-LoQe6yDuUMDzQAEH8sgmh4Md6oZnc/7PjtwjNFSzveXqSHt6ka9fPBuso7IGf9Rz4uqnSnWiFH2B/zj24a5ReA== dependencies: - boolbase "~1.0.0" - -nullthrows@^1.1.1: - version "1.1.1" - resolved "https://registry.yarnpkg.com/nullthrows/-/nullthrows-1.1.1.tgz#7818258843856ae971eae4208ad7d7eb19a431b1" - integrity sha512-2vPPEi+Z7WqML2jZYddDIfy5Dqb0r2fze2zTxNNknZaFpVHU3mFB3R+DWeJWGVx0ecvttSGlJTI+WG+8Z4cDWw== - -number-is-nan@^1.0.0: - version "1.0.1" - resolved "https://registry.yarnpkg.com/number-is-nan/-/number-is-nan-1.0.1.tgz#097b602b53422a522c1afb8790318336941a011d" - integrity sha1-CXtgK1NCKlIsGvuHkDGDNpQaAR0= + flatted "^2.0.0" + rimraf "2.6.3" + write "1.0.3" -number-to-bn@1.7.0: - version "1.7.0" - resolved "https://registry.yarnpkg.com/number-to-bn/-/number-to-bn-1.7.0.tgz#bb3623592f7e5f9e0030b1977bd41a0c53fe1ea0" - integrity sha1-uzYjWS9+X54AMLGXe9QaDFP+HqA= +flat-cache@^3.0.4: + version "3.0.4" + resolved "https://registry.yarnpkg.com/flat-cache/-/flat-cache-3.0.4.tgz#61b0338302b2fe9f957dcc32fc2a87f1c3048b11" + integrity sha512-dm9s5Pw7Jc0GvMYbshN6zchCA9RgQlzzEZX3vylR9IqFfS8XciblUXOKfW6SiuJ0e13eDYZoZV5wdrev7P3Nwg== dependencies: - bn.js "4.11.6" - strip-hex-prefix "1.0.0" + flatted "^3.1.0" + rimraf "^3.0.2" -"nwmatcher@>= 1.3.7 < 2.0.0": - version "1.4.4" - resolved "https://registry.yarnpkg.com/nwmatcher/-/nwmatcher-1.4.4.tgz#2285631f34a95f0d0395cd900c96ed39b58f346e" - integrity sha512-3iuY4N5dhgMpCUrOVnuAdGrgxVqV2cJpM+XNccjR2DKOB1RUP0aA+wGXEiNziG/UKboFyGBIoKOaNlJxx8bciQ== +flat@^4.1.0: + version "4.1.1" + resolved "https://registry.yarnpkg.com/flat/-/flat-4.1.1.tgz#a392059cc382881ff98642f5da4dde0a959f309b" + integrity sha512-FmTtBsHskrU6FJ2VxCnsDb84wu9zhmO3cUX2kGFb5tuwhfXxGciiT0oRY+cck35QmG+NmGh5eLz6lLCpWTqwpA== + dependencies: + is-buffer "~2.0.3" -oauth-sign@~0.9.0: - version "0.9.0" - resolved "https://registry.yarnpkg.com/oauth-sign/-/oauth-sign-0.9.0.tgz#47a7b016baa68b5fa0ecf3dee08a85c679ac6455" - integrity sha512-fexhUFFPTGV8ybAtSIGbV6gOkSv8UtRbDBnAyLQw4QPKkgNlsH2ByPGtMUqdWkos6YCRmAqViwgZrJc/mRDzZQ== +flat@^5.0.2: + version "5.0.2" + resolved "https://registry.yarnpkg.com/flat/-/flat-5.0.2.tgz#8ca6fe332069ffa9d324c327198c598259ceb241" + integrity sha512-b6suED+5/3rTpUBdG1gupIl8MPFCAMA0QXwmljLhvCUKcUvdE4gWky9zpuGCcXHOsz4J9wPGNWq6OKpmIzz3hQ== -object-assign@4.1.0: - version "4.1.0" - resolved "https://registry.yarnpkg.com/object-assign/-/object-assign-4.1.0.tgz#7a3b3d0e98063d43f4c03f2e8ae6cd51a86883a0" - integrity sha1-ejs9DpgGPUP0wD8uiubNUahog6A= +flatted@^2.0.0: + version "2.0.2" + resolved "https://registry.yarnpkg.com/flatted/-/flatted-2.0.2.tgz#4575b21e2bcee7434aa9be662f4b7b5f9c2b5138" + integrity sha512-r5wGx7YeOwNWNlCA0wQ86zKyDLMQr+/RB8xy74M4hTphfmjlijTSSXGuH8rnvKZnfT9i+75zmd8jcKdMR4O6jA== -object-assign@^4, object-assign@^4.0.0, object-assign@^4.0.1, object-assign@^4.1.0, object-assign@^4.1.1: - version "4.1.1" - resolved "https://registry.yarnpkg.com/object-assign/-/object-assign-4.1.1.tgz#2109adc7965887cfc05cbbd442cac8bfbb360863" - integrity sha1-IQmtx5ZYh8/AXLvUQsrIv7s2CGM= +flatted@^3.1.0: + version "3.1.1" + resolved "https://registry.yarnpkg.com/flatted/-/flatted-3.1.1.tgz#c4b489e80096d9df1dfc97c79871aea7c617c469" + integrity sha512-zAoAQiudy+r5SvnSw3KJy5os/oRJYHzrzja/tBDqrZtNhUw8bt6y8OBzMWcjWr+8liV8Eb6yOhw8WZ7VFZ5ZzA== -object-copy@^0.1.0: +fmix@^0.1.0: version "0.1.0" - resolved "https://registry.yarnpkg.com/object-copy/-/object-copy-0.1.0.tgz#7e7d858b781bd7c991a41ba975ed3812754e998c" - integrity sha1-fn2Fi3gb18mRpBupde04EnVOmYw= + resolved "https://registry.yarnpkg.com/fmix/-/fmix-0.1.0.tgz#c7bbf124dec42c9d191cfb947d0a9778dd986c0c" + integrity sha1-x7vxJN7ELJ0ZHPuUfQqXeN2YbAw= dependencies: - copy-descriptor "^0.1.0" - define-property "^0.2.5" - kind-of "^3.0.3" + imul "^1.0.0" -object-inspect@^1.9.0: - version "1.9.0" - resolved "https://registry.yarnpkg.com/object-inspect/-/object-inspect-1.9.0.tgz#c90521d74e1127b67266ded3394ad6116986533a" - integrity sha512-i3Bp9iTqwhaLZBxGkRfo5ZbE07BQRT7MGu8+nNgwW9ItGp1TzCTw2DLEoWwjClxBjOFI/hWljTAmYGCEwmtnOw== +follow-redirects@^1.10.0, follow-redirects@^1.12.1: + version "1.14.1" + resolved "https://registry.yarnpkg.com/follow-redirects/-/follow-redirects-1.14.1.tgz#d9114ded0a1cfdd334e164e6662ad02bfd91ff43" + integrity sha512-HWqDgT7ZEkqRzBvc2s64vSZ/hfOceEol3ac/7tKwzuvEyWx3/4UegXh5oBOIotkGsObyk3xznnSRVADBgWSQVg== -object-keys@^1.0.11, object-keys@^1.0.12, object-keys@^1.1.1: - version "1.1.1" - resolved "https://registry.yarnpkg.com/object-keys/-/object-keys-1.1.1.tgz#1c47f272df277f3b1daf061677d9c82e2322c60e" - integrity sha512-NuAESUOUMrlIXOfHKzD6bpPu3tYt3xvjNdRIQ+FeT0lNb4K8WR70CaDxhuNguS2XG+GjkyMwOzsN5ZktImfhLA== +for-each@^0.3.3: + version "0.3.3" + resolved "https://registry.yarnpkg.com/for-each/-/for-each-0.3.3.tgz#69b447e88a0a5d32c3e7084f3f1710034b21376e" + integrity sha512-jqYfLp7mo9vIyQf8ykW2v7A+2N4QjeCeI5+Dz9XraiO1ign81wjiH7Fb9vSOWvQfNtmSa4H2RoQTrrXivdUZmw== + dependencies: + is-callable "^1.1.3" -object-path@^0.11.4: - version "0.11.5" - resolved "https://registry.yarnpkg.com/object-path/-/object-path-0.11.5.tgz#d4e3cf19601a5140a55a16ad712019a9c50b577a" - integrity sha512-jgSbThcoR/s+XumvGMTMf81QVBmah+/Q7K7YduKeKVWL7N111unR2d6pZZarSk6kY/caeNxUDyxOvMWyzoU2eg== +foreach@^2.0.5: + version "2.0.5" + resolved "https://registry.yarnpkg.com/foreach/-/foreach-2.0.5.tgz#0bee005018aeb260d0a3af3ae658dd0136ec1b99" + integrity sha1-C+4AUBiusmDQo6865ljdATbsG5k= -object-visit@^1.0.0: - version "1.0.1" - resolved "https://registry.yarnpkg.com/object-visit/-/object-visit-1.0.1.tgz#f79c4493af0c5377b59fe39d395e41042dd045bb" - integrity sha1-95xEk68MU3e1n+OdOV5BBC3QRbs= - dependencies: - isobject "^3.0.0" +forever-agent@~0.6.1: + version "0.6.1" + resolved "https://registry.yarnpkg.com/forever-agent/-/forever-agent-0.6.1.tgz#fbc71f0c41adeb37f96c577ad1ed42d8fdacca91" + integrity sha1-+8cfDEGt6zf5bFd60e1C2P2sypE= -object.assign@4.1.0: - version "4.1.0" - resolved "https://registry.yarnpkg.com/object.assign/-/object.assign-4.1.0.tgz#968bf1100d7956bb3ca086f006f846b3bc4008da" - integrity sha512-exHJeq6kBKj58mqGyTQ9DFvrZC/eR6OwxzoM9YRoGBqrXYonaFyGiFMuc9VZrXf7DarreEwMpurG3dd+CNyW5w== +form-data@^2.2.0: + version "2.5.1" + resolved "https://registry.yarnpkg.com/form-data/-/form-data-2.5.1.tgz#f2cbec57b5e59e23716e128fe44d4e5dd23895f4" + integrity sha512-m21N3WOmEEURgk6B9GLOE4RuWOFf28Lhh9qGYeNlGq4VDXUlJy2th2slBNU8Gp8EzloYZOibZJ7t5ecIrFSjVA== dependencies: - define-properties "^1.1.2" - function-bind "^1.1.1" - has-symbols "^1.0.0" - object-keys "^1.0.11" + asynckit "^0.4.0" + combined-stream "^1.0.6" + mime-types "^2.1.12" -object.assign@^4.1.0, object.assign@^4.1.2: - version "4.1.2" - resolved "https://registry.yarnpkg.com/object.assign/-/object.assign-4.1.2.tgz#0ed54a342eceb37b38ff76eb831a0e788cb63940" - integrity sha512-ixT2L5THXsApyiUPYKmW+2EHpXXe5Ii3M+f4e+aJFAHao5amFRW6J0OO6c/LU8Be47utCx2GL89hxGB6XSmKuQ== +form-data@^4.0.0: + version "4.0.0" + resolved "https://registry.yarnpkg.com/form-data/-/form-data-4.0.0.tgz#93919daeaf361ee529584b9b31664dc12c9fa452" + integrity sha512-ETEklSGi5t0QMZuiXoA/Q6vcnxcLQP5vdugSpuAyi6SVGi2clPPp+xgEhuMaHC+zGgn31Kd235W35f7Hykkaww== dependencies: - call-bind "^1.0.0" - define-properties "^1.1.3" - has-symbols "^1.0.1" - object-keys "^1.1.1" + asynckit "^0.4.0" + combined-stream "^1.0.8" + mime-types "^2.1.12" -object.getownpropertydescriptors@^2.0.3, object.getownpropertydescriptors@^2.1.1: - version "2.1.2" - resolved "https://registry.yarnpkg.com/object.getownpropertydescriptors/-/object.getownpropertydescriptors-2.1.2.tgz#1bd63aeacf0d5d2d2f31b5e393b03a7c601a23f7" - integrity sha512-WtxeKSzfBjlzL+F9b7M7hewDzMwy+C8NRssHd1YrNlzHzIDrXcXiNOMrezdAEM4UXixgV+vvnyBeN7Rygl2ttQ== +form-data@~2.3.2: + version "2.3.3" + resolved "https://registry.yarnpkg.com/form-data/-/form-data-2.3.3.tgz#dcce52c05f644f298c6a7ab936bd724ceffbf3a6" + integrity sha512-1lLKB2Mu3aGP1Q/2eCOx0fNbRMe7XdwktwOruhfqqd0rIJWwN4Dh+E3hrPSlDCXnSR7UtZ1N38rVXm+6+MEhJQ== dependencies: - call-bind "^1.0.2" - define-properties "^1.1.3" - es-abstract "^1.18.0-next.2" + asynckit "^0.4.0" + combined-stream "^1.0.6" + mime-types "^2.1.12" -object.omit@^2.0.0: - version "2.0.1" - resolved "https://registry.yarnpkg.com/object.omit/-/object.omit-2.0.1.tgz#1a9c744829f39dbb858c76ca3579ae2a54ebd1fa" - integrity sha1-Gpx0SCnznbuFjHbKNXmuKlTr0fo= - dependencies: - for-own "^0.1.4" - is-extendable "^0.1.1" +forwarded@~0.1.2: + version "0.1.2" + resolved "https://registry.yarnpkg.com/forwarded/-/forwarded-0.1.2.tgz#98c23dab1175657b8c0573e8ceccd91b0ff18c84" + integrity sha1-mMI9qxF1ZXuMBXPozszZGw/xjIQ= -object.pick@^1.3.0: - version "1.3.0" - resolved "https://registry.yarnpkg.com/object.pick/-/object.pick-1.3.0.tgz#87a10ac4c1694bd2e1cbf53591a66141fb5dd747" - integrity sha1-h6EKxMFpS9Lhy/U1kaZhQftd10c= +fp-ts@1.19.3: + version "1.19.3" + resolved "https://registry.yarnpkg.com/fp-ts/-/fp-ts-1.19.3.tgz#261a60d1088fbff01f91256f91d21d0caaaaa96f" + integrity sha512-H5KQDspykdHuztLTg+ajGN0Z2qUjcEf3Ybxc6hLt0k7/zPkn29XnKnxlBPyW2XIddWrGaJBzBl4VLYOtk39yZg== + +fp-ts@^1.0.0: + version "1.19.5" + resolved "https://registry.yarnpkg.com/fp-ts/-/fp-ts-1.19.5.tgz#3da865e585dfa1fdfd51785417357ac50afc520a" + integrity sha512-wDNqTimnzs8QqpldiId9OavWK2NptormjXnRJTQecNjzwfyp6P/8s/zG8e4h3ja3oqkKaY72UlTjQYt/1yXf9A== + +fresh@0.5.2: + version "0.5.2" + resolved "https://registry.yarnpkg.com/fresh/-/fresh-0.5.2.tgz#3d8cadd90d976569fa835ab1f8e4b23a105605a7" + integrity sha1-PYyt2Q2XZWn6g1qx+OSyOhBWBac= + +fs-extra@^0.30.0: + version "0.30.0" + resolved "https://registry.yarnpkg.com/fs-extra/-/fs-extra-0.30.0.tgz#f233ffcc08d4da7d432daa449776989db1df93f0" + integrity sha1-8jP/zAjU2n1DLapEl3aYnbHfk/A= dependencies: - isobject "^3.0.1" + graceful-fs "^4.1.2" + jsonfile "^2.1.0" + klaw "^1.0.0" + path-is-absolute "^1.0.0" + rimraf "^2.2.8" -oboe@2.1.4: - version "2.1.4" - resolved "https://registry.yarnpkg.com/oboe/-/oboe-2.1.4.tgz#20c88cdb0c15371bb04119257d4fdd34b0aa49f6" - integrity sha1-IMiM2wwVNxuwQRklfU/dNLCqSfY= +fs-extra@^10.0.0: + version "10.0.0" + resolved "https://registry.yarnpkg.com/fs-extra/-/fs-extra-10.0.0.tgz#9ff61b655dde53fb34a82df84bb214ce802e17c1" + integrity sha512-C5owb14u9eJwizKGdchcDUQeFtlSHHthBk8pbX9Vc1PFZrLombudjDnNns88aYslCyF6IY5SUw3Roz6xShcEIQ== dependencies: - http-https "^1.0.0" + graceful-fs "^4.2.0" + jsonfile "^6.0.1" + universalify "^2.0.0" -oboe@2.1.5: - version "2.1.5" - resolved "https://registry.yarnpkg.com/oboe/-/oboe-2.1.5.tgz#5554284c543a2266d7a38f17e073821fbde393cd" - integrity sha1-VVQoTFQ6ImbXo48X4HOCH73jk80= +fs-extra@^4.0.2: + version "4.0.3" + resolved "https://registry.yarnpkg.com/fs-extra/-/fs-extra-4.0.3.tgz#0d852122e5bc5beb453fb028e9c0c9bf36340c94" + integrity sha512-q6rbdDd1o2mAnQreO7YADIxf/Whx4AHBiRf6d+/cVT8h44ss+lHgxf1FemcqDnQt9X3ct4McHr+JMGlYSsK7Cg== dependencies: - http-https "^1.0.0" + graceful-fs "^4.1.2" + jsonfile "^4.0.0" + universalify "^0.1.0" -on-finished@~2.3.0: - version "2.3.0" - resolved "https://registry.yarnpkg.com/on-finished/-/on-finished-2.3.0.tgz#20f1336481b083cd75337992a16971aa2d906947" - integrity sha1-IPEzZIGwg811M3mSoWlxqi2QaUc= +fs-extra@^7.0.0, fs-extra@^7.0.1: + version "7.0.1" + resolved "https://registry.yarnpkg.com/fs-extra/-/fs-extra-7.0.1.tgz#4f189c44aa123b895f722804f55ea23eadc348e9" + integrity sha512-YJDaCJZEnBmcbw13fvdAM9AwNOJwOzrE4pqMqBq5nFiEqXUqHwlK4B+3pUw6JNvfSPtX05xFHtYy/1ni01eGCw== dependencies: - ee-first "1.1.1" + graceful-fs "^4.1.2" + jsonfile "^4.0.0" + universalify "^0.1.0" -once@1.x, once@^1.3.0, once@^1.3.1, once@^1.4.0: - version "1.4.0" - resolved "https://registry.yarnpkg.com/once/-/once-1.4.0.tgz#583b1aa775961d4b113ac17d9c50baef9dd76bd1" - integrity sha1-WDsap3WWHUsROsF9nFC6753Xa9E= +fs-extra@^8.1.0: + version "8.1.0" + resolved "https://registry.yarnpkg.com/fs-extra/-/fs-extra-8.1.0.tgz#49d43c45a88cd9677668cb7be1b46efdb8d2e1c0" + integrity sha512-yhlQgA6mnOJUKOsRUFsgJdQCvkKhcz8tlZG5HBQfReYZy46OwLcY+Zia0mtdHsOo9y/hP+CxMN0TU9QxoOtG4g== dependencies: - wrappy "1" + graceful-fs "^4.2.0" + jsonfile "^4.0.0" + universalify "^0.1.0" -onetime@^2.0.0: - version "2.0.1" - resolved "https://registry.yarnpkg.com/onetime/-/onetime-2.0.1.tgz#067428230fd67443b2794b22bba528b6867962d4" - integrity sha1-BnQoIw/WdEOyeUsiu6UotoZ5YtQ= +fs-extra@^9.1.0: + version "9.1.0" + resolved "https://registry.yarnpkg.com/fs-extra/-/fs-extra-9.1.0.tgz#5954460c764a8da2094ba3554bf839e6b9a7c86d" + integrity sha512-hcg3ZmepS30/7BSFqRvoo3DOMQu7IjqxO5nCDt+zM9XWjb33Wg7ziNT+Qvqbuc3+gWpzO02JubVyk2G4Zvo1OQ== dependencies: - mimic-fn "^1.0.0" + at-least-node "^1.0.0" + graceful-fs "^4.2.0" + jsonfile "^6.0.1" + universalify "^2.0.0" -onetime@^5.1.0: - version "5.1.0" - resolved "https://registry.yarnpkg.com/onetime/-/onetime-5.1.0.tgz#fff0f3c91617fe62bb50189636e99ac8a6df7be5" - integrity sha512-5NcSkPHhwTVFIQN+TUqXoS5+dlElHXdpAWu9I0HP20YOtIi+aZ0Ct82jdlILDxjLEAWwvm+qj1m6aEtsDVmm6Q== +fs-minipass@^1.2.5: + version "1.2.7" + resolved "https://registry.yarnpkg.com/fs-minipass/-/fs-minipass-1.2.7.tgz#ccff8570841e7fe4265693da88936c55aed7f7c7" + integrity sha512-GWSSJGFy4e9GUeCcbIkED+bgAoFyj7XF1mV8rma3QW4NIqX9Kyx79N/PF61H5udOV3aY1IaMLs6pGbH71nlCTA== dependencies: - mimic-fn "^2.1.0" + minipass "^2.6.0" -open@^7.4.2: - version "7.4.2" - resolved "https://registry.yarnpkg.com/open/-/open-7.4.2.tgz#b8147e26dcf3e426316c730089fd71edd29c2321" - integrity sha512-MVHddDVweXZF3awtlAS+6pgKLlm/JgxZ90+/NBurBoQctVOOB/zDdVjcyPzQ+0laDGbsWgrRkflI65sQeOgT9Q== - dependencies: - is-docker "^2.0.0" - is-wsl "^2.1.1" +fs-readdir-recursive@^1.1.0: + version "1.1.0" + resolved "https://registry.yarnpkg.com/fs-readdir-recursive/-/fs-readdir-recursive-1.1.0.tgz#e32fc030a2ccee44a6b5371308da54be0b397d27" + integrity sha512-GNanXlVr2pf02+sPN40XN8HG+ePaNcvM0q5mZBd668Obwb0yD5GiUbZOFgwn8kGMY6I3mdyDJzieUy3PTYyTRA== -opencollective-postinstall@^2.0.0: - version "2.0.3" - resolved "https://registry.yarnpkg.com/opencollective-postinstall/-/opencollective-postinstall-2.0.3.tgz#7a0fff978f6dbfa4d006238fbac98ed4198c3259" - integrity sha512-8AV/sCtuzUeTo8gQK5qDZzARrulB3egtLzFgteqB2tcT4Mw7B8Kt7JcDHmltjz6FOAHsvTevk70gZEbhM4ZS9Q== +fs.realpath@^1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/fs.realpath/-/fs.realpath-1.0.0.tgz#1504ad2523158caa40db4a2787cb01411994ea4f" + integrity sha1-FQStJSMVjKpA20onh8sBQRmU6k8= -optimism@^0.14.0: - version "0.14.1" - resolved "https://registry.yarnpkg.com/optimism/-/optimism-0.14.1.tgz#db35a0c770e16863f6c288f7cf58341a2348db44" - integrity sha512-7+1lSN+LJEtaj3uBLLFk8uFCFKy3txLvcvln5Dh1szXjF9yghEMeWclmnk0qdtYZ+lcMNyu48RmQQRw+LRYKSQ== - dependencies: - "@wry/context" "^0.5.2" - "@wry/trie" "^0.2.1" +fsevents@~2.1.1: + version "2.1.3" + resolved "https://registry.yarnpkg.com/fsevents/-/fsevents-2.1.3.tgz#fb738703ae8d2f9fe900c33836ddebee8b97f23e" + integrity sha512-Auw9a4AxqWpa9GUfj370BMPzzyncfBABW8Mab7BGWBYDj4Isgq+cDKtx0i6u9jcX9pQDnswsaaOTgTmA5pEjuQ== -optimist@^0.6.1: - version "0.6.1" - resolved "https://registry.yarnpkg.com/optimist/-/optimist-0.6.1.tgz#da3ea74686fa21a19a111c326e90eb15a0196686" - integrity sha1-2j6nRob6IaGaERwybpDrFaAZZoY= - dependencies: - minimist "~0.0.1" - wordwrap "~0.0.2" +fsevents@~2.3.1, fsevents@~2.3.2: + version "2.3.2" + resolved "https://registry.yarnpkg.com/fsevents/-/fsevents-2.3.2.tgz#8a526f78b8fdf4623b709e0b975c52c24c02fd1a" + integrity sha512-xiqMQR4xAeHTuB9uWm+fFRcIOgKBMiOBP+eXiyT7jsgVCq1bkVygt00oASowB7EdtpOHaaPgKt812P9ab+DDKA== -optionator@^0.8.1: - version "0.8.3" - resolved "https://registry.yarnpkg.com/optionator/-/optionator-0.8.3.tgz#84fa1d036fe9d3c7e21d99884b601167ec8fb495" - integrity sha512-+IW9pACdk3XWmmTXG8m3upGUJst5XRGzxMRjXzAuJ1XnIFNvfhjjIuYkDvysnPQ7qzqVzLt78BCruntqRhWQbA== - dependencies: - deep-is "~0.1.3" - fast-levenshtein "~2.0.6" - levn "~0.3.0" - prelude-ls "~1.1.2" - type-check "~0.3.2" - word-wrap "~1.2.3" +function-bind@^1.1.1: + version "1.1.1" + resolved "https://registry.yarnpkg.com/function-bind/-/function-bind-1.1.1.tgz#a56899d3ea3c9bab874bb9773b7c5ede92f4895d" + integrity sha512-yIovAzMX49sF8Yl58fSCWJ5svSLuaibPxXQJFLmBObTuCr0Mf1KiPopGM9NiFjiYBCbfaa2Fh6breQ6ANVTI0A== -ora@^3.4.0: - version "3.4.0" - resolved "https://registry.yarnpkg.com/ora/-/ora-3.4.0.tgz#bf0752491059a3ef3ed4c85097531de9fdbcd318" - integrity sha512-eNwHudNbO1folBP3JsZ19v9azXWtQZjICdr3Q0TDPIaeBQ3mXLrh54wM+er0+hSp+dWKf+Z8KM58CYzEyIYxYg== - dependencies: - chalk "^2.4.2" - cli-cursor "^2.1.0" - cli-spinners "^2.0.0" - log-symbols "^2.2.0" - strip-ansi "^5.2.0" - wcwidth "^1.0.1" +functional-red-black-tree@^1.0.1, functional-red-black-tree@~1.0.1: + version "1.0.1" + resolved "https://registry.yarnpkg.com/functional-red-black-tree/-/functional-red-black-tree-1.0.1.tgz#1b0ab3bd553b2a0d6399d29c0e3ea0b252078327" + integrity sha1-GwqzvVU7Kg1jmdKcDj6gslIHgyc= -ordered-read-streams@^0.3.0: - version "0.3.0" - resolved "https://registry.yarnpkg.com/ordered-read-streams/-/ordered-read-streams-0.3.0.tgz#7137e69b3298bb342247a1bbee3881c80e2fd78b" - integrity sha1-cTfmmzKYuzQiR6G77jiByA4v14s= +ganache-cli@^6.11.0: + version "6.12.2" + resolved "https://registry.yarnpkg.com/ganache-cli/-/ganache-cli-6.12.2.tgz#c0920f7db0d4ac062ffe2375cb004089806f627a" + integrity sha512-bnmwnJDBDsOWBUP8E/BExWf85TsdDEFelQSzihSJm9VChVO1SHp94YXLP5BlA4j/OTxp0wR4R1Tje9OHOuAJVw== dependencies: - is-stream "^1.0.1" - readable-stream "^2.0.1" + ethereumjs-util "6.2.1" + source-map-support "0.5.12" + yargs "13.2.4" -original-require@^1.0.1: - version "1.0.1" - resolved "https://registry.yarnpkg.com/original-require/-/original-require-1.0.1.tgz#0f130471584cd33511c5ec38c8d59213f9ac5e20" - integrity sha1-DxMEcVhM0zURxew4yNWSE/msXiA= +get-caller-file@^2.0.1, get-caller-file@^2.0.5: + version "2.0.5" + resolved "https://registry.yarnpkg.com/get-caller-file/-/get-caller-file-2.0.5.tgz#4f94412a82db32f36e3b0b9741f8a97feb031f7e" + integrity sha512-DyFP3BM/3YHTQOCUL/w0OZHR0lpKeGrxotcHWcqNEdnltqFwXVfhEBQ94eIo34AfQpo0rGki4cyIiftY06h2Fg== -original@^1.0.0: - version "1.0.2" - resolved "https://registry.yarnpkg.com/original/-/original-1.0.2.tgz#e442a61cffe1c5fd20a65f3261c26663b303f25f" - integrity sha512-hyBVl6iqqUOJ8FqRe+l/gS8H+kKYjrEndd5Pm1MfBtsEKA038HkkdbAl/72EAXGyonD/PFsvmVG+EvcIpliMBg== +get-func-name@^2.0.0: + version "2.0.0" + resolved "https://registry.yarnpkg.com/get-func-name/-/get-func-name-2.0.0.tgz#ead774abee72e20409433a066366023dd6887a41" + integrity sha1-6td0q+5y4gQJQzoGY2YCPdaIekE= + +get-intrinsic@^1.0.2, get-intrinsic@^1.1.1: + version "1.1.1" + resolved "https://registry.yarnpkg.com/get-intrinsic/-/get-intrinsic-1.1.1.tgz#15f59f376f855c446963948f0d24cd3637b4abc6" + integrity sha512-kWZrnVM42QCiEA2Ig1bG8zjoIMOgxWwYCEeNdwY6Tv/cOSeGpcoX4pXHfKUxNKVoArnrEr2e9srnAxxGIraS9Q== dependencies: - url-parse "^1.4.3" + function-bind "^1.1.1" + has "^1.0.3" + has-symbols "^1.0.1" -os-browserify@^0.3.0: - version "0.3.0" - resolved "https://registry.yarnpkg.com/os-browserify/-/os-browserify-0.3.0.tgz#854373c7f5c2315914fc9bfc6bd8238fdda1ec27" - integrity sha1-hUNzx/XCMVkU/Jv8a9gjj92h7Cc= +get-port@^3.1.0: + version "3.2.0" + resolved "https://registry.yarnpkg.com/get-port/-/get-port-3.2.0.tgz#dd7ce7de187c06c8bf353796ac71e099f0980ebc" + integrity sha1-3Xzn3hh8Bsi/NTeWrHHgmfCYDrw= -os-homedir@^1.0.0: - version "1.0.2" - resolved "https://registry.yarnpkg.com/os-homedir/-/os-homedir-1.0.2.tgz#ffbc4988336e0e833de0c168c7ef152121aa7fb3" - integrity sha1-/7xJiDNuDoM94MFox+8VISGqf7M= +get-stream@^3.0.0: + version "3.0.0" + resolved "https://registry.yarnpkg.com/get-stream/-/get-stream-3.0.0.tgz#8e943d1358dc37555054ecbe2edb05aa174ede14" + integrity sha1-jpQ9E1jcN1VQVOy+LtsFqhdO3hQ= -os-locale@^1.4.0: - version "1.4.0" - resolved "https://registry.yarnpkg.com/os-locale/-/os-locale-1.4.0.tgz#20f9f17ae29ed345e8bde583b13d2009803c14d9" - integrity sha1-IPnxeuKe00XoveWDsT0gCYA8FNk= +get-stream@^4.0.0, get-stream@^4.1.0: + version "4.1.0" + resolved "https://registry.yarnpkg.com/get-stream/-/get-stream-4.1.0.tgz#c1b255575f3dc21d59bfc79cd3d2b46b1c3a54b5" + integrity sha512-GMat4EJ5161kIy2HevLlr4luNjBgvmj413KaQA7jt4V8B4RDsfpHk7WQ9GVqfYyyx8OS/L66Kox+rJRNklLK7w== dependencies: - lcid "^1.0.0" + pump "^3.0.0" -os-locale@^2.0.0: - version "2.1.0" - resolved "https://registry.yarnpkg.com/os-locale/-/os-locale-2.1.0.tgz#42bc2900a6b5b8bd17376c8e882b65afccf24bf2" - integrity sha512-3sslG3zJbEYcaC4YVAvDorjGxc7tv6KVATnLPZONiljsUncvihe9BQoVCEs0RZ1kmf4Hk9OBqlZfJZWI4GanKA== +get-stream@^5.1.0: + version "5.2.0" + resolved "https://registry.yarnpkg.com/get-stream/-/get-stream-5.2.0.tgz#4966a1795ee5ace65e706c4b7beb71257d6e22d3" + integrity sha512-nBF+F1rAZVCu/p7rjzgA+Yb4lfYXrpl7a6VmJrU8wF9I1CKvP/QwPNZHnOlwbTkY6dvtFIzFMSyQXbLoTQPRpA== dependencies: - execa "^0.7.0" - lcid "^1.0.0" - mem "^1.1.0" + pump "^3.0.0" -os-locale@^3.1.0: - version "3.1.0" - resolved "https://registry.yarnpkg.com/os-locale/-/os-locale-3.1.0.tgz#a802a6ee17f24c10483ab9935719cef4ed16bf1a" - integrity sha512-Z8l3R4wYWM40/52Z+S265okfFj8Kt2cC2MKY+xNi3kFs+XGI7WXu/I309QQQYbRW4ijiZ+yxs9pqEhJh0DqW3Q== +getpass@^0.1.1: + version "0.1.7" + resolved "https://registry.yarnpkg.com/getpass/-/getpass-0.1.7.tgz#5eff8e3e684d569ae4cb2b1282604e8ba62149fa" + integrity sha1-Xv+OPmhNVprkyysSgmBOi6YhSfo= dependencies: - execa "^1.0.0" - lcid "^2.0.0" - mem "^4.0.0" - -os-tmpdir@^1.0.0, os-tmpdir@~1.0.2: - version "1.0.2" - resolved "https://registry.yarnpkg.com/os-tmpdir/-/os-tmpdir-1.0.2.tgz#bbe67406c79aa85c5cfec766fe5734555dfa1274" - integrity sha1-u+Z0BseaqFxc/sdm/lc0VV36EnQ= + assert-plus "^1.0.0" -osenv@^0.1.4: - version "0.1.5" - resolved "https://registry.yarnpkg.com/osenv/-/osenv-0.1.5.tgz#85cdfafaeb28e8677f416e287592b5f3f49ea410" - integrity sha512-0CWcCECdMVc2Rw3U5w9ZjqX6ga6ubk1xDVKxtBQPK7wis/0F2r9T6k4ydGYhecl7YUBxBVxhL5oisPsNxAPe2g== +ghost-testrpc@^0.0.2: + version "0.0.2" + resolved "https://registry.yarnpkg.com/ghost-testrpc/-/ghost-testrpc-0.0.2.tgz#c4de9557b1d1ae7b2d20bbe474a91378ca90ce92" + integrity sha512-i08dAEgJ2g8z5buJIrCTduwPIhih3DP+hOCTyyryikfV8T0bNvHnGXO67i0DD1H4GBDETTclPy9njZbfluQYrQ== dependencies: - os-homedir "^1.0.0" - os-tmpdir "^1.0.0" - -p-cancelable@^0.3.0: - version "0.3.0" - resolved "https://registry.yarnpkg.com/p-cancelable/-/p-cancelable-0.3.0.tgz#b9e123800bcebb7ac13a479be195b507b98d30fa" - integrity sha512-RVbZPLso8+jFeq1MfNvgXtCRED2raz/dKpacfTNxsx6pLEpEomM7gah6VeHSYV3+vo0OAi4MkArtQcWWXuQoyw== - -p-cancelable@^1.0.0: - version "1.1.0" - resolved "https://registry.yarnpkg.com/p-cancelable/-/p-cancelable-1.1.0.tgz#d078d15a3af409220c886f1d9a0ca2e441ab26cc" - integrity sha512-s73XxOZ4zpt1edZYZzvhqFa6uvQc1vwUa0K0BdtIZgQMAJj9IbebH+JkgKZc9h+B05PKHLOTl4ajG1BmNrVZlw== - -p-defer@^1.0.0: - version "1.0.0" - resolved "https://registry.yarnpkg.com/p-defer/-/p-defer-1.0.0.tgz#9f6eb182f6c9aa8cd743004a7d4f96b196b0fb0c" - integrity sha1-n26xgvbJqozXQwBKfU+WsZaw+ww= + chalk "^2.4.2" + node-emoji "^1.10.0" -p-defer@^3.0.0: - version "3.0.0" - resolved "https://registry.yarnpkg.com/p-defer/-/p-defer-3.0.0.tgz#d1dceb4ee9b2b604b1d94ffec83760175d4e6f83" - integrity sha512-ugZxsxmtTln604yeYd29EGrNhazN2lywetzpKhfmQjW/VJmhpDmWbiX+h0zL8V91R0UXkhb3KtPmyq9PZw3aYw== +glob-parent@^5.1.0, glob-parent@^5.1.2, glob-parent@~5.1.0, glob-parent@~5.1.2: + version "5.1.2" + resolved "https://registry.yarnpkg.com/glob-parent/-/glob-parent-5.1.2.tgz#869832c58034fe68a4093c17dc15e8340d8401c4" + integrity sha512-AOIgSQCepiJYwP3ARnGx+5VnTu2HBYdzbGP45eLw1vr3zB3vZLeyed1sC9hnbcOc9/SrMyM5RPQrkGz4aS9Zow== + dependencies: + is-glob "^4.0.1" -p-fifo@^1.0.0: - version "1.0.0" - resolved "https://registry.yarnpkg.com/p-fifo/-/p-fifo-1.0.0.tgz#e29d5cf17c239ba87f51dde98c1d26a9cfe20a63" - integrity sha512-IjoCxXW48tqdtDFz6fqo5q1UfFVjjVZe8TC1QRflvNUJtNfCUhxOUw6MOVZhDPjqhSzc26xKdugsO17gmzd5+A== +glob@7.1.3: + version "7.1.3" + resolved "https://registry.yarnpkg.com/glob/-/glob-7.1.3.tgz#3960832d3f1574108342dafd3a67b332c0969df1" + integrity sha512-vcfuiIxogLV4DlGBHIUOwI0IbrJ8HWPc4MU7HzviGeNho/UJDfi6B5p3sHeWIQ0KGIU0Jpxi5ZHxemQfLkkAwQ== dependencies: - fast-fifo "^1.0.0" - p-defer "^3.0.0" + fs.realpath "^1.0.0" + inflight "^1.0.4" + inherits "2" + minimatch "^3.0.4" + once "^1.3.0" + path-is-absolute "^1.0.0" -p-finally@^1.0.0: - version "1.0.0" - resolved "https://registry.yarnpkg.com/p-finally/-/p-finally-1.0.0.tgz#3fbcfb15b899a44123b34b6dcc18b724336a2cae" - integrity sha1-P7z7FbiZpEEjs0ttzBi3JDNqLK4= +glob@7.1.7, glob@^7.0.0, glob@^7.1.2, glob@^7.1.3, glob@^7.1.6: + version "7.1.7" + resolved "https://registry.yarnpkg.com/glob/-/glob-7.1.7.tgz#3b193e9233f01d42d0b3f78294bbeeb418f94a90" + integrity sha512-OvD9ENzPLbegENnYP5UUfJIirTg4+XwMWGaQfQTY0JenxNvvIKP3U3/tAQSPIu/lHxXYSZmpXlUHeqAIdKzBLQ== + dependencies: + fs.realpath "^1.0.0" + inflight "^1.0.4" + inherits "2" + minimatch "^3.0.4" + once "^1.3.0" + path-is-absolute "^1.0.0" -p-is-promise@^2.0.0: - version "2.1.0" - resolved "https://registry.yarnpkg.com/p-is-promise/-/p-is-promise-2.1.0.tgz#918cebaea248a62cf7ffab8e3bca8c5f882fc42e" - integrity sha512-Y3W0wlRPK8ZMRbNq97l4M5otioeA5lm1z7bkNkxCka8HSPjR0xRWmpCmc9utiaLP9Jb1eD8BgeIxTW4AIF45Pg== +glob@^5.0.15: + version "5.0.15" + resolved "https://registry.yarnpkg.com/glob/-/glob-5.0.15.tgz#1bc936b9e02f4a603fcc222ecf7633d30b8b93b1" + integrity sha1-G8k2ueAvSmA/zCIuz3Yz0wuLk7E= + dependencies: + inflight "^1.0.4" + inherits "2" + minimatch "2 || 3" + once "^1.3.0" + path-is-absolute "^1.0.0" -p-limit@3.1.0, p-limit@^3.0.2: - version "3.1.0" - resolved "https://registry.yarnpkg.com/p-limit/-/p-limit-3.1.0.tgz#e1daccbe78d0d1388ca18c64fea38e3e57e3706b" - integrity sha512-TYOanM3wGwNGsZN2cVTYPArw454xnXj5qmWF1bEoAc4+cU/ol7GVh7odevjp1FNHduHc3KZMcFduxU5Xc6uJRQ== +global-modules@^2.0.0: + version "2.0.0" + resolved "https://registry.yarnpkg.com/global-modules/-/global-modules-2.0.0.tgz#997605ad2345f27f51539bea26574421215c7780" + integrity sha512-NGbfmJBp9x8IxyJSd1P+otYK8vonoJactOogrVfFRIAEY1ukil8RSKDz2Yo7wh1oihl51l/r6W4epkeKJHqL8A== dependencies: - yocto-queue "^0.1.0" + global-prefix "^3.0.0" -p-limit@^1.1.0: - version "1.3.0" - resolved "https://registry.yarnpkg.com/p-limit/-/p-limit-1.3.0.tgz#b86bd5f0c25690911c7590fcbfc2010d54b3ccb8" - integrity sha512-vvcXsLAJ9Dr5rQOPk7toZQZJApBl2K4J6dANSsEuh6QI41JYcsS/qhTGa9ErIUUgK3WNQoJYvylxvjqmiqEA9Q== +global-prefix@^3.0.0: + version "3.0.0" + resolved "https://registry.yarnpkg.com/global-prefix/-/global-prefix-3.0.0.tgz#fc85f73064df69f50421f47f883fe5b913ba9b97" + integrity sha512-awConJSVCHVGND6x3tmMaKcQvwXLhjdkmomy2W+Goaui8YPgYgXJZewhg3fWC+DlfqqQuWg8AwqjGTD2nAPVWg== dependencies: - p-try "^1.0.0" + ini "^1.3.5" + kind-of "^6.0.2" + which "^1.3.1" -p-limit@^2.0.0: - version "2.2.2" - resolved "https://registry.yarnpkg.com/p-limit/-/p-limit-2.2.2.tgz#61279b67721f5287aa1c13a9a7fbbc48c9291b1e" - integrity sha512-WGR+xHecKTr7EbUEhyLSh5Dube9JtdiG78ufaeLxTgpudf/20KqyMioIUZJAezlTIi6evxuoUs9YXc11cU+yzQ== +global@~4.4.0: + version "4.4.0" + resolved "https://registry.yarnpkg.com/global/-/global-4.4.0.tgz#3e7b105179006a323ed71aafca3e9c57a5cc6406" + integrity sha512-wv/LAoHdRE3BeTGz53FAamhGlPLhlssK45usmGFThIi4XqnBmjKQ16u+RNbP7WvigRZDxUsM0J3gcQ5yicaL0w== dependencies: - p-try "^2.0.0" + min-document "^2.19.0" + process "^0.11.10" -p-limit@^2.2.0: - version "2.3.0" - resolved "https://registry.yarnpkg.com/p-limit/-/p-limit-2.3.0.tgz#3dd33c647a214fdfffd835933eb086da0dc21db1" - integrity sha512-//88mFWSJx8lxCzwdAABTJL2MyWB12+eIY7MDL2SqLmAkeKU9qxRvWuSyTjm3FUmpBEMuFfckAIqEaVGUDxb6w== +globals@^11.7.0: + version "11.12.0" + resolved "https://registry.yarnpkg.com/globals/-/globals-11.12.0.tgz#ab8795338868a0babd8525758018c2a7eb95c42e" + integrity sha512-WOBp/EEGUiIsJSp7wcv/y6MO+lV9UoncWqxuFfm8eBwzWNgyfBd6Gz+IeKQ9jCmyhoH99g15M3T+QaVHFjizVA== + +globals@^13.6.0: + version "13.8.0" + resolved "https://registry.yarnpkg.com/globals/-/globals-13.8.0.tgz#3e20f504810ce87a8d72e55aecf8435b50f4c1b3" + integrity sha512-rHtdA6+PDBIjeEvA91rpqzEvk/k3/i7EeNQiryiWuJH0Hw9cpyJMAt2jtbAwUaRdhD+573X4vWw6IcjKPasi9Q== dependencies: - p-try "^2.0.0" + type-fest "^0.20.2" -p-locate@^2.0.0: - version "2.0.0" - resolved "https://registry.yarnpkg.com/p-locate/-/p-locate-2.0.0.tgz#20a0103b222a70c8fd39cc2e580680f3dde5ec43" - integrity sha1-IKAQOyIqcMj9OcwuWAaA893l7EM= +globals@^13.9.0: + version "13.9.0" + resolved "https://registry.yarnpkg.com/globals/-/globals-13.9.0.tgz#4bf2bf635b334a173fb1daf7c5e6b218ecdc06cb" + integrity sha512-74/FduwI/JaIrr1H8e71UbDE+5x7pIPs1C2rrwC52SszOo043CsWOZEMW7o2Y58xwm9b+0RBKDxY5n2sUpEFxA== dependencies: - p-limit "^1.1.0" + type-fest "^0.20.2" -p-locate@^3.0.0: - version "3.0.0" - resolved "https://registry.yarnpkg.com/p-locate/-/p-locate-3.0.0.tgz#322d69a05c0264b25997d9f40cd8a891ab0064a4" - integrity sha512-x+12w/To+4GFfgJhBEpiDcLozRJGegY+Ei7/z0tSLkMmxGZNybVMSfWj9aJn8Z5Fc7dBUNJOOVgPv2H7IwulSQ== +globby@^10.0.1: + version "10.0.2" + resolved "https://registry.yarnpkg.com/globby/-/globby-10.0.2.tgz#277593e745acaa4646c3ab411289ec47a0392543" + integrity sha512-7dUi7RvCoT/xast/o/dLN53oqND4yk0nsHkhRgn9w65C4PofCLOoJ39iSOg+qVDdWQPIEj+eszMHQ+aLVwwQSg== dependencies: - p-limit "^2.0.0" + "@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" -p-locate@^4.1.0: - version "4.1.0" - resolved "https://registry.yarnpkg.com/p-locate/-/p-locate-4.1.0.tgz#a3428bb7088b3a60292f66919278b7c297ad4f07" - integrity sha512-R79ZZ/0wAxKGu3oYMlz8jy/kbhsNrS7SKZ7PxEHBgJ5+F2mtFW2fK2cOtBh1cHYkQsbzFV7I+EoRKe6Yt0oK7A== +globby@^11.0.3: + version "11.0.3" + resolved "https://registry.yarnpkg.com/globby/-/globby-11.0.3.tgz#9b1f0cb523e171dd1ad8c7b2a9fb4b644b9593cb" + integrity sha512-ffdmosjA807y7+lA1NM0jELARVmYul/715xiILEjo3hBLPTcirgQNnXECn5g3mtR8TOLCVbkfua1Hpen25/Xcg== dependencies: - p-limit "^2.2.0" + array-union "^2.1.0" + dir-glob "^3.0.1" + fast-glob "^3.1.1" + ignore "^5.1.4" + merge2 "^1.3.0" + slash "^3.0.0" -p-locate@^5.0.0: - version "5.0.0" - resolved "https://registry.yarnpkg.com/p-locate/-/p-locate-5.0.0.tgz#83c8315c6785005e3bd021839411c9e110e6d834" - integrity sha512-LaNjtRWUBY++zB5nE/NwcaoMylSPk+S+ZHNB1TzdbMJMny6dynpAGt7X/tl/QYq3TIeE6nxHppbo2LGymrG5Pw== +got@9.6.0: + version "9.6.0" + resolved "https://registry.yarnpkg.com/got/-/got-9.6.0.tgz#edf45e7d67f99545705de1f7bbeeeb121765ed85" + integrity sha512-R7eWptXuGYxwijs0eV+v3o6+XH1IqVK8dJOEecQfTmkncw9AV4dcw/Dhxi8MdlqPthxxpZyizMzyg8RTmEsG+Q== dependencies: - p-limit "^3.0.2" + "@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" -p-timeout@^1.1.1: - version "1.2.1" - resolved "https://registry.yarnpkg.com/p-timeout/-/p-timeout-1.2.1.tgz#5eb3b353b7fce99f101a1038880bb054ebbea386" - integrity sha1-XrOzU7f86Z8QGhA4iAuwVOu+o4Y= +got@^7.1.0: + version "7.1.0" + resolved "https://registry.yarnpkg.com/got/-/got-7.1.0.tgz#05450fd84094e6bbea56f451a43a9c289166385a" + integrity sha512-Y5WMo7xKKq1muPsxD+KmrR8DH5auG7fBdDVueZwETwV6VytKyU9OX/ddpq2/1hp1vIPvVb4T81dKQz3BivkNLw== dependencies: - p-finally "^1.0.0" + 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" -p-try@^1.0.0: - version "1.0.0" - resolved "https://registry.yarnpkg.com/p-try/-/p-try-1.0.0.tgz#cbc79cdbaf8fd4228e13f621f2b1a237c1b207b3" - integrity sha1-y8ec26+P1CKOE/Yh8rGiN8GyB7M= +graceful-fs@^4.1.11: + version "4.2.8" + resolved "https://registry.yarnpkg.com/graceful-fs/-/graceful-fs-4.2.8.tgz#e412b8d33f5e006593cbd3cee6df9f2cebbe802a" + integrity sha512-qkIilPUYcNhJpd33n0GBXTB1MMPp14TxEsEs0pTrsSVucApsYzW5V+Q8Qxhik6KU3evy+qkAAowTByymK0avdg== -p-try@^2.0.0: - version "2.2.0" - resolved "https://registry.yarnpkg.com/p-try/-/p-try-2.2.0.tgz#cb2868540e313d61de58fafbe35ce9004d5540e6" - integrity sha512-R4nPAVTAU0B9D35/Gk3uJf/7XYbQcyohSKdvAxIRSNghFl4e71hVoGnBNQz9cWaXxO2I10KTC+3jMdvvoKw6dQ== +graceful-fs@^4.1.2, graceful-fs@^4.1.6, graceful-fs@^4.1.9, graceful-fs@^4.2.0: + version "4.2.6" + resolved "https://registry.yarnpkg.com/graceful-fs/-/graceful-fs-4.2.6.tgz#ff040b2b0853b23c3d31027523706f1885d76bee" + integrity sha512-nTnJ528pbqxYanhpDYsi4Rd8MAeaBA67+RZ10CM1m3bTAVFEDcd5AuA4a6W5YkGZ1iNXHzZz8T6TBKLeBuNriQ== -pako@~1.0.5: - version "1.0.11" - resolved "https://registry.yarnpkg.com/pako/-/pako-1.0.11.tgz#6c9599d340d54dfd3946380252a35705a6b992bf" - integrity sha512-4hLB8Py4zZce5s4yd9XzopqwVv/yGNhV1Bl8NTmCq1763HeK2+EwVTv+leGeL13Dnh2wfbqowVPXCIO0z4taYw== +growl@1.10.5: + version "1.10.5" + resolved "https://registry.yarnpkg.com/growl/-/growl-1.10.5.tgz#f2735dc2283674fa67478b10181059355c369e5e" + integrity sha512-qBr4OuELkhPenW6goKVXiv47US3clb3/IbuWF9KNKEijAy9oeHxU9IgzjvJhHkUzhaj7rOUD7+YGWqUjLp5oSA== -param-case@^2.1.0: - version "2.1.1" - resolved "https://registry.yarnpkg.com/param-case/-/param-case-2.1.1.tgz#df94fd8cf6531ecf75e6bef9a0858fbc72be2247" - integrity sha1-35T9jPZTHs915r75oIWPvHK+Ikc= +handlebars@^4.0.1: + version "4.7.7" + resolved "https://registry.yarnpkg.com/handlebars/-/handlebars-4.7.7.tgz#9ce33416aad02dbd6c8fafa8240d5d98004945a1" + integrity sha512-aAcXm5OAfE/8IXkcZvCepKU3VzW1/39Fb5ZuqMtgI/hT8X2YgoMvBY5dLhq/cpOvw7Lk1nK/UF71aLG/ZnVYRA== dependencies: - no-case "^2.2.0" + minimist "^1.2.5" + neo-async "^2.6.0" + source-map "^0.6.1" + wordwrap "^1.0.0" + optionalDependencies: + uglify-js "^3.1.4" -paramap-it@^0.1.1: - version "0.1.1" - resolved "https://registry.yarnpkg.com/paramap-it/-/paramap-it-0.1.1.tgz#dad5963c003315c0993b84402a9c08f8c36e80d9" - integrity sha512-3uZmCAN3xCw7Am/4ikGzjjR59aNMJVXGSU7CjG2Z6DfOAdhnLdCOd0S0m1sTkN4ov9QhlE3/jkzyu953hq0uwQ== - dependencies: - event-iterator "^1.0.0" +har-schema@^2.0.0: + version "2.0.0" + resolved "https://registry.yarnpkg.com/har-schema/-/har-schema-2.0.0.tgz#a94c2224ebcac04782a0d9035521f24735b7ec92" + integrity sha1-qUwiJOvKwEeCoNkDVSHyRzW37JI= -parse-asn1@^5.0.0: +har-validator@~5.1.3: version "5.1.5" - resolved "https://registry.yarnpkg.com/parse-asn1/-/parse-asn1-5.1.5.tgz#003271343da58dc94cace494faef3d2147ecea0e" - integrity sha512-jkMYn1dcJqF6d5CpU689bq7w/b5ALS9ROVSpQDPrZsqqesUJii9qutvoT5ltGedNXMO2e16YUWIghG9KxaViTQ== + resolved "https://registry.yarnpkg.com/har-validator/-/har-validator-5.1.5.tgz#1f0803b9f8cb20c0fa13822df1ecddb36bde1efd" + integrity sha512-nmT2T0lljbxdQZfspsno9hgrG3Uir6Ks5afism62poxqBM6sDnMEuPmzTq8XN0OEwqKLLdh1jQI3qyE66Nzb3w== dependencies: - asn1.js "^4.0.0" - browserify-aes "^1.0.0" - create-hash "^1.1.0" - evp_bytestokey "^1.0.0" - pbkdf2 "^3.0.3" - safe-buffer "^5.1.1" - -parse-cache-control@^1.0.1: - version "1.0.1" - resolved "https://registry.yarnpkg.com/parse-cache-control/-/parse-cache-control-1.0.1.tgz#8eeab3e54fa56920fe16ba38f77fa21aacc2d74e" - integrity sha1-juqz5U+laSD+Fro493+iGqzC104= - -parse-duration@^0.4.4: - version "0.4.4" - resolved "https://registry.yarnpkg.com/parse-duration/-/parse-duration-0.4.4.tgz#11c0f51a689e97d06c57bd772f7fda7dc013243c" - integrity sha512-KbAJuYGUhZkB9gotDiKLnZ7Z3VTacK3fgwmDdB6ZVDtJbMBT6MfLga0WJaYpPDu0mzqT0NgHtHDt5PY4l0nidg== + ajv "^6.12.3" + har-schema "^2.0.0" -parse-glob@^3.0.4: - version "3.0.4" - resolved "https://registry.yarnpkg.com/parse-glob/-/parse-glob-3.0.4.tgz#b2c376cfb11f35513badd173ef0bb6e3a388391c" - integrity sha1-ssN2z7EfNVE7rdFz7wu246OIORw= +hardhat-deploy@^0.8.11: + version "0.8.11" + resolved "https://registry.yarnpkg.com/hardhat-deploy/-/hardhat-deploy-0.8.11.tgz#faa20def76f031101db81c5b71d7388e0475b794" + integrity sha512-PJIYckR9lYvGMHxaIb8esvZw9k+gW2xPCUYf4XJTQ3f1fLTXhA86AOhPQsfyBr+MY11/D+UUerIP88tl+PW2+g== + dependencies: + "@ethersproject/abi" "^5.3.1" + "@ethersproject/abstract-signer" "^5.3.0" + "@ethersproject/address" "^5.3.0" + "@ethersproject/bignumber" "^5.3.0" + "@ethersproject/bytes" "^5.3.0" + "@ethersproject/contracts" "^5.3.0" + "@ethersproject/providers" "^5.3.1" + "@ethersproject/solidity" "^5.3.0" + "@ethersproject/transactions" "^5.3.0" + "@ethersproject/wallet" "^5.3.0" + "@types/qs" "^6.9.4" + axios "^0.21.1" + chalk "^4.1.1" + chokidar "^3.4.0" + debug "^4.1.1" + enquirer "^2.3.6" + form-data "^4.0.0" + fs-extra "^10.0.0" + match-all "^1.2.6" + murmur-128 "^0.2.1" + qs "^6.9.4" + +hardhat-gas-reporter@^1.0.4: + version "1.0.4" + resolved "https://registry.yarnpkg.com/hardhat-gas-reporter/-/hardhat-gas-reporter-1.0.4.tgz#59e3137e38e0dfeac2e4f90d5c74160b50ad4829" + integrity sha512-G376zKh81G3K9WtDA+SoTLWsoygikH++tD1E7llx+X7J+GbIqfwhDKKgvJjcnEesMrtR9UqQHK02lJuXY1RTxw== dependencies: - glob-base "^0.3.0" - is-dotfile "^1.0.0" - is-extglob "^1.0.0" - is-glob "^2.0.0" - -parse-headers@^2.0.0: - version "2.0.3" - resolved "https://registry.yarnpkg.com/parse-headers/-/parse-headers-2.0.3.tgz#5e8e7512383d140ba02f0c7aa9f49b4399c92515" - integrity sha512-QhhZ+DCCit2Coi2vmAKbq5RGTRcQUOE2+REgv8vdyu7MnYx2eZztegqtTx99TZ86GTIwqiy3+4nQTWZ2tgmdCA== + eth-gas-reporter "^0.2.20" + sha1 "^1.1.1" -parse-json@^2.2.0: - version "2.2.0" - resolved "https://registry.yarnpkg.com/parse-json/-/parse-json-2.2.0.tgz#f480f40434ef80741f8469099f8dea18f55a4dc9" - integrity sha1-9ID0BDTvgHQfhGkJn43qGPVaTck= +hardhat@^2.6.1: + version "2.6.1" + resolved "https://registry.yarnpkg.com/hardhat/-/hardhat-2.6.1.tgz#4553ca555c1ba8ed7c3c5a5a93e6082a2869b3ae" + integrity sha512-0LozdYbPsiTc6ZXsfDQUTV3L0p4CMO5TRbd5qmeWiCYGmhd+7Mvdg4N+nA8w0g3gZ2OKFUmHIYlAbExI488ceQ== dependencies: - error-ex "^1.2.0" + "@ethereumjs/block" "^3.4.0" + "@ethereumjs/blockchain" "^5.4.0" + "@ethereumjs/common" "^2.4.0" + "@ethereumjs/tx" "^3.3.0" + "@ethereumjs/vm" "^5.5.2" + "@ethersproject/abi" "^5.1.2" + "@sentry/node" "^5.18.1" + "@solidity-parser/parser" "^0.11.0" + "@types/bn.js" "^5.1.0" + "@types/lru-cache" "^5.1.0" + abort-controller "^3.0.0" + adm-zip "^0.4.16" + 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" + eth-sig-util "^2.5.2" + ethereum-cryptography "^0.1.2" + ethereumjs-abi "^0.6.8" + ethereumjs-util "^7.1.0" + find-up "^2.1.0" + fp-ts "1.19.3" + fs-extra "^7.0.1" + glob "^7.1.3" + https-proxy-agent "^5.0.0" + immutable "^4.0.0-rc.12" + io-ts "1.10.4" + lodash "^4.17.11" + merkle-patricia-tree "^4.2.0" + mnemonist "^0.38.0" + mocha "^7.1.2" + node-fetch "^2.6.0" + qs "^6.7.0" + raw-body "^2.4.1" + resolve "1.17.0" + semver "^6.3.0" + slash "^3.0.0" + solc "0.7.3" + source-map-support "^0.5.13" + stacktrace-parser "^0.1.10" + "true-case-path" "^2.2.1" + tsort "0.0.1" + uuid "^3.3.2" + ws "^7.4.6" -parse-passwd@^1.0.0: - version "1.0.0" - resolved "https://registry.yarnpkg.com/parse-passwd/-/parse-passwd-1.0.0.tgz#6d5b934a456993b23d37f40a382d6f1666a8e5c6" - integrity sha1-bVuTSkVpk7I9N/QKOC1vFmao5cY= +has-bigints@^1.0.1: + version "1.0.1" + resolved "https://registry.yarnpkg.com/has-bigints/-/has-bigints-1.0.1.tgz#64fe6acb020673e3b78db035a5af69aa9d07b113" + integrity sha512-LSBS2LjbNBTf6287JEbEzvJgftkF5qFkmCo9hDRpAzKhUOlJ+hx8dd4USs00SgsUNwc4617J9ki5YtEClM2ffA== -parse5-htmlparser2-tree-adapter@^6.0.1: - version "6.0.1" - resolved "https://registry.yarnpkg.com/parse5-htmlparser2-tree-adapter/-/parse5-htmlparser2-tree-adapter-6.0.1.tgz#2cdf9ad823321140370d4dbf5d3e92c7c8ddc6e6" - integrity sha512-qPuWvbLgvDGilKc5BoicRovlT4MtYT6JfJyBOMDsKoiT+GiuP5qyrPCnR9HcPECIJJmZh5jRndyNThnhhb/vlA== - dependencies: - parse5 "^6.0.1" +has-flag@^1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/has-flag/-/has-flag-1.0.0.tgz#9d9e793165ce017a00f00418c43f942a7b1d11fa" + integrity sha1-nZ55MWXOAXoA8AQYxD+UKnsdEfo= -parse5@^1.5.1: - version "1.5.1" - resolved "https://registry.yarnpkg.com/parse5/-/parse5-1.5.1.tgz#9b7f3b0de32be78dc2401b17573ccaf0f6f59d94" - integrity sha1-m387DeMr543CQBsXVzzK8Pb1nZQ= +has-flag@^3.0.0: + version "3.0.0" + resolved "https://registry.yarnpkg.com/has-flag/-/has-flag-3.0.0.tgz#b5d454dc2199ae225699f3467e5a07f3b955bafd" + integrity sha1-tdRU3CGZriJWmfNGfloH87lVuv0= -parse5@^3.0.1: - version "3.0.3" - resolved "https://registry.yarnpkg.com/parse5/-/parse5-3.0.3.tgz#042f792ffdd36851551cf4e9e066b3874ab45b5c" - integrity sha512-rgO9Zg5LLLkfJF9E6CCmXlSE4UVceloys8JrFqCcHloC3usd/kJCyPDwH2SOlzix2j3xaP9sUX3e8+kvkuleAA== - dependencies: - "@types/node" "*" +has-flag@^4.0.0: + version "4.0.0" + resolved "https://registry.yarnpkg.com/has-flag/-/has-flag-4.0.0.tgz#944771fd9c81c81265c4d6941860da06bb59479b" + integrity sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ== -parse5@^6.0.1: - version "6.0.1" - resolved "https://registry.yarnpkg.com/parse5/-/parse5-6.0.1.tgz#e1a1c085c569b3dc08321184f19a39cc27f7c30b" - integrity sha512-Ofn/CTFzRGTTxwpNEs9PP93gXShHcTq255nzRYSKe8AkVpZY7e1fpmTfOyoIvjP5HG7Z2ZM7VS9PPhQGW2pOpw== +has-symbol-support-x@^1.4.1: + version "1.4.2" + resolved "https://registry.yarnpkg.com/has-symbol-support-x/-/has-symbol-support-x-1.4.2.tgz#1409f98bc00247da45da67cee0a36f282ff26455" + integrity sha512-3ToOva++HaW+eCpgqZrCfN51IPB+7bJNVT6CUATzueB5Heb8o6Nam0V3HG5dlDvZU1Gn5QLcbahiKw/XVk5JJw== -parseurl@^1.3.2, parseurl@~1.3.3: - version "1.3.3" - resolved "https://registry.yarnpkg.com/parseurl/-/parseurl-1.3.3.tgz#9da19e7bee8d12dff0513ed5b76957793bc2e8d4" - integrity sha512-CiyeOxFT/JZyN5m0z9PfXw4SCBJ6Sygz1Dpl0wqjlhDEGGBP1GnsUVEL0p63hoG1fcj3fHynXi9NYO4nWOL+qQ== +has-symbols@^1.0.0, has-symbols@^1.0.1, has-symbols@^1.0.2: + version "1.0.2" + resolved "https://registry.yarnpkg.com/has-symbols/-/has-symbols-1.0.2.tgz#165d3070c00309752a1236a479331e3ac56f1423" + integrity sha512-chXa79rL/UC2KlX17jo3vRGz0azaWEx5tGqZg5pO3NUyEJVB17dMruQlzCCOfUvElghKcm5194+BCRvi2Rv/Gw== -pascal-case@^2.0.0, pascal-case@^2.0.1: - version "2.0.1" - resolved "https://registry.yarnpkg.com/pascal-case/-/pascal-case-2.0.1.tgz#2d578d3455f660da65eca18ef95b4e0de912761e" - integrity sha1-LVeNNFX2YNpl7KGO+VtODekSdh4= +has-to-string-tag-x@^1.2.0: + version "1.4.1" + resolved "https://registry.yarnpkg.com/has-to-string-tag-x/-/has-to-string-tag-x-1.4.1.tgz#a045ab383d7b4b2012a00148ab0aa5f290044d4d" + integrity sha512-vdbKfmw+3LoOYVr+mtxHaX5a96+0f3DljYd8JOqvOLsf5mw2Otda2qCDT9qRqLAhrjyQ0h7ual5nOiASpsGNFw== dependencies: - camel-case "^3.0.0" - upper-case-first "^1.1.0" + has-symbol-support-x "^1.4.1" -pascal-case@^3.1.1, pascal-case@^3.1.2: - version "3.1.2" - resolved "https://registry.yarnpkg.com/pascal-case/-/pascal-case-3.1.2.tgz#b48e0ef2b98e205e7c1dae747d0b1508237660eb" - integrity sha512-uWlGT3YSnK9x3BQJaOdcZwrnV6hPpd8jFH1/ucpiLRPh/2zCVJKS19E4GvYHvaCcACn3foXZ0cLB9Wrx1KGe5g== +has@^1.0.3: + version "1.0.3" + resolved "https://registry.yarnpkg.com/has/-/has-1.0.3.tgz#722d7cbfc1f6aa8241f16dd814e011e1f41e8796" + integrity sha512-f2dvO0VU6Oej7RkWJGrehjbzMAjFp5/VKPp5tTpWIV4JHHZK1/BxbFRtf/siA2SWTe09caDmVtYYzWEIbBS4zw== dependencies: - no-case "^3.0.4" - tslib "^2.0.3" - -pascalcase@^0.1.1: - version "0.1.1" - resolved "https://registry.yarnpkg.com/pascalcase/-/pascalcase-0.1.1.tgz#b363e55e8006ca6fe21784d2db22bd15d7917f14" - integrity sha1-s2PlXoAGym/iF4TS2yK9FdeRfxQ= + function-bind "^1.1.1" -patch-package@^6.4.7: - version "6.4.7" - resolved "https://registry.yarnpkg.com/patch-package/-/patch-package-6.4.7.tgz#2282d53c397909a0d9ef92dae3fdeb558382b148" - integrity sha512-S0vh/ZEafZ17hbhgqdnpunKDfzHQibQizx9g8yEf5dcVk3KOflOfdufRXQX8CSEkyOQwuM/bNz1GwKvFj54kaQ== +hash-base@^3.0.0: + version "3.1.0" + resolved "https://registry.yarnpkg.com/hash-base/-/hash-base-3.1.0.tgz#55c381d9e06e1d2997a883b4a3fddfe7f0d3af33" + integrity sha512-1nmYp/rhMDiE7AYkDw+lLwlAzz0AntGIe51F3RfFfEqyQ3feY2eI/NcwC6umIQVOASPMsWJLJScWKSSvzL9IVA== dependencies: - "@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" - -path-browserify@0.0.1: - version "0.0.1" - resolved "https://registry.yarnpkg.com/path-browserify/-/path-browserify-0.0.1.tgz#e6c4ddd7ed3aa27c68a20cc4e50e1a4ee83bbc4a" - integrity sha512-BapA40NHICOS+USX9SN4tyhq+A2RrN/Ws5F0Z5aMHDp98Fl86lX8Oti8B7uN93L4Ifv4fHOEA+pQw87gmMO/lQ== + inherits "^2.0.4" + readable-stream "^3.6.0" + safe-buffer "^5.2.0" -path-case@^2.1.0: - version "2.1.1" - resolved "https://registry.yarnpkg.com/path-case/-/path-case-2.1.1.tgz#94b8037c372d3fe2906e465bb45e25d226e8eea5" - integrity sha1-lLgDfDctP+KQbkZbtF4l0ibo7qU= +hash.js@1.1.3: + version "1.1.3" + resolved "https://registry.yarnpkg.com/hash.js/-/hash.js-1.1.3.tgz#340dedbe6290187151c1ea1d777a3448935df846" + integrity sha512-/UETyP0W22QILqS+6HowevwhEFJ3MBJnwTf75Qob9Wz9t0DPuisL8kW8YZMK62dHAKE1c1p+gY1TtOLY+USEHA== dependencies: - no-case "^2.2.0" - -path-dirname@^1.0.0: - version "1.0.2" - resolved "https://registry.yarnpkg.com/path-dirname/-/path-dirname-1.0.2.tgz#cc33d24d525e099a5388c0336c6e32b9160609e0" - integrity sha1-zDPSTVJeCZpTiMAzbG4yuRYGCeA= + inherits "^2.0.3" + minimalistic-assert "^1.0.0" -path-exists@^2.0.0: - version "2.1.0" - resolved "https://registry.yarnpkg.com/path-exists/-/path-exists-2.1.0.tgz#0feb6c64f0fc518d9a754dd5efb62c7022761f4b" - integrity sha1-D+tsZPD8UY2adU3V77YscCJ2H0s= +hash.js@1.1.7, hash.js@^1.0.0, hash.js@^1.0.3, hash.js@^1.1.7: + version "1.1.7" + resolved "https://registry.yarnpkg.com/hash.js/-/hash.js-1.1.7.tgz#0babca538e8d4ee4a0f8988d68866537a003cf42" + integrity sha512-taOaskGt4z4SOANNseOviYDvjEJinIkRgmp7LbKP2YTTmVxWBl87s/uzK9r+44BclBSp2X7K1hqeNfz9JbBeXA== dependencies: - pinkie-promise "^2.0.0" - -path-exists@^3.0.0: - version "3.0.0" - resolved "https://registry.yarnpkg.com/path-exists/-/path-exists-3.0.0.tgz#ce0ebeaa5f78cb18925ea7d810d7b59b010fd515" - integrity sha1-zg6+ql94yxiSXqfYENe1mwEP1RU= + inherits "^2.0.3" + minimalistic-assert "^1.0.1" -path-exists@^4.0.0: - version "4.0.0" - resolved "https://registry.yarnpkg.com/path-exists/-/path-exists-4.0.0.tgz#513bdbe2d3b95d7762e8c1137efa195c6c61b5b3" - integrity sha512-ak9Qy5Q7jYb2Wwcey5Fpvg2KoAc/ZIhLSLOSBmRmygPsGwkVVt0fZa0qrtMz+m6tJTAHfZQ8FnmB4MG4LWy7/w== +he@1.2.0: + version "1.2.0" + resolved "https://registry.yarnpkg.com/he/-/he-1.2.0.tgz#84ae65fa7eafb165fddb61566ae14baf05664f0f" + integrity sha512-F/1DnUGPopORZi0ni+CvrCgHQ5FyEAHRLSApuYWMmrbSwoN2Mn/7k+Gl38gJnR7yyDZk6WLXwiGod1JOWNDKGw== -path-is-absolute@^1.0.0: +hmac-drbg@^1.0.0, hmac-drbg@^1.0.1: version "1.0.1" - resolved "https://registry.yarnpkg.com/path-is-absolute/-/path-is-absolute-1.0.1.tgz#174b9268735534ffbc7ace6bf53a5a9e1b5c5f5f" - integrity sha1-F0uSaHNVNP+8es5r9TpanhtcX18= - -path-key@^2.0.0, path-key@^2.0.1: - version "2.0.1" - resolved "https://registry.yarnpkg.com/path-key/-/path-key-2.0.1.tgz#411cadb574c5a140d3a4b1910d40d80cc9f40b40" - integrity sha1-QRyttXTFoUDTpLGRDUDYDMn0C0A= + resolved "https://registry.yarnpkg.com/hmac-drbg/-/hmac-drbg-1.0.1.tgz#d2745701025a6c775a6c545793ed502fc0c649a1" + integrity sha1-0nRXAQJabHdabFRXk+1QL8DGSaE= + dependencies: + hash.js "^1.0.3" + minimalistic-assert "^1.0.0" + minimalistic-crypto-utils "^1.0.1" -path-parse@^1.0.6: - version "1.0.6" - resolved "https://registry.yarnpkg.com/path-parse/-/path-parse-1.0.6.tgz#d62dbb5679405d72c4737ec58600e9ddcf06d24c" - integrity sha512-GSmOT2EbHrINBf9SR7CDELwlJ8AENk3Qn7OikK4nFYAu3Ote2+JYNVvkpAEQm3/TLNEJFD/xZJjzyxg3KBWOzw== +http-basic@^8.1.1: + version "8.1.3" + resolved "https://registry.yarnpkg.com/http-basic/-/http-basic-8.1.3.tgz#a7cabee7526869b9b710136970805b1004261bbf" + 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" -path-to-regexp@0.1.7: - version "0.1.7" - resolved "https://registry.yarnpkg.com/path-to-regexp/-/path-to-regexp-0.1.7.tgz#df604178005f522f15eb4490e7247a1bfaa67f8c" - integrity sha1-32BBeABfUi8V60SQ5yR6G/qmf4w= +http-cache-semantics@^4.0.0: + version "4.1.0" + resolved "https://registry.yarnpkg.com/http-cache-semantics/-/http-cache-semantics-4.1.0.tgz#49e91c5cbf36c9b94bcfcd71c23d5249ec74e390" + integrity sha512-carPklcUh7ROWRK7Cv27RPtdhYhUsela/ue5/jKzjegVvXDqM2ILE9Q2BGn9JZJh1g87cp56su/FgQSzcWS8cQ== -path-type@^1.0.0: - version "1.1.0" - resolved "https://registry.yarnpkg.com/path-type/-/path-type-1.1.0.tgz#59c44f7ee491da704da415da5a4070ba4f8fe441" - integrity sha1-WcRPfuSR2nBNpBXaWkBwuk+P5EE= +http-errors@1.7.2: + version "1.7.2" + resolved "https://registry.yarnpkg.com/http-errors/-/http-errors-1.7.2.tgz#4f5029cf13239f31036e5b2e55292bcfbcc85c8f" + integrity sha512-uUQBt3H/cSIVfch6i1EuPNy/YsRSOUBXTVfZ+yR7Zjez3qjBz6i9+i4zjNaoqcoFVI4lQJ5plg63TvGfRSDCRg== dependencies: - graceful-fs "^4.1.2" - pify "^2.0.0" - pinkie-promise "^2.0.0" + depd "~1.1.2" + inherits "2.0.3" + setprototypeof "1.1.1" + statuses ">= 1.5.0 < 2" + toidentifier "1.0.0" -path-type@^2.0.0: - version "2.0.0" - resolved "https://registry.yarnpkg.com/path-type/-/path-type-2.0.0.tgz#f012ccb8415b7096fc2daa1054c3d72389594c73" - integrity sha1-8BLMuEFbcJb8LaoQVMPXI4lZTHM= +http-errors@1.7.3, http-errors@~1.7.2: + version "1.7.3" + resolved "https://registry.yarnpkg.com/http-errors/-/http-errors-1.7.3.tgz#6c619e4f9c60308c38519498c14fbb10aacebb06" + integrity sha512-ZTTX0MWrsQ2ZAhA1cejAwDLycFsd7I7nVtnkT3Ol0aqodaKW+0CTZDQ1uBv5whptCnc8e8HeRRJxRs0kmm/Qfw== dependencies: - pify "^2.0.0" - -path-type@^4.0.0: - version "4.0.0" - resolved "https://registry.yarnpkg.com/path-type/-/path-type-4.0.0.tgz#84ed01c0a7ba380afe09d90a8c180dcd9d03043b" - integrity sha512-gDKb8aZMDeD/tZWs9P6+q0J9Mwkdl6xMV8TjnGP3qJVJ06bdMgkbBlLU8IdfOsIsFz2BW1rNVT3XuNEl8zPAvw== + depd "~1.1.2" + inherits "2.0.4" + setprototypeof "1.1.1" + statuses ">= 1.5.0 < 2" + toidentifier "1.0.0" -pathval@^1.1.1: - version "1.1.1" - resolved "https://registry.yarnpkg.com/pathval/-/pathval-1.1.1.tgz#8534e77a77ce7ac5a2512ea21e0fdb8fcf6c3d8d" - integrity sha512-Dp6zGqpTdETdR63lehJYPeIOqpiNBNtc7BpWSLrOje7UaIsE5aY92r/AunQA7rsXvet3lrJ3JnZX29UPTKXyKQ== +http-https@^1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/http-https/-/http-https-1.0.0.tgz#2f908dd5f1db4068c058cd6e6d4ce392c913389b" + integrity sha1-L5CN1fHbQGjAWM1ubUzjkskTOJs= -pbkdf2@^3.0.17, pbkdf2@^3.0.3: - version "3.0.17" - resolved "https://registry.yarnpkg.com/pbkdf2/-/pbkdf2-3.0.17.tgz#976c206530617b14ebb32114239f7b09336e93a6" - integrity sha512-U/il5MsrZp7mGg3mSQfn742na2T+1/vHDCG5/iTI3X9MKUuYUZVLQhyRsg06mCgDBTd57TxzgZt7P+fYfjRLtA== +http-response-object@^3.0.1: + version "3.0.2" + resolved "https://registry.yarnpkg.com/http-response-object/-/http-response-object-3.0.2.tgz#7f435bb210454e4360d074ef1f989d5ea8aa9810" + integrity sha512-bqX0XTF6fnXSQcEJ2Iuyr75yVakyjIDCqroJQ/aHfSdlM743Cwqoi2nDYMzLGWUcuTWGWy8AAvOKXTfiv6q9RA== 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" + "@types/node" "^10.0.3" -pbkdf2@^3.0.9: - version "3.1.2" - resolved "https://registry.yarnpkg.com/pbkdf2/-/pbkdf2-3.1.2.tgz#dd822aa0887580e52f1a039dc3eda108efae3075" - integrity sha512-iuh7L6jA7JEGu2WxDwtQP1ddOpaJNC4KlDEFfdQajSGgGPNi4OyDc2R7QnbY2bR9QjBVGwgvTdNJZoE7RaxUMA== +http-signature@~1.2.0: + version "1.2.0" + resolved "https://registry.yarnpkg.com/http-signature/-/http-signature-1.2.0.tgz#9aecd925114772f3d95b65a60abb8f7c18fbace1" + integrity sha1-muzZJRFHcvPZW2WmCruPfBj7rOE= 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" + assert-plus "^1.0.0" + jsprim "^1.2.2" + sshpk "^1.7.0" -peer-id@^0.14.1: - version "0.14.8" - resolved "https://registry.yarnpkg.com/peer-id/-/peer-id-0.14.8.tgz#667c6bedc8ab313c81376f6aca0baa2140266fab" - integrity sha512-GpuLpob/9FrEFvyZrKKsISEkaBYsON2u0WtiawLHj1ii6ewkoeRiSDFLyIefYhw0jGvQoeoZS05jaT52X7Bvig== +https-proxy-agent@^5.0.0: + version "5.0.0" + resolved "https://registry.yarnpkg.com/https-proxy-agent/-/https-proxy-agent-5.0.0.tgz#e2a90542abb68a762e0a0850f6c9edadfd8506b2" + integrity sha512-EkYm5BcKUGiduxzSt3Eppko+PiNWNEpa4ySk9vTC6wDsQJW9rHSa+UhGNJoRYp7bz6Ht1eaRIa6QaJqO5rCFbA== dependencies: - cids "^1.1.5" - class-is "^1.1.0" - libp2p-crypto "^0.19.0" - minimist "^1.2.5" - multihashes "^4.0.2" - protobufjs "^6.10.2" - uint8arrays "^2.0.5" + agent-base "6" + debug "4" -pem-jwk@^2.0.0: - version "2.0.0" - resolved "https://registry.yarnpkg.com/pem-jwk/-/pem-jwk-2.0.0.tgz#1c5bb264612fc391340907f5c1de60c06d22f085" - integrity sha512-rFxu7rVoHgQ5H9YsP50dDWf0rHjreVA2z0yPiWr5WdH/UHb29hKtF7h6l8vNd1cbYR1t0QL+JKhW55a2ZV4KtA== +iconv-lite@0.4.24, iconv-lite@^0.4.24: + version "0.4.24" + resolved "https://registry.yarnpkg.com/iconv-lite/-/iconv-lite-0.4.24.tgz#2022b4b25fbddc21d2f524974a474aafe733908b" + integrity sha512-v3MXnZAcvnywkTUEZomIActle7RXXeedOR31wwl7VlyoXO4Qi9arvSenNQWne1TcRwhCL1HwLI21bEqdpj8/rA== dependencies: - asn1.js "^5.0.1" + safer-buffer ">= 2.1.2 < 3" -pend@~1.2.0: - version "1.2.0" - resolved "https://registry.yarnpkg.com/pend/-/pend-1.2.0.tgz#7a57eb550a6783f9115331fcf4663d5c8e007a50" - integrity sha1-elfrVQpng/kRUzH89GY9XI4AelA= +idna-uts46-hx@^2.3.1: + version "2.3.1" + resolved "https://registry.yarnpkg.com/idna-uts46-hx/-/idna-uts46-hx-2.3.1.tgz#a1dc5c4df37eee522bf66d969cc980e00e8711f9" + integrity sha512-PWoF9Keq6laYdIRwwCdhTPl60xRqAloYNMQLiyUnG42VjT53oW07BXIRM+NK7eQjzXjAk2gUvX9caRxlnF9TAA== + dependencies: + punycode "2.1.0" -performance-now@^2.1.0: - version "2.1.0" - resolved "https://registry.yarnpkg.com/performance-now/-/performance-now-2.1.0.tgz#6309f4e0e5fa913ec1c69307ae364b4b377c9e7b" - integrity sha1-Ywn04OX6kT7BxpMHrjZLSzd8nns= +ieee754@^1.1.13: + version "1.2.1" + resolved "https://registry.yarnpkg.com/ieee754/-/ieee754-1.2.1.tgz#8eb7a10a63fff25d15a57b001586d177d1b0d352" + integrity sha512-dcyqhDvX1C46lXZcVqCpK+FtMRQVdIMN6/Df5js2zouUsqG7I6sFxitIC+7KYK29KdXOLHdu9zL4sFnoVQnqaA== -picomatch@^2.0.4: - version "2.2.2" - resolved "https://registry.yarnpkg.com/picomatch/-/picomatch-2.2.2.tgz#21f333e9b6b8eaff02468f5146ea406d345f4dad" - integrity sha512-q0M/9eZHzmr0AulXyPwNfZjtwZ/RBZlbN3K3CErVrk50T2ASYI7Bye0EvekFY3IP1Nt2DHu0re+V2ZHIpMkuWg== +ignore@^4.0.6: + version "4.0.6" + resolved "https://registry.yarnpkg.com/ignore/-/ignore-4.0.6.tgz#750e3db5862087b4737ebac8207ffd1ef27b25fc" + integrity sha512-cyFDKrqc/YdcWFniJhzI42+AzS+gNwmUzOSFcRCQYwySuBBBy/KjuxWLZ/FHEH6Moq1NizMOBWyTcv8O4OZIMg== -picomatch@^2.0.5, picomatch@^2.2.1: - version "2.2.1" - resolved "https://registry.yarnpkg.com/picomatch/-/picomatch-2.2.1.tgz#21bac888b6ed8601f831ce7816e335bc779f0a4a" - integrity sha512-ISBaA8xQNmwELC7eOjqFKMESB2VIqt4PPDD0nsS95b/9dZXvVKOlz9keMSnoGGKcOHXfTvDD6WMaRoSc9UuhRA== +ignore@^5.1.1, ignore@^5.1.4: + version "5.1.8" + resolved "https://registry.yarnpkg.com/ignore/-/ignore-5.1.8.tgz#f150a8b50a34289b33e22f5889abd4d8016f0e57" + integrity sha512-BMpfD7PpiETpBl/A6S498BaIJ6Y/ABT93ETbby2fP00v4EbvPBXWEoaR1UBPKs3iR53pJY7EtZk5KACI57i1Uw== -pify@^2.0.0, pify@^2.3.0: - version "2.3.0" - resolved "https://registry.yarnpkg.com/pify/-/pify-2.3.0.tgz#ed141a6ac043a849ea588498e7dca8b15330e90c" - integrity sha1-7RQaasBDqEnqWISY59yosVMw6Qw= +immediate@^3.2.3: + version "3.3.0" + resolved "https://registry.yarnpkg.com/immediate/-/immediate-3.3.0.tgz#1aef225517836bcdf7f2a2de2600c79ff0269266" + integrity sha512-HR7EVodfFUdQCTIeySw+WDRFJlPcLOJbXfwwZ7Oom6tjsvZ3bOkCDJHehQC3nxJrv7+f9XecwazynjU8e4Vw3Q== -pify@^3.0.0: - version "3.0.0" - resolved "https://registry.yarnpkg.com/pify/-/pify-3.0.0.tgz#e5a4acd2c101fdf3d9a4d07f0dbc4db49dd28176" - integrity sha1-5aSs0sEB/fPZpNB/DbxNtJ3SgXY= +immediate@~3.2.3: + version "3.2.3" + resolved "https://registry.yarnpkg.com/immediate/-/immediate-3.2.3.tgz#d140fa8f614659bd6541233097ddaac25cdd991c" + integrity sha1-0UD6j2FGWb1lQSMwl92qwlzdmRw= -pify@^4.0.1: - version "4.0.1" - resolved "https://registry.yarnpkg.com/pify/-/pify-4.0.1.tgz#4b2cd25c50d598735c50292224fd8c6df41e3231" - integrity sha512-uB80kBFb/tfd68bVleG9T5GGsGPjJrLAUpR5PZIrhBnIaRTQRjqdJSsIKkOP6OAIFbj7GOrcudc5pNjZ+geV2g== +immutable@^4.0.0-rc.12: + version "4.0.0-rc.12" + resolved "https://registry.yarnpkg.com/immutable/-/immutable-4.0.0-rc.12.tgz#ca59a7e4c19ae8d9bf74a97bdf0f6e2f2a5d0217" + integrity sha512-0M2XxkZLx/mi3t8NVwIm1g8nHoEmM9p9UBl/G9k4+hm0kBgOVdMV/B3CY5dQ8qG8qc80NN4gDV4HQv6FTJ5q7A== -pinkie-promise@^2.0.0: - version "2.0.1" - resolved "https://registry.yarnpkg.com/pinkie-promise/-/pinkie-promise-2.0.1.tgz#2135d6dfa7a358c069ac9b178776288228450ffa" - integrity sha1-ITXW36ejWMBprJsXh3YogihFD/o= +import-fresh@^2.0.0: + version "2.0.0" + resolved "https://registry.yarnpkg.com/import-fresh/-/import-fresh-2.0.0.tgz#d81355c15612d386c61f9ddd3922d4304822a546" + integrity sha1-2BNVwVYS04bGH53dOSLUMEgipUY= dependencies: - pinkie "^2.0.0" - -pinkie@^2.0.0: - version "2.0.4" - resolved "https://registry.yarnpkg.com/pinkie/-/pinkie-2.0.4.tgz#72556b80cfa0d48a974e80e77248e80ed4f7f870" - integrity sha1-clVrgM+g1IqXToDnckjoDtT3+HA= + caller-path "^2.0.0" + resolve-from "^3.0.0" -pkg-conf@^1.1.2: - version "1.1.3" - resolved "https://registry.yarnpkg.com/pkg-conf/-/pkg-conf-1.1.3.tgz#378e56d6fd13e88bfb6f4a25df7a83faabddba5b" - integrity sha1-N45W1v0T6Iv7b0ol33qD+qvduls= +import-fresh@^3.0.0, import-fresh@^3.2.1: + version "3.3.0" + resolved "https://registry.yarnpkg.com/import-fresh/-/import-fresh-3.3.0.tgz#37162c25fcb9ebaa2e6e53d5b4d88ce17d9e0c2b" + integrity sha512-veYYhQa+D1QBKznvhUHxb8faxlrwUnxseDAbAp457E0wLNio2bOSKnjYDhMj+YiAq61xrMGhQk9iXVk5FzgQMw== dependencies: - find-up "^1.0.0" - load-json-file "^1.1.0" - object-assign "^4.0.1" - symbol "^0.2.1" - -pluralize@^8.0.0: - version "8.0.0" - resolved "https://registry.yarnpkg.com/pluralize/-/pluralize-8.0.0.tgz#1a6fa16a38d12a1901e0320fa017051c539ce3b1" - integrity sha512-Nc3IT5yHzflTfbjgqWcCPpo7DaKy4FnpB0l/zCAW0Tc7jxAiuqSxHasntB3D7887LSrA93kDJ9IXovxJYxyLCA== + parent-module "^1.0.0" + resolve-from "^4.0.0" -posix-character-classes@^0.1.0: - version "0.1.1" - resolved "https://registry.yarnpkg.com/posix-character-classes/-/posix-character-classes-0.1.1.tgz#01eac0fe3b5af71a2a6c02feabb8c1fef7e00eab" - integrity sha1-AerA/jta9xoqbAL+q7jB/vfgDqs= - -pouchdb-abstract-mapreduce@7.2.2: - version "7.2.2" - resolved "https://registry.yarnpkg.com/pouchdb-abstract-mapreduce/-/pouchdb-abstract-mapreduce-7.2.2.tgz#dd1b10a83f8d24361dce9aaaab054614b39f766f" - integrity sha512-7HWN/2yV2JkwMnGnlp84lGvFtnm0Q55NiBUdbBcaT810+clCGKvhssBCrXnmwShD1SXTwT83aszsgiSfW+SnBA== - dependencies: - pouchdb-binary-utils "7.2.2" - pouchdb-collate "7.2.2" - pouchdb-collections "7.2.2" - pouchdb-errors "7.2.2" - pouchdb-fetch "7.2.2" - pouchdb-mapreduce-utils "7.2.2" - pouchdb-md5 "7.2.2" - pouchdb-utils "7.2.2" - -pouchdb-adapter-leveldb-core@7.2.2: - version "7.2.2" - resolved "https://registry.yarnpkg.com/pouchdb-adapter-leveldb-core/-/pouchdb-adapter-leveldb-core-7.2.2.tgz#e0aa6a476e2607d7ae89f4a803c9fba6e6d05a8a" - integrity sha512-K9UGf1Ivwe87mjrMqN+1D07tO/DfU7ariVDrGffuOjvl+3BcvUF25IWrxsBObd4iPOYCH7NVQWRpojhBgxULtQ== - dependencies: - argsarray "0.0.1" - buffer-from "1.1.1" - double-ended-queue "2.1.0-0" - levelup "4.4.0" - pouchdb-adapter-utils "7.2.2" - pouchdb-binary-utils "7.2.2" - pouchdb-collections "7.2.2" - pouchdb-errors "7.2.2" - pouchdb-json "7.2.2" - pouchdb-md5 "7.2.2" - pouchdb-merge "7.2.2" - pouchdb-utils "7.2.2" - sublevel-pouchdb "7.2.2" - through2 "3.0.2" - -pouchdb-adapter-memory@^7.1.1: - version "7.2.2" - resolved "https://registry.yarnpkg.com/pouchdb-adapter-memory/-/pouchdb-adapter-memory-7.2.2.tgz#c0ec2e87928d516ca9d1b5badc7269df6f95e5ea" - integrity sha512-9o+zdItPEq7rIrxdkUxgsLNaZkDJAGEqqoYgeYdrHidOCZnlhxhX3g7/R/HcpDKC513iEPqJWDJQSfeT6nVKkw== - dependencies: - memdown "1.4.1" - pouchdb-adapter-leveldb-core "7.2.2" - pouchdb-utils "7.2.2" - -pouchdb-adapter-node-websql@^7.0.0: - version "7.0.0" - resolved "https://registry.yarnpkg.com/pouchdb-adapter-node-websql/-/pouchdb-adapter-node-websql-7.0.0.tgz#64ad88dd45b23578e454bf3032a3a79f9d1e4008" - integrity sha512-fNaOMO8bvMrRTSfmH4RSLSpgnKahRcCA7Z0jg732PwRbGvvMdGbreZwvKPPD1fg2tm2ZwwiXWK2G3+oXyoqZYw== - dependencies: - pouchdb-adapter-websql-core "7.0.0" - pouchdb-utils "7.0.0" - websql "1.0.0" +imul@^1.0.0: + version "1.0.1" + resolved "https://registry.yarnpkg.com/imul/-/imul-1.0.1.tgz#9d5867161e8b3de96c2c38d5dc7cb102f35e2ac9" + integrity sha1-nVhnFh6LPelsLDjV3HyxAvNeKsk= -pouchdb-adapter-utils@7.0.0: - version "7.0.0" - resolved "https://registry.yarnpkg.com/pouchdb-adapter-utils/-/pouchdb-adapter-utils-7.0.0.tgz#1ac8d34481911e0e9a9bf51024610a2e7351dc80" - integrity sha512-UWKPC6jkz6mHUzZefrU7P5X8ZGvBC8LSNZ7BIp0hWvJE6c20cnpDwedTVDpZORcCbVJpDmFOHBYnOqEIblPtbA== - dependencies: - pouchdb-binary-utils "7.0.0" - pouchdb-collections "7.0.0" - pouchdb-errors "7.0.0" - pouchdb-md5 "7.0.0" - pouchdb-merge "7.0.0" - pouchdb-utils "7.0.0" - -pouchdb-adapter-utils@7.2.2: - version "7.2.2" - resolved "https://registry.yarnpkg.com/pouchdb-adapter-utils/-/pouchdb-adapter-utils-7.2.2.tgz#c64426447d9044ba31517a18500d6d2d28abd47d" - integrity sha512-2CzZkTyTyHZkr3ePiWFMTiD5+56lnembMjaTl8ohwegM0+hYhRyJux0biAZafVxgIL4gnCUC4w2xf6WVztzKdg== - dependencies: - pouchdb-binary-utils "7.2.2" - pouchdb-collections "7.2.2" - pouchdb-errors "7.2.2" - pouchdb-md5 "7.2.2" - pouchdb-merge "7.2.2" - pouchdb-utils "7.2.2" - -pouchdb-adapter-websql-core@7.0.0: - version "7.0.0" - resolved "https://registry.yarnpkg.com/pouchdb-adapter-websql-core/-/pouchdb-adapter-websql-core-7.0.0.tgz#27b3e404159538e515b2567baa7869f90caac16c" - integrity sha512-NyMaH0bl20SdJdOCzd+fwXo8JZ15a48/MAwMcIbXzsRHE4DjFNlRcWAcjUP6uN4Ezc+Gx+r2tkBBMf71mIz1Aw== - dependencies: - pouchdb-adapter-utils "7.0.0" - pouchdb-binary-utils "7.0.0" - pouchdb-collections "7.0.0" - pouchdb-errors "7.0.0" - pouchdb-json "7.0.0" - pouchdb-merge "7.0.0" - pouchdb-utils "7.0.0" - -pouchdb-binary-utils@7.0.0: - version "7.0.0" - resolved "https://registry.yarnpkg.com/pouchdb-binary-utils/-/pouchdb-binary-utils-7.0.0.tgz#cb71a288b09572a231f6bab1b4aed201c4d219a7" - integrity sha512-yUktdOPIPvOVouCjJN3uop+bCcpdPwePrLm9eUAZNgEYnUFu0njdx7Q0WRsZ7UJ6l75HinL5ZHk4bnvEt86FLw== - dependencies: - buffer-from "1.1.0" +imurmurhash@^0.1.4: + version "0.1.4" + resolved "https://registry.yarnpkg.com/imurmurhash/-/imurmurhash-0.1.4.tgz#9218b9b2b928a238b13dc4fb6b6d576f231453ea" + integrity sha1-khi5srkoojixPcT7a21XbyMUU+o= -pouchdb-binary-utils@7.2.2: - version "7.2.2" - resolved "https://registry.yarnpkg.com/pouchdb-binary-utils/-/pouchdb-binary-utils-7.2.2.tgz#0690b348052c543b1e67f032f47092ca82bcb10e" - integrity sha512-shacxlmyHbUrNfE6FGYpfyAJx7Q0m91lDdEAaPoKZM3SzAmbtB1i+OaDNtYFztXjJl16yeudkDb3xOeokVL3Qw== +inflight@^1.0.4: + version "1.0.6" + resolved "https://registry.yarnpkg.com/inflight/-/inflight-1.0.6.tgz#49bd6331d7d02d0c09bc910a1075ba8165b56df9" + integrity sha1-Sb1jMdfQLQwJvJEKEHW6gWW1bfk= dependencies: - buffer-from "1.1.1" + once "^1.3.0" + wrappy "1" -pouchdb-collate@7.2.2: - version "7.2.2" - resolved "https://registry.yarnpkg.com/pouchdb-collate/-/pouchdb-collate-7.2.2.tgz#fc261f5ef837c437e3445fb0abc3f125d982c37c" - integrity sha512-/SMY9GGasslknivWlCVwXMRMnQ8myKHs4WryQ5535nq1Wj/ehpqWloMwxEQGvZE1Sda3LOm7/5HwLTcB8Our+w== +inherits@2, inherits@2.0.4, inherits@^2.0.1, inherits@^2.0.3, inherits@^2.0.4, inherits@~2.0.1, inherits@~2.0.3: + version "2.0.4" + resolved "https://registry.yarnpkg.com/inherits/-/inherits-2.0.4.tgz#0fa2c64f932917c3433a0ded55363aae37416b7c" + integrity sha512-k/vGaX4/Yla3WzyMCvTQOXYeIHvqOKtnqBduzTHpzpQZzAskKMhZ2K+EnBiSM9zGSoIFeMpXKxa4dYeZIQqewQ== -pouchdb-collections@7.0.0: - version "7.0.0" - resolved "https://registry.yarnpkg.com/pouchdb-collections/-/pouchdb-collections-7.0.0.tgz#fd1f632337dc6301b0ff8649732ca79204e41780" - integrity sha512-DaoUr/vU24Q3gM6ghj0va9j/oBanPwkbhkvnqSyC3Dm5dgf5pculNxueLF9PKMo3ycApoWzHMh6N2N8KJbDU2Q== +inherits@2.0.3: + version "2.0.3" + resolved "https://registry.yarnpkg.com/inherits/-/inherits-2.0.3.tgz#633c2c83e3da42a502f52466022480f4208261de" + integrity sha1-Yzwsg+PaQqUC9SRmAiSA9CCCYd4= -pouchdb-collections@7.2.2: - version "7.2.2" - resolved "https://registry.yarnpkg.com/pouchdb-collections/-/pouchdb-collections-7.2.2.tgz#aeed77f33322429e3f59d59ea233b48ff0e68572" - integrity sha512-6O9zyAYlp3UdtfneiMYuOCWdUCQNo2bgdjvNsMSacQX+3g8WvIoFQCYJjZZCpTttQGb+MHeRMr8m2U95lhJTew== +ini@^1.3.5: + version "1.3.8" + resolved "https://registry.yarnpkg.com/ini/-/ini-1.3.8.tgz#a29da425b48806f34767a4efce397269af28432c" + integrity sha512-JV/yugV2uzW5iMRSiZAyDtQd+nxtUnjeLt0acNdw98kKLrvuRVyB80tsREOE7yvGVgalhZ6RNXCmEHkUKBKxew== -pouchdb-debug@^7.1.1: - version "7.2.1" - resolved "https://registry.yarnpkg.com/pouchdb-debug/-/pouchdb-debug-7.2.1.tgz#f5f869f6113c12ccb97cddf5b0a32b6e0e67e961" - integrity sha512-eP3ht/AKavLF2RjTzBM6S9gaI2/apcW6xvaKRQhEdOfiANqerFuksFqHCal3aikVQuDO+cB/cw+a4RyJn/glBw== +inquirer@^6.2.2: + version "6.5.2" + resolved "https://registry.yarnpkg.com/inquirer/-/inquirer-6.5.2.tgz#ad50942375d036d327ff528c08bd5fab089928ca" + integrity sha512-cntlB5ghuB0iuO65Ovoi8ogLHiWGs/5yNrtUcKjFhSSiVeAIVpD7koaSU9RM8mpXw5YDi9RdYXGQMaOURB7ycQ== dependencies: - debug "3.1.0" + 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" -pouchdb-errors@7.0.0: - version "7.0.0" - resolved "https://registry.yarnpkg.com/pouchdb-errors/-/pouchdb-errors-7.0.0.tgz#4e2a5a8b82af20cbe5f9970ca90b7ec74563caa0" - integrity sha512-dTusY8nnTw4HIztCrNl7AoGgwvS1bVf/3/97hDaGc4ytn72V9/4dK8kTqlimi3UpaurohYRnqac0SGXYP8vgXA== - dependencies: - inherits "2.0.3" +interpret@^1.0.0: + version "1.4.0" + resolved "https://registry.yarnpkg.com/interpret/-/interpret-1.4.0.tgz#665ab8bc4da27a774a40584e812e3e0fa45b1a1e" + integrity sha512-agE4QfB2Lkp9uICn7BAqoscw4SZP9kTE2hxiFI3jBPmXJfdqiahTbUuKGsMoN2GtqL9AxhYioAcVvgsb1HvRbA== -pouchdb-errors@7.2.2: - version "7.2.2" - resolved "https://registry.yarnpkg.com/pouchdb-errors/-/pouchdb-errors-7.2.2.tgz#80d811d65c766c9d20b755c6e6cc123f8c3c4792" - integrity sha512-6GQsiWc+7uPfgEHeavG+7wuzH3JZW29Dnrvz8eVbDFE50kVFxNDVm3EkYHskvo5isG7/IkOx7PV7RPTA3keG3g== - dependencies: - inherits "2.0.4" +invert-kv@^2.0.0: + version "2.0.0" + resolved "https://registry.yarnpkg.com/invert-kv/-/invert-kv-2.0.0.tgz#7393f5afa59ec9ff5f67a27620d11c226e3eec02" + integrity sha512-wPVv/y/QQ/Uiirj/vh3oP+1Ww+AWehmi1g5fFWGPF6IpCBCDVrhgHRMvrLfdYcwDh3QJbGXDW4JAuzxElLSqKA== -pouchdb-fetch@7.2.2: - version "7.2.2" - resolved "https://registry.yarnpkg.com/pouchdb-fetch/-/pouchdb-fetch-7.2.2.tgz#492791236d60c899d7e9973f9aca0d7b9cc02230" - integrity sha512-lUHmaG6U3zjdMkh8Vob9GvEiRGwJfXKE02aZfjiVQgew+9SLkuOxNw3y2q4d1B6mBd273y1k2Lm0IAziRNxQnA== - dependencies: - abort-controller "3.0.0" - fetch-cookie "0.10.1" - node-fetch "2.6.0" - -pouchdb-find@^7.0.0: - version "7.2.2" - resolved "https://registry.yarnpkg.com/pouchdb-find/-/pouchdb-find-7.2.2.tgz#1227afdd761812d508fe0794b3e904518a721089" - integrity sha512-BmFeFVQ0kHmDehvJxNZl9OmIztCjPlZlVSdpijuFbk/Fi1EFPU1BAv3kLC+6DhZuOqU/BCoaUBY9sn66pPY2ag== - dependencies: - pouchdb-abstract-mapreduce "7.2.2" - pouchdb-collate "7.2.2" - pouchdb-errors "7.2.2" - pouchdb-fetch "7.2.2" - pouchdb-md5 "7.2.2" - pouchdb-selector-core "7.2.2" - pouchdb-utils "7.2.2" - -pouchdb-json@7.0.0: - version "7.0.0" - resolved "https://registry.yarnpkg.com/pouchdb-json/-/pouchdb-json-7.0.0.tgz#d9860f66f27a359ac6e4b24da4f89b6909f37530" - integrity sha512-w0bNRu/7VmmCrFWMYAm62n30wvJJUT2SokyzeTyj3hRohj4GFwTRg1mSZ+iAmxgRKOFE8nzZstLG/WAB4Ymjew== +io-ts@1.10.4: + version "1.10.4" + resolved "https://registry.yarnpkg.com/io-ts/-/io-ts-1.10.4.tgz#cd5401b138de88e4f920adbcb7026e2d1967e6e2" + integrity sha512-b23PteSnYXSONJ6JQXRAlvJhuw8KOtkqa87W4wDtvMrud/DTJd5X+NpOOI+O/zZwVq6v0VLAaJ+1EDViKEuN9g== dependencies: - vuvuzela "1.0.3" + fp-ts "^1.0.0" -pouchdb-json@7.2.2: - version "7.2.2" - resolved "https://registry.yarnpkg.com/pouchdb-json/-/pouchdb-json-7.2.2.tgz#b939be24b91a7322e9a24b8880a6e21514ec5e1f" - integrity sha512-3b2S2ynN+aoB7aCNyDZc/4c0IAdx/ir3nsHB+/RrKE9cM3QkQYbnnE3r/RvOD1Xvr6ji/KOCBie+Pz/6sxoaug== - dependencies: - vuvuzela "1.0.3" +ipaddr.js@1.9.1: + version "1.9.1" + resolved "https://registry.yarnpkg.com/ipaddr.js/-/ipaddr.js-1.9.1.tgz#bff38543eeb8984825079ff3a2a8e6cbd46781b3" + integrity sha512-0KI/607xoxSToH7GjN1FfSbLoU0+btTicjsQSWQlh/hZykN8KpmMf7uYwPW3R+akZ6R/w18ZlXSHBYXiYUPO3g== -pouchdb-mapreduce-utils@7.2.2: - version "7.2.2" - resolved "https://registry.yarnpkg.com/pouchdb-mapreduce-utils/-/pouchdb-mapreduce-utils-7.2.2.tgz#13a46a3cc2a3f3b8e24861da26966904f2963146" - integrity sha512-rAllb73hIkU8rU2LJNbzlcj91KuulpwQu804/F6xF3fhZKC/4JQMClahk+N/+VATkpmLxp1zWmvmgdlwVU4HtQ== +is-arguments@^1.0.4: + version "1.1.0" + resolved "https://registry.yarnpkg.com/is-arguments/-/is-arguments-1.1.0.tgz#62353031dfbee07ceb34656a6bde59efecae8dd9" + integrity sha512-1Ij4lOMPl/xB5kBDn7I+b2ttPMKa8szhEIrXDuXQD/oe3HJLTLhqhgGspwgyGd6MOywBUqVvYicF72lkgDnIHg== dependencies: - argsarray "0.0.1" - inherits "2.0.4" - pouchdb-collections "7.2.2" - pouchdb-utils "7.2.2" + call-bind "^1.0.0" -pouchdb-md5@7.0.0: - version "7.0.0" - resolved "https://registry.yarnpkg.com/pouchdb-md5/-/pouchdb-md5-7.0.0.tgz#935dc6bb507a5f3978fb653ca5790331bae67c96" - integrity sha512-yaSJKhLA3QlgloKUQeb2hLdT3KmUmPfoYdryfwHZuPTpXIRKTnMQTR9qCIRUszc0ruBpDe53DRslCgNUhAyTNQ== +is-arrayish@^0.2.1: + version "0.2.1" + resolved "https://registry.yarnpkg.com/is-arrayish/-/is-arrayish-0.2.1.tgz#77c99840527aa8ecb1a8ba697b80645a7a926a9d" + integrity sha1-d8mYQFJ6qOyxqLppe4BkWnqSap0= + +is-bigint@^1.0.1: + version "1.0.2" + resolved "https://registry.yarnpkg.com/is-bigint/-/is-bigint-1.0.2.tgz#ffb381442503235ad245ea89e45b3dbff040ee5a" + integrity sha512-0JV5+SOCQkIdzjBK9buARcV804Ddu7A0Qet6sHi3FimE9ne6m4BGQZfRn+NZiXbBk4F4XmHfDZIipLj9pX8dSA== + +is-binary-path@~2.1.0: + version "2.1.0" + resolved "https://registry.yarnpkg.com/is-binary-path/-/is-binary-path-2.1.0.tgz#ea1f7f3b80f064236e83470f86c09c254fb45b09" + integrity sha512-ZMERYes6pDydyuGidse7OsHxtbI7WVeUEozgR/g7rd0xUimYNlvZRE/K2MgZTjWy725IfelLeVcEM97mmtRGXw== dependencies: - pouchdb-binary-utils "7.0.0" - spark-md5 "3.0.0" + binary-extensions "^2.0.0" -pouchdb-md5@7.2.2: - version "7.2.2" - resolved "https://registry.yarnpkg.com/pouchdb-md5/-/pouchdb-md5-7.2.2.tgz#415401acc5a844112d765bd1fb4e5d9f38fb0838" - integrity sha512-c/RvLp2oSh8PLAWU5vFBnp6ejJABIdKqboZwRRUrWcfGDf+oyX8RgmJFlYlzMMOh4XQLUT1IoaDV8cwlsuryZw== +is-boolean-object@^1.1.0: + version "1.1.1" + resolved "https://registry.yarnpkg.com/is-boolean-object/-/is-boolean-object-1.1.1.tgz#3c0878f035cb821228d350d2e1e36719716a3de8" + integrity sha512-bXdQWkECBUIAcCkeH1unwJLIpZYaa5VvuygSyS/c2lf719mTKZDU5UdDRlpd01UjADgmW8RfqaP+mRaVPdr/Ng== dependencies: - pouchdb-binary-utils "7.2.2" - spark-md5 "3.0.1" + call-bind "^1.0.2" -pouchdb-merge@7.0.0: - version "7.0.0" - resolved "https://registry.yarnpkg.com/pouchdb-merge/-/pouchdb-merge-7.0.0.tgz#9f476ce7e32aae56904ad770ae8a1dfe14b57547" - integrity sha512-tci5u6NpznQhGcPv4ho1h0miky9rs+ds/T9zQ9meQeDZbUojXNaX1Jxsb0uYEQQ+HMqdcQs3Akdl0/u0mgwPGg== +is-buffer@~2.0.3: + version "2.0.5" + resolved "https://registry.yarnpkg.com/is-buffer/-/is-buffer-2.0.5.tgz#ebc252e400d22ff8d77fa09888821a24a658c191" + integrity sha512-i2R6zNFDwgEHJyQUtJEk0XFi1i0dPFn/oqjK3/vPCcDeJvW5NQ83V8QbicfF1SupOaB0h8ntgBC2YiE7dfyctQ== -pouchdb-merge@7.2.2: - version "7.2.2" - resolved "https://registry.yarnpkg.com/pouchdb-merge/-/pouchdb-merge-7.2.2.tgz#940d85a2b532d6a93a6cab4b250f5648511bcc16" - integrity sha512-6yzKJfjIchBaS7Tusuk8280WJdESzFfQ0sb4jeMUNnrqs4Cx3b0DIEOYTRRD9EJDM+je7D3AZZ4AT0tFw8gb4A== +is-callable@^1.1.3, is-callable@^1.1.4, is-callable@^1.2.3: + version "1.2.3" + resolved "https://registry.yarnpkg.com/is-callable/-/is-callable-1.2.3.tgz#8b1e0500b73a1d76c70487636f368e519de8db8e" + integrity sha512-J1DcMe8UYTBSrKezuIUTUwjXsho29693unXM2YhJUTR2txK/eG47bvNa/wipPFmZFgr/N6f1GA66dv0mEyTIyQ== -pouchdb-selector-core@7.2.2: - version "7.2.2" - resolved "https://registry.yarnpkg.com/pouchdb-selector-core/-/pouchdb-selector-core-7.2.2.tgz#264d7436a8c8ac3801f39960e79875ef7f3879a0" - integrity sha512-XYKCNv9oiNmSXV5+CgR9pkEkTFqxQGWplnVhO3W9P154H08lU0ZoNH02+uf+NjZ2kjse7Q1fxV4r401LEcGMMg== +is-ci@^2.0.0: + version "2.0.0" + resolved "https://registry.yarnpkg.com/is-ci/-/is-ci-2.0.0.tgz#6bc6334181810e04b5c22b3d589fdca55026404c" + integrity sha512-YfJT7rkpQB0updsdHLGWrvhBJfcfzNNawYDNIyQXJz0IViGf75O8EBPKSdvw2rF+LGCsX4FZ8tcr3b19LcZq4w== dependencies: - pouchdb-collate "7.2.2" - pouchdb-utils "7.2.2" + ci-info "^2.0.0" -pouchdb-utils@7.0.0: - version "7.0.0" - resolved "https://registry.yarnpkg.com/pouchdb-utils/-/pouchdb-utils-7.0.0.tgz#48bfced6665b8f5a2b2d2317e2aa57635ed1e88e" - integrity sha512-1bnoX1KdZYHv9wicDIFdO0PLiVIMzNDUBUZ/yOJZ+6LW6niQCB8aCv09ZztmKfSQcU5nnN3fe656tScBgP6dOQ== +is-core-module@^2.2.0: + version "2.4.0" + resolved "https://registry.yarnpkg.com/is-core-module/-/is-core-module-2.4.0.tgz#8e9fc8e15027b011418026e98f0e6f4d86305cc1" + integrity sha512-6A2fkfq1rfeQZjxrZJGerpLCTHRNEBiSgnu0+obeJpEPZRUooHgsizvzv0ZjJwOz3iWIHdJtVWJ/tmPr3D21/A== dependencies: - argsarray "0.0.1" - clone-buffer "1.0.0" - immediate "3.0.6" - inherits "2.0.3" - pouchdb-collections "7.0.0" - pouchdb-errors "7.0.0" - pouchdb-md5 "7.0.0" - uuid "3.2.1" - -pouchdb-utils@7.2.2: - version "7.2.2" - resolved "https://registry.yarnpkg.com/pouchdb-utils/-/pouchdb-utils-7.2.2.tgz#c17c4788f1d052b0daf4ef8797bbc4aaa3945aa4" - integrity sha512-XmeM5ioB4KCfyB2MGZXu1Bb2xkElNwF1qG+zVFbQsKQij0zvepdOUfGuWvLRHxTOmt4muIuSOmWZObZa3NOgzQ== - dependencies: - argsarray "0.0.1" - clone-buffer "1.0.0" - immediate "3.3.0" - inherits "2.0.4" - pouchdb-collections "7.2.2" - pouchdb-errors "7.2.2" - pouchdb-md5 "7.2.2" - uuid "8.1.0" - -pouchdb@7.1.1: - version "7.1.1" - resolved "https://registry.yarnpkg.com/pouchdb/-/pouchdb-7.1.1.tgz#f5f8dcd1fc440fb76651cb26f6fc5d97a39cd6ce" - integrity sha512-8bXWclixNJZqokvxGHRsG19zehSJiaZaz4dVYlhXhhUctz7gMcNTElHjPBzBdZlKKvt9aFDndmXN1VVE53Co8g== - dependencies: - argsarray "0.0.1" - buffer-from "1.1.0" - clone-buffer "1.0.0" - double-ended-queue "2.1.0-0" - fetch-cookie "0.7.0" - immediate "3.0.6" - inherits "2.0.3" - level "5.0.1" - level-codec "9.0.1" - level-write-stream "1.0.0" - leveldown "5.0.2" - levelup "4.0.2" - ltgt "2.2.1" - node-fetch "2.4.1" - readable-stream "1.0.33" - spark-md5 "3.0.0" - through2 "3.0.1" - uuid "3.2.1" - vuvuzela "1.0.3" - -prelude-ls@~1.1.2: - version "1.1.2" - resolved "https://registry.yarnpkg.com/prelude-ls/-/prelude-ls-1.1.2.tgz#21932a549f5e52ffd9a827f570e04be62a97da54" - integrity sha1-IZMqVJ9eUv/ZqCf1cOBL5iqX2lQ= + has "^1.0.3" -prepend-http@^1.0.1: +is-date-object@^1.0.1: version "1.0.4" - resolved "https://registry.yarnpkg.com/prepend-http/-/prepend-http-1.0.4.tgz#d4f4562b0ce3696e41ac52d0e002e57a635dc6dc" - integrity sha1-1PRWKwzjaW5BrFLQ4ALlemNdxtw= + resolved "https://registry.yarnpkg.com/is-date-object/-/is-date-object-1.0.4.tgz#550cfcc03afada05eea3dd30981c7b09551f73e5" + integrity sha512-/b4ZVsG7Z5XVtIxs/h9W8nvfLgSAyKYdtGWQLbqy6jA1icmgjf8WCoTKgeS4wy5tYaPePouzFMANbnj94c2Z+A== -prepend-http@^2.0.0: +is-directory@^0.3.1: + version "0.3.1" + resolved "https://registry.yarnpkg.com/is-directory/-/is-directory-0.3.1.tgz#61339b6f2475fc772fd9c9d83f5c8575dc154ae1" + integrity sha1-YTObbyR1/Hcv2cnYP1yFddwVSuE= + +is-docker@^2.0.0: + version "2.2.1" + resolved "https://registry.yarnpkg.com/is-docker/-/is-docker-2.2.1.tgz#33eeabe23cfe86f14bde4408a02c0cfb853acdaa" + integrity sha512-F+i2BKsFrH66iaUFc0woD8sLy8getkwTwtOBjvs56Cx4CgJDeKQeqfz8wAYiSb8JOprWhHH5p77PbmYCvvUuXQ== + +is-extglob@^2.1.1: + version "2.1.1" + resolved "https://registry.yarnpkg.com/is-extglob/-/is-extglob-2.1.1.tgz#a88c02535791f02ed37c76a1b9ea9773c833f8c2" + integrity sha1-qIwCU1eR8C7TfHahueqXc8gz+MI= + +is-fullwidth-code-point@^2.0.0: version "2.0.0" - resolved "https://registry.yarnpkg.com/prepend-http/-/prepend-http-2.0.0.tgz#e92434bfa5ea8c19f41cdfd401d741a3c819d897" - integrity sha1-6SQ0v6XqjBn0HN/UAddBo8gZ2Jc= + resolved "https://registry.yarnpkg.com/is-fullwidth-code-point/-/is-fullwidth-code-point-2.0.0.tgz#a3b30a5c4f199183167aaab93beefae3ddfb654f" + integrity sha1-o7MKXE8ZkYMWeqq5O+764937ZU8= -preserve@^0.2.0: - version "0.2.0" - resolved "https://registry.yarnpkg.com/preserve/-/preserve-0.2.0.tgz#815ed1f6ebc65926f865b310c0713bcb3315ce4b" - integrity sha1-gV7R9uvGWSb4ZbMQwHE7yzMVzks= +is-fullwidth-code-point@^3.0.0: + version "3.0.0" + resolved "https://registry.yarnpkg.com/is-fullwidth-code-point/-/is-fullwidth-code-point-3.0.0.tgz#f116f8064fe90b3f7844a38997c0b75051269f1d" + integrity sha512-zymm5+u+sCsSWyD9qNaejV3DFvhCKclKdizYaJUuHA83RLjb7nSuGnddCHGv0hk+KY7BMAlsWeK4Ueg6EV6XQg== -prettier-plugin-solidity@^1.0.0-alpha.59: - version "1.0.0-beta.17" - resolved "https://registry.yarnpkg.com/prettier-plugin-solidity/-/prettier-plugin-solidity-1.0.0-beta.17.tgz#fc0fe977202b6503763a338383efeceaa6c7661e" - integrity sha512-YFkxV/rHi1mphi17/XKcJ9QjZlb+L/J0yY2erix21BZfzPv2BN9dfmSRGr/poDp/FBOFSW+jteP2BCMe7HndVQ== - dependencies: - "@solidity-parser/parser" "^0.13.2" - emoji-regex "^9.2.2" - escape-string-regexp "^4.0.0" - semver "^7.3.5" - solidity-comments-extractor "^0.0.7" - string-width "^4.2.2" +is-function@^1.0.1: + version "1.0.2" + resolved "https://registry.yarnpkg.com/is-function/-/is-function-1.0.2.tgz#4f097f30abf6efadac9833b17ca5dc03f8144e08" + integrity sha512-lw7DUp0aWXYg+CBCN+JKkcE0Q2RayZnSvnZBlwgxHBQhqt5pZNVy4Ri7H9GmmXkdu7LUthszM+Tor1u/2iBcpQ== -prettier@^2.1.2: - version "2.3.2" - resolved "https://registry.yarnpkg.com/prettier/-/prettier-2.3.2.tgz#ef280a05ec253712e486233db5c6f23441e7342d" - integrity sha512-lnJzDfJ66zkMy58OL5/NY5zp70S7Nz6KqcKkXYzn2tMVrNxvbqaBpg7H3qHaLxCJ5lNMsGuM8+ohS7cZrthdLQ== +is-generator-function@^1.0.7: + version "1.0.9" + resolved "https://registry.yarnpkg.com/is-generator-function/-/is-generator-function-1.0.9.tgz#e5f82c2323673e7fcad3d12858c83c4039f6399c" + integrity sha512-ZJ34p1uvIfptHCN7sFTjGibB9/oBg17sHqzDLfuwhvmN/qLVvIQXRQ8licZQ35WJ8KuEQt/etnnzQFI9C9Ue/A== -printj@~1.1.0: - version "1.1.2" - resolved "https://registry.yarnpkg.com/printj/-/printj-1.1.2.tgz#d90deb2975a8b9f600fb3a1c94e3f4c53c78a222" - integrity sha512-zA2SmoLaxZyArQTOPj5LXecR+RagfPSU5Kw1qP+jkWeNlrq+eJZyY2oS68SU1Z/7/myXM4lo9716laOFAVStCQ== +is-glob@^4.0.0, is-glob@^4.0.1, is-glob@~4.0.1: + version "4.0.1" + resolved "https://registry.yarnpkg.com/is-glob/-/is-glob-4.0.1.tgz#7567dbe9f2f5e2467bc77ab83c4a29482407a5dc" + integrity sha512-5G0tKtBTFImOqDnLB2hG6Bp2qcKEFduo4tZu9MT/H6NQv/ghhy30o55ufafxJ/LdH79LLs2Kfrn85TLKyA7BUg== + dependencies: + is-extglob "^2.1.1" -process-nextick-args@~1.0.6: - version "1.0.7" - resolved "https://registry.yarnpkg.com/process-nextick-args/-/process-nextick-args-1.0.7.tgz#150e20b756590ad3f91093f25a4f2ad8bff30ba3" - integrity sha1-FQ4gt1ZZCtP5EJPyWk8q2L/zC6M= +is-hex-prefixed@1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/is-hex-prefixed/-/is-hex-prefixed-1.0.0.tgz#7d8d37e6ad77e5d127148913c573e082d777f554" + integrity sha1-fY035q135dEnFIkTxXPggtd39VQ= -process-nextick-args@~2.0.0: +is-negative-zero@^2.0.1: version "2.0.1" - resolved "https://registry.yarnpkg.com/process-nextick-args/-/process-nextick-args-2.0.1.tgz#7820d9b16120cc55ca9ae7792680ae7dba6d7fe2" - integrity sha512-3ouUOpQhtgrbOa17J7+uxOTpITYWaGP7/AhoR3+A+/1e9skrzelGi/dXzEYyvbxubEF6Wn2ypscTKiKJFFn1ag== + resolved "https://registry.yarnpkg.com/is-negative-zero/-/is-negative-zero-2.0.1.tgz#3de746c18dda2319241a53675908d8f766f11c24" + integrity sha512-2z6JzQvZRa9A2Y7xC6dQQm4FSTSTNWjKIYYTt4246eMTJmIo0Q+ZyOsU66X8lxK1AbB92dFeglPLrhwpeRKO6w== -process@^0.11.10: - version "0.11.10" - resolved "https://registry.yarnpkg.com/process/-/process-0.11.10.tgz#7332300e840161bda3e69a1d1d91a7d4bc16f182" - integrity sha1-czIwDoQBYb2j5podHZGn1LwW8YI= +is-number-object@^1.0.4: + version "1.0.5" + resolved "https://registry.yarnpkg.com/is-number-object/-/is-number-object-1.0.5.tgz#6edfaeed7950cff19afedce9fbfca9ee6dd289eb" + integrity sha512-RU0lI/n95pMoUKu9v1BZP5MBcZuNSVJkMkAG2dJqC4z2GlkGUNeH68SuHuBKBD/XFe+LHZ+f9BKkLET60Niedw== -process@~0.5.1: - version "0.5.2" - resolved "https://registry.yarnpkg.com/process/-/process-0.5.2.tgz#1638d8a8e34c2f440a91db95ab9aeb677fc185cf" - integrity sha1-FjjYqONML0QKkduVq5rrZ3/Bhc8= +is-number@^7.0.0: + version "7.0.0" + resolved "https://registry.yarnpkg.com/is-number/-/is-number-7.0.0.tgz#7535345b896734d5f80c4d06c50955527a14f12b" + integrity sha512-41Cifkg6e8TylSpdtTpeLVMqvSBEVzTttHvERD741+pnZ8ANv0004MRL43QKPDlK9cGvNp6NZWZUBlbGXYxxng== -promise.allsettled@1.0.2: +is-object@^1.0.1: version "1.0.2" - resolved "https://registry.yarnpkg.com/promise.allsettled/-/promise.allsettled-1.0.2.tgz#d66f78fbb600e83e863d893e98b3d4376a9c47c9" - integrity sha512-UpcYW5S1RaNKT6pd+s9jp9K9rlQge1UXKskec0j6Mmuq7UJCvlS2J2/s/yuPN8ehftf9HXMxWlKiPbGGUzpoRg== - dependencies: - array.prototype.map "^1.0.1" - define-properties "^1.1.3" - es-abstract "^1.17.0-next.1" - function-bind "^1.1.1" - iterate-value "^1.0.0" + resolved "https://registry.yarnpkg.com/is-object/-/is-object-1.0.2.tgz#a56552e1c665c9e950b4a025461da87e72f86fcf" + integrity sha512-2rRIahhZr2UWb45fIOuvZGpFtz0TyOZLf32KxBbSoUCeZR495zCKlWUKKUByk3geS2eAs7ZAABt0Y/Rx0GiQGA== -promise@^7.1.1: - version "7.3.1" - resolved "https://registry.yarnpkg.com/promise/-/promise-7.3.1.tgz#064b72602b18f90f29192b8b1bc418ffd1ebd3bf" - integrity sha512-nolQXZ/4L+bP/UGlkfaIujX9BKxGwmQ9OT4mOt5yvy8iK1h3wqTEJCijzGANTCCl9nWjY41juyAn2K3Q1hLLTg== - dependencies: - asap "~2.0.3" +is-plain-obj@^1.1.0: + version "1.1.0" + resolved "https://registry.yarnpkg.com/is-plain-obj/-/is-plain-obj-1.1.0.tgz#71a50c8429dfca773c92a390a4a03b39fcd51d3e" + integrity sha1-caUMhCnfync8kqOQpKA7OfzVHT4= -promise@^8.0.0: - version "8.0.3" - resolved "https://registry.yarnpkg.com/promise/-/promise-8.0.3.tgz#f592e099c6cddc000d538ee7283bb190452b0bf6" - integrity sha512-HeRDUL1RJiLhyA0/grn+PTShlBAcLuh/1BJGtrvjwbvRDCTLLMEz9rOGCV+R3vHY4MixIuoMEd9Yq/XvsTPcjw== - dependencies: - asap "~2.0.6" +is-plain-obj@^2.1.0: + version "2.1.0" + resolved "https://registry.yarnpkg.com/is-plain-obj/-/is-plain-obj-2.1.0.tgz#45e42e37fccf1f40da8e5f76ee21515840c09287" + integrity sha512-YWnfyRwxL/+SsrWYfOpUtz5b3YD+nyfkHvjbcanzk8zgyO4ASD67uVMRt8k5bM4lLMDnXfriRhOpemw+NfT1eA== -prop-types@^15.7.2: - version "15.7.2" - resolved "https://registry.yarnpkg.com/prop-types/-/prop-types-15.7.2.tgz#52c41e75b8c87e72b9d9360e0206b99dcbffa6c5" - integrity sha512-8QQikdH7//R2vurIJSutZ1smHYTcLpRWEOlHnzcWHmBYrOGUysKwSsrC89BCiFj3CbrfJ/nXFdJepOVrY1GCHQ== +is-regex@^1.1.2: + version "1.1.3" + resolved "https://registry.yarnpkg.com/is-regex/-/is-regex-1.1.3.tgz#d029f9aff6448b93ebbe3f33dac71511fdcbef9f" + integrity sha512-qSVXFz28HM7y+IWX6vLCsexdlvzT1PJNFSBuaQLQ5o0IEw8UDYW6/2+eCMVyIsbM8CNLX2a/QWmSpyxYEHY7CQ== dependencies: - loose-envify "^1.4.0" - object-assign "^4.1.1" - react-is "^16.8.1" - -protobufjs@^6.10.2, protobufjs@^6.11.2: - version "6.11.2" - resolved "https://registry.yarnpkg.com/protobufjs/-/protobufjs-6.11.2.tgz#de39fabd4ed32beaa08e9bb1e30d08544c1edf8b" - integrity sha512-4BQJoPooKJl2G9j3XftkIXjoC9C0Av2NOrWmbLWT1vH32GcSUHjM0Arra6UfTsVyfMAuFzaLucXn1sadxJydAw== - dependencies: - "@protobufjs/aspromise" "^1.1.2" - "@protobufjs/base64" "^1.1.2" - "@protobufjs/codegen" "^2.0.4" - "@protobufjs/eventemitter" "^1.1.0" - "@protobufjs/fetch" "^1.1.0" - "@protobufjs/float" "^1.0.2" - "@protobufjs/inquire" "^1.1.0" - "@protobufjs/path" "^1.1.2" - "@protobufjs/pool" "^1.1.0" - "@protobufjs/utf8" "^1.1.0" - "@types/long" "^4.0.1" - "@types/node" ">=13.7.0" - long "^4.0.0" - -protocol-buffers-schema@^3.3.1: - version "3.5.2" - resolved "https://registry.yarnpkg.com/protocol-buffers-schema/-/protocol-buffers-schema-3.5.2.tgz#38ad35ba768607a5ed2375f8db4c2ecc5ea293c8" - integrity sha512-LPzSaBYp/TcbuSlpGwqT5jR9kvJ3Zp5ic2N5c2ybx6XB/lSfEHq2D7ja8AgoxHoMD91wXFALJoXsvshKPuXyew== + call-bind "^1.0.2" + has-symbols "^1.0.2" -protons@^2.0.0: - version "2.0.2" - resolved "https://registry.yarnpkg.com/protons/-/protons-2.0.2.tgz#f55ee68f6d183a7efaa80b4bee58e52444f7f1f7" - integrity sha512-EIPoT9ftVirJ9QJ3oFoueYUiBhmPqE1AoSBPypLSqbbvHvx+OcUeK9z84YIsk6jda+N3FL58dU1LcWmfGCZGHA== - dependencies: - protocol-buffers-schema "^3.3.1" - signed-varint "^2.0.1" - uint8arrays "^2.1.3" - varint "^5.0.0" +is-retry-allowed@^1.0.0: + version "1.2.0" + resolved "https://registry.yarnpkg.com/is-retry-allowed/-/is-retry-allowed-1.2.0.tgz#d778488bd0a4666a3be8a1482b9f2baafedea8b4" + integrity sha512-RUbUeKwvm3XG2VYamhJL1xFktgjvPzL0Hq8C+6yrWIswDy3BIXGqCxhxkc30N9jqK311gVU137K8Ei55/zVJRg== -proxy-addr@~2.0.5: - version "2.0.5" - resolved "https://registry.yarnpkg.com/proxy-addr/-/proxy-addr-2.0.5.tgz#34cbd64a2d81f4b1fd21e76f9f06c8a45299ee34" - integrity sha512-t/7RxHXPH6cJtP0pRG6smSr9QJidhB+3kXu0KgXnbGYMgzEnUxRQ4/LDdfOwZEMyIh3/xHb8PX3t+lfL9z+YVQ== - dependencies: - forwarded "~0.1.2" - ipaddr.js "1.9.0" +is-stream@^1.0.0, is-stream@^1.1.0: + version "1.1.0" + resolved "https://registry.yarnpkg.com/is-stream/-/is-stream-1.1.0.tgz#12d4a3dd4e68e0b79ceb8dbc84173ae80d91ca44" + integrity sha1-EtSj3U5o4Lec6428hBc66A2RykQ= -prr@~1.0.1: - version "1.0.1" - resolved "https://registry.yarnpkg.com/prr/-/prr-1.0.1.tgz#d3fc114ba06995a45ec6893f484ceb1d78f5f476" - integrity sha1-0/wRS6BplaRexok/SEzrHXj19HY= +is-string@^1.0.5: + version "1.0.6" + resolved "https://registry.yarnpkg.com/is-string/-/is-string-1.0.6.tgz#3fe5d5992fb0d93404f32584d4b0179a71b54a5f" + integrity sha512-2gdzbKUuqtQ3lYNrUTQYoClPhm7oQu4UdpSZMp1/DGgkHBT8E2Z1l0yMdb6D4zNAxwDiMv8MdulKROJGNl0Q0w== -pseudomap@^1.0.2: - version "1.0.2" - resolved "https://registry.yarnpkg.com/pseudomap/-/pseudomap-1.0.2.tgz#f052a28da70e618917ef0a8ac34c1ae5a68286b3" - integrity sha1-8FKijacOYYkX7wqKw0wa5aaChrM= +is-symbol@^1.0.2, is-symbol@^1.0.3: + version "1.0.4" + resolved "https://registry.yarnpkg.com/is-symbol/-/is-symbol-1.0.4.tgz#a6dac93b635b063ca6872236de88910a57af139c" + integrity sha512-C/CPBqKWnvdcxqIARxyOh4v1UUEOCHpgDa0WYgpKDFMszcrPcffg5uhwSgPCLD2WWxmq6isisz87tzT01tuGhg== + dependencies: + has-symbols "^1.0.2" -psl@^1.1.28: - version "1.7.0" - resolved "https://registry.yarnpkg.com/psl/-/psl-1.7.0.tgz#f1c4c47a8ef97167dea5d6bbf4816d736e884a3c" - integrity sha512-5NsSEDv8zY70ScRnOTn7bK7eanl2MvFrOrS/R6x+dBt5g1ghnj9Zv90kO8GwT8gxcu2ANyFprnFYB85IogIJOQ== +is-typed-array@^1.1.3: + version "1.1.5" + resolved "https://registry.yarnpkg.com/is-typed-array/-/is-typed-array-1.1.5.tgz#f32e6e096455e329eb7b423862456aa213f0eb4e" + integrity sha512-S+GRDgJlR3PyEbsX/Fobd9cqpZBuvUS+8asRqYDMLCb2qMzt1oz5m5oxQCxOgUDxiWsOVNi4yaF+/uvdlHlYug== + dependencies: + available-typed-arrays "^1.0.2" + call-bind "^1.0.2" + es-abstract "^1.18.0-next.2" + foreach "^2.0.5" + has-symbols "^1.0.1" -psl@^1.1.33: - version "1.8.0" - resolved "https://registry.yarnpkg.com/psl/-/psl-1.8.0.tgz#9326f8bcfb013adcc005fdff056acce020e51c24" - integrity sha512-RIdOzyoavK+hA18OGGWDqUTsCLhtA7IcZ/6NCs4fFJaHBDab+pDDmDIByWFRQJq2Cd7r1OoQxBGKOaztq+hjIQ== +is-typedarray@^1.0.0, is-typedarray@~1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/is-typedarray/-/is-typedarray-1.0.0.tgz#e479c80858df0c1b11ddda6940f96011fcda4a9a" + integrity sha1-5HnICFjfDBsR3dppQPlgEfzaSpo= -public-encrypt@^4.0.0: - version "4.0.3" - resolved "https://registry.yarnpkg.com/public-encrypt/-/public-encrypt-4.0.3.tgz#4fcc9d77a07e48ba7527e7cbe0de33d0701331e0" - integrity sha512-zVpa8oKZSz5bTMTFClc1fQOnyyEzpl5ozpi1B5YcvBrdohMjH2rfsBtyXcuNuwjsDIXmBYlF2N5FlJYhR29t8Q== - dependencies: - bn.js "^4.1.0" - browserify-rsa "^4.0.0" - create-hash "^1.1.0" - parse-asn1 "^5.0.0" - randombytes "^2.0.1" - safe-buffer "^5.1.2" +is-unicode-supported@^0.1.0: + version "0.1.0" + resolved "https://registry.yarnpkg.com/is-unicode-supported/-/is-unicode-supported-0.1.0.tgz#3f26c76a809593b52bfa2ecb5710ed2779b522a7" + integrity sha512-knxG2q4UC3u8stRGyAVJCOdxFmv5DZiRcdlIaAQXAbSfJya+OhopNotLQrstBhququ4ZpuKbDc/8S6mgXgPFPw== -pump@^3.0.0: - version "3.0.0" - resolved "https://registry.yarnpkg.com/pump/-/pump-3.0.0.tgz#b4a2116815bde2f4e1ea602354e8c75565107a64" - integrity sha512-LwZy+p3SFs1Pytd/jYct4wpv49HiYCqd9Rlc5ZVdk0V+8Yzv6jR5Blk3TRmPL1ft69TxP0IMZGJ+WPFU2BFhww== +is-wsl@^2.1.1: + version "2.2.0" + resolved "https://registry.yarnpkg.com/is-wsl/-/is-wsl-2.2.0.tgz#74a4c76e77ca9fd3f932f290c17ea326cd157271" + integrity sha512-fKzAra0rGJUUBwGBgNkHZuToZcn+TtXHpeCgmkMJMMYx1sQDYaCSyjJBSCa2nH1DGm7s3n1oBnohoVTBaN7Lww== dependencies: - end-of-stream "^1.1.0" - once "^1.3.1" - -punycode@1.3.2: - version "1.3.2" - resolved "https://registry.yarnpkg.com/punycode/-/punycode-1.3.2.tgz#9653a036fb7c1ee42342f2325cceefea3926c48d" - integrity sha1-llOgNvt8HuQjQvIyXM7v6jkmxI0= + is-docker "^2.0.0" -punycode@2.1.0: - version "2.1.0" - resolved "https://registry.yarnpkg.com/punycode/-/punycode-2.1.0.tgz#5f863edc89b96db09074bad7947bf09056ca4e7d" - integrity sha1-X4Y+3Im5bbCQdLrXlHvwkFbKTn0= +isarray@~1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/isarray/-/isarray-1.0.0.tgz#bb935d48582cba168c06834957a54a3e07124f11" + integrity sha1-u5NdSFgsuhaMBoNJV6VKPgcSTxE= -punycode@^1.2.4: - version "1.4.1" - resolved "https://registry.yarnpkg.com/punycode/-/punycode-1.4.1.tgz#c0d5a63b2718800ad8e1eb0fa5269c84dd41845e" - integrity sha1-wNWmOycYgArY4esPpSachN1BhF4= +isexe@^2.0.0: + version "2.0.0" + resolved "https://registry.yarnpkg.com/isexe/-/isexe-2.0.0.tgz#e8fbf374dc556ff8947a10dcb0572d633f2cfa10" + integrity sha1-6PvzdNxVb/iUehDcsFctYz8s+hA= -punycode@^2.1.0, punycode@^2.1.1: - version "2.1.1" - resolved "https://registry.yarnpkg.com/punycode/-/punycode-2.1.1.tgz#b58b010ac40c22c5657616c8d2c2c02c7bf479ec" - integrity sha512-XRsRjdf+j5ml+y/6GKHPZbrF/8p2Yga0JPtdqTIY2Xe5ohJPD9saDJJLPvp9+NSBprVvevdXZybnj2cv8OEd0A== +isstream@~0.1.2: + version "0.1.2" + resolved "https://registry.yarnpkg.com/isstream/-/isstream-0.1.2.tgz#47e63f7af55afa6f92e1500e690eb8b8529c099a" + integrity sha1-R+Y/evVa+m+S4VAOaQ64uFKcCZo= -pure-rand@^4.1.1: - version "4.1.2" - resolved "https://registry.yarnpkg.com/pure-rand/-/pure-rand-4.1.2.tgz#cbad2a3e3ea6df0a8d80d8ba204779b5679a5205" - integrity sha512-uLzZpQWfroIqyFWmX/pl0OL2JHJdoU3dbh0dvZ25fChHFJJi56J5oQZhW6QgbT2Llwh1upki84LnTwlZvsungA== +isurl@^1.0.0-alpha5: + version "1.0.0" + resolved "https://registry.yarnpkg.com/isurl/-/isurl-1.0.0.tgz#b27f4f49f3cdaa3ea44a0a5b7f3462e6edc39d67" + integrity sha512-1P/yWsxPlDtn7QeRD+ULKQPaIaN6yF368GZ2vDfv0AL0NwpStafjWCDDdn0k8wgFMWpVAqG7oJhxHnlud42i9w== + dependencies: + has-to-string-tag-x "^1.2.0" + is-object "^1.0.1" -qs@6.7.0: - version "6.7.0" - resolved "https://registry.yarnpkg.com/qs/-/qs-6.7.0.tgz#41dc1a015e3d581f1621776be31afb2876a9b1bc" - integrity sha512-VCdBRNFTX1fyE7Nb6FYoURo/SPe62QCaAyzJvUjwRaIsc+NePBEniHlvxFmmX56+HZphIGtV0XeCirBtpDrTyQ== +js-sha3@0.5.7, js-sha3@^0.5.7: + version "0.5.7" + resolved "https://registry.yarnpkg.com/js-sha3/-/js-sha3-0.5.7.tgz#0d4ffd8002d5333aabaf4a23eed2f6374c9f28e7" + integrity sha1-DU/9gALVMzqrr0oj7tL2N0yfKOc= -qs@^6.4.0: - version "6.9.1" - resolved "https://registry.yarnpkg.com/qs/-/qs-6.9.1.tgz#20082c65cb78223635ab1a9eaca8875a29bf8ec9" - integrity sha512-Cxm7/SS/y/Z3MHWSxXb8lIFqgqBowP5JMlTUFyJN88y0SGQhVmZnqFK/PeuMX9LzUyWsqqhNxIyg0jlzq946yA== +js-sha3@0.8.0, js-sha3@^0.8.0: + version "0.8.0" + resolved "https://registry.yarnpkg.com/js-sha3/-/js-sha3-0.8.0.tgz#b9b7a5da73afad7dedd0f8c463954cbde6818840" + integrity sha512-gF1cRrHhIzNfToc802P800N8PpXS+evLLXfsVpowqmAFR9uwbi89WvXg2QspOmXL8QL86J4T1EpFu+yUkwJY3Q== -qs@~6.5.2: - version "6.5.2" - resolved "https://registry.yarnpkg.com/qs/-/qs-6.5.2.tgz#cb3ae806e8740444584ef154ce8ee98d403f3e36" - integrity sha512-N5ZAX4/LxJmF+7wN74pUD6qAh9/wnvdQcjq9TZjevvXzSUo7bfmw91saqMjzGS2xq91/odN2dW/WOl7qQHNDGA== +js-tokens@^4.0.0: + version "4.0.0" + resolved "https://registry.yarnpkg.com/js-tokens/-/js-tokens-4.0.0.tgz#19203fb59991df98e3a287050d4647cdeaf32499" + integrity sha512-RdJUflcE3cUzKiMqQgsCu06FPu9UdIJO0beYbPhHN4k6apgJtifcoCtT9bcxOpYBtpD2kCM6Sbzg4CausW/PKQ== -query-string@^5.0.1: - version "5.1.1" - resolved "https://registry.yarnpkg.com/query-string/-/query-string-5.1.1.tgz#a78c012b71c17e05f2e3fa2319dd330682efb3cb" - integrity sha512-gjWOsm2SoGlgLEdAGt7a6slVOk9mGiXmPFMqrEhLQ68rhQuBnpfs3+EmlvqKyxnCo9/PPlF+9MtY02S1aFg+Jw== +js-yaml@3.13.1: + version "3.13.1" + resolved "https://registry.yarnpkg.com/js-yaml/-/js-yaml-3.13.1.tgz#aff151b30bfdfa8e49e05da22e7415e9dfa37847" + integrity sha512-YfbcO7jXDdyj0DGxYVSlSeQNHbD7XPWvrVWeVUujrQEoZzWJIRrCPoyk6kL6IAjAG2IolMK4T0hNUe0HOUs5Jw== dependencies: - decode-uri-component "^0.2.0" - object-assign "^4.1.0" - strict-uri-encode "^1.0.0" + argparse "^1.0.7" + esprima "^4.0.0" -querystring-es3@^0.2.0: - version "0.2.1" - resolved "https://registry.yarnpkg.com/querystring-es3/-/querystring-es3-0.2.1.tgz#9ec61f79049875707d69414596fd907a4d711e73" - integrity sha1-nsYfeQSYdXB9aUFFlv2Qek1xHnM= +js-yaml@3.x, js-yaml@^3.12.0, js-yaml@^3.13.0, js-yaml@^3.13.1: + version "3.14.1" + resolved "https://registry.yarnpkg.com/js-yaml/-/js-yaml-3.14.1.tgz#dae812fdb3825fa306609a8717383c50c36a0537" + integrity sha512-okMH7OXXJ7YrN9Ok3/SXrnu4iX9yOk+25nqX4imS2npuvTYDmo/QEZoqwZkYaIDk3jVvBOTOIEgEhaLOynBS9g== + dependencies: + argparse "^1.0.7" + esprima "^4.0.0" -querystring@0.2.0: - version "0.2.0" - resolved "https://registry.yarnpkg.com/querystring/-/querystring-0.2.0.tgz#b209849203bb25df820da756e747005878521620" - integrity sha1-sgmEkgO7Jd+CDadW50cAWHhSFiA= +js-yaml@4.1.0: + version "4.1.0" + resolved "https://registry.yarnpkg.com/js-yaml/-/js-yaml-4.1.0.tgz#c1fb65f8f5017901cdd2c951864ba18458a10602" + integrity sha512-wpxZs9NoxZaJESJGIZTyDEaYpl0FKSA+FB9aJiyemKhMwkxQg63h4T1KJgUGHpTqPDNRcmmYLugrRjJlBtWvRA== + dependencies: + argparse "^2.0.1" -querystring@^0.2.0, querystring@^0.2.1: - version "0.2.1" - resolved "https://registry.yarnpkg.com/querystring/-/querystring-0.2.1.tgz#40d77615bb09d16902a85c3e38aa8b5ed761c2dd" - integrity sha512-wkvS7mL/JMugcup3/rMitHmd9ecIGd2lhFhK9N3UUQ450h66d1r3Y9nvXzQAW1Lq+wyx61k/1pfKS5KuKiyEbg== +jsbn@~0.1.0: + version "0.1.1" + resolved "https://registry.yarnpkg.com/jsbn/-/jsbn-0.1.1.tgz#a5e654c2e5a2deb5f201d96cefbca80c0ef2f513" + integrity sha1-peZUwuWi3rXyAdls77yoDA7y9RM= -querystringify@^2.0.0: - version "2.1.1" - resolved "https://registry.yarnpkg.com/querystringify/-/querystringify-2.1.1.tgz#60e5a5fd64a7f8bfa4d2ab2ed6fdf4c85bad154e" - integrity sha512-w7fLxIRCRT7U8Qu53jQnJyPkYZIaR4n5151KMfcJlO/A9397Wxb1amJvROTK6TOnp7PfoAmg/qXiNHI+08jRfA== +json-buffer@3.0.0: + version "3.0.0" + resolved "https://registry.yarnpkg.com/json-buffer/-/json-buffer-3.0.0.tgz#5b1f397afc75d677bde8bcfc0e47e1f9a3d9a898" + integrity sha1-Wx85evx11ne96Lz8Dkfh+aPZqJg= -querystringify@^2.1.1: - version "2.2.0" - resolved "https://registry.yarnpkg.com/querystringify/-/querystringify-2.2.0.tgz#3345941b4153cb9d082d8eee4cda2016a9aef7f6" - integrity sha512-FIqgj2EUvTa7R50u0rGsyTftzjYmv/a3hO345bZNrqabNqjtgiDMgmo4mkUjd+nzU5oF3dClKqFIPUKybUyqoQ== +json-parse-better-errors@^1.0.1: + version "1.0.2" + resolved "https://registry.yarnpkg.com/json-parse-better-errors/-/json-parse-better-errors-1.0.2.tgz#bb867cfb3450e69107c131d1c514bab3dc8bcaa9" + integrity sha512-mrqyZKfX5EhL7hvqcV6WG1yYjnjeuYDzDhhcAAUrq8Po85NBQBJP+ZDUT75qZQ98IkUoBqdkExkukOU7Ts2wrw== -randomatic@^3.0.0: - version "3.1.1" - resolved "https://registry.yarnpkg.com/randomatic/-/randomatic-3.1.1.tgz#b776efc59375984e36c537b2f51a1f0aff0da1ed" - integrity sha512-TuDE5KxZ0J461RVjrJZCJc+J+zCkTb1MbH9AQUq68sMhOMcy9jLcb3BrZKgp9q9Ncltdg4QVqWrH02W2EFFVYw== - dependencies: - is-number "^4.0.0" - kind-of "^6.0.0" - math-random "^1.0.1" +json-schema-traverse@^0.4.1: + version "0.4.1" + resolved "https://registry.yarnpkg.com/json-schema-traverse/-/json-schema-traverse-0.4.1.tgz#69f6a87d9513ab8bb8fe63bdb0979c448e684660" + integrity sha512-xbbCH5dCYU5T8LcEhhuh7HJ88HXuW3qsI3Y0zOZFKfZEHcpWiHU/Jxzk629Brsab/mMiHQti9wMP+845RPe3Vg== -randombytes@^2.0.0, randombytes@^2.0.1, randombytes@^2.0.5, randombytes@^2.1.0: - version "2.1.0" - resolved "https://registry.yarnpkg.com/randombytes/-/randombytes-2.1.0.tgz#df6f84372f0270dc65cdf6291349ab7a473d4f2a" - integrity sha512-vYl3iOX+4CKUWuxGi9Ukhie6fsqXqS9FE2Zaic4tNFD2N2QQaXOMFbuKK4QmDHC0JO6B1Zp41J0LpT0oR68amQ== - dependencies: - safe-buffer "^5.1.0" +json-schema-traverse@^1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/json-schema-traverse/-/json-schema-traverse-1.0.0.tgz#ae7bcb3656ab77a73ba5c49bf654f38e6b6860e2" + integrity sha512-NM8/P9n3XjXhIZn1lLhkFaACTOURQXjWhV4BA/RnOv8xvgqtqpAX9IO4mRQxSx1Rlo4tqzeqb0sOlruaOy3dug== -randomfill@^1.0.3: - version "1.0.4" - resolved "https://registry.yarnpkg.com/randomfill/-/randomfill-1.0.4.tgz#c92196fc86ab42be983f1bf31778224931d61458" - integrity sha512-87lcbR8+MhcWcUiQ+9e+Rwx8MyR2P7qnt15ynUlbm3TU/fjbgz4GsvfSUDTemtCCtVCqb4ZcEFlyPNTh9bBTLw== - dependencies: - randombytes "^2.0.5" - safe-buffer "^5.1.0" +json-schema@0.2.3: + version "0.2.3" + resolved "https://registry.yarnpkg.com/json-schema/-/json-schema-0.2.3.tgz#b480c892e59a2f05954ce727bd3f2a4e882f9e13" + integrity sha1-tIDIkuWaLwWVTOcnvT8qTogvnhM= -randomhex@0.1.5: - version "0.1.5" - resolved "https://registry.yarnpkg.com/randomhex/-/randomhex-0.1.5.tgz#baceef982329091400f2a2912c6cd02f1094f585" - integrity sha1-us7vmCMpCRQA8qKRLGzQLxCU9YU= +json-stable-stringify-without-jsonify@^1.0.1: + version "1.0.1" + resolved "https://registry.yarnpkg.com/json-stable-stringify-without-jsonify/-/json-stable-stringify-without-jsonify-1.0.1.tgz#9db7b59496ad3f3cfef30a75142d2d930ad72651" + integrity sha1-nbe1lJatPzz+8wp1FC0tkwrXJlE= -range-parser@~1.2.1: - version "1.2.1" - resolved "https://registry.yarnpkg.com/range-parser/-/range-parser-1.2.1.tgz#3cf37023d199e1c24d1a55b84800c2f3e6468031" - integrity sha512-Hrgsx+orqoygnmhFbKaHE6c296J+HTAQXoxEF6gNupROmmGJRoyzfG3ccAveqCBrwr/2yxQ5BVd/GTl5agOwSg== +json-stringify-safe@~5.0.1: + version "5.0.1" + resolved "https://registry.yarnpkg.com/json-stringify-safe/-/json-stringify-safe-5.0.1.tgz#1296a2d58fd45f19a0f6ce01d65701e2c735b6eb" + integrity sha1-Epai1Y/UXxmg9s4B1lcB4sc1tus= -raw-body@2.4.0: +jsonfile@^2.1.0: version "2.4.0" - resolved "https://registry.yarnpkg.com/raw-body/-/raw-body-2.4.0.tgz#a1ce6fb9c9bc356ca52e89256ab59059e13d0332" - integrity sha512-4Oz8DUIwdvoa5qMJelxipzi/iJIi40O5cGV1wNYp5hvZP8ZN0T+jiNkL0QepXs+EsQ9XJ8ipEDoiH70ySUJP3Q== - dependencies: - bytes "3.1.0" - http-errors "1.7.2" - iconv-lite "0.4.24" - unpipe "1.0.0" - -rc@^1.2.7: - version "1.2.8" - resolved "https://registry.yarnpkg.com/rc/-/rc-1.2.8.tgz#cd924bf5200a075b83c188cd6b9e211b7fc0d3ed" - integrity sha512-y3bGgqKj3QBdxLbLkomlohkvsA8gdAiUQlSBJnBhfn+BPxg4bc62d8TcBW15wavDfgexCgccckhcZvywyQYPOw== - dependencies: - deep-extend "^0.6.0" - ini "~1.3.0" - minimist "^1.2.0" - strip-json-comments "~2.0.1" + resolved "https://registry.yarnpkg.com/jsonfile/-/jsonfile-2.4.0.tgz#3736a2b428b87bbda0cc83b53fa3d633a35c2ae8" + integrity sha1-NzaitCi4e72gzIO1P6PWM6NcKug= + optionalDependencies: + graceful-fs "^4.1.6" -react-is@^16.7.0, react-is@^16.8.1: - version "16.13.1" - resolved "https://registry.yarnpkg.com/react-is/-/react-is-16.13.1.tgz#789729a4dc36de2999dc156dd6c1d9c18cea56a4" - integrity sha512-24e6ynE2H+OKt4kqsOvNd8kBpV65zoxbA4BVsEOB3ARVWQki/DHzaUoC5KuON/BiccDaCCTZBuOcfZs70kR8bQ== +jsonfile@^4.0.0: + version "4.0.0" + resolved "https://registry.yarnpkg.com/jsonfile/-/jsonfile-4.0.0.tgz#8771aae0799b64076b76640fca058f9c10e33ecb" + integrity sha1-h3Gq4HmbZAdrdmQPygWPnBDjPss= + optionalDependencies: + graceful-fs "^4.1.6" -read-pkg-up@^1.0.1: - version "1.0.1" - resolved "https://registry.yarnpkg.com/read-pkg-up/-/read-pkg-up-1.0.1.tgz#9d63c13276c065918d57f002a57f40a1b643fb02" - integrity sha1-nWPBMnbAZZGNV/ACpX9AobZD+wI= +jsonfile@^6.0.1: + version "6.1.0" + resolved "https://registry.yarnpkg.com/jsonfile/-/jsonfile-6.1.0.tgz#bc55b2634793c679ec6403094eb13698a6ec0aae" + integrity sha512-5dgndWOriYSm5cnYaJNhalLNDKOqFwyDB/rr1E9ZsGciGvKPs8R2xYGCacuf3z6K1YKDz182fd+fY3cn3pMqXQ== dependencies: - find-up "^1.0.0" - read-pkg "^1.0.0" + universalify "^2.0.0" + optionalDependencies: + graceful-fs "^4.1.6" -read-pkg-up@^2.0.0: - version "2.0.0" - resolved "https://registry.yarnpkg.com/read-pkg-up/-/read-pkg-up-2.0.0.tgz#6b72a8048984e0c41e79510fd5e9fa99b3b549be" - integrity sha1-a3KoBImE4MQeeVEP1en6mbO1Sb4= +jsonschema@^1.2.4: + version "1.4.0" + resolved "https://registry.yarnpkg.com/jsonschema/-/jsonschema-1.4.0.tgz#1afa34c4bc22190d8e42271ec17ac8b3404f87b2" + integrity sha512-/YgW6pRMr6M7C+4o8kS+B/2myEpHCrxO4PEWnqJNBFMjn7EWXqlQ4tGwL6xTHeRplwuZmcAncdvfOad1nT2yMw== + +jsprim@^1.2.2: + version "1.4.1" + resolved "https://registry.yarnpkg.com/jsprim/-/jsprim-1.4.1.tgz#313e66bc1e5cc06e438bc1b7499c2e5c56acb6a2" + integrity sha1-MT5mvB5cwG5Di8G3SZwuXFastqI= dependencies: - find-up "^2.0.0" - read-pkg "^2.0.0" + assert-plus "1.0.0" + extsprintf "1.3.0" + json-schema "0.2.3" + verror "1.10.0" -read-pkg@^1.0.0: - version "1.1.0" - resolved "https://registry.yarnpkg.com/read-pkg/-/read-pkg-1.1.0.tgz#f5ffaa5ecd29cb31c0474bca7d756b6bb29e3f28" - integrity sha1-9f+qXs0pyzHAR0vKfXVra7KePyg= +keccak@^2.0.0: + version "2.1.0" + resolved "https://registry.yarnpkg.com/keccak/-/keccak-2.1.0.tgz#734ea53f2edcfd0f42cdb8d5f4c358fef052752b" + integrity sha512-m1wbJRTo+gWbctZWay9i26v5fFnYkOn7D5PCxJ3fZUGUEb49dE1Pm4BREUYCt/aoO6di7jeoGmhvqN9Nzylm3Q== dependencies: - load-json-file "^1.0.0" - normalize-package-data "^2.3.2" - path-type "^1.0.0" + bindings "^1.5.0" + inherits "^2.0.4" + nan "^2.14.0" + safe-buffer "^5.2.0" -read-pkg@^2.0.0: - version "2.0.0" - resolved "https://registry.yarnpkg.com/read-pkg/-/read-pkg-2.0.0.tgz#8ef1c0623c6a6db0dc6713c4bfac46332b2368f8" - integrity sha1-jvHAYjxqbbDcZxPEv6xGMysjaPg= +keccak@^3.0.0: + version "3.0.1" + resolved "https://registry.yarnpkg.com/keccak/-/keccak-3.0.1.tgz#ae30a0e94dbe43414f741375cff6d64c8bea0bff" + integrity sha512-epq90L9jlFWCW7+pQa6JOnKn2Xgl2mtI664seYR6MHskvI9agt7AnDqmAlp9TqU4/caMYbA08Hi5DMZAl5zdkA== dependencies: - load-json-file "^2.0.0" - normalize-package-data "^2.3.2" - path-type "^2.0.0" + node-addon-api "^2.0.0" + node-gyp-build "^4.2.0" -readable-stream@1.0.33: - version "1.0.33" - resolved "https://registry.yarnpkg.com/readable-stream/-/readable-stream-1.0.33.tgz#3a360dd66c1b1d7fd4705389860eda1d0f61126c" - integrity sha1-OjYN1mwbHX/UcFOJhg7aHQ9hEmw= +keyv@^3.0.0: + version "3.1.0" + resolved "https://registry.yarnpkg.com/keyv/-/keyv-3.1.0.tgz#ecc228486f69991e49e9476485a5be1e8fc5c4d9" + integrity sha512-9ykJ/46SN/9KPM/sichzQ7OvXyGDYKGTaDlKMGCAlg2UK8KRy4jb0d8sFc+0Tt0YYnThq8X2RZgCg74RPxgcVA== dependencies: - core-util-is "~1.0.0" - inherits "~2.0.1" - isarray "0.0.1" - string_decoder "~0.10.x" + json-buffer "3.0.0" -readable-stream@1.1: - version "1.1.13" - resolved "https://registry.yarnpkg.com/readable-stream/-/readable-stream-1.1.13.tgz#f6eef764f514c89e2b9e23146a75ba106756d23e" - integrity sha1-9u73ZPUUyJ4rniMUanW6EGdW0j4= - dependencies: - core-util-is "~1.0.0" - inherits "~2.0.1" - isarray "0.0.1" - string_decoder "~0.10.x" +kind-of@^6.0.2: + version "6.0.3" + resolved "https://registry.yarnpkg.com/kind-of/-/kind-of-6.0.3.tgz#07c05034a6c349fa06e24fa35aa76db4580ce4dd" + integrity sha512-dcS1ul+9tmeD95T+x28/ehLgd9mENa3LsvDTtzm3vyBEO7RPptvAD+t44WVXaUjTBRcrpFeFlC8WCruUR456hw== -readable-stream@1.1.14: - version "1.1.14" - resolved "https://registry.yarnpkg.com/readable-stream/-/readable-stream-1.1.14.tgz#7cf4c54ef648e3813084c636dd2079e166c081d9" - integrity sha1-fPTFTvZI44EwhMY23SB54WbAgdk= +klaw-sync@^6.0.0: + version "6.0.0" + resolved "https://registry.yarnpkg.com/klaw-sync/-/klaw-sync-6.0.0.tgz#1fd2cfd56ebb6250181114f0a581167099c2b28c" + integrity sha512-nIeuVSzdCCs6TDPTqI8w1Yre34sSq7AkZ4B3sfOBbI2CgVSB4Du4aLQijFU2+lhAFCwt9+42Hel6lQNIv6AntQ== dependencies: - core-util-is "~1.0.0" - inherits "~2.0.1" - isarray "0.0.1" - string_decoder "~0.10.x" + graceful-fs "^4.1.11" -"readable-stream@2 || 3", readable-stream@^3.1.1, readable-stream@^3.4.0, readable-stream@^3.6.0: - version "3.6.0" - resolved "https://registry.yarnpkg.com/readable-stream/-/readable-stream-3.6.0.tgz#337bbda3adc0706bd3e024426a286d4b4b2c9198" - integrity sha512-BViHy7LKeTz4oNnkcLJ+lVSL6vpiFeX6/d3oSH8zCW7UxP2onchk+vTGB143xuFjHS3deTgkKoXXymXqymiIdA== - dependencies: - inherits "^2.0.3" - string_decoder "^1.1.1" - util-deprecate "^1.0.1" +klaw@^1.0.0: + version "1.3.1" + resolved "https://registry.yarnpkg.com/klaw/-/klaw-1.3.1.tgz#4088433b46b3b1ba259d78785d8e96f73ba02439" + integrity sha1-QIhDO0azsbolnXh4XY6W9zugJDk= + optionalDependencies: + graceful-fs "^4.1.9" -"readable-stream@>=1.0.33-1 <1.1.0-0": - version "1.0.34" - resolved "https://registry.yarnpkg.com/readable-stream/-/readable-stream-1.0.34.tgz#125820e34bc842d2f2aaafafe4c2916ee32c157c" - integrity sha1-Elgg40vIQtLyqq+v5MKRbuMsFXw= +lcid@^2.0.0: + version "2.0.0" + resolved "https://registry.yarnpkg.com/lcid/-/lcid-2.0.0.tgz#6ef5d2df60e52f82eb228a4c373e8d1f397253cf" + integrity sha512-avPEb8P8EGnwXKClwsNUgryVjllcRqtMYa49NTsbQagYuT1DcXnl1915oxWjoyGrXR6zH/Y0Zc96xWsPcoDKeA== dependencies: - core-util-is "~1.0.0" - inherits "~2.0.1" - isarray "0.0.1" - string_decoder "~0.10.x" + invert-kv "^2.0.0" -readable-stream@^2.0.0, readable-stream@^2.0.1, readable-stream@^2.0.2, readable-stream@^2.0.4, readable-stream@^2.0.5, readable-stream@^2.0.6, readable-stream@^2.2.2, readable-stream@^2.3.0, readable-stream@^2.3.3, readable-stream@^2.3.5, readable-stream@^2.3.6, readable-stream@~2.3.6: - version "2.3.7" - resolved "https://registry.yarnpkg.com/readable-stream/-/readable-stream-2.3.7.tgz#1eca1cf711aef814c04f62252a36a62f6cb23b57" - integrity sha512-Ebho8K4jIbHAxnuxi7o42OrZgF/ZTNcsZj6nRKyUmkhLFq8CHItp/fy6hQZuZmP/n3yZ9VBUbp4zz/mX8hmYPw== +level-codec@^9.0.0: + version "9.0.2" + resolved "https://registry.yarnpkg.com/level-codec/-/level-codec-9.0.2.tgz#fd60df8c64786a80d44e63423096ffead63d8cbc" + integrity sha512-UyIwNb1lJBChJnGfjmO0OR+ezh2iVu1Kas3nvBS/BzGnx79dv6g7unpKIDNPMhfdTEGoc7mC8uAu51XEtX+FHQ== 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@~0.0.2: - version "0.0.4" - resolved "https://registry.yarnpkg.com/readable-stream/-/readable-stream-0.0.4.tgz#f32d76e3fb863344a548d79923007173665b3b8d" - integrity sha1-8y124/uGM0SlSNeZIwBxc2ZbO40= + buffer "^5.6.0" -readable-stream@~2.0.0: - version "2.0.6" - resolved "https://registry.yarnpkg.com/readable-stream/-/readable-stream-2.0.6.tgz#8f90341e68a53ccc928788dacfcd11b36eb9b78e" - integrity sha1-j5A0HmilPMySh4jaz80Rs265t44= - dependencies: - core-util-is "~1.0.0" - inherits "~2.0.1" - isarray "~1.0.0" - process-nextick-args "~1.0.6" - string_decoder "~0.10.x" - util-deprecate "~1.0.1" +level-concat-iterator@~2.0.0: + version "2.0.1" + resolved "https://registry.yarnpkg.com/level-concat-iterator/-/level-concat-iterator-2.0.1.tgz#1d1009cf108340252cb38c51f9727311193e6263" + integrity sha512-OTKKOqeav2QWcERMJR7IS9CUo1sHnke2C0gkSmcR7QuEtFNLLzHQAvnMw8ykvEcv0Qtkg0p7FOwP1v9e5Smdcw== -readdirp@^2.2.1: - version "2.2.1" - resolved "https://registry.yarnpkg.com/readdirp/-/readdirp-2.2.1.tgz#0e87622a3325aa33e892285caf8b4e846529a525" - integrity sha512-1JU/8q+VgFZyxwrJ+SVIOsh+KywWGpds3NTqikiKpDMZWScmAYyKIgqkO+ARvNWJfXeXR1zxz7aHF4u4CyH6vQ== +level-errors@^2.0.0, level-errors@~2.0.0: + version "2.0.1" + resolved "https://registry.yarnpkg.com/level-errors/-/level-errors-2.0.1.tgz#2132a677bf4e679ce029f517c2f17432800c05c8" + integrity sha512-UVprBJXite4gPS+3VznfgDSU8PTRuVX0NXwoWW50KLxd2yw4Y1t2JUR5In1itQnudZqRMT9DlAM3Q//9NCjCFw== dependencies: - graceful-fs "^4.1.11" - micromatch "^3.1.10" - readable-stream "^2.0.2" + errno "~0.1.1" -readdirp@~3.2.0: - version "3.2.0" - resolved "https://registry.yarnpkg.com/readdirp/-/readdirp-3.2.0.tgz#c30c33352b12c96dfb4b895421a49fd5a9593839" - integrity sha512-crk4Qu3pmXwgxdSgGhgA/eXiJAPQiX4GMOZZMXnqKxHX7TaoL+3gQVo/WeuAiogr07DpnfjIMpXXa+PAIvwPGQ== +level-iterator-stream@~4.0.0: + version "4.0.2" + resolved "https://registry.yarnpkg.com/level-iterator-stream/-/level-iterator-stream-4.0.2.tgz#7ceba69b713b0d7e22fcc0d1f128ccdc8a24f79c" + integrity sha512-ZSthfEqzGSOMWoUGhTXdX9jv26d32XJuHz/5YnuHZzH6wldfWMOVwI9TBtKcya4BKTyTt3XVA0A3cF3q5CY30Q== dependencies: - picomatch "^2.0.4" + inherits "^2.0.4" + readable-stream "^3.4.0" + xtend "^4.0.2" -readdirp@~3.4.0: - version "3.4.0" - resolved "https://registry.yarnpkg.com/readdirp/-/readdirp-3.4.0.tgz#9fdccdf9e9155805449221ac645e8303ab5b9ada" - integrity sha512-0xe001vZBnJEK+uKcj8qOhyAKPzIT+gStxWr3LCB0DwcXR5NZJ3IaC+yGnHCYzB/S7ov3m3EEbZI2zeNvX+hGQ== +level-mem@^5.0.1: + version "5.0.1" + resolved "https://registry.yarnpkg.com/level-mem/-/level-mem-5.0.1.tgz#c345126b74f5b8aa376dc77d36813a177ef8251d" + integrity sha512-qd+qUJHXsGSFoHTziptAKXoLX87QjR7v2KMbqncDXPxQuCdsQlzmyX+gwrEHhlzn08vkf8TyipYyMmiC6Gobzg== dependencies: - picomatch "^2.2.1" + level-packager "^5.0.3" + memdown "^5.0.0" -readdirp@~3.6.0: - version "3.6.0" - resolved "https://registry.yarnpkg.com/readdirp/-/readdirp-3.6.0.tgz#74a370bd857116e245b29cc97340cd431a02a6c7" - integrity sha512-hOS089on8RduqdbhvQ5Z37A0ESjsqz6qnRcffsMU3495FuTdqSm+7bhJ29JvIOsBDEEnan5DPu9t3To9VRlMzA== +level-packager@^5.0.3: + version "5.1.1" + resolved "https://registry.yarnpkg.com/level-packager/-/level-packager-5.1.1.tgz#323ec842d6babe7336f70299c14df2e329c18939" + integrity sha512-HMwMaQPlTC1IlcwT3+swhqf/NUO+ZhXVz6TY1zZIIZlIR0YSn8GtAAWmIvKjNY16ZkEg/JcpAuQskxsXqC0yOQ== dependencies: - picomatch "^2.2.1" + encoding-down "^6.3.0" + levelup "^4.3.2" -receptacle@^1.3.2: - version "1.3.2" - resolved "https://registry.yarnpkg.com/receptacle/-/receptacle-1.3.2.tgz#a7994c7efafc7a01d0e2041839dab6c4951360d2" - integrity sha512-HrsFvqZZheusncQRiEE7GatOAETrARKV/lnfYicIm8lbvp/JQOdADOfhjBd2DajvoszEyxSM6RlAAIZgEoeu/A== +level-supports@~1.0.0: + version "1.0.1" + resolved "https://registry.yarnpkg.com/level-supports/-/level-supports-1.0.1.tgz#2f530a596834c7301622521988e2c36bb77d122d" + integrity sha512-rXM7GYnW8gsl1vedTJIbzOrRv85c/2uCMpiiCzO2fndd06U/kUXEEU9evYn4zFggBOg36IsBW8LzqIpETwwQzg== dependencies: - ms "^2.1.1" + xtend "^4.0.2" -rechoir@^0.6.2: - version "0.6.2" - resolved "https://registry.yarnpkg.com/rechoir/-/rechoir-0.6.2.tgz#85204b54dba82d5742e28c96756ef43af50e3384" - integrity sha1-hSBLVNuoLVdC4oyWdW70OvUOM4Q= +level-ws@^2.0.0: + version "2.0.0" + resolved "https://registry.yarnpkg.com/level-ws/-/level-ws-2.0.0.tgz#207a07bcd0164a0ec5d62c304b4615c54436d339" + integrity sha512-1iv7VXx0G9ec1isqQZ7y5LmoZo/ewAsyDHNA8EFDW5hqH2Kqovm33nSFkSdnLLAK+I5FlT+lo5Cw9itGe+CpQA== dependencies: - resolve "^1.1.6" + inherits "^2.0.3" + readable-stream "^3.1.0" + xtend "^4.0.1" -recursive-readdir@^2.2.2: - version "2.2.2" - resolved "https://registry.yarnpkg.com/recursive-readdir/-/recursive-readdir-2.2.2.tgz#9946fb3274e1628de6e36b2f6714953b4845094f" - integrity sha512-nRCcW9Sj7NuZwa2XvH9co8NPeXUBhZP7CRKJtU+cS6PW9FpCIFoI5ib0NT1ZrbNuPoRy0ylyCaUL8Gih4LSyFg== +levelup@^4.3.2: + version "4.4.0" + resolved "https://registry.yarnpkg.com/levelup/-/levelup-4.4.0.tgz#f89da3a228c38deb49c48f88a70fb71f01cafed6" + integrity sha512-94++VFO3qN95cM/d6eBXvd894oJE0w3cInq9USsyQzzoJxmiYzPAocNcuGCPGGjoXqDVJcr3C1jzt1TSjyaiLQ== dependencies: - minimatch "3.0.4" + deferred-leveldown "~5.3.0" + level-errors "~2.0.0" + level-iterator-stream "~4.0.0" + level-supports "~1.0.0" + xtend "~4.0.0" -redux-devtools-core@^0.2.1: - version "0.2.1" - resolved "https://registry.yarnpkg.com/redux-devtools-core/-/redux-devtools-core-0.2.1.tgz#4e43cbe590a1f18c13ee165d2d42e0bc77a164d8" - integrity sha512-RAGOxtUFdr/1USAvxrWd+Gq/Euzgw7quCZlO5TgFpDfG7rB5tMhZUrNyBjpzgzL2yMk0eHnPYIGm7NkIfRzHxQ== +levn@^0.3.0, levn@~0.3.0: + version "0.3.0" + resolved "https://registry.yarnpkg.com/levn/-/levn-0.3.0.tgz#3b09924edf9f083c0490fdd4c0bc4421e04764ee" + integrity sha1-OwmSTt+fCDwEkP3UwLxEIeBHZO4= dependencies: - get-params "^0.1.2" - jsan "^3.1.13" - lodash "^4.17.11" - nanoid "^2.0.0" - remotedev-serialize "^0.1.8" + prelude-ls "~1.1.2" + type-check "~0.3.2" -redux-devtools-instrument@^1.9.4: - version "1.10.0" - resolved "https://registry.yarnpkg.com/redux-devtools-instrument/-/redux-devtools-instrument-1.10.0.tgz#036caf79fa1e5f25ec4bae38a9af4f08c69e323a" - integrity sha512-X8JRBCzX2ADSMp+iiV7YQ8uoTNyEm0VPFPd4T854coz6lvRiBrFSqAr9YAS2n8Kzxx8CJQotR0QF9wsMM+3DvA== +levn@^0.4.1: + version "0.4.1" + resolved "https://registry.yarnpkg.com/levn/-/levn-0.4.1.tgz#ae4562c007473b932a6200d403268dd2fffc6ade" + integrity sha512-+bT2uH4E5LGE7h/n3evcS/sQlJXCpIp6ym8OWJ5eV6+67Dsql/LaaT7qJBAt2rzfoa/5QBGBhxDix1dMt2kQKQ== dependencies: - lodash "^4.17.19" - symbol-observable "^1.2.0" + prelude-ls "^1.2.1" + type-check "~0.4.0" -redux-saga@1.0.0: - version "1.0.0" - resolved "https://registry.yarnpkg.com/redux-saga/-/redux-saga-1.0.0.tgz#acb8b3ed9180fecbe75f342011d75af3ac11045b" - integrity sha512-GvJWs/SzMvEQgeaw6sRMXnS2FghlvEGsHiEtTLpJqc/FHF3I5EE/B+Hq5lyHZ8LSoT2r/X/46uWvkdCnK9WgHA== +locate-path@^2.0.0: + version "2.0.0" + resolved "https://registry.yarnpkg.com/locate-path/-/locate-path-2.0.0.tgz#2b568b265eec944c6d9c0de9c3dbbbca0354cd8e" + integrity sha1-K1aLJl7slExtnA3pw9u7ygNUzY4= dependencies: - "@redux-saga/core" "^1.0.0" + p-locate "^2.0.0" + path-exists "^3.0.0" -redux@^3.7.2: - version "3.7.2" - resolved "https://registry.yarnpkg.com/redux/-/redux-3.7.2.tgz#06b73123215901d25d065be342eb026bc1c8537b" - integrity sha512-pNqnf9q1hI5HHZRBkj3bAngGZW/JMCmexDlOxw4XagXY2o1327nHH54LoTjiPJ0gizoqPDRqWyX/00g0hD6w+A== +locate-path@^3.0.0: + version "3.0.0" + resolved "https://registry.yarnpkg.com/locate-path/-/locate-path-3.0.0.tgz#dbec3b3ab759758071b58fe59fc41871af21400e" + integrity sha512-7AO748wWnIhNqAuaty2ZWHkQHRSNfPVIsPIfwEOWO22AmaoVrWavlOcMR5nzTLNYvp36X220/maaRsrec1G65A== dependencies: - lodash "^4.2.1" - lodash-es "^4.2.1" - loose-envify "^1.1.0" - symbol-observable "^1.0.3" + p-locate "^3.0.0" + path-exists "^3.0.0" -redux@^4.0.4: - version "4.0.5" - resolved "https://registry.yarnpkg.com/redux/-/redux-4.0.5.tgz#4db5de5816e17891de8a80c424232d06f051d93f" - integrity sha512-VSz1uMAH24DM6MF72vcojpYPtrTUu3ByVWfPL1nPfVRb5mZVTve5GnNCUV53QM/BZ66xfWrm0CTWoM+Xlz8V1w== +locate-path@^6.0.0: + version "6.0.0" + resolved "https://registry.yarnpkg.com/locate-path/-/locate-path-6.0.0.tgz#55321eb309febbc59c4801d931a72452a681d286" + integrity sha512-iPZK6eYjbxRu3uB4/WZ3EsEIMJFMqAoopl3R+zuq0UjcAm/MO6KCweDgPfP3elTztoKP3KtnVHxTn2NHBSDVUw== dependencies: - loose-envify "^1.4.0" - symbol-observable "^1.2.0" - -regenerator-runtime@^0.11.0: - version "0.11.1" - resolved "https://registry.yarnpkg.com/regenerator-runtime/-/regenerator-runtime-0.11.1.tgz#be05ad7f9bf7d22e056f9726cee5017fbf19e2e9" - integrity sha512-MguG95oij0fC3QV3URf4V2SDYGJhJnJGqvIIgdECeODCT98wSWDAJ94SSuVpYQUoTcGUIL6L4yNB7j1DFFHSBg== - -regenerator-runtime@^0.13.2: - version "0.13.3" - resolved "https://registry.yarnpkg.com/regenerator-runtime/-/regenerator-runtime-0.13.3.tgz#7cf6a77d8f5c6f60eb73c5fc1955b2ceb01e6bf5" - integrity sha512-naKIZz2GQ8JWh///G7L3X6LaQUAMp2lvb1rvwwsURe/VXwD6VMfr+/1NuNw3ag8v2kY1aQ/go5SNn79O9JU7yw== + p-locate "^5.0.0" -regenerator-runtime@^0.13.4: - version "0.13.7" - resolved "https://registry.yarnpkg.com/regenerator-runtime/-/regenerator-runtime-0.13.7.tgz#cac2dacc8a1ea675feaabaeb8ae833898ae46f55" - integrity sha512-a54FxoJDIr27pgf7IgeQGxmqUNYrcV338lf/6gH456HZ/PhX+5BcwHXG9ajESmwe6WRO0tAzRUrRmNONWgkrew== +lodash.clonedeep@^4.5.0: + version "4.5.0" + resolved "https://registry.yarnpkg.com/lodash.clonedeep/-/lodash.clonedeep-4.5.0.tgz#e23f3f9c4f8fbdde872529c1071857a086e5ccef" + integrity sha1-4j8/nE+Pvd6HJSnBBxhXoIblzO8= -regex-cache@^0.4.2: - version "0.4.4" - resolved "https://registry.yarnpkg.com/regex-cache/-/regex-cache-0.4.4.tgz#75bdc58a2a1496cec48a12835bc54c8d562336dd" - integrity sha512-nVIZwtCjkC9YgvWkpM55B5rBhBYRZhAaJbgcFYXXsHnbZ9UZI9nnVWYZpBlCqv9ho2eZryPnWrZGsOdPwVWXWQ== - dependencies: - is-equal-shallow "^0.1.3" +lodash.merge@^4.6.2: + version "4.6.2" + resolved "https://registry.yarnpkg.com/lodash.merge/-/lodash.merge-4.6.2.tgz#558aa53b43b661e1925a0afdfa36a9a1085fe57a" + integrity sha512-0KpjqXRVvrYyCsX1swR/XTK0va6VQkQM6MNo7PqW77ByjAhoARA8EfrP1N4+KlKj8YS0ZUCtRT/YUuhyYDujIQ== -regex-not@^1.0.0, regex-not@^1.0.2: - version "1.0.2" - resolved "https://registry.yarnpkg.com/regex-not/-/regex-not-1.0.2.tgz#1f4ece27e00b0b65e0247a6810e6a85d83a5752c" - integrity sha512-J6SDjUgDxQj5NusnOtdFxDwN/+HWykR8GELwctJ7mdqhcyy1xEc4SRFHUXvxTp661YaVKAjfRLZ9cCqS6tn32A== - dependencies: - extend-shallow "^3.0.2" - safe-regex "^1.1.0" - -relay-compiler@10.1.0: - version "10.1.0" - resolved "https://registry.yarnpkg.com/relay-compiler/-/relay-compiler-10.1.0.tgz#fb4672cdbe9b54869a3a79759edd8c2d91609cbe" - integrity sha512-HPqc3N3tNgEgUH5+lTr5lnLbgnsZMt+MRiyS0uAVNhuPY2It0X1ZJG+9qdA3L9IqKFUNwVn6zTO7RArjMZbARQ== - dependencies: - "@babel/core" "^7.0.0" - "@babel/generator" "^7.5.0" - "@babel/parser" "^7.0.0" - "@babel/runtime" "^7.0.0" - "@babel/traverse" "^7.0.0" - "@babel/types" "^7.0.0" - babel-preset-fbjs "^3.3.0" - chalk "^4.0.0" - fb-watchman "^2.0.0" - fbjs "^3.0.0" - glob "^7.1.1" - immutable "~3.7.6" - nullthrows "^1.1.1" - relay-runtime "10.1.0" - signedsource "^1.0.0" - yargs "^15.3.1" - -relay-runtime@10.1.0: - version "10.1.0" - resolved "https://registry.yarnpkg.com/relay-runtime/-/relay-runtime-10.1.0.tgz#4753bf36e95e8d862cef33608e3d98b4ed730d16" - integrity sha512-bxznLnQ1ST6APN/cFi7l0FpjbZVchWQjjhj9mAuJBuUqNNCh9uV+UTRhpQF7Q8ycsPp19LHTpVyGhYb0ustuRQ== - dependencies: - "@babel/runtime" "^7.0.0" - fbjs "^3.0.0" - -remote-redux-devtools@^0.5.12: - version "0.5.16" - resolved "https://registry.yarnpkg.com/remote-redux-devtools/-/remote-redux-devtools-0.5.16.tgz#95b1a4a1988147ca04f3368f3573b661748b3717" - integrity sha512-xZ2D1VRIWzat5nsvcraT6fKEX9Cfi+HbQBCwzNnUAM8Uicm/anOc60XGalcaDPrVmLug7nhDl2nimEa3bL3K9w== - dependencies: - jsan "^3.1.13" - querystring "^0.2.0" - redux-devtools-core "^0.2.1" - redux-devtools-instrument "^1.9.4" - rn-host-detect "^1.1.5" - socketcluster-client "^14.2.1" - -remotedev-serialize@^0.1.8: - version "0.1.9" - resolved "https://registry.yarnpkg.com/remotedev-serialize/-/remotedev-serialize-0.1.9.tgz#5e67e05cbca75d408d769d057dc59d0f56cd2c43" - integrity sha512-5tFdZg9mSaAWTv6xmQ7HtHjKMLSFQFExEZOtJe10PLsv1wb7cy7kYHtBvTYRro27/3fRGEcQBRNKSaixOpb69w== - dependencies: - jsan "^3.1.13" - -remove-trailing-separator@^1.0.1: - version "1.1.0" - resolved "https://registry.yarnpkg.com/remove-trailing-separator/-/remove-trailing-separator-1.1.0.tgz#c24bce2a283adad5bc3f58e0d48249b92379d8ef" - integrity sha1-wkvOKig62tW8P1jg1IJJuSN52O8= +lodash.toarray@^4.4.0: + version "4.4.0" + resolved "https://registry.yarnpkg.com/lodash.toarray/-/lodash.toarray-4.4.0.tgz#24c4bfcd6b2fba38bfd0594db1179d8e9b656561" + integrity sha1-JMS/zWsvuji/0FlNsRedjptlZWE= -repeat-element@^1.1.2: - version "1.1.3" - resolved "https://registry.yarnpkg.com/repeat-element/-/repeat-element-1.1.3.tgz#782e0d825c0c5a3bb39731f84efee6b742e6b1ce" - integrity sha512-ahGq0ZnV5m5XtZLMb+vP76kcAM5nkLqk0lpqAuojSKGgQtn4eRi4ZZGm2olo2zKFH+sMsWaqOCW1dqAnOru72g== +lodash.truncate@^4.4.2: + version "4.4.2" + resolved "https://registry.yarnpkg.com/lodash.truncate/-/lodash.truncate-4.4.2.tgz#5a350da0b1113b837ecfffd5812cbe58d6eae193" + integrity sha1-WjUNoLERO4N+z//VgSy+WNbq4ZM= -repeat-string@^1.5.2, repeat-string@^1.6.1: - version "1.6.1" - resolved "https://registry.yarnpkg.com/repeat-string/-/repeat-string-1.6.1.tgz#8dcae470e1c88abc2d600fff4a776286da75e637" - integrity sha1-jcrkcOHIirwtYA//Sndihtp15jc= +lodash@^4.17.11, lodash@^4.17.12, lodash@^4.17.14, lodash@^4.17.15, lodash@^4.17.19: + version "4.17.21" + resolved "https://registry.yarnpkg.com/lodash/-/lodash-4.17.21.tgz#679591c564c3bffaae8454cf0b3df370c3d6911c" + integrity sha512-v2kDEe57lecTulaDIuNTPy3Ry4gLGJ6Z1O3vE1krgXZNrsQ+LFTGHVxVjcXPs17LhbZVGedAJv8XZ1tvj5FvSg== -repeating@^2.0.0: - version "2.0.1" - resolved "https://registry.yarnpkg.com/repeating/-/repeating-2.0.1.tgz#5214c53a926d3552707527fbab415dbc08d06dda" - integrity sha1-UhTFOpJtNVJwdSf7q0FdvAjQbdo= +log-symbols@3.0.0: + version "3.0.0" + resolved "https://registry.yarnpkg.com/log-symbols/-/log-symbols-3.0.0.tgz#f3a08516a5dea893336a7dee14d18a1cfdab77c4" + integrity sha512-dSkNGuI7iG3mfvDzUuYZyvk5dD9ocYCYzNU6CYDE6+Xqd+gwme6Z00NS3dUh8mq/73HaEtT7m6W+yUPtU6BZnQ== dependencies: - is-finite "^1.0.0" - -replace-ext@0.0.1: - version "0.0.1" - resolved "https://registry.yarnpkg.com/replace-ext/-/replace-ext-0.0.1.tgz#29bbd92078a739f0bcce2b4ee41e837953522924" - integrity sha1-KbvZIHinOfC8zitO5B6DeVNSKSQ= + chalk "^2.4.2" -req-cwd@^2.0.0: - version "2.0.0" - resolved "https://registry.yarnpkg.com/req-cwd/-/req-cwd-2.0.0.tgz#d4082b4d44598036640fb73ddea01ed53db49ebc" - integrity sha1-1AgrTURZgDZkD7c93qAe1T20nrw= +log-symbols@4.1.0: + version "4.1.0" + resolved "https://registry.yarnpkg.com/log-symbols/-/log-symbols-4.1.0.tgz#3fbdbb95b4683ac9fc785111e792e558d4abd503" + integrity sha512-8XPvpAA8uyhfteu8pIvQxpJZ7SYYdpUivZpGy6sFsBuKRY/7rQGavedeB8aK+Zkyq6upMFVL/9AW6vOYzfRyLg== dependencies: - req-from "^2.0.0" + chalk "^4.1.0" + is-unicode-supported "^0.1.0" -req-from@^2.0.0: +lowercase-keys@^1.0.0, lowercase-keys@^1.0.1: + version "1.0.1" + resolved "https://registry.yarnpkg.com/lowercase-keys/-/lowercase-keys-1.0.1.tgz#6f9e30b47084d971a7c820ff15a6c5167b74c26f" + integrity sha512-G2Lj61tXDnVFFOi8VZds+SoQjtQC3dgokKdDG2mTm1tx4m50NUHBOZSBwQQHyy0V12A0JTG4icfZQH+xPyh8VA== + +lowercase-keys@^2.0.0: version "2.0.0" - resolved "https://registry.yarnpkg.com/req-from/-/req-from-2.0.0.tgz#d74188e47f93796f4aa71df6ee35ae689f3e0e70" - integrity sha1-10GI5H+TeW9Kpx327jWuaJ8+DnA= - dependencies: - resolve-from "^3.0.0" + resolved "https://registry.yarnpkg.com/lowercase-keys/-/lowercase-keys-2.0.0.tgz#2603e78b7b4b0006cbca2fbcc8a3202558ac9479" + integrity sha512-tqNXrS78oMOE73NMxK4EMLQsQowWf8jKooH9g7xPavRT706R6bkQJ6DY2Te7QukaZsulxa30wQ7bk0pm4XiHmA== -request-promise-core@1.1.3: - version "1.1.3" - resolved "https://registry.yarnpkg.com/request-promise-core/-/request-promise-core-1.1.3.tgz#e9a3c081b51380dfea677336061fea879a829ee9" - integrity sha512-QIs2+ArIGQVp5ZYbWD5ZLCY29D5CfWizP8eWnm8FoGD1TX61veauETVQbrV60662V0oFBkrDOuaBI8XgtuyYAQ== +lru-cache@^5.1.1: + version "5.1.1" + resolved "https://registry.yarnpkg.com/lru-cache/-/lru-cache-5.1.1.tgz#1da27e6710271947695daf6848e847f01d84b920" + integrity sha512-KpNARQA3Iwv+jTA0utUVVbrh+Jlrr1Fv0e56GGzAFOXN7dk/FviaDW8LHmK52DlcH4WP2n6gI8vN1aesBFgo9w== dependencies: - lodash "^4.17.15" + yallist "^3.0.2" -request-promise-native@^1.0.5: - version "1.0.8" - resolved "https://registry.yarnpkg.com/request-promise-native/-/request-promise-native-1.0.8.tgz#a455b960b826e44e2bf8999af64dff2bfe58cb36" - integrity sha512-dapwLGqkHtwL5AEbfenuzjTYg35Jd6KPytsC2/TLkVMz8rm+tNt72MGUWT1RP/aYawMpN6HqbNGBQaRcBtjQMQ== +lru-cache@^6.0.0: + version "6.0.0" + resolved "https://registry.yarnpkg.com/lru-cache/-/lru-cache-6.0.0.tgz#6d6fe6570ebd96aaf90fcad1dafa3b2566db3a94" + integrity sha512-Jo6dJ04CmSjuznwJSS3pUeWmd/H0ffTlkXXgwZi+eq1UCmqQwCh+eLsYOYCwY991i2Fah4h1BEMCx4qThGbsiA== dependencies: - request-promise-core "1.1.3" - stealthy-require "^1.1.1" - tough-cookie "^2.3.3" + yallist "^4.0.0" -request@^2.55.0, request@^2.79.0, request@^2.85.0, request@^2.88.0, request@^2.88.2: - version "2.88.2" - resolved "https://registry.yarnpkg.com/request/-/request-2.88.2.tgz#d73c918731cb5a87da047e207234146f664d12b3" - integrity sha512-MsvtOrfG9ZcrOwAW+Qi+F6HbD0CWXEh9ou77uOb7FM2WPhwT7smM833PzanhJLsgXjN89Ir6V2PczXNnMpwKhw== - dependencies: - aws-sign2 "~0.7.0" - aws4 "^1.8.0" - caseless "~0.12.0" - combined-stream "~1.0.6" - extend "~3.0.2" - forever-agent "~0.6.1" - form-data "~2.3.2" - har-validator "~5.1.3" - http-signature "~1.2.0" - is-typedarray "~1.0.0" - isstream "~0.1.2" - json-stringify-safe "~5.0.1" - mime-types "~2.1.19" - oauth-sign "~0.9.0" - performance-now "^2.1.0" - qs "~6.5.2" - safe-buffer "^5.1.2" - tough-cookie "~2.5.0" - tunnel-agent "^0.6.0" - uuid "^3.3.2" +lru_map@^0.3.3: + version "0.3.3" + resolved "https://registry.yarnpkg.com/lru_map/-/lru_map-0.3.3.tgz#b5c8351b9464cbd750335a79650a0ec0e56118dd" + integrity sha1-tcg1G5Rky9dQM1p5ZQoOwOVhGN0= -require-directory@^2.1.1: - version "2.1.1" - resolved "https://registry.yarnpkg.com/require-directory/-/require-directory-2.1.1.tgz#8c64ad5fd30dab1c976e2344ffe7f792a6a6df42" - integrity sha1-jGStX9MNqxyXbiNE/+f3kqam30I= +ltgt@~2.2.0: + version "2.2.1" + resolved "https://registry.yarnpkg.com/ltgt/-/ltgt-2.2.1.tgz#f35ca91c493f7b73da0e07495304f17b31f87ee5" + integrity sha1-81ypHEk/e3PaDgdJUwTxezH4fuU= -require-from-string@^2.0.0: - version "2.0.2" - resolved "https://registry.yarnpkg.com/require-from-string/-/require-from-string-2.0.2.tgz#89a7fdd938261267318eafe14f9c32e598c36909" - integrity sha512-Xf0nWe6RseziFMu+Ap9biiUbmplq6S9/p+7w7YXP/JBHhrUDDUhwa+vANyubuqfZWTveU//DYVGsDG7RKL/vEw== +make-error@^1.1.1: + version "1.3.6" + resolved "https://registry.yarnpkg.com/make-error/-/make-error-1.3.6.tgz#2eb2e37ea9b67c4891f684a1394799af484cf7a2" + integrity sha512-s8UhlNe7vPKomQhC1qFelMokr/Sc3AgNbso3n74mVPA5LTZwkB9NlXf4XPamLxJE8h0gh73rM94xvwRT2CVInw== -require-main-filename@^1.0.1: - version "1.0.1" - resolved "https://registry.yarnpkg.com/require-main-filename/-/require-main-filename-1.0.1.tgz#97f717b69d48784f5f526a6c5aa8ffdda055a4d1" - integrity sha1-l/cXtp1IeE9fUmpsWqj/3aBVpNE= +map-age-cleaner@^0.1.1: + version "0.1.3" + resolved "https://registry.yarnpkg.com/map-age-cleaner/-/map-age-cleaner-0.1.3.tgz#7d583a7306434c055fe474b0f45078e6e1b4b92a" + integrity sha512-bJzx6nMoP6PDLPBFmg7+xRKeFZvFboMrGlxmNj9ClvX53KrmvM5bXFXEWjbz4cz1AFn+jWJ9z/DJSz7hrs0w3w== + dependencies: + p-defer "^1.0.0" -require-main-filename@^2.0.0: - version "2.0.0" - resolved "https://registry.yarnpkg.com/require-main-filename/-/require-main-filename-2.0.0.tgz#d0b329ecc7cc0f61649f62215be69af54aa8989b" - integrity sha512-NKN5kMDylKuldxYLSUfrbo5Tuzh4hd+2E8NPPX02mZtn1VuREQToYe/ZdlJy+J3uCpfaiGF05e7B8W0iXbQHmg== +markdown-table@^1.1.3: + version "1.1.3" + resolved "https://registry.yarnpkg.com/markdown-table/-/markdown-table-1.1.3.tgz#9fcb69bcfdb8717bfd0398c6ec2d93036ef8de60" + integrity sha512-1RUZVgQlpJSPWYbFSpmudq5nHY1doEIv89gBtF0s4gW1GF2XorxcA/70M5vq7rLv0a6mhOUccRsqkwhwLCIQ2Q== -requires-port@^1.0.0: - version "1.0.0" - resolved "https://registry.yarnpkg.com/requires-port/-/requires-port-1.0.0.tgz#925d2601d39ac485e091cf0da5c6e694dc3dcaff" - integrity sha1-kl0mAdOaxIXgkc8NpcbmlNw9yv8= +match-all@^1.2.6: + version "1.2.6" + resolved "https://registry.yarnpkg.com/match-all/-/match-all-1.2.6.tgz#66d276ad6b49655551e63d3a6ee53e8be0566f8d" + integrity sha512-0EESkXiTkWzrQQntBu2uzKvLu6vVkUGz40nGPbSZuegcfE5UuSzNjLaIu76zJWuaT/2I3Z/8M06OlUOZLGwLlQ== -reselect-tree@^1.3.4: - version "1.3.4" - resolved "https://registry.yarnpkg.com/reselect-tree/-/reselect-tree-1.3.4.tgz#449629728e2dc79bf0602571ec8859ac34737089" - integrity sha512-1OgNq1IStyJFqIqOoD3k3Ge4SsYCMP9W88VQOfvgyLniVKLfvbYO1Vrl92SyEK5021MkoBX6tWb381VxTDyPBQ== - dependencies: - debug "^3.1.0" - esdoc "^1.0.4" - json-pointer "^0.6.0" - reselect "^4.0.0" - source-map-support "^0.5.3" +mcl-wasm@^0.7.1: + version "0.7.7" + resolved "https://registry.yarnpkg.com/mcl-wasm/-/mcl-wasm-0.7.7.tgz#fd463dd1641a37f9f55b6ca8e5a38e95be2bc58f" + integrity sha512-jDGiCQA++5hX37gdH6RDZ3ZsA0raet7xyY/R5itj5cbcdf4Gvw+YyxWX/ZZ0Z2UPxJiw1ktRsCJZzpnqlQILdw== -reselect@^4.0.0: - version "4.0.0" - resolved "https://registry.yarnpkg.com/reselect/-/reselect-4.0.0.tgz#f2529830e5d3d0e021408b246a206ef4ea4437f7" - integrity sha512-qUgANli03jjAyGlnbYVAV5vvnOmJnODyABz51RdBN7M4WaVu8mecZWgyQNkG8Yqe3KRGRt0l4K4B3XVEULC4CA== +md5.js@^1.3.4: + version "1.3.5" + resolved "https://registry.yarnpkg.com/md5.js/-/md5.js-1.3.5.tgz#b5d07b8e3216e3e27cd728d72f70d1e6a342005f" + integrity sha512-xitP+WxNPcTTOgnTJcrhM0xvdPepipPSf3I8EIpGKeFLjt3PlJLIDG3u8EX53ZIubkb+5U2+3rELYpEhHhzdkg== + dependencies: + hash-base "^3.0.0" + inherits "^2.0.1" + safe-buffer "^5.1.2" -reset@^0.1.0: - version "0.1.0" - resolved "https://registry.yarnpkg.com/reset/-/reset-0.1.0.tgz#9fc7314171995ae6cb0b7e58b06ce7522af4bafb" - integrity sha1-n8cxQXGZWubLC35YsGznUir0uvs= +media-typer@0.3.0: + version "0.3.0" + resolved "https://registry.yarnpkg.com/media-typer/-/media-typer-0.3.0.tgz#8710d7af0aa626f8fffa1ce00168545263255748" + integrity sha1-hxDXrwqmJvj/+hzgAWhUUmMlV0g= -resolve-dir@^1.0.0: - version "1.0.1" - resolved "https://registry.yarnpkg.com/resolve-dir/-/resolve-dir-1.0.1.tgz#79a40644c362be82f26effe739c9bb5382046f43" - integrity sha1-eaQGRMNivoLybv/nOcm7U4IEb0M= +mem@^4.0.0: + version "4.3.0" + resolved "https://registry.yarnpkg.com/mem/-/mem-4.3.0.tgz#461af497bc4ae09608cdb2e60eefb69bff744178" + integrity sha512-qX2bG48pTqYRVmDB37rn/6PT7LcR8T7oAX3bf99u1Tt1nzxYfxkgqDwUwolPlXweM0XzBOBFzSx4kfp7KP1s/w== dependencies: - expand-tilde "^2.0.0" - global-modules "^1.0.0" + map-age-cleaner "^0.1.1" + mimic-fn "^2.0.0" + p-is-promise "^2.0.0" -resolve-from@5.0.0, resolve-from@^5.0.0: - version "5.0.0" - resolved "https://registry.yarnpkg.com/resolve-from/-/resolve-from-5.0.0.tgz#c35225843df8f776df21c57557bc087e9dfdfc69" - integrity sha512-qYg9KP24dD5qka9J47d0aVky0N+b4fTU89LN9iDnjB5waksiC49rvMB0PrUJQGoTmH50XPiqOvAjDfaijGxYZw== +memdown@^5.0.0: + version "5.1.0" + resolved "https://registry.yarnpkg.com/memdown/-/memdown-5.1.0.tgz#608e91a9f10f37f5b5fe767667a8674129a833cb" + integrity sha512-B3J+UizMRAlEArDjWHTMmadet+UKwHd3UjMgGBkZcKAxAYVPS9o0Yeiha4qvz7iGiL2Sb3igUft6p7nbFWctpw== + dependencies: + abstract-leveldown "~6.2.1" + functional-red-black-tree "~1.0.1" + immediate "~3.2.3" + inherits "~2.0.1" + ltgt "~2.2.0" + safe-buffer "~5.2.0" -resolve-from@^3.0.0: - version "3.0.0" - resolved "https://registry.yarnpkg.com/resolve-from/-/resolve-from-3.0.0.tgz#b22c7af7d9d6881bc8b6e653335eebcb0a188748" - integrity sha1-six699nWiBvItuZTM17rywoYh0g= +memorystream@^0.3.1: + version "0.3.1" + resolved "https://registry.yarnpkg.com/memorystream/-/memorystream-0.3.1.tgz#86d7090b30ce455d63fbae12dda51a47ddcaf9b2" + integrity sha1-htcJCzDORV1j+64S3aUaR93K+bI= -resolve-url@^0.2.1: - version "0.2.1" - resolved "https://registry.yarnpkg.com/resolve-url/-/resolve-url-0.2.1.tgz#2c637fe77c893afd2a663fe21aa9080068e2052a" - integrity sha1-LGN/53yJOv0qZj/iGqkIAGjiBSo= +merge-descriptors@1.0.1: + version "1.0.1" + resolved "https://registry.yarnpkg.com/merge-descriptors/-/merge-descriptors-1.0.1.tgz#b00aaa556dd8b44568150ec9d1b953f3f90cbb61" + integrity sha1-sAqqVW3YtEVoFQ7J0blT8/kMu2E= -resolve@1.1.x: - version "1.1.7" - resolved "https://registry.yarnpkg.com/resolve/-/resolve-1.1.7.tgz#203114d82ad2c5ed9e8e0411b3932875e889e97b" - integrity sha1-IDEU2CrSxe2ejgQRs5ModeiJ6Xs= +merge2@^1.2.3, merge2@^1.3.0: + version "1.4.1" + resolved "https://registry.yarnpkg.com/merge2/-/merge2-1.4.1.tgz#4368892f885e907455a6fd7dc55c0c9d404990ae" + integrity sha512-8q7VEgMJW4J8tcfVPy8g09NcQwZdbwFEqhe/WZkoIzjn/3TGDwtOCYtXGxA3O8tPzpczCCDgv+P2P5y00ZJOOg== -resolve@^1.1.6, resolve@^1.3.2: - version "1.15.1" - resolved "https://registry.yarnpkg.com/resolve/-/resolve-1.15.1.tgz#27bdcdeffeaf2d6244b95bb0f9f4b4653451f3e8" - integrity sha512-84oo6ZTtoTUpjgNEr5SJyzQhzL72gaRodsSfyxC/AXRvwu0Yse9H8eF9IpGo7b8YetZhlI6v7ZQ6bKBFV/6S7w== +merkle-patricia-tree@^4.2.0: + version "4.2.0" + resolved "https://registry.yarnpkg.com/merkle-patricia-tree/-/merkle-patricia-tree-4.2.0.tgz#a204b9041be5c25e8d14f0ff47021de090e811a1" + integrity sha512-0sBVXs7z1Q1/kxzWZ3nPnxSPiaHKF/f497UQzt9O7isRcS10tel9jM/4TivF6Jv7V1yFq4bWyoATxbDUOen5vQ== dependencies: - path-parse "^1.0.6" + "@types/levelup" "^4.3.0" + ethereumjs-util "^7.0.10" + level-mem "^5.0.1" + level-ws "^2.0.0" + readable-stream "^3.6.0" + rlp "^2.2.4" + semaphore-async-await "^1.5.1" -resolve@^1.10.0: - version "1.20.0" - resolved "https://registry.yarnpkg.com/resolve/-/resolve-1.20.0.tgz#629a013fb3f70755d6f0b7935cc1c2c5378b1975" - integrity sha512-wENBPt4ySzg4ybFQW2TT1zMQucPK95HSh/nq2CFTZVOGut2+pQvSsgtda4d26YrYcr067wjbmzOG8byDPBX63A== - dependencies: - is-core-module "^2.2.0" - path-parse "^1.0.6" +methods@~1.1.2: + version "1.1.2" + resolved "https://registry.yarnpkg.com/methods/-/methods-1.1.2.tgz#5529a4d67654134edcc5266656835b0f851afcee" + integrity sha1-VSmk1nZUE07cxSZmVoNbD4Ua/O4= -responselike@^1.0.2: - version "1.0.2" - resolved "https://registry.yarnpkg.com/responselike/-/responselike-1.0.2.tgz#918720ef3b631c5642be068f15ade5a46f4ba1e7" - integrity sha1-kYcg7ztjHFZCvgaPFa3lpG9Loec= +micromatch@^4.0.2: + version "4.0.4" + resolved "https://registry.yarnpkg.com/micromatch/-/micromatch-4.0.4.tgz#896d519dfe9db25fce94ceb7a500919bf881ebf9" + integrity sha512-pRmzw/XUcwXGpD9aI9q/0XOwLNygjETJ8y0ao0wdqprrzDa4YnxLcz7fQRZr8voh8V10kGhABbNcHVk5wHgWwg== dependencies: - lowercase-keys "^1.0.0" + braces "^3.0.1" + picomatch "^2.2.3" -restore-cursor@^2.0.0: - version "2.0.0" - resolved "https://registry.yarnpkg.com/restore-cursor/-/restore-cursor-2.0.0.tgz#9f7ee287f82fd326d4fd162923d62129eee0dfaf" - integrity sha1-n37ih/gv0ybU/RYpI9YhKe7g368= +miller-rabin@^4.0.0: + version "4.0.1" + resolved "https://registry.yarnpkg.com/miller-rabin/-/miller-rabin-4.0.1.tgz#f080351c865b0dc562a8462966daa53543c78a4d" + integrity sha512-115fLhvZVqWwHPbClyntxEVfVDfl9DLLTuJvq3g2O/Oxi8AiNouAHvDSzHS0viUJc+V5vm3eq91Xwqn9dp4jRA== dependencies: - onetime "^2.0.0" - signal-exit "^3.0.2" + bn.js "^4.0.0" + brorand "^1.0.1" -restore-cursor@^3.1.0: - version "3.1.0" - resolved "https://registry.yarnpkg.com/restore-cursor/-/restore-cursor-3.1.0.tgz#39f67c54b3a7a58cea5236d95cf0034239631f7e" - integrity sha512-l+sSefzHpj5qimhFSE5a8nufZYAM3sBSVMAPtYkmC+4EH2anSGaEMXSD0izRQbu9nfyQ9y5JrVmp7E8oZrUjvA== +mime-db@1.47.0: + version "1.47.0" + resolved "https://registry.yarnpkg.com/mime-db/-/mime-db-1.47.0.tgz#8cb313e59965d3c05cfbf898915a267af46a335c" + integrity sha512-QBmA/G2y+IfeS4oktet3qRZ+P5kPhCKRXxXnQEudYqUaEioAU1/Lq2us3D/t1Jfo4hE9REQPrbB7K5sOczJVIw== + +mime-types@^2.1.12, mime-types@^2.1.16, mime-types@~2.1.19, mime-types@~2.1.24: + version "2.1.30" + resolved "https://registry.yarnpkg.com/mime-types/-/mime-types-2.1.30.tgz#6e7be8b4c479825f85ed6326695db73f9305d62d" + integrity sha512-crmjA4bLtR8m9qLpHvgxSChT+XoSlZi8J4n/aIdn3z92e/U47Z0V/yl+Wh9W046GgFVAmoNR/fmdbZYcSSIUeg== dependencies: - onetime "^5.1.0" - signal-exit "^3.0.2" + mime-db "1.47.0" -ret@~0.1.10: - version "0.1.15" - resolved "https://registry.yarnpkg.com/ret/-/ret-0.1.15.tgz#b8a4825d5bdb1fc3f6f53c2bc33f81388681c7bc" - integrity sha512-TTlYpa+OL+vMMNG24xSlQGEJ3B/RzEfUlLct7b5G/ytav+wPrplCpVMFuwzXbkecJrb6IYo1iFb0S9v37754mg== +mime@1.6.0: + version "1.6.0" + resolved "https://registry.yarnpkg.com/mime/-/mime-1.6.0.tgz#32cd9e5c64553bd58d19a568af452acff04981b1" + integrity sha512-x0Vn8spI+wuJ1O6S7gnbaQg8Pxh4NNHb7KSINmEWKiPE4RKOplvijn+NkmYmmRgP68mc70j2EbeTFRsrswaQeg== -retimer@^2.0.0: - version "2.0.0" - resolved "https://registry.yarnpkg.com/retimer/-/retimer-2.0.0.tgz#e8bd68c5e5a8ec2f49ccb5c636db84c04063bbca" - integrity sha512-KLXY85WkEq2V2bKex/LOO1ViXVn2KGYe4PYysAdYdjmraYIUsVkXu8O4am+8+5UbaaGl1qho4aqAAPHNQ4GSbg== +mimic-fn@^1.0.0: + version "1.2.0" + resolved "https://registry.yarnpkg.com/mimic-fn/-/mimic-fn-1.2.0.tgz#820c86a39334640e99516928bd03fca88057d022" + integrity sha512-jf84uxzwiuiIVKiOLpfYk7N46TSy8ubTonmneY9vrpHNAnp0QBt2BxWV9dO3/j+BoVAb+a5G6YDPW3M5HOdMWQ== -retry@0.12.0: - version "0.12.0" - resolved "https://registry.yarnpkg.com/retry/-/retry-0.12.0.tgz#1b42a6266a21f07421d1b0b54b7dc167b01c013b" - integrity sha1-G0KmJmoh8HQh0bC1S33BZ7AcATs= +mimic-fn@^2.0.0: + version "2.1.0" + resolved "https://registry.yarnpkg.com/mimic-fn/-/mimic-fn-2.1.0.tgz#7ed2c2ccccaf84d3ffcb7a69b57711fc2083401b" + integrity sha512-OqbOk5oEQeAZ8WXWydlu9HJjz9WVdEIvamMCcXmuqUYjTknH/sqsWvhQ3vgwKFRR1HpjvNBKQ37nbJgYzGqGcg== -reusify@^1.0.4: - version "1.0.4" - resolved "https://registry.yarnpkg.com/reusify/-/reusify-1.0.4.tgz#90da382b1e126efc02146e90845a88db12925d76" - integrity sha512-U9nH88a3fc/ekCF1l0/UP1IosiuIjyTh7hBvXVMHYgVcfGvt897Xguj2UOLDeI5BG2m7/uwyaLVT6fbtCwTyzw== +mimic-response@^1.0.0, mimic-response@^1.0.1: + version "1.0.1" + resolved "https://registry.yarnpkg.com/mimic-response/-/mimic-response-1.0.1.tgz#4923538878eef42063cb8a3e3b0798781487ab1b" + integrity sha512-j5EctnkH7amfV/q5Hgmoal1g2QHFJRraOtmx0JpIqkxhBhI/lJSl1nMpQ45hVarwNETOoWEimndZ4QK0RHxuxQ== -right-align@^0.1.1: - version "0.1.3" - resolved "https://registry.yarnpkg.com/right-align/-/right-align-0.1.3.tgz#61339b722fe6a3515689210d24e14c96148613ef" - integrity sha1-YTObci/mo1FWiSENJOFMlhSGE+8= +min-document@^2.19.0: + version "2.19.0" + resolved "https://registry.yarnpkg.com/min-document/-/min-document-2.19.0.tgz#7bd282e3f5842ed295bb748cdd9f1ffa2c824685" + integrity sha1-e9KC4/WELtKVu3SM3Z8f+iyCRoU= dependencies: - align-text "^0.1.1" + dom-walk "^0.1.0" -rimraf@^2.2.8, rimraf@^2.6.1, rimraf@^2.6.3: - version "2.7.1" - resolved "https://registry.yarnpkg.com/rimraf/-/rimraf-2.7.1.tgz#35797f13a7fdadc566142c29d4f07ccad483e3ec" - integrity sha512-uWjbaKIK3T1OSVptzX7Nl6PvQ3qAGtKEtVRjRuazjfL3Bx5eI409VZSqgND+4UNnmzLVdPj9FqFJNPqBZFve4w== - dependencies: - glob "^7.1.3" +minimalistic-assert@^1.0.0, minimalistic-assert@^1.0.1: + version "1.0.1" + resolved "https://registry.yarnpkg.com/minimalistic-assert/-/minimalistic-assert-1.0.1.tgz#2e194de044626d4a10e7f7fbc00ce73e83e4d5c7" + integrity sha512-UtJcAD4yEaGtjPezWuO9wC4nwUnVH/8/Im3yEHQP4b67cXlD/Qr9hdITCU1xDbSEXg2XKNaP8jsReV7vQd00/A== -ripemd160-min@0.0.6: - version "0.0.6" - resolved "https://registry.yarnpkg.com/ripemd160-min/-/ripemd160-min-0.0.6.tgz#a904b77658114474d02503e819dcc55853b67e62" - integrity sha512-+GcJgQivhs6S9qvLogusiTcS9kQUfgR75whKuy5jIhuiOfQuJ8fjqxV6EGD5duH1Y/FawFUMtMhyeq3Fbnib8A== +minimalistic-crypto-utils@^1.0.0, minimalistic-crypto-utils@^1.0.1: + version "1.0.1" + resolved "https://registry.yarnpkg.com/minimalistic-crypto-utils/-/minimalistic-crypto-utils-1.0.1.tgz#f6c00c1c0b082246e5c4d99dfb8c7c083b2b582a" + integrity sha1-9sAMHAsIIkblxNmd+4x8CDsrWCo= -ripemd160@^2.0.0, ripemd160@^2.0.1, ripemd160@^2.0.2: - version "2.0.2" - resolved "https://registry.yarnpkg.com/ripemd160/-/ripemd160-2.0.2.tgz#a1c1a6f624751577ba5d07914cbc92850585890c" - integrity sha512-ii4iagi25WusVoiC4B4lq7pbXfAp3D9v5CwfkY33vffw2+pkDjY1D8GaN7spsxvCSx8dkPqOZCEZyfxcmJG2IA== +"minimatch@2 || 3", minimatch@3.0.4, minimatch@^3.0.4: + version "3.0.4" + resolved "https://registry.yarnpkg.com/minimatch/-/minimatch-3.0.4.tgz#5166e286457f03306064be5497e8dbb0c3d32083" + integrity sha512-yJHVQEhyqPLUTgt9B83PXu6W3rx4MvvHvSUvToogpwoGDOUQ+yDrR0HRot+yOCdCO7u4hX3pWft6kWBBcqh0UA== dependencies: - hash-base "^3.0.0" - inherits "^2.0.1" + brace-expansion "^1.1.7" -rlp@^2.0.0, rlp@^2.2.3: - version "2.2.4" - resolved "https://registry.yarnpkg.com/rlp/-/rlp-2.2.4.tgz#d6b0e1659e9285fc509a5d169a9bd06f704951c1" - integrity sha512-fdq2yYCWpAQBhwkZv+Z8o/Z4sPmYm1CUq6P7n6lVTOdb949CnqA0sndXal5C1NleSVSZm6q5F3iEbauyVln/iw== - dependencies: - bn.js "^4.11.1" +minimist@^1.2.0, minimist@^1.2.5: + version "1.2.5" + resolved "https://registry.yarnpkg.com/minimist/-/minimist-1.2.5.tgz#67d66014b66a6a8aaa0c083c5fd58df4e4e97602" + integrity sha512-FM9nNUYrRBAELZQT3xeZQ7fmMOBg6nWNmJKTcgsJeaLstP/UODVpGsr5OhXhhXg6f+qtJ8uiZ+PUxkDWcgIXLw== -rlp@^2.2.4: - version "2.2.6" - resolved "https://registry.yarnpkg.com/rlp/-/rlp-2.2.6.tgz#c80ba6266ac7a483ef1e69e8e2f056656de2fb2c" - integrity sha512-HAfAmL6SDYNWPUOJNrM500x4Thn4PZsEy5pijPh40U9WfNk0z15hUYzO9xVIMAdIHdFtD8CBDHd75Td1g36Mjg== +minipass@^2.6.0, minipass@^2.8.6, minipass@^2.9.0: + version "2.9.0" + resolved "https://registry.yarnpkg.com/minipass/-/minipass-2.9.0.tgz#e713762e7d3e32fed803115cf93e04bca9fcc9a6" + integrity sha512-wxfUjg9WebH+CUDX/CdbRlh5SmfZiy/hpkxaRI16Y9W56Pa75sWgd/rvFilSgrauD9NyFymP/+JFV3KwzIsJeg== dependencies: - bn.js "^4.11.1" + safe-buffer "^5.1.2" + yallist "^3.0.0" -rn-host-detect@^1.1.5: - version "1.2.0" - resolved "https://registry.yarnpkg.com/rn-host-detect/-/rn-host-detect-1.2.0.tgz#8b0396fc05631ec60c1cb8789e5070cdb04d0da0" - integrity sha512-btNg5kzHcjZZ7t7mvvV/4wNJ9e3MPgrWivkRgWURzXL0JJ0pwWlU4zrbmdlz3HHzHOxhBhHB4D+/dbMFfu4/4A== +minizlib@^1.2.1: + version "1.3.3" + resolved "https://registry.yarnpkg.com/minizlib/-/minizlib-1.3.3.tgz#2290de96818a34c29551c8a8d301216bd65a861d" + integrity sha512-6ZYMOEnmVsdCeTJVE0W9ZD+pVnE8h9Hma/iOwwRDsdQoePpoX56/8B6z3P9VNwppJuBKNRuFDRNRqRWexT9G9Q== + dependencies: + minipass "^2.9.0" -rpc-websockets@^5.3.1: - version "5.3.1" - resolved "https://registry.yarnpkg.com/rpc-websockets/-/rpc-websockets-5.3.1.tgz#678ca24315e4fe34a5f42ac7c2744764c056eb08" - integrity sha512-rIxEl1BbXRlIA9ON7EmY/2GUM7RLMy8zrUPTiLPFiYnYOz0I3PXfCmDDrge5vt4pW4oIcAXBDvgZuJ1jlY5+VA== +mkdirp-promise@^5.0.1: + version "5.0.1" + resolved "https://registry.yarnpkg.com/mkdirp-promise/-/mkdirp-promise-5.0.1.tgz#e9b8f68e552c68a9c1713b84883f7a1dd039b8a1" + integrity sha1-6bj2jlUsaKnBcTuEiD96HdA5uKE= dependencies: - "@babel/runtime" "^7.8.7" - assert-args "^1.2.1" - babel-runtime "^6.26.0" - circular-json "^0.5.9" - eventemitter3 "^3.1.2" - uuid "^3.4.0" - ws "^5.2.2" + mkdirp "*" -run-parallel@^1.1.9: - version "1.1.9" - resolved "https://registry.yarnpkg.com/run-parallel/-/run-parallel-1.1.9.tgz#c9dd3a7cf9f4b2c4b6244e173a6ed866e61dd679" - integrity sha512-DEqnSRTDw/Tc3FXf49zedI638Z9onwUotBMiUFKmrO2sdFKIbXamXGQ3Axd4qgphxKB4kw/qP1w5kTxnfU1B9Q== +mkdirp@*, mkdirp@^1.0.4: + version "1.0.4" + resolved "https://registry.yarnpkg.com/mkdirp/-/mkdirp-1.0.4.tgz#3eb5ed62622756d79a5f0e2a221dfebad75c2f7e" + integrity sha512-vVqVZQyf3WLx2Shd0qJ9xuvqgAyKPLAiqITEtqW0oIUjzo3PePDd6fW9iFz30ef7Ysp/oiWqbhszeGWW2T6Gzw== -run@^1.4.0: - version "1.4.0" - resolved "https://registry.yarnpkg.com/run/-/run-1.4.0.tgz#e17d9e9043ab2fe17776cb299e1237f38f0b4ffa" - integrity sha1-4X2ekEOrL+F3dsspnhI3848LT/o= +mkdirp@0.5.5, mkdirp@0.5.x, mkdirp@^0.5.0, mkdirp@^0.5.1: + version "0.5.5" + resolved "https://registry.yarnpkg.com/mkdirp/-/mkdirp-0.5.5.tgz#d91cefd62d1436ca0f41620e251288d420099def" + integrity sha512-NKmAlESf6jMGym1++R0Ra7wvhV+wFW63FaSOFPwRahvea0gMUcGUhVeAg/0BC0wiv9ih5NYPB1Wn1UEI1/L+xQ== dependencies: - minimatch "*" + minimist "^1.2.5" -rxjs@6: - version "6.6.7" - resolved "https://registry.yarnpkg.com/rxjs/-/rxjs-6.6.7.tgz#90ac018acabf491bf65044235d5863c4dab804c9" - integrity sha512-hTdwr+7yYNIT5n4AMYp85KA6yw2Va0FLa3Rguvbpa4W3I5xynaBZo41cM3XM+4Q6fRMj3sBYIR1VAmZMXYJvRQ== +mnemonist@^0.38.0: + version "0.38.3" + resolved "https://registry.yarnpkg.com/mnemonist/-/mnemonist-0.38.3.tgz#35ec79c1c1f4357cfda2fe264659c2775ccd7d9d" + integrity sha512-2K9QYubXx/NAjv4VLq1d1Ly8pWNC5L3BrixtdkyTegXWJIqY+zLNDhhX/A+ZwWt70tB1S8H4BE8FLYEFyNoOBw== dependencies: - tslib "^1.9.0" + obliterator "^1.6.1" -rxjs@^6.4.0: - version "6.5.4" - resolved "https://registry.yarnpkg.com/rxjs/-/rxjs-6.5.4.tgz#e0777fe0d184cec7872df147f303572d414e211c" - integrity sha512-naMQXcgEo3csAEGvw/NydRA0fuS2nDZJiw1YUWFKU7aPPAPGZEsD4Iimit96qwCieH6y614MCLYwdkrWx7z/7Q== +mocha@^7.1.1, mocha@^7.1.2: + version "7.2.0" + resolved "https://registry.yarnpkg.com/mocha/-/mocha-7.2.0.tgz#01cc227b00d875ab1eed03a75106689cfed5a604" + integrity sha512-O9CIypScywTVpNaRrCAgoUnJgozpIofjKUYmJhiCIJMiuYnLI6otcb1/kpW9/n/tJODHGZ7i8aLQoDVsMtOKQQ== dependencies: - tslib "^1.9.0" + 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" -safe-buffer@5.1.2, safe-buffer@~5.1.0, safe-buffer@~5.1.1: - version "5.1.2" - resolved "https://registry.yarnpkg.com/safe-buffer/-/safe-buffer-5.1.2.tgz#991ec69d296e0313747d59bdfd2b745c35f8828d" - integrity sha512-Gd2UZBJDkXlY7GbJxfsE8/nvKkUEU1G38c1siN6QP6a9PT9MmHB8GnpscSmMJSoF8LOIrt8ud/wPtojys4G6+g== +mocha@^9.1.0: + version "9.1.0" + resolved "https://registry.yarnpkg.com/mocha/-/mocha-9.1.0.tgz#0a7aa6fc4f59d1015d4e11747d9104b752553c67" + integrity sha512-Kjg/XxYOFFUi0h/FwMOeb6RoroiZ+P1yOfya6NK7h3dNhahrJx1r2XIT3ge4ZQvJM86mdjNA+W5phqRQh7DwCg== + dependencies: + "@ungap/promise-all-settled" "1.1.2" + ansi-colors "4.1.1" + browser-stdout "1.3.1" + chokidar "3.5.2" + debug "4.3.1" + diff "5.0.0" + escape-string-regexp "4.0.0" + find-up "5.0.0" + glob "7.1.7" + growl "1.10.5" + he "1.2.0" + js-yaml "4.1.0" + log-symbols "4.1.0" + minimatch "3.0.4" + ms "2.1.3" + nanoid "3.1.23" + serialize-javascript "6.0.0" + strip-json-comments "3.1.1" + supports-color "8.1.1" + which "2.0.2" + wide-align "1.1.3" + workerpool "6.1.5" + yargs "16.2.0" + yargs-parser "20.2.4" + yargs-unparser "2.0.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: - version "5.2.0" - resolved "https://registry.yarnpkg.com/safe-buffer/-/safe-buffer-5.2.0.tgz#b74daec49b1148f88c64b68d49b1e815c1f2f519" - integrity sha512-fZEwUGbVl7kouZs1jCdMLdt95hdIv0ZeHg6L7qPeciMZhZ+/gdesW4wgTARkrFWEpspjEATAzUGPG8N2jJiwbg== +mock-fs@^4.1.0: + version "4.14.0" + resolved "https://registry.yarnpkg.com/mock-fs/-/mock-fs-4.14.0.tgz#ce5124d2c601421255985e6e94da80a7357b1b18" + integrity sha512-qYvlv/exQ4+svI3UOvPUpLDF0OMX5euvUH0Ny4N5QyRyhNdgAgUrVH3iUINSzEPLvx0kbo/Bp28GJKIqvE7URw== -safe-buffer@~5.2.0: - version "5.2.1" - resolved "https://registry.yarnpkg.com/safe-buffer/-/safe-buffer-5.2.1.tgz#1eaf9fa9bdb1fdd4ec75f58f9cdb4e6b7827eec6" - integrity sha512-rp3So07KcdmmKbGvgaNxQSJr7bGVSVk5S9Eq1F+ppbRo70+YeaDxkw5Dd8NPN+GD6bjnYm2VuPuCXmpuYvmCXQ== +ms@2.0.0: + version "2.0.0" + resolved "https://registry.yarnpkg.com/ms/-/ms-2.0.0.tgz#5608aeadfc00be6c2901df5f9861788de0d597c8" + integrity sha1-VgiurfwAvmwpAd9fmGF4jeDVl8g= -safe-regex@^1.1.0: - version "1.1.0" - resolved "https://registry.yarnpkg.com/safe-regex/-/safe-regex-1.1.0.tgz#40a3669f3b077d1e943d44629e157dd48023bf2e" - integrity sha1-QKNmnzsHfR6UPURinhV91IAjvy4= - dependencies: - ret "~0.1.10" +ms@2.1.1: + version "2.1.1" + resolved "https://registry.yarnpkg.com/ms/-/ms-2.1.1.tgz#30a5864eb3ebb0a66f2ebe6d727af06a09d86e0a" + integrity sha512-tgp+dl5cGk28utYktBsrFqA7HKgrhgPsg6Z/EfhWI4gl1Hwq8B/GmY/0oXZ6nF8hDVesS/FpnYaD/kOWhYQvyg== -"safer-buffer@>= 2.1.2 < 3", "safer-buffer@>= 2.1.2 < 3.0.0", safer-buffer@^2.0.2, safer-buffer@^2.1.0, safer-buffer@~2.1.0: +ms@2.1.2: version "2.1.2" - resolved "https://registry.yarnpkg.com/safer-buffer/-/safer-buffer-2.1.2.tgz#44fa161b0187b9549dd84bb91802f9bd8385cd6a" - integrity sha512-YZo3K82SD7Riyi0E1EQPojLz7kpepnSQI9IyPbHHg1XXXevb5dJI7tpyN2ADxGcQbHG7vcyRHk0cbwqcQriUtg== + resolved "https://registry.yarnpkg.com/ms/-/ms-2.1.2.tgz#d09d1f357b443f493382a8eb3ccd183872ae6009" + integrity sha512-sGkPx+VjMtmA6MX27oA4FBFELFCZZ4S4XqeGOXCv68tT+jb3vk/RyaKWP0PTKyWtmLSM0b+adUTEvbs1PEaH2w== -sax@^1.1.4, sax@^1.2.4: - version "1.2.4" - resolved "https://registry.yarnpkg.com/sax/-/sax-1.2.4.tgz#2816234e2378bddc4e5354fab5caa895df7100d9" - integrity sha512-NqVDv9TpANUjFm0N8uM5GxL36UgKi9/atZw+x7YFnQ8ckwFGKrl4xX4yWtrey3UJm5nP1kUbnYgLopqWNSRhWw== +ms@2.1.3, ms@^2.1.1: + version "2.1.3" + resolved "https://registry.yarnpkg.com/ms/-/ms-2.1.3.tgz#574c8138ce1d2b5861f0b44579dbadd60c6615b2" + integrity sha512-6FlzubTLZG3J2a/NVCAleEhjzq5oxgHyaCU9yYXvcLsvoVaHJq/s5xXI6/XXP6tz7R9xAOtHnSO/tXtF3WRTlA== -sc-channel@^1.2.0: - version "1.2.0" - resolved "https://registry.yarnpkg.com/sc-channel/-/sc-channel-1.2.0.tgz#d9209f3a91e3fa694c66b011ce55c4ad8c3087d9" - integrity sha512-M3gdq8PlKg0zWJSisWqAsMmTVxYRTpVRqw4CWAdKBgAfVKumFcTjoCV0hYu7lgUXccCtCD8Wk9VkkE+IXCxmZA== +multibase@^0.7.0: + version "0.7.0" + resolved "https://registry.yarnpkg.com/multibase/-/multibase-0.7.0.tgz#1adfc1c50abe05eefeb5091ac0c2728d6b84581b" + integrity sha512-TW8q03O0f6PNFTQDvh3xxH03c8CjGaaYrjkl9UQPG6rz53TQzzxJVCIWVjzcbN/Q5Y53Zd0IBQBMVktVgNx4Fg== dependencies: - component-emitter "1.2.1" - -sc-errors@^2.0.1: - version "2.0.1" - resolved "https://registry.yarnpkg.com/sc-errors/-/sc-errors-2.0.1.tgz#3af2d934dfd82116279a4b2c1552c1e021ddcb03" - integrity sha512-JoVhq3Ud+3Ujv2SIG7W0XtjRHsrNgl6iXuHHsh0s+Kdt5NwI6N2EGAZD4iteitdDv68ENBkpjtSvN597/wxPSQ== + base-x "^3.0.8" + buffer "^5.5.0" -sc-formatter@^3.0.1: - version "3.0.2" - resolved "https://registry.yarnpkg.com/sc-formatter/-/sc-formatter-3.0.2.tgz#9abdb14e71873ce7157714d3002477bbdb33c4e6" - integrity sha512-9PbqYBpCq+OoEeRQ3QfFIGE6qwjjBcd2j7UjgDlhnZbtSnuGgHdcRklPKYGuYFH82V/dwd+AIpu8XvA1zqTd+A== +multibase@~0.6.0: + version "0.6.1" + resolved "https://registry.yarnpkg.com/multibase/-/multibase-0.6.1.tgz#b76df6298536cc17b9f6a6db53ec88f85f8cc12b" + integrity sha512-pFfAwyTjbbQgNc3G7D48JkJxWtoJoBMaR4xQUOuB8RnCgRqaYmWNFeJTTvrJ2w51bjLq2zTby6Rqj9TQ9elSUw== + dependencies: + base-x "^3.0.8" + buffer "^5.5.0" -sc-istanbul@^0.4.5: - version "0.4.5" - resolved "https://registry.yarnpkg.com/sc-istanbul/-/sc-istanbul-0.4.5.tgz#1896066484d55336cf2cdbcc7884dc79da50dc76" - integrity sha512-7wR5EZFLsC4w0wSm9BUuCgW+OGKAU7PNlW5L0qwVPbh+Q1sfVn2fyzfMXYCm6rkNA5ipaCOt94nApcguQwF5Gg== +multicodec@^0.5.5: + version "0.5.7" + resolved "https://registry.yarnpkg.com/multicodec/-/multicodec-0.5.7.tgz#1fb3f9dd866a10a55d226e194abba2dcc1ee9ffd" + integrity sha512-PscoRxm3f+88fAtELwUnZxGDkduE2HD9Q6GHUOywQLjOGT/HAdhjLDYNZ1e7VR0s0TP0EwZ16LNUTFpoBGivOA== dependencies: - 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" + varint "^5.0.0" -scrypt-async@^2.0.1: - version "2.0.1" - resolved "https://registry.yarnpkg.com/scrypt-async/-/scrypt-async-2.0.1.tgz#4318dae48a8b7cc3b8fe05f75f4164a7d973d25d" - integrity sha512-wHR032jldwZNy7Tzrfu7RccOgGf8r5hyDMSP2uV6DpLiBUsR8JsDcx/in73o2UGVVrH5ivRFdNsFPcjtl3LErQ== +multicodec@^1.0.0: + version "1.0.4" + resolved "https://registry.yarnpkg.com/multicodec/-/multicodec-1.0.4.tgz#46ac064657c40380c28367c90304d8ed175a714f" + integrity sha512-NDd7FeS3QamVtbgfvu5h7fd1IlbaC4EQ0/pgU4zqE2vdHCmBGsUa0TiM8/TdSeG6BMPC92OOCf8F1ocE/Wkrrg== + dependencies: + buffer "^5.6.0" + varint "^5.0.0" -scrypt-js@2.0.3: - version "2.0.3" - resolved "https://registry.yarnpkg.com/scrypt-js/-/scrypt-js-2.0.3.tgz#bb0040be03043da9a012a2cea9fc9f852cfc87d4" - integrity sha1-uwBAvgMEPamgEqLOqfyfhSz8h9Q= +multihashes@^0.4.15, multihashes@~0.4.15: + version "0.4.21" + resolved "https://registry.yarnpkg.com/multihashes/-/multihashes-0.4.21.tgz#dc02d525579f334a7909ade8a122dabb58ccfcb5" + integrity sha512-uVSvmeCWf36pU2nB4/1kzYZjsXD9vofZKpgudqkceYY5g2aZZXJ5r9lxuzoRLl1OAp28XljXsEJ/X/85ZsKmKw== + dependencies: + buffer "^5.5.0" + multibase "^0.7.0" + varint "^5.0.0" -scrypt-js@2.0.4: - version "2.0.4" - resolved "https://registry.yarnpkg.com/scrypt-js/-/scrypt-js-2.0.4.tgz#32f8c5149f0797672e551c07e230f834b6af5f16" - integrity sha512-4KsaGcPnuhtCZQCxFxN3GVYIhKFPTdLd8PLC552XwbMndtD0cjRFAhDuuydXQ0h08ZfPgzqe6EKHozpuH74iDw== +murmur-128@^0.2.1: + version "0.2.1" + resolved "https://registry.yarnpkg.com/murmur-128/-/murmur-128-0.2.1.tgz#a9f6568781d2350ecb1bf80c14968cadbeaa4b4d" + integrity sha512-WseEgiRkI6aMFBbj8Cg9yBj/y+OdipwVC7zUo3W2W1JAJITwouUOtpqsmGSg67EQmwwSyod7hsVsWY5LsrfQVg== + dependencies: + encode-utf8 "^1.0.2" + fmix "^0.1.0" + imul "^1.0.0" -scrypt-js@3.0.1, scrypt-js@^3.0.0, scrypt-js@^3.0.1: - version "3.0.1" - resolved "https://registry.yarnpkg.com/scrypt-js/-/scrypt-js-3.0.1.tgz#d314a57c2aef69d1ad98a138a21fe9eafa9ee312" - integrity sha512-cdwTTnqPu0Hyvf5in5asVdZocVDTNRmR7XEcJuIzMjJeSHybHl7vpB66AzwTaIg6CLSbtjcxc8fqcySfnTkccA== +mute-stream@0.0.7: + version "0.0.7" + resolved "https://registry.yarnpkg.com/mute-stream/-/mute-stream-0.0.7.tgz#3075ce93bc21b8fab43e1bc4da7e8115ed1e7bab" + integrity sha1-MHXOk7whuPq0PhvE2n6BFe0ee6s= -"scrypt-shim@github:web3-js/scrypt-shim": - version "0.1.0" - resolved "https://codeload.github.com/web3-js/scrypt-shim/tar.gz/be5e616323a8b5e568788bf94d03c1b8410eac54" - dependencies: - scryptsy "^2.1.0" - semver "^6.3.0" +nan@^2.14.0: + version "2.14.2" + resolved "https://registry.yarnpkg.com/nan/-/nan-2.14.2.tgz#f5376400695168f4cc694ac9393d0c9585eeea19" + integrity sha512-M2ufzIiINKCuDfBSAUr1vWQ+vuVcA9kqx8JJUsbQi6yf1uGRyb7HfpdfUr5qLXf3B/t8dPvcjhKMmlfnP47EzQ== -scryptsy@2.1.0, scryptsy@^2.1.0: - version "2.1.0" - resolved "https://registry.yarnpkg.com/scryptsy/-/scryptsy-2.1.0.tgz#8d1e8d0c025b58fdd25b6fa9a0dc905ee8faa790" - integrity sha512-1CdSqHQowJBnMAFyPEBRfqag/YP9OF394FV+4YREIJX4ljD7OxvQRDayyoyyCk+senRjSkP6VnUNQmVQqB6g7w== +nano-json-stream-parser@^0.1.2: + version "0.1.2" + resolved "https://registry.yarnpkg.com/nano-json-stream-parser/-/nano-json-stream-parser-0.1.2.tgz#0cc8f6d0e2b622b479c40d499c46d64b755c6f5f" + integrity sha1-DMj20OK2IrR5xA1JnEbWS3Vcb18= -secp256k1@^3.0.1: - version "3.8.0" - resolved "https://registry.yarnpkg.com/secp256k1/-/secp256k1-3.8.0.tgz#28f59f4b01dbee9575f56a47034b7d2e3b3b352d" - 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" +nanoid@3.1.23: + version "3.1.23" + resolved "https://registry.yarnpkg.com/nanoid/-/nanoid-3.1.23.tgz#f744086ce7c2bc47ee0a8472574d5c78e4183a81" + integrity sha512-FiB0kzdP0FFVGDKlRLEQ1BgDzU87dy5NnzjeW9YZNt+/c3+q82EQDUwniSAUxp/F0gFNI1ZhKU1FqYsMuqZVnw== -secp256k1@^4.0.0, secp256k1@^4.0.1: - version "4.0.2" - resolved "https://registry.yarnpkg.com/secp256k1/-/secp256k1-4.0.2.tgz#15dd57d0f0b9fdb54ac1fa1694f40e5e9a54f4a1" - integrity sha512-UDar4sKvWAksIlfX3xIaQReADn+WFnHvbVujpcbr+9Sf/69odMwy2MUsz5CKLQgX9nsIyrjuxL2imVyoNHa3fg== - dependencies: - elliptic "^6.5.2" - node-addon-api "^2.0.0" - node-gyp-build "^4.2.0" +natural-compare@^1.4.0: + version "1.4.0" + resolved "https://registry.yarnpkg.com/natural-compare/-/natural-compare-1.4.0.tgz#4abebfeed7541f2c27acfb29bdbbd15c8d5ba4f7" + integrity sha1-Sr6/7tdUHywnrPspvbvRXI1bpPc= -seedrandom@^3.0.5: - version "3.0.5" - resolved "https://registry.yarnpkg.com/seedrandom/-/seedrandom-3.0.5.tgz#54edc85c95222525b0c7a6f6b3543d8e0b3aa0a7" - integrity sha512-8OwmbklUNzwezjGInmZ+2clQmExQPvomqjL7LFqOYqtmuxRgQYqOD3mHaU+MvZn5FLUeVxVfQjwLZW/n/JFuqg== +negotiator@0.6.2: + version "0.6.2" + resolved "https://registry.yarnpkg.com/negotiator/-/negotiator-0.6.2.tgz#feacf7ccf525a77ae9634436a64883ffeca346fb" + integrity sha512-hZXc7K2e+PgeI1eDBe/10Ard4ekbfrrqG8Ep+8Jmf4JID2bNg7NvCPOZN+kfF574pFQI7mum2AUqDidoKqcTOw== -seek-bzip@^1.0.5: - version "1.0.5" - resolved "https://registry.yarnpkg.com/seek-bzip/-/seek-bzip-1.0.5.tgz#cfe917cb3d274bcffac792758af53173eb1fabdc" - integrity sha1-z+kXyz0nS8/6x5J1ivUxc+sfq9w= - dependencies: - commander "~2.8.1" +neo-async@^2.6.0: + version "2.6.2" + resolved "https://registry.yarnpkg.com/neo-async/-/neo-async-2.6.2.tgz#b4aafb93e3aeb2d8174ca53cf163ab7d7308305f" + integrity sha512-Yd3UES5mWCSqR+qNT93S3UoYUkqAZ9lLg8a7g9rimsWmYGK8cVToA4/sF3RrshdyV3sAGMXVUmpMYOw+dLpOuw== -"semver@2 || 3 || 4 || 5", semver@^5.3.0, semver@^5.5.0, semver@^5.5.1, semver@^5.6.0, semver@^5.7.0: - version "5.7.1" - resolved "https://registry.yarnpkg.com/semver/-/semver-5.7.1.tgz#a954f931aeba508d307bbf069eff0c01c96116f7" - integrity sha512-sauaDf/PZdVgrLTNYHRtpXa1iRiKcaebiKQ1BJdpQlWH2lCvexQdX55snPFyK7QzpudqbCI0qXFfOasHdyNDGQ== +next-tick@~1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/next-tick/-/next-tick-1.0.0.tgz#ca86d1fe8828169b0120208e3dc8424b9db8342c" + integrity sha1-yobR/ogoFpsBICCOPchCS524NCw= -semver@6.2.0: - version "6.2.0" - resolved "https://registry.yarnpkg.com/semver/-/semver-6.2.0.tgz#4d813d9590aaf8a9192693d6c85b9344de5901db" - integrity sha512-jdFC1VdUGT/2Scgbimf7FSx9iJLXoqfglSF+gJeuNWVpiE37OIbc1jywR/GJyFdz3mnkz2/id0L0J/cr0izR5A== +nice-try@^1.0.4: + version "1.0.5" + resolved "https://registry.yarnpkg.com/nice-try/-/nice-try-1.0.5.tgz#a3378a7696ce7d223e88fc9b764bd7ef1089e366" + integrity sha512-1nh45deeb5olNY7eX82BkPO7SSxR5SSYJiPTrTdFUVYwAl8CKMA5N9PjTYkHiRjisVcxcQ1HXdLhx2qxxJzLNQ== -semver@^6.3.0: - version "6.3.0" - resolved "https://registry.yarnpkg.com/semver/-/semver-6.3.0.tgz#ee0a64c8af5e8ceea67687b133761e1becbd1d3d" - integrity sha512-b39TBaTSfV6yBrapU89p5fKekE2m/NwnDocOVruQFS1/veMgdzuPcnOM34M6CwxW8jH/lxEa5rBoDeUwu5HHTw== +node-addon-api@^2.0.0: + version "2.0.2" + resolved "https://registry.yarnpkg.com/node-addon-api/-/node-addon-api-2.0.2.tgz#432cfa82962ce494b132e9d72a15b29f71ff5d32" + integrity sha512-Ntyt4AIXyaLIuMHF6IOoTakB3K+RWxwtsHNRxllEoA6vPwP9o4866g6YWDLUdnucilZhmkxiHwHr11gAENw+QA== -semver@^7.3.4: - version "7.3.4" - resolved "https://registry.yarnpkg.com/semver/-/semver-7.3.4.tgz#27aaa7d2e4ca76452f98d3add093a72c943edc97" - integrity sha512-tCfb2WLjqFAtXn4KEdxIhalnRtoKFN7nAwj0B3ZXCbQloV2tq5eDbcTmT68JJD3nRJq24/XgxtQKFIpQdtvmVw== +node-emoji@^1.10.0: + version "1.10.0" + resolved "https://registry.yarnpkg.com/node-emoji/-/node-emoji-1.10.0.tgz#8886abd25d9c7bb61802a658523d1f8d2a89b2da" + integrity sha512-Yt3384If5H6BYGVHiHwTL+99OzJKHhgp82S8/dktEK73T26BazdgZ4JZh92xSVtGNJvz9UbXdNAc5hcrXV42vw== dependencies: - lru-cache "^6.0.0" + lodash.toarray "^4.4.0" -semver@^7.3.5: - version "7.3.5" - resolved "https://registry.yarnpkg.com/semver/-/semver-7.3.5.tgz#0b621c879348d8998e4b0e4be94b3f12e6018ef7" - integrity sha512-PoeGJYh8HK4BTO/a9Tf6ZG3veo/A7ZVsYrSA6J8ny9nb3B1VrpkuN+z9OE5wfE5p6H4LchYZsegiQgbJD94ZFQ== +node-environment-flags@1.0.6: + version "1.0.6" + resolved "https://registry.yarnpkg.com/node-environment-flags/-/node-environment-flags-1.0.6.tgz#a30ac13621f6f7d674260a54dede048c3982c088" + integrity sha512-5Evy2epuL+6TM0lCQGpFIj6KwiEsGh1SrHUhTbNX+sLbBtjidPZFAnVK9y5yU1+h//RitLbRHTIMyxQPtxMdHw== dependencies: - lru-cache "^6.0.0" + object.getownpropertydescriptors "^2.0.3" + semver "^5.7.0" -send@0.17.1: - version "0.17.1" - resolved "https://registry.yarnpkg.com/send/-/send-0.17.1.tgz#c1d8b059f7900f7466dd4938bdc44e11ddb376c8" - integrity sha512-BsVKsiGcQMFwT8UxypobUKyv7irCNRHk1T0G680vk88yf6LBByGcZJOTJCrTP2xVN6yI+XjPJcNuE3V4fT9sAg== - 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" +node-fetch@^2.6.0: + version "2.6.1" + resolved "https://registry.yarnpkg.com/node-fetch/-/node-fetch-2.6.1.tgz#045bd323631f76ed2e2b55573394416b639a0052" + integrity sha512-V4aYg89jEoVRxRb2fJdAg8FHvI7cEyYdVAh94HH0UIK8oJxUfkjlDQN9RbMx+bEjP7+ggMiFRprSti032Oipxw== -sentence-case@^2.1.0: - version "2.1.1" - resolved "https://registry.yarnpkg.com/sentence-case/-/sentence-case-2.1.1.tgz#1f6e2dda39c168bf92d13f86d4a918933f667ed4" - integrity sha1-H24t2jnBaL+S0T+G1KkYkz9mftQ= - dependencies: - no-case "^2.2.0" - upper-case-first "^1.1.2" +node-gyp-build@^4.2.0: + version "4.2.3" + resolved "https://registry.yarnpkg.com/node-gyp-build/-/node-gyp-build-4.2.3.tgz#ce6277f853835f718829efb47db20f3e4d9c4739" + integrity sha512-MN6ZpzmfNCRM+3t57PTJHgHyw/h4OWnZ6mR8P5j/uZtqQr46RRuDE/P+g3n0YR/AiYXeWixZZzaip77gdICfRg== -serialize-javascript@4.0.0: - version "4.0.0" - resolved "https://registry.yarnpkg.com/serialize-javascript/-/serialize-javascript-4.0.0.tgz#b525e1238489a5ecfc42afacc3fe99e666f4b1aa" - integrity sha512-GaNA54380uFefWghODBWEGisLZFj00nS5ACs6yHa9nLqlLpVLO8ChDGeKRjZnV4Nh4n0Qi7nhYZD/9fCPzEqkw== +nopt@3.x: + version "3.0.6" + resolved "https://registry.yarnpkg.com/nopt/-/nopt-3.0.6.tgz#c6465dbf08abcd4db359317f79ac68a646b28ff9" + integrity sha1-xkZdvwirzU2zWTF/eaxopkayj/k= dependencies: - randombytes "^2.1.0" + abbrev "1" -serve-static@1.14.1: - version "1.14.1" - resolved "https://registry.yarnpkg.com/serve-static/-/serve-static-1.14.1.tgz#666e636dc4f010f7ef29970a88a674320898b2f9" - integrity sha512-JMrvUwE54emCYWlTI+hGrGv5I8dEwmco/00EvkzIIsR7MqrHonbD9pO2MOfFnpFntl7ecpZs+3mW+XbQZu9QCg== - dependencies: - encodeurl "~1.0.2" - escape-html "~1.0.3" - parseurl "~1.3.3" - send "0.17.1" +normalize-path@^3.0.0, normalize-path@~3.0.0: + version "3.0.0" + resolved "https://registry.yarnpkg.com/normalize-path/-/normalize-path-3.0.0.tgz#0dcd69ff23a1c9b11fd0978316644a0388216a65" + integrity sha512-6eZs5Ls3WtCisHWp9S2GUy8dqkpGi4BVSz3GaqiE6ezub0512ESztXUwUB6C6IKbQkY2Pnb/mD4WYojCRwcwLA== -servify@^0.1.12: - version "0.1.12" - resolved "https://registry.yarnpkg.com/servify/-/servify-0.1.12.tgz#142ab7bee1f1d033b66d0707086085b17c06db95" - integrity sha512-/xE6GvsKKqyo1BAY+KxOWXcLpPsUUyji7Qg3bVD7hh1eRze5bR1uYiuDA/k3Gof1s9BTzQZEJK8sNcNGFIzeWw== - dependencies: - body-parser "^1.16.0" - cors "^2.8.1" - express "^4.14.0" - request "^2.79.0" - xhr "^2.3.3" +normalize-url@^4.1.0: + version "4.5.0" + resolved "https://registry.yarnpkg.com/normalize-url/-/normalize-url-4.5.0.tgz#453354087e6ca96957bd8f5baf753f5982142129" + integrity sha512-2s47yzUxdexf1OhyRi4Em83iQk0aPvwTddtFz4hnSSw9dCEsLEGf6SwIO8ss/19S9iBb5sJaOuTvTGDeZI00BQ== -set-blocking@^2.0.0, set-blocking@~2.0.0: - version "2.0.0" - resolved "https://registry.yarnpkg.com/set-blocking/-/set-blocking-2.0.0.tgz#045f9782d011ae9a6803ddd382b24392b3d890f7" - integrity sha1-BF+XgtARrppoA93TgrJDkrPYkPc= +npm-run-path@^2.0.0: + version "2.0.2" + resolved "https://registry.yarnpkg.com/npm-run-path/-/npm-run-path-2.0.2.tgz#35a9232dfa35d7067b4cb2ddf2357b1871536c5f" + integrity sha1-NakjLfo11wZ7TLLd8jV7GHFTbF8= + dependencies: + path-key "^2.0.0" -set-value@^2.0.0, set-value@^2.0.1: - version "2.0.1" - resolved "https://registry.yarnpkg.com/set-value/-/set-value-2.0.1.tgz#a18d40530e6f07de4228c7defe4227af8cad005b" - integrity sha512-JxHc1weCN68wRY0fhCoXpyK55m/XPHafOmK4UWD7m2CI14GMcFypt4w/0+NV5f/ZMby2F6S2wwA7fgynh9gWSw== +number-to-bn@1.7.0: + version "1.7.0" + resolved "https://registry.yarnpkg.com/number-to-bn/-/number-to-bn-1.7.0.tgz#bb3623592f7e5f9e0030b1977bd41a0c53fe1ea0" + integrity sha1-uzYjWS9+X54AMLGXe9QaDFP+HqA= dependencies: - extend-shallow "^2.0.1" - is-extendable "^0.1.1" - is-plain-object "^2.0.3" - split-string "^3.0.1" + bn.js "4.11.6" + strip-hex-prefix "1.0.0" -setimmediate@1.0.4: - version "1.0.4" - resolved "https://registry.yarnpkg.com/setimmediate/-/setimmediate-1.0.4.tgz#20e81de622d4a02588ce0c8da8973cbcf1d3138f" - integrity sha1-IOgd5iLUoCWIzgyNqJc8vPHTE48= +oauth-sign@~0.9.0: + version "0.9.0" + resolved "https://registry.yarnpkg.com/oauth-sign/-/oauth-sign-0.9.0.tgz#47a7b016baa68b5fa0ecf3dee08a85c679ac6455" + integrity sha512-fexhUFFPTGV8ybAtSIGbV6gOkSv8UtRbDBnAyLQw4QPKkgNlsH2ByPGtMUqdWkos6YCRmAqViwgZrJc/mRDzZQ== -setimmediate@^1.0.4, setimmediate@^1.0.5: - version "1.0.5" - resolved "https://registry.yarnpkg.com/setimmediate/-/setimmediate-1.0.5.tgz#290cbb232e306942d7d7ea9b83732ab7856f8285" - integrity sha1-KQy7Iy4waULX1+qbg3Mqt4VvgoU= +object-assign@^4, object-assign@^4.1.0, object-assign@^4.1.1: + version "4.1.1" + resolved "https://registry.yarnpkg.com/object-assign/-/object-assign-4.1.1.tgz#2109adc7965887cfc05cbbd442cac8bfbb360863" + integrity sha1-IQmtx5ZYh8/AXLvUQsrIv7s2CGM= -setprototypeof@1.1.1: - version "1.1.1" - resolved "https://registry.yarnpkg.com/setprototypeof/-/setprototypeof-1.1.1.tgz#7e95acb24aa92f5885e0abef5ba131330d4ae683" - integrity sha512-JvdAWfbXeIGaZ9cILp38HntZSFSo3mWg6xGcJJsd+d4aRMOqauag1C63dJfDw7OaMYwEbHMOxEZ1lqVRYP2OAw== +object-inspect@^1.9.0: + version "1.10.3" + resolved "https://registry.yarnpkg.com/object-inspect/-/object-inspect-1.10.3.tgz#c2aa7d2d09f50c99375704f7a0adf24c5782d369" + integrity sha512-e5mCJlSH7poANfC8z8S9s9S2IN5/4Zb3aZ33f5s8YqoazCFzNLloLU8r5VCG+G7WoqLvAAZoVMcy3tp/3X0Plw== -setprototypeof@1.2.0: - version "1.2.0" - resolved "https://registry.yarnpkg.com/setprototypeof/-/setprototypeof-1.2.0.tgz#66c9a24a73f9fc28cbe66b09fed3d33dcaf1b424" - integrity sha512-E5LDX7Wrp85Kil5bhZv46j8jOeboKq5JMmYM3gVGdGH8xFpPWXUMsNrlODCrkoxMEeNi/XZIwuRvY4XNwYMJpw== +object-keys@^1.0.11, object-keys@^1.0.12, object-keys@^1.1.1: + version "1.1.1" + resolved "https://registry.yarnpkg.com/object-keys/-/object-keys-1.1.1.tgz#1c47f272df277f3b1daf061677d9c82e2322c60e" + integrity sha512-NuAESUOUMrlIXOfHKzD6bpPu3tYt3xvjNdRIQ+FeT0lNb4K8WR70CaDxhuNguS2XG+GjkyMwOzsN5ZktImfhLA== -sha.js@^2.4.0, sha.js@^2.4.11, sha.js@^2.4.8: - version "2.4.11" - resolved "https://registry.yarnpkg.com/sha.js/-/sha.js-2.4.11.tgz#37a5cf0b81ecbc6943de109ba2960d1b26584ae7" - integrity sha512-QMEp5B7cftE7APOjk5Y6xgrbWu+WkLVQwk8JNjZ8nKRciZaByEW6MubieAiToS7+dwvrjGhH8jRXz3MVd0AYqQ== +object.assign@4.1.0: + version "4.1.0" + resolved "https://registry.yarnpkg.com/object.assign/-/object.assign-4.1.0.tgz#968bf1100d7956bb3ca086f006f846b3bc4008da" + integrity sha512-exHJeq6kBKj58mqGyTQ9DFvrZC/eR6OwxzoM9YRoGBqrXYonaFyGiFMuc9VZrXf7DarreEwMpurG3dd+CNyW5w== dependencies: - inherits "^2.0.1" - safe-buffer "^5.0.1" + define-properties "^1.1.2" + function-bind "^1.1.1" + has-symbols "^1.0.0" + object-keys "^1.0.11" -sha1@^1.1.1: - version "1.1.1" - resolved "https://registry.yarnpkg.com/sha1/-/sha1-1.1.1.tgz#addaa7a93168f393f19eb2b15091618e2700f848" - integrity sha1-rdqnqTFo85PxnrKxUJFhjicA+Eg= +object.assign@^4.1.2: + version "4.1.2" + resolved "https://registry.yarnpkg.com/object.assign/-/object.assign-4.1.2.tgz#0ed54a342eceb37b38ff76eb831a0e788cb63940" + integrity sha512-ixT2L5THXsApyiUPYKmW+2EHpXXe5Ii3M+f4e+aJFAHao5amFRW6J0OO6c/LU8Be47utCx2GL89hxGB6XSmKuQ== dependencies: - charenc ">= 0.0.1" - crypt ">= 0.0.1" + call-bind "^1.0.0" + define-properties "^1.1.3" + has-symbols "^1.0.1" + object-keys "^1.1.1" -sha3@^2.1.1: - version "2.1.4" - resolved "https://registry.yarnpkg.com/sha3/-/sha3-2.1.4.tgz#000fac0fe7c2feac1f48a25e7a31b52a6492cc8f" - integrity sha512-S8cNxbyb0UGUM2VhRD4Poe5N58gJnJsLJ5vC7FYWGUmGhcsj4++WaIOBFVDxlG0W3To6xBuiRh+i0Qp2oNCOtg== +object.getownpropertydescriptors@^2.0.3, object.getownpropertydescriptors@^2.1.1: + version "2.1.2" + resolved "https://registry.yarnpkg.com/object.getownpropertydescriptors/-/object.getownpropertydescriptors-2.1.2.tgz#1bd63aeacf0d5d2d2f31b5e393b03a7c601a23f7" + integrity sha512-WtxeKSzfBjlzL+F9b7M7hewDzMwy+C8NRssHd1YrNlzHzIDrXcXiNOMrezdAEM4UXixgV+vvnyBeN7Rygl2ttQ== dependencies: - buffer "6.0.3" + call-bind "^1.0.2" + define-properties "^1.1.3" + es-abstract "^1.18.0-next.2" -shallowequal@^1.0.2: - version "1.1.0" - resolved "https://registry.yarnpkg.com/shallowequal/-/shallowequal-1.1.0.tgz#188d521de95b9087404fd4dcb68b13df0ae4e7f8" - integrity sha512-y0m1JoUZSlPAjXVtPPW70aZWfIL/dSP7AFkRnniLCrK/8MDKog3TySTBmckD+RObVxH0v4Tox67+F14PdED2oQ== +obliterator@^1.6.1: + version "1.6.1" + resolved "https://registry.yarnpkg.com/obliterator/-/obliterator-1.6.1.tgz#dea03e8ab821f6c4d96a299e17aef6a3af994ef3" + integrity sha512-9WXswnqINnnhOG/5SLimUlzuU1hFJUc8zkwyD59Sd+dPOMf05PmnYG/d6Q7HZ+KmgkZJa1PxRso6QdM3sTNHig== -shebang-command@^1.2.0: - version "1.2.0" - resolved "https://registry.yarnpkg.com/shebang-command/-/shebang-command-1.2.0.tgz#44aac65b695b03398968c39f363fee5deafdf1ea" - integrity sha1-RKrGW2lbAzmJaMOfNj/uXer98eo= +oboe@2.1.5: + version "2.1.5" + resolved "https://registry.yarnpkg.com/oboe/-/oboe-2.1.5.tgz#5554284c543a2266d7a38f17e073821fbde393cd" + integrity sha1-VVQoTFQ6ImbXo48X4HOCH73jk80= dependencies: - shebang-regex "^1.0.0" - -shebang-regex@^1.0.0: - version "1.0.0" - resolved "https://registry.yarnpkg.com/shebang-regex/-/shebang-regex-1.0.0.tgz#da42f49740c0b42db2ca9728571cb190c98efea3" - integrity sha1-2kL0l0DAtC2yypcoVxyxkMmO/qM= + http-https "^1.0.0" -shelljs@^0.8.3: - version "0.8.3" - resolved "https://registry.yarnpkg.com/shelljs/-/shelljs-0.8.3.tgz#a7f3319520ebf09ee81275b2368adb286659b097" - integrity sha512-fc0BKlAWiLpwZljmOvAOTE/gXawtCoNrP5oaY7KIaQbbyHeQVg01pSEuEGvGh3HEdBU4baCD7wQBwADmM/7f7A== +on-finished@~2.3.0: + version "2.3.0" + resolved "https://registry.yarnpkg.com/on-finished/-/on-finished-2.3.0.tgz#20f1336481b083cd75337992a16971aa2d906947" + integrity sha1-IPEzZIGwg811M3mSoWlxqi2QaUc= dependencies: - glob "^7.0.0" - interpret "^1.0.0" - rechoir "^0.6.2" + ee-first "1.1.1" -signal-exit@^3.0.0, signal-exit@^3.0.2: - version "3.0.2" - resolved "https://registry.yarnpkg.com/signal-exit/-/signal-exit-3.0.2.tgz#b5fdc08f1287ea1178628e415e25132b73646c6d" - integrity sha1-tf3AjxKH6hF4Yo5BXiUTK3NkbG0= +once@1.x, once@^1.3.0, once@^1.3.1, once@^1.4.0: + version "1.4.0" + resolved "https://registry.yarnpkg.com/once/-/once-1.4.0.tgz#583b1aa775961d4b113ac17d9c50baef9dd76bd1" + integrity sha1-WDsap3WWHUsROsF9nFC6753Xa9E= + dependencies: + wrappy "1" -signed-varint@^2.0.1: +onetime@^2.0.0: version "2.0.1" - resolved "https://registry.yarnpkg.com/signed-varint/-/signed-varint-2.0.1.tgz#50a9989da7c98c2c61dad119bc97470ef8528129" - integrity sha1-UKmYnafJjCxh2tEZvJdHDvhSgSk= + resolved "https://registry.yarnpkg.com/onetime/-/onetime-2.0.1.tgz#067428230fd67443b2794b22bba528b6867962d4" + integrity sha1-BnQoIw/WdEOyeUsiu6UotoZ5YtQ= dependencies: - varint "~5.0.0" - -signedsource@^1.0.0: - version "1.0.0" - resolved "https://registry.yarnpkg.com/signedsource/-/signedsource-1.0.0.tgz#1ddace4981798f93bd833973803d80d52e93ad6a" - integrity sha1-HdrOSYF5j5O9gzlzgD2A1S6TrWo= - -simple-concat@^1.0.0: - version "1.0.0" - resolved "https://registry.yarnpkg.com/simple-concat/-/simple-concat-1.0.0.tgz#7344cbb8b6e26fb27d66b2fc86f9f6d5997521c6" - integrity sha1-c0TLuLbib7J9ZrL8hvn21Zl1IcY= + mimic-fn "^1.0.0" -simple-get@^2.7.0: - version "2.8.1" - resolved "https://registry.yarnpkg.com/simple-get/-/simple-get-2.8.1.tgz#0e22e91d4575d87620620bc91308d57a77f44b5d" - integrity sha512-lSSHRSw3mQNUGPAYRqo7xy9dhKmxFXIjLjp4KHpf99GEH2VH7C3AM+Qfx6du6jhfUi6Vm7XnbEVEf7Wb6N8jRw== +open@^7.4.2: + version "7.4.2" + resolved "https://registry.yarnpkg.com/open/-/open-7.4.2.tgz#b8147e26dcf3e426316c730089fd71edd29c2321" + integrity sha512-MVHddDVweXZF3awtlAS+6pgKLlm/JgxZ90+/NBurBoQctVOOB/zDdVjcyPzQ+0laDGbsWgrRkflI65sQeOgT9Q== dependencies: - decompress-response "^3.3.0" - once "^1.3.1" - simple-concat "^1.0.0" - -slash@^2.0.0: - version "2.0.0" - resolved "https://registry.yarnpkg.com/slash/-/slash-2.0.0.tgz#de552851a1759df3a8f206535442f5ec4ddeab44" - integrity sha512-ZYKh3Wh2z1PpEXWr0MpSBZ0V6mZHAQfYevttO11c51CaWjGTaadiKZ+wVt1PbMlDV5qhMFslpZCemhwOK7C89A== - -slash@^3.0.0: - version "3.0.0" - resolved "https://registry.yarnpkg.com/slash/-/slash-3.0.0.tgz#6539be870c165adbd5240220dbe361f1bc4d4634" - integrity sha512-g9Q1haeby36OSStwb4ntCGGGaKsaVSjQ68fBxoQcutl5fS1vuY18H3wSt3jFyFtrkx+Kz0V1G85A4MyAdDMi2Q== + is-docker "^2.0.0" + is-wsl "^2.1.1" -snake-case@^2.1.0: - version "2.1.0" - resolved "https://registry.yarnpkg.com/snake-case/-/snake-case-2.1.0.tgz#41bdb1b73f30ec66a04d4e2cad1b76387d4d6d9f" - integrity sha1-Qb2xtz8w7GagTU4srRt2OH1NbZ8= +optionator@^0.8.1, optionator@^0.8.2: + version "0.8.3" + resolved "https://registry.yarnpkg.com/optionator/-/optionator-0.8.3.tgz#84fa1d036fe9d3c7e21d99884b601167ec8fb495" + integrity sha512-+IW9pACdk3XWmmTXG8m3upGUJst5XRGzxMRjXzAuJ1XnIFNvfhjjIuYkDvysnPQ7qzqVzLt78BCruntqRhWQbA== dependencies: - no-case "^2.2.0" + 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" -snapdragon-node@^2.0.1: - version "2.1.1" - resolved "https://registry.yarnpkg.com/snapdragon-node/-/snapdragon-node-2.1.1.tgz#6c175f86ff14bdb0724563e8f3c1b021a286853b" - integrity sha512-O27l4xaMYt/RSQ5TR3vpWCAB5Kb/czIcqUFOM/C4fYcLnbZUc1PkjTAMjof2pBWaSTwOUd6qUHcFGVGj7aIwnw== +optionator@^0.9.1: + version "0.9.1" + resolved "https://registry.yarnpkg.com/optionator/-/optionator-0.9.1.tgz#4f236a6373dae0566a6d43e1326674f50c291499" + integrity sha512-74RlY5FCnhq4jRxVUPKDaRwrVNXMqsGsiW6AJw4XK8hmtm10wC0ypZBLw5IIp85NZMr91+qd1RvvENwg7jjRFw== dependencies: - define-property "^1.0.0" - isobject "^3.0.0" - snapdragon-util "^3.0.1" + 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" -snapdragon-util@^3.0.1: - version "3.0.1" - resolved "https://registry.yarnpkg.com/snapdragon-util/-/snapdragon-util-3.0.1.tgz#f956479486f2acd79700693f6f7b805e45ab56e2" - integrity sha512-mbKkMdQKsjX4BAL4bRYTj21edOf8cN7XHdYUJEe+Zn99hVEYcMvKPct1IqNe7+AZPirn8BCDOQBHQZknqmKlZQ== +os-locale@^3.1.0: + version "3.1.0" + resolved "https://registry.yarnpkg.com/os-locale/-/os-locale-3.1.0.tgz#a802a6ee17f24c10483ab9935719cef4ed16bf1a" + integrity sha512-Z8l3R4wYWM40/52Z+S265okfFj8Kt2cC2MKY+xNi3kFs+XGI7WXu/I309QQQYbRW4ijiZ+yxs9pqEhJh0DqW3Q== dependencies: - kind-of "^3.2.0" + execa "^1.0.0" + lcid "^2.0.0" + mem "^4.0.0" -snapdragon@^0.8.1: - version "0.8.2" - resolved "https://registry.yarnpkg.com/snapdragon/-/snapdragon-0.8.2.tgz#64922e7c565b0e14204ba1aa7d6964278d25182d" - 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" - -socketcluster-client@^14.2.1: - version "14.3.1" - resolved "https://registry.yarnpkg.com/socketcluster-client/-/socketcluster-client-14.3.1.tgz#bfc3591c0cad2668e7b3512a102f3844f5f2e84d" - integrity sha512-Sd/T0K/9UlqTfz+HUuFq90dshA5OBJPQbdkRzGtcKIOm52fkdsBTt0FYpiuzzxv5VrU7PWpRm6KIfNXyPwlLpw== - dependencies: - buffer "^5.2.1" - clone "2.1.1" - component-emitter "1.2.1" - linked-list "0.1.0" - querystring "0.2.0" - sc-channel "^1.2.0" - sc-errors "^2.0.1" - sc-formatter "^3.0.1" - uuid "3.2.1" - ws "7.1.0" - -sol-merger@1.1.1: - version "1.1.1" - resolved "https://registry.yarnpkg.com/sol-merger/-/sol-merger-1.1.1.tgz#5ba48dd0e21982af3855daa7a4a1719ef6b6564d" - integrity sha512-Wm0sFXauDzJmZgxZ3a3ATfRf8OvBIt1Q+lqJw/UO5aqRbXKnBCt7TzSSLvSWl91uqub4MUubFzq6Bk/tRKnO2Q== - dependencies: - cli-color "^1.4.0" - commander "^2.19.0" - debug "^4.1.1" - fs-extra "^8.0.1" - glob "^7.1.2" - strip-json-comments "^3.0.1" +os-tmpdir@~1.0.2: + version "1.0.2" + resolved "https://registry.yarnpkg.com/os-tmpdir/-/os-tmpdir-1.0.2.tgz#bbe67406c79aa85c5cfec766fe5734555dfa1274" + integrity sha1-u+Z0BseaqFxc/sdm/lc0VV36EnQ= -solc@0.5.17, solc@^0.4.20, solc@^0.5.17: - version "0.5.17" - resolved "https://registry.yarnpkg.com/solc/-/solc-0.5.17.tgz#8a76c50e98d49ca7610cca2fdc78ff3016540c67" - integrity sha512-qpX+PGaU0Q3c6lh2vDzMoIbhv6bIrecI4bYsx+xUs01xsGFnY6Nr0L8y/QMyutTnrHN6Lb/Yl672ZVRqxka96w== - 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" +p-cancelable@^0.3.0: + version "0.3.0" + resolved "https://registry.yarnpkg.com/p-cancelable/-/p-cancelable-0.3.0.tgz#b9e123800bcebb7ac13a479be195b507b98d30fa" + integrity sha512-RVbZPLso8+jFeq1MfNvgXtCRED2raz/dKpacfTNxsx6pLEpEomM7gah6VeHSYV3+vo0OAi4MkArtQcWWXuQoyw== -solidity-comments-extractor@^0.0.7: - version "0.0.7" - resolved "https://registry.yarnpkg.com/solidity-comments-extractor/-/solidity-comments-extractor-0.0.7.tgz#99d8f1361438f84019795d928b931f4e5c39ca19" - integrity sha512-wciNMLg/Irp8OKGrh3S2tfvZiZ0NEyILfcRCXCD4mp7SgK/i9gzLfhY2hY7VMCQJ3kH9UB9BzNdibIVMchzyYw== +p-cancelable@^1.0.0: + version "1.1.0" + resolved "https://registry.yarnpkg.com/p-cancelable/-/p-cancelable-1.1.0.tgz#d078d15a3af409220c886f1d9a0ca2e441ab26cc" + integrity sha512-s73XxOZ4zpt1edZYZzvhqFa6uvQc1vwUa0K0BdtIZgQMAJj9IbebH+JkgKZc9h+B05PKHLOTl4ajG1BmNrVZlw== -solidity-coverage@^0.7.16: - version "0.7.16" - resolved "https://registry.yarnpkg.com/solidity-coverage/-/solidity-coverage-0.7.16.tgz#c8c8c46baa361e2817bbf275116ddd2ec90a55fb" - integrity sha512-ttBOStywE6ZOTJmmABSg4b8pwwZfYKG8zxu40Nz+sRF5bQX7JULXWj/XbX0KXps3Fsp8CJXg8P29rH3W54ipxw== - dependencies: - "@solidity-parser/parser" "^0.12.0" - "@truffle/provider" "^0.2.24" - chalk "^2.4.2" - death "^1.1.0" - detect-port "^1.3.0" - fs-extra "^8.1.0" - ganache-cli "^6.11.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" +p-defer@^1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/p-defer/-/p-defer-1.0.0.tgz#9f6eb182f6c9aa8cd743004a7d4f96b196b0fb0c" + integrity sha1-n26xgvbJqozXQwBKfU+WsZaw+ww= -solidity-parser-antlr@^0.4.11: - version "0.4.11" - resolved "https://registry.yarnpkg.com/solidity-parser-antlr/-/solidity-parser-antlr-0.4.11.tgz#af43e1f13b3b88309a875455f5d6e565b05ee5f1" - integrity sha512-4jtxasNGmyC0midtjH/lTFPZYvTTUMy6agYcF+HoMnzW8+cqo3piFrINb4ZCzpPW+7tTVFCGa5ubP34zOzeuMg== +p-finally@^1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/p-finally/-/p-finally-1.0.0.tgz#3fbcfb15b899a44123b34b6dcc18b724336a2cae" + integrity sha1-P7z7FbiZpEEjs0ttzBi3JDNqLK4= -source-list-map@^2.0.0: - version "2.0.1" - resolved "https://registry.yarnpkg.com/source-list-map/-/source-list-map-2.0.1.tgz#3993bd873bfc48479cca9ea3a547835c7c154b34" - integrity sha512-qnQ7gVMxGNxsiL4lEuJwe/To8UnK7fAnmbGEEH8RpLouuKbeEm0lhbQVFIrNSuB+G7tVrAlVsZgETT5nljf+Iw== +p-is-promise@^2.0.0: + version "2.1.0" + resolved "https://registry.yarnpkg.com/p-is-promise/-/p-is-promise-2.1.0.tgz#918cebaea248a62cf7ffab8e3bca8c5f882fc42e" + integrity sha512-Y3W0wlRPK8ZMRbNq97l4M5otioeA5lm1z7bkNkxCka8HSPjR0xRWmpCmc9utiaLP9Jb1eD8BgeIxTW4AIF45Pg== -source-map-resolve@^0.5.0, source-map-resolve@^0.5.2: - version "0.5.3" - resolved "https://registry.yarnpkg.com/source-map-resolve/-/source-map-resolve-0.5.3.tgz#190866bece7553e1f8f267a2ee82c606b5509a1a" - integrity sha512-Htz+RnsXWk5+P2slx5Jh3Q66vhQj1Cllm0zvnaY98+NFx+Dv2CF/f5O/t8x+KaNdrdIAsruNzoh/KpialbqAnw== +p-limit@^1.1.0: + version "1.3.0" + resolved "https://registry.yarnpkg.com/p-limit/-/p-limit-1.3.0.tgz#b86bd5f0c25690911c7590fcbfc2010d54b3ccb8" + integrity sha512-vvcXsLAJ9Dr5rQOPk7toZQZJApBl2K4J6dANSsEuh6QI41JYcsS/qhTGa9ErIUUgK3WNQoJYvylxvjqmiqEA9Q== 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" + p-try "^1.0.0" -source-map-support@0.5.12: - version "0.5.12" - resolved "https://registry.yarnpkg.com/source-map-support/-/source-map-support-0.5.12.tgz#b4f3b10d51857a5af0138d3ce8003b201613d599" - integrity sha512-4h2Pbvyy15EE02G+JOZpUCmqWJuqrs+sEkzewTm++BPi7Hvn/HwcqLAcNxYAyI0x13CpPPn+kMjl+hplXMHITQ== +p-limit@^2.0.0: + version "2.3.0" + resolved "https://registry.yarnpkg.com/p-limit/-/p-limit-2.3.0.tgz#3dd33c647a214fdfffd835933eb086da0dc21db1" + integrity sha512-//88mFWSJx8lxCzwdAABTJL2MyWB12+eIY7MDL2SqLmAkeKU9qxRvWuSyTjm3FUmpBEMuFfckAIqEaVGUDxb6w== dependencies: - buffer-from "^1.0.0" - source-map "^0.6.0" + p-try "^2.0.0" -source-map-support@^0.5.19, source-map-support@^0.5.3: - version "0.5.19" - resolved "https://registry.yarnpkg.com/source-map-support/-/source-map-support-0.5.19.tgz#a98b62f86dcaf4f67399648c085291ab9e8fed61" - integrity sha512-Wonm7zOCIJzBGQdB+thsPar0kYuCIzYvxZwlBa87yi/Mdjv7Tip2cyVbLj5o0cFPN4EVkuTwb3GDDyUx2DGnGw== +p-limit@^3.0.2: + version "3.1.0" + resolved "https://registry.yarnpkg.com/p-limit/-/p-limit-3.1.0.tgz#e1daccbe78d0d1388ca18c64fea38e3e57e3706b" + integrity sha512-TYOanM3wGwNGsZN2cVTYPArw454xnXj5qmWF1bEoAc4+cU/ol7GVh7odevjp1FNHduHc3KZMcFduxU5Xc6uJRQ== dependencies: - buffer-from "^1.0.0" - source-map "^0.6.0" + yocto-queue "^0.1.0" -source-map-url@^0.4.0: - version "0.4.0" - resolved "https://registry.yarnpkg.com/source-map-url/-/source-map-url-0.4.0.tgz#3e935d7ddd73631b97659956d55128e87b5084a3" - integrity sha1-PpNdfd1zYxuXZZlW1VEo6HtQhKM= +p-locate@^2.0.0: + version "2.0.0" + resolved "https://registry.yarnpkg.com/p-locate/-/p-locate-2.0.0.tgz#20a0103b222a70c8fd39cc2e580680f3dde5ec43" + integrity sha1-IKAQOyIqcMj9OcwuWAaA893l7EM= + dependencies: + p-limit "^1.1.0" -source-map@^0.5.0, source-map@^0.5.3, source-map@^0.5.6, source-map@^0.5.7, source-map@~0.5.1: - version "0.5.7" - resolved "https://registry.yarnpkg.com/source-map/-/source-map-0.5.7.tgz#8a039d2d1021d22d1ea14c80d8ea468ba2ef3fcc" - integrity sha1-igOdLRAh0i0eoUyA2OpGi6LvP8w= +p-locate@^3.0.0: + version "3.0.0" + resolved "https://registry.yarnpkg.com/p-locate/-/p-locate-3.0.0.tgz#322d69a05c0264b25997d9f40cd8a891ab0064a4" + integrity sha512-x+12w/To+4GFfgJhBEpiDcLozRJGegY+Ei7/z0tSLkMmxGZNybVMSfWj9aJn8Z5Fc7dBUNJOOVgPv2H7IwulSQ== + dependencies: + p-limit "^2.0.0" -source-map@^0.6.0, source-map@^0.6.1, source-map@~0.6.0, source-map@~0.6.1: - version "0.6.1" - resolved "https://registry.yarnpkg.com/source-map/-/source-map-0.6.1.tgz#74722af32e9614e9c287a8d0bbde48b5e2f1a263" - integrity sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g== +p-locate@^5.0.0: + version "5.0.0" + resolved "https://registry.yarnpkg.com/p-locate/-/p-locate-5.0.0.tgz#83c8315c6785005e3bd021839411c9e110e6d834" + integrity sha512-LaNjtRWUBY++zB5nE/NwcaoMylSPk+S+ZHNB1TzdbMJMny6dynpAGt7X/tl/QYq3TIeE6nxHppbo2LGymrG5Pw== + dependencies: + p-limit "^3.0.2" -source-map@~0.2.0: - version "0.2.0" - resolved "https://registry.yarnpkg.com/source-map/-/source-map-0.2.0.tgz#dab73fbcfc2ba819b4de03bd6f6eaa48164b3f9d" - integrity sha1-2rc/vPwrqBm03gO9b26qSBZLP50= +p-timeout@^1.1.1: + version "1.2.1" + resolved "https://registry.yarnpkg.com/p-timeout/-/p-timeout-1.2.1.tgz#5eb3b353b7fce99f101a1038880bb054ebbea386" + integrity sha1-XrOzU7f86Z8QGhA4iAuwVOu+o4Y= dependencies: - amdefine ">=0.0.4" + p-finally "^1.0.0" -spark-md5@3.0.0: - version "3.0.0" - resolved "https://registry.yarnpkg.com/spark-md5/-/spark-md5-3.0.0.tgz#3722227c54e2faf24b1dc6d933cc144e6f71bfef" - integrity sha1-NyIifFTi+vJLHcbZM8wUTm9xv+8= +p-try@^1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/p-try/-/p-try-1.0.0.tgz#cbc79cdbaf8fd4228e13f621f2b1a237c1b207b3" + integrity sha1-y8ec26+P1CKOE/Yh8rGiN8GyB7M= -spark-md5@3.0.1: - version "3.0.1" - resolved "https://registry.yarnpkg.com/spark-md5/-/spark-md5-3.0.1.tgz#83a0e255734f2ab4e5c466e5a2cfc9ba2aa2124d" - integrity sha512-0tF3AGSD1ppQeuffsLDIOWlKUd3lS92tFxcsrh5Pe3ZphhnoK+oXIBTzOAThZCiuINZLvpiLH/1VS1/ANEJVig== +p-try@^2.0.0: + version "2.2.0" + resolved "https://registry.yarnpkg.com/p-try/-/p-try-2.2.0.tgz#cb2868540e313d61de58fafbe35ce9004d5540e6" + integrity sha512-R4nPAVTAU0B9D35/Gk3uJf/7XYbQcyohSKdvAxIRSNghFl4e71hVoGnBNQz9cWaXxO2I10KTC+3jMdvvoKw6dQ== -spdx-correct@^3.0.0: - version "3.1.1" - resolved "https://registry.yarnpkg.com/spdx-correct/-/spdx-correct-3.1.1.tgz#dece81ac9c1e6713e5f7d1b6f17d468fa53d89a9" - integrity sha512-cOYcUWwhCuHCXi49RhFRCyJEK3iPj1Ziz9DpViV3tbZOwXD49QzIN3MpOLJNxh2qwq2lJJZaKMVw9qNi4jTC0w== +parent-module@^1.0.0: + version "1.0.1" + resolved "https://registry.yarnpkg.com/parent-module/-/parent-module-1.0.1.tgz#691d2709e78c79fae3a156622452d00762caaaa2" + integrity sha512-GQ2EWRpQV8/o+Aw8YqtfZZPfNRWZYkbidE9k5rpl/hC3vtHHBfGm2Ifi6qWV+coDGkrUKZAxE3Lot5kcsRlh+g== dependencies: - spdx-expression-parse "^3.0.0" - spdx-license-ids "^3.0.0" - -spdx-exceptions@^2.1.0: - version "2.3.0" - resolved "https://registry.yarnpkg.com/spdx-exceptions/-/spdx-exceptions-2.3.0.tgz#3f28ce1a77a00372683eade4a433183527a2163d" - integrity sha512-/tTrYOC7PPI1nUAgx34hUpqXuyJG+DTHJTnIULG4rDygi4xu/tfgmq1e1cIRwRzwZgo4NLySi+ricLkZkw4i5A== + callsites "^3.0.0" -spdx-expression-parse@^3.0.0: - version "3.0.1" - resolved "https://registry.yarnpkg.com/spdx-expression-parse/-/spdx-expression-parse-3.0.1.tgz#cf70f50482eefdc98e3ce0a6833e4a53ceeba679" - integrity sha512-cbqHunsQWnJNE6KhVSMsMeH5H/L9EpymbzqTQ3uLwNCLZ1Q481oWaofqH7nO6V07xlXwY6PhQdQ2IedWx/ZK4Q== +parse-asn1@^5.0.0, parse-asn1@^5.1.5: + version "5.1.6" + resolved "https://registry.yarnpkg.com/parse-asn1/-/parse-asn1-5.1.6.tgz#385080a3ec13cb62a62d39409cb3e88844cdaed4" + integrity sha512-RnZRo1EPU6JBnra2vGHj0yhp6ebyjBZpmUCLHWiFhxlzvBCCpAuZ7elsBp1PVAbQN0/04VD/19rfzlBSwLstMw== dependencies: - spdx-exceptions "^2.1.0" - spdx-license-ids "^3.0.0" - -spdx-license-ids@^3.0.0: - version "3.0.7" - resolved "https://registry.yarnpkg.com/spdx-license-ids/-/spdx-license-ids-3.0.7.tgz#e9c18a410e5ed7e12442a549fbd8afa767038d65" - integrity sha512-U+MTEOO0AiDzxwFvoa4JVnMV6mZlJKk2sBLt90s7G0Gd0Mlknc7kxEn3nuDPNZRta7O2uy8oLcZLVT+4sqNZHQ== + asn1.js "^5.2.0" + browserify-aes "^1.0.0" + evp_bytestokey "^1.0.0" + pbkdf2 "^3.0.3" + safe-buffer "^5.1.1" -spinnies@^0.4.2: - version "0.4.3" - resolved "https://registry.yarnpkg.com/spinnies/-/spinnies-0.4.3.tgz#2ea0ad148e78353ddf621dec3951a6f4c3cbf66e" - integrity sha512-TTA2vWXrXJpfThWAl2t2hchBnCMI1JM5Wmb2uyI7Zkefdw/xO98LDy6/SBYwQPiYXL3swx3Eb44ZxgoS8X5wpA== - dependencies: - chalk "^2.4.2" - cli-cursor "^3.0.0" - strip-ansi "^5.2.0" +parse-cache-control@^1.0.1: + version "1.0.1" + resolved "https://registry.yarnpkg.com/parse-cache-control/-/parse-cache-control-1.0.1.tgz#8eeab3e54fa56920fe16ba38f77fa21aacc2d74e" + integrity sha1-juqz5U+laSD+Fro493+iGqzC104= -spinnies@^0.5.1: - version "0.5.1" - resolved "https://registry.yarnpkg.com/spinnies/-/spinnies-0.5.1.tgz#6ac88455d9117c7712d52898a02c969811819a7e" - integrity sha512-WpjSXv9NQz0nU3yCT9TFEOfpFrXADY9C5fG6eAJqixLhvTX1jP3w92Y8IE5oafIe42nlF9otjhllnXN/QCaB3A== - dependencies: - chalk "^2.4.2" - cli-cursor "^3.0.0" - strip-ansi "^5.2.0" +parse-headers@^2.0.0: + version "2.0.3" + resolved "https://registry.yarnpkg.com/parse-headers/-/parse-headers-2.0.3.tgz#5e8e7512383d140ba02f0c7aa9f49b4399c92515" + integrity sha512-QhhZ+DCCit2Coi2vmAKbq5RGTRcQUOE2+REgv8vdyu7MnYx2eZztegqtTx99TZ86GTIwqiy3+4nQTWZ2tgmdCA== -split-string@^3.0.1, split-string@^3.0.2: - version "3.1.0" - resolved "https://registry.yarnpkg.com/split-string/-/split-string-3.1.0.tgz#7cb09dda3a86585705c64b39a6466038682e8fe2" - integrity sha512-NzNVhJDYpwceVVii8/Hu6DKfD2G+NrQHlS/V/qgv763EYudVwEcMQNxd2lh+0VrUByXN/oJkl5grOhYWvQUYiw== +parse-json@^4.0.0: + version "4.0.0" + resolved "https://registry.yarnpkg.com/parse-json/-/parse-json-4.0.0.tgz#be35f5425be1f7f6c747184f98a788cb99477ee0" + integrity sha1-vjX1Qlvh9/bHRxhPmKeIy5lHfuA= dependencies: - extend-shallow "^3.0.0" + error-ex "^1.3.1" + json-parse-better-errors "^1.0.1" -sprintf-js@~1.0.2: - version "1.0.3" - resolved "https://registry.yarnpkg.com/sprintf-js/-/sprintf-js-1.0.3.tgz#04e6926f662895354f3dd015203633b857297e2c" - integrity sha1-BOaSb2YolTVPPdAVIDYzuFcpfiw= +parseurl@~1.3.3: + version "1.3.3" + resolved "https://registry.yarnpkg.com/parseurl/-/parseurl-1.3.3.tgz#9da19e7bee8d12dff0513ed5b76957793bc2e8d4" + integrity sha512-CiyeOxFT/JZyN5m0z9PfXw4SCBJ6Sygz1Dpl0wqjlhDEGGBP1GnsUVEL0p63hoG1fcj3fHynXi9NYO4nWOL+qQ== -sqlite3@^4.0.0: - version "4.2.0" - resolved "https://registry.yarnpkg.com/sqlite3/-/sqlite3-4.2.0.tgz#49026d665e9fc4f922e56fb9711ba5b4c85c4901" - integrity sha512-roEOz41hxui2Q7uYnWsjMOTry6TcNUNmp8audCx18gF10P2NknwdpF+E+HKvz/F2NvPKGGBF4NGc+ZPQ+AABwg== +patch-package@^6.4.7: + version "6.4.7" + resolved "https://registry.yarnpkg.com/patch-package/-/patch-package-6.4.7.tgz#2282d53c397909a0d9ef92dae3fdeb558382b148" + integrity sha512-S0vh/ZEafZ17hbhgqdnpunKDfzHQibQizx9g8yEf5dcVk3KOflOfdufRXQX8CSEkyOQwuM/bNz1GwKvFj54kaQ== dependencies: - nan "^2.12.1" - node-pre-gyp "^0.11.0" + "@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" -sse-z@0.3.0: - version "0.3.0" - resolved "https://registry.yarnpkg.com/sse-z/-/sse-z-0.3.0.tgz#e215db7c303d6c4a4199d80cb63811cc28fa55b9" - integrity sha512-jfcXynl9oAOS9YJ7iqS2JMUEHOlvrRAD+54CENiWnc4xsuVLQVSgmwf7cwOTcBd/uq3XkQKBGojgvEtVXcJ/8w== +path-exists@^3.0.0: + version "3.0.0" + resolved "https://registry.yarnpkg.com/path-exists/-/path-exists-3.0.0.tgz#ce0ebeaa5f78cb18925ea7d810d7b59b010fd515" + integrity sha1-zg6+ql94yxiSXqfYENe1mwEP1RU= -sshpk@^1.7.0: - version "1.16.1" - resolved "https://registry.yarnpkg.com/sshpk/-/sshpk-1.16.1.tgz#fb661c0bef29b39db40769ee39fa70093d6f6877" - 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" +path-exists@^4.0.0: + version "4.0.0" + resolved "https://registry.yarnpkg.com/path-exists/-/path-exists-4.0.0.tgz#513bdbe2d3b95d7762e8c1137efa195c6c61b5b3" + integrity sha512-ak9Qy5Q7jYb2Wwcey5Fpvg2KoAc/ZIhLSLOSBmRmygPsGwkVVt0fZa0qrtMz+m6tJTAHfZQ8FnmB4MG4LWy7/w== -stable@^0.1.8: - version "0.1.8" - resolved "https://registry.yarnpkg.com/stable/-/stable-0.1.8.tgz#836eb3c8382fe2936feaf544631017ce7d47a3cf" - integrity sha512-ji9qxRnOVfcuLDySj9qzhGSEFVobyt1kIOSkj1qZzYLzq7Tos/oUUWvotUPQLlrsidqsK6tBH89Bc9kL5zHA6w== +path-is-absolute@^1.0.0: + version "1.0.1" + resolved "https://registry.yarnpkg.com/path-is-absolute/-/path-is-absolute-1.0.1.tgz#174b9268735534ffbc7ace6bf53a5a9e1b5c5f5f" + integrity sha1-F0uSaHNVNP+8es5r9TpanhtcX18= -static-extend@^0.1.1: - version "0.1.2" - resolved "https://registry.yarnpkg.com/static-extend/-/static-extend-0.1.2.tgz#60809c39cbff55337226fd5e0b520f341f1fb5c6" - integrity sha1-YICcOcv/VTNyJv1eC1IPNB8ftcY= - dependencies: - define-property "^0.2.5" - object-copy "^0.1.0" +path-is-inside@^1.0.2: + version "1.0.2" + resolved "https://registry.yarnpkg.com/path-is-inside/-/path-is-inside-1.0.2.tgz#365417dede44430d1c11af61027facf074bdfc53" + integrity sha1-NlQX3t5EQw0cEa9hAn+s8HS9/FM= -"statuses@>= 1.5.0 < 2", statuses@~1.5.0: - version "1.5.0" - resolved "https://registry.yarnpkg.com/statuses/-/statuses-1.5.0.tgz#161c7dac177659fd9811f43771fa99381478628c" - integrity sha1-Fhx9rBd2Wf2YEfQ3cfqZOBR4Yow= +path-key@^2.0.0, path-key@^2.0.1: + version "2.0.1" + resolved "https://registry.yarnpkg.com/path-key/-/path-key-2.0.1.tgz#411cadb574c5a140d3a4b1910d40d80cc9f40b40" + integrity sha1-QRyttXTFoUDTpLGRDUDYDMn0C0A= -stealthy-require@^1.1.1: - version "1.1.1" - resolved "https://registry.yarnpkg.com/stealthy-require/-/stealthy-require-1.1.1.tgz#35b09875b4ff49f26a777e509b3090a3226bf24b" - integrity sha1-NbCYdbT/SfJqd35QmzCQoyJr8ks= +path-key@^3.1.0: + version "3.1.1" + resolved "https://registry.yarnpkg.com/path-key/-/path-key-3.1.1.tgz#581f6ade658cbba65a0d3380de7753295054f375" + integrity sha512-ojmeN0qd+y0jszEtoY48r0Peq5dwMEkIlCOu6Q5f41lfkswXuKtYrhgoTpLnyIcHm24Uhqx+5Tqm2InSwLhE6Q== -stoppable@^1.1.0: - version "1.1.0" - resolved "https://registry.yarnpkg.com/stoppable/-/stoppable-1.1.0.tgz#32da568e83ea488b08e4d7ea2c3bcc9d75015d5b" - integrity sha512-KXDYZ9dszj6bzvnEMRYvxgeTHU74QBFL54XKtP3nyMuJ81CFYtABZ3bAzL2EdFUaEwJOBOgENyFj3R7oTzDyyw== +path-parse@^1.0.6: + version "1.0.6" + resolved "https://registry.yarnpkg.com/path-parse/-/path-parse-1.0.6.tgz#d62dbb5679405d72c4737ec58600e9ddcf06d24c" + integrity sha512-GSmOT2EbHrINBf9SR7CDELwlJ8AENk3Qn7OikK4nFYAu3Ote2+JYNVvkpAEQm3/TLNEJFD/xZJjzyxg3KBWOzw== -stream-browserify@^2.0.1: - version "2.0.2" - resolved "https://registry.yarnpkg.com/stream-browserify/-/stream-browserify-2.0.2.tgz#87521d38a44aa7ee91ce1cd2a47df0cb49dd660b" - integrity sha512-nX6hmklHs/gr2FuxYDltq8fJA1GDlxKQCz8O/IM4atRqBH8OORmBNgfvW5gG10GT/qQ9u0CzIvr2X5Pkt6ntqg== - dependencies: - inherits "~2.0.1" - readable-stream "^2.0.2" +path-to-regexp@0.1.7: + version "0.1.7" + resolved "https://registry.yarnpkg.com/path-to-regexp/-/path-to-regexp-0.1.7.tgz#df604178005f522f15eb4490e7247a1bfaa67f8c" + integrity sha1-32BBeABfUi8V60SQ5yR6G/qmf4w= -stream-http@^2.7.2: - version "2.8.3" - resolved "https://registry.yarnpkg.com/stream-http/-/stream-http-2.8.3.tgz#b2d242469288a5a27ec4fe8933acf623de6514fc" - integrity sha512-+TSkfINHDo4J+ZobQLWiMouQYB+UVYFttRA94FpEzzJ7ZdqcL4uUUQ7WkdkI4DSozGmgBUE/a47L+38PenXhUw== - dependencies: - builtin-status-codes "^3.0.0" - inherits "^2.0.1" - readable-stream "^2.3.6" - to-arraybuffer "^1.0.0" - xtend "^4.0.0" +path-type@^4.0.0: + version "4.0.0" + resolved "https://registry.yarnpkg.com/path-type/-/path-type-4.0.0.tgz#84ed01c0a7ba380afe09d90a8c180dcd9d03043b" + integrity sha512-gDKb8aZMDeD/tZWs9P6+q0J9Mwkdl6xMV8TjnGP3qJVJ06bdMgkbBlLU8IdfOsIsFz2BW1rNVT3XuNEl8zPAvw== -stream-shift@^1.0.0: - version "1.0.1" - resolved "https://registry.yarnpkg.com/stream-shift/-/stream-shift-1.0.1.tgz#d7088281559ab2778424279b0877da3c392d5a3d" - integrity sha512-AiisoFqQ0vbGcZgQPY1cdP2I76glaVA/RauYR4G4thNFgkTqr90yXTo4LYX60Jl+sIlPNHHdGSwo01AvbKUSVQ== +pathval@^1.1.1: + version "1.1.1" + resolved "https://registry.yarnpkg.com/pathval/-/pathval-1.1.1.tgz#8534e77a77ce7ac5a2512ea21e0fdb8fcf6c3d8d" + integrity sha512-Dp6zGqpTdETdR63lehJYPeIOqpiNBNtc7BpWSLrOje7UaIsE5aY92r/AunQA7rsXvet3lrJ3JnZX29UPTKXyKQ== -stream-to-it@^0.2.0, stream-to-it@^0.2.2: - version "0.2.4" - resolved "https://registry.yarnpkg.com/stream-to-it/-/stream-to-it-0.2.4.tgz#d2fd7bfbd4a899b4c0d6a7e6a533723af5749bd0" - integrity sha512-4vEbkSs83OahpmBybNJXlJd7d6/RxzkkSdT3I0mnGt79Xd2Kk+e1JqbvAvsQfCeKj3aKb0QIWkyK3/n0j506vQ== +pbkdf2@^3.0.17, pbkdf2@^3.0.3: + version "3.1.2" + resolved "https://registry.yarnpkg.com/pbkdf2/-/pbkdf2-3.1.2.tgz#dd822aa0887580e52f1a039dc3eda108efae3075" + integrity sha512-iuh7L6jA7JEGu2WxDwtQP1ddOpaJNC4KlDEFfdQajSGgGPNi4OyDc2R7QnbY2bR9QjBVGwgvTdNJZoE7RaxUMA== dependencies: - get-iterator "^1.0.2" + create-hash "^1.1.2" + create-hmac "^1.1.4" + ripemd160 "^2.0.1" + safe-buffer "^5.0.1" + sha.js "^2.4.8" -streamsearch@0.1.2: - version "0.1.2" - resolved "https://registry.yarnpkg.com/streamsearch/-/streamsearch-0.1.2.tgz#808b9d0e56fc273d809ba57338e929919a1a9f1a" - integrity sha1-gIudDlb8Jz2Am6VzOOkpkZoanxo= +performance-now@^2.1.0: + version "2.1.0" + resolved "https://registry.yarnpkg.com/performance-now/-/performance-now-2.1.0.tgz#6309f4e0e5fa913ec1c69307ae364b4b377c9e7b" + integrity sha1-Ywn04OX6kT7BxpMHrjZLSzd8nns= -strict-uri-encode@^1.0.0: - version "1.1.0" - resolved "https://registry.yarnpkg.com/strict-uri-encode/-/strict-uri-encode-1.1.0.tgz#279b225df1d582b1f54e65addd4352e18faa0713" - integrity sha1-J5siXfHVgrH1TmWt3UNS4Y+qBxM= +picomatch@^2.0.4, picomatch@^2.2.1, picomatch@^2.2.3: + version "2.2.3" + resolved "https://registry.yarnpkg.com/picomatch/-/picomatch-2.2.3.tgz#465547f359ccc206d3c48e46a1bcb89bf7ee619d" + integrity sha512-KpELjfwcCDUb9PeigTs2mBJzXUPzAuP2oPcA989He8Rte0+YUAjw1JVedDhuTKPkHjSYzMN3npC9luThGYEKdg== -string-width@^1.0.1: - version "1.0.2" - resolved "https://registry.yarnpkg.com/string-width/-/string-width-1.0.2.tgz#118bdf5b8cdc51a2a7e70d211e07e2b0b9b107d3" - integrity sha1-EYvfW4zcUaKn5w0hHgfisLmxB9M= - dependencies: - code-point-at "^1.0.0" - is-fullwidth-code-point "^1.0.0" - strip-ansi "^3.0.0" +pify@^4.0.1: + version "4.0.1" + resolved "https://registry.yarnpkg.com/pify/-/pify-4.0.1.tgz#4b2cd25c50d598735c50292224fd8c6df41e3231" + integrity sha512-uB80kBFb/tfd68bVleG9T5GGsGPjJrLAUpR5PZIrhBnIaRTQRjqdJSsIKkOP6OAIFbj7GOrcudc5pNjZ+geV2g== -"string-width@^1.0.2 || 2", string-width@^2.0.0, string-width@^2.1.1: - version "2.1.1" - resolved "https://registry.yarnpkg.com/string-width/-/string-width-2.1.1.tgz#ab93f27a8dc13d28cac815c462143a6d9012ae9e" - integrity sha512-nOqH59deCq9SRHlxq1Aw85Jnt4w6KvLKqWVik6oA9ZklXLNIOlqg4F2yrT1MVaTjAqvVwdfeZ7w7aCvJD7ugkw== - dependencies: - is-fullwidth-code-point "^2.0.0" - strip-ansi "^4.0.0" +postinstall-postinstall@^2.1.0: + version "2.1.0" + resolved "https://registry.yarnpkg.com/postinstall-postinstall/-/postinstall-postinstall-2.1.0.tgz#4f7f77441ef539d1512c40bd04c71b06a4704ca3" + integrity sha512-7hQX6ZlZXIoRiWNrbMQaLzUUfH+sSx39u8EJ9HYuDc1kLo9IXKWjM5RSquZN1ad5GnH8CGFM78fsAAQi3OKEEQ== -string-width@^3.0.0, string-width@^3.1.0: - version "3.1.0" - resolved "https://registry.yarnpkg.com/string-width/-/string-width-3.1.0.tgz#22767be21b62af1081574306f69ac51b62203961" - integrity sha512-vafcv6KjVZKSgz06oM/H6GDBrAtz8vdhQakGjFIvNrHA6y3HCF1CInLy+QLq8dTJPQ1b+KDUqDFctkdRW44e1w== - dependencies: - emoji-regex "^7.0.1" - is-fullwidth-code-point "^2.0.0" - strip-ansi "^5.1.0" +prelude-ls@^1.2.1: + version "1.2.1" + resolved "https://registry.yarnpkg.com/prelude-ls/-/prelude-ls-1.2.1.tgz#debc6489d7a6e6b0e7611888cec880337d316396" + integrity sha512-vkcDPrRZo1QZLbn5RLGPpg/WmIQ65qoWWhcGKf/b5eplkkarX0m9z8ppCat4mlOqUsWpyNuYgO3VRyrYHSzX5g== -string-width@^4.1.0, string-width@^4.2.0, string-width@^4.2.2: - version "4.2.2" - resolved "https://registry.yarnpkg.com/string-width/-/string-width-4.2.2.tgz#dafd4f9559a7585cfba529c6a0a4f73488ebd4c5" - integrity sha512-XBJbT3N4JhVumXE0eoLU9DCjcaF92KLNqTmFCnG1pf8duUxFGwtP6AD6nkjw9a3IdiRtL3E2w3JDiE/xi3vOeA== - dependencies: - emoji-regex "^8.0.0" - is-fullwidth-code-point "^3.0.0" - strip-ansi "^6.0.0" +prelude-ls@~1.1.2: + version "1.1.2" + resolved "https://registry.yarnpkg.com/prelude-ls/-/prelude-ls-1.1.2.tgz#21932a549f5e52ffd9a827f570e04be62a97da54" + integrity sha1-IZMqVJ9eUv/ZqCf1cOBL5iqX2lQ= -string.prototype.trimend@^1.0.4: +prepend-http@^1.0.1: version "1.0.4" - resolved "https://registry.yarnpkg.com/string.prototype.trimend/-/string.prototype.trimend-1.0.4.tgz#e75ae90c2942c63504686c18b287b4a0b1a45f80" - integrity sha512-y9xCjw1P23Awk8EvTpcyL2NIr1j7wJ39f+k6lvRnSMz+mz9CGz9NYPelDk42kOz6+ql8xjfK8oYzy3jAP5QU5A== - dependencies: - call-bind "^1.0.2" - define-properties "^1.1.3" + resolved "https://registry.yarnpkg.com/prepend-http/-/prepend-http-1.0.4.tgz#d4f4562b0ce3696e41ac52d0e002e57a635dc6dc" + integrity sha1-1PRWKwzjaW5BrFLQ4ALlemNdxtw= -string.prototype.trimstart@^1.0.4: - version "1.0.4" - resolved "https://registry.yarnpkg.com/string.prototype.trimstart/-/string.prototype.trimstart-1.0.4.tgz#b36399af4ab2999b4c9c648bd7a3fb2bb26feeed" - integrity sha512-jh6e984OBfvxS50tdY2nRZnoC5/mLFKOREQfw8t5yytkoUsJRNxvI/E39qu1sD0OtWI3OC0XgKSmcWwziwYuZw== +prepend-http@^2.0.0: + version "2.0.0" + resolved "https://registry.yarnpkg.com/prepend-http/-/prepend-http-2.0.0.tgz#e92434bfa5ea8c19f41cdfd401d741a3c819d897" + integrity sha1-6SQ0v6XqjBn0HN/UAddBo8gZ2Jc= + +prettier-linter-helpers@^1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/prettier-linter-helpers/-/prettier-linter-helpers-1.0.0.tgz#d23d41fe1375646de2d0104d3454a3008802cf7b" + integrity sha512-GbK2cP9nraSSUF9N2XwUwqfzlAFlMNYYl+ShE/V+H8a9uNl/oUqB1w2EL54Jh0OlyRSd8RfWYJ3coVS4TROP2w== dependencies: - call-bind "^1.0.2" - define-properties "^1.1.3" + fast-diff "^1.1.2" -string_decoder@^1.0.0, string_decoder@^1.1.1: - version "1.3.0" - resolved "https://registry.yarnpkg.com/string_decoder/-/string_decoder-1.3.0.tgz#42f114594a46cf1a8e30b0a84f56c78c3edac21e" - integrity sha512-hkRX8U1WjJFd8LsDJ2yQ/wWWxaopEsABU1XfkM8A+j0+85JAGppt16cr1Whg6KIbb4okU6Mql6BOj+uup/wKeA== +prettier-plugin-solidity@^1.0.0-beta.17: + version "1.0.0-beta.17" + resolved "https://registry.yarnpkg.com/prettier-plugin-solidity/-/prettier-plugin-solidity-1.0.0-beta.17.tgz#fc0fe977202b6503763a338383efeceaa6c7661e" + integrity sha512-YFkxV/rHi1mphi17/XKcJ9QjZlb+L/J0yY2erix21BZfzPv2BN9dfmSRGr/poDp/FBOFSW+jteP2BCMe7HndVQ== dependencies: - safe-buffer "~5.2.0" + "@solidity-parser/parser" "^0.13.2" + emoji-regex "^9.2.2" + escape-string-regexp "^4.0.0" + semver "^7.3.5" + solidity-comments-extractor "^0.0.7" + string-width "^4.2.2" -string_decoder@~0.10.x: - version "0.10.31" - resolved "https://registry.yarnpkg.com/string_decoder/-/string_decoder-0.10.31.tgz#62e203bc41766c6c28c9fc84301dab1c5310fa94" - integrity sha1-YuIDvEF2bGwoyfyEMB2rHFMQ+pQ= +prettier@^1.14.3: + version "1.19.1" + resolved "https://registry.yarnpkg.com/prettier/-/prettier-1.19.1.tgz#f7d7f5ff8a9cd872a7be4ca142095956a60797cb" + integrity sha512-s7PoyDv/II1ObgQunCbB9PdLmUcBZcnWOcxDh7O0N/UwDEsHyqkW+Qh28jW+mVuCdx7gLB0BotYI1Y6uI9iyew== -string_decoder@~1.1.1: - version "1.1.1" - resolved "https://registry.yarnpkg.com/string_decoder/-/string_decoder-1.1.1.tgz#9cf1611ba62685d7030ae9e4ba34149c3af03fc8" - integrity sha512-n/ShnvDi6FHbbVfviro+WojiFzv+s8MPMHBczVePfUpDJLwoLT0ht1l4YwBCbi8pJAveEEdnkHyPyTP/mzRfwg== - dependencies: - safe-buffer "~5.1.0" +prettier@^2.1.2: + version "2.3.0" + resolved "https://registry.yarnpkg.com/prettier/-/prettier-2.3.0.tgz#b6a5bf1284026ae640f17f7ff5658a7567fc0d18" + integrity sha512-kXtO4s0Lz/DW/IJ9QdWhAf7/NmPWQXkFr/r/WkR3vyI+0v8amTDxiaQSLzs8NBlytfLWX/7uQUMIW677yLKl4w== -strip-ansi@^3.0.0, strip-ansi@^3.0.1: - version "3.0.1" - resolved "https://registry.yarnpkg.com/strip-ansi/-/strip-ansi-3.0.1.tgz#6a385fb8853d952d5ff05d0e8aaf94278dc63dcf" - integrity sha1-ajhfuIU9lS1f8F0Oiq+UJ43GPc8= - dependencies: - ansi-regex "^2.0.0" +prettier@^2.3.2: + version "2.3.2" + resolved "https://registry.yarnpkg.com/prettier/-/prettier-2.3.2.tgz#ef280a05ec253712e486233db5c6f23441e7342d" + integrity sha512-lnJzDfJ66zkMy58OL5/NY5zp70S7Nz6KqcKkXYzn2tMVrNxvbqaBpg7H3qHaLxCJ5lNMsGuM8+ohS7cZrthdLQ== -strip-ansi@^4.0.0: - version "4.0.0" - resolved "https://registry.yarnpkg.com/strip-ansi/-/strip-ansi-4.0.0.tgz#a8479022eb1ac368a871389b635262c505ee368f" - integrity sha1-qEeQIusaw2iocTibY1JixQXuNo8= - dependencies: - ansi-regex "^3.0.0" +printj@~1.1.0: + version "1.1.2" + resolved "https://registry.yarnpkg.com/printj/-/printj-1.1.2.tgz#d90deb2975a8b9f600fb3a1c94e3f4c53c78a222" + integrity sha512-zA2SmoLaxZyArQTOPj5LXecR+RagfPSU5Kw1qP+jkWeNlrq+eJZyY2oS68SU1Z/7/myXM4lo9716laOFAVStCQ== -strip-ansi@^5.0.0, strip-ansi@^5.1.0, strip-ansi@^5.2.0: - version "5.2.0" - resolved "https://registry.yarnpkg.com/strip-ansi/-/strip-ansi-5.2.0.tgz#8c9a536feb6afc962bdfa5b104a5091c1ad9c0ae" - integrity sha512-DuRs1gKbBqsMKIZlrffwlug8MHkcnpjs5VPmL1PAh+mA30U0DTotfDZ0d2UUsXpPmPmMMJ6W773MaA3J+lbiWA== - dependencies: - ansi-regex "^4.1.0" +process-nextick-args@~2.0.0: + version "2.0.1" + resolved "https://registry.yarnpkg.com/process-nextick-args/-/process-nextick-args-2.0.1.tgz#7820d9b16120cc55ca9ae7792680ae7dba6d7fe2" + integrity sha512-3ouUOpQhtgrbOa17J7+uxOTpITYWaGP7/AhoR3+A+/1e9skrzelGi/dXzEYyvbxubEF6Wn2ypscTKiKJFFn1ag== -strip-ansi@^6.0.0: - version "6.0.0" - resolved "https://registry.yarnpkg.com/strip-ansi/-/strip-ansi-6.0.0.tgz#0b1571dd7669ccd4f3e06e14ef1eed26225ae532" - integrity sha512-AuvKTrTfQNYNIctbR1K/YGTR1756GycPsg7b9bdV9Duqur4gv6aKqHXah67Z8ImS7WEz5QVcOtlfW2rZEugt6w== - dependencies: - ansi-regex "^5.0.0" +process@^0.11.10: + version "0.11.10" + resolved "https://registry.yarnpkg.com/process/-/process-0.11.10.tgz#7332300e840161bda3e69a1d1d91a7d4bc16f182" + integrity sha1-czIwDoQBYb2j5podHZGn1LwW8YI= -strip-ansi@~0.1.0: - version "0.1.1" - resolved "https://registry.yarnpkg.com/strip-ansi/-/strip-ansi-0.1.1.tgz#39e8a98d044d150660abe4a6808acf70bb7bc991" - integrity sha1-OeipjQRNFQZgq+SmgIrPcLt7yZE= +progress@^2.0.0: + version "2.0.3" + resolved "https://registry.yarnpkg.com/progress/-/progress-2.0.3.tgz#7e8cf8d8f5b8f239c1bc68beb4eb78567d572ef8" + integrity sha512-7PiHtLll5LdnKIMw100I+8xJXR5gW2QwWYkT6iJva0bXitZKa/XMrSbdmg3r2Xnaidz9Qumd0VPaMrZlF9V9sA== -strip-bom-stream@^1.0.0: - version "1.0.0" - resolved "https://registry.yarnpkg.com/strip-bom-stream/-/strip-bom-stream-1.0.0.tgz#e7144398577d51a6bed0fa1994fa05f43fd988ee" - integrity sha1-5xRDmFd9Uaa+0PoZlPoF9D/ZiO4= +promise@^8.0.0: + version "8.1.0" + resolved "https://registry.yarnpkg.com/promise/-/promise-8.1.0.tgz#697c25c3dfe7435dd79fcd58c38a135888eaf05e" + integrity sha512-W04AqnILOL/sPRXziNicCjSNRruLAuIHEOVBazepu0545DDNGYHz7ar9ZgZ1fMU8/MA4mVxp5rkBWRi6OXIy3Q== dependencies: - first-chunk-stream "^1.0.0" - strip-bom "^2.0.0" + asap "~2.0.6" -strip-bom@2.X, strip-bom@^2.0.0: - version "2.0.0" - resolved "https://registry.yarnpkg.com/strip-bom/-/strip-bom-2.0.0.tgz#6219a85616520491f35788bdbf1447a99c7e6b0e" - integrity sha1-YhmoVhZSBJHzV4i9vxRHqZx+aw4= +proxy-addr@~2.0.5: + version "2.0.6" + resolved "https://registry.yarnpkg.com/proxy-addr/-/proxy-addr-2.0.6.tgz#fdc2336505447d3f2f2c638ed272caf614bbb2bf" + integrity sha512-dh/frvCBVmSsDYzw6n926jv974gddhkFPfiN8hPOi30Wax25QZyZEGveluCgliBnqmuM+UJmBErbAUFIoDbjOw== dependencies: - is-utf8 "^0.2.0" + forwarded "~0.1.2" + ipaddr.js "1.9.1" -strip-bom@^3.0.0: - version "3.0.0" - resolved "https://registry.yarnpkg.com/strip-bom/-/strip-bom-3.0.0.tgz#2334c18e9c759f7bdd56fdef7e9ae3d588e68ed3" - integrity sha1-IzTBjpx1n3vdVv3vfprj1YjmjtM= +prr@~1.0.1: + version "1.0.1" + resolved "https://registry.yarnpkg.com/prr/-/prr-1.0.1.tgz#d3fc114ba06995a45ec6893f484ceb1d78f5f476" + integrity sha1-0/wRS6BplaRexok/SEzrHXj19HY= -strip-dirs@^2.0.0: - version "2.1.0" - resolved "https://registry.yarnpkg.com/strip-dirs/-/strip-dirs-2.1.0.tgz#4987736264fc344cf20f6c34aca9d13d1d4ed6c5" - integrity sha512-JOCxOeKLm2CAS73y/U4ZeZPTkE+gNVCzKt7Eox84Iej1LT/2pTWYpZKJuxwQpvX1LiZb1xokNR7RLfuBAa7T3g== - dependencies: - is-natural-number "^4.0.1" +psl@^1.1.28: + version "1.8.0" + resolved "https://registry.yarnpkg.com/psl/-/psl-1.8.0.tgz#9326f8bcfb013adcc005fdff056acce020e51c24" + integrity sha512-RIdOzyoavK+hA18OGGWDqUTsCLhtA7IcZ/6NCs4fFJaHBDab+pDDmDIByWFRQJq2Cd7r1OoQxBGKOaztq+hjIQ== -strip-eof@^1.0.0: - version "1.0.0" - resolved "https://registry.yarnpkg.com/strip-eof/-/strip-eof-1.0.0.tgz#bb43ff5598a6eb05d89b59fcd129c983313606bf" - integrity sha1-u0P/VZim6wXYm1n80SnJgzE2Br8= +public-encrypt@^4.0.0: + version "4.0.3" + resolved "https://registry.yarnpkg.com/public-encrypt/-/public-encrypt-4.0.3.tgz#4fcc9d77a07e48ba7527e7cbe0de33d0701331e0" + integrity sha512-zVpa8oKZSz5bTMTFClc1fQOnyyEzpl5ozpi1B5YcvBrdohMjH2rfsBtyXcuNuwjsDIXmBYlF2N5FlJYhR29t8Q== + dependencies: + bn.js "^4.1.0" + browserify-rsa "^4.0.0" + create-hash "^1.1.0" + parse-asn1 "^5.0.0" + randombytes "^2.0.1" + safe-buffer "^5.1.2" -strip-hex-prefix@1.0.0: - version "1.0.0" - resolved "https://registry.yarnpkg.com/strip-hex-prefix/-/strip-hex-prefix-1.0.0.tgz#0c5f155fef1151373377de9dbb588da05500e36f" - integrity sha1-DF8VX+8RUTczd96du1iNoFUA428= +pump@^3.0.0: + version "3.0.0" + resolved "https://registry.yarnpkg.com/pump/-/pump-3.0.0.tgz#b4a2116815bde2f4e1ea602354e8c75565107a64" + integrity sha512-LwZy+p3SFs1Pytd/jYct4wpv49HiYCqd9Rlc5ZVdk0V+8Yzv6jR5Blk3TRmPL1ft69TxP0IMZGJ+WPFU2BFhww== dependencies: - is-hex-prefixed "1.0.0" + end-of-stream "^1.1.0" + once "^1.3.1" -strip-indent@^2.0.0: - version "2.0.0" - resolved "https://registry.yarnpkg.com/strip-indent/-/strip-indent-2.0.0.tgz#5ef8db295d01e6ed6cbf7aab96998d7822527b68" - integrity sha1-XvjbKV0B5u1sv3qrlpmNeCJSe2g= +punycode@2.1.0: + version "2.1.0" + resolved "https://registry.yarnpkg.com/punycode/-/punycode-2.1.0.tgz#5f863edc89b96db09074bad7947bf09056ca4e7d" + integrity sha1-X4Y+3Im5bbCQdLrXlHvwkFbKTn0= -strip-json-comments@2.0.1, strip-json-comments@~2.0.1: - version "2.0.1" - resolved "https://registry.yarnpkg.com/strip-json-comments/-/strip-json-comments-2.0.1.tgz#3c531942e908c2697c0ec344858c286c7ca0a60a" - integrity sha1-PFMZQukIwml8DsNEhYwobHygpgo= +punycode@^2.1.0, punycode@^2.1.1: + version "2.1.1" + resolved "https://registry.yarnpkg.com/punycode/-/punycode-2.1.1.tgz#b58b010ac40c22c5657616c8d2c2c02c7bf479ec" + integrity sha512-XRsRjdf+j5ml+y/6GKHPZbrF/8p2Yga0JPtdqTIY2Xe5ohJPD9saDJJLPvp9+NSBprVvevdXZybnj2cv8OEd0A== -strip-json-comments@3.0.1, strip-json-comments@^3.0.1: - version "3.0.1" - resolved "https://registry.yarnpkg.com/strip-json-comments/-/strip-json-comments-3.0.1.tgz#85713975a91fb87bf1b305cca77395e40d2a64a7" - integrity sha512-VTyMAUfdm047mwKl+u79WIdrZxtFtn+nBxHeb844XBQ9uMNTuTHdx2hc5RiAJYqwTj3wc/xe5HLSdJSkJ+WfZw== +qs@6.7.0: + version "6.7.0" + resolved "https://registry.yarnpkg.com/qs/-/qs-6.7.0.tgz#41dc1a015e3d581f1621776be31afb2876a9b1bc" + integrity sha512-VCdBRNFTX1fyE7Nb6FYoURo/SPe62QCaAyzJvUjwRaIsc+NePBEniHlvxFmmX56+HZphIGtV0XeCirBtpDrTyQ== -sublevel-pouchdb@7.2.2: - version "7.2.2" - resolved "https://registry.yarnpkg.com/sublevel-pouchdb/-/sublevel-pouchdb-7.2.2.tgz#49e46cd37883bf7ff5006d7c5b9bcc7bcc1f422f" - integrity sha512-y5uYgwKDgXVyPZceTDGWsSFAhpSddY29l9PJbXqMJLfREdPmQTY8InpatohlEfCXX7s1LGcrfYAhxPFZaJOLnQ== +qs@^6.4.0, qs@^6.7.0, qs@^6.9.4: + version "6.10.1" + resolved "https://registry.yarnpkg.com/qs/-/qs-6.10.1.tgz#4931482fa8d647a5aab799c5271d2133b981fb6a" + integrity sha512-M528Hph6wsSVOBiYUnGf+K/7w0hNshs/duGsNXPUCLH5XAqjEtiPGwNONLV0tBH8NoGb0mvD5JubnUTrujKDTg== dependencies: - inherits "2.0.4" - level-codec "9.0.2" - ltgt "2.2.1" - readable-stream "1.1.14" - -subscriptions-transport-ws@^0.9.11, subscriptions-transport-ws@^0.9.16: - version "0.9.18" - resolved "https://registry.yarnpkg.com/subscriptions-transport-ws/-/subscriptions-transport-ws-0.9.18.tgz#bcf02320c911fbadb054f7f928e51c6041a37b97" - integrity sha512-tztzcBTNoEbuErsVQpTN2xUNN/efAZXyCyL5m3x4t6SKrEiTL2N8SaKWBFWM4u56pL79ULif3zjyeq+oV+nOaA== - dependencies: - backo2 "^1.0.2" - eventemitter3 "^3.1.0" - iterall "^1.2.1" - symbol-observable "^1.0.4" - ws "^5.2.0" - -super-split@^1.1.0: - version "1.1.0" - resolved "https://registry.yarnpkg.com/super-split/-/super-split-1.1.0.tgz#43b3ba719155f4d43891a32729d59b213d9155fc" - integrity sha512-I4bA5mgcb6Fw5UJ+EkpzqXfiuvVGS/7MuND+oBxNFmxu3ugLNrdIatzBLfhFRMVMLxgSsRy+TjIktgkF9RFSNQ== + side-channel "^1.0.4" -supports-color@6.0.0: - version "6.0.0" - resolved "https://registry.yarnpkg.com/supports-color/-/supports-color-6.0.0.tgz#76cfe742cf1f41bb9b1c29ad03068c05b4c0e40a" - integrity sha512-on9Kwidc1IUQo+bQdhi8+Tijpo0e1SS6RoGo2guUwn5vdaxw8RXOF9Vb2ws+ihWOmh4JnCJOvaziZWP1VABaLg== - dependencies: - has-flag "^3.0.0" +qs@~6.5.2: + version "6.5.2" + resolved "https://registry.yarnpkg.com/qs/-/qs-6.5.2.tgz#cb3ae806e8740444584ef154ce8ee98d403f3e36" + integrity sha512-N5ZAX4/LxJmF+7wN74pUD6qAh9/wnvdQcjq9TZjevvXzSUo7bfmw91saqMjzGS2xq91/odN2dW/WOl7qQHNDGA== -supports-color@7.1.0: - version "7.1.0" - resolved "https://registry.yarnpkg.com/supports-color/-/supports-color-7.1.0.tgz#68e32591df73e25ad1c4b49108a2ec507962bfd1" - integrity sha512-oRSIpR8pxT1Wr2FquTNnGet79b3BWljqOuoW/h4oBhxJ/HUbX5nX6JSruTkvXDCFMwDPvsaTTbvMLKZWSy0R5g== +query-string@^5.0.1: + version "5.1.1" + resolved "https://registry.yarnpkg.com/query-string/-/query-string-5.1.1.tgz#a78c012b71c17e05f2e3fa2319dd330682efb3cb" + integrity sha512-gjWOsm2SoGlgLEdAGt7a6slVOk9mGiXmPFMqrEhLQ68rhQuBnpfs3+EmlvqKyxnCo9/PPlF+9MtY02S1aFg+Jw== dependencies: - has-flag "^4.0.0" + decode-uri-component "^0.2.0" + object-assign "^4.1.0" + strict-uri-encode "^1.0.0" -supports-color@^2.0.0: - version "2.0.0" - resolved "https://registry.yarnpkg.com/supports-color/-/supports-color-2.0.0.tgz#535d045ce6b6363fa40117084629995e9df324c7" - integrity sha1-U10EXOa2Nj+kARcIRimZXp3zJMc= +queue-microtask@^1.2.2: + version "1.2.3" + resolved "https://registry.yarnpkg.com/queue-microtask/-/queue-microtask-1.2.3.tgz#4929228bbc724dfac43e0efb058caf7b6cfb6243" + integrity sha512-NuaNSa6flKT5JaSYQzJok04JzTL1CA6aGhv5rfLW3PgqA+M2ChpZQnAC8h8i4ZFkBS8X5RqkDBHA7r4hej3K9A== -supports-color@^3.1.0: - version "3.2.3" - resolved "https://registry.yarnpkg.com/supports-color/-/supports-color-3.2.3.tgz#65ac0504b3954171d8a64946b2ae3cbb8a5f54f6" - integrity sha1-ZawFBLOVQXHYpklGsq48u4pfVPY= +randombytes@^2.0.0, randombytes@^2.0.1, randombytes@^2.0.5, randombytes@^2.1.0: + version "2.1.0" + resolved "https://registry.yarnpkg.com/randombytes/-/randombytes-2.1.0.tgz#df6f84372f0270dc65cdf6291349ab7a473d4f2a" + integrity sha512-vYl3iOX+4CKUWuxGi9Ukhie6fsqXqS9FE2Zaic4tNFD2N2QQaXOMFbuKK4QmDHC0JO6B1Zp41J0LpT0oR68amQ== dependencies: - has-flag "^1.0.0" + safe-buffer "^5.1.0" -supports-color@^4.2.1: - version "4.5.0" - resolved "https://registry.yarnpkg.com/supports-color/-/supports-color-4.5.0.tgz#be7a0de484dec5c5cddf8b3d59125044912f635b" - integrity sha1-vnoN5ITexcXN34s9WRJQRJEvY1s= +randomfill@^1.0.3: + version "1.0.4" + resolved "https://registry.yarnpkg.com/randomfill/-/randomfill-1.0.4.tgz#c92196fc86ab42be983f1bf31778224931d61458" + integrity sha512-87lcbR8+MhcWcUiQ+9e+Rwx8MyR2P7qnt15ynUlbm3TU/fjbgz4GsvfSUDTemtCCtVCqb4ZcEFlyPNTh9bBTLw== dependencies: - has-flag "^2.0.0" + randombytes "^2.0.5" + safe-buffer "^5.1.0" -supports-color@^5.3.0: - version "5.5.0" - resolved "https://registry.yarnpkg.com/supports-color/-/supports-color-5.5.0.tgz#e2e69a44ac8772f78a1ec0b35b689df6530efc8f" - integrity sha512-QjVjwdXIt408MIiAqCX4oUKsgU2EqAGzs2Ppkm4aQYbjm+ZEWEcW4SfFNTr4uMNZma0ey4f5lgLrkB0aX0QMow== - dependencies: - has-flag "^3.0.0" +range-parser@~1.2.1: + version "1.2.1" + resolved "https://registry.yarnpkg.com/range-parser/-/range-parser-1.2.1.tgz#3cf37023d199e1c24d1a55b84800c2f3e6468031" + integrity sha512-Hrgsx+orqoygnmhFbKaHE6c296J+HTAQXoxEF6gNupROmmGJRoyzfG3ccAveqCBrwr/2yxQ5BVd/GTl5agOwSg== -supports-color@^7.1.0: - version "7.2.0" - resolved "https://registry.yarnpkg.com/supports-color/-/supports-color-7.2.0.tgz#1b7dcdcb32b8138801b3e478ba6a51caa89648da" - integrity sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw== +raw-body@2.4.0: + version "2.4.0" + resolved "https://registry.yarnpkg.com/raw-body/-/raw-body-2.4.0.tgz#a1ce6fb9c9bc356ca52e89256ab59059e13d0332" + integrity sha512-4Oz8DUIwdvoa5qMJelxipzi/iJIi40O5cGV1wNYp5hvZP8ZN0T+jiNkL0QepXs+EsQ9XJ8ipEDoiH70ySUJP3Q== dependencies: - has-flag "^4.0.0" + bytes "3.1.0" + http-errors "1.7.2" + iconv-lite "0.4.24" + unpipe "1.0.0" -swap-case@^1.1.0: - version "1.1.2" - resolved "https://registry.yarnpkg.com/swap-case/-/swap-case-1.1.2.tgz#c39203a4587385fad3c850a0bd1bcafa081974e3" - integrity sha1-w5IDpFhzhfrTyFCgvRvK+ggZdOM= +raw-body@^2.4.1: + version "2.4.1" + resolved "https://registry.yarnpkg.com/raw-body/-/raw-body-2.4.1.tgz#30ac82f98bb5ae8c152e67149dac8d55153b168c" + integrity sha512-9WmIKF6mkvA0SLmA2Knm9+qj89e+j1zqgyn8aXGd7+nAduPoqgI9lO57SAZNn/Byzo5P7JhXTyg9PzaJbH73bA== dependencies: - lower-case "^1.1.1" - upper-case "^1.1.1" + bytes "3.1.0" + http-errors "1.7.3" + iconv-lite "0.4.24" + unpipe "1.0.0" -swarm-js@0.1.39: - version "0.1.39" - resolved "https://registry.yarnpkg.com/swarm-js/-/swarm-js-0.1.39.tgz#79becb07f291d4b2a178c50fee7aa6e10342c0e8" - integrity sha512-QLMqL2rzF6n5s50BptyD6Oi0R1aWlJC5Y17SRIVXRj6OR1DRIPM7nepvrxxkjA1zNzFz6mUOMjfeqeDaWB7OOg== +readable-stream@^2.2.2: + version "2.3.7" + resolved "https://registry.yarnpkg.com/readable-stream/-/readable-stream-2.3.7.tgz#1eca1cf711aef814c04f62252a36a62f6cb23b57" + integrity sha512-Ebho8K4jIbHAxnuxi7o42OrZgF/ZTNcsZj6nRKyUmkhLFq8CHItp/fy6hQZuZmP/n3yZ9VBUbp4zz/mX8hmYPw== dependencies: - bluebird "^3.5.0" - buffer "^5.0.5" - decompress "^4.0.0" - 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-promise "^0.1.2" + 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" -swarm-js@^0.1.40: - version "0.1.40" - resolved "https://registry.yarnpkg.com/swarm-js/-/swarm-js-0.1.40.tgz#b1bc7b6dcc76061f6c772203e004c11997e06b99" - integrity sha512-yqiOCEoA4/IShXkY3WKwP5PvZhmoOOD8clsKA7EEcRILMkTEYHCQ21HDCAcVpmIxZq4LyZvWeRJ6quIyHk1caA== +readable-stream@^3.1.0, readable-stream@^3.4.0, readable-stream@^3.6.0: + version "3.6.0" + resolved "https://registry.yarnpkg.com/readable-stream/-/readable-stream-3.6.0.tgz#337bbda3adc0706bd3e024426a286d4b4b2c9198" + integrity sha512-BViHy7LKeTz4oNnkcLJ+lVSL6vpiFeX6/d3oSH8zCW7UxP2onchk+vTGB143xuFjHS3deTgkKoXXymXqymiIdA== dependencies: - 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" - -symbol-observable@^1.0.3, symbol-observable@^1.0.4, symbol-observable@^1.2.0: - version "1.2.0" - resolved "https://registry.yarnpkg.com/symbol-observable/-/symbol-observable-1.2.0.tgz#c22688aed4eab3cdc2dfeacbb561660560a00804" - integrity sha512-e900nM8RRtGhlV36KGEU9k65K3mPb1WV70OdjfxlG2EAuM1noi/E/BaW/uMhL7bPEssK8QV57vN3esixjUvcXQ== - -symbol-observable@^2.0.0: - version "2.0.3" - resolved "https://registry.yarnpkg.com/symbol-observable/-/symbol-observable-2.0.3.tgz#5b521d3d07a43c351055fa43b8355b62d33fd16a" - integrity sha512-sQV7phh2WCYAn81oAkakC5qjq2Ml0g8ozqz03wOGnx9dDlG1de6yrF+0RAzSJD8fPUow3PTSMf2SAbOGxb93BA== - -"symbol-tree@>= 3.1.0 < 4.0.0": - version "3.2.4" - resolved "https://registry.yarnpkg.com/symbol-tree/-/symbol-tree-3.2.4.tgz#430637d248ba77e078883951fb9aa0eed7c63fa2" - integrity sha512-9QNk5KwDF+Bvz+PyObkmSYjI5ksVUYtjW7AU22r2NKcfLJcXp96hkDWU3+XndOsUb+AQ9QhfzfCT2O+CNWT5Tw== - -symbol@^0.2.1: - version "0.2.3" - resolved "https://registry.yarnpkg.com/symbol/-/symbol-0.2.3.tgz#3b9873b8a901e47c6efe21526a3ac372ef28bbc7" - integrity sha1-O5hzuKkB5Hxu/iFSajrDcu8ou8c= + inherits "^2.0.3" + string_decoder "^1.1.1" + util-deprecate "^1.0.1" -sync-fetch@0.3.0: - version "0.3.0" - resolved "https://registry.yarnpkg.com/sync-fetch/-/sync-fetch-0.3.0.tgz#77246da949389310ad978ab26790bb05f88d1335" - integrity sha512-dJp4qg+x4JwSEW1HibAuMi0IIrBI3wuQr2GimmqB7OXR50wmwzfdusG+p39R9w3R6aFtZ2mzvxvWKQ3Bd/vx3g== +readdirp@~3.2.0: + version "3.2.0" + resolved "https://registry.yarnpkg.com/readdirp/-/readdirp-3.2.0.tgz#c30c33352b12c96dfb4b895421a49fd5a9593839" + integrity sha512-crk4Qu3pmXwgxdSgGhgA/eXiJAPQiX4GMOZZMXnqKxHX7TaoL+3gQVo/WeuAiogr07DpnfjIMpXXa+PAIvwPGQ== dependencies: - buffer "^5.7.0" - node-fetch "^2.6.1" + picomatch "^2.0.4" -sync-request@^6.0.0: - version "6.1.0" - resolved "https://registry.yarnpkg.com/sync-request/-/sync-request-6.1.0.tgz#e96217565b5e50bbffe179868ba75532fb597e68" - integrity sha512-8fjNkrNlNCrVc/av+Jn+xxqfCjYaBoHqCsDz6mt030UMxJGr+GSfCV1dQt2gRtlL63+VPidwDVLr7V2OcTSdRw== +readdirp@~3.5.0: + version "3.5.0" + resolved "https://registry.yarnpkg.com/readdirp/-/readdirp-3.5.0.tgz#9ba74c019b15d365278d2e91bb8c48d7b4d42c9e" + integrity sha512-cMhu7c/8rdhkHXWsY+osBhfSy0JikwpHK/5+imo+LpeasTF8ouErHrlYkwT0++njiyuDvc7OFY5T3ukvZ8qmFQ== dependencies: - http-response-object "^3.0.1" - sync-rpc "^1.2.1" - then-request "^6.0.0" + picomatch "^2.2.1" -sync-rpc@^1.2.1: - version "1.3.6" - resolved "https://registry.yarnpkg.com/sync-rpc/-/sync-rpc-1.3.6.tgz#b2e8b2550a12ccbc71df8644810529deb68665a7" - integrity sha512-J8jTXuZzRlvU7HemDgHi3pGnh/rkoqR/OZSjhTyyZrEkkYQbk7Z33AXp37mkPfPpfdOuj7Ex3H/TJM1z48uPQw== +readdirp@~3.6.0: + version "3.6.0" + resolved "https://registry.yarnpkg.com/readdirp/-/readdirp-3.6.0.tgz#74a370bd857116e245b29cc97340cd431a02a6c7" + integrity sha512-hOS089on8RduqdbhvQ5Z37A0ESjsqz6qnRcffsMU3495FuTdqSm+7bhJ29JvIOsBDEEnan5DPu9t3To9VRlMzA== dependencies: - get-port "^3.1.0" - -taffydb@2.7.3: - version "2.7.3" - resolved "https://registry.yarnpkg.com/taffydb/-/taffydb-2.7.3.tgz#2ad37169629498fca5bc84243096d3cde0ec3a34" - integrity sha1-KtNxaWKUmPylvIQkMJbTzeDsOjQ= - -tapable@^0.2.7: - version "0.2.9" - resolved "https://registry.yarnpkg.com/tapable/-/tapable-0.2.9.tgz#af2d8bbc9b04f74ee17af2b4d9048f807acd18a8" - integrity sha512-2wsvQ+4GwBvLPLWsNfLCDYGsW6xb7aeC6utq2Qh0PFwgEy7K7dsma9Jsmb2zSQj7GvYAyUGSntLtsv++GmgL1A== - -tar-stream@^1.5.2: - version "1.6.2" - resolved "https://registry.yarnpkg.com/tar-stream/-/tar-stream-1.6.2.tgz#8ea55dab37972253d9a9af90fdcd559ae435c555" - integrity sha512-rzS0heiNf8Xn7/mpdSVVSMAWAoy9bfb1WOTYC78Z0UQKeKa/CWS8FOq0lKGNa8DWKAn9gxjCvMLYc5PGXYlK2A== - dependencies: - bl "^1.0.0" - buffer-alloc "^1.2.0" - end-of-stream "^1.0.0" - fs-constants "^1.0.0" - readable-stream "^2.3.0" - to-buffer "^1.1.1" - xtend "^4.0.0" + picomatch "^2.2.1" -tar@^4, tar@^4.0.2: - version "4.4.13" - resolved "https://registry.yarnpkg.com/tar/-/tar-4.4.13.tgz#43b364bc52888d555298637b10d60790254ab525" - integrity sha512-w2VwSrBoHa5BsSyH+KxEqeQBAllHhccyMFVHtGtdMpF4W7IRWfZjFiQceJPChOeTsSDVUpER2T8FA93pr0L+QA== +rechoir@^0.6.2: + version "0.6.2" + resolved "https://registry.yarnpkg.com/rechoir/-/rechoir-0.6.2.tgz#85204b54dba82d5742e28c96756ef43af50e3384" + integrity sha1-hSBLVNuoLVdC4oyWdW70OvUOM4Q= dependencies: - chownr "^1.1.1" - fs-minipass "^1.2.5" - minipass "^2.8.6" - minizlib "^1.2.1" - mkdirp "^0.5.0" - safe-buffer "^5.1.2" - yallist "^3.0.3" + resolve "^1.1.6" -test-value@^2.1.0: - version "2.1.0" - resolved "https://registry.yarnpkg.com/test-value/-/test-value-2.1.0.tgz#11da6ff670f3471a73b625ca4f3fdcf7bb748291" - integrity sha1-Edpv9nDzRxpztiXKTz/c97t0gpE= +recursive-readdir@^2.2.2: + version "2.2.2" + resolved "https://registry.yarnpkg.com/recursive-readdir/-/recursive-readdir-2.2.2.tgz#9946fb3274e1628de6e36b2f6714953b4845094f" + integrity sha512-nRCcW9Sj7NuZwa2XvH9co8NPeXUBhZP7CRKJtU+cS6PW9FpCIFoI5ib0NT1ZrbNuPoRy0ylyCaUL8Gih4LSyFg== dependencies: - array-back "^1.0.3" - typical "^2.6.0" - -testrpc@0.0.1: - version "0.0.1" - resolved "https://registry.yarnpkg.com/testrpc/-/testrpc-0.0.1.tgz#83e2195b1f5873aec7be1af8cbe6dcf39edb7aed" - integrity sha512-afH1hO+SQ/VPlmaLUFj2636QMeDvPCeQMc/9RBMW0IfjNe9gFD9Ra3ShqYkB7py0do1ZcCna/9acHyzTJ+GcNA== + minimatch "3.0.4" -then-request@^6.0.0: - version "6.0.2" - resolved "https://registry.yarnpkg.com/then-request/-/then-request-6.0.2.tgz#ec18dd8b5ca43aaee5cb92f7e4c1630e950d4f0c" - 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" +regexpp@^2.0.1: + version "2.0.1" + resolved "https://registry.yarnpkg.com/regexpp/-/regexpp-2.0.1.tgz#8d19d31cf632482b589049f8281f93dbcba4d07f" + integrity sha512-lv0M6+TkDVniA3aD1Eg0DVpfU/booSu7Eev3TDO/mZKHBfVjgCGTV4t4buppESEYDtkArYFOxTJWv6S5C+iaNw== -through2-filter@^2.0.0: - version "2.0.0" - resolved "https://registry.yarnpkg.com/through2-filter/-/through2-filter-2.0.0.tgz#60bc55a0dacb76085db1f9dae99ab43f83d622ec" - integrity sha1-YLxVoNrLdghdsfna6Zq0P4PWIuw= - dependencies: - through2 "~2.0.0" - xtend "~4.0.0" +regexpp@^3.1.0: + version "3.1.0" + resolved "https://registry.yarnpkg.com/regexpp/-/regexpp-3.1.0.tgz#206d0ad0a5648cffbdb8ae46438f3dc51c9f78e2" + integrity sha512-ZOIzd8yVsQQA7j8GCSlPGXwg5PfmA1mrq0JP4nGhh54LaKN3xdai/vHUDu74pKwV8OxseMS65u2NImosQcSD0Q== -through2-filter@^3.0.0: - version "3.0.0" - resolved "https://registry.yarnpkg.com/through2-filter/-/through2-filter-3.0.0.tgz#700e786df2367c2c88cd8aa5be4cf9c1e7831254" - integrity sha512-jaRjI2WxN3W1V8/FMZ9HKIBXixtiqs3SQSX4/YGIiP3gL6djW48VoZq9tDqeCWs3MT8YY5wb/zli8VW8snY1CA== +req-cwd@^2.0.0: + version "2.0.0" + resolved "https://registry.yarnpkg.com/req-cwd/-/req-cwd-2.0.0.tgz#d4082b4d44598036640fb73ddea01ed53db49ebc" + integrity sha1-1AgrTURZgDZkD7c93qAe1T20nrw= dependencies: - through2 "~2.0.0" - xtend "~4.0.0" + req-from "^2.0.0" -through2@2.X, through2@^2.0.0, through2@^2.0.3, through2@~2.0.0: - version "2.0.5" - resolved "https://registry.yarnpkg.com/through2/-/through2-2.0.5.tgz#01c1e39eb31d07cb7d03a96a70823260b23132cd" - integrity sha512-/mrRod8xqpA+IHSLyGCQ2s8SPHiCDEeQJSep1jqLYeEUClOFG2Qsh+4FU6G9VeqpZnGW/Su8LQGc4YKni5rYSQ== +req-from@^2.0.0: + version "2.0.0" + resolved "https://registry.yarnpkg.com/req-from/-/req-from-2.0.0.tgz#d74188e47f93796f4aa71df6ee35ae689f3e0e70" + integrity sha1-10GI5H+TeW9Kpx327jWuaJ8+DnA= dependencies: - readable-stream "~2.3.6" - xtend "~4.0.1" + resolve-from "^3.0.0" -through2@3.0.1: - version "3.0.1" - resolved "https://registry.yarnpkg.com/through2/-/through2-3.0.1.tgz#39276e713c3302edf9e388dd9c812dd3b825bd5a" - integrity sha512-M96dvTalPT3YbYLaKaCuwu+j06D/8Jfib0o/PxbVt6Amhv3dUAtW6rTV1jPgJSBG83I/e04Y6xkVdVhSRhi0ww== +request-promise-core@1.1.4: + version "1.1.4" + resolved "https://registry.yarnpkg.com/request-promise-core/-/request-promise-core-1.1.4.tgz#3eedd4223208d419867b78ce815167d10593a22f" + integrity sha512-TTbAfBBRdWD7aNNOoVOBH4pN/KigV6LyapYNNlAPA8JwbovRti1E88m3sYAwsLi5ryhPKsE9APwnjFTgdUjTpw== dependencies: - readable-stream "2 || 3" + lodash "^4.17.19" -through2@3.0.2: - version "3.0.2" - resolved "https://registry.yarnpkg.com/through2/-/through2-3.0.2.tgz#99f88931cfc761ec7678b41d5d7336b5b6a07bf4" - integrity sha512-enaDQ4MUyP2W6ZyT6EsMzqBPZaM/avg8iuo+l2d3QCs0J+6RaqkHV/2/lOwDTueBHeJ/2LG9lrLW3d5rWPucuQ== +request-promise-native@^1.0.5: + version "1.0.9" + resolved "https://registry.yarnpkg.com/request-promise-native/-/request-promise-native-1.0.9.tgz#e407120526a5efdc9a39b28a5679bf47b9d9dc28" + integrity sha512-wcW+sIUiWnKgNY0dqCpOZkUbF/I+YPi+f09JZIDa39Ec+q82CpSYniDp+ISgTTbKmnpJWASeJBPZmoxH84wt3g== dependencies: - inherits "^2.0.4" - readable-stream "2 || 3" + request-promise-core "1.1.4" + stealthy-require "^1.1.1" + tough-cookie "^2.3.3" -through2@^0.6.0: - version "0.6.5" - resolved "https://registry.yarnpkg.com/through2/-/through2-0.6.5.tgz#41ab9c67b29d57209071410e1d7a7a968cd3ad48" - integrity sha1-QaucZ7KdVyCQcUEOHXp6lozTrUg= +request@^2.79.0, request@^2.88.0: + version "2.88.2" + resolved "https://registry.yarnpkg.com/request/-/request-2.88.2.tgz#d73c918731cb5a87da047e207234146f664d12b3" + integrity sha512-MsvtOrfG9ZcrOwAW+Qi+F6HbD0CWXEh9ou77uOb7FM2WPhwT7smM833PzanhJLsgXjN89Ir6V2PczXNnMpwKhw== dependencies: - readable-stream ">=1.0.33-1 <1.1.0-0" - xtend ">=4.0.0 <4.1.0-0" - -through@^2.3.8: - version "2.3.8" - resolved "https://registry.yarnpkg.com/through/-/through-2.3.8.tgz#0dd4c9ffaabc357960b1b724115d7e0e86a2e1f5" - integrity sha1-DdTJ/6q8NXlgsbckEV1+Doai4fU= + 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" -tildify@1.2.0: - version "1.2.0" - resolved "https://registry.yarnpkg.com/tildify/-/tildify-1.2.0.tgz#dcec03f55dca9b7aa3e5b04f21817eb56e63588a" - integrity sha1-3OwD9V3Km3qj5bBPIYF+tW5jWIo= - dependencies: - os-homedir "^1.0.0" +require-directory@^2.1.1: + version "2.1.1" + resolved "https://registry.yarnpkg.com/require-directory/-/require-directory-2.1.1.tgz#8c64ad5fd30dab1c976e2344ffe7f792a6a6df42" + integrity sha1-jGStX9MNqxyXbiNE/+f3kqam30I= -timed-out@^4.0.0, timed-out@^4.0.1: - version "4.0.1" - resolved "https://registry.yarnpkg.com/timed-out/-/timed-out-4.0.1.tgz#f32eacac5a175bea25d7fab565ab3ed8741ef56f" - integrity sha1-8y6srFoXW+ol1/q1Zas+2HQe9W8= +require-from-string@^2.0.0, require-from-string@^2.0.2: + version "2.0.2" + resolved "https://registry.yarnpkg.com/require-from-string/-/require-from-string-2.0.2.tgz#89a7fdd938261267318eafe14f9c32e598c36909" + integrity sha512-Xf0nWe6RseziFMu+Ap9biiUbmplq6S9/p+7w7YXP/JBHhrUDDUhwa+vANyubuqfZWTveU//DYVGsDG7RKL/vEw== -timeout-abort-controller@^1.1.1: - version "1.1.1" - resolved "https://registry.yarnpkg.com/timeout-abort-controller/-/timeout-abort-controller-1.1.1.tgz#2c3c3c66f13c783237987673c276cbd7a9762f29" - integrity sha512-BsF9i3NAJag6T0ZEjki9j654zoafI2X6ayuNd6Tp8+Ul6Tr5s4jo973qFeiWrRSweqvskC+AHDKUmIW4b7pdhQ== - dependencies: - abort-controller "^3.0.0" - retimer "^2.0.0" +require-main-filename@^2.0.0: + version "2.0.0" + resolved "https://registry.yarnpkg.com/require-main-filename/-/require-main-filename-2.0.0.tgz#d0b329ecc7cc0f61649f62215be69af54aa8989b" + integrity sha512-NKN5kMDylKuldxYLSUfrbo5Tuzh4hd+2E8NPPX02mZtn1VuREQToYe/ZdlJy+J3uCpfaiGF05e7B8W0iXbQHmg== -timers-browserify@^2.0.4: - version "2.0.12" - resolved "https://registry.yarnpkg.com/timers-browserify/-/timers-browserify-2.0.12.tgz#44a45c11fbf407f34f97bccd1577c652361b00ee" - integrity sha512-9phl76Cqm6FhSX9Xe1ZUAMLtm1BLkKj2Qd5ApyWkXzsMRaA7dgr81kf4wJmQf/hAvg8EEyJxDo3du/0KlhPiKQ== - dependencies: - setimmediate "^1.0.4" +resolve-from@^3.0.0: + version "3.0.0" + resolved "https://registry.yarnpkg.com/resolve-from/-/resolve-from-3.0.0.tgz#b22c7af7d9d6881bc8b6e653335eebcb0a188748" + integrity sha1-six699nWiBvItuZTM17rywoYh0g= -timers-ext@^0.1.5: - version "0.1.7" - resolved "https://registry.yarnpkg.com/timers-ext/-/timers-ext-0.1.7.tgz#6f57ad8578e07a3fb9f91d9387d65647555e25c6" - integrity sha512-b85NUNzTSdodShTIbky6ZF02e8STtVVfD+fu4aXXShEELpozH+bCpJLYMPZbsABN2wDH7fJpqIoXxJpzbf0NqQ== - dependencies: - es5-ext "~0.10.46" - next-tick "1" +resolve-from@^4.0.0: + version "4.0.0" + resolved "https://registry.yarnpkg.com/resolve-from/-/resolve-from-4.0.0.tgz#4abcd852ad32dd7baabfe9b40e00a36db5f392e6" + integrity sha512-pb/MYmXstAkysRFx8piNI1tGFNQIFA3vkE3Gq4EuA1dF6gHp/+vgZqsCGJapvy8N3Q+4o7FwvquPJcnZ7RYy4g== -tiny-queue@^0.2.1: - version "0.2.1" - resolved "https://registry.yarnpkg.com/tiny-queue/-/tiny-queue-0.2.1.tgz#25a67f2c6e253b2ca941977b5ef7442ef97a6046" - integrity sha1-JaZ/LG4lOyypQZd7XvdELvl6YEY= +resolve@1.1.x: + version "1.1.7" + resolved "https://registry.yarnpkg.com/resolve/-/resolve-1.1.7.tgz#203114d82ad2c5ed9e8e0411b3932875e889e97b" + integrity sha1-IDEU2CrSxe2ejgQRs5ModeiJ6Xs= -tiny-secp256k1@^1.1.3: - version "1.1.6" - resolved "https://registry.yarnpkg.com/tiny-secp256k1/-/tiny-secp256k1-1.1.6.tgz#7e224d2bee8ab8283f284e40e6b4acb74ffe047c" - integrity sha512-FmqJZGduTyvsr2cF3375fqGHUovSwDi/QytexX1Se4BPuPZpTE5Ftp5fg+EFSuEf3lhZqgCRjEG3ydUQ/aNiwA== +resolve@1.17.0: + version "1.17.0" + resolved "https://registry.yarnpkg.com/resolve/-/resolve-1.17.0.tgz#b25941b54968231cc2d1bb76a79cb7f2c0bf8444" + integrity sha512-ic+7JYiV8Vi2yzQGFWOkiZD5Z9z7O2Zhm9XMaTxdJExKasieFCr+yXZ/WmXsckHiKl12ar0y6XiXDx3m4RHn1w== dependencies: - bindings "^1.3.0" - bn.js "^4.11.8" - create-hmac "^1.1.7" - elliptic "^6.4.0" - nan "^2.13.2" + path-parse "^1.0.6" -title-case@^2.1.0: - version "2.1.1" - resolved "https://registry.yarnpkg.com/title-case/-/title-case-2.1.1.tgz#3e127216da58d2bc5becf137ab91dae3a7cd8faa" - integrity sha1-PhJyFtpY0rxb7PE3q5Ha46fNj6o= +resolve@^1.1.6, resolve@^1.8.1: + version "1.20.0" + resolved "https://registry.yarnpkg.com/resolve/-/resolve-1.20.0.tgz#629a013fb3f70755d6f0b7935cc1c2c5378b1975" + integrity sha512-wENBPt4ySzg4ybFQW2TT1zMQucPK95HSh/nq2CFTZVOGut2+pQvSsgtda4d26YrYcr067wjbmzOG8byDPBX63A== dependencies: - no-case "^2.2.0" - upper-case "^1.0.3" + is-core-module "^2.2.0" + path-parse "^1.0.6" -tmp@0.0.33, tmp@^0.0.33: - version "0.0.33" - resolved "https://registry.yarnpkg.com/tmp/-/tmp-0.0.33.tgz#6d34335889768d21b2bcda0aa277ced3b1bfadf9" - integrity sha512-jRCJlojKnZ3addtTOjdIqoRuPEKBvNXcGYqzO6zWZX8KfKEpnGY5jfggJQ3EjKuu8D4bJRr0y+cYJFmYbImXGw== +responselike@^1.0.2: + version "1.0.2" + resolved "https://registry.yarnpkg.com/responselike/-/responselike-1.0.2.tgz#918720ef3b631c5642be068f15ade5a46f4ba1e7" + integrity sha1-kYcg7ztjHFZCvgaPFa3lpG9Loec= dependencies: - os-tmpdir "~1.0.2" + lowercase-keys "^1.0.0" -to-absolute-glob@^0.1.1: - version "0.1.1" - resolved "https://registry.yarnpkg.com/to-absolute-glob/-/to-absolute-glob-0.1.1.tgz#1cdfa472a9ef50c239ee66999b662ca0eb39937f" - integrity sha1-HN+kcqnvUMI57maZm2YsoOs5k38= +restore-cursor@^2.0.0: + version "2.0.0" + resolved "https://registry.yarnpkg.com/restore-cursor/-/restore-cursor-2.0.0.tgz#9f7ee287f82fd326d4fd162923d62129eee0dfaf" + integrity sha1-n37ih/gv0ybU/RYpI9YhKe7g368= dependencies: - extend-shallow "^2.0.1" - -to-arraybuffer@^1.0.0: - version "1.0.1" - resolved "https://registry.yarnpkg.com/to-arraybuffer/-/to-arraybuffer-1.0.1.tgz#7d229b1fcc637e466ca081180836a7aabff83f43" - integrity sha1-fSKbH8xjfkZsoIEYCDanqr/4P0M= + onetime "^2.0.0" + signal-exit "^3.0.2" -to-buffer@^1.1.1: - version "1.1.1" - resolved "https://registry.yarnpkg.com/to-buffer/-/to-buffer-1.1.1.tgz#493bd48f62d7c43fcded313a03dcadb2e1213a80" - integrity sha512-lx9B5iv7msuFYE3dytT+KE5tap+rNYw+K4jVkb9R/asAb+pbBSM17jtunHplhBe6RRJdZx3Pn2Jph24O32mOVg== +reusify@^1.0.4: + version "1.0.4" + resolved "https://registry.yarnpkg.com/reusify/-/reusify-1.0.4.tgz#90da382b1e126efc02146e90845a88db12925d76" + integrity sha512-U9nH88a3fc/ekCF1l0/UP1IosiuIjyTh7hBvXVMHYgVcfGvt897Xguj2UOLDeI5BG2m7/uwyaLVT6fbtCwTyzw== -to-data-view@^1.1.0: - version "1.1.0" - resolved "https://registry.yarnpkg.com/to-data-view/-/to-data-view-1.1.0.tgz#08d6492b0b8deb9b29bdf1f61c23eadfa8994d00" - integrity sha512-1eAdufMg6mwgmlojAx3QeMnzB/BTVp7Tbndi3U7ftcT2zCZadjxkkmLmd97zmaxWi+sgGcgWrokmpEoy0Dn0vQ== +rimraf@2.6.3: + version "2.6.3" + resolved "https://registry.yarnpkg.com/rimraf/-/rimraf-2.6.3.tgz#b2d104fe0d8fb27cf9e0a1cda8262dd3833c6cab" + integrity sha512-mwqeW5XsA2qAejG46gYdENaxXjx9onRNCfn7L0duuP4hCuTIi/QO7PDK07KJfp1d+izWPrzEJDcSqBa0OZQriA== + dependencies: + glob "^7.1.3" -to-fast-properties@^1.0.3: - version "1.0.3" - resolved "https://registry.yarnpkg.com/to-fast-properties/-/to-fast-properties-1.0.3.tgz#b83571fa4d8c25b82e231b06e3a3055de4ca1a47" - integrity sha1-uDVx+k2MJbguIxsG46MFXeTKGkc= +rimraf@^2.2.8, rimraf@^2.6.3: + version "2.7.1" + resolved "https://registry.yarnpkg.com/rimraf/-/rimraf-2.7.1.tgz#35797f13a7fdadc566142c29d4f07ccad483e3ec" + integrity sha512-uWjbaKIK3T1OSVptzX7Nl6PvQ3qAGtKEtVRjRuazjfL3Bx5eI409VZSqgND+4UNnmzLVdPj9FqFJNPqBZFve4w== + dependencies: + glob "^7.1.3" -to-fast-properties@^2.0.0: - version "2.0.0" - resolved "https://registry.yarnpkg.com/to-fast-properties/-/to-fast-properties-2.0.0.tgz#dc5e698cbd079265bc73e0377681a4e4e83f616e" - integrity sha1-3F5pjL0HkmW8c+A3doGk5Og/YW4= +rimraf@^3.0.2: + version "3.0.2" + resolved "https://registry.yarnpkg.com/rimraf/-/rimraf-3.0.2.tgz#f1a5402ba6220ad52cc1282bac1ae3aa49fd061a" + integrity sha512-JZkJMZkAGFFPP2YqXZXPbMlMBgsxzE8ILs4lMIX/2o0L9UBw9O/Y3o6wFw/i9YLapcUJWwqbi3kdxIPdC62TIA== + dependencies: + glob "^7.1.3" -to-json-schema@^0.2.5: - version "0.2.5" - resolved "https://registry.yarnpkg.com/to-json-schema/-/to-json-schema-0.2.5.tgz#ef3c3f11ad64460dcfbdbafd0fd525d69d62a98f" - integrity sha512-jP1ievOee8pec3tV9ncxLSS48Bnw7DIybgy112rhMCEhf3K4uyVNZZHr03iQQBzbV5v5Hos+dlZRRyk6YSMNDw== +ripemd160@^2.0.0, ripemd160@^2.0.1: + version "2.0.2" + resolved "https://registry.yarnpkg.com/ripemd160/-/ripemd160-2.0.2.tgz#a1c1a6f624751577ba5d07914cbc92850585890c" + integrity sha512-ii4iagi25WusVoiC4B4lq7pbXfAp3D9v5CwfkY33vffw2+pkDjY1D8GaN7spsxvCSx8dkPqOZCEZyfxcmJG2IA== dependencies: - lodash.isequal "^4.5.0" - lodash.keys "^4.2.0" - lodash.merge "^4.6.2" - lodash.omit "^4.5.0" - lodash.without "^4.4.0" - lodash.xor "^4.5.0" + hash-base "^3.0.0" + inherits "^2.0.1" -to-object-path@^0.3.0: - version "0.3.0" - resolved "https://registry.yarnpkg.com/to-object-path/-/to-object-path-0.3.0.tgz#297588b7b0e7e0ac08e04e672f85c1f4999e17af" - integrity sha1-KXWIt7Dn4KwI4E5nL4XB9JmeF68= +rlp@^2.0.0, rlp@^2.2.3, rlp@^2.2.4: + version "2.2.6" + resolved "https://registry.yarnpkg.com/rlp/-/rlp-2.2.6.tgz#c80ba6266ac7a483ef1e69e8e2f056656de2fb2c" + integrity sha512-HAfAmL6SDYNWPUOJNrM500x4Thn4PZsEy5pijPh40U9WfNk0z15hUYzO9xVIMAdIHdFtD8CBDHd75Td1g36Mjg== dependencies: - kind-of "^3.0.2" + bn.js "^4.11.1" -to-readable-stream@^1.0.0: - version "1.0.0" - resolved "https://registry.yarnpkg.com/to-readable-stream/-/to-readable-stream-1.0.0.tgz#ce0aa0c2f3df6adf852efb404a783e77c0475771" - integrity sha512-Iq25XBt6zD5npPhlLVXGFN3/gyR2/qODcKNNyTMd4vbm39HUaOiAM4PMq0eMVC/Tkxz+Zjdsc55g9yyz+Yq00Q== +run-async@^2.2.0: + version "2.4.1" + resolved "https://registry.yarnpkg.com/run-async/-/run-async-2.4.1.tgz#8440eccf99ea3e70bd409d49aab88e10c189a455" + integrity sha512-tvVnVv01b8c1RrA6Ep7JkStj85Guv/YrMcwqYQnwjsAS2cTmmPGBBjAjpCW7RrSodNSoE2/qg9O4bceNvUuDgQ== -to-regex-range@^2.1.0: - version "2.1.1" - resolved "https://registry.yarnpkg.com/to-regex-range/-/to-regex-range-2.1.1.tgz#7c80c17b9dfebe599e27367e0d4dd5590141db38" - integrity sha1-fIDBe53+vlmeJzZ+DU3VWQFB2zg= +run-parallel@^1.1.9: + version "1.2.0" + resolved "https://registry.yarnpkg.com/run-parallel/-/run-parallel-1.2.0.tgz#66d1368da7bdf921eb9d95bd1a9229e7f21a43ee" + integrity sha512-5l4VyZR86LZ/lDxZTR6jqL8AFE2S0IFLMP26AbjsLVADxHdhB/c0GUsH+y39UfCi3dzz8OlQuPmnaJOMoDHQBA== dependencies: - is-number "^3.0.0" - repeat-string "^1.6.1" + queue-microtask "^1.2.2" -to-regex-range@^5.0.1: - version "5.0.1" - resolved "https://registry.yarnpkg.com/to-regex-range/-/to-regex-range-5.0.1.tgz#1648c44aae7c8d988a326018ed72f5b4dd0392e4" - integrity sha512-65P7iz6X5yEr1cwcgvQxbbIw7Uk3gOy5dIdtZ4rDveLqhrdJP+Li/Hx6tyK0NEb+2GCyneCMJiGqrADCSNk8sQ== - dependencies: - is-number "^7.0.0" +rustbn.js@~0.2.0: + version "0.2.0" + resolved "https://registry.yarnpkg.com/rustbn.js/-/rustbn.js-0.2.0.tgz#8082cb886e707155fd1cb6f23bd591ab8d55d0ca" + integrity sha512-4VlvkRUuCJvr2J6Y0ImW7NvTCriMi7ErOAqWk1y69vAdoNIzCF3yPmgeNzx+RQTLEDFq5sHfscn1MwHxP9hNfA== -to-regex@^3.0.1, to-regex@^3.0.2: - version "3.0.2" - resolved "https://registry.yarnpkg.com/to-regex/-/to-regex-3.0.2.tgz#13cfdd9b336552f30b51f33a8ae1b42a7a7599ce" - integrity sha512-FWtleNAtZ/Ki2qtqej2CXTOayOH9bHDQF+Q48VpWyDXjbYxA4Yz8iDB31zXOBUlOHHKidDbqGVrTUvQMPmBGBw== +rxjs@^6.4.0: + version "6.6.7" + resolved "https://registry.yarnpkg.com/rxjs/-/rxjs-6.6.7.tgz#90ac018acabf491bf65044235d5863c4dab804c9" + integrity sha512-hTdwr+7yYNIT5n4AMYp85KA6yw2Va0FLa3Rguvbpa4W3I5xynaBZo41cM3XM+4Q6fRMj3sBYIR1VAmZMXYJvRQ== dependencies: - define-property "^2.0.2" - extend-shallow "^3.0.2" - regex-not "^1.0.2" - safe-regex "^1.1.0" + tslib "^1.9.0" -toidentifier@1.0.0: - version "1.0.0" - resolved "https://registry.yarnpkg.com/toidentifier/-/toidentifier-1.0.0.tgz#7e1be3470f1e77948bc43d94a3c8f4d7752ba553" - integrity sha512-yaOH/Pk/VEhBWWTlhI+qXxDFXlejDGcQipMlyxda9nthulaxLZUNcUqFxokp0vcYnvteJln5FNQDRrxj3YcbVw== +safe-buffer@5.1.2, safe-buffer@~5.1.0, safe-buffer@~5.1.1: + version "5.1.2" + resolved "https://registry.yarnpkg.com/safe-buffer/-/safe-buffer-5.1.2.tgz#991ec69d296e0313747d59bdfd2b745c35f8828d" + integrity sha512-Gd2UZBJDkXlY7GbJxfsE8/nvKkUEU1G38c1siN6QP6a9PT9MmHB8GnpscSmMJSoF8LOIrt8ud/wPtojys4G6+g== -tough-cookie@^2.2.0, tough-cookie@^2.3.1, tough-cookie@^2.3.3, tough-cookie@~2.5.0: - version "2.5.0" - resolved "https://registry.yarnpkg.com/tough-cookie/-/tough-cookie-2.5.0.tgz#cd9fb2a0aa1d5a12b473bd9fb96fa3dcff65ade2" - integrity sha512-nlLsUzgm1kfLXSXfRZMc1KLAugd4hqJHDTvc2hDIwS3mZAfMEuMbc03SujMF+GEcpaX/qboeycw6iO8JwVv2+g== - dependencies: - psl "^1.1.28" - punycode "^2.1.1" +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.0: + version "5.2.1" + resolved "https://registry.yarnpkg.com/safe-buffer/-/safe-buffer-5.2.1.tgz#1eaf9fa9bdb1fdd4ec75f58f9cdb4e6b7827eec6" + integrity sha512-rp3So07KcdmmKbGvgaNxQSJr7bGVSVk5S9Eq1F+ppbRo70+YeaDxkw5Dd8NPN+GD6bjnYm2VuPuCXmpuYvmCXQ== -"tough-cookie@^2.3.3 || ^3.0.1 || ^4.0.0": - version "4.0.0" - resolved "https://registry.yarnpkg.com/tough-cookie/-/tough-cookie-4.0.0.tgz#d822234eeca882f991f0f908824ad2622ddbece4" - integrity sha512-tHdtEpQCMrc1YLrMaqXXcj6AxhYi/xgit6mZu1+EDWUn+qhUf8wMQoFIy9NXuq23zAwtcB0t/MjACGR18pcRbg== +"safer-buffer@>= 2.1.2 < 3", safer-buffer@^2.0.2, safer-buffer@^2.1.0, safer-buffer@~2.1.0: + version "2.1.2" + resolved "https://registry.yarnpkg.com/safer-buffer/-/safer-buffer-2.1.2.tgz#44fa161b0187b9549dd84bb91802f9bd8385cd6a" + integrity sha512-YZo3K82SD7Riyi0E1EQPojLz7kpepnSQI9IyPbHHg1XXXevb5dJI7tpyN2ADxGcQbHG7vcyRHk0cbwqcQriUtg== + +sc-istanbul@^0.4.5: + version "0.4.6" + resolved "https://registry.yarnpkg.com/sc-istanbul/-/sc-istanbul-0.4.6.tgz#cf6784355ff2076f92d70d59047d71c13703e839" + integrity sha512-qJFF/8tW/zJsbyfh/iT/ZM5QNHE3CXxtLJbZsL+CzdJLBsPD7SedJZoUA4d8iAcN2IoMp/Dx80shOOd2x96X/g== dependencies: - psl "^1.1.33" - punycode "^2.1.1" - universalify "^0.1.2" + 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" -tr46@~0.0.1: - version "0.0.3" - resolved "https://registry.yarnpkg.com/tr46/-/tr46-0.0.3.tgz#8184fd347dac9cdc185992f3a6622e14b9d9ab6a" - integrity sha1-gYT9NH2snNwYWZLzpmIuFLnZq2o= +scrypt-js@2.0.4: + version "2.0.4" + resolved "https://registry.yarnpkg.com/scrypt-js/-/scrypt-js-2.0.4.tgz#32f8c5149f0797672e551c07e230f834b6af5f16" + integrity sha512-4KsaGcPnuhtCZQCxFxN3GVYIhKFPTdLd8PLC552XwbMndtD0cjRFAhDuuydXQ0h08ZfPgzqe6EKHozpuH74iDw== -trim-right@^1.0.1: - version "1.0.1" - resolved "https://registry.yarnpkg.com/trim-right/-/trim-right-1.0.1.tgz#cb2e1203067e0c8de1f614094b9fe45704ea6003" - integrity sha1-yy4SAwZ+DI3h9hQJS5/kVwTqYAM= +scrypt-js@3.0.1, scrypt-js@^3.0.0, scrypt-js@^3.0.1: + version "3.0.1" + resolved "https://registry.yarnpkg.com/scrypt-js/-/scrypt-js-3.0.1.tgz#d314a57c2aef69d1ad98a138a21fe9eafa9ee312" + integrity sha512-cdwTTnqPu0Hyvf5in5asVdZocVDTNRmR7XEcJuIzMjJeSHybHl7vpB66AzwTaIg6CLSbtjcxc8fqcySfnTkccA== -truffle-flattener@^1.4.0: - version "1.4.2" - resolved "https://registry.yarnpkg.com/truffle-flattener/-/truffle-flattener-1.4.2.tgz#7460d0eec88ac67b150e8de3476f55d4420a4ba0" - integrity sha512-7qUIzaW8a4vI4nui14wsytht2oaqvqnZ1Iet2wRq2T0bCJ0wb6HByMKQhZKpU46R+n5BMTY4K5n+0ITyeNlmuQ== +secp256k1@^3.0.1: + version "3.8.0" + resolved "https://registry.yarnpkg.com/secp256k1/-/secp256k1-3.8.0.tgz#28f59f4b01dbee9575f56a47034b7d2e3b3b352d" + integrity sha512-k5ke5avRZbtl9Tqx/SA7CbY3NF6Ro+Sj9cZxezFzuBlLDmyqPiL8hJJ+EmzD8Ig4LUDByHJ3/iPOVoRixs/hmw== dependencies: - "@resolver-engine/imports-fs" "^0.2.2" - find-up "^2.1.0" - mkdirp "^0.5.1" - solidity-parser-antlr "^0.4.11" - tsort "0.0.1" + 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" -truffle-hdwallet-provider@^1.0.17: - version "1.0.17" - resolved "https://registry.yarnpkg.com/truffle-hdwallet-provider/-/truffle-hdwallet-provider-1.0.17.tgz#fe8edd0d6974eeb31af9959e41525fb19abd74ca" - integrity sha512-s6DvSP83jiIAc6TUcpr7Uqnja1+sLGJ8og3X7n41vfyC4OCaKmBtXL5HOHf+SsU3iblOvnbFDgmN6Y1VBL/fsg== +secp256k1@^4.0.1: + version "4.0.2" + resolved "https://registry.yarnpkg.com/secp256k1/-/secp256k1-4.0.2.tgz#15dd57d0f0b9fdb54ac1fa1694f40e5e9a54f4a1" + integrity sha512-UDar4sKvWAksIlfX3xIaQReADn+WFnHvbVujpcbr+9Sf/69odMwy2MUsz5CKLQgX9nsIyrjuxL2imVyoNHa3fg== dependencies: - any-promise "^1.3.0" - bindings "^1.3.1" - web3 "1.2.1" - websocket "^1.0.28" + elliptic "^6.5.2" + node-addon-api "^2.0.0" + node-gyp-build "^4.2.0" -truffle-plugin-verify@0.5.11: - version "0.5.11" - resolved "https://registry.yarnpkg.com/truffle-plugin-verify/-/truffle-plugin-verify-0.5.11.tgz#f89db1870c1a86bbca913f3dc476aef310ad452d" - integrity sha512-IL8DDsA3YCUQcrRXtarTEXoZJeb2Rlj8jwNjdiWWyDZ7r/EQZndJooorWo19qDpZf9s8ydpvTE/Bb/uyna6Zag== - dependencies: - axios "^0.21.1" - cli-logger "^0.5.40" - delay "^5.0.0" - querystring "^0.2.1" +semaphore-async-await@^1.5.1: + version "1.5.1" + resolved "https://registry.yarnpkg.com/semaphore-async-await/-/semaphore-async-await-1.5.1.tgz#857bef5e3644601ca4b9570b87e9df5ca12974fa" + integrity sha1-hXvvXjZEYBykuVcLh+nfXKEpdPo= -truffle-typings@^1.0.8: - version "1.0.8" - resolved "https://registry.yarnpkg.com/truffle-typings/-/truffle-typings-1.0.8.tgz#0b92d86a86a77c43771cdbce2544b67a25e3f2e2" - integrity sha512-75yFYNt0ws1TTehrGxhOqH3tutvBCAs+RG2SrhVIqQvU72kLAb4ercl32dES8yKbXBVHjzv3OXNg5gsbak+3Dg== - dependencies: - "@types/chai" "^4.1.4" - "@types/mocha" "^5.2.5" - "@types/web3" "^1.0.18" - -truffle@^5.4.7: - version "5.4.7" - resolved "https://registry.yarnpkg.com/truffle/-/truffle-5.4.7.tgz#401f0a32c974bfcd330f76f6d7cf76abb5288405" - integrity sha512-cNbCPBDjmeg6r+OS4ilJ59TVtu+sNfBN2C+EQbZwBdjKwzv0i1kWk6+CIdka8KTkyKhK9JviitmqA//ILu9uNw== - dependencies: - "@truffle/db-loader" "^0.0.6" - "@truffle/debugger" "^9.1.12" - app-module-path "^2.2.0" - mocha "8.1.2" - original-require "^1.0.1" - optionalDependencies: - "@truffle/db" "^0.5.27" - "@truffle/preserve-fs" "^0.2.4" - "@truffle/preserve-to-buckets" "^0.2.4" - "@truffle/preserve-to-filecoin" "^0.2.4" - "@truffle/preserve-to-ipfs" "^0.2.4" +semver@^5.5.0, semver@^5.5.1, semver@^5.6.0, semver@^5.7.0: + version "5.7.1" + resolved "https://registry.yarnpkg.com/semver/-/semver-5.7.1.tgz#a954f931aeba508d307bbf069eff0c01c96116f7" + integrity sha512-sauaDf/PZdVgrLTNYHRtpXa1iRiKcaebiKQ1BJdpQlWH2lCvexQdX55snPFyK7QzpudqbCI0qXFfOasHdyNDGQ== -ts-essentials@^7.0.1: - version "7.0.3" - resolved "https://registry.yarnpkg.com/ts-essentials/-/ts-essentials-7.0.3.tgz#686fd155a02133eedcc5362dc8b5056cde3e5a38" - integrity sha512-8+gr5+lqO3G84KdiTSMRLtuyJ+nTBVRKuCrK4lidMPdVeEp0uqC875uE5NMcaA7YYMN7XsNiFQuMvasF8HT/xQ== +semver@^6.3.0: + version "6.3.0" + resolved "https://registry.yarnpkg.com/semver/-/semver-6.3.0.tgz#ee0a64c8af5e8ceea67687b133761e1becbd1d3d" + integrity sha512-b39TBaTSfV6yBrapU89p5fKekE2m/NwnDocOVruQFS1/veMgdzuPcnOM34M6CwxW8jH/lxEa5rBoDeUwu5HHTw== + +semver@^7.2.1, semver@^7.3.4, semver@^7.3.5: + version "7.3.5" + resolved "https://registry.yarnpkg.com/semver/-/semver-7.3.5.tgz#0b621c879348d8998e4b0e4be94b3f12e6018ef7" + integrity sha512-PoeGJYh8HK4BTO/a9Tf6ZG3veo/A7ZVsYrSA6J8ny9nb3B1VrpkuN+z9OE5wfE5p6H4LchYZsegiQgbJD94ZFQ== + dependencies: + lru-cache "^6.0.0" -ts-invariant@^0.4.0: - version "0.4.4" - resolved "https://registry.yarnpkg.com/ts-invariant/-/ts-invariant-0.4.4.tgz#97a523518688f93aafad01b0e80eb803eb2abd86" - integrity sha512-uEtWkFM/sdZvRNNDL3Ehu4WVpwaulhwQszV8mrtcdeE8nN00BV9mAmQ88RkrBhFgl9gMgvjJLAQcZbnPXI9mlA== +send@0.17.1: + version "0.17.1" + resolved "https://registry.yarnpkg.com/send/-/send-0.17.1.tgz#c1d8b059f7900f7466dd4938bdc44e11ddb376c8" + integrity sha512-BsVKsiGcQMFwT8UxypobUKyv7irCNRHk1T0G680vk88yf6LBByGcZJOTJCrTP2xVN6yI+XjPJcNuE3V4fT9sAg== dependencies: - tslib "^1.9.3" + 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" -ts-invariant@^0.6.0: - version "0.6.1" - resolved "https://registry.yarnpkg.com/ts-invariant/-/ts-invariant-0.6.1.tgz#eb4c52b45daaca8367abbfd6cff998ea871d592d" - integrity sha512-QQgN33g8E8yrdDuH29HASveLtbzMnRRgWh0i/JNTW4+zcLsdIOnfsgEDi/NKx4UckQyuMFt9Ujm6TWLWQ58Kvg== +serialize-javascript@6.0.0: + version "6.0.0" + resolved "https://registry.yarnpkg.com/serialize-javascript/-/serialize-javascript-6.0.0.tgz#efae5d88f45d7924141da8b5c3a7a7e663fefeb8" + integrity sha512-Qr3TosvguFt8ePWqsvRfrKyQXIiW+nGbYpy8XK24NQHE83caxWt+mIymTT19DGFbNWNLfEwsrkSmN64lVWB9ag== dependencies: - "@types/ungap__global-this" "^0.3.1" - "@ungap/global-this" "^0.4.2" - tslib "^1.9.3" + randombytes "^2.1.0" -ts-node@^10.2.1: - version "10.2.1" - resolved "https://registry.yarnpkg.com/ts-node/-/ts-node-10.2.1.tgz#4cc93bea0a7aba2179497e65bb08ddfc198b3ab5" - integrity sha512-hCnyOyuGmD5wHleOQX6NIjJtYVIO8bPP8F2acWkB4W06wdlkgyvJtubO/I9NkI88hCFECbsEgoLc0VNkYmcSfw== +serve-static@1.14.1: + version "1.14.1" + resolved "https://registry.yarnpkg.com/serve-static/-/serve-static-1.14.1.tgz#666e636dc4f010f7ef29970a88a674320898b2f9" + integrity sha512-JMrvUwE54emCYWlTI+hGrGv5I8dEwmco/00EvkzIIsR7MqrHonbD9pO2MOfFnpFntl7ecpZs+3mW+XbQZu9QCg== dependencies: - "@cspotcode/source-map-support" "0.6.1" - "@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" - yn "3.1.1" + encodeurl "~1.0.2" + escape-html "~1.0.3" + parseurl "~1.3.3" + send "0.17.1" -tslib@^1.10.0, tslib@^1.8.1, tslib@^1.9.0: - version "1.10.0" - resolved "https://registry.yarnpkg.com/tslib/-/tslib-1.10.0.tgz#c3c19f95973fb0a62973fb09d90d961ee43e5c8a" - integrity sha512-qOebF53frne81cf0S9B41ByenJ3/IuH8yJKngAX35CmiZySA0khhkovshKK+jGCaMnVomla7gVlIcc3EvKPbTQ== +servify@^0.1.12: + version "0.1.12" + resolved "https://registry.yarnpkg.com/servify/-/servify-0.1.12.tgz#142ab7bee1f1d033b66d0707086085b17c06db95" + integrity sha512-/xE6GvsKKqyo1BAY+KxOWXcLpPsUUyji7Qg3bVD7hh1eRze5bR1uYiuDA/k3Gof1s9BTzQZEJK8sNcNGFIzeWw== + dependencies: + body-parser "^1.16.0" + cors "^2.8.1" + express "^4.14.0" + request "^2.79.0" + xhr "^2.3.3" -tslib@^1.13.0, tslib@^1.14.1, tslib@^1.9.3: - version "1.14.1" - resolved "https://registry.yarnpkg.com/tslib/-/tslib-1.14.1.tgz#cf2d38bdc34a134bcaf1091c41f6619e2f672d00" - integrity sha512-Xni35NKzjgMrwevysHTCArtLDpPvye8zV/0E4EyYn43P7/7qvQwPh9BGkHewbMulVntbigmcT7rdX3BNo9wRJg== +set-blocking@^2.0.0: + version "2.0.0" + resolved "https://registry.yarnpkg.com/set-blocking/-/set-blocking-2.0.0.tgz#045f9782d011ae9a6803ddd382b24392b3d890f7" + integrity sha1-BF+XgtARrppoA93TgrJDkrPYkPc= -tslib@^2.0.3, tslib@~2.1.0: - version "2.1.0" - resolved "https://registry.yarnpkg.com/tslib/-/tslib-2.1.0.tgz#da60860f1c2ecaa5703ab7d39bc05b6bf988b97a" - integrity sha512-hcVC3wYEziELGGmEEXue7D75zbwIIVUMWAVbHItGPx0ziyXxrOMQx4rQEVEV45Ut/1IotuEvwqPopzIOkDMf0A== +setimmediate@1.0.4: + version "1.0.4" + resolved "https://registry.yarnpkg.com/setimmediate/-/setimmediate-1.0.4.tgz#20e81de622d4a02588ce0c8da8973cbcf1d3138f" + integrity sha1-IOgd5iLUoCWIzgyNqJc8vPHTE48= -tslib@^2.2.0: - version "2.3.1" - resolved "https://registry.yarnpkg.com/tslib/-/tslib-2.3.1.tgz#e8a335add5ceae51aa261d32a490158ef042ef01" - integrity sha512-77EbyPPpMz+FRFRuAFlWMtmgUWGe9UOG2Z25NqCwiIjRhOf5iKGuzSe5P2w1laq+FkRy4p+PCuVkJSGkzTEKVw== +setimmediate@^1.0.5: + version "1.0.5" + resolved "https://registry.yarnpkg.com/setimmediate/-/setimmediate-1.0.5.tgz#290cbb232e306942d7d7ea9b83732ab7856f8285" + integrity sha1-KQy7Iy4waULX1+qbg3Mqt4VvgoU= -tslib@~2.0.1: - version "2.0.3" - resolved "https://registry.yarnpkg.com/tslib/-/tslib-2.0.3.tgz#8e0741ac45fc0c226e58a17bfc3e64b9bc6ca61c" - integrity sha512-uZtkfKblCEQtZKBF6EBXVZeQNl82yqtDQdv+eck8u7tdPxjLu2/lp5/uPW+um2tpuxINHWy3GhiccY7QgEaVHQ== +setprototypeof@1.1.1: + version "1.1.1" + resolved "https://registry.yarnpkg.com/setprototypeof/-/setprototypeof-1.1.1.tgz#7e95acb24aa92f5885e0abef5ba131330d4ae683" + integrity sha512-JvdAWfbXeIGaZ9cILp38HntZSFSo3mWg6xGcJJsd+d4aRMOqauag1C63dJfDw7OaMYwEbHMOxEZ1lqVRYP2OAw== -tslint@^6.1.3: - version "6.1.3" - resolved "https://registry.yarnpkg.com/tslint/-/tslint-6.1.3.tgz#5c23b2eccc32487d5523bd3a470e9aa31789d904" - integrity sha512-IbR4nkT96EQOvKE2PW/djGz8iGNeJ4rF2mBfiYaR/nvUWYKJhLwimoJKgjIFEIDibBtOevj7BqCRL4oHeWWUCg== +sha.js@^2.4.0, sha.js@^2.4.8: + version "2.4.11" + resolved "https://registry.yarnpkg.com/sha.js/-/sha.js-2.4.11.tgz#37a5cf0b81ecbc6943de109ba2960d1b26584ae7" + integrity sha512-QMEp5B7cftE7APOjk5Y6xgrbWu+WkLVQwk8JNjZ8nKRciZaByEW6MubieAiToS7+dwvrjGhH8jRXz3MVd0AYqQ== dependencies: - "@babel/code-frame" "^7.0.0" - builtin-modules "^1.1.1" - chalk "^2.3.0" - commander "^2.12.1" - diff "^4.0.1" - glob "^7.1.1" - js-yaml "^3.13.1" - minimatch "^3.0.4" - mkdirp "^0.5.3" - resolve "^1.3.2" - semver "^5.3.0" - tslib "^1.13.0" - tsutils "^2.29.0" - -tsort@0.0.1: - version "0.0.1" - resolved "https://registry.yarnpkg.com/tsort/-/tsort-0.0.1.tgz#e2280f5e817f8bf4275657fd0f9aebd44f5a2786" - integrity sha1-4igPXoF/i/QnVlf9D5rr1E9aJ4Y= + inherits "^2.0.1" + safe-buffer "^5.0.1" -tsutils@^2.29.0: - version "2.29.0" - resolved "https://registry.yarnpkg.com/tsutils/-/tsutils-2.29.0.tgz#32b488501467acbedd4b85498673a0812aca0b99" - integrity sha512-g5JVHCIJwzfISaXpXE1qvNalca5Jwob6FjI4AoPlqMusJ6ftFE7IkkFoMhVLRgK+4Kx3gkzb8UZK5t5yTTvEmA== +sha1@^1.1.1: + version "1.1.1" + resolved "https://registry.yarnpkg.com/sha1/-/sha1-1.1.1.tgz#addaa7a93168f393f19eb2b15091618e2700f848" + integrity sha1-rdqnqTFo85PxnrKxUJFhjicA+Eg= dependencies: - tslib "^1.8.1" + charenc ">= 0.0.1" + crypt ">= 0.0.1" -tty-browserify@0.0.0: - version "0.0.0" - resolved "https://registry.yarnpkg.com/tty-browserify/-/tty-browserify-0.0.0.tgz#a157ba402da24e9bf957f9aa69d524eed42901a6" - integrity sha1-oVe6QC2iTpv5V/mqadUk7tQpAaY= +shebang-command@^1.2.0: + version "1.2.0" + resolved "https://registry.yarnpkg.com/shebang-command/-/shebang-command-1.2.0.tgz#44aac65b695b03398968c39f363fee5deafdf1ea" + integrity sha1-RKrGW2lbAzmJaMOfNj/uXer98eo= + dependencies: + shebang-regex "^1.0.0" -tunnel-agent@^0.6.0: - version "0.6.0" - resolved "https://registry.yarnpkg.com/tunnel-agent/-/tunnel-agent-0.6.0.tgz#27a5dea06b36b04a0a9966774b290868f0fc40fd" - integrity sha1-J6XeoGs2sEoKmWZ3SykIaPD8QP0= +shebang-command@^2.0.0: + version "2.0.0" + resolved "https://registry.yarnpkg.com/shebang-command/-/shebang-command-2.0.0.tgz#ccd0af4f8835fbdc265b82461aaf0c36663f34ea" + integrity sha512-kHxr2zZpYtdmrN1qDjrrX/Z1rR1kG8Dx+gkpK1G4eXmvXswmcE1hTWBWYUzlraYw1/yZp6YuDY77YtvbN0dmDA== dependencies: - safe-buffer "^5.0.1" + shebang-regex "^3.0.0" -tweetnacl-util@^0.15.1: - version "0.15.1" - resolved "https://registry.yarnpkg.com/tweetnacl-util/-/tweetnacl-util-0.15.1.tgz#b80fcdb5c97bcc508be18c44a4be50f022eea00b" - integrity sha512-RKJBIj8lySrShN4w6i/BonWp2Z/uxwC3h4y7xsRrpP59ZboCd0GpEVsOnMDYLMmKBpYhb5TgHzZXy7wTfYFBRw== +shebang-regex@^1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/shebang-regex/-/shebang-regex-1.0.0.tgz#da42f49740c0b42db2ca9728571cb190c98efea3" + integrity sha1-2kL0l0DAtC2yypcoVxyxkMmO/qM= -tweetnacl@1.x.x, tweetnacl@^1.0.0, tweetnacl@^1.0.3: - version "1.0.3" - resolved "https://registry.yarnpkg.com/tweetnacl/-/tweetnacl-1.0.3.tgz#ac0af71680458d8a6378d0d0d050ab1407d35596" - integrity sha512-6rt+RN7aOi1nGMyC4Xa5DdYiukl2UWCbcJft7YhxReBGQD7OAM8Pbxw6YMo4r2diNEA8FEmu32YOn9rhaiE5yw== +shebang-regex@^3.0.0: + version "3.0.0" + resolved "https://registry.yarnpkg.com/shebang-regex/-/shebang-regex-3.0.0.tgz#ae16f1644d873ecad843b0307b143362d4c42172" + integrity sha512-7++dFhtcx3353uBaq8DDR4NuxBetBzC7ZQOhmTQInHEd6bSrXdiEyzCvG07Z44UYdLShWUyXt5M/yhz8ekcb1A== -tweetnacl@^0.14.3, tweetnacl@~0.14.0: - version "0.14.5" - resolved "https://registry.yarnpkg.com/tweetnacl/-/tweetnacl-0.14.5.tgz#5ae68177f192d4456269d108afa93ff8743f4f64" - integrity sha1-WuaBd/GS1EViadEIr6k/+HQ/T2Q= +shelljs@^0.8.3: + version "0.8.4" + resolved "https://registry.yarnpkg.com/shelljs/-/shelljs-0.8.4.tgz#de7684feeb767f8716b326078a8a00875890e3c2" + integrity sha512-7gk3UZ9kOfPLIAbslLzyWeGiEqx9e3rxwZM0KE6EL8GlGwjym9Mrlx5/p33bWTu9YG6vcS4MBxYZDHYr5lr8BQ== + dependencies: + glob "^7.0.0" + interpret "^1.0.0" + rechoir "^0.6.2" -type-check@~0.3.2: - version "0.3.2" - resolved "https://registry.yarnpkg.com/type-check/-/type-check-0.3.2.tgz#5884cab512cf1d355e3fb784f30804b2b520db72" - integrity sha1-WITKtRLPHTVeP7eE8wgEsrUg23I= +side-channel@^1.0.4: + version "1.0.4" + resolved "https://registry.yarnpkg.com/side-channel/-/side-channel-1.0.4.tgz#efce5c8fdc104ee751b25c58d4290011fa5ea2cf" + integrity sha512-q5XPytqFEIKHkGdiMIrY10mvLRvnQh42/+GoBlFW3b2LXLE2xxJpZFdm94we0BaoV3RwJyGqg5wS7epxTv0Zvw== dependencies: - prelude-ls "~1.1.2" + call-bind "^1.0.0" + get-intrinsic "^1.0.2" + object-inspect "^1.9.0" -type-detect@0.1.1: - version "0.1.1" - resolved "https://registry.yarnpkg.com/type-detect/-/type-detect-0.1.1.tgz#0ba5ec2a885640e470ea4e8505971900dac58822" - integrity sha1-C6XsKohWQORw6k6FBZcZANrFiCI= +signal-exit@^3.0.0, signal-exit@^3.0.2: + version "3.0.3" + resolved "https://registry.yarnpkg.com/signal-exit/-/signal-exit-3.0.3.tgz#a1410c2edd8f077b08b4e253c8eacfcaf057461c" + integrity sha512-VUJ49FC8U1OxwZLxIbTTrDvLnf/6TDgxZcK8wxR8zs13xpx7xbG60ndBlhNrFi2EMuFRoeDoJO7wthSLq42EjA== -type-detect@^4.0.0, type-detect@^4.0.5: - version "4.0.8" - resolved "https://registry.yarnpkg.com/type-detect/-/type-detect-4.0.8.tgz#7646fb5f18871cfbb7749e69bd39a6388eb7450c" - integrity sha512-0fr/mIH1dlO+x7TlcMy+bIDqKPsw/70tVyeHW787goQjhmqaZe10uwLujubK9q9Lg6Fiho1KUKDYz0Z7k7g5/g== +simple-concat@^1.0.0: + version "1.0.1" + resolved "https://registry.yarnpkg.com/simple-concat/-/simple-concat-1.0.1.tgz#f46976082ba35c2263f1c8ab5edfe26c41c9552f" + integrity sha512-cSFtAPtRhljv69IK0hTVZQ+OfE9nePi/rtJmw5UjHeVyVroEqJXP1sFztKUy1qU+xvz3u/sfYJLa947b7nAN2Q== -type-is@^1.6.16, type-is@~1.6.17, type-is@~1.6.18: - version "1.6.18" - resolved "https://registry.yarnpkg.com/type-is/-/type-is-1.6.18.tgz#4e552cd05df09467dcbc4ef739de89f2cf37c131" - integrity sha512-TkRKr9sUTxEH8MdfuCSP7VizJyzRNMjj2J2do2Jr3Kym598JVdEksuzPQCnlFPW4ky9Q+iA+ma9BGm06XQBy8g== +simple-get@^2.7.0: + version "2.8.1" + resolved "https://registry.yarnpkg.com/simple-get/-/simple-get-2.8.1.tgz#0e22e91d4575d87620620bc91308d57a77f44b5d" + integrity sha512-lSSHRSw3mQNUGPAYRqo7xy9dhKmxFXIjLjp4KHpf99GEH2VH7C3AM+Qfx6du6jhfUi6Vm7XnbEVEf7Wb6N8jRw== dependencies: - media-typer "0.3.0" - mime-types "~2.1.24" - -type@^1.0.1: - version "1.2.0" - resolved "https://registry.yarnpkg.com/type/-/type-1.2.0.tgz#848dd7698dafa3e54a6c479e759c4bc3f18847a0" - integrity sha512-+5nt5AAniqsCnu2cEQQdpzCAh33kVx8n0VoFidKpB1dVVLAN/F+bgVOqOJqOnEnrhp222clB5p3vUlD+1QAnfg== + decompress-response "^3.3.0" + once "^1.3.1" + simple-concat "^1.0.0" -type@^2.0.0: +slash@^2.0.0: version "2.0.0" - resolved "https://registry.yarnpkg.com/type/-/type-2.0.0.tgz#5f16ff6ef2eb44f260494dae271033b29c09a9c3" - integrity sha512-KBt58xCHry4Cejnc2ISQAF7QY+ORngsWfxezO68+12hKV6lQY8P/psIkcbjeHWn7MqcgciWJyCCevFMJdIXpow== + resolved "https://registry.yarnpkg.com/slash/-/slash-2.0.0.tgz#de552851a1759df3a8f206535442f5ec4ddeab44" + integrity sha512-ZYKh3Wh2z1PpEXWr0MpSBZ0V6mZHAQfYevttO11c51CaWjGTaadiKZ+wVt1PbMlDV5qhMFslpZCemhwOK7C89A== -typechain@^5.1.2: - version "5.1.2" - resolved "https://registry.yarnpkg.com/typechain/-/typechain-5.1.2.tgz#c8784d6155a8e69397ca47f438a3b4fb2aa939da" - integrity sha512-FuaCxJd7BD3ZAjVJoO+D6TnqKey3pQdsqOBsC83RKYWKli5BDhdf0TPkwfyjt20TUlZvOzJifz+lDwXsRkiSKA== - dependencies: - "@types/prettier" "^2.1.1" - command-line-args "^4.0.7" - 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-essentials "^7.0.1" +slash@^3.0.0: + version "3.0.0" + resolved "https://registry.yarnpkg.com/slash/-/slash-3.0.0.tgz#6539be870c165adbd5240220dbe361f1bc4d4634" + integrity sha512-g9Q1haeby36OSStwb4ntCGGGaKsaVSjQ68fBxoQcutl5fS1vuY18H3wSt3jFyFtrkx+Kz0V1G85A4MyAdDMi2Q== -typedarray-to-buffer@^3.1.5, typedarray-to-buffer@~3.1.5: - version "3.1.5" - resolved "https://registry.yarnpkg.com/typedarray-to-buffer/-/typedarray-to-buffer-3.1.5.tgz#a97ee7a9ff42691b9f783ff1bc5112fe3fca9080" - integrity sha512-zdu8XMNEDepKKR+XYOXAVPtWui0ly0NtohUscw+UmaHiAWT8hrV1rr//H6V+0DvJ3OQ19S979M0laLfX8rm82Q== +slice-ansi@^2.1.0: + version "2.1.0" + resolved "https://registry.yarnpkg.com/slice-ansi/-/slice-ansi-2.1.0.tgz#cacd7693461a637a5788d92a7dd4fba068e81636" + integrity sha512-Qu+VC3EwYLldKa1fCxuuvULvSJOKEgk9pi8dZeCVK7TqBfUNTH4sFkk4joj8afVSfAYgJoSOetjx9QWOJ5mYoQ== dependencies: - is-typedarray "^1.0.0" - -typedarray@^0.0.6, typedarray@~0.0.5: - version "0.0.6" - resolved "https://registry.yarnpkg.com/typedarray/-/typedarray-0.0.6.tgz#867ac74e3864187b1d3d47d996a78ec5c8830777" - integrity sha1-hnrHTjhkGHsdPUfZlqeOxciDB3c= - -typeforce@^1.11.5: - version "1.18.0" - resolved "https://registry.yarnpkg.com/typeforce/-/typeforce-1.18.0.tgz#d7416a2c5845e085034d70fcc5b6cc4a90edbfdc" - integrity sha512-7uc1O8h1M1g0rArakJdf0uLRSSgFcYexrVoKo+bzJd32gd4gDy2L/Z+8/FjPnU9ydY3pEnVPtr9FyscYY60K1g== + ansi-styles "^3.2.0" + astral-regex "^1.0.0" + is-fullwidth-code-point "^2.0.0" -typescript-compare@^0.0.2: - version "0.0.2" - resolved "https://registry.yarnpkg.com/typescript-compare/-/typescript-compare-0.0.2.tgz#7ee40a400a406c2ea0a7e551efd3309021d5f425" - integrity sha512-8ja4j7pMHkfLJQO2/8tut7ub+J3Lw2S3061eJLFQcvs3tsmJKp8KG5NtpLn7KcY2w08edF74BSVN7qJS0U6oHA== +slice-ansi@^4.0.0: + version "4.0.0" + resolved "https://registry.yarnpkg.com/slice-ansi/-/slice-ansi-4.0.0.tgz#500e8dd0fd55b05815086255b3195adf2a45fe6b" + integrity sha512-qMCMfhY040cVHT43K9BFygqYbUPFZKHOg7K73mtTWJRb8pyP3fzf4Ixd5SzdEJQ6MRUg/WBnOLxghZtKKurENQ== dependencies: - typescript-logic "^0.0.0" + ansi-styles "^4.0.0" + astral-regex "^2.0.0" + is-fullwidth-code-point "^3.0.0" -typescript-logic@^0.0.0: - version "0.0.0" - resolved "https://registry.yarnpkg.com/typescript-logic/-/typescript-logic-0.0.0.tgz#66ebd82a2548f2b444a43667bec120b496890196" - integrity sha512-zXFars5LUkI3zP492ls0VskH3TtdeHCqu0i7/duGt60i5IGPIpAHE/DWo5FqJ6EjQ15YKXrt+AETjv60Dat34Q== +solc@0.7.3: + version "0.7.3" + resolved "https://registry.yarnpkg.com/solc/-/solc-0.7.3.tgz#04646961bd867a744f63d2b4e3c0701ffdc7d78a" + 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" -typescript-tuple@^2.2.1: - version "2.2.1" - resolved "https://registry.yarnpkg.com/typescript-tuple/-/typescript-tuple-2.2.1.tgz#7d9813fb4b355f69ac55032e0363e8bb0f04dad2" - integrity sha512-Zcr0lbt8z5ZdEzERHAMAniTiIKerFCMgd7yjq1fPnDJ43et/k9twIFQMUYff9k5oXcsQ0WpvFcgzK2ZKASoW6Q== +solhint-plugin-prettier@^0.0.5: + version "0.0.5" + resolved "https://registry.yarnpkg.com/solhint-plugin-prettier/-/solhint-plugin-prettier-0.0.5.tgz#e3b22800ba435cd640a9eca805a7f8bc3e3e6a6b" + integrity sha512-7jmWcnVshIrO2FFinIvDQmhQpfpS2rRRn3RejiYgnjIE68xO2bvrYvjqVNfrio4xH9ghOqn83tKuTzLjEbmGIA== dependencies: - typescript-compare "^0.0.2" + prettier-linter-helpers "^1.0.0" -typescript@^4.3.5: - version "4.3.5" - resolved "https://registry.yarnpkg.com/typescript/-/typescript-4.3.5.tgz#4d1c37cc16e893973c45a06886b7113234f119f4" - integrity sha512-DqQgihaQ9cUrskJo9kIyW/+g0Vxsk8cDtZ52a3NGh0YNTfpUSArXSohyUGnvbPazEPLu398C0UxmKSOrPumUzA== +solhint@^3.3.6: + version "3.3.6" + resolved "https://registry.yarnpkg.com/solhint/-/solhint-3.3.6.tgz#abe9af185a9a7defefba480047b3e42cbe9a1210" + integrity sha512-HWUxTAv2h7hx3s3hAab3ifnlwb02ZWhwFU/wSudUHqteMS3ll9c+m1FlGn9V8ztE2rf3Z82fQZA005Wv7KpcFA== + 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" + optionalDependencies: + prettier "^1.14.3" -typical@^2.6.0, typical@^2.6.1: - version "2.6.1" - resolved "https://registry.yarnpkg.com/typical/-/typical-2.6.1.tgz#5c080e5d661cbbe38259d2e70a3c7253e873881d" - integrity sha1-XAgOXWYcu+OCWdLnCjxyU+hziB0= +solidity-comments-extractor@^0.0.7: + version "0.0.7" + resolved "https://registry.yarnpkg.com/solidity-comments-extractor/-/solidity-comments-extractor-0.0.7.tgz#99d8f1361438f84019795d928b931f4e5c39ca19" + integrity sha512-wciNMLg/Irp8OKGrh3S2tfvZiZ0NEyILfcRCXCD4mp7SgK/i9gzLfhY2hY7VMCQJ3kH9UB9BzNdibIVMchzyYw== -ua-parser-js@^0.7.18: - version "0.7.24" - resolved "https://registry.yarnpkg.com/ua-parser-js/-/ua-parser-js-0.7.24.tgz#8d3ecea46ed4f1f1d63ec25f17d8568105dc027c" - integrity sha512-yo+miGzQx5gakzVK3QFfN0/L9uVhosXBBO7qmnk7c2iw1IhL212wfA3zbnI54B0obGwC/5NWub/iT9sReMx+Fw== +solidity-coverage@^0.7.16: + version "0.7.16" + resolved "https://registry.yarnpkg.com/solidity-coverage/-/solidity-coverage-0.7.16.tgz#c8c8c46baa361e2817bbf275116ddd2ec90a55fb" + integrity sha512-ttBOStywE6ZOTJmmABSg4b8pwwZfYKG8zxu40Nz+sRF5bQX7JULXWj/XbX0KXps3Fsp8CJXg8P29rH3W54ipxw== + dependencies: + "@solidity-parser/parser" "^0.12.0" + "@truffle/provider" "^0.2.24" + chalk "^2.4.2" + death "^1.1.0" + detect-port "^1.3.0" + fs-extra "^8.1.0" + ganache-cli "^6.11.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" -uglify-js@^2.8.29: - version "2.8.29" - resolved "https://registry.yarnpkg.com/uglify-js/-/uglify-js-2.8.29.tgz#29c5733148057bb4e1f75df35b7a9cb72e6a59dd" - integrity sha1-KcVzMUgFe7Th913zW3qcty5qWd0= +source-map-support@0.5.12: + version "0.5.12" + resolved "https://registry.yarnpkg.com/source-map-support/-/source-map-support-0.5.12.tgz#b4f3b10d51857a5af0138d3ce8003b201613d599" + integrity sha512-4h2Pbvyy15EE02G+JOZpUCmqWJuqrs+sEkzewTm++BPi7Hvn/HwcqLAcNxYAyI0x13CpPPn+kMjl+hplXMHITQ== dependencies: - source-map "~0.5.1" - yargs "~3.10.0" - optionalDependencies: - uglify-to-browserify "~1.0.0" + buffer-from "^1.0.0" + source-map "^0.6.0" -uglify-js@^3.1.4: - version "3.8.0" - resolved "https://registry.yarnpkg.com/uglify-js/-/uglify-js-3.8.0.tgz#f3541ae97b2f048d7e7e3aa4f39fd8a1f5d7a805" - integrity sha512-ugNSTT8ierCsDHso2jkBHXYrU8Y5/fY2ZUprfrJUiD7YpuFvV4jODLFmb3h4btQjqr5Nh4TX4XtgDfCU1WdioQ== +source-map-support@^0.5.13: + version "0.5.19" + resolved "https://registry.yarnpkg.com/source-map-support/-/source-map-support-0.5.19.tgz#a98b62f86dcaf4f67399648c085291ab9e8fed61" + integrity sha512-Wonm7zOCIJzBGQdB+thsPar0kYuCIzYvxZwlBa87yi/Mdjv7Tip2cyVbLj5o0cFPN4EVkuTwb3GDDyUx2DGnGw== dependencies: - commander "~2.20.3" - source-map "~0.6.1" + buffer-from "^1.0.0" + source-map "^0.6.0" -uglify-to-browserify@~1.0.0: - version "1.0.2" - resolved "https://registry.yarnpkg.com/uglify-to-browserify/-/uglify-to-browserify-1.0.2.tgz#6e0924d6bda6b5afe349e39a6d632850a0f882b7" - integrity sha1-bgkk1r2mta/jSeOabWMoUKD4grc= +source-map@^0.6.0, source-map@^0.6.1: + version "0.6.1" + resolved "https://registry.yarnpkg.com/source-map/-/source-map-0.6.1.tgz#74722af32e9614e9c287a8d0bbde48b5e2f1a263" + integrity sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g== -uglifyjs-webpack-plugin@^0.4.6: - version "0.4.6" - resolved "https://registry.yarnpkg.com/uglifyjs-webpack-plugin/-/uglifyjs-webpack-plugin-0.4.6.tgz#b951f4abb6bd617e66f63eb891498e391763e309" - integrity sha1-uVH0q7a9YX5m9j64kUmOORdj4wk= +source-map@~0.2.0: + version "0.2.0" + resolved "https://registry.yarnpkg.com/source-map/-/source-map-0.2.0.tgz#dab73fbcfc2ba819b4de03bd6f6eaa48164b3f9d" + integrity sha1-2rc/vPwrqBm03gO9b26qSBZLP50= dependencies: - source-map "^0.5.6" - uglify-js "^2.8.29" - webpack-sources "^1.0.1" + amdefine ">=0.0.4" -uint8arrays@1.1.0, uint8arrays@^1.0.0, uint8arrays@^1.1.0: - version "1.1.0" - resolved "https://registry.yarnpkg.com/uint8arrays/-/uint8arrays-1.1.0.tgz#d034aa65399a9fd213a1579e323f0b29f67d0ed2" - integrity sha512-cLdlZ6jnFczsKf5IH1gPHTtcHtPGho5r4CvctohmQjw8K7Q3gFdfIGHxSTdTaCKrL4w09SsPRJTqRS0drYeszA== - dependencies: - multibase "^3.0.0" - web-encoding "^1.0.2" +sprintf-js@~1.0.2: + version "1.0.3" + resolved "https://registry.yarnpkg.com/sprintf-js/-/sprintf-js-1.0.3.tgz#04e6926f662895354f3dd015203633b857297e2c" + integrity sha1-BOaSb2YolTVPPdAVIDYzuFcpfiw= -uint8arrays@^2.0.5, uint8arrays@^2.1.3, uint8arrays@^2.1.5: - version "2.1.10" - resolved "https://registry.yarnpkg.com/uint8arrays/-/uint8arrays-2.1.10.tgz#34d023c843a327c676e48576295ca373c56e286a" - integrity sha512-Q9/hhJa2836nQfEJSZTmr+pg9+cDJS9XEAp7N2Vg5MzL3bK/mkMVfjscRGYruP9jNda6MAdf4QD/y78gSzkp6A== +sshpk@^1.7.0: + version "1.16.1" + resolved "https://registry.yarnpkg.com/sshpk/-/sshpk-1.16.1.tgz#fb661c0bef29b39db40769ee39fa70093d6f6877" + integrity sha512-HXXqVUq7+pcKeLqqZj6mHFUMvXtOJt1uoUx09pFW6011inTMxqI8BA8PM95myrIyyKwdnzjdFjLiE6KBPVtJIg== dependencies: - multiformats "^9.4.2" + 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" -uint8arrays@^3.0.0: - version "3.0.0" - resolved "https://registry.yarnpkg.com/uint8arrays/-/uint8arrays-3.0.0.tgz#260869efb8422418b6f04e3fac73a3908175c63b" - integrity sha512-HRCx0q6O9Bfbp+HHSfQQKD7wU70+lydKVt4EghkdOvlK/NlrF90z+eXV34mUd48rNvVJXwkrMSPpCATkct8fJA== +stacktrace-parser@^0.1.10: + version "0.1.10" + resolved "https://registry.yarnpkg.com/stacktrace-parser/-/stacktrace-parser-0.1.10.tgz#29fb0cae4e0d0b85155879402857a1639eb6051a" + integrity sha512-KJP1OCML99+8fhOHxwwzyWrlUuVX5GQ0ZpJTd1DFXhdkrvg1szxfHhawXUZ3g9TkXORQd4/WG68jMlQZ2p8wlg== dependencies: - multiformats "^9.4.2" + type-fest "^0.7.1" -ultron@~1.1.0: +"statuses@>= 1.5.0 < 2", statuses@~1.5.0: + version "1.5.0" + resolved "https://registry.yarnpkg.com/statuses/-/statuses-1.5.0.tgz#161c7dac177659fd9811f43771fa99381478628c" + integrity sha1-Fhx9rBd2Wf2YEfQ3cfqZOBR4Yow= + +stealthy-require@^1.1.1: version "1.1.1" - resolved "https://registry.yarnpkg.com/ultron/-/ultron-1.1.1.tgz#9fe1536a10a664a65266a1e3ccf85fd36302bc9c" - integrity sha512-UIEXBNeYmKptWH6z8ZnqTeS8fV74zG0/eRU9VGkpzz+LIJNs8W/zM/L+7ctCkRrgbNnnR0xxw4bKOr0cW0N0Og== + resolved "https://registry.yarnpkg.com/stealthy-require/-/stealthy-require-1.1.1.tgz#35b09875b4ff49f26a777e509b3090a3226bf24b" + integrity sha1-NbCYdbT/SfJqd35QmzCQoyJr8ks= -unbox-primitive@^1.0.0: - version "1.0.0" - resolved "https://registry.yarnpkg.com/unbox-primitive/-/unbox-primitive-1.0.0.tgz#eeacbc4affa28e9b3d36b5eaeccc50b3251b1d3f" - integrity sha512-P/51NX+JXyxK/aigg1/ZgyccdAxm5K1+n8+tvqSntjOivPt19gvm1VC49RWYetsiub8WViUchdxl/KWHHB0kzA== - dependencies: - function-bind "^1.1.1" - has-bigints "^1.0.0" - has-symbols "^1.0.0" - which-boxed-primitive "^1.0.1" +strict-uri-encode@^1.0.0: + version "1.1.0" + resolved "https://registry.yarnpkg.com/strict-uri-encode/-/strict-uri-encode-1.1.0.tgz#279b225df1d582b1f54e65addd4352e18faa0713" + integrity sha1-J5siXfHVgrH1TmWt3UNS4Y+qBxM= -unbzip2-stream@^1.0.9: - version "1.3.3" - resolved "https://registry.yarnpkg.com/unbzip2-stream/-/unbzip2-stream-1.3.3.tgz#d156d205e670d8d8c393e1c02ebd506422873f6a" - integrity sha512-fUlAF7U9Ah1Q6EieQ4x4zLNejrRvDWUYmxXUpN3uziFYCHapjWFaCAnreY9bGgxzaMCFAPPpYNng57CypwJVhg== +"string-width@^1.0.2 || 2", string-width@^2.1.0, string-width@^2.1.1: + version "2.1.1" + resolved "https://registry.yarnpkg.com/string-width/-/string-width-2.1.1.tgz#ab93f27a8dc13d28cac815c462143a6d9012ae9e" + integrity sha512-nOqH59deCq9SRHlxq1Aw85Jnt4w6KvLKqWVik6oA9ZklXLNIOlqg4F2yrT1MVaTjAqvVwdfeZ7w7aCvJD7ugkw== dependencies: - buffer "^5.2.1" - through "^2.3.8" - -underscore@1.9.1: - version "1.9.1" - resolved "https://registry.yarnpkg.com/underscore/-/underscore-1.9.1.tgz#06dce34a0e68a7babc29b365b8e74b8925203961" - integrity sha512-5/4etnCkd9c8gwgowi5/om/mYO5ajCaOgdzj/oW+0eQV9WxKBDZw5+ycmKmeaTXjInS/W0BzpGLo2xR2aBwZdg== + is-fullwidth-code-point "^2.0.0" + strip-ansi "^4.0.0" -union-value@^1.0.0: - version "1.0.1" - resolved "https://registry.yarnpkg.com/union-value/-/union-value-1.0.1.tgz#0b6fe7b835aecda61c6ea4d4f02c14221e109847" - integrity sha512-tJfXmxMeWYnczCVs7XAEvIV7ieppALdyepWMkHkwciRpZraG/xwT+s2JN8+pr1+8jCRf80FFzvr+MpQeeoF4Xg== +string-width@^3.0.0, string-width@^3.1.0: + version "3.1.0" + resolved "https://registry.yarnpkg.com/string-width/-/string-width-3.1.0.tgz#22767be21b62af1081574306f69ac51b62203961" + integrity sha512-vafcv6KjVZKSgz06oM/H6GDBrAtz8vdhQakGjFIvNrHA6y3HCF1CInLy+QLq8dTJPQ1b+KDUqDFctkdRW44e1w== dependencies: - arr-union "^3.1.0" - get-value "^2.0.6" - is-extendable "^0.1.1" - set-value "^2.0.1" + emoji-regex "^7.0.1" + is-fullwidth-code-point "^2.0.0" + strip-ansi "^5.1.0" -unique-stream@^2.0.2: - version "2.3.1" - resolved "https://registry.yarnpkg.com/unique-stream/-/unique-stream-2.3.1.tgz#c65d110e9a4adf9a6c5948b28053d9a8d04cbeac" - integrity sha512-2nY4TnBE70yoxHkDli7DMazpWiP7xMdCYqU2nBRO0UB+ZpEkGsSija7MvmvnZFUeC+mrgiUfcHSr3LmRFIg4+A== +string-width@^4.1.0, string-width@^4.2.0, string-width@^4.2.2: + version "4.2.2" + resolved "https://registry.yarnpkg.com/string-width/-/string-width-4.2.2.tgz#dafd4f9559a7585cfba529c6a0a4f73488ebd4c5" + integrity sha512-XBJbT3N4JhVumXE0eoLU9DCjcaF92KLNqTmFCnG1pf8duUxFGwtP6AD6nkjw9a3IdiRtL3E2w3JDiE/xi3vOeA== dependencies: - json-stable-stringify-without-jsonify "^1.0.1" - through2-filter "^3.0.0" + emoji-regex "^8.0.0" + is-fullwidth-code-point "^3.0.0" + strip-ansi "^6.0.0" -unique-string@^1.0.0: - version "1.0.0" - resolved "https://registry.yarnpkg.com/unique-string/-/unique-string-1.0.0.tgz#9e1057cca851abb93398f8b33ae187b99caec11a" - integrity sha1-nhBXzKhRq7kzmPizOuGHuZyuwRo= +string.prototype.trimend@^1.0.4: + version "1.0.4" + resolved "https://registry.yarnpkg.com/string.prototype.trimend/-/string.prototype.trimend-1.0.4.tgz#e75ae90c2942c63504686c18b287b4a0b1a45f80" + integrity sha512-y9xCjw1P23Awk8EvTpcyL2NIr1j7wJ39f+k6lvRnSMz+mz9CGz9NYPelDk42kOz6+ql8xjfK8oYzy3jAP5QU5A== dependencies: - crypto-random-string "^1.0.0" - -universalify@^0.1.0, universalify@^0.1.2: - version "0.1.2" - resolved "https://registry.yarnpkg.com/universalify/-/universalify-0.1.2.tgz#b646f69be3942dabcecc9d6639c80dc105efaa66" - integrity sha512-rBJeI5CXAlmy1pV+617WB9J63U6XcazHHF2f2dbJix4XzpUF0RS3Zbj0FGIOCAva5P/d/GBOYaACQ1w+0azUkg== - -universalify@^2.0.0: - version "2.0.0" - resolved "https://registry.yarnpkg.com/universalify/-/universalify-2.0.0.tgz#75a4984efedc4b08975c5aeb73f530d02df25717" - integrity sha512-hAZsKq7Yy11Zu1DE0OzWjw7nnLZmJZYTDZZyEFHZdUhV8FkH5MCfoU1XMaxXovpyW5nq5scPqq0ZDP9Zyl04oQ== + call-bind "^1.0.2" + define-properties "^1.1.3" -unixify@1.0.0: - version "1.0.0" - resolved "https://registry.yarnpkg.com/unixify/-/unixify-1.0.0.tgz#3a641c8c2ffbce4da683a5c70f03a462940c2090" - integrity sha1-OmQcjC/7zk2mg6XHDwOkYpQMIJA= +string.prototype.trimstart@^1.0.4: + version "1.0.4" + resolved "https://registry.yarnpkg.com/string.prototype.trimstart/-/string.prototype.trimstart-1.0.4.tgz#b36399af4ab2999b4c9c648bd7a3fb2bb26feeed" + integrity sha512-jh6e984OBfvxS50tdY2nRZnoC5/mLFKOREQfw8t5yytkoUsJRNxvI/E39qu1sD0OtWI3OC0XgKSmcWwziwYuZw== dependencies: - normalize-path "^2.1.1" - -unorm@^1.4.1: - version "1.6.0" - resolved "https://registry.yarnpkg.com/unorm/-/unorm-1.6.0.tgz#029b289661fba714f1a9af439eb51d9b16c205af" - integrity sha512-b2/KCUlYZUeA7JFUuRJZPUtr4gZvBh7tavtv4fvk4+KV9pfGiR6CQAQAWl49ZpR3ts2dk4FYkP7EIgDJoiOLDA== - -unpipe@1.0.0, unpipe@~1.0.0: - version "1.0.0" - resolved "https://registry.yarnpkg.com/unpipe/-/unpipe-1.0.0.tgz#b2bf4ee8514aae6165b4817829d21b2ef49904ec" - integrity sha1-sr9O6FFKrmFltIF4KdIbLvSZBOw= + call-bind "^1.0.2" + define-properties "^1.1.3" -unset-value@^1.0.0: - version "1.0.0" - resolved "https://registry.yarnpkg.com/unset-value/-/unset-value-1.0.0.tgz#8376873f7d2335179ffb1e6fc3a8ed0dfc8ab559" - integrity sha1-g3aHP30jNRef+x5vw6jtDfyKtVk= +string_decoder@^1.1.1: + version "1.3.0" + resolved "https://registry.yarnpkg.com/string_decoder/-/string_decoder-1.3.0.tgz#42f114594a46cf1a8e30b0a84f56c78c3edac21e" + integrity sha512-hkRX8U1WjJFd8LsDJ2yQ/wWWxaopEsABU1XfkM8A+j0+85JAGppt16cr1Whg6KIbb4okU6Mql6BOj+uup/wKeA== dependencies: - has-value "^0.3.1" - isobject "^3.0.0" - -upath@^1.1.1: - version "1.2.0" - resolved "https://registry.yarnpkg.com/upath/-/upath-1.2.0.tgz#8f66dbcd55a883acdae4408af8b035a5044c1894" - integrity sha512-aZwGpamFO61g3OlfT7OQCHqhGnW43ieH9WZeP7QxN/G/jS4jfqUkZxoryvJgVPEcrl5NL/ggHsSmLMHuH64Lhg== + safe-buffer "~5.2.0" -upper-case-first@^1.1.0, upper-case-first@^1.1.2: - version "1.1.2" - resolved "https://registry.yarnpkg.com/upper-case-first/-/upper-case-first-1.1.2.tgz#5d79bedcff14419518fd2edb0a0507c9b6859115" - integrity sha1-XXm+3P8UQZUY/S7bCgUHybaFkRU= +string_decoder@~1.1.1: + version "1.1.1" + resolved "https://registry.yarnpkg.com/string_decoder/-/string_decoder-1.1.1.tgz#9cf1611ba62685d7030ae9e4ba34149c3af03fc8" + integrity sha512-n/ShnvDi6FHbbVfviro+WojiFzv+s8MPMHBczVePfUpDJLwoLT0ht1l4YwBCbi8pJAveEEdnkHyPyTP/mzRfwg== dependencies: - 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.yarnpkg.com/upper-case/-/upper-case-1.1.3.tgz#f6b4501c2ec4cdd26ba78be7222961de77621598" - integrity sha1-9rRQHC7EzdJrp4vnIilh3ndiFZg= + safe-buffer "~5.1.0" -uri-js@^4.2.2: - version "4.2.2" - resolved "https://registry.yarnpkg.com/uri-js/-/uri-js-4.2.2.tgz#94c540e1ff772956e2299507c010aea6c8838eb0" - integrity sha512-KY9Frmirql91X2Qgjry0Wd4Y+YTdrdZheS8TFwvkbLWf/G5KNJDCh6pKL5OZctEW4+0Baa5idK2ZQuELRwPznQ== +strip-ansi@^4.0.0: + version "4.0.0" + resolved "https://registry.yarnpkg.com/strip-ansi/-/strip-ansi-4.0.0.tgz#a8479022eb1ac368a871389b635262c505ee368f" + integrity sha1-qEeQIusaw2iocTibY1JixQXuNo8= dependencies: - punycode "^2.1.0" - -urix@^0.1.0: - version "0.1.0" - resolved "https://registry.yarnpkg.com/urix/-/urix-0.1.0.tgz#da937f7a62e21fec1fd18d49b35c2935067a6c72" - integrity sha1-2pN/emLiH+wf0Y1Js1wpNQZ6bHI= + ansi-regex "^3.0.0" -url-parse-lax@^1.0.0: - version "1.0.0" - resolved "https://registry.yarnpkg.com/url-parse-lax/-/url-parse-lax-1.0.0.tgz#7af8f303645e9bd79a272e7a14ac68bc0609da73" - integrity sha1-evjzA2Rem9eaJy56FKxovAYJ2nM= +strip-ansi@^5.0.0, strip-ansi@^5.1.0, strip-ansi@^5.2.0: + version "5.2.0" + resolved "https://registry.yarnpkg.com/strip-ansi/-/strip-ansi-5.2.0.tgz#8c9a536feb6afc962bdfa5b104a5091c1ad9c0ae" + integrity sha512-DuRs1gKbBqsMKIZlrffwlug8MHkcnpjs5VPmL1PAh+mA30U0DTotfDZ0d2UUsXpPmPmMMJ6W773MaA3J+lbiWA== dependencies: - prepend-http "^1.0.1" + ansi-regex "^4.1.0" -url-parse-lax@^3.0.0: - version "3.0.0" - resolved "https://registry.yarnpkg.com/url-parse-lax/-/url-parse-lax-3.0.0.tgz#16b5cafc07dbe3676c1b1999177823d6503acb0c" - integrity sha1-FrXK/Afb42dsGxmZF3gj1lA6yww= +strip-ansi@^6.0.0: + version "6.0.0" + resolved "https://registry.yarnpkg.com/strip-ansi/-/strip-ansi-6.0.0.tgz#0b1571dd7669ccd4f3e06e14ef1eed26225ae532" + integrity sha512-AuvKTrTfQNYNIctbR1K/YGTR1756GycPsg7b9bdV9Duqur4gv6aKqHXah67Z8ImS7WEz5QVcOtlfW2rZEugt6w== dependencies: - prepend-http "^2.0.0" + ansi-regex "^5.0.0" -url-parse@1.4.4: - version "1.4.4" - resolved "https://registry.yarnpkg.com/url-parse/-/url-parse-1.4.4.tgz#cac1556e95faa0303691fec5cf9d5a1bc34648f8" - integrity sha512-/92DTTorg4JjktLNLe6GPS2/RvAd/RGr6LuktmWSMLEOa6rjnlrFXNgSbSmkNvCoL2T028A0a1JaJLzRMlFoHg== - dependencies: - querystringify "^2.0.0" - requires-port "^1.0.0" +strip-eof@^1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/strip-eof/-/strip-eof-1.0.0.tgz#bb43ff5598a6eb05d89b59fcd129c983313606bf" + integrity sha1-u0P/VZim6wXYm1n80SnJgzE2Br8= -url-parse@^1.4.3: - version "1.5.1" - resolved "https://registry.yarnpkg.com/url-parse/-/url-parse-1.5.1.tgz#d5fa9890af8a5e1f274a2c98376510f6425f6e3b" - integrity sha512-HOfCOUJt7iSYzEx/UqgtwKRMC6EU91NFhsCHMv9oM03VJcVo2Qrp8T8kI9D7amFf1cu+/3CEhgb3rF9zL7k85Q== +strip-hex-prefix@1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/strip-hex-prefix/-/strip-hex-prefix-1.0.0.tgz#0c5f155fef1151373377de9dbb588da05500e36f" + integrity sha1-DF8VX+8RUTczd96du1iNoFUA428= dependencies: - querystringify "^2.1.1" - requires-port "^1.0.0" + is-hex-prefixed "1.0.0" -url-set-query@^1.0.0: - version "1.0.0" - resolved "https://registry.yarnpkg.com/url-set-query/-/url-set-query-1.0.0.tgz#016e8cfd7c20ee05cafe7795e892bd0702faa339" - integrity sha1-AW6M/Xwg7gXK/neV6JK9BwL6ozk= +strip-json-comments@2.0.1, strip-json-comments@^2.0.1: + version "2.0.1" + resolved "https://registry.yarnpkg.com/strip-json-comments/-/strip-json-comments-2.0.1.tgz#3c531942e908c2697c0ec344858c286c7ca0a60a" + integrity sha1-PFMZQukIwml8DsNEhYwobHygpgo= -url-to-options@^1.0.1: - version "1.0.1" - resolved "https://registry.yarnpkg.com/url-to-options/-/url-to-options-1.0.1.tgz#1505a03a289a48cbd7a434efbaeec5055f5633a9" - integrity sha1-FQWgOiiaSMvXpDTvuu7FBV9WM6k= +strip-json-comments@3.1.1, strip-json-comments@^3.1.0, strip-json-comments@^3.1.1: + version "3.1.1" + resolved "https://registry.yarnpkg.com/strip-json-comments/-/strip-json-comments-3.1.1.tgz#31f1281b3832630434831c310c01cccda8cbe006" + integrity sha512-6fPc+R4ihwqP6N/aIv2f1gMH8lOVtWQHoqC4yK6oSDVVocumAsfCqjkXnqiYMhmMwS/mEHLp7Vehlt3ql6lEig== -url@^0.11.0: - version "0.11.0" - resolved "https://registry.yarnpkg.com/url/-/url-0.11.0.tgz#3838e97cfc60521eb73c525a8e55bfdd9e2e28f1" - integrity sha1-ODjpfPxgUh63PFJajlW/3Z4uKPE= +supports-color@6.0.0: + version "6.0.0" + resolved "https://registry.yarnpkg.com/supports-color/-/supports-color-6.0.0.tgz#76cfe742cf1f41bb9b1c29ad03068c05b4c0e40a" + integrity sha512-on9Kwidc1IUQo+bQdhi8+Tijpo0e1SS6RoGo2guUwn5vdaxw8RXOF9Vb2ws+ihWOmh4JnCJOvaziZWP1VABaLg== dependencies: - punycode "1.3.2" - querystring "0.2.0" + has-flag "^3.0.0" -ursa-optional@^0.10.1: - version "0.10.2" - resolved "https://registry.yarnpkg.com/ursa-optional/-/ursa-optional-0.10.2.tgz#bd74e7d60289c22ac2a69a3c8dea5eb2817f9681" - integrity sha512-TKdwuLboBn7M34RcvVTuQyhvrA8gYKapuVdm0nBP0mnBc7oECOfUQZrY91cefL3/nm64ZyrejSRrhTVdX7NG/A== +supports-color@8.1.1: + version "8.1.1" + resolved "https://registry.yarnpkg.com/supports-color/-/supports-color-8.1.1.tgz#cd6fc17e28500cff56c1b86c0a7fd4a54a73005c" + integrity sha512-MpUEN2OodtUzxvKQl72cUF7RQ5EiHsGvSsVG0ia9c5RbWGL2CI4C7EpPS8UTBIplnlzZiNuV56w+FuNxy3ty2Q== dependencies: - bindings "^1.5.0" - nan "^2.14.2" - -use@^3.1.0: - version "3.1.1" - resolved "https://registry.yarnpkg.com/use/-/use-3.1.1.tgz#d50c8cac79a19fbc20f2911f56eb973f4e10070f" - integrity sha512-cwESVXlO3url9YWlFW/TA9cshCEhtu7IKJ/p5soJ/gGpj7vbvFrAY/eIioQ6Dw23KjZhYgiIo8HOs1nQ2vr/oQ== + has-flag "^4.0.0" -utf-8-validate@^5.0.2: - version "5.0.4" - resolved "https://registry.yarnpkg.com/utf-8-validate/-/utf-8-validate-5.0.4.tgz#72a1735983ddf7a05a43a9c6b67c5ce1c910f9b8" - integrity sha512-MEF05cPSq3AwJ2C7B7sHAA6i53vONoZbMGX8My5auEVm6W+dJ2Jd/TZPyGJ5CH42V2XtbI5FD28HeHeqlPzZ3Q== +supports-color@^3.1.0: + version "3.2.3" + resolved "https://registry.yarnpkg.com/supports-color/-/supports-color-3.2.3.tgz#65ac0504b3954171d8a64946b2ae3cbb8a5f54f6" + integrity sha1-ZawFBLOVQXHYpklGsq48u4pfVPY= dependencies: - node-gyp-build "^4.2.0" - -utf8@2.1.1: - version "2.1.1" - resolved "https://registry.yarnpkg.com/utf8/-/utf8-2.1.1.tgz#2e01db02f7d8d0944f77104f1609eb0c304cf768" - integrity sha1-LgHbAvfY0JRPdxBPFgnrDDBM92g= + has-flag "^1.0.0" -utf8@3.0.0, utf8@^3.0.0: - version "3.0.0" - resolved "https://registry.yarnpkg.com/utf8/-/utf8-3.0.0.tgz#f052eed1364d696e769ef058b183df88c87f69d1" - integrity sha512-E8VjFIQ/TyQgp+TZfS6l8yp/xWppSAHzidGiRrqe4bK4XP9pTRyKFgGJpO3SN7zdX4DeomTrwaseCHovfpFcqQ== +supports-color@^5.3.0: + version "5.5.0" + resolved "https://registry.yarnpkg.com/supports-color/-/supports-color-5.5.0.tgz#e2e69a44ac8772f78a1ec0b35b689df6530efc8f" + integrity sha512-QjVjwdXIt408MIiAqCX4oUKsgU2EqAGzs2Ppkm4aQYbjm+ZEWEcW4SfFNTr4uMNZma0ey4f5lgLrkB0aX0QMow== + dependencies: + has-flag "^3.0.0" -util-deprecate@^1.0.1, util-deprecate@~1.0.1: - version "1.0.2" - resolved "https://registry.yarnpkg.com/util-deprecate/-/util-deprecate-1.0.2.tgz#450d4dc9fa70de732762fbd2d4a28981419a0ccf" - integrity sha1-RQ1Nyfpw3nMnYvvS1KKJgUGaDM8= +supports-color@^7.1.0: + version "7.2.0" + resolved "https://registry.yarnpkg.com/supports-color/-/supports-color-7.2.0.tgz#1b7dcdcb32b8138801b3e478ba6a51caa89648da" + integrity sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw== + dependencies: + has-flag "^4.0.0" -util.promisify@^1.0.0: - version "1.1.1" - resolved "https://registry.yarnpkg.com/util.promisify/-/util.promisify-1.1.1.tgz#77832f57ced2c9478174149cae9b96e9918cd54b" - integrity sha512-/s3UsZUrIfa6xDhr7zZhnE9SLQ5RIXyYfiVnMMyMDzOc8WhWN4Nbh36H842OyurKbCDAesZOJaVyvmSl6fhGQw== +swarm-js@^0.1.40: + version "0.1.40" + resolved "https://registry.yarnpkg.com/swarm-js/-/swarm-js-0.1.40.tgz#b1bc7b6dcc76061f6c772203e004c11997e06b99" + integrity sha512-yqiOCEoA4/IShXkY3WKwP5PvZhmoOOD8clsKA7EEcRILMkTEYHCQ21HDCAcVpmIxZq4LyZvWeRJ6quIyHk1caA== 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" + 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.yarnpkg.com/sync-request/-/sync-request-6.1.0.tgz#e96217565b5e50bbffe179868ba75532fb597e68" + 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" -util@0.10.3: - version "0.10.3" - resolved "https://registry.yarnpkg.com/util/-/util-0.10.3.tgz#7afb1afe50805246489e3db7fe0ed379336ac0f9" - integrity sha1-evsa/lCAUkZInj23/g7TeTNqwPk= +sync-rpc@^1.2.1: + version "1.3.6" + resolved "https://registry.yarnpkg.com/sync-rpc/-/sync-rpc-1.3.6.tgz#b2e8b2550a12ccbc71df8644810529deb68665a7" + integrity sha512-J8jTXuZzRlvU7HemDgHi3pGnh/rkoqR/OZSjhTyyZrEkkYQbk7Z33AXp37mkPfPpfdOuj7Ex3H/TJM1z48uPQw== dependencies: - inherits "2.0.1" + get-port "^3.1.0" -util@^0.11.0: - version "0.11.1" - resolved "https://registry.yarnpkg.com/util/-/util-0.11.1.tgz#3236733720ec64bb27f6e26f421aaa2e1b588d61" - integrity sha512-HShAsny+zS2TZfaXxD9tYj4HQGlBezXZMZuM/S5PKLLoZkShZiGk9o5CzukI1LVHZvjdvZ2Sj1aW/Ndn2NB/HQ== +table@^5.2.3: + version "5.4.6" + resolved "https://registry.yarnpkg.com/table/-/table-5.4.6.tgz#1292d19500ce3f86053b05f0e8e7e4a3bb21079e" + integrity sha512-wmEc8m4fjnob4gt5riFRtTu/6+4rSe12TpAELNSqHMfF3IqnA+CH37USM6/YR3qRZv7e56kAEAtd6nKZaxe0Ug== dependencies: - inherits "2.0.3" + ajv "^6.10.2" + lodash "^4.17.14" + slice-ansi "^2.1.0" + string-width "^3.0.0" -util@^0.12.0: - version "0.12.3" - resolved "https://registry.yarnpkg.com/util/-/util-0.12.3.tgz#971bb0292d2cc0c892dab7c6a5d37c2bec707888" - integrity sha512-I8XkoQwE+fPQEhy9v012V+TSdH2kp9ts29i20TaaDUXsg7x/onePbhFJUExBfv/2ay1ZOp/Vsm3nDlmnFGSAog== +table@^6.0.9: + version "6.7.1" + resolved "https://registry.yarnpkg.com/table/-/table-6.7.1.tgz#ee05592b7143831a8c94f3cee6aae4c1ccef33e2" + integrity sha512-ZGum47Yi6KOOFDE8m223td53ath2enHcYLgOCjGr5ngu8bdIARQk6mN/wRMv4yMRcHnCSnHbCEha4sobQx5yWg== 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" + ajv "^8.0.1" + lodash.clonedeep "^4.5.0" + lodash.truncate "^4.4.2" + slice-ansi "^4.0.0" + string-width "^4.2.0" + strip-ansi "^6.0.0" -util@^0.12.3: - version "0.12.4" - resolved "https://registry.yarnpkg.com/util/-/util-0.12.4.tgz#66121a31420df8f01ca0c464be15dfa1d1850253" - integrity sha512-bxZ9qtSlGUWSOy9Qa9Xgk11kSslpuZwaxCg4sNIDj6FLucDab2JxnHwyNTCpHMtK1MjoQiWQ6DiUMZYbSrO+Sw== +tar@^4.0.2: + version "4.4.13" + resolved "https://registry.yarnpkg.com/tar/-/tar-4.4.13.tgz#43b364bc52888d555298637b10d60790254ab525" + integrity sha512-w2VwSrBoHa5BsSyH+KxEqeQBAllHhccyMFVHtGtdMpF4W7IRWfZjFiQceJPChOeTsSDVUpER2T8FA93pr0L+QA== dependencies: - inherits "^2.0.3" - is-arguments "^1.0.4" - is-generator-function "^1.0.7" - is-typed-array "^1.1.3" + chownr "^1.1.1" + fs-minipass "^1.2.5" + minipass "^2.8.6" + minizlib "^1.2.1" + mkdirp "^0.5.0" safe-buffer "^5.1.2" - which-typed-array "^1.1.2" - -utils-merge@1.0.1: - version "1.0.1" - resolved "https://registry.yarnpkg.com/utils-merge/-/utils-merge-1.0.1.tgz#9f95710f50a267947b2ccc124741c1028427e713" - integrity sha1-n5VxD1CiZ5R7LMwSR0HBAoQn5xM= - -uuid@2.0.1: - version "2.0.1" - resolved "https://registry.yarnpkg.com/uuid/-/uuid-2.0.1.tgz#c2a30dedb3e535d72ccf82e343941a50ba8533ac" - integrity sha1-wqMN7bPlNdcsz4LjQ5QaULqFM6w= - -uuid@3.2.1: - version "3.2.1" - resolved "https://registry.yarnpkg.com/uuid/-/uuid-3.2.1.tgz#12c528bb9d58d0b9265d9a2f6f0fe8be17ff1f14" - integrity sha512-jZnMwlb9Iku/O3smGWvZhauCf6cvvpKi4BKRiliS3cxnI+Gz9j5MEpTz2UFuXiKPJocb7gnsLHwiS05ige5BEA== - -uuid@3.3.2: - version "3.3.2" - resolved "https://registry.yarnpkg.com/uuid/-/uuid-3.3.2.tgz#1b4af4955eb3077c501c23872fc6513811587131" - integrity sha512-yXJmeNaw3DnnKAOKJE51sL/ZaYfWJRl1pK9dr19YFCu0ObS231AB1/LbqTKRAQ5kw8A90rA6fr4riOUpTZvQZA== - -uuid@8.1.0: - version "8.1.0" - resolved "https://registry.yarnpkg.com/uuid/-/uuid-8.1.0.tgz#6f1536eb43249f473abc6bd58ff983da1ca30d8d" - integrity sha512-CI18flHDznR0lq54xBycOVmphdCYnQLKn8abKn7PXUiKUGdEd+/l9LWNJmugXel4hXq7S+RMNl34ecyC9TntWg== - -uuid@^3.1.0, uuid@^3.3.2, uuid@^3.4.0: - version "3.4.0" - resolved "https://registry.yarnpkg.com/uuid/-/uuid-3.4.0.tgz#b23e4358afa8a202fe7a100af1f5f883f02007ee" - integrity sha512-HjSDRw6gZE5JMggctHBcjVak08+KEVhSIiDzFnT9S9aegmp85S/bReBVTb4QTFaRNptJ9kuYaNhnbNEOkbKb/A== - -uuid@^8.0.0: - version "8.3.2" - resolved "https://registry.yarnpkg.com/uuid/-/uuid-8.3.2.tgz#80d5b5ced271bb9af6c445f21a1a04c606cefbe2" - integrity sha512-+NYs2QeMWy+GWFOEm9xnn6HCDp0l7QBD7ml8zLUmJ+93Q5NF0NocErnwkTkXVFNiX3/fpC6afS8Dhb/gz7R7eg== + yallist "^3.0.3" -vali-date@^1.0.0: - version "1.0.0" - resolved "https://registry.yarnpkg.com/vali-date/-/vali-date-1.0.0.tgz#1b904a59609fb328ef078138420934f6b86709a6" - integrity sha1-G5BKWWCfsyjvB4E4Qgk09rhnCaY= +test-value@^2.1.0: + version "2.1.0" + resolved "https://registry.yarnpkg.com/test-value/-/test-value-2.1.0.tgz#11da6ff670f3471a73b625ca4f3fdcf7bb748291" + integrity sha1-Edpv9nDzRxpztiXKTz/c97t0gpE= + dependencies: + array-back "^1.0.3" + typical "^2.6.0" -valid-url@1.0.9: - version "1.0.9" - resolved "https://registry.yarnpkg.com/valid-url/-/valid-url-1.0.9.tgz#1c14479b40f1397a75782f115e4086447433a200" - integrity sha1-HBRHm0DxOXp1eC8RXkCGRHQzogA= +text-table@^0.2.0: + version "0.2.0" + resolved "https://registry.yarnpkg.com/text-table/-/text-table-0.2.0.tgz#7f5ee823ae805207c00af2df4a84ec3fcfa570b4" + integrity sha1-f17oI66AUgfACvLfSoTsP8+lcLQ= -validate-npm-package-license@^3.0.1: - version "3.0.4" - resolved "https://registry.yarnpkg.com/validate-npm-package-license/-/validate-npm-package-license-3.0.4.tgz#fc91f6b9c7ba15c857f4cb2c5defeec39d4f410a" - integrity sha512-DpKm2Ui/xN7/HQKCtpZxoRWBhZ9Z0kqtygG8XCgNQ8ZlDnxuQmWhj566j8fN4Cu3/JmbhsDo7fcAJq4s9h27Ew== +then-request@^6.0.0: + version "6.0.2" + resolved "https://registry.yarnpkg.com/then-request/-/then-request-6.0.2.tgz#ec18dd8b5ca43aaee5cb92f7e4c1630e950d4f0c" + integrity sha512-3ZBiG7JvP3wbDzA9iNY5zJQcHL4jn/0BWtXIkagfz7QgOL/LqjCEOBQuJNZfu0XYnv5JhKh+cDxCPM4ILrqruA== dependencies: - spdx-correct "^3.0.0" - spdx-expression-parse "^3.0.0" - -varint@^5.0.0, varint@^5.0.2, varint@~5.0.0: - version "5.0.2" - resolved "https://registry.yarnpkg.com/varint/-/varint-5.0.2.tgz#5b47f8a947eb668b848e034dcfa87d0ff8a7f7a4" - integrity sha512-lKxKYG6H03yCZUpAGOPOsMcGxd1RHCu1iKvEHYDPmTyq2HueGhD73ssNBqqQWfvYs04G9iUFRvmAVLW20Jw6ow== + "@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" -varint@^6.0.0: - version "6.0.0" - resolved "https://registry.yarnpkg.com/varint/-/varint-6.0.0.tgz#9881eb0ce8feaea6512439d19ddf84bf551661d0" - integrity sha512-cXEIW6cfr15lFv563k4GuVuW/fiwjknytD37jIOLSdSWuOI6WnO/oKwmP2FQTU2l01LP8/M5TSAJpzUaGe3uWg== +through@^2.3.6: + version "2.3.8" + resolved "https://registry.yarnpkg.com/through/-/through-2.3.8.tgz#0dd4c9ffaabc357960b1b724115d7e0e86a2e1f5" + integrity sha1-DdTJ/6q8NXlgsbckEV1+Doai4fU= -vary@^1, vary@~1.1.2: - version "1.1.2" - resolved "https://registry.yarnpkg.com/vary/-/vary-1.1.2.tgz#2299f02c6ded30d4a5961b0b9f74524a18f634fc" - integrity sha1-IpnwLG3tMNSllhsLn3RSShj2NPw= +timed-out@^4.0.0, timed-out@^4.0.1: + version "4.0.1" + resolved "https://registry.yarnpkg.com/timed-out/-/timed-out-4.0.1.tgz#f32eacac5a175bea25d7fab565ab3ed8741ef56f" + integrity sha1-8y6srFoXW+ol1/q1Zas+2HQe9W8= -verbalize@^0.1.2: - version "0.1.2" - resolved "https://registry.yarnpkg.com/verbalize/-/verbalize-0.1.2.tgz#165fda4640331548f8e990b1d7e14395eb720207" - integrity sha1-Fl/aRkAzFUj46ZCx1+FDletyAgc= +tmp@0.0.33, tmp@^0.0.33: + version "0.0.33" + resolved "https://registry.yarnpkg.com/tmp/-/tmp-0.0.33.tgz#6d34335889768d21b2bcda0aa277ced3b1bfadf9" + integrity sha512-jRCJlojKnZ3addtTOjdIqoRuPEKBvNXcGYqzO6zWZX8KfKEpnGY5jfggJQ3EjKuu8D4bJRr0y+cYJFmYbImXGw== dependencies: - chalk "~0.4.0" + os-tmpdir "~1.0.2" -verror@1.10.0: - version "1.10.0" - resolved "https://registry.yarnpkg.com/verror/-/verror-1.10.0.tgz#3a105ca17053af55d6e270c1f8288682e18da400" - integrity sha1-OhBcoXBTr1XW4nDB+CiGguGNpAA= - dependencies: - assert-plus "^1.0.0" - core-util-is "1.0.2" - extsprintf "^1.2.0" +to-readable-stream@^1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/to-readable-stream/-/to-readable-stream-1.0.0.tgz#ce0aa0c2f3df6adf852efb404a783e77c0475771" + integrity sha512-Iq25XBt6zD5npPhlLVXGFN3/gyR2/qODcKNNyTMd4vbm39HUaOiAM4PMq0eMVC/Tkxz+Zjdsc55g9yyz+Yq00Q== -vinyl-fs@2.4.3: - version "2.4.3" - resolved "https://registry.yarnpkg.com/vinyl-fs/-/vinyl-fs-2.4.3.tgz#3d97e562ebfdd4b66921dea70626b84bde9d2d07" - integrity sha1-PZflYuv91LZpId6nBia4S96dLQc= - dependencies: - duplexify "^3.2.0" - glob-stream "^5.3.2" - graceful-fs "^4.0.0" - gulp-sourcemaps "^1.5.2" - is-valid-glob "^0.3.0" - lazystream "^1.0.0" - lodash.isequal "^4.0.0" - merge-stream "^1.0.0" - mkdirp "^0.5.0" - object-assign "^4.0.0" - readable-stream "^2.0.4" - strip-bom "^2.0.0" - strip-bom-stream "^1.0.0" - through2 "^2.0.0" - through2-filter "^2.0.0" - vali-date "^1.0.0" - vinyl "^1.0.0" - -vinyl@1.X, vinyl@^1.0.0: - version "1.2.0" - resolved "https://registry.yarnpkg.com/vinyl/-/vinyl-1.2.0.tgz#5c88036cf565e5df05558bfc911f8656df218884" - integrity sha1-XIgDbPVl5d8FVYv8kR+GVt8hiIQ= +to-regex-range@^5.0.1: + version "5.0.1" + resolved "https://registry.yarnpkg.com/to-regex-range/-/to-regex-range-5.0.1.tgz#1648c44aae7c8d988a326018ed72f5b4dd0392e4" + integrity sha512-65P7iz6X5yEr1cwcgvQxbbIw7Uk3gOy5dIdtZ4rDveLqhrdJP+Li/Hx6tyK0NEb+2GCyneCMJiGqrADCSNk8sQ== dependencies: - clone "^1.0.0" - clone-stats "^0.0.1" - replace-ext "0.0.1" - -vm-browserify@^1.0.1: - version "1.1.2" - resolved "https://registry.yarnpkg.com/vm-browserify/-/vm-browserify-1.1.2.tgz#78641c488b8e6ca91a75f511e7a3b32a86e5dda0" - integrity sha512-2ham8XPWTONajOR0ohOKOHXkm3+gaBmGut3SRuu75xLd/RRaY6vqgh8NBYYk7+RW3u5AtzPQZG8F10LHkl0lAQ== + is-number "^7.0.0" -vuvuzela@1.0.3: - version "1.0.3" - resolved "https://registry.yarnpkg.com/vuvuzela/-/vuvuzela-1.0.3.tgz#3be145e58271c73ca55279dd851f12a682114b0b" - integrity sha1-O+FF5YJxxzylUnndhR8SpoIRSws= +toidentifier@1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/toidentifier/-/toidentifier-1.0.0.tgz#7e1be3470f1e77948bc43d94a3c8f4d7752ba553" + integrity sha512-yaOH/Pk/VEhBWWTlhI+qXxDFXlejDGcQipMlyxda9nthulaxLZUNcUqFxokp0vcYnvteJln5FNQDRrxj3YcbVw== -watchpack-chokidar2@^2.0.1: - version "2.0.1" - resolved "https://registry.yarnpkg.com/watchpack-chokidar2/-/watchpack-chokidar2-2.0.1.tgz#38500072ee6ece66f3769936950ea1771be1c957" - integrity sha512-nCFfBIPKr5Sh61s4LPpy1Wtfi0HE8isJ3d2Yb5/Ppw2P2B/3eVSEBjKfN0fmHJSK14+31KwMKmcrzs2GM4P0Ww== +tough-cookie@^2.3.3, tough-cookie@~2.5.0: + version "2.5.0" + resolved "https://registry.yarnpkg.com/tough-cookie/-/tough-cookie-2.5.0.tgz#cd9fb2a0aa1d5a12b473bd9fb96fa3dcff65ade2" + integrity sha512-nlLsUzgm1kfLXSXfRZMc1KLAugd4hqJHDTvc2hDIwS3mZAfMEuMbc03SujMF+GEcpaX/qboeycw6iO8JwVv2+g== dependencies: - chokidar "^2.1.8" + psl "^1.1.28" + punycode "^2.1.1" -watchpack@^1.4.0: - version "1.7.5" - resolved "https://registry.yarnpkg.com/watchpack/-/watchpack-1.7.5.tgz#1267e6c55e0b9b5be44c2023aed5437a2c26c453" - integrity sha512-9P3MWk6SrKjHsGkLT2KHXdQ/9SNkyoJbabxnKOoJepsvJjJG8uYTR3yTPxPQvNDI3w4Nz1xnE0TLHK4RIVe/MQ== - dependencies: - graceful-fs "^4.1.2" - neo-async "^2.5.0" - optionalDependencies: - chokidar "^3.4.1" - watchpack-chokidar2 "^2.0.1" +"true-case-path@^2.2.1": + version "2.2.1" + resolved "https://registry.yarnpkg.com/true-case-path/-/true-case-path-2.2.1.tgz#c5bf04a5bbec3fd118be4084461b3a27c4d796bf" + integrity sha512-0z3j8R7MCjy10kc/g+qg7Ln3alJTodw9aDuVWZa3uiWqfuBMKeAeP2ocWcxoyM3D73yz3Jt/Pu4qPr4wHSdB/Q== -wcwidth@^1.0.1: - version "1.0.1" - resolved "https://registry.yarnpkg.com/wcwidth/-/wcwidth-1.0.1.tgz#f0b0dcf915bc5ff1528afadb2c0e17b532da2fe8" - integrity sha1-8LDc+RW8X/FSivrbLA4XtTLaL+g= - dependencies: - defaults "^1.0.3" +ts-essentials@^1.0.0: + version "1.0.4" + resolved "https://registry.yarnpkg.com/ts-essentials/-/ts-essentials-1.0.4.tgz#ce3b5dade5f5d97cf69889c11bf7d2da8555b15a" + integrity sha512-q3N1xS4vZpRouhYHDPwO0bDW3EZ6SK9CrrDHxi/D6BPReSjpVgWIOpLS2o0gSBZm+7q/wyKp6RVM1AeeW7uyfQ== -web-encoding@^1.0.2, web-encoding@^1.0.6: - version "1.1.5" - resolved "https://registry.yarnpkg.com/web-encoding/-/web-encoding-1.1.5.tgz#fc810cf7667364a6335c939913f5051d3e0c4864" - integrity sha512-HYLeVCdJ0+lBYV2FvNZmv3HJ2Nt0QYXqZojk3d9FJOLkwnuhzM9tmamh8d7HPM8QqjKH8DeHkFTx+CFlWpZZDA== - dependencies: - util "^0.12.3" - optionalDependencies: - "@zxing/text-encoding" "0.9.0" +ts-essentials@^7.0.1: + version "7.0.1" + resolved "https://registry.yarnpkg.com/ts-essentials/-/ts-essentials-7.0.1.tgz#d205508cae0cdadfb73c89503140cf2228389e2d" + integrity sha512-8lwh3QJtIc1UWhkQtr9XuksXu3O0YQdEE5g79guDfhCaU1FWTDIEDZ1ZSx4HTHUmlJZ8L812j3BZQ4a0aOUkSA== -web3-bzz@1.2.1: - version "1.2.1" - resolved "https://registry.yarnpkg.com/web3-bzz/-/web3-bzz-1.2.1.tgz#c3bd1e8f0c02a13cd6d4e3c3e9e1713f144f6f0d" - integrity sha512-LdOO44TuYbGIPfL4ilkuS89GQovxUpmLz6C1UC7VYVVRILeZS740FVB3j9V4P4FHUk1RenaDfKhcntqgVCHtjw== +ts-generator@^0.1.1: + version "0.1.1" + resolved "https://registry.yarnpkg.com/ts-generator/-/ts-generator-0.1.1.tgz#af46f2fb88a6db1f9785977e9590e7bcd79220ab" + integrity sha512-N+ahhZxTLYu1HNTQetwWcx3so8hcYbkKBHTr4b4/YgObFTIKkOSSsaa+nal12w8mfrJAyzJfETXawbNjSfP2gQ== dependencies: - got "9.6.0" - swarm-js "0.1.39" - underscore "1.9.1" + "@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" -web3-bzz@1.2.2: - version "1.2.2" - resolved "https://registry.yarnpkg.com/web3-bzz/-/web3-bzz-1.2.2.tgz#a3b9f613c49fd3e120e0997088a73557d5adb724" - integrity sha512-b1O2ObsqUN1lJxmFSjvnEC4TsaCbmh7Owj3IAIWTKqL9qhVgx7Qsu5O9cD13pBiSPNZJ68uJPaKq380QB4NWeA== +ts-node@^10.2.1: + version "10.2.1" + resolved "https://registry.yarnpkg.com/ts-node/-/ts-node-10.2.1.tgz#4cc93bea0a7aba2179497e65bb08ddfc198b3ab5" + integrity sha512-hCnyOyuGmD5wHleOQX6NIjJtYVIO8bPP8F2acWkB4W06wdlkgyvJtubO/I9NkI88hCFECbsEgoLc0VNkYmcSfw== dependencies: - "@types/node" "^10.12.18" - got "9.6.0" - swarm-js "0.1.39" - underscore "1.9.1" + "@cspotcode/source-map-support" "0.6.1" + "@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" + yn "3.1.1" -web3-bzz@1.2.6: - version "1.2.6" - resolved "https://registry.yarnpkg.com/web3-bzz/-/web3-bzz-1.2.6.tgz#0b88c0b96029eaf01b10cb47c4d5f79db4668883" - integrity sha512-9NiHLlxdI1XeFtbPJAmi2jnnIHVF+GNy517wvOS72P7ZfuJTPwZaSNXfT01vWgPPE9R96/uAHDWHOg+T4WaDQQ== - dependencies: - "@types/node" "^10.12.18" - got "9.6.0" - swarm-js "0.1.39" - underscore "1.9.1" +tslib@^1.8.1, tslib@^1.9.0, tslib@^1.9.3: + version "1.14.1" + resolved "https://registry.yarnpkg.com/tslib/-/tslib-1.14.1.tgz#cf2d38bdc34a134bcaf1091c41f6619e2f672d00" + integrity sha512-Xni35NKzjgMrwevysHTCArtLDpPvye8zV/0E4EyYn43P7/7qvQwPh9BGkHewbMulVntbigmcT7rdX3BNo9wRJg== -web3-bzz@1.5.2: - version "1.5.2" - resolved "https://registry.yarnpkg.com/web3-bzz/-/web3-bzz-1.5.2.tgz#a04feaa19462cff6d5a8c87dad1aca4619d9dfc8" - integrity sha512-W/sPCdA+XQ9duUYKHAwf/g69cbbV8gTCRsa1MpZwU7spXECiyJ2EvD/QzAZ+UpJk3GELXFF/fUByeZ3VRQKF2g== - dependencies: - "@types/node" "^12.12.6" - got "9.6.0" - swarm-js "^0.1.40" +tsort@0.0.1: + version "0.0.1" + resolved "https://registry.yarnpkg.com/tsort/-/tsort-0.0.1.tgz#e2280f5e817f8bf4275657fd0f9aebd44f5a2786" + integrity sha1-4igPXoF/i/QnVlf9D5rr1E9aJ4Y= -web3-core-helpers@1.2.1: - version "1.2.1" - resolved "https://registry.yarnpkg.com/web3-core-helpers/-/web3-core-helpers-1.2.1.tgz#f5f32d71c60a4a3bd14786118e633ce7ca6d5d0d" - integrity sha512-Gx3sTEajD5r96bJgfuW377PZVFmXIH4TdqDhgGwd2lZQCcMi+DA4TgxJNJGxn0R3aUVzyyE76j4LBrh412mXrw== +tsutils@^3.21.0: + version "3.21.0" + resolved "https://registry.yarnpkg.com/tsutils/-/tsutils-3.21.0.tgz#b48717d394cea6c1e096983eed58e9d61715b623" + integrity sha512-mHKK3iUXL+3UF6xL5k0PEhKRUBKPBCv/+RkEOpjRWxxx27KKRBmmA60A9pgOUvMi8GKhRMPEmjBRPzs2W7O1OA== dependencies: - underscore "1.9.1" - web3-eth-iban "1.2.1" - web3-utils "1.2.1" + tslib "^1.8.1" -web3-core-helpers@1.2.2: - version "1.2.2" - resolved "https://registry.yarnpkg.com/web3-core-helpers/-/web3-core-helpers-1.2.2.tgz#484974f4bd4a487217b85b0d7cfe841af0907619" - integrity sha512-HJrRsIGgZa1jGUIhvGz4S5Yh6wtOIo/TMIsSLe+Xay+KVnbseJpPprDI5W3s7H2ODhMQTbogmmUFquZweW2ImQ== +tunnel-agent@^0.6.0: + version "0.6.0" + resolved "https://registry.yarnpkg.com/tunnel-agent/-/tunnel-agent-0.6.0.tgz#27a5dea06b36b04a0a9966774b290868f0fc40fd" + integrity sha1-J6XeoGs2sEoKmWZ3SykIaPD8QP0= dependencies: - underscore "1.9.1" - web3-eth-iban "1.2.2" - web3-utils "1.2.2" + safe-buffer "^5.0.1" -web3-core-helpers@1.2.6: - version "1.2.6" - resolved "https://registry.yarnpkg.com/web3-core-helpers/-/web3-core-helpers-1.2.6.tgz#7aacd25bf8015adcdfc0f3243d0dcfdff0373f7d" - integrity sha512-gYKWmC2HmO7RcDzpo4L1K8EIoy5L8iubNDuTC6q69UxczwqKF/Io0kbK/1Z10Av++NlzOSiuyGp2gc4t4UOsDw== - dependencies: - underscore "1.9.1" - web3-eth-iban "1.2.6" - web3-utils "1.2.6" +tweetnacl-util@^0.15.0: + version "0.15.1" + resolved "https://registry.yarnpkg.com/tweetnacl-util/-/tweetnacl-util-0.15.1.tgz#b80fcdb5c97bcc508be18c44a4be50f022eea00b" + integrity sha512-RKJBIj8lySrShN4w6i/BonWp2Z/uxwC3h4y7xsRrpP59ZboCd0GpEVsOnMDYLMmKBpYhb5TgHzZXy7wTfYFBRw== -web3-core-helpers@1.5.2: - version "1.5.2" - resolved "https://registry.yarnpkg.com/web3-core-helpers/-/web3-core-helpers-1.5.2.tgz#b6bd5071ca099ba3f92dfafb552eed2b70af2795" - integrity sha512-U7LJoeUdQ3aY9t5gU7t/1XpcApsWm+4AcW5qKl/44ZxD44w0Dmsq1c5zJm3GuLr/a9MwQfXK4lpmvxVQWHHQRg== - dependencies: - web3-eth-iban "1.5.2" - web3-utils "1.5.2" +tweetnacl@^0.14.3, tweetnacl@~0.14.0: + version "0.14.5" + resolved "https://registry.yarnpkg.com/tweetnacl/-/tweetnacl-0.14.5.tgz#5ae68177f192d4456269d108afa93ff8743f4f64" + integrity sha1-WuaBd/GS1EViadEIr6k/+HQ/T2Q= -web3-core-helpers@2.0.0-alpha.1: - version "2.0.0-alpha.1" - resolved "https://registry.yarnpkg.com/web3-core-helpers/-/web3-core-helpers-2.0.0-alpha.1.tgz#d20db557fe8740578105fb6b5790eb22097d1974" - integrity sha512-YUDECwESRI2Bw3ijEaGGkYhEAyqQF17KFtul9Y6OZLtYx6W7bJCMKbSFigLl99F3zFLZ8E/dwzCizSrD+DuWIQ== - dependencies: - "@babel/runtime" "^7.3.1" - lodash "^4.17.11" - web3-core "2.0.0-alpha.1" - web3-eth-iban "2.0.0-alpha.1" - web3-utils "2.0.0-alpha.1" +tweetnacl@^1.0.3: + version "1.0.3" + resolved "https://registry.yarnpkg.com/tweetnacl/-/tweetnacl-1.0.3.tgz#ac0af71680458d8a6378d0d0d050ab1407d35596" + integrity sha512-6rt+RN7aOi1nGMyC4Xa5DdYiukl2UWCbcJft7YhxReBGQD7OAM8Pbxw6YMo4r2diNEA8FEmu32YOn9rhaiE5yw== -web3-core-method@1.2.1: - version "1.2.1" - resolved "https://registry.yarnpkg.com/web3-core-method/-/web3-core-method-1.2.1.tgz#9df1bafa2cd8be9d9937e01c6a47fc768d15d90a" - integrity sha512-Ghg2WS23qi6Xj8Od3VCzaImLHseEA7/usvnOItluiIc5cKs00WYWsNy2YRStzU9a2+z8lwQywPYp0nTzR/QXdQ== +type-check@^0.4.0, type-check@~0.4.0: + version "0.4.0" + resolved "https://registry.yarnpkg.com/type-check/-/type-check-0.4.0.tgz#07b8203bfa7056c0657050e3ccd2c37730bab8f1" + integrity sha512-XleUoc9uwGXqjWwXaUTZAmzMcFZ5858QA2vvx1Ur5xIcixXIP+8LnFDgRplU30us6teqdlskFfu+ae4K79Ooew== dependencies: - underscore "1.9.1" - web3-core-helpers "1.2.1" - web3-core-promievent "1.2.1" - web3-core-subscriptions "1.2.1" - web3-utils "1.2.1" + prelude-ls "^1.2.1" -web3-core-method@1.2.2: - version "1.2.2" - resolved "https://registry.yarnpkg.com/web3-core-method/-/web3-core-method-1.2.2.tgz#d4fe2bb1945b7152e5f08e4ea568b171132a1e56" - integrity sha512-szR4fDSBxNHaF1DFqE+j6sFR/afv9Aa36OW93saHZnrh+iXSrYeUUDfugeNcRlugEKeUCkd4CZylfgbK2SKYJA== +type-check@~0.3.2: + version "0.3.2" + resolved "https://registry.yarnpkg.com/type-check/-/type-check-0.3.2.tgz#5884cab512cf1d355e3fb784f30804b2b520db72" + integrity sha1-WITKtRLPHTVeP7eE8wgEsrUg23I= dependencies: - underscore "1.9.1" - web3-core-helpers "1.2.2" - web3-core-promievent "1.2.2" - web3-core-subscriptions "1.2.2" - web3-utils "1.2.2" + prelude-ls "~1.1.2" -web3-core-method@1.2.6: - version "1.2.6" - resolved "https://registry.yarnpkg.com/web3-core-method/-/web3-core-method-1.2.6.tgz#f5a3e4d304abaf382923c8ab88ec8eeef45c1b3b" - integrity sha512-r2dzyPEonqkBg7Mugq5dknhV5PGaZTHBZlS/C+aMxNyQs3T3eaAsCTqlQDitwNUh/sUcYPEGF0Vo7ahYK4k91g== - dependencies: - underscore "1.9.1" - web3-core-helpers "1.2.6" - web3-core-promievent "1.2.6" - web3-core-subscriptions "1.2.6" - web3-utils "1.2.6" +type-detect@^4.0.0, type-detect@^4.0.5: + version "4.0.8" + resolved "https://registry.yarnpkg.com/type-detect/-/type-detect-4.0.8.tgz#7646fb5f18871cfbb7749e69bd39a6388eb7450c" + integrity sha512-0fr/mIH1dlO+x7TlcMy+bIDqKPsw/70tVyeHW787goQjhmqaZe10uwLujubK9q9Lg6Fiho1KUKDYz0Z7k7g5/g== -web3-core-method@1.5.2: - version "1.5.2" - resolved "https://registry.yarnpkg.com/web3-core-method/-/web3-core-method-1.5.2.tgz#d1d602657be1000a29d11e3ca3bf7bc778dea9a5" - integrity sha512-/mC5t9UjjJoQmJJqO5nWK41YHo+tMzFaT7Tp7jDCQsBkinE68KsUJkt0jzygpheW84Zra0DVp6q19gf96+cugg== - dependencies: - "@ethereumjs/common" "^2.4.0" - "@ethersproject/transactions" "^5.0.0-beta.135" - web3-core-helpers "1.5.2" - web3-core-promievent "1.5.2" - web3-core-subscriptions "1.5.2" - web3-utils "1.5.2" - -web3-core-method@2.0.0-alpha.1: - version "2.0.0-alpha.1" - resolved "https://registry.yarnpkg.com/web3-core-method/-/web3-core-method-2.0.0-alpha.1.tgz#6fd59cd229550bd08cb8922c095870fc9bf35f66" - integrity sha512-RlKYn9spgKAbIU9IV5UCQBLAcblLf5O6LYCGacRk0Iyz2SE0bVMtd7CY1pcsIXegNFiT3CPk+XvcpOIehZBhVQ== - dependencies: - "@babel/runtime" "^7.3.1" - eventemitter3 "3.1.0" - lodash "^4.17.11" - rxjs "^6.4.0" - web3-core "2.0.0-alpha.1" - web3-core-helpers "2.0.0-alpha.1" - web3-core-subscriptions "2.0.0-alpha.1" - web3-utils "2.0.0-alpha.1" +type-fest@^0.20.2: + version "0.20.2" + resolved "https://registry.yarnpkg.com/type-fest/-/type-fest-0.20.2.tgz#1bf207f4b28f91583666cb5fbd327887301cd5f4" + integrity sha512-Ne+eE4r0/iWnpAxD852z3A+N0Bt5RN//NjJwRd2VFHEmrywxf5vsZlh4R6lixl6B+wz/8d+maTSAkN1FIkI3LQ== -web3-core-promievent@1.2.1: - version "1.2.1" - resolved "https://registry.yarnpkg.com/web3-core-promievent/-/web3-core-promievent-1.2.1.tgz#003e8a3eb82fb27b6164a6d5b9cad04acf733838" - integrity sha512-IVUqgpIKoeOYblwpex4Hye6npM0aMR+kU49VP06secPeN0rHMyhGF0ZGveWBrGvf8WDPI7jhqPBFIC6Jf3Q3zw== - dependencies: - any-promise "1.3.0" - eventemitter3 "3.1.2" +type-fest@^0.21.3: + version "0.21.3" + resolved "https://registry.yarnpkg.com/type-fest/-/type-fest-0.21.3.tgz#d260a24b0198436e133fa26a524a6d65fa3b2e37" + integrity sha512-t0rzBq87m3fVcduHDUFhKmyyX+9eo6WQjZvf51Ea/M0Q7+T374Jp1aUiyUl0GKxp8M/OETVHSDvmkyPgvX+X2w== + +type-fest@^0.7.1: + version "0.7.1" + resolved "https://registry.yarnpkg.com/type-fest/-/type-fest-0.7.1.tgz#8dda65feaf03ed78f0a3f9678f1869147f7c5c48" + integrity sha512-Ne2YiiGN8bmrmJJEuTWTLJR32nh/JdL1+PSicowtNb0WFpn59GK8/lfD61bVtzguz7b3PBt74nxpv/Pw5po5Rg== -web3-core-promievent@1.2.2: - version "1.2.2" - resolved "https://registry.yarnpkg.com/web3-core-promievent/-/web3-core-promievent-1.2.2.tgz#3b60e3f2a0c96db8a891c927899d29d39e66ab1c" - integrity sha512-tKvYeT8bkUfKABcQswK6/X79blKTKYGk949urZKcLvLDEaWrM3uuzDwdQT3BNKzQ3vIvTggFPX9BwYh0F1WwqQ== +type-is@~1.6.17, type-is@~1.6.18: + version "1.6.18" + resolved "https://registry.yarnpkg.com/type-is/-/type-is-1.6.18.tgz#4e552cd05df09467dcbc4ef739de89f2cf37c131" + integrity sha512-TkRKr9sUTxEH8MdfuCSP7VizJyzRNMjj2J2do2Jr3Kym598JVdEksuzPQCnlFPW4ky9Q+iA+ma9BGm06XQBy8g== dependencies: - any-promise "1.3.0" - eventemitter3 "3.1.2" + media-typer "0.3.0" + mime-types "~2.1.24" -web3-core-promievent@1.2.6: - version "1.2.6" - resolved "https://registry.yarnpkg.com/web3-core-promievent/-/web3-core-promievent-1.2.6.tgz#b1550a3a4163e48b8b704c1fe4b0084fc2dad8f5" - integrity sha512-km72kJef/qtQNiSjDJJVHIZvoVOm6ytW3FCYnOcCs7RIkviAb5JYlPiye0o4pJOLzCXYID7DK7Q9bhY8qWb1lw== - dependencies: - any-promise "1.3.0" - eventemitter3 "3.1.2" +type@^1.0.1: + version "1.2.0" + resolved "https://registry.yarnpkg.com/type/-/type-1.2.0.tgz#848dd7698dafa3e54a6c479e759c4bc3f18847a0" + integrity sha512-+5nt5AAniqsCnu2cEQQdpzCAh33kVx8n0VoFidKpB1dVVLAN/F+bgVOqOJqOnEnrhp222clB5p3vUlD+1QAnfg== -web3-core-promievent@1.5.2: - version "1.5.2" - resolved "https://registry.yarnpkg.com/web3-core-promievent/-/web3-core-promievent-1.5.2.tgz#2dc9fe0e5bbeb7c360fc1aac5f12b32d9949a59b" - integrity sha512-5DacbJXe98ozSor7JlkTNCy6G8945VunRRkPxMk98rUrg60ECVEM/vuefk1atACzjQsKx6tmLZuHxbJQ64TQeQ== - dependencies: - eventemitter3 "4.0.4" +type@^2.0.0: + version "2.5.0" + resolved "https://registry.yarnpkg.com/type/-/type-2.5.0.tgz#0a2e78c2e77907b252abe5f298c1b01c63f0db3d" + integrity sha512-180WMDQaIMm3+7hGXWf12GtdniDEy7nYcyFMKJn/eZz/6tSLXrUN9V0wKSbMjej0I1WHWbpREDEKHtqPQa9NNw== -web3-core-requestmanager@1.2.1: - version "1.2.1" - resolved "https://registry.yarnpkg.com/web3-core-requestmanager/-/web3-core-requestmanager-1.2.1.tgz#fa2e2206c3d738db38db7c8fe9c107006f5c6e3d" - integrity sha512-xfknTC69RfYmLKC+83Jz73IC3/sS2ZLhGtX33D4Q5nQ8yc39ElyAolxr9sJQS8kihOcM6u4J+8gyGMqsLcpIBg== +typechain@^5.1.2: + version "5.1.2" + resolved "https://registry.yarnpkg.com/typechain/-/typechain-5.1.2.tgz#c8784d6155a8e69397ca47f438a3b4fb2aa939da" + integrity sha512-FuaCxJd7BD3ZAjVJoO+D6TnqKey3pQdsqOBsC83RKYWKli5BDhdf0TPkwfyjt20TUlZvOzJifz+lDwXsRkiSKA== dependencies: - underscore "1.9.1" - web3-core-helpers "1.2.1" - web3-providers-http "1.2.1" - web3-providers-ipc "1.2.1" - web3-providers-ws "1.2.1" + "@types/prettier" "^2.1.1" + command-line-args "^4.0.7" + 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-essentials "^7.0.1" -web3-core-requestmanager@1.2.2: - version "1.2.2" - resolved "https://registry.yarnpkg.com/web3-core-requestmanager/-/web3-core-requestmanager-1.2.2.tgz#667ba9ac724c9c76fa8965ae8a3c61f66e68d8d6" - integrity sha512-a+gSbiBRHtHvkp78U2bsntMGYGF2eCb6219aMufuZWeAZGXJ63Wc2321PCbA8hF9cQrZI4EoZ4kVLRI4OF15Hw== +typedarray-to-buffer@^3.1.5: + version "3.1.5" + resolved "https://registry.yarnpkg.com/typedarray-to-buffer/-/typedarray-to-buffer-3.1.5.tgz#a97ee7a9ff42691b9f783ff1bc5112fe3fca9080" + integrity sha512-zdu8XMNEDepKKR+XYOXAVPtWui0ly0NtohUscw+UmaHiAWT8hrV1rr//H6V+0DvJ3OQ19S979M0laLfX8rm82Q== dependencies: - underscore "1.9.1" - web3-core-helpers "1.2.2" - web3-providers-http "1.2.2" - web3-providers-ipc "1.2.2" - web3-providers-ws "1.2.2" + is-typedarray "^1.0.0" -web3-core-requestmanager@1.2.6: - version "1.2.6" - resolved "https://registry.yarnpkg.com/web3-core-requestmanager/-/web3-core-requestmanager-1.2.6.tgz#5808c0edc0d6e2991a87b65508b3a1ab065b68ec" - integrity sha512-QU2cbsj9Dm0r6om40oSwk8Oqbp3wTa08tXuMpSmeOTkGZ3EMHJ1/4LiJ8shwg1AvPMrKVU0Nri6+uBNCdReZ+g== - dependencies: - underscore "1.9.1" - web3-core-helpers "1.2.6" - web3-providers-http "1.2.6" - web3-providers-ipc "1.2.6" - web3-providers-ws "1.2.6" +typedarray@^0.0.6: + version "0.0.6" + resolved "https://registry.yarnpkg.com/typedarray/-/typedarray-0.0.6.tgz#867ac74e3864187b1d3d47d996a78ec5c8830777" + integrity sha1-hnrHTjhkGHsdPUfZlqeOxciDB3c= -web3-core-requestmanager@1.5.2: - version "1.5.2" - resolved "https://registry.yarnpkg.com/web3-core-requestmanager/-/web3-core-requestmanager-1.5.2.tgz#43ccc00779394c941b28e6e07e217350fd1ded71" - integrity sha512-oRVW9OrAsXN2JIZt68OEg1Mb1A9a/L3JAGMv15zLEFEnJEGw0KQsGK1ET2kvZBzvpFd5G0EVkYCnx7WDe4HSNw== - dependencies: - util "^0.12.0" - web3-core-helpers "1.5.2" - web3-providers-http "1.5.2" - web3-providers-ipc "1.5.2" - web3-providers-ws "1.5.2" +typescript@^4.3.5: + version "4.3.5" + resolved "https://registry.yarnpkg.com/typescript/-/typescript-4.3.5.tgz#4d1c37cc16e893973c45a06886b7113234f119f4" + integrity sha512-DqQgihaQ9cUrskJo9kIyW/+g0Vxsk8cDtZ52a3NGh0YNTfpUSArXSohyUGnvbPazEPLu398C0UxmKSOrPumUzA== -web3-core-subscriptions@1.2.1: - version "1.2.1" - resolved "https://registry.yarnpkg.com/web3-core-subscriptions/-/web3-core-subscriptions-1.2.1.tgz#8c2368a839d4eec1c01a4b5650bbeb82d0e4a099" - integrity sha512-nmOwe3NsB8V8UFsY1r+sW6KjdOS68h8nuh7NzlWxBQT/19QSUGiERRTaZXWu5BYvo1EoZRMxCKyCQpSSXLc08g== - dependencies: - eventemitter3 "3.1.2" - underscore "1.9.1" - web3-core-helpers "1.2.1" +typical@^2.6.0, typical@^2.6.1: + version "2.6.1" + resolved "https://registry.yarnpkg.com/typical/-/typical-2.6.1.tgz#5c080e5d661cbbe38259d2e70a3c7253e873881d" + integrity sha1-XAgOXWYcu+OCWdLnCjxyU+hziB0= -web3-core-subscriptions@1.2.2: - version "1.2.2" - resolved "https://registry.yarnpkg.com/web3-core-subscriptions/-/web3-core-subscriptions-1.2.2.tgz#bf4ba23a653a003bdc3551649958cc0b080b068e" - integrity sha512-QbTgigNuT4eicAWWr7ahVpJyM8GbICsR1Ys9mJqzBEwpqS+RXTRVSkwZ2IsxO+iqv6liMNwGregbJLq4urMFcQ== - dependencies: - eventemitter3 "3.1.2" - underscore "1.9.1" - web3-core-helpers "1.2.2" +uglify-js@^3.1.4: + version "3.13.6" + resolved "https://registry.yarnpkg.com/uglify-js/-/uglify-js-3.13.6.tgz#6815ac7fdd155d03c83e2362bb717e5b39b74013" + integrity sha512-rRprLwl8RVaS+Qvx3Wh5hPfPBn9++G6xkGlUupya0s5aDmNjI7z3lnRLB3u7sN4OmbB0pWgzhM9BEJyiWAwtAA== -web3-core-subscriptions@1.2.6: - version "1.2.6" - resolved "https://registry.yarnpkg.com/web3-core-subscriptions/-/web3-core-subscriptions-1.2.6.tgz#9d44189e2321f8f1abc31f6c09103b5283461b57" - integrity sha512-M0PzRrP2Ct13x3wPulFtc5kENH4UtnPxO9YxkfQlX2WRKENWjt4Rfq+BCVGYEk3rTutDfWrjfzjmqMRvXqEY5Q== - dependencies: - eventemitter3 "3.1.2" - underscore "1.9.1" - web3-core-helpers "1.2.6" +ultron@~1.1.0: + version "1.1.1" + resolved "https://registry.yarnpkg.com/ultron/-/ultron-1.1.1.tgz#9fe1536a10a664a65266a1e3ccf85fd36302bc9c" + integrity sha512-UIEXBNeYmKptWH6z8ZnqTeS8fV74zG0/eRU9VGkpzz+LIJNs8W/zM/L+7ctCkRrgbNnnR0xxw4bKOr0cW0N0Og== -web3-core-subscriptions@1.5.2: - version "1.5.2" - resolved "https://registry.yarnpkg.com/web3-core-subscriptions/-/web3-core-subscriptions-1.5.2.tgz#8eaebde44f81fc13c45b555c4422fe79393da9cf" - integrity sha512-hapI4rKFk22yurtIv0BYvkraHsM7epA4iI8Np+HuH6P9DD0zj/llaps6TXLM9HyacLBRwmOLZmr+pHBsPopUnQ== +unbox-primitive@^1.0.0: + version "1.0.1" + resolved "https://registry.yarnpkg.com/unbox-primitive/-/unbox-primitive-1.0.1.tgz#085e215625ec3162574dc8859abee78a59b14471" + integrity sha512-tZU/3NqK3dA5gpE1KtyiJUrEB0lxnGkMFHptJ7q6ewdZ8s12QrODwNbhIJStmJkd1QDXa1NRA8aF2A1zk/Ypyw== dependencies: - eventemitter3 "4.0.4" - web3-core-helpers "1.5.2" + function-bind "^1.1.1" + has-bigints "^1.0.1" + has-symbols "^1.0.2" + which-boxed-primitive "^1.0.2" -web3-core-subscriptions@2.0.0-alpha.1: - version "2.0.0-alpha.1" - resolved "https://registry.yarnpkg.com/web3-core-subscriptions/-/web3-core-subscriptions-2.0.0-alpha.1.tgz#5c2164ce8649645f6809dcdc34626ae12ec0d19b" - integrity sha512-fOr5DCz1QjwBPf/ssJ49Q0LVi5PUOkHmJ1y+5aSSJZmcuAZ9h1FJp7ANqAI7p7ssXnm9RpCDMg5vGa8tyYyAXA== - dependencies: - "@babel/runtime" "^7.3.1" - eventemitter3 "^4.0.0" - lodash "^4.17.11" +underscore@1.12.1: + version "1.12.1" + resolved "https://registry.yarnpkg.com/underscore/-/underscore-1.12.1.tgz#7bb8cc9b3d397e201cf8553336d262544ead829e" + integrity sha512-hEQt0+ZLDVUMhebKxL4x1BTtDY7bavVofhZ9KZ4aI26X9SRaE+Y3m83XUL1UP2jn8ynjndwCCpEHdUG+9pP1Tw== -web3-core@1.2.1: - version "1.2.1" - resolved "https://registry.yarnpkg.com/web3-core/-/web3-core-1.2.1.tgz#7278b58fb6495065e73a77efbbce781a7fddf1a9" - integrity sha512-5ODwIqgl8oIg/0+Ai4jsLxkKFWJYE0uLuE1yUKHNVCL4zL6n3rFjRMpKPokd6id6nJCNgeA64KdWQ4XfpnjdMg== - dependencies: - web3-core-helpers "1.2.1" - web3-core-method "1.2.1" - web3-core-requestmanager "1.2.1" - web3-utils "1.2.1" - -web3-core@1.2.2: - version "1.2.2" - resolved "https://registry.yarnpkg.com/web3-core/-/web3-core-1.2.2.tgz#334b99c8222ef9cfd0339e27352f0b58ea789a2f" - integrity sha512-miHAX3qUgxV+KYfaOY93Hlc3kLW2j5fH8FJy6kSxAv+d4d5aH0wwrU2IIoJylQdT+FeenQ38sgsCnFu9iZ1hCQ== - dependencies: - "@types/bn.js" "^4.11.4" - "@types/node" "^12.6.1" - web3-core-helpers "1.2.2" - web3-core-method "1.2.2" - web3-core-requestmanager "1.2.2" - web3-utils "1.2.2" - -web3-core@1.2.6: - version "1.2.6" - resolved "https://registry.yarnpkg.com/web3-core/-/web3-core-1.2.6.tgz#bb42a1d7ae49a7258460f0d95ddb00906f59ef92" - integrity sha512-y/QNBFtr5cIR8vxebnotbjWJpOnO8LDYEAzZjeRRUJh2ijmhjoYk7dSNx9ExgC0UCfNFRoNCa9dGRu/GAxwRlw== - dependencies: - "@types/bn.js" "^4.11.4" - "@types/node" "^12.6.1" - web3-core-helpers "1.2.6" - web3-core-method "1.2.6" - web3-core-requestmanager "1.2.6" - web3-utils "1.2.6" +underscore@1.9.1: + version "1.9.1" + resolved "https://registry.yarnpkg.com/underscore/-/underscore-1.9.1.tgz#06dce34a0e68a7babc29b365b8e74b8925203961" + integrity sha512-5/4etnCkd9c8gwgowi5/om/mYO5ajCaOgdzj/oW+0eQV9WxKBDZw5+ycmKmeaTXjInS/W0BzpGLo2xR2aBwZdg== -web3-core@1.5.2, web3-core@^1.5.2: - version "1.5.2" - resolved "https://registry.yarnpkg.com/web3-core/-/web3-core-1.5.2.tgz#ca2b9b1ed3cf84d48b31c9bb91f7628f97cfdcd5" - integrity sha512-sebMpQbg3kbh3vHUbHrlKGKOxDWqjgt8KatmTBsTAWj/HwWYVDzeX+2Q84+swNYsm2DrTBVFlqTErFUwPBvyaA== - dependencies: - "@types/bn.js" "^4.11.5" - "@types/node" "^12.12.6" - bignumber.js "^9.0.0" - web3-core-helpers "1.5.2" - web3-core-method "1.5.2" - web3-core-requestmanager "1.5.2" - web3-utils "1.5.2" - -web3-core@2.0.0-alpha.1: - version "2.0.0-alpha.1" - resolved "https://registry.yarnpkg.com/web3-core/-/web3-core-2.0.0-alpha.1.tgz#4bb87b860a0bbf9fd19ae380a4773e12ac3b3010" - integrity sha512-7fBl1h9Z46q0n8ugjYWMZsBP1tLlt8Rp4dRDF11EUNFQo1ll60tHj9PdjQIcKqoTd9EKhjYeZUWIsLf7YuipqA== - dependencies: - "@babel/runtime" "^7.3.1" - "@types/bn.js" "^4.11.4" - "@types/node" "^12.6.1" - lodash "^4.17.11" - web3-core-method "2.0.0-alpha.1" - web3-providers "2.0.0-alpha.1" - web3-utils "2.0.0-alpha.1" +universalify@^0.1.0: + version "0.1.2" + resolved "https://registry.yarnpkg.com/universalify/-/universalify-0.1.2.tgz#b646f69be3942dabcecc9d6639c80dc105efaa66" + integrity sha512-rBJeI5CXAlmy1pV+617WB9J63U6XcazHHF2f2dbJix4XzpUF0RS3Zbj0FGIOCAva5P/d/GBOYaACQ1w+0azUkg== -web3-eth-abi@1.2.1: - version "1.2.1" - resolved "https://registry.yarnpkg.com/web3-eth-abi/-/web3-eth-abi-1.2.1.tgz#9b915b1c9ebf82f70cca631147035d5419064689" - integrity sha512-jI/KhU2a/DQPZXHjo2GW0myEljzfiKOn+h1qxK1+Y9OQfTcBMxrQJyH5AP89O6l6NZ1QvNdq99ThAxBFoy5L+g== - dependencies: - ethers "4.0.0-beta.3" - underscore "1.9.1" - web3-utils "1.2.1" +universalify@^2.0.0: + version "2.0.0" + resolved "https://registry.yarnpkg.com/universalify/-/universalify-2.0.0.tgz#75a4984efedc4b08975c5aeb73f530d02df25717" + integrity sha512-hAZsKq7Yy11Zu1DE0OzWjw7nnLZmJZYTDZZyEFHZdUhV8FkH5MCfoU1XMaxXovpyW5nq5scPqq0ZDP9Zyl04oQ== -web3-eth-abi@1.2.2: - version "1.2.2" - resolved "https://registry.yarnpkg.com/web3-eth-abi/-/web3-eth-abi-1.2.2.tgz#d5616d88a90020f894763423a9769f2da11fe37a" - integrity sha512-Yn/ZMgoOLxhTVxIYtPJ0eS6pnAnkTAaJgUJh1JhZS4ekzgswMfEYXOwpMaD5eiqPJLpuxmZFnXnBZlnQ1JMXsw== - dependencies: - ethers "4.0.0-beta.3" - underscore "1.9.1" - web3-utils "1.2.2" +unpipe@1.0.0, unpipe@~1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/unpipe/-/unpipe-1.0.0.tgz#b2bf4ee8514aae6165b4817829d21b2ef49904ec" + integrity sha1-sr9O6FFKrmFltIF4KdIbLvSZBOw= -web3-eth-abi@1.2.6: - version "1.2.6" - resolved "https://registry.yarnpkg.com/web3-eth-abi/-/web3-eth-abi-1.2.6.tgz#b495383cc5c0d8e2857b26e7fe25606685983b25" - integrity sha512-w9GAyyikn8nSifSDZxAvU9fxtQSX+W2xQWMmrtTXmBGCaE4/ywKOSPAO78gq8AoU4Wq5yqVGKZLLbfpt7/sHlA== +uri-js@^4.2.2: + version "4.4.1" + resolved "https://registry.yarnpkg.com/uri-js/-/uri-js-4.4.1.tgz#9b1a52595225859e55f669d928f88c6c57f2a77e" + integrity sha512-7rKUyy33Q1yc98pQ1DAmLtwX109F7TIfWlW1Ydo8Wl1ii1SeHieeh0HHfPeL2fMXK6z0s8ecKs9frCuLJvndBg== dependencies: - ethers "4.0.0-beta.3" - underscore "1.9.1" - web3-utils "1.2.6" + punycode "^2.1.0" -web3-eth-abi@1.5.2: - version "1.5.2" - resolved "https://registry.yarnpkg.com/web3-eth-abi/-/web3-eth-abi-1.5.2.tgz#b627eada967f39ae4657ddd61b693cb00d55cb29" - integrity sha512-P3bJbDR5wib4kWGfVeBKBVi27T+AiHy4EJxYM6SMNbpm3DboLDdisu9YBd6INMs8rzxgnprBbGmmyn4jKIDKAA== +url-parse-lax@^1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/url-parse-lax/-/url-parse-lax-1.0.0.tgz#7af8f303645e9bd79a272e7a14ac68bc0609da73" + integrity sha1-evjzA2Rem9eaJy56FKxovAYJ2nM= dependencies: - "@ethersproject/abi" "5.0.7" - web3-utils "1.5.2" + prepend-http "^1.0.1" -web3-eth-abi@2.0.0-alpha.1: - version "2.0.0-alpha.1" - resolved "https://registry.yarnpkg.com/web3-eth-abi/-/web3-eth-abi-2.0.0-alpha.1.tgz#cdcafcb9681c9a5be7917efbae838df4121c623f" - integrity sha512-EcNgLm8dHqjGN5IjgAAPIGFgBowO2FKQbdLzk6Zc7WY5kpRA/EcJen4PzVZpH1THfqpIlmHAV2YimYUTIz6cDQ== +url-parse-lax@^3.0.0: + version "3.0.0" + resolved "https://registry.yarnpkg.com/url-parse-lax/-/url-parse-lax-3.0.0.tgz#16b5cafc07dbe3676c1b1999177823d6503acb0c" + integrity sha1-FrXK/Afb42dsGxmZF3gj1lA6yww= dependencies: - "@babel/runtime" "^7.3.1" - ethers "^4.0.27" - lodash "^4.17.11" - web3-utils "2.0.0-alpha.1" + prepend-http "^2.0.0" -web3-eth-accounts@1.2.1: - version "1.2.1" - resolved "https://registry.yarnpkg.com/web3-eth-accounts/-/web3-eth-accounts-1.2.1.tgz#2741a8ef337a7219d57959ac8bd118b9d68d63cf" - integrity sha512-26I4qq42STQ8IeKUyur3MdQ1NzrzCqPsmzqpux0j6X/XBD7EjZ+Cs0lhGNkSKH5dI3V8CJasnQ5T1mNKeWB7nQ== - dependencies: - any-promise "1.3.0" - crypto-browserify "3.12.0" - eth-lib "0.2.7" - scryptsy "2.1.0" - semver "6.2.0" - underscore "1.9.1" - uuid "3.3.2" - web3-core "1.2.1" - web3-core-helpers "1.2.1" - web3-core-method "1.2.1" - web3-utils "1.2.1" +url-set-query@^1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/url-set-query/-/url-set-query-1.0.0.tgz#016e8cfd7c20ee05cafe7795e892bd0702faa339" + integrity sha1-AW6M/Xwg7gXK/neV6JK9BwL6ozk= -web3-eth-accounts@1.2.2: - version "1.2.2" - resolved "https://registry.yarnpkg.com/web3-eth-accounts/-/web3-eth-accounts-1.2.2.tgz#c187e14bff6baa698ac352220290222dbfd332e5" - integrity sha512-KzHOEyXOEZ13ZOkWN3skZKqSo5f4Z1ogPFNn9uZbKCz+kSp+gCAEKxyfbOsB/JMAp5h7o7pb6eYsPCUBJmFFiA== - dependencies: - any-promise "1.3.0" - crypto-browserify "3.12.0" - eth-lib "0.2.7" - ethereumjs-common "^1.3.2" - ethereumjs-tx "^2.1.1" - scrypt-shim "github:web3-js/scrypt-shim" - underscore "1.9.1" - uuid "3.3.2" - web3-core "1.2.2" - web3-core-helpers "1.2.2" - web3-core-method "1.2.2" - web3-utils "1.2.2" +url-to-options@^1.0.1: + version "1.0.1" + resolved "https://registry.yarnpkg.com/url-to-options/-/url-to-options-1.0.1.tgz#1505a03a289a48cbd7a434efbaeec5055f5633a9" + integrity sha1-FQWgOiiaSMvXpDTvuu7FBV9WM6k= -web3-eth-accounts@1.2.6: - version "1.2.6" - resolved "https://registry.yarnpkg.com/web3-eth-accounts/-/web3-eth-accounts-1.2.6.tgz#a1ba4bf75fa8102a3ec6cddd0eccd72462262720" - integrity sha512-cDVtonHRgzqi/ZHOOf8kfCQWFEipcfQNAMzXIaKZwc0UUD9mgSI5oJrN45a89Ze+E6Lz9m77cDG5Ax9zscSkcw== +utf-8-validate@^5.0.2: + version "5.0.5" + resolved "https://registry.yarnpkg.com/utf-8-validate/-/utf-8-validate-5.0.5.tgz#dd32c2e82c72002dc9f02eb67ba6761f43456ca1" + integrity sha512-+pnxRYsS/axEpkrrEpzYfNZGXp0IjC/9RIxwM5gntY4Koi8SHmUGSfxfWqxZdRxrtaoVstuOzUp/rbs3JSPELQ== dependencies: - "@web3-js/scrypt-shim" "^0.1.0" - any-promise "1.3.0" - crypto-browserify "3.12.0" - eth-lib "^0.2.8" - ethereumjs-common "^1.3.2" - ethereumjs-tx "^2.1.1" - underscore "1.9.1" - uuid "3.3.2" - web3-core "1.2.6" - web3-core-helpers "1.2.6" - web3-core-method "1.2.6" - web3-utils "1.2.6" + node-gyp-build "^4.2.0" -web3-eth-accounts@1.5.2: - version "1.5.2" - resolved "https://registry.yarnpkg.com/web3-eth-accounts/-/web3-eth-accounts-1.5.2.tgz#cf506c21037fa497fe42f1f055980ce4acf83731" - integrity sha512-F8mtzxgEhxfLc66vPi0Gqd6mpscvvk7Ua575bsJ1p9J2X/VtuKgDgpWcU4e4LKeROQ+ouCpAG9//0j9jQuij3A== - 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.2" - web3-core-helpers "1.5.2" - web3-core-method "1.5.2" - web3-utils "1.5.2" - -web3-eth-accounts@2.0.0-alpha.1: - version "2.0.0-alpha.1" - resolved "https://registry.yarnpkg.com/web3-eth-accounts/-/web3-eth-accounts-2.0.0-alpha.1.tgz#441363e6494d53219bc766ec1792f77c2c78f647" - integrity sha512-yvpF+PZFU3HP285lzq4QYglLny/1xJba+PbJmJ9NHepeZRrJj73jF172q3LlmpQh1CWjmWL8qlzdh/bwfdJIYA== - dependencies: - "@babel/runtime" "^7.3.1" - browserify-cipher "^1.0.1" - eth-lib "0.2.8" - lodash "^4.17.11" - pbkdf2 "^3.0.17" - randombytes "^2.1.0" - scryptsy "2.1.0" - semver "6.2.0" - uuid "3.3.2" - web3-core "2.0.0-alpha.1" - web3-core-helpers "2.0.0-alpha.1" - web3-core-method "2.0.0-alpha.1" - web3-providers "2.0.0-alpha.1" - web3-utils "2.0.0-alpha.1" +utf8@3.0.0: + version "3.0.0" + resolved "https://registry.yarnpkg.com/utf8/-/utf8-3.0.0.tgz#f052eed1364d696e769ef058b183df88c87f69d1" + integrity sha512-E8VjFIQ/TyQgp+TZfS6l8yp/xWppSAHzidGiRrqe4bK4XP9pTRyKFgGJpO3SN7zdX4DeomTrwaseCHovfpFcqQ== -web3-eth-contract@1.2.1: - version "1.2.1" - resolved "https://registry.yarnpkg.com/web3-eth-contract/-/web3-eth-contract-1.2.1.tgz#3542424f3d341386fd9ff65e78060b85ac0ea8c4" - integrity sha512-kYFESbQ3boC9bl2rYVghj7O8UKMiuKaiMkxvRH5cEDHil8V7MGEGZNH0slSdoyeftZVlaWSMqkRP/chfnKND0g== - dependencies: - underscore "1.9.1" - web3-core "1.2.1" - web3-core-helpers "1.2.1" - web3-core-method "1.2.1" - web3-core-promievent "1.2.1" - web3-core-subscriptions "1.2.1" - web3-eth-abi "1.2.1" - web3-utils "1.2.1" - -web3-eth-contract@1.2.2: - version "1.2.2" - resolved "https://registry.yarnpkg.com/web3-eth-contract/-/web3-eth-contract-1.2.2.tgz#84e92714918a29e1028ee7718f0712536e14e9a1" - integrity sha512-EKT2yVFws3FEdotDQoNsXTYL798+ogJqR2//CaGwx3p0/RvQIgfzEwp8nbgA6dMxCsn9KOQi7OtklzpnJMkjtA== - dependencies: - "@types/bn.js" "^4.11.4" - underscore "1.9.1" - web3-core "1.2.2" - web3-core-helpers "1.2.2" - web3-core-method "1.2.2" - web3-core-promievent "1.2.2" - web3-core-subscriptions "1.2.2" - web3-eth-abi "1.2.2" - web3-utils "1.2.2" - -web3-eth-contract@1.2.6: - version "1.2.6" - resolved "https://registry.yarnpkg.com/web3-eth-contract/-/web3-eth-contract-1.2.6.tgz#39111543960035ed94c597a239cf5aa1da796741" - integrity sha512-ak4xbHIhWgsbdPCkSN+HnQc1SH4c856y7Ly+S57J/DQVzhFZemK5HvWdpwadJrQTcHET3ZeId1vq3kmW7UYodw== - dependencies: - "@types/bn.js" "^4.11.4" - underscore "1.9.1" - web3-core "1.2.6" - web3-core-helpers "1.2.6" - web3-core-method "1.2.6" - web3-core-promievent "1.2.6" - web3-core-subscriptions "1.2.6" - web3-eth-abi "1.2.6" - web3-utils "1.2.6" - -web3-eth-contract@1.5.2: - version "1.5.2" - resolved "https://registry.yarnpkg.com/web3-eth-contract/-/web3-eth-contract-1.5.2.tgz#ffbd799fd01e36596aaadefba323e24a98a23c2f" - integrity sha512-4B8X/IPFxZCTmtENpdWXtyw5fskf2muyc3Jm5brBQRb4H3lVh1/ZyQy7vOIkdphyaXu4m8hBLHzeyKkd37mOUg== - dependencies: - "@types/bn.js" "^4.11.5" - web3-core "1.5.2" - web3-core-helpers "1.5.2" - web3-core-method "1.5.2" - web3-core-promievent "1.5.2" - web3-core-subscriptions "1.5.2" - web3-eth-abi "1.5.2" - web3-utils "1.5.2" - -web3-eth-contract@2.0.0-alpha.1: - version "2.0.0-alpha.1" - resolved "https://registry.yarnpkg.com/web3-eth-contract/-/web3-eth-contract-2.0.0-alpha.1.tgz#803711aa7c8b8bccdc1b5f7a8e4dc07aa4dfb1aa" - integrity sha512-V/rzm0c0LopreTuGDCEwIQZ8lXTFjHV2XrGmIXfmUycyWVQ/Ulct/Ct9m7kRA/R/cfkf1ocSkyN8vj9i8a7Qag== - dependencies: - "@babel/runtime" "^7.3.1" - "@types/bn.js" "^4.11.4" - lodash "^4.17.11" - web3-core "2.0.0-alpha.1" - web3-core-helpers "2.0.0-alpha.1" - web3-core-method "2.0.0-alpha.1" - web3-core-subscriptions "2.0.0-alpha.1" - web3-eth-abi "2.0.0-alpha.1" - web3-eth-accounts "2.0.0-alpha.1" - web3-providers "2.0.0-alpha.1" - web3-utils "2.0.0-alpha.1" - -web3-eth-ens@1.2.1: - version "1.2.1" - resolved "https://registry.yarnpkg.com/web3-eth-ens/-/web3-eth-ens-1.2.1.tgz#a0e52eee68c42a8b9865ceb04e5fb022c2d971d5" - integrity sha512-lhP1kFhqZr2nnbu3CGIFFrAnNxk2veXpOXBY48Tub37RtobDyHijHgrj+xTh+mFiPokyrapVjpFsbGa+Xzye4Q== - dependencies: - eth-ens-namehash "2.0.8" - underscore "1.9.1" - web3-core "1.2.1" - web3-core-helpers "1.2.1" - web3-core-promievent "1.2.1" - web3-eth-abi "1.2.1" - web3-eth-contract "1.2.1" - web3-utils "1.2.1" - -web3-eth-ens@1.2.2: - version "1.2.2" - resolved "https://registry.yarnpkg.com/web3-eth-ens/-/web3-eth-ens-1.2.2.tgz#0a4abed1d4cbdacbf5e1ab06e502d806d1192bc6" - integrity sha512-CFjkr2HnuyMoMFBoNUWojyguD4Ef+NkyovcnUc/iAb9GP4LHohKrODG4pl76R5u61TkJGobC2ij6TyibtsyVYg== - dependencies: - eth-ens-namehash "2.0.8" - underscore "1.9.1" - web3-core "1.2.2" - web3-core-helpers "1.2.2" - web3-core-promievent "1.2.2" - web3-eth-abi "1.2.2" - web3-eth-contract "1.2.2" - web3-utils "1.2.2" - -web3-eth-ens@1.2.6: - version "1.2.6" - resolved "https://registry.yarnpkg.com/web3-eth-ens/-/web3-eth-ens-1.2.6.tgz#bf86a624c4c72bc59913c2345180d3ea947e110d" - integrity sha512-8UEqt6fqR/dji/jBGPFAyBs16OJjwi0t2dPWXPyGXmty/fH+osnXwWXE4HRUyj4xuafiM5P1YkXMsPhKEadjiw== - dependencies: - eth-ens-namehash "2.0.8" - underscore "1.9.1" - web3-core "1.2.6" - web3-core-helpers "1.2.6" - web3-core-promievent "1.2.6" - web3-eth-abi "1.2.6" - web3-eth-contract "1.2.6" - web3-utils "1.2.6" - -web3-eth-ens@1.5.2: - version "1.5.2" - resolved "https://registry.yarnpkg.com/web3-eth-ens/-/web3-eth-ens-1.5.2.tgz#ecb3708f0e8e2e847e9d89e8428da12c30bba6a4" - integrity sha512-/UrLL42ZOCYge+BpFBdzG8ICugaRS4f6X7PxJKO+zAt+TwNgBpjuWfW/ZYNcuqJun/ZyfcTuj03TXqA1RlNhZQ== - dependencies: - content-hash "^2.5.2" - eth-ens-namehash "2.0.8" - web3-core "1.5.2" - web3-core-helpers "1.5.2" - web3-core-promievent "1.5.2" - web3-eth-abi "1.5.2" - web3-eth-contract "1.5.2" - web3-utils "1.5.2" - -web3-eth-ens@2.0.0-alpha.1: - version "2.0.0-alpha.1" - resolved "https://registry.yarnpkg.com/web3-eth-ens/-/web3-eth-ens-2.0.0-alpha.1.tgz#fef85d964e7c580342e10b4ee0560c6a89527232" - integrity sha512-bf6o8yWxdkxb+AieUYRQe1n6R5UvInGkNZCDx2T955UrpLL5Xexgm/WBJVanRTn5//YK4o8Iudj9N3SgdfU0sA== - dependencies: - "@babel/runtime" "^7.3.1" - eth-ens-namehash "2.0.8" - lodash "^4.17.11" - web3-core "2.0.0-alpha.1" - web3-core-helpers "2.0.0-alpha.1" - web3-core-method "2.0.0-alpha.1" - web3-eth-abi "2.0.0-alpha.1" - web3-eth-accounts "2.0.0-alpha.1" - web3-eth-contract "2.0.0-alpha.1" - web3-net "2.0.0-alpha.1" - web3-providers "2.0.0-alpha.1" - web3-utils "2.0.0-alpha.1" - -web3-eth-iban@1.2.1: - version "1.2.1" - resolved "https://registry.yarnpkg.com/web3-eth-iban/-/web3-eth-iban-1.2.1.tgz#2c3801718946bea24e9296993a975c80b5acf880" - integrity sha512-9gkr4QPl1jCU+wkgmZ8EwODVO3ovVj6d6JKMos52ggdT2YCmlfvFVF6wlGLwi0VvNa/p+0BjJzaqxnnG/JewjQ== - dependencies: - bn.js "4.11.8" - web3-utils "1.2.1" +util-deprecate@^1.0.1, util-deprecate@~1.0.1: + version "1.0.2" + resolved "https://registry.yarnpkg.com/util-deprecate/-/util-deprecate-1.0.2.tgz#450d4dc9fa70de732762fbd2d4a28981419a0ccf" + integrity sha1-RQ1Nyfpw3nMnYvvS1KKJgUGaDM8= -web3-eth-iban@1.2.2: - version "1.2.2" - resolved "https://registry.yarnpkg.com/web3-eth-iban/-/web3-eth-iban-1.2.2.tgz#76bec73bad214df7c4192388979a59fc98b96c5a" - integrity sha512-gxKXBoUhaTFHr0vJB/5sd4i8ejF/7gIsbM/VvemHT3tF5smnmY6hcwSMmn7sl5Gs+83XVb/BngnnGkf+I/rsrQ== +util.promisify@^1.0.1: + version "1.1.1" + resolved "https://registry.yarnpkg.com/util.promisify/-/util.promisify-1.1.1.tgz#77832f57ced2c9478174149cae9b96e9918cd54b" + integrity sha512-/s3UsZUrIfa6xDhr7zZhnE9SLQ5RIXyYfiVnMMyMDzOc8WhWN4Nbh36H842OyurKbCDAesZOJaVyvmSl6fhGQw== dependencies: - bn.js "4.11.8" - web3-utils "1.2.2" + 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" -web3-eth-iban@1.2.6: - version "1.2.6" - resolved "https://registry.yarnpkg.com/web3-eth-iban/-/web3-eth-iban-1.2.6.tgz#0b22191fd1aa6e27f7ef0820df75820bfb4ed46b" - integrity sha512-TPMc3BW9Iso7H+9w+ytbqHK9wgOmtocyCD3PaAe5Eie50KQ/j7ThA60dGJnxItVo6yyRv5pZAYxPVob9x/fJlg== +util@^0.12.0: + version "0.12.3" + resolved "https://registry.yarnpkg.com/util/-/util-0.12.3.tgz#971bb0292d2cc0c892dab7c6a5d37c2bec707888" + integrity sha512-I8XkoQwE+fPQEhy9v012V+TSdH2kp9ts29i20TaaDUXsg7x/onePbhFJUExBfv/2ay1ZOp/Vsm3nDlmnFGSAog== dependencies: - bn.js "4.11.8" - web3-utils "1.2.6" + 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" -web3-eth-iban@1.5.2: - version "1.5.2" - resolved "https://registry.yarnpkg.com/web3-eth-iban/-/web3-eth-iban-1.5.2.tgz#f390ad244ef8a6c94de7c58736b0b80a484abc8e" - integrity sha512-C04YDXuSG/aDwOHSX+HySBGb0KraiAVt+/l1Mw7y/fCUrKC/K0yYzMYqY/uYOcvLtepBPsC4ZfUYWUBZ2PO8Vg== - dependencies: - bn.js "^4.11.9" - web3-utils "1.5.2" +utils-merge@1.0.1: + version "1.0.1" + resolved "https://registry.yarnpkg.com/utils-merge/-/utils-merge-1.0.1.tgz#9f95710f50a267947b2ccc124741c1028427e713" + integrity sha1-n5VxD1CiZ5R7LMwSR0HBAoQn5xM= -web3-eth-iban@2.0.0-alpha.1: - version "2.0.0-alpha.1" - resolved "https://registry.yarnpkg.com/web3-eth-iban/-/web3-eth-iban-2.0.0-alpha.1.tgz#79f1f6061b95b5bb64eb4243a6c65dadf542077c" - integrity sha512-I9oD+kjiF/RPYslndfr4UlhU/zdP67+LYG5dMx6zEM+KUmHdwQeMTp4w3NVZny7/pOtXA1w6dJJ2tL/OVfGkkw== - dependencies: - "@babel/runtime" "^7.3.1" - bn.js "4.11.8" - web3-utils "2.0.0-alpha.1" +uuid@2.0.1: + version "2.0.1" + resolved "https://registry.yarnpkg.com/uuid/-/uuid-2.0.1.tgz#c2a30dedb3e535d72ccf82e343941a50ba8533ac" + integrity sha1-wqMN7bPlNdcsz4LjQ5QaULqFM6w= -web3-eth-personal@1.2.1: - version "1.2.1" - resolved "https://registry.yarnpkg.com/web3-eth-personal/-/web3-eth-personal-1.2.1.tgz#244e9911b7b482dc17c02f23a061a627c6e47faf" - integrity sha512-RNDVSiaSoY4aIp8+Hc7z+X72H7lMb3fmAChuSBADoEc7DsJrY/d0R5qQDK9g9t2BO8oxgLrLNyBP/9ub2Hc6Bg== - dependencies: - web3-core "1.2.1" - web3-core-helpers "1.2.1" - web3-core-method "1.2.1" - web3-net "1.2.1" - web3-utils "1.2.1" - -web3-eth-personal@1.2.2: - version "1.2.2" - resolved "https://registry.yarnpkg.com/web3-eth-personal/-/web3-eth-personal-1.2.2.tgz#eee1c86a8132fa16b5e34c6d421ca92e684f0be6" - integrity sha512-4w+GLvTlFqW3+q4xDUXvCEMU7kRZ+xm/iJC8gm1Li1nXxwwFbs+Y+KBK6ZYtoN1qqAnHR+plYpIoVo27ixI5Rg== - dependencies: - "@types/node" "^12.6.1" - web3-core "1.2.2" - web3-core-helpers "1.2.2" - web3-core-method "1.2.2" - web3-net "1.2.2" - web3-utils "1.2.2" - -web3-eth-personal@1.2.6: - version "1.2.6" - resolved "https://registry.yarnpkg.com/web3-eth-personal/-/web3-eth-personal-1.2.6.tgz#47a0a0657ec04dd77f95451a6869d4751d324b6b" - integrity sha512-T2NUkh1plY8d7wePXSoHnaiKOd8dLNFaQfgBl9JHU6S7IJrG9jnYD9bVxLEgRUfHs9gKf9tQpDf7AcPFdq/A8g== - dependencies: - "@types/node" "^12.6.1" - web3-core "1.2.6" - web3-core-helpers "1.2.6" - web3-core-method "1.2.6" - web3-net "1.2.6" - web3-utils "1.2.6" +uuid@3.3.2: + version "3.3.2" + resolved "https://registry.yarnpkg.com/uuid/-/uuid-3.3.2.tgz#1b4af4955eb3077c501c23872fc6513811587131" + integrity sha512-yXJmeNaw3DnnKAOKJE51sL/ZaYfWJRl1pK9dr19YFCu0ObS231AB1/LbqTKRAQ5kw8A90rA6fr4riOUpTZvQZA== -web3-eth-personal@1.5.2: - version "1.5.2" - resolved "https://registry.yarnpkg.com/web3-eth-personal/-/web3-eth-personal-1.5.2.tgz#043335a19ab59e119ba61e3bd6c3b8cde8120490" - integrity sha512-nH5N2GiVC0C5XeMEKU16PeFP3Hb3hkPvlR6Tf9WQ+pE+jw1c8eaXBO1CJQLr15ikhUF3s94ICyHcfjzkDsmRbA== - dependencies: - "@types/node" "^12.12.6" - web3-core "1.5.2" - web3-core-helpers "1.5.2" - web3-core-method "1.5.2" - web3-net "1.5.2" - web3-utils "1.5.2" - -web3-eth-personal@2.0.0-alpha.1: - version "2.0.0-alpha.1" - resolved "https://registry.yarnpkg.com/web3-eth-personal/-/web3-eth-personal-2.0.0-alpha.1.tgz#15da8f598411c2237c79699fb1e78fa1cf39db81" - integrity sha512-IqBerCcfYSmuRpzXki/M/FKVu+lNVGP+RvjeNoE5l6Qy5W1m5X2AeI+P3ekN/HAwUhLNRVlzO6fSlNy0UaQtgg== - dependencies: - "@babel/runtime" "^7.3.1" - web3-core "2.0.0-alpha.1" - web3-core-helpers "2.0.0-alpha.1" - web3-core-method "2.0.0-alpha.1" - web3-eth-accounts "2.0.0-alpha.1" - web3-net "2.0.0-alpha.1" - web3-providers "2.0.0-alpha.1" - web3-utils "2.0.0-alpha.1" - -web3-eth@1.2.1: - version "1.2.1" - resolved "https://registry.yarnpkg.com/web3-eth/-/web3-eth-1.2.1.tgz#b9989e2557c73a9e8ffdc107c6dafbe72c79c1b0" - integrity sha512-/2xly4Yry5FW1i+uygPjhfvgUP/MS/Dk+PDqmzp5M88tS86A+j8BzKc23GrlA8sgGs0645cpZK/999LpEF5UdA== - dependencies: - underscore "1.9.1" - web3-core "1.2.1" - web3-core-helpers "1.2.1" - web3-core-method "1.2.1" - web3-core-subscriptions "1.2.1" - web3-eth-abi "1.2.1" - web3-eth-accounts "1.2.1" - web3-eth-contract "1.2.1" - web3-eth-ens "1.2.1" - web3-eth-iban "1.2.1" - web3-eth-personal "1.2.1" - web3-net "1.2.1" - web3-utils "1.2.1" - -web3-eth@1.2.2: - version "1.2.2" - resolved "https://registry.yarnpkg.com/web3-eth/-/web3-eth-1.2.2.tgz#65a1564634a23b990efd1655bf94ad513904286c" - integrity sha512-UXpC74mBQvZzd4b+baD4Ocp7g+BlwxhBHumy9seyE/LMIcMlePXwCKzxve9yReNpjaU16Mmyya6ZYlyiKKV8UA== - dependencies: - underscore "1.9.1" - web3-core "1.2.2" - web3-core-helpers "1.2.2" - web3-core-method "1.2.2" - web3-core-subscriptions "1.2.2" - web3-eth-abi "1.2.2" - web3-eth-accounts "1.2.2" - web3-eth-contract "1.2.2" - web3-eth-ens "1.2.2" - web3-eth-iban "1.2.2" - web3-eth-personal "1.2.2" - web3-net "1.2.2" - web3-utils "1.2.2" - -web3-eth@1.2.6: - version "1.2.6" - resolved "https://registry.yarnpkg.com/web3-eth/-/web3-eth-1.2.6.tgz#15a8c65fdde0727872848cae506758d302d8d046" - integrity sha512-ROWlDPzh4QX6tlGGGlAK6X4kA2n0/cNj/4kb0nNVWkRouGmYO0R8k6s47YxYHvGiXt0s0++FUUv5vAbWovtUQw== - dependencies: - underscore "1.9.1" - web3-core "1.2.6" - web3-core-helpers "1.2.6" - web3-core-method "1.2.6" - web3-core-subscriptions "1.2.6" - web3-eth-abi "1.2.6" - web3-eth-accounts "1.2.6" - web3-eth-contract "1.2.6" - web3-eth-ens "1.2.6" - web3-eth-iban "1.2.6" - web3-eth-personal "1.2.6" - web3-net "1.2.6" - web3-utils "1.2.6" - -web3-eth@1.5.2: - version "1.5.2" - resolved "https://registry.yarnpkg.com/web3-eth/-/web3-eth-1.5.2.tgz#0f6470df60a2a7d04df4423ca7721db8ed5ad72b" - integrity sha512-DwWQ6TCOUqvYyo7T20S7HpQDPveNHNqOn2Q2F3E8ZFyEjmqT4XsGiwvm08kB/VgQ4e/ANyq/i8PPFSYMT8JKHg== - dependencies: - web3-core "1.5.2" - web3-core-helpers "1.5.2" - web3-core-method "1.5.2" - web3-core-subscriptions "1.5.2" - web3-eth-abi "1.5.2" - web3-eth-accounts "1.5.2" - web3-eth-contract "1.5.2" - web3-eth-ens "1.5.2" - web3-eth-iban "1.5.2" - web3-eth-personal "1.5.2" - web3-net "1.5.2" - web3-utils "1.5.2" - -web3-eth@2.0.0-alpha.1: - version "2.0.0-alpha.1" - resolved "https://registry.yarnpkg.com/web3-eth/-/web3-eth-2.0.0-alpha.1.tgz#d11ab4934a8b5d06de6823cebda2075510782139" - integrity sha512-XJro1RPdhxKLYaOhUsTU5TuEPVdGyWbuPOTuqGUFZjyVnJ2dd6ETQIwmz9q7A6cIoYy9XZhni99mJ3ILLZzrMg== - dependencies: - "@babel/runtime" "^7.3.1" - ethereumjs-tx "^1.3.7" - rxjs "^6.4.0" - web3-core "2.0.0-alpha.1" - web3-core-helpers "2.0.0-alpha.1" - web3-core-method "2.0.0-alpha.1" - web3-core-subscriptions "2.0.0-alpha.1" - web3-eth-abi "2.0.0-alpha.1" - web3-eth-accounts "2.0.0-alpha.1" - web3-eth-contract "2.0.0-alpha.1" - web3-eth-ens "2.0.0-alpha.1" - web3-eth-iban "2.0.0-alpha.1" - web3-eth-personal "2.0.0-alpha.1" - web3-net "2.0.0-alpha.1" - web3-providers "2.0.0-alpha.1" - web3-utils "2.0.0-alpha.1" - -web3-net@1.2.1: - version "1.2.1" - resolved "https://registry.yarnpkg.com/web3-net/-/web3-net-1.2.1.tgz#edd249503315dd5ab4fa00220f6509d95bb7ab10" - integrity sha512-Yt1Bs7WgnLESPe0rri/ZoPWzSy55ovioaP35w1KZydrNtQ5Yq4WcrAdhBzcOW7vAkIwrsLQsvA+hrOCy7mNauw== - dependencies: - web3-core "1.2.1" - web3-core-method "1.2.1" - web3-utils "1.2.1" +uuid@^3.3.2: + version "3.4.0" + resolved "https://registry.yarnpkg.com/uuid/-/uuid-3.4.0.tgz#b23e4358afa8a202fe7a100af1f5f883f02007ee" + integrity sha512-HjSDRw6gZE5JMggctHBcjVak08+KEVhSIiDzFnT9S9aegmp85S/bReBVTb4QTFaRNptJ9kuYaNhnbNEOkbKb/A== -web3-net@1.2.2: - version "1.2.2" - resolved "https://registry.yarnpkg.com/web3-net/-/web3-net-1.2.2.tgz#5c3226ca72df7c591422440ce6f1203fd42ddad9" - integrity sha512-K07j2DXq0x4UOJgae65rWZKraOznhk8v5EGSTdFqASTx7vWE/m+NqBijBYGEsQY1lSMlVaAY9UEQlcXK5HzXTw== - dependencies: - web3-core "1.2.2" - web3-core-method "1.2.2" - web3-utils "1.2.2" +v8-compile-cache@^2.0.3: + version "2.3.0" + resolved "https://registry.yarnpkg.com/v8-compile-cache/-/v8-compile-cache-2.3.0.tgz#2de19618c66dc247dcfb6f99338035d8245a2cee" + integrity sha512-l8lCEmLcLYZh4nbunNZvQCJc5pv7+RCwa8q/LdUx8u7lsWvPDKmpodJAJNwkAhJC//dFY48KuIEmjtd4RViDrA== -web3-net@1.2.6: - version "1.2.6" - resolved "https://registry.yarnpkg.com/web3-net/-/web3-net-1.2.6.tgz#035ca0fbe55282fda848ca17ebb4c8966147e5ea" - integrity sha512-hsNHAPddrhgjWLmbESW0KxJi2GnthPcow0Sqpnf4oB6+/+ZnQHU9OsIyHb83bnC1OmunrK2vf9Ye2mLPdFIu3A== - dependencies: - web3-core "1.2.6" - web3-core-method "1.2.6" - web3-utils "1.2.6" +varint@^5.0.0: + version "5.0.2" + resolved "https://registry.yarnpkg.com/varint/-/varint-5.0.2.tgz#5b47f8a947eb668b848e034dcfa87d0ff8a7f7a4" + integrity sha512-lKxKYG6H03yCZUpAGOPOsMcGxd1RHCu1iKvEHYDPmTyq2HueGhD73ssNBqqQWfvYs04G9iUFRvmAVLW20Jw6ow== -web3-net@1.5.2: - version "1.5.2" - resolved "https://registry.yarnpkg.com/web3-net/-/web3-net-1.5.2.tgz#58915d7e2dad025d2a08f02c865f3abe61c48eff" - integrity sha512-VEc9c+jfoERhbJIxnx0VPlQDot8Lm4JW/tOWFU+ekHgIiu2zFKj5YxhURIth7RAbsaRsqCb79aE+M0eI8maxVQ== - dependencies: - web3-core "1.5.2" - web3-core-method "1.5.2" - web3-utils "1.5.2" +vary@^1, vary@~1.1.2: + version "1.1.2" + resolved "https://registry.yarnpkg.com/vary/-/vary-1.1.2.tgz#2299f02c6ded30d4a5961b0b9f74524a18f634fc" + integrity sha1-IpnwLG3tMNSllhsLn3RSShj2NPw= -web3-net@2.0.0-alpha.1: - version "2.0.0-alpha.1" - resolved "https://registry.yarnpkg.com/web3-net/-/web3-net-2.0.0-alpha.1.tgz#5b3d685b7d90734be27d00418648ed4d0f5d5bad" - integrity sha512-hdqGElUjLSiY3KRsy3YhtugSSCI22UA2p99BtD10GtYmziTEaQGnx5g+T/TWomOHW4wSMNy/QIFsiGL8ZVF5Ig== +verror@1.10.0: + version "1.10.0" + resolved "https://registry.yarnpkg.com/verror/-/verror-1.10.0.tgz#3a105ca17053af55d6e270c1f8288682e18da400" + integrity sha1-OhBcoXBTr1XW4nDB+CiGguGNpAA= dependencies: - "@babel/runtime" "^7.3.1" - lodash "^4.17.11" - web3-core "2.0.0-alpha.1" - web3-core-helpers "2.0.0-alpha.1" - web3-core-method "2.0.0-alpha.1" - web3-providers "2.0.0-alpha.1" - web3-utils "2.0.0-alpha.1" + assert-plus "^1.0.0" + core-util-is "1.0.2" + extsprintf "^1.2.0" -web3-providers-http@1.2.1: - version "1.2.1" - resolved "https://registry.yarnpkg.com/web3-providers-http/-/web3-providers-http-1.2.1.tgz#c93ea003a42e7b894556f7e19dd3540f947f5013" - integrity sha512-BDtVUVolT9b3CAzeGVA/np1hhn7RPUZ6YYGB/sYky+GjeO311Yoq8SRDUSezU92x8yImSC2B+SMReGhd1zL+bQ== +web3-bzz@1.3.5: + version "1.3.5" + resolved "https://registry.yarnpkg.com/web3-bzz/-/web3-bzz-1.3.5.tgz#f181a1319d9f867f4183b147e7aebd21aecff4a0" + integrity sha512-XiEUAbB1uKm/agqfwBsCW8fbw+sma85TfwuDpdcy591vinVk0S9TfWgLxro6v1KJ6nSELySIbKGbAJbh2GSyxw== dependencies: - web3-core-helpers "1.2.1" - xhr2-cookies "1.1.0" + "@types/node" "^12.12.6" + got "9.6.0" + swarm-js "^0.1.40" + underscore "1.9.1" -web3-providers-http@1.2.2: - version "1.2.2" - resolved "https://registry.yarnpkg.com/web3-providers-http/-/web3-providers-http-1.2.2.tgz#155e55c1d69f4c5cc0b411ede40dea3d06720956" - integrity sha512-BNZ7Hguy3eBszsarH5gqr9SIZNvqk9eKwqwmGH1LQS1FL3NdoOn7tgPPdddrXec4fL94CwgNk4rCU+OjjZRNDg== +web3-core-helpers@1.3.5: + version "1.3.5" + resolved "https://registry.yarnpkg.com/web3-core-helpers/-/web3-core-helpers-1.3.5.tgz#9f0ff7ed40befb9f691986e66fd94c828c7b1b13" + integrity sha512-HYh3ix5FjysgT0jyzD8s/X5ym0b4BGU7I2QtuBiydMnE0mQEWy7GcT9XKpTySA8FTOHHIAQYvQS07DN/ky3UzA== dependencies: - web3-core-helpers "1.2.2" - xhr2-cookies "1.1.0" + underscore "1.9.1" + web3-eth-iban "1.3.5" + web3-utils "1.3.5" -web3-providers-http@1.2.6: - version "1.2.6" - resolved "https://registry.yarnpkg.com/web3-providers-http/-/web3-providers-http-1.2.6.tgz#3c7b1252751fb37e53b873fce9dbb6340f5e31d9" - integrity sha512-2+SaFCspb5f82QKuHB3nEPQOF9iSWxRf7c18fHtmnLNVkfG9SwLN1zh67bYn3tZGUdOI3gj8aX4Uhfpwx9Ezpw== +web3-core-method@1.3.5: + version "1.3.5" + resolved "https://registry.yarnpkg.com/web3-core-method/-/web3-core-method-1.3.5.tgz#995fe12f3b364469e5208a88d72736327b231faa" + integrity sha512-hCbmgQ+At6OTuaNGAdjXMsCr4eUCmp9yGKSuaB5HdkNVDpqFso4HHjVxcjNrTyJp3OZnyjKBzQzK1ZWLpLl84Q== dependencies: - web3-core-helpers "1.2.6" - xhr2-cookies "1.1.0" + "@ethersproject/transactions" "^5.0.0-beta.135" + underscore "1.9.1" + web3-core-helpers "1.3.5" + web3-core-promievent "1.3.5" + web3-core-subscriptions "1.3.5" + web3-utils "1.3.5" -web3-providers-http@1.5.2: - version "1.5.2" - resolved "https://registry.yarnpkg.com/web3-providers-http/-/web3-providers-http-1.5.2.tgz#94f95fe5572ca54aa2c2ffd42c63956436c9eb0a" - integrity sha512-dUNFJc9IMYDLZnkoQX3H4ZjvHjGO6VRVCqrBrdh84wPX/0da9dOA7DwIWnG0Gv3n9ybWwu5JHQxK4MNQ444lyA== +web3-core-promievent@1.3.5: + version "1.3.5" + resolved "https://registry.yarnpkg.com/web3-core-promievent/-/web3-core-promievent-1.3.5.tgz#33c34811cc4e2987c56e5192f9a014368c42ca39" + integrity sha512-K0j8x3ZJr0eAyNvyUCxOUsSTd4hco0/9nxxlyOuijcsa6YV8l9NL6eqhniWbSyxCJT8ka5Mb7yAiUZe69EDLBQ== dependencies: - web3-core-helpers "1.5.2" - xhr2-cookies "1.1.0" + eventemitter3 "4.0.4" -web3-providers-ipc@1.2.1: - version "1.2.1" - resolved "https://registry.yarnpkg.com/web3-providers-ipc/-/web3-providers-ipc-1.2.1.tgz#017bfc687a8fc5398df2241eb98f135e3edd672c" - integrity sha512-oPEuOCwxVx8L4CPD0TUdnlOUZwGBSRKScCz/Ws2YHdr9Ium+whm+0NLmOZjkjQp5wovQbyBzNa6zJz1noFRvFA== +web3-core-requestmanager@1.3.5: + version "1.3.5" + resolved "https://registry.yarnpkg.com/web3-core-requestmanager/-/web3-core-requestmanager-1.3.5.tgz#c452ea85fcffdf5b82b84c250707b638790d0e75" + integrity sha512-9l294U3Ga8qmvv8E37BqjQREfMs+kFnkU3PY28g9DZGYzKvl3V1dgDYqxyrOBdCFhc7rNSpHdgC4PrVHjouspg== dependencies: - oboe "2.1.4" underscore "1.9.1" - web3-core-helpers "1.2.1" + util "^0.12.0" + web3-core-helpers "1.3.5" + web3-providers-http "1.3.5" + web3-providers-ipc "1.3.5" + web3-providers-ws "1.3.5" -web3-providers-ipc@1.2.2: - version "1.2.2" - resolved "https://registry.yarnpkg.com/web3-providers-ipc/-/web3-providers-ipc-1.2.2.tgz#c6d165a12bc68674b4cdd543ea18aec79cafc2e8" - integrity sha512-t97w3zi5Kn/LEWGA6D9qxoO0LBOG+lK2FjlEdCwDQatffB/+vYrzZ/CLYVQSoyFZAlsDoBasVoYSWZK1n39aHA== +web3-core-subscriptions@1.3.5: + version "1.3.5" + resolved "https://registry.yarnpkg.com/web3-core-subscriptions/-/web3-core-subscriptions-1.3.5.tgz#7c4dc9d559e344d852de2cf01bd0cc13c94023cb" + integrity sha512-6mtXdaEB1V1zKLqYBq7RF2W75AK5ZJNGpW6QYC7Zvbku7zq1ZlgaUkJo88JKMWJ7etfaHaYqQ/7VveHk5sQynA== dependencies: - oboe "2.1.4" + eventemitter3 "4.0.4" underscore "1.9.1" - web3-core-helpers "1.2.2" + web3-core-helpers "1.3.5" -web3-providers-ipc@1.2.6: - version "1.2.6" - resolved "https://registry.yarnpkg.com/web3-providers-ipc/-/web3-providers-ipc-1.2.6.tgz#adabab5ac66b3ff8a26c7dc97af3f1a6a7609701" - integrity sha512-b0Es+/GTZyk5FG3SgUDW+2/mBwJAXWt5LuppODptiOas8bB2khLjG6+Gm1K4uwOb+1NJGPt5mZZ8Wi7vibtQ+A== +web3-core@1.3.5: + version "1.3.5" + resolved "https://registry.yarnpkg.com/web3-core/-/web3-core-1.3.5.tgz#1e9335e6c4549dac09aaa07157242ebd6d097226" + integrity sha512-VQjTvnGTqJwDwjKEHSApea3RmgtFGLDSJ6bqrOyHROYNyTyKYjFQ/drG9zs3rjDkND9mgh8foI1ty37Qua3QCQ== dependencies: - oboe "2.1.4" - underscore "1.9.1" - web3-core-helpers "1.2.6" + "@types/bn.js" "^4.11.5" + "@types/node" "^12.12.6" + bignumber.js "^9.0.0" + web3-core-helpers "1.3.5" + web3-core-method "1.3.5" + web3-core-requestmanager "1.3.5" + web3-utils "1.3.5" -web3-providers-ipc@1.5.2: - version "1.5.2" - resolved "https://registry.yarnpkg.com/web3-providers-ipc/-/web3-providers-ipc-1.5.2.tgz#68a516883c998eeddf60df4cead77baca4fb4aaa" - integrity sha512-SJC4Sivt4g9LHKlRy7cs1jkJgp7bjrQeUndE6BKs0zNALKguxu6QYnzbmuHCTFW85GfMDjhvi24jyyZHMnBNXQ== +web3-eth-abi@1.3.5: + version "1.3.5" + resolved "https://registry.yarnpkg.com/web3-eth-abi/-/web3-eth-abi-1.3.5.tgz#eeffab0a4b318c47b8777de90983ca45614f8173" + integrity sha512-bkbG2v/mOW5DH6rF/SEgqunusjYoEi2IBw+fkmD3rzWDaEY7+/i1xY94AeO257d06QMgld75GtV/N+aEs7A6vQ== dependencies: - oboe "2.1.5" - web3-core-helpers "1.5.2" + "@ethersproject/abi" "5.0.7" + underscore "1.9.1" + web3-utils "1.3.5" -web3-providers-ws@1.2.1: - version "1.2.1" - resolved "https://registry.yarnpkg.com/web3-providers-ws/-/web3-providers-ws-1.2.1.tgz#2d941eaf3d5a8caa3214eff8dc16d96252b842cb" - integrity sha512-oqsQXzu+ejJACVHy864WwIyw+oB21nw/pI65/sD95Zi98+/HQzFfNcIFneF1NC4bVF3VNX4YHTNq2I2o97LAiA== +web3-eth-accounts@1.3.5: + version "1.3.5" + resolved "https://registry.yarnpkg.com/web3-eth-accounts/-/web3-eth-accounts-1.3.5.tgz#c23ee748759a6a06d6485a9322b106baa944dcdd" + integrity sha512-r3WOR21rgm6Cd6OFnifr3Tizdm5K+g2TsSOPySwX4FrgLrYDL6ck4zr5VXUPz+llpSExb/JztpE8pqEHr3U2NA== 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" - web3-core-helpers "1.2.1" - websocket "github:web3-js/WebSocket-Node#polyfill/globalThis" + uuid "3.3.2" + web3-core "1.3.5" + web3-core-helpers "1.3.5" + web3-core-method "1.3.5" + web3-utils "1.3.5" -web3-providers-ws@1.2.2: - version "1.2.2" - resolved "https://registry.yarnpkg.com/web3-providers-ws/-/web3-providers-ws-1.2.2.tgz#d2c05c68598cea5ad3fa6ef076c3bcb3ca300d29" - integrity sha512-Wb1mrWTGMTXOpJkL0yGvL/WYLt8fUIXx8k/l52QB2IiKzvyd42dTWn4+j8IKXGSYYzOm7NMqv6nhA5VDk12VfA== +web3-eth-contract@1.3.5: + version "1.3.5" + resolved "https://registry.yarnpkg.com/web3-eth-contract/-/web3-eth-contract-1.3.5.tgz#b41ecf8612b379c4fb1c614e950135717aa8f919" + integrity sha512-WfGVeQquN3D7Qm+KEIN9EI7yrm/fL2V9Y4+YhDWiKA/ns1pX1LYcEWojTOnBXCnPF3tcvoKKL+KBxXg1iKm38A== dependencies: + "@types/bn.js" "^4.11.5" underscore "1.9.1" - web3-core-helpers "1.2.2" - websocket "github:web3-js/WebSocket-Node#polyfill/globalThis" - -web3-providers-ws@1.2.6: - version "1.2.6" - resolved "https://registry.yarnpkg.com/web3-providers-ws/-/web3-providers-ws-1.2.6.tgz#3cecc49f7c99f07a75076d3c54247050bc4f7e11" - integrity sha512-20waSYX+gb5M5yKhug5FIwxBBvkKzlJH7sK6XEgdOx6BZ9YYamLmvg9wcRVtnSZO8hV/3cWenO/tRtTrHVvIgQ== + web3-core "1.3.5" + web3-core-helpers "1.3.5" + web3-core-method "1.3.5" + web3-core-promievent "1.3.5" + web3-core-subscriptions "1.3.5" + web3-eth-abi "1.3.5" + web3-utils "1.3.5" + +web3-eth-ens@1.3.5: + version "1.3.5" + resolved "https://registry.yarnpkg.com/web3-eth-ens/-/web3-eth-ens-1.3.5.tgz#5a28d23eb402fb1f6964da60ea60641e4d24d366" + integrity sha512-5bkpFTXV18CvaVP8kCbLZZm2r1TWUv9AsXH+80yz8bTZulUGvXsBMRfK6e5nfEr2Yv59xlIXCFoalmmySI9EJw== dependencies: - "@web3-js/websocket" "^1.0.29" + content-hash "^2.5.2" + eth-ens-namehash "2.0.8" underscore "1.9.1" - web3-core-helpers "1.2.6" - -web3-providers-ws@1.5.2: - version "1.5.2" - resolved "https://registry.yarnpkg.com/web3-providers-ws/-/web3-providers-ws-1.5.2.tgz#d336a93ed608b40cdcadfadd1f1bc8d32ea046e0" - integrity sha512-xy9RGlyO8MbJDuKv2vAMDkg+en+OvXG0CGTCM2BTl6l1vIdHpCa+6A/9KV2rK8aU9OBZ7/Pf+Y19517kHVl9RA== + web3-core "1.3.5" + web3-core-helpers "1.3.5" + web3-core-promievent "1.3.5" + web3-eth-abi "1.3.5" + web3-eth-contract "1.3.5" + web3-utils "1.3.5" + +web3-eth-iban@1.3.5: + version "1.3.5" + resolved "https://registry.yarnpkg.com/web3-eth-iban/-/web3-eth-iban-1.3.5.tgz#dff1e37864e23a3387016ec4db96cdc290a6fbd6" + integrity sha512-x+BI/d2Vt0J1cKK8eFd4W0f1TDjgEOYCwiViTb28lLE+tqrgyPqWDA+l6UlKYLF/yMFX3Dym4ofcCOtgcn4q4g== dependencies: - eventemitter3 "4.0.4" - web3-core-helpers "1.5.2" - websocket "^1.0.32" + bn.js "^4.11.9" + web3-utils "1.3.5" -web3-providers@2.0.0-alpha.1: - version "2.0.0-alpha.1" - resolved "https://registry.yarnpkg.com/web3-providers/-/web3-providers-2.0.0-alpha.1.tgz#19486aed4b014ec5d7687fac4eef2042db8b338c" - integrity sha512-X7hDkLKVN1U5aWeNQeErev494VSgt4gHJpHTgXn2rxrdJYUf7+6e6Al7yvRHlDxoTzhycX+j11HQC+CZlA+uhQ== +web3-eth-personal@1.3.5: + version "1.3.5" + resolved "https://registry.yarnpkg.com/web3-eth-personal/-/web3-eth-personal-1.3.5.tgz#bc5d5b900bc4824139af2ef01eaf8e9855c644ba" + integrity sha512-xELQHNZ8p3VoO1582ghCaq+Bx7pSkOOalc6/ACOCGtHDMelqgVejrmSIZGScYl+k0HzngmQAzURZWQocaoGM1g== dependencies: - "@babel/runtime" "^7.3.1" - "@types/node" "^10.12.18" - eventemitter3 "3.1.0" - lodash "^4.17.11" - url-parse "1.4.4" - web3-core "2.0.0-alpha.1" - web3-core-helpers "2.0.0-alpha.1" - web3-core-method "2.0.0-alpha.1" - web3-utils "2.0.0-alpha.1" - websocket "github:web3-js/WebSocket-Node#polyfill/globalThis" - xhr2-cookies "1.1.0" + "@types/node" "^12.12.6" + web3-core "1.3.5" + web3-core-helpers "1.3.5" + web3-core-method "1.3.5" + web3-net "1.3.5" + web3-utils "1.3.5" -web3-shh@1.2.1: - version "1.2.1" - resolved "https://registry.yarnpkg.com/web3-shh/-/web3-shh-1.2.1.tgz#4460e3c1e07faf73ddec24ccd00da46f89152b0c" - integrity sha512-/3Cl04nza5kuFn25bV3FJWa0s3Vafr5BlT933h26xovQ6HIIz61LmvNQlvX1AhFL+SNJOTcQmK1SM59vcyC8bA== +web3-eth@1.3.5: + version "1.3.5" + resolved "https://registry.yarnpkg.com/web3-eth/-/web3-eth-1.3.5.tgz#2a3d0db870ef7921942a5d798ba0569175cc4de1" + integrity sha512-5qqDPMMD+D0xRqOV2ePU2G7/uQmhn0FgCEhFzKDMHrssDQJyQLW/VgfA0NLn64lWnuUrGnQStGvNxrWf7MgsfA== dependencies: - web3-core "1.2.1" - web3-core-method "1.2.1" - web3-core-subscriptions "1.2.1" - web3-net "1.2.1" - -web3-shh@1.2.2: - version "1.2.2" - resolved "https://registry.yarnpkg.com/web3-shh/-/web3-shh-1.2.2.tgz#44ed998f2a6ba0ec5cb9d455184a0f647826a49c" - integrity sha512-og258NPhlBn8yYrDWjoWBBb6zo1OlBgoWGT+LL5/LPqRbjPe09hlOYHgscAAr9zZGtohTOty7RrxYw6Z6oDWCg== + underscore "1.9.1" + web3-core "1.3.5" + web3-core-helpers "1.3.5" + web3-core-method "1.3.5" + web3-core-subscriptions "1.3.5" + web3-eth-abi "1.3.5" + web3-eth-accounts "1.3.5" + web3-eth-contract "1.3.5" + web3-eth-ens "1.3.5" + web3-eth-iban "1.3.5" + web3-eth-personal "1.3.5" + web3-net "1.3.5" + web3-utils "1.3.5" + +web3-net@1.3.5: + version "1.3.5" + resolved "https://registry.yarnpkg.com/web3-net/-/web3-net-1.3.5.tgz#06e3465a9fbbeec1240160e2fd66ddb07b6af944" + integrity sha512-usbFbuUpKK8s7jPLGoUzi/WpNnefGFPTj948aJv8BZ04UQA4L/XS5NNkkhk358zNMmhGfEFW8wrWy+0Oy0njtA== dependencies: - web3-core "1.2.2" - web3-core-method "1.2.2" - web3-core-subscriptions "1.2.2" - web3-net "1.2.2" + web3-core "1.3.5" + web3-core-method "1.3.5" + web3-utils "1.3.5" -web3-shh@1.2.6: - version "1.2.6" - resolved "https://registry.yarnpkg.com/web3-shh/-/web3-shh-1.2.6.tgz#2492616da4cac32d4c7534b890f43bac63190c14" - integrity sha512-rouWyOOM6YMbLQd65grpj8BBezQfgNeRRX+cGyW4xsn6Xgu+B73Zvr6OtA/ftJwwa9bqHGpnLrrLMeWyy4YLUw== +web3-providers-http@1.3.5: + version "1.3.5" + resolved "https://registry.yarnpkg.com/web3-providers-http/-/web3-providers-http-1.3.5.tgz#cdada6fb342e08fd75aea249fceb6eee467beffc" + integrity sha512-ZQOmceFjcajEZdiuqciXjijwIYWNmEJ1oxMtbrwB2eGxHRCMXEH2xGRUZuhOFNF88yQC/VXVi14yvYg5ZlFJlA== dependencies: - web3-core "1.2.6" - web3-core-method "1.2.6" - web3-core-subscriptions "1.2.6" - web3-net "1.2.6" + web3-core-helpers "1.3.5" + xhr2-cookies "1.1.0" -web3-shh@1.5.2: - version "1.5.2" - resolved "https://registry.yarnpkg.com/web3-shh/-/web3-shh-1.5.2.tgz#a72a3d903c0708a004db94a72d934a302d880aea" - integrity sha512-wOxOcYt4Sa0AHAI8gG7RulCwVuVjSRS/M/AbFsea3XfJdN6sU13/syY7OdZNjNYuKjYTzxKYrd3dU/K2iqffVw== - dependencies: - web3-core "1.5.2" - web3-core-method "1.5.2" - web3-core-subscriptions "1.5.2" - web3-net "1.5.2" - -web3-shh@2.0.0-alpha.1: - version "2.0.0-alpha.1" - resolved "https://registry.yarnpkg.com/web3-shh/-/web3-shh-2.0.0-alpha.1.tgz#e555dd00f8600270ecdeff465ab54cc07b5d3e6e" - integrity sha512-Be6nizwB9ZQ/oCy1smPE30Y6rTDxjV+zmW+89kk1e9B6nLuTQwE/5DoHUU5+7AzfouKZcMI2QMH3Kf6M8BpalQ== - dependencies: - "@babel/runtime" "^7.3.1" - web3-core "2.0.0-alpha.1" - web3-core-helpers "2.0.0-alpha.1" - web3-core-method "2.0.0-alpha.1" - web3-core-subscriptions "2.0.0-alpha.1" - web3-net "2.0.0-alpha.1" - web3-providers "2.0.0-alpha.1" - web3-utils "2.0.0-alpha.1" - -web3-utils@1.2.1: - version "1.2.1" - resolved "https://registry.yarnpkg.com/web3-utils/-/web3-utils-1.2.1.tgz#21466e38291551de0ab34558de21512ac4274534" - integrity sha512-Mrcn3l58L+yCKz3zBryM6JZpNruWuT0OCbag8w+reeNROSGVlXzUQkU+gtAwc9JCZ7tKUyg67+2YUGqUjVcyBA== +web3-providers-ipc@1.3.5: + version "1.3.5" + resolved "https://registry.yarnpkg.com/web3-providers-ipc/-/web3-providers-ipc-1.3.5.tgz#2f5536abfe03f3824e00dedc614d8f46db72b57f" + integrity sha512-cbZOeb/sALiHjzMolJjIyHla/J5wdL2JKUtRO66Nh/uLALBCpU8JUgzNvpAdJ1ae3+A33+EdFStdzuDYHKtQew== dependencies: - bn.js "4.11.8" - eth-lib "0.2.7" - ethjs-unit "0.1.6" - number-to-bn "1.7.0" - randomhex "0.1.5" + oboe "2.1.5" underscore "1.9.1" - utf8 "3.0.0" + web3-core-helpers "1.3.5" -web3-utils@1.2.2: - version "1.2.2" - resolved "https://registry.yarnpkg.com/web3-utils/-/web3-utils-1.2.2.tgz#b53a08c40d2c3f31d3c4a28e7d749405df99c8c0" - integrity sha512-joF+s3243TY5cL7Z7y4h1JsJpUCf/kmFmj+eJar7Y2yNIGVcW961VyrAms75tjUysSuHaUQ3eQXjBEUJueT52A== +web3-providers-ws@1.3.5: + version "1.3.5" + resolved "https://registry.yarnpkg.com/web3-providers-ws/-/web3-providers-ws-1.3.5.tgz#7f841ec79358d90c4a803d1291157b5ffb15aeb7" + integrity sha512-zeZ4LMvKhYaJBDCqA//Bzgp4r/T0tNq5U/xvN0axA4YflzF7yqlsbzGwCkcZYDbrUaK3Ltl2uOmvwjbWALOZ1A== dependencies: - bn.js "4.11.8" - eth-lib "0.2.7" - ethereum-bloom-filters "^1.0.6" - ethjs-unit "0.1.6" - number-to-bn "1.7.0" - randombytes "^2.1.0" + eventemitter3 "4.0.4" underscore "1.9.1" - utf8 "3.0.0" + web3-core-helpers "1.3.5" + websocket "^1.0.32" -web3-utils@1.2.6: - version "1.2.6" - resolved "https://registry.yarnpkg.com/web3-utils/-/web3-utils-1.2.6.tgz#b9a25432da00976457fcc1094c4af8ac6d486db9" - integrity sha512-8/HnqG/l7dGmKMgEL9JeKPTtjScxOePTzopv5aaKFExPfaBrYRkgoMqhoowCiAl/s16QaTn4DoIF1QC4YsT7Mg== +web3-shh@1.3.5: + version "1.3.5" + resolved "https://registry.yarnpkg.com/web3-shh/-/web3-shh-1.3.5.tgz#af0b8ebca90a3652dbbb90d351395f36ca91f40b" + integrity sha512-aRwzCduXvuGVslLL/Y15VcOHa70Qr2kxZI7UwOzQVhaaOdxuRRvo3AK/cmyln1Tsd54/n93Yk8I3qg5I2+6alw== dependencies: - bn.js "4.11.8" - eth-lib "0.2.7" - 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-core "1.3.5" + web3-core-method "1.3.5" + web3-core-subscriptions "1.3.5" + web3-net "1.3.5" -web3-utils@1.2.9: - version "1.2.9" - resolved "https://registry.yarnpkg.com/web3-utils/-/web3-utils-1.2.9.tgz#abe11735221627da943971ef1a630868fb9c61f3" - integrity sha512-9hcpuis3n/LxFzEVjwnVgvJzTirS2S9/MiNAa7l4WOEoywY+BSNwnRX4MuHnjkh9NY25B6QOjuNG6FNnSjTw1w== +web3-utils@1.3.5: + version "1.3.5" + resolved "https://registry.yarnpkg.com/web3-utils/-/web3-utils-1.3.5.tgz#14ee2ff1a7a226867698d6eaffd21aa97aed422e" + integrity sha512-5apMRm8ElYjI/92GHqijmaLC+s+d5lgjpjHft+rJSs/dsnX8I8tQreqev0dmU+wzU+2EEe4Sx9a/OwGWHhQv3A== dependencies: - bn.js "4.11.8" - eth-lib "0.2.7" + 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" @@ -15378,10 +7606,10 @@ web3-utils@1.2.9: underscore "1.9.1" utf8 "3.0.0" -web3-utils@1.5.2, web3-utils@^1.0.0-beta.31, web3-utils@^1.3.0: - version "1.5.2" - resolved "https://registry.yarnpkg.com/web3-utils/-/web3-utils-1.5.2.tgz#150982dcb1918ffc54eba87528e28f009ebc03aa" - integrity sha512-quTtTeQJHYSxAwIBOCGEcQtqdVcFWX6mCFNoqnp+mRbq+Hxbs8CGgO/6oqfBx4OvxIOfCpgJWYVHswRXnbEu9Q== +web3-utils@^1.3.0: + version "1.3.6" + resolved "https://registry.yarnpkg.com/web3-utils/-/web3-utils-1.3.6.tgz#390bc9fa3a7179746963cfaca55bb80ac4d8dc10" + integrity sha512-hHatFaQpkQgjGVER17gNx8u1qMyaXFZtM0y0XLGH1bzsjMPlkMPLRcYOrZ00rOPfTEuYFOdrpGOqZXVmGrMZRg== dependencies: bn.js "^4.11.9" eth-lib "0.2.8" @@ -15389,149 +7617,26 @@ web3-utils@1.5.2, web3-utils@^1.0.0-beta.31, web3-utils@^1.3.0: ethjs-unit "0.1.6" number-to-bn "1.7.0" randombytes "^2.1.0" + underscore "1.12.1" utf8 "3.0.0" -web3-utils@2.0.0-alpha.1, web3-utils@^2.0.0-alpha: - version "2.0.0-alpha.1" - resolved "https://registry.yarnpkg.com/web3-utils/-/web3-utils-2.0.0-alpha.1.tgz#231442adea3b58bca0c7185ee5b7743c01938682" - integrity sha512-xZY9rPC/5S2utQV26x2oeWlBjs1cGwO+AAwv0smK2zjNi6UeTZjG9aZ/RJZJpToIapKhdtmQI6yZ8/ZQNDRGGg== - dependencies: - "@babel/runtime" "^7.3.1" - "@types/bn.js" "^4.11.4" - "@types/node" "^12.6.1" - bn.js "4.11.8" - eth-lib "0.2.8" - ethjs-unit "^0.1.6" - lodash "^4.17.11" - number-to-bn "1.7.0" - randombytes "^2.1.0" - utf8 "2.1.1" - -web3@*: - version "1.2.6" - resolved "https://registry.yarnpkg.com/web3/-/web3-1.2.6.tgz#c497dcb14cdd8d6d9fb6b445b3b68ff83f8ccf68" - integrity sha512-tpu9fLIComgxGrFsD8LUtA4s4aCZk7px8UfcdEy6kS2uDi/ZfR07KJqpXZMij7Jvlq+cQrTAhsPSiBVvoMaivA== - dependencies: - "@types/node" "^12.6.1" - web3-bzz "1.2.6" - web3-core "1.2.6" - web3-eth "1.2.6" - web3-eth-personal "1.2.6" - web3-net "1.2.6" - web3-shh "1.2.6" - web3-utils "1.2.6" - -web3@1.2.1: - version "1.2.1" - resolved "https://registry.yarnpkg.com/web3/-/web3-1.2.1.tgz#5d8158bcca47838ab8c2b784a2dee4c3ceb4179b" - integrity sha512-nNMzeCK0agb5i/oTWNdQ1aGtwYfXzHottFP2Dz0oGIzavPMGSKyVlr8ibVb1yK5sJBjrWVnTdGaOC2zKDFuFRw== - dependencies: - web3-bzz "1.2.1" - web3-core "1.2.1" - web3-eth "1.2.1" - web3-eth-personal "1.2.1" - web3-net "1.2.1" - web3-shh "1.2.1" - web3-utils "1.2.1" - -web3@1.2.2: - version "1.2.2" - resolved "https://registry.yarnpkg.com/web3/-/web3-1.2.2.tgz#b1b8b69aafdf94cbaeadbb68a8aa1df2ef266aec" - integrity sha512-/ChbmB6qZpfGx6eNpczt5YSUBHEA5V2+iUCbn85EVb3Zv6FVxrOo5Tv7Lw0gE2tW7EEjASbCyp3mZeiZaCCngg== - dependencies: - "@types/node" "^12.6.1" - web3-bzz "1.2.2" - web3-core "1.2.2" - web3-eth "1.2.2" - web3-eth-personal "1.2.2" - web3-net "1.2.2" - web3-shh "1.2.2" - web3-utils "1.2.2" - -web3@1.5.2: - version "1.5.2" - resolved "https://registry.yarnpkg.com/web3/-/web3-1.5.2.tgz#736ca2f39048c63964203dd811f519400973e78d" - integrity sha512-aapKLdO8t7Cos6tZLeeQUtCJvTiPMlLcHsHHDLSBZ/VaJEucSTxzun32M8sp3BmF4waDEmhY+iyUM1BKvtAcVQ== - dependencies: - web3-bzz "1.5.2" - web3-core "1.5.2" - web3-eth "1.5.2" - web3-eth-personal "1.5.2" - web3-net "1.5.2" - web3-shh "1.5.2" - web3-utils "1.5.2" - -web3@^2.0.0-alpha: - version "2.0.0-alpha.1" - resolved "https://registry.yarnpkg.com/web3/-/web3-2.0.0-alpha.1.tgz#cfc0cef8c94d312ae943f268d6b42ebada521150" - integrity sha512-njwdP8MsziYYu9BGXvq9326xViWe6Q4/I/sq/AKOqfLWgLhAJ9xYkP8U6v0AclNE8Ow447dV3b9eK3sOLS1/WQ== - dependencies: - "@babel/runtime" "^7.3.1" - "@types/node" "^12.6.1" - web3-core "2.0.0-alpha.1" - web3-eth "2.0.0-alpha.1" - web3-eth-personal "2.0.0-alpha.1" - web3-net "2.0.0-alpha.1" - web3-providers "2.0.0-alpha.1" - web3-shh "2.0.0-alpha.1" - web3-utils "2.0.0-alpha.1" - -webidl-conversions@^2.0.0: - version "2.0.1" - resolved "https://registry.yarnpkg.com/webidl-conversions/-/webidl-conversions-2.0.1.tgz#3bf8258f7d318c7443c36f2e169402a1a6703506" - integrity sha1-O/glj30xjHRDw28uFpQCoaZwNQY= - -webpack-sources@^1.0.1: - version "1.4.3" - resolved "https://registry.yarnpkg.com/webpack-sources/-/webpack-sources-1.4.3.tgz#eedd8ec0b928fbf1cbfe994e22d2d890f330a933" - integrity sha512-lgTS3Xhv1lCOKo7SA5TjKXMjpSM4sBjNV5+q2bqesbSPs5FjGmU6jjtBSkX9b4qW87vDIsCIlUPOEhbZrMdjeQ== - dependencies: - source-list-map "^2.0.0" - source-map "~0.6.1" - -webpack@^3.0.0: - version "3.12.0" - resolved "https://registry.yarnpkg.com/webpack/-/webpack-3.12.0.tgz#3f9e34360370602fcf639e97939db486f4ec0d74" - integrity sha512-Sw7MdIIOv/nkzPzee4o0EdvCuPmxT98+vVpIvwtcwcF1Q4SDSNp92vwcKc4REe7NItH9f1S4ra9FuQ7yuYZ8bQ== - dependencies: - acorn "^5.0.0" - acorn-dynamic-import "^2.0.0" - ajv "^6.1.0" - ajv-keywords "^3.1.0" - async "^2.1.2" - enhanced-resolve "^3.4.0" - escope "^3.6.0" - interpret "^1.0.0" - json-loader "^0.5.4" - json5 "^0.5.1" - loader-runner "^2.3.0" - loader-utils "^1.1.0" - memory-fs "~0.4.1" - mkdirp "~0.5.0" - node-libs-browser "^2.0.0" - source-map "^0.5.3" - supports-color "^4.2.1" - tapable "^0.2.7" - uglifyjs-webpack-plugin "^0.4.6" - watchpack "^1.4.0" - webpack-sources "^1.0.1" - yargs "^8.0.2" - -websocket@^1.0.28: - version "1.0.31" - resolved "https://registry.yarnpkg.com/websocket/-/websocket-1.0.31.tgz#e5d0f16c3340ed87670e489ecae6144c79358730" - integrity sha512-VAouplvGKPiKFDTeCCO65vYHsyay8DqoBSlzIO3fayrfOgU94lQN5a1uWVnFrMLceTJw/+fQXR5PGbUVRaHshQ== - dependencies: - debug "^2.2.0" - es5-ext "^0.10.50" - nan "^2.14.0" - typedarray-to-buffer "^3.1.5" - yaeti "^0.0.6" - -websocket@^1.0.31, websocket@^1.0.32: - version "1.0.33" - resolved "https://registry.yarnpkg.com/websocket/-/websocket-1.0.33.tgz#407f763fc58e74a3fa41ca3ae5d78d3f5e3b82a5" - integrity sha512-XwNqM2rN5eh3G2CUQE3OHZj+0xfdH42+OFK6LdC2yqiC0YU8e5UK0nYre220T0IyyN031V/XOvtHvXozvJYFWA== +web3@1.3.5: + version "1.3.5" + resolved "https://registry.yarnpkg.com/web3/-/web3-1.3.5.tgz#ef4c3a2241fdd74f2f7794e839f30bc6f9814e46" + integrity sha512-UyQW/MT5EIGBrXPCh/FDIaD7RtJTn5/rJUNw2FOglp0qoXnCQHNKvntiR1ylztk05fYxIF6UgsC76IrazlKJjw== + dependencies: + web3-bzz "1.3.5" + web3-core "1.3.5" + web3-eth "1.3.5" + web3-eth-personal "1.3.5" + web3-net "1.3.5" + web3-shh "1.3.5" + web3-utils "1.3.5" + +websocket@^1.0.32: + version "1.0.34" + resolved "https://registry.yarnpkg.com/websocket/-/websocket-1.0.34.tgz#2bdc2602c08bf2c82253b730655c0ef7dcab3111" + integrity sha512-PRDso2sGwF6kM75QykIesBijKSVceR6jL2G8NGYyq2XrItNC2P5/qL5XeR056GhA+Ly7JMFvJb9I312mJfmqnQ== dependencies: bufferutil "^4.0.1" debug "^2.2.0" @@ -15540,35 +7645,7 @@ websocket@^1.0.31, websocket@^1.0.32: utf-8-validate "^5.0.2" yaeti "^0.0.6" -"websocket@github:web3-js/WebSocket-Node#polyfill/globalThis": - version "1.0.29" - resolved "https://codeload.github.com/web3-js/WebSocket-Node/tar.gz/905deb4812572b344f5801f8c9ce8bb02799d82e" - dependencies: - debug "^2.2.0" - es5-ext "^0.10.50" - nan "^2.14.0" - typedarray-to-buffer "^3.1.5" - yaeti "^0.0.6" - -websql@1.0.0: - version "1.0.0" - resolved "https://registry.yarnpkg.com/websql/-/websql-1.0.0.tgz#1bd00b27392893134715d5dd6941fd89e730bab5" - integrity sha512-7iZ+u28Ljw5hCnMiq0BCOeSYf0vCFQe/ORY0HgscTiKjQed8WqugpBUggJ2NTnB9fahn1kEnPRX2jf8Px5PhJw== - dependencies: - argsarray "^0.0.1" - immediate "^3.2.2" - noop-fn "^1.0.0" - sqlite3 "^4.0.0" - tiny-queue "^0.2.1" - -whatwg-url-compat@~0.6.5: - version "0.6.5" - resolved "https://registry.yarnpkg.com/whatwg-url-compat/-/whatwg-url-compat-0.6.5.tgz#00898111af689bb097541cd5a45ca6c8798445bf" - integrity sha1-AImBEa9om7CXVBzVpFymyHmERb8= - dependencies: - tr46 "~0.0.1" - -which-boxed-primitive@^1.0.1: +which-boxed-primitive@^1.0.2: version "1.0.2" resolved "https://registry.yarnpkg.com/which-boxed-primitive/-/which-boxed-primitive-1.0.2.tgz#13757bc89b209b049fe5d86430e21cf40a89a8e6" integrity sha512-bwZdv0AKLpplFY2KZRX6TvyuN7ojjr7lwkg6ml0roIy9YeuSr7JS372qlNW18UQYzgYK9ziGcerWqZOmEn9VNg== @@ -15597,76 +7674,41 @@ which-typed-array@^1.1.2: has-symbols "^1.0.1" is-typed-array "^1.1.3" -which@1.3.1, which@^1.1.1, which@^1.2.14, which@^1.2.9, which@^1.3.1: +which@1.3.1, which@^1.1.1, which@^1.2.9, which@^1.3.1: version "1.3.1" resolved "https://registry.yarnpkg.com/which/-/which-1.3.1.tgz#a45043d54f5805316da8d62f9f50918d3da70b0a" integrity sha512-HxJdYWq1MTIQbJ3nw0cqssHoTNU267KlrDuGZ1WYlxDStUtKUhOaJmh112/TZmHxxUfuJqPXSOm7tDyas0OSIQ== dependencies: isexe "^2.0.0" -which@2.0.2: +which@2.0.2, which@^2.0.1: version "2.0.2" resolved "https://registry.yarnpkg.com/which/-/which-2.0.2.tgz#7c6a8dd0a636a0327e10b59c9286eee93f3f51b1" integrity sha512-BLI3Tl1TW3Pvl70l3yq3Y64i+awpwXqsGBYWkkqMtnbXgrMD+yj7rhW0kuEDxzJaYXGjEW5ogapKNMEKNMjibA== dependencies: isexe "^2.0.0" -wide-align@1.1.3, wide-align@^1.1.0: +wide-align@1.1.3: version "1.1.3" resolved "https://registry.yarnpkg.com/wide-align/-/wide-align-1.1.3.tgz#ae074e6bdc0c14a431e804e624549c633b000457" integrity sha512-QGkOQc8XL6Bt5PwnsExKBPuMKBxnGxWWW3fU55Xt4feHozMUhdUMaBCk290qpm/wG5u/RSKzwdAC4i51YigihA== dependencies: string-width "^1.0.2 || 2" -wif@^2.0.6: - version "2.0.6" - resolved "https://registry.yarnpkg.com/wif/-/wif-2.0.6.tgz#08d3f52056c66679299726fade0d432ae74b4704" - integrity sha1-CNP1IFbGZnkplyb63g1DKudLRwQ= - dependencies: - bs58check "<3.0.0" - -window-size@0.1.0: - version "0.1.0" - resolved "https://registry.yarnpkg.com/window-size/-/window-size-0.1.0.tgz#5438cd2ea93b202efa3a19fe8887aee7c94f9c9d" - integrity sha1-VDjNLqk7IC76Ohn+iIeu58lPnJ0= - -window-size@^0.2.0: - version "0.2.0" - resolved "https://registry.yarnpkg.com/window-size/-/window-size-0.2.0.tgz#b4315bb4214a3d7058ebeee892e13fa24d98b075" - integrity sha1-tDFbtCFKPXBY6+7okuE/ok2YsHU= - -word-wrap@~1.2.3: +word-wrap@^1.2.3, word-wrap@~1.2.3: version "1.2.3" resolved "https://registry.yarnpkg.com/word-wrap/-/word-wrap-1.2.3.tgz#610636f6b1f703891bd34771ccb17fb93b47079c" integrity sha512-Hz/mrNwitNRh/HUAtM/VT/5VH+ygD6DV7mYKZAtHOrbs8U7lvPS6xf7EJKMF0uW1KJCl0H701g3ZGus+muE5vQ== -wordwrap@0.0.2: - version "0.0.2" - resolved "https://registry.yarnpkg.com/wordwrap/-/wordwrap-0.0.2.tgz#b79669bb42ecb409f83d583cad52ca17eaa1643f" - integrity sha1-t5Zpu0LstAn4PVg8rVLKF+qhZD8= - wordwrap@^1.0.0: version "1.0.0" resolved "https://registry.yarnpkg.com/wordwrap/-/wordwrap-1.0.0.tgz#27584810891456a4171c8d0226441ade90cbcaeb" integrity sha1-J1hIEIkUVqQXHI0CJkQa3pDLyus= -wordwrap@~0.0.2: - version "0.0.3" - resolved "https://registry.yarnpkg.com/wordwrap/-/wordwrap-0.0.3.tgz#a3d5da6cd5c0bc0008d37234bbaf1bed63059107" - integrity sha1-o9XabNXAvAAI03I0u68b7WMFkQc= - -workerpool@6.0.0: - version "6.0.0" - resolved "https://registry.yarnpkg.com/workerpool/-/workerpool-6.0.0.tgz#85aad67fa1a2c8ef9386a1b43539900f61d03d58" - integrity sha512-fU2OcNA/GVAJLLyKUoHkAgIhKb0JoCpSjLC/G2vYKxUjVmQwGbRVeoPJ1a8U4pnVofz4AQV5Y/NEw8oKqxEBtA== - -wrap-ansi@^2.0.0: - version "2.1.0" - resolved "https://registry.yarnpkg.com/wrap-ansi/-/wrap-ansi-2.1.0.tgz#d8fc3d284dd05794fe84973caecdd1cf824fdd85" - integrity sha1-2Pw9KE3QV5T+hJc8rs3Rz4JP3YU= - dependencies: - string-width "^1.0.1" - strip-ansi "^3.0.1" +workerpool@6.1.5: + version "6.1.5" + resolved "https://registry.yarnpkg.com/workerpool/-/workerpool-6.1.5.tgz#0f7cf076b6215fd7e1da903ff6f22ddd1886b581" + integrity sha512-XdKkCK0Zqc6w3iTxLckiuJ81tiD/o5rBE/m+nXpRCB+/Sq4DqkfXZ/x0jW02DG1tGsfUGXbTJyZDP+eu67haSw== wrap-ansi@^5.1.0: version "5.1.0" @@ -15677,10 +7719,10 @@ wrap-ansi@^5.1.0: string-width "^3.0.0" strip-ansi "^5.0.0" -wrap-ansi@^6.2.0: - version "6.2.0" - resolved "https://registry.yarnpkg.com/wrap-ansi/-/wrap-ansi-6.2.0.tgz#e9393ba07102e6c91a3b221478f0257cd2856e53" - integrity sha512-r6lPcBGxZXlIcymEu7InxDMhdW0KDxpLgoFLcguasxCaJ/SOIZwINatK9KY/tf+ZrlywOKU0UDj3ATXUBfxJXA== +wrap-ansi@^7.0.0: + version "7.0.0" + resolved "https://registry.yarnpkg.com/wrap-ansi/-/wrap-ansi-7.0.0.tgz#67e145cff510a6a6984bdf1152911d69d2eb9e43" + integrity sha512-YVGIj2kamLSTxw6NsZjoBxfSwsn0ycdesmc4p+Q21c5zPuZ1pl+NfxVdxPtdHvmNVOQ6XSYG4AUtyt/Fi7D16Q== dependencies: ansi-styles "^4.0.0" string-width "^4.1.0" @@ -15691,33 +7733,17 @@ wrappy@1: resolved "https://registry.yarnpkg.com/wrappy/-/wrappy-1.0.2.tgz#b5243d8f3ec1aa35f1364605bc0d1036e30ab69f" integrity sha1-tSQ9jz7BqjXxNkYFvA0QNuMKtp8= -write-file-atomic@^2.0.0: - version "2.4.3" - resolved "https://registry.yarnpkg.com/write-file-atomic/-/write-file-atomic-2.4.3.tgz#1fd2e9ae1df3e75b8d8c367443c692d4ca81f481" - integrity sha512-GaETH5wwsX+GcnzhPgKcKjJ6M2Cq3/iZp1WyY/X1CSqrW+jVNM9Y7D8EC2sM4ZG/V8wZlSniJnCKWPmBYAucRQ== - dependencies: - graceful-fs "^4.1.11" - imurmurhash "^0.1.4" - signal-exit "^3.0.2" - -write-stream@~0.4.3: - version "0.4.3" - resolved "https://registry.yarnpkg.com/write-stream/-/write-stream-0.4.3.tgz#83cc8c0347d0af6057a93862b4e3ae01de5c81c1" - integrity sha1-g8yMA0fQr2BXqThitOOuAd5cgcE= - dependencies: - readable-stream "~0.0.2" - -ws@7.1.0: - version "7.1.0" - resolved "https://registry.yarnpkg.com/ws/-/ws-7.1.0.tgz#0395646c6fcc3ac56abf61ce1a42039637a6bd98" - integrity sha512-Swie2C4fs7CkwlHu1glMePLYJJsWjzhl1vm3ZaLplD0h7OMkZyZ6kLTB/OagiU923bZrPFXuDTeEqaEN4NWG4g== +write@1.0.3: + version "1.0.3" + resolved "https://registry.yarnpkg.com/write/-/write-1.0.3.tgz#0800e14523b923a387e415123c865616aae0f5c3" + integrity sha512-/lg70HAjtkUgWPVZhZcm+T4hkL8Zbtp1nFNOn3lRrxnlv50SRBv7cR7RqR+GMsd3hUXy9hWBo4CHTbFTcOYwig== dependencies: - async-limiter "^1.0.0" + mkdirp "^0.5.1" -ws@7.4.3: - version "7.4.3" - resolved "https://registry.yarnpkg.com/ws/-/ws-7.4.3.tgz#1f9643de34a543b8edb124bdcbc457ae55a6e5cd" - integrity sha512-hr6vCR76GsossIRsr8OLR9acVVm1jyfEWvhbNjtgPOrfvAlKzvyeg/P6r8RuDjRyrcQoPQT7K0DGEPc7Ae6jzA== +ws@7.2.3: + version "7.2.3" + resolved "https://registry.yarnpkg.com/ws/-/ws-7.2.3.tgz#a5411e1fb04d5ed0efee76d26d5c46d830c39b46" + integrity sha512-HTDl9G9hbkNDk98naoR/cHDws7+EyYMOdL1BmjsZXRUjf7d+MficC4B7HLUPlSiho0vg+CWKrGIt/VJBd1xunQ== ws@7.4.6: version "7.4.6" @@ -15733,45 +7759,19 @@ ws@^3.0.0: safe-buffer "~5.1.0" ultron "~1.1.0" -ws@^5.2.0: - version "5.2.2" - resolved "https://registry.yarnpkg.com/ws/-/ws-5.2.2.tgz#dffef14866b8e8dc9133582514d1befaf96e980f" - integrity sha512-jaHFD6PFv6UgoIVda6qZllptQsMlDEJkTQcybzzXDYM1XO9Y8em691FGMPmM46WGyLU4z9KMgQN+qrux/nhlHA== - dependencies: - async-limiter "~1.0.0" - -ws@^5.2.2: - version "5.2.3" - resolved "https://registry.yarnpkg.com/ws/-/ws-5.2.3.tgz#05541053414921bc29c63bee14b8b0dd50b07b3d" - integrity sha512-jZArVERrMsKUatIdnLzqvcfydI85dvd/Fp1u/VOpfdDWQ4c9qWXe+VIeAbQ5FrDwciAkr+lzofXLz3Kuf26AOA== - dependencies: - async-limiter "~1.0.0" - -ws@^6.0.0: - version "6.2.1" - resolved "https://registry.yarnpkg.com/ws/-/ws-6.2.1.tgz#442fdf0a47ed64f59b6a5d8ff130f4748ed524fb" - integrity sha512-GIyAXC2cB7LjvpgMt9EKS2ldqr0MTrORaleiOno6TweZ6r3TKtoFQWay/2PceJ3RuBasOHzXNn5Lrw1X0bEjqA== - dependencies: - async-limiter "~1.0.0" - -ws@^7.2.1, ws@^7.3.1, ws@^7.4.3: +ws@^7.4.6: version "7.5.3" resolved "https://registry.yarnpkg.com/ws/-/ws-7.5.3.tgz#160835b63c7d97bfab418fc1b8a9fced2ac01a74" integrity sha512-kQ/dHIzuLrS6Je9+uv81ueZomEwH0qVYstcAQ4/Z93K8zeko9gtAbttJWzoC5ukqXY1PpoouV3+VSOqEAFt5wg== -xdg-basedir@^3.0.0: - version "3.0.0" - resolved "https://registry.yarnpkg.com/xdg-basedir/-/xdg-basedir-3.0.0.tgz#496b2cc109eca8dbacfe2dc72b603c17c5870ad4" - integrity sha1-SWsswQnsqNus/i3HK2A8F8WHCtQ= - xhr-request-promise@^0.1.2: - version "0.1.2" - resolved "https://registry.yarnpkg.com/xhr-request-promise/-/xhr-request-promise-0.1.2.tgz#343c44d1ee7726b8648069682d0f840c83b4261d" - integrity sha1-NDxE0e53JrhkgGloLQ+EDIO0Jh0= + version "0.1.3" + resolved "https://registry.yarnpkg.com/xhr-request-promise/-/xhr-request-promise-0.1.3.tgz#2d5f4b16d8c6c893be97f1a62b0ed4cf3ca5f96c" + integrity sha512-YUBytBsuwgitWtdRzXDDkWAXzhdGB8bYm0sSzMPZT7Z2MBjMSTHFsyCT1yCRATY+XC69DUrQraRAEgcoCRaIPg== dependencies: - xhr-request "^1.0.1" + xhr-request "^1.1.0" -xhr-request@^1.0.1: +xhr-request@^1.0.1, xhr-request@^1.1.0: version "1.1.0" resolved "https://registry.yarnpkg.com/xhr-request/-/xhr-request-1.1.0.tgz#f4a7c1868b9f198723444d82dcae317643f2e2ed" integrity sha512-Y7qzEaR3FDtL3fP30k9wO/e+FBnBByZeybKOhASsGP30NIkRAAkKD/sCnLvgEfAIEC1rcmK7YG8f4oEnIrrWzA== @@ -15792,59 +7792,41 @@ xhr2-cookies@1.1.0: cookiejar "^2.1.1" xhr@^2.0.4, xhr@^2.3.3: - version "2.5.0" - resolved "https://registry.yarnpkg.com/xhr/-/xhr-2.5.0.tgz#bed8d1676d5ca36108667692b74b316c496e49dd" - integrity sha512-4nlO/14t3BNUZRXIXfXe+3N6w3s1KoxcJUUURctd64BLRe67E4gRwp4PjywtDY72fXpZ1y6Ch0VZQRY/gMPzzQ== + version "2.6.0" + resolved "https://registry.yarnpkg.com/xhr/-/xhr-2.6.0.tgz#b69d4395e792b4173d6b7df077f0fc5e4e2b249d" + integrity sha512-/eCGLb5rxjx5e3mF1A7s+pLlR6CGyqWN91fv1JgER5mVWg1MZmlhBvy9kjcsOdRk8RrIujotWyJamfyrp+WIcA== dependencies: - global "~4.3.0" + global "~4.4.0" is-function "^1.0.1" parse-headers "^2.0.0" xtend "^4.0.0" -"xml-name-validator@>= 2.0.1 < 3.0.0": - version "2.0.1" - resolved "https://registry.yarnpkg.com/xml-name-validator/-/xml-name-validator-2.0.1.tgz#4d8b8f1eccd3419aa362061becef515e1e559635" - integrity sha1-TYuPHszTQZqjYgYb7O9RXh5VljU= - xmlhttprequest@1.8.0: version "1.8.0" resolved "https://registry.yarnpkg.com/xmlhttprequest/-/xmlhttprequest-1.8.0.tgz#67fe075c5c24fef39f9d65f5f7b7fe75171968fc" integrity sha1-Z/4HXFwk/vOfnWX197f+dRcZaPw= -xss@^1.0.8: - version "1.0.8" - resolved "https://registry.yarnpkg.com/xss/-/xss-1.0.8.tgz#32feb87feb74b3dcd3d404b7a68ababf10700535" - integrity sha512-3MgPdaXV8rfQ/pNn16Eio6VXYPTkqwa0vc7GkiymmY/DqR1SE/7VPAAVZz1GJsJFrllMYO3RHfEaiUGjab6TNw== - dependencies: - commander "^2.20.3" - cssfilter "0.0.10" - -"xtend@>=4.0.0 <4.1.0-0", xtend@^4.0.0, xtend@^4.0.2, xtend@~4.0.0, xtend@~4.0.1: +xtend@^4.0.0, xtend@^4.0.1, xtend@^4.0.2, xtend@~4.0.0: version "4.0.2" resolved "https://registry.yarnpkg.com/xtend/-/xtend-4.0.2.tgz#bb72779f5fa465186b1f438f674fa347fdb5db54" integrity sha512-LKYU1iAXJXUgAXn9URjiu+MWhyUXHsvfp7mcuYm9dSUKK0/CjtrUwFAxD82/mCWbtLsGjFIad0wIsod4zrTAEQ== -y18n@^3.2.1: - version "3.2.2" - resolved "https://registry.yarnpkg.com/y18n/-/y18n-3.2.2.tgz#85c901bd6470ce71fc4bb723ad209b70f7f28696" - integrity sha512-uGZHXkHnhF0XeeAPgnKfPv1bgKAYyVvmNL1xlKsPYZPaIHxGti2hHqvOCQv71XMsLxu1QjergkqogUnms5D3YQ== - y18n@^4.0.0: - version "4.0.0" - resolved "https://registry.yarnpkg.com/y18n/-/y18n-4.0.0.tgz#95ef94f85ecc81d007c264e190a120f0a3c8566b" - integrity sha512-r9S/ZyXu/Xu9q1tYlpsLIsa3EeLXXk0VwlxqTcFRfg9EhMW+17kbt9G0NrgCmhGb5vT2hyhJZLfDGx+7+5Uj/w== + version "4.0.3" + resolved "https://registry.yarnpkg.com/y18n/-/y18n-4.0.3.tgz#b5f259c82cd6e336921efd7bfd8bf560de9eeedf" + integrity sha512-JKhqTOwSrqNA1NY5lSztJ1GrBiUodLMmIZuLiDaMRJ+itFd+ABVE8XBjOvIWL+rSqNDC74LCSFmlb/U4UZ4hJQ== + +y18n@^5.0.5: + version "5.0.8" + resolved "https://registry.yarnpkg.com/y18n/-/y18n-5.0.8.tgz#7f4934d0f7ca8c56f95314939ddcd2dd91ce1d55" + integrity sha512-0pfFzegeDWJHJIAmTLRP2DwHjdF5s7jo9tuztdQxAhINCdvS+3nGINqPd00AphqJR/0LhANUS6/+7SCb98YOfA== yaeti@^0.0.6: version "0.0.6" resolved "https://registry.yarnpkg.com/yaeti/-/yaeti-0.0.6.tgz#f26f484d72684cf42bedfb76970aa1608fbf9577" integrity sha1-8m9ITXJoTPQr7ft2lwqhYI+/lXc= -yallist@^2.1.2: - version "2.1.2" - resolved "https://registry.yarnpkg.com/yallist/-/yallist-2.1.2.tgz#1c11f9218f076089a47dd512f93c6699a6a81d52" - integrity sha1-HBH5IY8HYImkfdUS+TxmmaaoHVI= - -yallist@^3.0.0, yallist@^3.0.3: +yallist@^3.0.0, yallist@^3.0.2, yallist@^3.0.3: version "3.1.1" resolved "https://registry.yarnpkg.com/yallist/-/yallist-3.1.1.tgz#dbb7daf9bfd8bac9ab45ebf602b8cbad0d5d08fd" integrity sha512-a4UGQaWPH59mOXUYnAG2ewncQS4i4F43Tv3JoAM+s2VDAmS9NsK8GpDMLrCHPksFT7h3K6TOoUNn2pb7RoXx4g== @@ -15854,7 +7836,7 @@ yallist@^4.0.0: resolved "https://registry.yarnpkg.com/yallist/-/yallist-4.0.0.tgz#9bb92790d9c0effec63be73519e11a35019a3a72" integrity sha512-3wdGidZyq5PB084XLES5TpOSRA3wjXAlIWMhum2kRcv/41Sn2emQ0dycQW4uZXLejwKvg6EsvbdlVL+FYEct7A== -yargs-parser@13.1.2, yargs-parser@^13.1.2: +yargs-parser@13.1.2, yargs-parser@^13.1.0, yargs-parser@^13.1.2: version "13.1.2" resolved "https://registry.yarnpkg.com/yargs-parser/-/yargs-parser-13.1.2.tgz#130f09702ebaeef2650d54ce6e3e5706f7a4fb38" integrity sha512-3lbsNRf/j+A4QuSZfDRA7HRSfWrzO0YjqTJd5kjAq37Zep1CEgaYmrH9Q3GwPiB9cHyd1Y1UwggGhJGoxipbzg== @@ -15862,44 +7844,15 @@ yargs-parser@13.1.2, yargs-parser@^13.1.2: camelcase "^5.0.0" decamelize "^1.2.0" -yargs-parser@^13.1.0: - version "13.1.1" - resolved "https://registry.yarnpkg.com/yargs-parser/-/yargs-parser-13.1.1.tgz#d26058532aa06d365fe091f6a1fc06b2f7e5eca0" - integrity sha512-oVAVsHz6uFrg3XQheFII8ESO2ssAf9luWuAd6Wexsu4F3OtIW0o8IribPXYrD4WC24LWtPrJlGy87y5udK+dxQ== - dependencies: - camelcase "^5.0.0" - decamelize "^1.2.0" - -yargs-parser@^15.0.1: - version "15.0.1" - resolved "https://registry.yarnpkg.com/yargs-parser/-/yargs-parser-15.0.1.tgz#54786af40b820dcb2fb8025b11b4d659d76323b3" - integrity sha512-0OAMV2mAZQrs3FkNpDQcBk1x5HXb8X4twADss4S0Iuk+2dGnLOE/fRHrsYm542GduMveyA77OF4wrNJuanRCWw== - dependencies: - camelcase "^5.0.0" - decamelize "^1.2.0" - -yargs-parser@^18.1.2: - version "18.1.3" - resolved "https://registry.yarnpkg.com/yargs-parser/-/yargs-parser-18.1.3.tgz#be68c4975c6b2abf469236b0c870362fab09a7b0" - integrity sha512-o50j0JeToy/4K6OZcaQmW6lyXXKhq7csREXcDwk2omFPJEwUNOVtJKvmDr9EI1fAJZUyZcRF7kxGBWmRXudrCQ== - dependencies: - camelcase "^5.0.0" - decamelize "^1.2.0" - -yargs-parser@^2.4.0: - version "2.4.1" - resolved "https://registry.yarnpkg.com/yargs-parser/-/yargs-parser-2.4.1.tgz#85568de3cf150ff49fa51825f03a8c880ddcc5c4" - integrity sha1-hVaN488VD/SfpRgl8DqMiA3cxcQ= - dependencies: - camelcase "^3.0.0" - lodash.assign "^4.0.6" +yargs-parser@20.2.4: + version "20.2.4" + resolved "https://registry.yarnpkg.com/yargs-parser/-/yargs-parser-20.2.4.tgz#b42890f14566796f85ae8e3a25290d205f154a54" + integrity sha512-WOkpgNhPTlE73h4VFAFsOnomJVaovO8VqLDzy5saChRBFQFBoMYirowyW+Q9HB4HFF4Z7VZTiG3iSzJJA29yRA== -yargs-parser@^7.0.0: - version "7.0.0" - resolved "https://registry.yarnpkg.com/yargs-parser/-/yargs-parser-7.0.0.tgz#8d0ac42f16ea55debd332caf4c4038b3e3f5dfd9" - integrity sha1-jQrELxbqVd69MyyvTEA4s+P139k= - dependencies: - camelcase "^4.1.0" +yargs-parser@^20.2.2: + version "20.2.7" + resolved "https://registry.yarnpkg.com/yargs-parser/-/yargs-parser-20.2.7.tgz#61df85c113edfb5a7a4e36eb8aa60ef423cbc90a" + integrity sha512-FiNkvbeHzB/syOjIUxFDCnhSfzAL8R5vs40MgLFBorXACCOAEaWu0gRZl14vG8MR9AOJIZbmkjhusqBYZ3HTHw== yargs-unparser@1.6.0: version "1.6.0" @@ -15910,16 +7863,15 @@ yargs-unparser@1.6.0: lodash "^4.17.15" yargs "^13.3.0" -yargs-unparser@1.6.1: - version "1.6.1" - resolved "https://registry.yarnpkg.com/yargs-unparser/-/yargs-unparser-1.6.1.tgz#bd4b0ee05b4c94d058929c32cb09e3fce71d3c5f" - integrity sha512-qZV14lK9MWsGCmcr7u5oXGH0dbGqZAIxTDrWXZDo5zUr6b6iUmelNKO6x6R1dQT24AH3LgRxJpr8meWy2unolA== +yargs-unparser@2.0.0: + version "2.0.0" + resolved "https://registry.yarnpkg.com/yargs-unparser/-/yargs-unparser-2.0.0.tgz#f131f9226911ae5d9ad38c432fe809366c2325eb" + integrity sha512-7pRTIA9Qc1caZ0bZ6RYRGbHJthJWuakf+WmHK0rVeLkNrrGhfoabBNdue6kdINI6r4if7ocq9aD/n7xwKOdzOA== dependencies: - camelcase "^5.3.1" - decamelize "^1.2.0" - flat "^4.1.0" - is-plain-obj "^1.1.0" - yargs "^14.2.3" + camelcase "^6.0.0" + decamelize "^4.0.0" + flat "^5.0.2" + is-plain-obj "^2.1.0" yargs@13.2.4: version "13.2.4" @@ -15954,94 +7906,18 @@ yargs@13.3.2, yargs@^13.3.0: y18n "^4.0.0" yargs-parser "^13.1.2" -yargs@4.6.0: - version "4.6.0" - resolved "https://registry.yarnpkg.com/yargs/-/yargs-4.6.0.tgz#cb4050c0159bfb6bb649c0f4af550526a84619dc" - integrity sha1-y0BQwBWb+2u2ScD0r1UFJqhGGdw= - dependencies: - camelcase "^2.0.1" - cliui "^3.2.0" - decamelize "^1.1.1" - lodash.assign "^4.0.3" - os-locale "^1.4.0" - pkg-conf "^1.1.2" - read-pkg-up "^1.0.1" - require-main-filename "^1.0.1" - string-width "^1.0.1" - window-size "^0.2.0" - y18n "^3.2.1" - yargs-parser "^2.4.0" - -yargs@^14.2.3: - version "14.2.3" - resolved "https://registry.yarnpkg.com/yargs/-/yargs-14.2.3.tgz#1a1c3edced1afb2a2fea33604bc6d1d8d688a414" - integrity sha512-ZbotRWhF+lkjijC/VhmOT9wSgyBQ7+zr13+YLkhfsSiTriYsMzkTUFP18pFhWwBeMa5gUc1MzbhrO6/VB7c9Xg== - dependencies: - cliui "^5.0.0" - decamelize "^1.2.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 "^15.0.1" - -yargs@^15.3.1: - version "15.4.1" - resolved "https://registry.yarnpkg.com/yargs/-/yargs-15.4.1.tgz#0d87a16de01aee9d8bec2bfbf74f67851730f4f8" - integrity sha512-aePbxDmcYW++PaqBsJ+HYUFwCdv4LVvdnhBy78E57PIor8/OVvhMrADFFEDh8DHDFRv/O9i3lPhsENjO7QX0+A== +yargs@16.2.0: + version "16.2.0" + resolved "https://registry.yarnpkg.com/yargs/-/yargs-16.2.0.tgz#1c82bf0f6b6a66eafce7ef30e376f49a12477f66" + integrity sha512-D1mvvtDG0L5ft/jGWkLpG1+m0eQxOfaBvTNELraWj22wSVUMWxZUvYgJYcKh6jGGIkJFhH4IZPQhR4TKpc8mBw== dependencies: - cliui "^6.0.0" - decamelize "^1.2.0" - find-up "^4.1.0" - get-caller-file "^2.0.1" + cliui "^7.0.2" + escalade "^3.1.1" + get-caller-file "^2.0.5" require-directory "^2.1.1" - require-main-filename "^2.0.0" - set-blocking "^2.0.0" string-width "^4.2.0" - which-module "^2.0.0" - y18n "^4.0.0" - yargs-parser "^18.1.2" - -yargs@^8.0.2: - version "8.0.2" - resolved "https://registry.yarnpkg.com/yargs/-/yargs-8.0.2.tgz#6299a9055b1cefc969ff7e79c1d918dceb22c360" - integrity sha1-YpmpBVsc78lp/355wdkY3Osiw2A= - dependencies: - camelcase "^4.1.0" - cliui "^3.2.0" - decamelize "^1.1.1" - get-caller-file "^1.0.1" - os-locale "^2.0.0" - read-pkg-up "^2.0.0" - require-directory "^2.1.1" - require-main-filename "^1.0.1" - set-blocking "^2.0.0" - string-width "^2.0.0" - which-module "^2.0.0" - y18n "^3.2.1" - yargs-parser "^7.0.0" - -yargs@~3.10.0: - version "3.10.0" - resolved "https://registry.yarnpkg.com/yargs/-/yargs-3.10.0.tgz#f7ee7bd857dd7c1d2d38c0e74efbd681d1431fd1" - integrity sha1-9+572FfdfB0tOMDnTvvWgdFDH9E= - dependencies: - camelcase "^1.0.2" - cliui "^2.1.0" - decamelize "^1.0.0" - window-size "0.1.0" - -yauzl@^2.4.2: - version "2.10.0" - resolved "https://registry.yarnpkg.com/yauzl/-/yauzl-2.10.0.tgz#c7eb17c93e112cb1086fa6d8e51fb0667b79a5f9" - integrity sha1-x+sXyT4RLLEIb6bY5R+wZnt5pfk= - dependencies: - buffer-crc32 "~0.2.3" - fd-slicer "~1.1.0" + y18n "^5.0.5" + yargs-parser "^20.2.2" yn@3.1.1: version "3.1.1" @@ -16052,16 +7928,3 @@ yocto-queue@^0.1.0: version "0.1.0" resolved "https://registry.yarnpkg.com/yocto-queue/-/yocto-queue-0.1.0.tgz#0294eb3dee05028d31ee1a5fa2c556a6aaf10a1b" integrity sha512-rVksvsnNCdJ/ohGc6xgPwyN8eheCxsiLM8mxuE/t/mOVqJewPuO1miLpTHQiRgTKCLexL4MeAFVagts7HmNZ2Q== - -zen-observable-ts@^0.8.21: - version "0.8.21" - resolved "https://registry.yarnpkg.com/zen-observable-ts/-/zen-observable-ts-0.8.21.tgz#85d0031fbbde1eba3cd07d3ba90da241215f421d" - integrity sha512-Yj3yXweRc8LdRMrCC8nIc4kkjWecPAUVh0TI0OUrWXx6aX790vLcDlWca6I4vsyCGH3LpWxq0dJRcMOFoVqmeg== - dependencies: - tslib "^1.9.3" - zen-observable "^0.8.0" - -zen-observable@^0.8.0, zen-observable@^0.8.14: - version "0.8.15" - resolved "https://registry.yarnpkg.com/zen-observable/-/zen-observable-0.8.15.tgz#96415c512d8e3ffd920afd3889604e30b9eaac15" - integrity sha512-PQ2PC7R9rslx84ndNBZB/Dkv8V8fZEpk83RLgXtYd0fwUgEjseMn1Dgajh2x6S8QbZAFa9p2qVCEuYZNgve0dQ== From c373a2d8012635d974fba4a8a66fda69bb513abc Mon Sep 17 00:00:00 2001 From: noiach Date: Mon, 23 Aug 2021 17:25:53 +1000 Subject: [PATCH 12/13] ci: add coverage action --- .github/workflows/main.yml | 7 ++++++- 1 file changed, 6 insertions(+), 1 deletion(-) diff --git a/.github/workflows/main.yml b/.github/workflows/main.yml index aefc5478..a8990fa6 100644 --- a/.github/workflows/main.yml +++ b/.github/workflows/main.yml @@ -35,4 +35,9 @@ jobs: run: yarn format - name: Running tests - run: yarn test + run: yarn coverage + + - name: Coveralls + uses: coverallsapp/github-action@master + with: + github-token: ${{ secrets.GITHUB_TOKEN }} From d445d75b6b0335e94cab707f634dcef83ce3e851 Mon Sep 17 00:00:00 2001 From: noiach Date: Mon, 23 Aug 2021 17:27:36 +1000 Subject: [PATCH 13/13] chore: updated gitignore --- .gitignore | 5 +- cache/solidity-files-cache.json | 1142 ------------------------------- 2 files changed, 3 insertions(+), 1144 deletions(-) delete mode 100644 cache/solidity-files-cache.json diff --git a/.gitignore b/.gitignore index cda5ea30..4d888a4f 100644 --- a/.gitignore +++ b/.gitignore @@ -6,8 +6,9 @@ yarn-error.log* # Build / test artifacts coverage* -artifacts* -dist +artifacts/ +cache/ +dist/ coverageEnv coverage.json .coveralls.yml diff --git a/cache/solidity-files-cache.json b/cache/solidity-files-cache.json deleted file mode 100644 index ebf1b211..00000000 --- a/cache/solidity-files-cache.json +++ /dev/null @@ -1,1142 +0,0 @@ -{ - "_format": "hh-sol-cache-2", - "files": { - "/home/user/github/renproject/solidity/darknode-sol-v2/src/Bindings.sol": { - "lastModificationDate": 1629697399452, - "contentHash": "79790405364d1f5902251728ab35c510", - "sourceName": "src/Bindings.sol", - "solcConfig": { - "version": "0.8.7", - "settings": { - "optimizer": { - "enabled": false, - "runs": 200 - }, - "outputSelection": { - "*": { - "*": [ - "abi", - "evm.bytecode", - "evm.deployedBytecode", - "evm.methodIdentifiers", - "metadata", - "devdoc", - "userdoc", - "storageLayout", - "evm.gasEstimates" - ], - "": [ - "ast" - ] - } - }, - "metadata": { - "useLiteralContent": true - } - } - }, - "imports": [ - "./RenProxyAdmin.sol" - ], - "versionPragmas": [ - "^0.8.7" - ], - "artifacts": [ - "Bindings" - ] - }, - "/home/user/github/renproject/solidity/darknode-sol-v2/src/RenProxyAdmin.sol": { - "lastModificationDate": 1629697415468, - "contentHash": "aa0b27420e8dd93421e10f3ac68c7cac", - "sourceName": "src/RenProxyAdmin.sol", - "solcConfig": { - "version": "0.8.7", - "settings": { - "optimizer": { - "enabled": false, - "runs": 200 - }, - "outputSelection": { - "*": { - "*": [ - "abi", - "evm.bytecode", - "evm.deployedBytecode", - "evm.methodIdentifiers", - "metadata", - "devdoc", - "userdoc", - "storageLayout", - "evm.gasEstimates" - ], - "": [ - "ast" - ] - } - }, - "metadata": { - "useLiteralContent": true - } - } - }, - "imports": [ - "@openzeppelin/contracts/proxy/transparent/ProxyAdmin.sol" - ], - "versionPragmas": [ - "^0.8.7" - ], - "artifacts": [ - "RenProxyAdmin" - ] - }, - "/home/user/github/renproject/solidity/darknode-sol-v2/node_modules/@openzeppelin/contracts/proxy/transparent/ProxyAdmin.sol": { - "lastModificationDate": 1629696809276, - "contentHash": "229133ca3246b191261ba5bdfa2ab91a", - "sourceName": "@openzeppelin/contracts/proxy/transparent/ProxyAdmin.sol", - "solcConfig": { - "version": "0.8.7", - "settings": { - "optimizer": { - "enabled": false, - "runs": 200 - }, - "outputSelection": { - "*": { - "*": [ - "abi", - "evm.bytecode", - "evm.deployedBytecode", - "evm.methodIdentifiers", - "metadata", - "devdoc", - "userdoc", - "storageLayout", - "evm.gasEstimates" - ], - "": [ - "ast" - ] - } - }, - "metadata": { - "useLiteralContent": true - } - } - }, - "imports": [ - "./TransparentUpgradeableProxy.sol", - "../../access/Ownable.sol" - ], - "versionPragmas": [ - "^0.8.0" - ], - "artifacts": [ - "ProxyAdmin" - ] - }, - "/home/user/github/renproject/solidity/darknode-sol-v2/node_modules/@openzeppelin/contracts/proxy/transparent/TransparentUpgradeableProxy.sol": { - "lastModificationDate": 1629696809276, - "contentHash": "9a6e31a38e04c942d525824b7be729f1", - "sourceName": "@openzeppelin/contracts/proxy/transparent/TransparentUpgradeableProxy.sol", - "solcConfig": { - "version": "0.8.7", - "settings": { - "optimizer": { - "enabled": false, - "runs": 200 - }, - "outputSelection": { - "*": { - "*": [ - "abi", - "evm.bytecode", - "evm.deployedBytecode", - "evm.methodIdentifiers", - "metadata", - "devdoc", - "userdoc", - "storageLayout", - "evm.gasEstimates" - ], - "": [ - "ast" - ] - } - }, - "metadata": { - "useLiteralContent": true - } - } - }, - "imports": [ - "../ERC1967/ERC1967Proxy.sol" - ], - "versionPragmas": [ - "^0.8.0" - ], - "artifacts": [ - "TransparentUpgradeableProxy" - ] - }, - "/home/user/github/renproject/solidity/darknode-sol-v2/node_modules/@openzeppelin/contracts/access/Ownable.sol": { - "lastModificationDate": 1629696802084, - "contentHash": "4fe56b59ced59d87df6b796758f62895", - "sourceName": "@openzeppelin/contracts/access/Ownable.sol", - "solcConfig": { - "version": "0.8.7", - "settings": { - "optimizer": { - "enabled": false, - "runs": 200 - }, - "outputSelection": { - "*": { - "*": [ - "abi", - "evm.bytecode", - "evm.deployedBytecode", - "evm.methodIdentifiers", - "metadata", - "devdoc", - "userdoc", - "storageLayout", - "evm.gasEstimates" - ], - "": [ - "ast" - ] - } - }, - "metadata": { - "useLiteralContent": true - } - } - }, - "imports": [ - "../utils/Context.sol" - ], - "versionPragmas": [ - "^0.8.0" - ], - "artifacts": [ - "Ownable" - ] - }, - "/home/user/github/renproject/solidity/darknode-sol-v2/node_modules/@openzeppelin/contracts/proxy/ERC1967/ERC1967Proxy.sol": { - "lastModificationDate": 1629696809276, - "contentHash": "b12e929a2313d46515ebcecdcb157283", - "sourceName": "@openzeppelin/contracts/proxy/ERC1967/ERC1967Proxy.sol", - "solcConfig": { - "version": "0.8.7", - "settings": { - "optimizer": { - "enabled": false, - "runs": 200 - }, - "outputSelection": { - "*": { - "*": [ - "abi", - "evm.bytecode", - "evm.deployedBytecode", - "evm.methodIdentifiers", - "metadata", - "devdoc", - "userdoc", - "storageLayout", - "evm.gasEstimates" - ], - "": [ - "ast" - ] - } - }, - "metadata": { - "useLiteralContent": true - } - } - }, - "imports": [ - "../Proxy.sol", - "./ERC1967Upgrade.sol" - ], - "versionPragmas": [ - "^0.8.0" - ], - "artifacts": [ - "ERC1967Proxy" - ] - }, - "/home/user/github/renproject/solidity/darknode-sol-v2/node_modules/@openzeppelin/contracts/proxy/Proxy.sol": { - "lastModificationDate": 1629696802096, - "contentHash": "39dead889de1329620d1634e0b499e30", - "sourceName": "@openzeppelin/contracts/proxy/Proxy.sol", - "solcConfig": { - "version": "0.8.7", - "settings": { - "optimizer": { - "enabled": false, - "runs": 200 - }, - "outputSelection": { - "*": { - "*": [ - "abi", - "evm.bytecode", - "evm.deployedBytecode", - "evm.methodIdentifiers", - "metadata", - "devdoc", - "userdoc", - "storageLayout", - "evm.gasEstimates" - ], - "": [ - "ast" - ] - } - }, - "metadata": { - "useLiteralContent": true - } - } - }, - "imports": [], - "versionPragmas": [ - "^0.8.0" - ], - "artifacts": [ - "Proxy" - ] - }, - "/home/user/github/renproject/solidity/darknode-sol-v2/node_modules/@openzeppelin/contracts/proxy/ERC1967/ERC1967Upgrade.sol": { - "lastModificationDate": 1629696809276, - "contentHash": "0a0f799e1bf1527d28cfe1bd43fbab7f", - "sourceName": "@openzeppelin/contracts/proxy/ERC1967/ERC1967Upgrade.sol", - "solcConfig": { - "version": "0.8.7", - "settings": { - "optimizer": { - "enabled": false, - "runs": 200 - }, - "outputSelection": { - "*": { - "*": [ - "abi", - "evm.bytecode", - "evm.deployedBytecode", - "evm.methodIdentifiers", - "metadata", - "devdoc", - "userdoc", - "storageLayout", - "evm.gasEstimates" - ], - "": [ - "ast" - ] - } - }, - "metadata": { - "useLiteralContent": true - } - } - }, - "imports": [ - "../beacon/IBeacon.sol", - "../../utils/Address.sol", - "../../utils/StorageSlot.sol" - ], - "versionPragmas": [ - "^0.8.2" - ], - "artifacts": [ - "ERC1967Upgrade" - ] - }, - "/home/user/github/renproject/solidity/darknode-sol-v2/node_modules/@openzeppelin/contracts/proxy/beacon/IBeacon.sol": { - "lastModificationDate": 1629696809276, - "contentHash": "e1e6df7276b048c6b544c757c6e179ec", - "sourceName": "@openzeppelin/contracts/proxy/beacon/IBeacon.sol", - "solcConfig": { - "version": "0.8.7", - "settings": { - "optimizer": { - "enabled": false, - "runs": 200 - }, - "outputSelection": { - "*": { - "*": [ - "abi", - "evm.bytecode", - "evm.deployedBytecode", - "evm.methodIdentifiers", - "metadata", - "devdoc", - "userdoc", - "storageLayout", - "evm.gasEstimates" - ], - "": [ - "ast" - ] - } - }, - "metadata": { - "useLiteralContent": true - } - } - }, - "imports": [], - "versionPragmas": [ - "^0.8.0" - ], - "artifacts": [ - "IBeacon" - ] - }, - "/home/user/github/renproject/solidity/darknode-sol-v2/node_modules/@openzeppelin/contracts/utils/Address.sol": { - "lastModificationDate": 1629696802096, - "contentHash": "c5f6c4e4df069c789e7d84b4c3011913", - "sourceName": "@openzeppelin/contracts/utils/Address.sol", - "solcConfig": { - "version": "0.8.7", - "settings": { - "optimizer": { - "enabled": false, - "runs": 200 - }, - "outputSelection": { - "*": { - "*": [ - "abi", - "evm.bytecode", - "evm.deployedBytecode", - "evm.methodIdentifiers", - "metadata", - "devdoc", - "userdoc", - "storageLayout", - "evm.gasEstimates" - ], - "": [ - "ast" - ] - } - }, - "metadata": { - "useLiteralContent": true - } - } - }, - "imports": [], - "versionPragmas": [ - "^0.8.0" - ], - "artifacts": [ - "Address" - ] - }, - "/home/user/github/renproject/solidity/darknode-sol-v2/node_modules/@openzeppelin/contracts/utils/StorageSlot.sol": { - "lastModificationDate": 1629696802096, - "contentHash": "dcfdd37663042ccb99d67060a9eaebec", - "sourceName": "@openzeppelin/contracts/utils/StorageSlot.sol", - "solcConfig": { - "version": "0.8.7", - "settings": { - "optimizer": { - "enabled": false, - "runs": 200 - }, - "outputSelection": { - "*": { - "*": [ - "abi", - "evm.bytecode", - "evm.deployedBytecode", - "evm.methodIdentifiers", - "metadata", - "devdoc", - "userdoc", - "storageLayout", - "evm.gasEstimates" - ], - "": [ - "ast" - ] - } - }, - "metadata": { - "useLiteralContent": true - } - } - }, - "imports": [], - "versionPragmas": [ - "^0.8.0" - ], - "artifacts": [ - "StorageSlot" - ] - }, - "/home/user/github/renproject/solidity/darknode-sol-v2/node_modules/@openzeppelin/contracts/utils/Context.sol": { - "lastModificationDate": 1629696802096, - "contentHash": "851485d5b925529b1a2f34a0be077891", - "sourceName": "@openzeppelin/contracts/utils/Context.sol", - "solcConfig": { - "version": "0.8.7", - "settings": { - "optimizer": { - "enabled": false, - "runs": 200 - }, - "outputSelection": { - "*": { - "*": [ - "abi", - "evm.bytecode", - "evm.deployedBytecode", - "evm.methodIdentifiers", - "metadata", - "devdoc", - "userdoc", - "storageLayout", - "evm.gasEstimates" - ], - "": [ - "ast" - ] - } - }, - "metadata": { - "useLiteralContent": true - } - } - }, - "imports": [], - "versionPragmas": [ - "^0.8.0" - ], - "artifacts": [ - "Context" - ] - }, - "/home/user/github/renproject/solidity/darknode-sol-v2/src/ClaimRewards.sol": { - "lastModificationDate": 1629697415468, - "contentHash": "521d1bbc3f50aa7a34173154a87b8e65", - "sourceName": "src/ClaimRewards.sol", - "solcConfig": { - "version": "0.8.7", - "settings": { - "optimizer": { - "enabled": false, - "runs": 200 - }, - "outputSelection": { - "*": { - "*": [ - "abi", - "evm.bytecode", - "evm.deployedBytecode", - "evm.methodIdentifiers", - "metadata", - "devdoc", - "userdoc", - "storageLayout", - "evm.gasEstimates" - ], - "": [ - "ast" - ] - } - }, - "metadata": { - "useLiteralContent": true - } - } - }, - "imports": [ - "@openzeppelin/contracts/proxy/transparent/TransparentUpgradeableProxy.sol", - "./ValidString.sol" - ], - "versionPragmas": [ - "^0.8.7" - ], - "artifacts": [ - "ClaimRewardsProxy", - "ClaimRewardsV1" - ] - }, - "/home/user/github/renproject/solidity/darknode-sol-v2/src/ValidString.sol": { - "lastModificationDate": 1629697415468, - "contentHash": "3f44e7a2d9add00676e35599e96056f8", - "sourceName": "src/ValidString.sol", - "solcConfig": { - "version": "0.8.7", - "settings": { - "optimizer": { - "enabled": false, - "runs": 200 - }, - "outputSelection": { - "*": { - "*": [ - "abi", - "evm.bytecode", - "evm.deployedBytecode", - "evm.methodIdentifiers", - "metadata", - "devdoc", - "userdoc", - "storageLayout", - "evm.gasEstimates" - ], - "": [ - "ast" - ] - } - }, - "metadata": { - "useLiteralContent": true - } - } - }, - "imports": [], - "versionPragmas": [ - "^0.8.7" - ], - "artifacts": [ - "ValidString" - ] - }, - "/home/user/github/renproject/solidity/darknode-sol-v2/src/GetOperatorDarknodes.sol": { - "lastModificationDate": 1629697415468, - "contentHash": "08242bd0601f8303e473e3f3e86ecb4c", - "sourceName": "src/GetOperatorDarknodes.sol", - "solcConfig": { - "version": "0.8.7", - "settings": { - "optimizer": { - "enabled": false, - "runs": 200 - }, - "outputSelection": { - "*": { - "*": [ - "abi", - "evm.bytecode", - "evm.deployedBytecode", - "evm.methodIdentifiers", - "metadata", - "devdoc", - "userdoc", - "storageLayout", - "evm.gasEstimates" - ], - "": [ - "ast" - ] - } - }, - "metadata": { - "useLiteralContent": true - } - } - }, - "imports": [], - "versionPragmas": [ - "^0.8.7" - ], - "artifacts": [ - "GetOperatorDarknodes", - "IDarknodeRegistry" - ] - }, - "/home/user/github/renproject/solidity/darknode-sol-v2/src/Protocol.sol": { - "lastModificationDate": 1629697415468, - "contentHash": "fabd08492ee03e1a7d56c32e57bf17cf", - "sourceName": "src/Protocol.sol", - "solcConfig": { - "version": "0.8.7", - "settings": { - "optimizer": { - "enabled": false, - "runs": 200 - }, - "outputSelection": { - "*": { - "*": [ - "abi", - "evm.bytecode", - "evm.deployedBytecode", - "evm.methodIdentifiers", - "metadata", - "devdoc", - "userdoc", - "storageLayout", - "evm.gasEstimates" - ], - "": [ - "ast" - ] - } - }, - "metadata": { - "useLiteralContent": true - } - } - }, - "imports": [ - "@openzeppelin/contracts-upgradeable/access/AccessControlEnumerableUpgradeable.sol", - "@openzeppelin/contracts-upgradeable/access/AccessControlUpgradeable.sol", - "@openzeppelin/contracts-upgradeable/proxy/utils/Initializable.sol" - ], - "versionPragmas": [ - "^0.8.7" - ], - "artifacts": [ - "Protocol" - ] - }, - "/home/user/github/renproject/solidity/darknode-sol-v2/node_modules/@openzeppelin/contracts-upgradeable/access/AccessControlEnumerableUpgradeable.sol": { - "lastModificationDate": 1629696802036, - "contentHash": "564330c1f0463b7bfcb1d21e2b6242e6", - "sourceName": "@openzeppelin/contracts-upgradeable/access/AccessControlEnumerableUpgradeable.sol", - "solcConfig": { - "version": "0.8.7", - "settings": { - "optimizer": { - "enabled": false, - "runs": 200 - }, - "outputSelection": { - "*": { - "*": [ - "abi", - "evm.bytecode", - "evm.deployedBytecode", - "evm.methodIdentifiers", - "metadata", - "devdoc", - "userdoc", - "storageLayout", - "evm.gasEstimates" - ], - "": [ - "ast" - ] - } - }, - "metadata": { - "useLiteralContent": true - } - } - }, - "imports": [ - "./IAccessControlEnumerableUpgradeable.sol", - "./AccessControlUpgradeable.sol", - "../utils/structs/EnumerableSetUpgradeable.sol", - "../proxy/utils/Initializable.sol" - ], - "versionPragmas": [ - "^0.8.0" - ], - "artifacts": [ - "AccessControlEnumerableUpgradeable" - ] - }, - "/home/user/github/renproject/solidity/darknode-sol-v2/node_modules/@openzeppelin/contracts-upgradeable/access/AccessControlUpgradeable.sol": { - "lastModificationDate": 1629696802044, - "contentHash": "d512f0f42dd210288ac9843654910074", - "sourceName": "@openzeppelin/contracts-upgradeable/access/AccessControlUpgradeable.sol", - "solcConfig": { - "version": "0.8.7", - "settings": { - "optimizer": { - "enabled": false, - "runs": 200 - }, - "outputSelection": { - "*": { - "*": [ - "abi", - "evm.bytecode", - "evm.deployedBytecode", - "evm.methodIdentifiers", - "metadata", - "devdoc", - "userdoc", - "storageLayout", - "evm.gasEstimates" - ], - "": [ - "ast" - ] - } - }, - "metadata": { - "useLiteralContent": true - } - } - }, - "imports": [ - "./IAccessControlUpgradeable.sol", - "../utils/ContextUpgradeable.sol", - "../utils/StringsUpgradeable.sol", - "../utils/introspection/ERC165Upgradeable.sol", - "../proxy/utils/Initializable.sol" - ], - "versionPragmas": [ - "^0.8.0" - ], - "artifacts": [ - "AccessControlUpgradeable" - ] - }, - "/home/user/github/renproject/solidity/darknode-sol-v2/node_modules/@openzeppelin/contracts-upgradeable/proxy/utils/Initializable.sol": { - "lastModificationDate": 1629696809148, - "contentHash": "cbb8386f0120d46d66ff42dffbbc16c1", - "sourceName": "@openzeppelin/contracts-upgradeable/proxy/utils/Initializable.sol", - "solcConfig": { - "version": "0.8.7", - "settings": { - "optimizer": { - "enabled": false, - "runs": 200 - }, - "outputSelection": { - "*": { - "*": [ - "abi", - "evm.bytecode", - "evm.deployedBytecode", - "evm.methodIdentifiers", - "metadata", - "devdoc", - "userdoc", - "storageLayout", - "evm.gasEstimates" - ], - "": [ - "ast" - ] - } - }, - "metadata": { - "useLiteralContent": true - } - } - }, - "imports": [], - "versionPragmas": [ - "^0.8.0" - ], - "artifacts": [ - "Initializable" - ] - }, - "/home/user/github/renproject/solidity/darknode-sol-v2/node_modules/@openzeppelin/contracts-upgradeable/utils/structs/EnumerableSetUpgradeable.sol": { - "lastModificationDate": 1629696809152, - "contentHash": "3281c8bbb6f992e3b738a4e249b51e4c", - "sourceName": "@openzeppelin/contracts-upgradeable/utils/structs/EnumerableSetUpgradeable.sol", - "solcConfig": { - "version": "0.8.7", - "settings": { - "optimizer": { - "enabled": false, - "runs": 200 - }, - "outputSelection": { - "*": { - "*": [ - "abi", - "evm.bytecode", - "evm.deployedBytecode", - "evm.methodIdentifiers", - "metadata", - "devdoc", - "userdoc", - "storageLayout", - "evm.gasEstimates" - ], - "": [ - "ast" - ] - } - }, - "metadata": { - "useLiteralContent": true - } - } - }, - "imports": [], - "versionPragmas": [ - "^0.8.0" - ], - "artifacts": [ - "EnumerableSetUpgradeable" - ] - }, - "/home/user/github/renproject/solidity/darknode-sol-v2/node_modules/@openzeppelin/contracts-upgradeable/utils/ContextUpgradeable.sol": { - "lastModificationDate": 1629696802084, - "contentHash": "3eaa562e66c40d85f919cc6ee5059ebe", - "sourceName": "@openzeppelin/contracts-upgradeable/utils/ContextUpgradeable.sol", - "solcConfig": { - "version": "0.8.7", - "settings": { - "optimizer": { - "enabled": false, - "runs": 200 - }, - "outputSelection": { - "*": { - "*": [ - "abi", - "evm.bytecode", - "evm.deployedBytecode", - "evm.methodIdentifiers", - "metadata", - "devdoc", - "userdoc", - "storageLayout", - "evm.gasEstimates" - ], - "": [ - "ast" - ] - } - }, - "metadata": { - "useLiteralContent": true - } - } - }, - "imports": [ - "../proxy/utils/Initializable.sol" - ], - "versionPragmas": [ - "^0.8.0" - ], - "artifacts": [ - "ContextUpgradeable" - ] - }, - "/home/user/github/renproject/solidity/darknode-sol-v2/node_modules/@openzeppelin/contracts-upgradeable/utils/StringsUpgradeable.sol": { - "lastModificationDate": 1629696802084, - "contentHash": "80d3ad01fbd728e8a0dcde979c610377", - "sourceName": "@openzeppelin/contracts-upgradeable/utils/StringsUpgradeable.sol", - "solcConfig": { - "version": "0.8.7", - "settings": { - "optimizer": { - "enabled": false, - "runs": 200 - }, - "outputSelection": { - "*": { - "*": [ - "abi", - "evm.bytecode", - "evm.deployedBytecode", - "evm.methodIdentifiers", - "metadata", - "devdoc", - "userdoc", - "storageLayout", - "evm.gasEstimates" - ], - "": [ - "ast" - ] - } - }, - "metadata": { - "useLiteralContent": true - } - } - }, - "imports": [], - "versionPragmas": [ - "^0.8.0" - ], - "artifacts": [ - "StringsUpgradeable" - ] - }, - "/home/user/github/renproject/solidity/darknode-sol-v2/node_modules/@openzeppelin/contracts-upgradeable/utils/introspection/ERC165Upgradeable.sol": { - "lastModificationDate": 1629696809152, - "contentHash": "3649e7528117ffc7d8a3ccf199b0c6d8", - "sourceName": "@openzeppelin/contracts-upgradeable/utils/introspection/ERC165Upgradeable.sol", - "solcConfig": { - "version": "0.8.7", - "settings": { - "optimizer": { - "enabled": false, - "runs": 200 - }, - "outputSelection": { - "*": { - "*": [ - "abi", - "evm.bytecode", - "evm.deployedBytecode", - "evm.methodIdentifiers", - "metadata", - "devdoc", - "userdoc", - "storageLayout", - "evm.gasEstimates" - ], - "": [ - "ast" - ] - } - }, - "metadata": { - "useLiteralContent": true - } - } - }, - "imports": [ - "./IERC165Upgradeable.sol", - "../../proxy/utils/Initializable.sol" - ], - "versionPragmas": [ - "^0.8.0" - ], - "artifacts": [ - "ERC165Upgradeable" - ] - }, - "/home/user/github/renproject/solidity/darknode-sol-v2/node_modules/@openzeppelin/contracts-upgradeable/utils/introspection/IERC165Upgradeable.sol": { - "lastModificationDate": 1629696809152, - "contentHash": "4db71815975139b4bcedb3b615131302", - "sourceName": "@openzeppelin/contracts-upgradeable/utils/introspection/IERC165Upgradeable.sol", - "solcConfig": { - "version": "0.8.7", - "settings": { - "optimizer": { - "enabled": false, - "runs": 200 - }, - "outputSelection": { - "*": { - "*": [ - "abi", - "evm.bytecode", - "evm.deployedBytecode", - "evm.methodIdentifiers", - "metadata", - "devdoc", - "userdoc", - "storageLayout", - "evm.gasEstimates" - ], - "": [ - "ast" - ] - } - }, - "metadata": { - "useLiteralContent": true - } - } - }, - "imports": [], - "versionPragmas": [ - "^0.8.0" - ], - "artifacts": [ - "IERC165Upgradeable" - ] - }, - "/home/user/github/renproject/solidity/darknode-sol-v2/node_modules/@openzeppelin/contracts-upgradeable/access/IAccessControlEnumerableUpgradeable.sol": { - "lastModificationDate": 1629696802024, - "contentHash": "91e654b7cc2afc1bb19144cf3634d65a", - "sourceName": "@openzeppelin/contracts-upgradeable/access/IAccessControlEnumerableUpgradeable.sol", - "solcConfig": { - "version": "0.8.7", - "settings": { - "optimizer": { - "enabled": false, - "runs": 200 - }, - "outputSelection": { - "*": { - "*": [ - "abi", - "evm.bytecode", - "evm.deployedBytecode", - "evm.methodIdentifiers", - "metadata", - "devdoc", - "userdoc", - "storageLayout", - "evm.gasEstimates" - ], - "": [ - "ast" - ] - } - }, - "metadata": { - "useLiteralContent": true - } - } - }, - "imports": [ - "./IAccessControlUpgradeable.sol" - ], - "versionPragmas": [ - "^0.8.0" - ], - "artifacts": [ - "IAccessControlEnumerableUpgradeable" - ] - }, - "/home/user/github/renproject/solidity/darknode-sol-v2/node_modules/@openzeppelin/contracts-upgradeable/access/IAccessControlUpgradeable.sol": { - "lastModificationDate": 1629696802024, - "contentHash": "1712dd281e6d713718f5f08fbb020589", - "sourceName": "@openzeppelin/contracts-upgradeable/access/IAccessControlUpgradeable.sol", - "solcConfig": { - "version": "0.8.7", - "settings": { - "optimizer": { - "enabled": false, - "runs": 200 - }, - "outputSelection": { - "*": { - "*": [ - "abi", - "evm.bytecode", - "evm.deployedBytecode", - "evm.methodIdentifiers", - "metadata", - "devdoc", - "userdoc", - "storageLayout", - "evm.gasEstimates" - ], - "": [ - "ast" - ] - } - }, - "metadata": { - "useLiteralContent": true - } - } - }, - "imports": [], - "versionPragmas": [ - "^0.8.0" - ], - "artifacts": [ - "IAccessControlUpgradeable" - ] - } - } -}