From 4e8acf794d53911b784ed6b251002067a4f2a473 Mon Sep 17 00:00:00 2001 From: AugustoL Date: Mon, 19 Sep 2022 13:49:00 -0300 Subject: [PATCH 01/33] refactor(contracts): finally remove daostack contracts --- contracts/daostack/controller/Avatar.sol | 142 --- contracts/daostack/controller/Controller.sol | 585 ------------- .../controller/ControllerInterface.sol | 219 ----- contracts/daostack/controller/DAOToken.sol | 45 - contracts/daostack/controller/Reputation.sol | 181 ---- contracts/daostack/controller/UController.sol | 633 -------------- .../GlobalConstraintInterface.sol | 27 - .../daostack/globalConstraints/TokenCapGC.sol | 83 -- contracts/daostack/libs/RealMath.sol | 82 -- contracts/daostack/libs/SafeERC20.sol | 85 -- .../daostack/test/AbsoluteVoteExecuteMock.sol | 100 --- contracts/daostack/test/Debug.sol | 15 - .../test/GenesisProtocolCallbacksMock.sol | 111 --- contracts/daostack/test/RealMathTester.sol | 20 - .../universalSchemes/ContributionReward.sol | 470 ---------- .../universalSchemes/SchemeRegistrar.sol | 191 ---- .../universalSchemes/UniversalScheme.sol | 18 - .../UniversalSchemeInterface.sol | 7 - contracts/daostack/utils/Redeemer.sol | 158 ---- .../daostack/votingMachines/AbsoluteVote.sol | 292 ------- .../DXDVotingMachineCallbacks.sol | 62 -- .../votingMachines/GenesisProtocol.sol | 289 ------- .../votingMachines/GenesisProtocolLogic.sol | 817 ------------------ .../votingMachines/IntVoteInterface.sol | 90 -- .../ProposalExecuteInterface.sol | 5 - .../daostack/votingMachines/QuorumVote.sol | 44 - .../votingMachines/VotingMachineCallbacks.sol | 80 -- .../VotingMachineCallbacksInterface.sol | 30 - 28 files changed, 4881 deletions(-) delete mode 100644 contracts/daostack/controller/Avatar.sol delete mode 100644 contracts/daostack/controller/Controller.sol delete mode 100644 contracts/daostack/controller/ControllerInterface.sol delete mode 100644 contracts/daostack/controller/DAOToken.sol delete mode 100644 contracts/daostack/controller/Reputation.sol delete mode 100644 contracts/daostack/controller/UController.sol delete mode 100644 contracts/daostack/globalConstraints/GlobalConstraintInterface.sol delete mode 100644 contracts/daostack/globalConstraints/TokenCapGC.sol delete mode 100644 contracts/daostack/libs/RealMath.sol delete mode 100644 contracts/daostack/libs/SafeERC20.sol delete mode 100644 contracts/daostack/test/AbsoluteVoteExecuteMock.sol delete mode 100644 contracts/daostack/test/Debug.sol delete mode 100644 contracts/daostack/test/GenesisProtocolCallbacksMock.sol delete mode 100644 contracts/daostack/test/RealMathTester.sol delete mode 100644 contracts/daostack/universalSchemes/ContributionReward.sol delete mode 100644 contracts/daostack/universalSchemes/SchemeRegistrar.sol delete mode 100644 contracts/daostack/universalSchemes/UniversalScheme.sol delete mode 100644 contracts/daostack/universalSchemes/UniversalSchemeInterface.sol delete mode 100644 contracts/daostack/utils/Redeemer.sol delete mode 100644 contracts/daostack/votingMachines/AbsoluteVote.sol delete mode 100644 contracts/daostack/votingMachines/DXDVotingMachineCallbacks.sol delete mode 100644 contracts/daostack/votingMachines/GenesisProtocol.sol delete mode 100644 contracts/daostack/votingMachines/GenesisProtocolLogic.sol delete mode 100644 contracts/daostack/votingMachines/IntVoteInterface.sol delete mode 100644 contracts/daostack/votingMachines/ProposalExecuteInterface.sol delete mode 100644 contracts/daostack/votingMachines/QuorumVote.sol delete mode 100644 contracts/daostack/votingMachines/VotingMachineCallbacks.sol delete mode 100644 contracts/daostack/votingMachines/VotingMachineCallbacksInterface.sol diff --git a/contracts/daostack/controller/Avatar.sol b/contracts/daostack/controller/Avatar.sol deleted file mode 100644 index c45bb864..00000000 --- a/contracts/daostack/controller/Avatar.sol +++ /dev/null @@ -1,142 +0,0 @@ -pragma solidity ^0.5.4; - -import "./Reputation.sol"; -import "./DAOToken.sol"; -import "openzeppelin-solidity/contracts/ownership/Ownable.sol"; -import "openzeppelin-solidity/contracts/token/ERC20/IERC20.sol"; -import "../libs/SafeERC20.sol"; - -/** - * @title An Avatar holds tokens, reputation and ether for a controller - */ -contract Avatar is Ownable { - using SafeERC20 for address; - - string public orgName; - DAOToken public nativeToken; - Reputation public nativeReputation; - - event GenericCall(address indexed _contract, bytes _data, uint256 _value, bool _success); - event SendEther(uint256 _amountInWei, address indexed _to); - event ExternalTokenTransfer(address indexed _externalToken, address indexed _to, uint256 _value); - event ExternalTokenTransferFrom(address indexed _externalToken, address _from, address _to, uint256 _value); - event ExternalTokenApproval(address indexed _externalToken, address _spender, uint256 _value); - event ReceiveEther(address indexed _sender, uint256 _value); - event MetaData(string _metaData); - - /** - * @dev the constructor takes organization name, native token and reputation system - and creates an avatar for a controller - */ - constructor( - string memory _orgName, - DAOToken _nativeToken, - Reputation _nativeReputation - ) public { - orgName = _orgName; - nativeToken = _nativeToken; - nativeReputation = _nativeReputation; - } - - /** - * @dev enables an avatar to receive ethers - */ - function() external payable { - emit ReceiveEther(msg.sender, msg.value); - } - - /** - * @dev perform a generic call to an arbitrary contract - * @param _contract the contract's address to call - * @param _data ABI-encoded contract call to call `_contract` address. - * @param _value value (ETH) to transfer with the transaction - * @return bool success or fail - * bytes - the return bytes of the called contract's function. - */ - function genericCall( - address _contract, - bytes memory _data, - uint256 _value - ) public onlyOwner returns (bool success, bytes memory returnValue) { - // solhint-disable-next-line avoid-call-value - (success, returnValue) = _contract.call.value(_value)(_data); - emit GenericCall(_contract, _data, _value, success); - } - - /** - * @dev send ethers from the avatar's wallet - * @param _amountInWei amount to send in Wei units - * @param _to send the ethers to this address - * @return bool which represents success - */ - function sendEther(uint256 _amountInWei, address payable _to) public onlyOwner returns (bool) { - (bool sent, bytes memory data) = _to.call.value(_amountInWei)(""); - require(sent, "eth transfer failed"); - emit SendEther(_amountInWei, _to); - return sent; - } - - /** - * @dev external token transfer - * @param _externalToken the token contract - * @param _to the destination address - * @param _value the amount of tokens to transfer - * @return bool which represents success - */ - function externalTokenTransfer( - IERC20 _externalToken, - address _to, - uint256 _value - ) public onlyOwner returns (bool) { - address(_externalToken).safeTransfer(_to, _value); - emit ExternalTokenTransfer(address(_externalToken), _to, _value); - return true; - } - - /** - * @dev external token transfer from a specific account - * @param _externalToken the token contract - * @param _from the account to spend token from - * @param _to the destination address - * @param _value the amount of tokens to transfer - * @return bool which represents success - */ - function externalTokenTransferFrom( - IERC20 _externalToken, - address _from, - address _to, - uint256 _value - ) public onlyOwner returns (bool) { - address(_externalToken).safeTransferFrom(_from, _to, _value); - emit ExternalTokenTransferFrom(address(_externalToken), _from, _to, _value); - return true; - } - - /** - * @dev externalTokenApproval approve the spender address to spend a specified amount of tokens - * on behalf of msg.sender. - * @param _externalToken the address of the Token Contract - * @param _spender address - * @param _value the amount of ether (in Wei) which the approval is referring to. - * @return bool which represents a success - */ - function externalTokenApproval( - IERC20 _externalToken, - address _spender, - uint256 _value - ) public onlyOwner returns (bool) { - address(_externalToken).safeApprove(_spender, _value); - emit ExternalTokenApproval(address(_externalToken), _spender, _value); - return true; - } - - /** - * @dev metaData emits an event with a string, should contain the hash of some meta data. - * @param _metaData a string representing a hash of the meta data - * @return bool which represents a success - */ - function metaData(string memory _metaData) public onlyOwner returns (bool) { - emit MetaData(_metaData); - return true; - } -} diff --git a/contracts/daostack/controller/Controller.sol b/contracts/daostack/controller/Controller.sol deleted file mode 100644 index d7aacc57..00000000 --- a/contracts/daostack/controller/Controller.sol +++ /dev/null @@ -1,585 +0,0 @@ -pragma solidity ^0.5.4; - -import "./Avatar.sol"; -import "../globalConstraints/GlobalConstraintInterface.sol"; -import "./ControllerInterface.sol"; - -/** - * @title Controller contract - * @dev A controller controls the organizations tokens, reputation and avatar. - * It is subject to a set of schemes and constraints that determine its behavior. - * Each scheme has it own parameters and operation permissions. - */ -contract Controller is ControllerInterface { - struct Scheme { - bytes32 paramsHash; // a hash "configuration" of the scheme - bytes4 permissions; // A bitwise flags of permissions, - // All 0: Not registered, - // 1st bit: Flag if the scheme is registered, - // 2nd bit: Scheme can register other schemes - // 3rd bit: Scheme can add/remove global constraints - // 4th bit: Scheme can upgrade the controller - // 5th bit: Scheme can call genericCall on behalf of - // the organization avatar - } - - struct GlobalConstraint { - address gcAddress; - bytes32 params; - } - - struct GlobalConstraintRegister { - bool isRegistered; //is registered - uint256 index; //index at globalConstraints - } - - mapping(address => Scheme) public schemes; - - Avatar public avatar; - DAOToken public nativeToken; - Reputation public nativeReputation; - // newController will point to the new controller after the present controller is upgraded - address public newController; - // globalConstraintsPre that determine pre conditions for all actions on the controller - - GlobalConstraint[] public globalConstraintsPre; - // globalConstraintsPost that determine post conditions for all actions on the controller - GlobalConstraint[] public globalConstraintsPost; - // globalConstraintsRegisterPre indicate if a globalConstraints is registered as a pre global constraint - mapping(address => GlobalConstraintRegister) public globalConstraintsRegisterPre; - // globalConstraintsRegisterPost indicate if a globalConstraints is registered as a post global constraint - mapping(address => GlobalConstraintRegister) public globalConstraintsRegisterPost; - - event MintReputation(address indexed _sender, address indexed _to, uint256 _amount); - event BurnReputation(address indexed _sender, address indexed _from, uint256 _amount); - event MintTokens(address indexed _sender, address indexed _beneficiary, uint256 _amount); - event RegisterScheme(address indexed _sender, address indexed _scheme); - event UnregisterScheme(address indexed _sender, address indexed _scheme); - event UpgradeController(address indexed _oldController, address _newController); - - event AddGlobalConstraint( - address indexed _globalConstraint, - bytes32 _params, - GlobalConstraintInterface.CallPhase _when - ); - - event RemoveGlobalConstraint(address indexed _globalConstraint, uint256 _index, bool _isPre); - - constructor(Avatar _avatar) public { - avatar = _avatar; - nativeToken = avatar.nativeToken(); - nativeReputation = avatar.nativeReputation(); - schemes[msg.sender] = Scheme({paramsHash: bytes32(0), permissions: bytes4(0x0000001F)}); - } - - // Do not allow mistaken calls: - // solhint-disable-next-line payable-fallback - function() external { - revert(); - } - - // Modifiers: - modifier onlyRegisteredScheme() { - require(schemes[msg.sender].permissions & bytes4(0x00000001) == bytes4(0x00000001)); - _; - } - - modifier onlyRegisteringSchemes() { - require(schemes[msg.sender].permissions & bytes4(0x00000002) == bytes4(0x00000002)); - _; - } - - modifier onlyGlobalConstraintsScheme() { - require(schemes[msg.sender].permissions & bytes4(0x00000004) == bytes4(0x00000004)); - _; - } - - modifier onlyUpgradingScheme() { - require(schemes[msg.sender].permissions & bytes4(0x00000008) == bytes4(0x00000008)); - _; - } - - modifier onlyGenericCallScheme() { - require(schemes[msg.sender].permissions & bytes4(0x00000010) == bytes4(0x00000010)); - _; - } - - modifier onlyMetaDataScheme() { - require(schemes[msg.sender].permissions & bytes4(0x00000010) == bytes4(0x00000010)); - _; - } - - modifier onlySubjectToConstraint(bytes32 func) { - uint256 idx; - for (idx = 0; idx < globalConstraintsPre.length; idx++) { - require( - (GlobalConstraintInterface(globalConstraintsPre[idx].gcAddress)).pre( - msg.sender, - globalConstraintsPre[idx].params, - func - ) - ); - } - _; - for (idx = 0; idx < globalConstraintsPost.length; idx++) { - require( - (GlobalConstraintInterface(globalConstraintsPost[idx].gcAddress)).post( - msg.sender, - globalConstraintsPost[idx].params, - func - ) - ); - } - } - - modifier isAvatarValid(address _avatar) { - require(_avatar == address(avatar)); - _; - } - - /** - * @dev Mint `_amount` of reputation that are assigned to `_to` . - * @param _amount amount of reputation to mint - * @param _to beneficiary address - * @return bool which represents a success - */ - function mintReputation( - uint256 _amount, - address _to, - address _avatar - ) external onlyRegisteredScheme onlySubjectToConstraint("mintReputation") isAvatarValid(_avatar) returns (bool) { - emit MintReputation(msg.sender, _to, _amount); - return nativeReputation.mint(_to, _amount); - } - - /** - * @dev Burns `_amount` of reputation from `_from` - * @param _amount amount of reputation to burn - * @param _from The address that will lose the reputation - * @return bool which represents a success - */ - function burnReputation( - uint256 _amount, - address _from, - address _avatar - ) external onlyRegisteredScheme onlySubjectToConstraint("burnReputation") isAvatarValid(_avatar) returns (bool) { - emit BurnReputation(msg.sender, _from, _amount); - return nativeReputation.burn(_from, _amount); - } - - /** - * @dev mint tokens . - * @param _amount amount of token to mint - * @param _beneficiary beneficiary address - * @return bool which represents a success - */ - function mintTokens( - uint256 _amount, - address _beneficiary, - address _avatar - ) external onlyRegisteredScheme onlySubjectToConstraint("mintTokens") isAvatarValid(_avatar) returns (bool) { - emit MintTokens(msg.sender, _beneficiary, _amount); - return nativeToken.mint(_beneficiary, _amount); - } - - /** - * @dev register a scheme - * @param _scheme the address of the scheme - * @param _paramsHash a hashed configuration of the usage of the scheme - * @param _permissions the permissions the new scheme will have - * @return bool which represents a success - */ - function registerScheme( - address _scheme, - bytes32 _paramsHash, - bytes4 _permissions, - address _avatar - ) external onlyRegisteringSchemes onlySubjectToConstraint("registerScheme") isAvatarValid(_avatar) returns (bool) { - Scheme memory scheme = schemes[_scheme]; - - // Check scheme has at least the permissions it is changing, and at least the current permissions: - // Implementation is a bit messy. One must recall logic-circuits ^^ - - // produces non-zero if sender does not have all of the perms that are changing between old and new - require( - bytes4(0x0000001f) & (_permissions ^ scheme.permissions) & (~schemes[msg.sender].permissions) == bytes4(0) - ); - - // produces non-zero if sender does not have all of the perms in the old scheme - require(bytes4(0x0000001f) & (scheme.permissions & (~schemes[msg.sender].permissions)) == bytes4(0)); - - // Add or change the scheme: - schemes[_scheme].paramsHash = _paramsHash; - schemes[_scheme].permissions = _permissions | bytes4(0x00000001); - emit RegisterScheme(msg.sender, _scheme); - return true; - } - - /** - * @dev unregister a scheme - * @param _scheme the address of the scheme - * @return bool which represents a success - */ - function unregisterScheme(address _scheme, address _avatar) - external - onlyRegisteringSchemes - onlySubjectToConstraint("unregisterScheme") - isAvatarValid(_avatar) - returns (bool) - { - //check if the scheme is registered - if (_isSchemeRegistered(_scheme) == false) { - return false; - } - // Check the unregistering scheme has enough permissions: - require(bytes4(0x0000001f) & (schemes[_scheme].permissions & (~schemes[msg.sender].permissions)) == bytes4(0)); - - // Unregister: - emit UnregisterScheme(msg.sender, _scheme); - delete schemes[_scheme]; - return true; - } - - /** - * @dev unregister the caller's scheme - * @return bool which represents a success - */ - function unregisterSelf(address _avatar) external isAvatarValid(_avatar) returns (bool) { - if (_isSchemeRegistered(msg.sender) == false) { - return false; - } - delete schemes[msg.sender]; - emit UnregisterScheme(msg.sender, msg.sender); - return true; - } - - /** - * @dev add or update Global Constraint - * @param _globalConstraint the address of the global constraint to be added. - * @param _params the constraint parameters hash. - * @return bool which represents a success - */ - function addGlobalConstraint( - address _globalConstraint, - bytes32 _params, - address _avatar - ) external onlyGlobalConstraintsScheme isAvatarValid(_avatar) returns (bool) { - GlobalConstraintInterface.CallPhase when = GlobalConstraintInterface(_globalConstraint).when(); - if ( - (when == GlobalConstraintInterface.CallPhase.Pre) || - (when == GlobalConstraintInterface.CallPhase.PreAndPost) - ) { - if (!globalConstraintsRegisterPre[_globalConstraint].isRegistered) { - globalConstraintsPre.push(GlobalConstraint(_globalConstraint, _params)); - globalConstraintsRegisterPre[_globalConstraint] = GlobalConstraintRegister( - true, - globalConstraintsPre.length - 1 - ); - } else { - globalConstraintsPre[globalConstraintsRegisterPre[_globalConstraint].index].params = _params; - } - } - if ( - (when == GlobalConstraintInterface.CallPhase.Post) || - (when == GlobalConstraintInterface.CallPhase.PreAndPost) - ) { - if (!globalConstraintsRegisterPost[_globalConstraint].isRegistered) { - globalConstraintsPost.push(GlobalConstraint(_globalConstraint, _params)); - globalConstraintsRegisterPost[_globalConstraint] = GlobalConstraintRegister( - true, - globalConstraintsPost.length - 1 - ); - } else { - globalConstraintsPost[globalConstraintsRegisterPost[_globalConstraint].index].params = _params; - } - } - emit AddGlobalConstraint(_globalConstraint, _params, when); - return true; - } - - /** - * @dev remove Global Constraint - * @param _globalConstraint the address of the global constraint to be remove. - * @return bool which represents a success - */ - // solhint-disable-next-line code-complexity - function removeGlobalConstraint(address _globalConstraint, address _avatar) - external - onlyGlobalConstraintsScheme - isAvatarValid(_avatar) - returns (bool) - { - GlobalConstraintRegister memory globalConstraintRegister; - GlobalConstraint memory globalConstraint; - GlobalConstraintInterface.CallPhase when = GlobalConstraintInterface(_globalConstraint).when(); - bool retVal = false; - - if ( - (when == GlobalConstraintInterface.CallPhase.Pre) || - (when == GlobalConstraintInterface.CallPhase.PreAndPost) - ) { - globalConstraintRegister = globalConstraintsRegisterPre[_globalConstraint]; - if (globalConstraintRegister.isRegistered) { - if (globalConstraintRegister.index < globalConstraintsPre.length - 1) { - globalConstraint = globalConstraintsPre[globalConstraintsPre.length - 1]; - globalConstraintsPre[globalConstraintRegister.index] = globalConstraint; - globalConstraintsRegisterPre[globalConstraint.gcAddress].index = globalConstraintRegister.index; - } - globalConstraintsPre.length--; - delete globalConstraintsRegisterPre[_globalConstraint]; - retVal = true; - } - } - if ( - (when == GlobalConstraintInterface.CallPhase.Post) || - (when == GlobalConstraintInterface.CallPhase.PreAndPost) - ) { - globalConstraintRegister = globalConstraintsRegisterPost[_globalConstraint]; - if (globalConstraintRegister.isRegistered) { - if (globalConstraintRegister.index < globalConstraintsPost.length - 1) { - globalConstraint = globalConstraintsPost[globalConstraintsPost.length - 1]; - globalConstraintsPost[globalConstraintRegister.index] = globalConstraint; - globalConstraintsRegisterPost[globalConstraint.gcAddress].index = globalConstraintRegister.index; - } - globalConstraintsPost.length--; - delete globalConstraintsRegisterPost[_globalConstraint]; - retVal = true; - } - } - if (retVal) { - emit RemoveGlobalConstraint( - _globalConstraint, - globalConstraintRegister.index, - when == GlobalConstraintInterface.CallPhase.Pre - ); - } - return retVal; - } - - /** - * @dev upgrade the Controller - * The function will trigger an event 'UpgradeController'. - * @param _newController the address of the new controller. - * @return bool which represents a success - */ - function upgradeController(address _newController, Avatar _avatar) - external - onlyUpgradingScheme - isAvatarValid(address(_avatar)) - returns (bool) - { - require(newController == address(0)); // so the upgrade could be done once for a contract. - require(_newController != address(0)); - newController = _newController; - avatar.transferOwnership(_newController); - require(avatar.owner() == _newController); - if (nativeToken.owner() == address(this)) { - nativeToken.transferOwnership(_newController); - require(nativeToken.owner() == _newController); - } - if (nativeReputation.owner() == address(this)) { - nativeReputation.transferOwnership(_newController); - require(nativeReputation.owner() == _newController); - } - emit UpgradeController(address(this), newController); - return true; - } - - /** - * @dev perform a generic call to an arbitrary contract - * @param _contract the contract's address to call - * @param _data ABI-encoded contract call to call `_contract` address. - * @param _avatar the controller's avatar address - * @param _value value (ETH) to transfer with the transaction - * @return bool -success - * bytes - the return value of the called _contract's function. - */ - function genericCall( - address _contract, - bytes calldata _data, - Avatar _avatar, - uint256 _value - ) - external - onlyGenericCallScheme - onlySubjectToConstraint("genericCall") - isAvatarValid(address(_avatar)) - returns (bool, bytes memory) - { - return avatar.genericCall(_contract, _data, _value); - } - - /** - * @dev send some ether - * @param _amountInWei the amount of ether (in Wei) to send - * @param _to address of the beneficiary - * @return bool which represents a success - */ - function sendEther( - uint256 _amountInWei, - address payable _to, - Avatar _avatar - ) - external - onlyRegisteredScheme - onlySubjectToConstraint("sendEther") - isAvatarValid(address(_avatar)) - returns (bool) - { - return avatar.sendEther(_amountInWei, _to); - } - - /** - * @dev send some amount of arbitrary ERC20 Tokens - * @param _externalToken the address of the Token Contract - * @param _to address of the beneficiary - * @param _value the amount of ether (in Wei) to send - * @return bool which represents a success - */ - function externalTokenTransfer( - IERC20 _externalToken, - address _to, - uint256 _value, - Avatar _avatar - ) - external - onlyRegisteredScheme - onlySubjectToConstraint("externalTokenTransfer") - isAvatarValid(address(_avatar)) - returns (bool) - { - return avatar.externalTokenTransfer(_externalToken, _to, _value); - } - - /** - * @dev transfer token "from" address "to" address - * One must to approve the amount of tokens which can be spend from the - * "from" account.This can be done using externalTokenApprove. - * @param _externalToken the address of the Token Contract - * @param _from address of the account to send from - * @param _to address of the beneficiary - * @param _value the amount of ether (in Wei) to send - * @return bool which represents a success - */ - function externalTokenTransferFrom( - IERC20 _externalToken, - address _from, - address _to, - uint256 _value, - Avatar _avatar - ) - external - onlyRegisteredScheme - onlySubjectToConstraint("externalTokenTransferFrom") - isAvatarValid(address(_avatar)) - returns (bool) - { - return avatar.externalTokenTransferFrom(_externalToken, _from, _to, _value); - } - - /** - * @dev externalTokenApproval approve the spender address to spend a specified amount of tokens - * on behalf of msg.sender. - * @param _externalToken the address of the Token Contract - * @param _spender address - * @param _value the amount of ether (in Wei) which the approval is referring to. - * @return bool which represents a success - */ - function externalTokenApproval( - IERC20 _externalToken, - address _spender, - uint256 _value, - Avatar _avatar - ) - external - onlyRegisteredScheme - onlySubjectToConstraint("externalTokenIncreaseApproval") - isAvatarValid(address(_avatar)) - returns (bool) - { - return avatar.externalTokenApproval(_externalToken, _spender, _value); - } - - /** - * @dev metaData emits an event with a string, should contain the hash of some meta data. - * @param _metaData a string representing a hash of the meta data - * @param _avatar Avatar - * @return bool which represents a success - */ - function metaData(string calldata _metaData, Avatar _avatar) - external - onlyMetaDataScheme - isAvatarValid(address(_avatar)) - returns (bool) - { - return avatar.metaData(_metaData); - } - - /** - * @dev getNativeReputation - * @param _avatar the organization avatar. - * @return organization native reputation - */ - function getNativeReputation(address _avatar) external view isAvatarValid(_avatar) returns (address) { - return address(nativeReputation); - } - - function isSchemeRegistered(address _scheme, address _avatar) external view isAvatarValid(_avatar) returns (bool) { - return _isSchemeRegistered(_scheme); - } - - function getSchemeParameters(address _scheme, address _avatar) - external - view - isAvatarValid(_avatar) - returns (bytes32) - { - return schemes[_scheme].paramsHash; - } - - function getSchemePermissions(address _scheme, address _avatar) - external - view - isAvatarValid(_avatar) - returns (bytes4) - { - return schemes[_scheme].permissions; - } - - function getGlobalConstraintParameters(address _globalConstraint, address) external view returns (bytes32) { - GlobalConstraintRegister memory register = globalConstraintsRegisterPre[_globalConstraint]; - - if (register.isRegistered) { - return globalConstraintsPre[register.index].params; - } - - register = globalConstraintsRegisterPost[_globalConstraint]; - - if (register.isRegistered) { - return globalConstraintsPost[register.index].params; - } - } - - /** - * @dev globalConstraintsCount return the global constraint pre and post count - * @return uint256 globalConstraintsPre count. - * @return uint256 globalConstraintsPost count. - */ - function globalConstraintsCount(address _avatar) external view isAvatarValid(_avatar) returns (uint256, uint256) { - return (globalConstraintsPre.length, globalConstraintsPost.length); - } - - function isGlobalConstraintRegistered(address _globalConstraint, address _avatar) - external - view - isAvatarValid(_avatar) - returns (bool) - { - return (globalConstraintsRegisterPre[_globalConstraint].isRegistered || - globalConstraintsRegisterPost[_globalConstraint].isRegistered); - } - - function _isSchemeRegistered(address _scheme) private view returns (bool) { - return (schemes[_scheme].permissions & bytes4(0x00000001) != bytes4(0)); - } -} diff --git a/contracts/daostack/controller/ControllerInterface.sol b/contracts/daostack/controller/ControllerInterface.sol deleted file mode 100644 index aa67793a..00000000 --- a/contracts/daostack/controller/ControllerInterface.sol +++ /dev/null @@ -1,219 +0,0 @@ -pragma solidity ^0.5.4; - -import "./Avatar.sol"; -import "../globalConstraints/GlobalConstraintInterface.sol"; - -/** - * @title Controller contract - * @dev A controller controls the organizations tokens ,reputation and avatar. - * It is subject to a set of schemes and constraints that determine its behavior. - * Each scheme has it own parameters and operation permissions. - */ -interface ControllerInterface { - /** - * @dev Mint `_amount` of reputation that are assigned to `_to` . - * @param _amount amount of reputation to mint - * @param _to beneficiary address - * @return bool which represents a success - */ - function mintReputation( - uint256 _amount, - address _to, - address _avatar - ) external returns (bool); - - /** - * @dev Burns `_amount` of reputation from `_from` - * @param _amount amount of reputation to burn - * @param _from The address that will lose the reputation - * @return bool which represents a success - */ - function burnReputation( - uint256 _amount, - address _from, - address _avatar - ) external returns (bool); - - /** - * @dev mint tokens . - * @param _amount amount of token to mint - * @param _beneficiary beneficiary address - * @param _avatar address - * @return bool which represents a success - */ - function mintTokens( - uint256 _amount, - address _beneficiary, - address _avatar - ) external returns (bool); - - /** - * @dev register or update a scheme - * @param _scheme the address of the scheme - * @param _paramsHash a hashed configuration of the usage of the scheme - * @param _permissions the permissions the new scheme will have - * @param _avatar address - * @return bool which represents a success - */ - function registerScheme( - address _scheme, - bytes32 _paramsHash, - bytes4 _permissions, - address _avatar - ) external returns (bool); - - /** - * @dev unregister a scheme - * @param _avatar address - * @param _scheme the address of the scheme - * @return bool which represents a success - */ - function unregisterScheme(address _scheme, address _avatar) external returns (bool); - - /** - * @dev unregister the caller's scheme - * @param _avatar address - * @return bool which represents a success - */ - function unregisterSelf(address _avatar) external returns (bool); - - /** - * @dev add or update Global Constraint - * @param _globalConstraint the address of the global constraint to be added. - * @param _params the constraint parameters hash. - * @param _avatar the avatar of the organization - * @return bool which represents a success - */ - function addGlobalConstraint( - address _globalConstraint, - bytes32 _params, - address _avatar - ) external returns (bool); - - /** - * @dev remove Global Constraint - * @param _globalConstraint the address of the global constraint to be remove. - * @param _avatar the organization avatar. - * @return bool which represents a success - */ - function removeGlobalConstraint(address _globalConstraint, address _avatar) external returns (bool); - - /** - * @dev upgrade the Controller - * The function will trigger an event 'UpgradeController'. - * @param _newController the address of the new controller. - * @param _avatar address - * @return bool which represents a success - */ - function upgradeController(address _newController, Avatar _avatar) external returns (bool); - - /** - * @dev perform a generic call to an arbitrary contract - * @param _contract the contract's address to call - * @param _data ABI-encoded contract call to call `_contract` address. - * @param _avatar the controller's avatar address - * @param _value value (ETH) to transfer with the transaction - * @return bool -success - * bytes - the return value of the called _contract's function. - */ - function genericCall( - address _contract, - bytes calldata _data, - Avatar _avatar, - uint256 _value - ) external returns (bool, bytes memory); - - /** - * @dev send some ether - * @param _amountInWei the amount of ether (in Wei) to send - * @param _to address of the beneficiary - * @param _avatar address - * @return bool which represents a success - */ - function sendEther( - uint256 _amountInWei, - address payable _to, - Avatar _avatar - ) external returns (bool); - - /** - * @dev send some amount of arbitrary ERC20 Tokens - * @param _externalToken the address of the Token Contract - * @param _to address of the beneficiary - * @param _value the amount of ether (in Wei) to send - * @param _avatar address - * @return bool which represents a success - */ - function externalTokenTransfer( - IERC20 _externalToken, - address _to, - uint256 _value, - Avatar _avatar - ) external returns (bool); - - /** - * @dev transfer token "from" address "to" address - * One must to approve the amount of tokens which can be spend from the - * "from" account.This can be done using externalTokenApprove. - * @param _externalToken the address of the Token Contract - * @param _from address of the account to send from - * @param _to address of the beneficiary - * @param _value the amount of ether (in Wei) to send - * @param _avatar address - * @return bool which represents a success - */ - function externalTokenTransferFrom( - IERC20 _externalToken, - address _from, - address _to, - uint256 _value, - Avatar _avatar - ) external returns (bool); - - /** - * @dev externalTokenApproval approve the spender address to spend a specified amount of tokens - * on behalf of msg.sender. - * @param _externalToken the address of the Token Contract - * @param _spender address - * @param _value the amount of ether (in Wei) which the approval is referring to. - * @return bool which represents a success - */ - function externalTokenApproval( - IERC20 _externalToken, - address _spender, - uint256 _value, - Avatar _avatar - ) external returns (bool); - - /** - * @dev metaData emits an event with a string, should contain the hash of some meta data. - * @param _metaData a string representing a hash of the meta data - * @param _avatar Avatar - * @return bool which represents a success - */ - function metaData(string calldata _metaData, Avatar _avatar) external returns (bool); - - /** - * @dev getNativeReputation - * @param _avatar the organization avatar. - * @return organization native reputation - */ - function getNativeReputation(address _avatar) external view returns (address); - - function isSchemeRegistered(address _scheme, address _avatar) external view returns (bool); - - function getSchemeParameters(address _scheme, address _avatar) external view returns (bytes32); - - function getGlobalConstraintParameters(address _globalConstraint, address _avatar) external view returns (bytes32); - - function getSchemePermissions(address _scheme, address _avatar) external view returns (bytes4); - - /** - * @dev globalConstraintsCount return the global constraint pre and post count - * @return uint256 globalConstraintsPre count. - * @return uint256 globalConstraintsPost count. - */ - function globalConstraintsCount(address _avatar) external view returns (uint256, uint256); - - function isGlobalConstraintRegistered(address _globalConstraint, address _avatar) external view returns (bool); -} diff --git a/contracts/daostack/controller/DAOToken.sol b/contracts/daostack/controller/DAOToken.sol deleted file mode 100644 index 3567f4d2..00000000 --- a/contracts/daostack/controller/DAOToken.sol +++ /dev/null @@ -1,45 +0,0 @@ -pragma solidity ^0.5.4; - -import "openzeppelin-solidity/contracts/token/ERC20/ERC20Burnable.sol"; -import "openzeppelin-solidity/contracts/token/ERC20/IERC20.sol"; -import "openzeppelin-solidity/contracts/ownership/Ownable.sol"; - -/** - * @title DAOToken, base on zeppelin contract. - * @dev ERC20 compatible token. It is a mintable, burnable token. - */ - -contract DAOToken is ERC20, ERC20Burnable, Ownable { - string public name; - string public symbol; - // solhint-disable-next-line const-name-snakecase - uint8 public constant decimals = 18; - uint256 public cap; - - /** - * @dev Constructor - * @param _name - token name - * @param _symbol - token symbol - * @param _cap - token cap - 0 value means no cap - */ - constructor( - string memory _name, - string memory _symbol, - uint256 _cap - ) public { - name = _name; - symbol = _symbol; - cap = _cap; - } - - /** - * @dev Function to mint tokens - * @param _to The address that will receive the minted tokens. - * @param _amount The amount of tokens to mint. - */ - function mint(address _to, uint256 _amount) public onlyOwner returns (bool) { - if (cap > 0) require(totalSupply().add(_amount) <= cap); - _mint(_to, _amount); - return true; - } -} diff --git a/contracts/daostack/controller/Reputation.sol b/contracts/daostack/controller/Reputation.sol deleted file mode 100644 index 0fd32f7b..00000000 --- a/contracts/daostack/controller/Reputation.sol +++ /dev/null @@ -1,181 +0,0 @@ -pragma solidity 0.5.17; - -import "openzeppelin-solidity/contracts/ownership/Ownable.sol"; - -// Copied from @daostack/infra/contracts/Reputation.sol and added the MintMultiple function - -/** - * @title Reputation system - * @dev A DAO has Reputation System which allows peers to rate other peers in order to build trust . - * A reputation is use to assign influence measure to a DAO'S peers. - * Reputation is similar to regular tokens but with one crucial difference: It is non-transferable. - * The Reputation contract maintain a map of address to reputation value. - * It provides an onlyOwner functions to mint and burn reputation _to (or _from) a specific address. - */ -contract Reputation is Ownable { - uint8 public decimals = 18; //Number of decimals of the smallest unit - // Event indicating minting of reputation to an address. - event Mint(address indexed _to, uint256 _amount); - // Event indicating burning of reputation for an address. - event Burn(address indexed _from, uint256 _amount); - - // @dev `Checkpoint` is the structure that attaches a block number to a - // given value, the block number attached is the one that last changed the - // value - struct Checkpoint { - // `fromBlock` is the block number that the value was generated from - uint128 fromBlock; - // `value` is the amount of reputation at a specific block number - uint128 value; - } - - // `balances` is the map that tracks the balance of each address, in this - // contract when the balance changes the block number that the change - // occurred is also included in the map - mapping(address => Checkpoint[]) private balances; - - // Tracks the history of the `totalSupply` of the reputation - Checkpoint[] private totalSupplyHistory; - - // @notice Generates `_amount` reputation that are assigned to `_owner` - // @param _user The address that will be assigned the new reputation - // @param _amount The quantity of reputation generated - // @return True if the reputation are generated correctly - function mint(address _user, uint256 _amount) public onlyOwner returns (bool) { - uint256 curTotalSupply = totalSupply(); - require(curTotalSupply + _amount >= curTotalSupply); // Check for overflow - uint256 previousBalanceTo = balanceOf(_user); - require(previousBalanceTo + _amount >= previousBalanceTo); // Check for overflow - updateValueAtNow(totalSupplyHistory, curTotalSupply + _amount); - updateValueAtNow(balances[_user], previousBalanceTo + _amount); - emit Mint(_user, _amount); - return true; - } - - // @notice Generates `_amount` reputation that are assigned to `_owner` - // @param _user The address that will be assigned the new reputation - // @param _amount The quantity of reputation generated - // @return True if the reputation are generated correctly - function mintMultiple(address[] memory _user, uint256[] memory _amount) public onlyOwner returns (bool) { - for (uint256 i = 0; i < _user.length; i++) { - uint256 curTotalSupply = totalSupply(); - require(curTotalSupply + _amount[i] >= curTotalSupply); // Check for overflow - uint256 previousBalanceTo = balanceOf(_user[i]); - require(previousBalanceTo + _amount[i] >= previousBalanceTo); // Check for overflow - updateValueAtNow(totalSupplyHistory, curTotalSupply + _amount[i]); - updateValueAtNow(balances[_user[i]], previousBalanceTo + _amount[i]); - emit Mint(_user[i], _amount[i]); - } - return true; - } - - // @notice Burns `_amount` reputation from `_owner` - // @param _user The address that will lose the reputation - // @param _amount The quantity of reputation to burn - // @return True if the reputation are burned correctly - function burn(address _user, uint256 _amount) public onlyOwner returns (bool) { - uint256 curTotalSupply = totalSupply(); - uint256 amountBurned = _amount; - uint256 previousBalanceFrom = balanceOf(_user); - if (previousBalanceFrom < amountBurned) { - amountBurned = previousBalanceFrom; - } - updateValueAtNow(totalSupplyHistory, curTotalSupply - amountBurned); - updateValueAtNow(balances[_user], previousBalanceFrom - amountBurned); - emit Burn(_user, amountBurned); - return true; - } - - // @dev This function makes it easy to get the total number of reputation - // @return The total number of reputation - function totalSupply() public view returns (uint256) { - return totalSupplyAt(block.number); - } - - //////////////// - // Query balance and totalSupply in History - //////////////// - /** - * @dev return the reputation amount of a given owner - * @param _owner an address of the owner which we want to get his reputation - */ - function balanceOf(address _owner) public view returns (uint256 balance) { - return balanceOfAt(_owner, block.number); - } - - // @notice Total amount of reputation at a specific `_blockNumber`. - // @param _blockNumber The block number when the totalSupply is queried - // @return The total amount of reputation at `_blockNumber` - function totalSupplyAt(uint256 _blockNumber) public view returns (uint256) { - if ((totalSupplyHistory.length == 0) || (totalSupplyHistory[0].fromBlock > _blockNumber)) { - return 0; - // This will return the expected totalSupply during normal situations - } else { - return getValueAt(totalSupplyHistory, _blockNumber); - } - } - - // @dev Queries the balance of `_owner` at a specific `_blockNumber` - // @param _owner The address from which the balance will be retrieved - // @param _blockNumber The block number when the balance is queried - // @return The balance at `_blockNumber` - function balanceOfAt(address _owner, uint256 _blockNumber) public view returns (uint256) { - if ((balances[_owner].length == 0) || (balances[_owner][0].fromBlock > _blockNumber)) { - return 0; - // This will return the expected balance during normal situations - } else { - return getValueAt(balances[_owner], _blockNumber); - } - } - - //////////////// - // Internal helper functions to query and set a value in a snapshot array - //////////////// - - // @dev `getValueAt` retrieves the number of reputation at a given block number - // @param checkpoints The history of values being queried - // @param _block The block number to retrieve the value at - // @return The number of reputation being queried - function getValueAt(Checkpoint[] storage checkpoints, uint256 _block) internal view returns (uint256) { - if (checkpoints.length == 0) { - return 0; - } - - // Shortcut for the actual value - if (_block >= checkpoints[checkpoints.length - 1].fromBlock) { - return checkpoints[checkpoints.length - 1].value; - } - if (_block < checkpoints[0].fromBlock) { - return 0; - } - - // Binary search of the value in the array - uint256 min = 0; - uint256 max = checkpoints.length - 1; - while (max > min) { - uint256 mid = (max + min + 1) / 2; - if (checkpoints[mid].fromBlock <= _block) { - min = mid; - } else { - max = mid - 1; - } - } - return checkpoints[min].value; - } - - // @dev `updateValueAtNow` used to update the `balances` map and the - // `totalSupplyHistory` - // @param checkpoints The history of data being updated - // @param _value The new number of reputation - function updateValueAtNow(Checkpoint[] storage checkpoints, uint256 _value) internal { - require(uint128(_value) == _value); //check value is in the 128 bits bounderies - if ((checkpoints.length == 0) || (checkpoints[checkpoints.length - 1].fromBlock < block.number)) { - Checkpoint storage newCheckPoint = checkpoints[checkpoints.length++]; - newCheckPoint.fromBlock = uint128(block.number); - newCheckPoint.value = uint128(_value); - } else { - Checkpoint storage oldCheckPoint = checkpoints[checkpoints.length - 1]; - oldCheckPoint.value = uint128(_value); - } - } -} diff --git a/contracts/daostack/controller/UController.sol b/contracts/daostack/controller/UController.sol deleted file mode 100644 index 9ab6ff65..00000000 --- a/contracts/daostack/controller/UController.sol +++ /dev/null @@ -1,633 +0,0 @@ -pragma solidity ^0.5.4; - -import "./Avatar.sol"; -import "../globalConstraints/GlobalConstraintInterface.sol"; -import "./ControllerInterface.sol"; - -/** - * @title Universal Controller contract - * @dev A universal controller hold organizations and controls their tokens ,reputations - * and avatar. - * It is subject to a set of schemes and constraints that determine its behavior. - * Each scheme has it own parameters and operation permissions. - */ -contract UController is ControllerInterface { - struct Scheme { - bytes32 paramsHash; // a hash "configuration" of the scheme - bytes4 permissions; // A bitwise flags of permissions, - // All 0: Not registered, - // 1st bit: Flag if the scheme is registered, - // 2nd bit: Scheme can register other schemes - // 3th bit: Scheme can add/remove global constraints - // 4rd bit: Scheme can upgrade the controller - // 5th bit: Scheme can call delegatecall - } - - struct GlobalConstraint { - address gcAddress; - bytes32 params; - } - - struct GlobalConstraintRegister { - bool isRegistered; //is registered - uint256 index; //index at globalConstraints - } - - struct Organization { - DAOToken nativeToken; - Reputation nativeReputation; - mapping(address => Scheme) schemes; - // globalConstraintsPre that determine pre- conditions for all actions on the controller - GlobalConstraint[] globalConstraintsPre; - // globalConstraintsPost that determine post-conditions for all actions on the controller - GlobalConstraint[] globalConstraintsPost; - // globalConstraintsRegisterPre indicate if a globalConstraints is registered as a Pre global constraint. - mapping(address => GlobalConstraintRegister) globalConstraintsRegisterPre; - // globalConstraintsRegisterPost indicate if a globalConstraints is registered as a Post global constraint. - mapping(address => GlobalConstraintRegister) globalConstraintsRegisterPost; - } - - //mapping between organization's avatar address to Organization - mapping(address => Organization) public organizations; - // newController will point to the new controller after the present controller is upgraded - // address external newController; - mapping(address => address) public newControllers; //mapping between avatar address and newController address - //mapping for all reputation system and tokens addresses registered. - mapping(address => bool) public actors; - - event MintReputation(address indexed _sender, address indexed _to, uint256 _amount, address indexed _avatar); - event BurnReputation(address indexed _sender, address indexed _from, uint256 _amount, address indexed _avatar); - event MintTokens(address indexed _sender, address indexed _beneficiary, uint256 _amount, address indexed _avatar); - event RegisterScheme(address indexed _sender, address indexed _scheme, address indexed _avatar); - event UnregisterScheme(address indexed _sender, address indexed _scheme, address indexed _avatar); - event UpgradeController(address indexed _oldController, address _newController, address _avatar); - - event AddGlobalConstraint( - address indexed _globalConstraint, - bytes32 _params, - GlobalConstraintInterface.CallPhase _when, - address indexed _avatar - ); - - event RemoveGlobalConstraint( - address indexed _globalConstraint, - uint256 _index, - bool _isPre, - address indexed _avatar - ); - - /** - * @dev newOrganization set up a new organization with default daoCreator. - * @param _avatar the organization avatar - */ - function newOrganization(Avatar _avatar) external { - require(!actors[address(_avatar)]); - actors[address(_avatar)] = true; - require(_avatar.owner() == address(this)); - DAOToken nativeToken = _avatar.nativeToken(); - Reputation nativeReputation = _avatar.nativeReputation(); - require(nativeToken.owner() == address(this)); - require(nativeReputation.owner() == address(this)); - //To guaranty uniqueness for the reputation systems. - require(!actors[address(nativeReputation)]); - actors[address(nativeReputation)] = true; - //To guaranty uniqueness for the nativeToken. - require(!actors[address(nativeToken)]); - actors[address(nativeToken)] = true; - organizations[address(_avatar)].nativeToken = nativeToken; - organizations[address(_avatar)].nativeReputation = nativeReputation; - organizations[address(_avatar)].schemes[msg.sender] = Scheme({ - paramsHash: bytes32(0), - permissions: bytes4(0x0000001f) - }); - emit RegisterScheme(msg.sender, msg.sender, address(_avatar)); - } - - // Modifiers: - modifier onlyRegisteredScheme(address avatar) { - require(organizations[avatar].schemes[msg.sender].permissions & bytes4(0x00000001) == bytes4(0x00000001)); - _; - } - - modifier onlyRegisteringSchemes(address avatar) { - require(organizations[avatar].schemes[msg.sender].permissions & bytes4(0x00000002) == bytes4(0x00000002)); - _; - } - - modifier onlyGlobalConstraintsScheme(address avatar) { - require(organizations[avatar].schemes[msg.sender].permissions & bytes4(0x00000004) == bytes4(0x00000004)); - _; - } - - modifier onlyUpgradingScheme(address _avatar) { - require(organizations[_avatar].schemes[msg.sender].permissions & bytes4(0x00000008) == bytes4(0x00000008)); - _; - } - - modifier onlyGenericCallScheme(address _avatar) { - require(organizations[_avatar].schemes[msg.sender].permissions & bytes4(0x00000010) == bytes4(0x00000010)); - _; - } - - modifier onlyMetaDataScheme(address _avatar) { - require(organizations[_avatar].schemes[msg.sender].permissions & bytes4(0x00000010) == bytes4(0x00000010)); - _; - } - - modifier onlySubjectToConstraint(bytes32 func, address _avatar) { - uint256 idx; - GlobalConstraint[] memory globalConstraintsPre = organizations[_avatar].globalConstraintsPre; - GlobalConstraint[] memory globalConstraintsPost = organizations[_avatar].globalConstraintsPost; - for (idx = 0; idx < globalConstraintsPre.length; idx++) { - require( - (GlobalConstraintInterface(globalConstraintsPre[idx].gcAddress)).pre( - msg.sender, - globalConstraintsPre[idx].params, - func - ) - ); - } - _; - for (idx = 0; idx < globalConstraintsPost.length; idx++) { - require( - (GlobalConstraintInterface(globalConstraintsPost[idx].gcAddress)).post( - msg.sender, - globalConstraintsPost[idx].params, - func - ) - ); - } - } - - /** - * @dev Mint `_amount` of reputation that are assigned to `_to` . - * @param _amount amount of reputation to mint - * @param _to beneficiary address - * @param _avatar the address of the organization's avatar - * @return bool which represents a success - */ - function mintReputation( - uint256 _amount, - address _to, - address _avatar - ) external onlyRegisteredScheme(_avatar) onlySubjectToConstraint("mintReputation", _avatar) returns (bool) { - emit MintReputation(msg.sender, _to, _amount, _avatar); - return organizations[_avatar].nativeReputation.mint(_to, _amount); - } - - /** - * @dev Burns `_amount` of reputation from `_from` - * @param _amount amount of reputation to burn - * @param _from The address that will lose the reputation - * @return bool which represents a success - */ - function burnReputation( - uint256 _amount, - address _from, - address _avatar - ) external onlyRegisteredScheme(_avatar) onlySubjectToConstraint("burnReputation", _avatar) returns (bool) { - emit BurnReputation(msg.sender, _from, _amount, _avatar); - return organizations[_avatar].nativeReputation.burn(_from, _amount); - } - - /** - * @dev mint tokens . - * @param _amount amount of token to mint - * @param _beneficiary beneficiary address - * @param _avatar the organization avatar. - * @return bool which represents a success - */ - function mintTokens( - uint256 _amount, - address _beneficiary, - address _avatar - ) external onlyRegisteredScheme(_avatar) onlySubjectToConstraint("mintTokens", _avatar) returns (bool) { - emit MintTokens(msg.sender, _beneficiary, _amount, _avatar); - return organizations[_avatar].nativeToken.mint(_beneficiary, _amount); - } - - /** - * @dev register or update a scheme - * @param _scheme the address of the scheme - * @param _paramsHash a hashed configuration of the usage of the scheme - * @param _permissions the permissions the new scheme will have - * @param _avatar the organization avatar. - * @return bool which represents a success - */ - function registerScheme( - address _scheme, - bytes32 _paramsHash, - bytes4 _permissions, - address _avatar - ) external onlyRegisteringSchemes(_avatar) onlySubjectToConstraint("registerScheme", _avatar) returns (bool) { - bytes4 schemePermission = organizations[_avatar].schemes[_scheme].permissions; - bytes4 senderPermission = organizations[_avatar].schemes[msg.sender].permissions; - // Check scheme has at least the permissions it is changing, and at least the current permissions: - // Implementation is a bit messy. One must recall logic-circuits ^^ - - // produces non-zero if sender does not have all of the perms that are changing between old and new - require(bytes4(0x0000001f) & (_permissions ^ schemePermission) & (~senderPermission) == bytes4(0)); - - // produces non-zero if sender does not have all of the perms in the old scheme - require(bytes4(0x0000001f) & (schemePermission & (~senderPermission)) == bytes4(0)); - - // Add or change the scheme: - organizations[_avatar].schemes[_scheme] = Scheme({ - paramsHash: _paramsHash, - permissions: _permissions | bytes4(0x00000001) - }); - emit RegisterScheme(msg.sender, _scheme, _avatar); - return true; - } - - /** - * @dev unregister a scheme - * @param _scheme the address of the scheme - * @param _avatar the organization avatar. - * @return bool which represents a success - */ - function unregisterScheme(address _scheme, address _avatar) - external - onlyRegisteringSchemes(_avatar) - onlySubjectToConstraint("unregisterScheme", _avatar) - returns (bool) - { - bytes4 schemePermission = organizations[_avatar].schemes[_scheme].permissions; - //check if the scheme is registered - if (schemePermission & bytes4(0x00000001) == bytes4(0)) { - return false; - } - // Check the unregistering scheme has enough permissions: - require( - bytes4(0x0000001f) & (schemePermission & (~organizations[_avatar].schemes[msg.sender].permissions)) == - bytes4(0) - ); - - // Unregister: - emit UnregisterScheme(msg.sender, _scheme, _avatar); - delete organizations[_avatar].schemes[_scheme]; - return true; - } - - /** - * @dev unregister the caller's scheme - * @param _avatar the organization avatar. - * @return bool which represents a success - */ - function unregisterSelf(address _avatar) external returns (bool) { - if (_isSchemeRegistered(msg.sender, _avatar) == false) { - return false; - } - delete organizations[_avatar].schemes[msg.sender]; - emit UnregisterScheme(msg.sender, msg.sender, _avatar); - return true; - } - - /** - * @dev add or update Global Constraint - * @param _globalConstraint the address of the global constraint to be added. - * @param _params the constraint parameters hash. - * @param _avatar the avatar of the organization - * @return bool which represents a success - */ - function addGlobalConstraint( - address _globalConstraint, - bytes32 _params, - address _avatar - ) external onlyGlobalConstraintsScheme(_avatar) returns (bool) { - Organization storage organization = organizations[_avatar]; - GlobalConstraintInterface.CallPhase when = GlobalConstraintInterface(_globalConstraint).when(); - if ( - (when == GlobalConstraintInterface.CallPhase.Pre) || - (when == GlobalConstraintInterface.CallPhase.PreAndPost) - ) { - if (!organization.globalConstraintsRegisterPre[_globalConstraint].isRegistered) { - organization.globalConstraintsPre.push(GlobalConstraint(_globalConstraint, _params)); - organization.globalConstraintsRegisterPre[_globalConstraint] = GlobalConstraintRegister( - true, - organization.globalConstraintsPre.length - 1 - ); - } else { - organization - .globalConstraintsPre[organization.globalConstraintsRegisterPre[_globalConstraint].index] - .params = _params; - } - } - - if ( - (when == GlobalConstraintInterface.CallPhase.Post) || - (when == GlobalConstraintInterface.CallPhase.PreAndPost) - ) { - if (!organization.globalConstraintsRegisterPost[_globalConstraint].isRegistered) { - organization.globalConstraintsPost.push(GlobalConstraint(_globalConstraint, _params)); - organization.globalConstraintsRegisterPost[_globalConstraint] = GlobalConstraintRegister( - true, - organization.globalConstraintsPost.length - 1 - ); - } else { - organization - .globalConstraintsPost[organization.globalConstraintsRegisterPost[_globalConstraint].index] - .params = _params; - } - } - emit AddGlobalConstraint(_globalConstraint, _params, when, _avatar); - return true; - } - - /** - * @dev remove Global Constraint - * @param _globalConstraint the address of the global constraint to be remove. - * @param _avatar the organization avatar. - * @return bool which represents a success - */ - function removeGlobalConstraint(address _globalConstraint, address _avatar) - external - onlyGlobalConstraintsScheme(_avatar) - returns (bool) - { - GlobalConstraintInterface.CallPhase when = GlobalConstraintInterface(_globalConstraint).when(); - if ( - (when == GlobalConstraintInterface.CallPhase.Pre) || - (when == GlobalConstraintInterface.CallPhase.PreAndPost) - ) { - removeGlobalConstraintPre(_globalConstraint, _avatar); - } - if ( - (when == GlobalConstraintInterface.CallPhase.Post) || - (when == GlobalConstraintInterface.CallPhase.PreAndPost) - ) { - removeGlobalConstraintPost(_globalConstraint, _avatar); - } - return true; - } - - /** - * @dev upgrade the Controller - * The function will trigger an event 'UpgradeController'. - * @param _newController the address of the new controller. - * @param _avatar the organization avatar. - * @return bool which represents a success - */ - function upgradeController(address _newController, Avatar _avatar) - external - onlyUpgradingScheme(address(_avatar)) - returns (bool) - { - require(newControllers[address(_avatar)] == address(0)); // so the upgrade could be done once for a contract. - require(_newController != address(0)); - newControllers[address(_avatar)] = _newController; - _avatar.transferOwnership(_newController); - require(_avatar.owner() == _newController); - if (organizations[address(_avatar)].nativeToken.owner() == address(this)) { - organizations[address(_avatar)].nativeToken.transferOwnership(_newController); - require(organizations[address(_avatar)].nativeToken.owner() == _newController); - } - if (organizations[address(_avatar)].nativeReputation.owner() == address(this)) { - organizations[address(_avatar)].nativeReputation.transferOwnership(_newController); - require(organizations[address(_avatar)].nativeReputation.owner() == _newController); - } - emit UpgradeController(address(this), _newController, address(_avatar)); - return true; - } - - /** - * @dev perform a generic call to an arbitrary contract - * @param _contract the contract's address to call - * @param _data ABI-encoded contract call to call `_contract` address. - * @param _avatar the controller's avatar address - * @param _value value (ETH) to transfer with the transaction - * @return bool -success - * bytes - the return value of the called _contract's function. - */ - function genericCall( - address _contract, - bytes calldata _data, - Avatar _avatar, - uint256 _value - ) - external - onlyGenericCallScheme(address(_avatar)) - onlySubjectToConstraint("genericCall", address(_avatar)) - returns (bool, bytes memory) - { - return _avatar.genericCall(_contract, _data, _value); - } - - /** - * @dev send some ether - * @param _amountInWei the amount of ether (in Wei) to send - * @param _to address of the beneficiary - * @param _avatar the organization avatar. - * @return bool which represents a success - */ - function sendEther( - uint256 _amountInWei, - address payable _to, - Avatar _avatar - ) - external - onlyRegisteredScheme(address(_avatar)) - onlySubjectToConstraint("sendEther", address(_avatar)) - returns (bool) - { - return _avatar.sendEther(_amountInWei, _to); - } - - /** - * @dev send some amount of arbitrary ERC20 Tokens - * @param _externalToken the address of the Token Contract - * @param _to address of the beneficiary - * @param _value the amount of ether (in Wei) to send - * @param _avatar the organization avatar. - * @return bool which represents a success - */ - function externalTokenTransfer( - IERC20 _externalToken, - address _to, - uint256 _value, - Avatar _avatar - ) - external - onlyRegisteredScheme(address(_avatar)) - onlySubjectToConstraint("externalTokenTransfer", address(_avatar)) - returns (bool) - { - return _avatar.externalTokenTransfer(_externalToken, _to, _value); - } - - /** - * @dev transfer token "from" address "to" address - * One must to approve the amount of tokens which can be spend from the - * "from" account.This can be done using externalTokenApprove. - * @param _externalToken the address of the Token Contract - * @param _from address of the account to send from - * @param _to address of the beneficiary - * @param _value the amount of ether (in Wei) to send - * @param _avatar the organization avatar. - * @return bool which represents a success - */ - function externalTokenTransferFrom( - IERC20 _externalToken, - address _from, - address _to, - uint256 _value, - Avatar _avatar - ) - external - onlyRegisteredScheme(address(_avatar)) - onlySubjectToConstraint("externalTokenTransferFrom", address(_avatar)) - returns (bool) - { - return _avatar.externalTokenTransferFrom(_externalToken, _from, _to, _value); - } - - /** - * @dev externalTokenApproval approve the spender address to spend a specified amount of tokens - * on behalf of msg.sender. - * @param _externalToken the address of the Token Contract - * @param _spender address - * @param _value the amount of ether (in Wei) which the approval is referring to. - * @return bool which represents a success - */ - function externalTokenApproval( - IERC20 _externalToken, - address _spender, - uint256 _value, - Avatar _avatar - ) - external - onlyRegisteredScheme(address(_avatar)) - onlySubjectToConstraint("externalTokenApproval", address(_avatar)) - returns (bool) - { - return _avatar.externalTokenApproval(_externalToken, _spender, _value); - } - - /** - * @dev metaData emits an event with a string, should contain the hash of some meta data. - * @param _metaData a string representing a hash of the meta data - * @param _avatar Avatar - * @return bool which represents a success - */ - function metaData(string calldata _metaData, Avatar _avatar) - external - onlyMetaDataScheme(address(_avatar)) - returns (bool) - { - return _avatar.metaData(_metaData); - } - - function isSchemeRegistered(address _scheme, address _avatar) external view returns (bool) { - return _isSchemeRegistered(_scheme, _avatar); - } - - function getSchemeParameters(address _scheme, address _avatar) external view returns (bytes32) { - return organizations[_avatar].schemes[_scheme].paramsHash; - } - - function getSchemePermissions(address _scheme, address _avatar) external view returns (bytes4) { - return organizations[_avatar].schemes[_scheme].permissions; - } - - function getGlobalConstraintParameters(address _globalConstraint, address _avatar) external view returns (bytes32) { - Organization storage organization = organizations[_avatar]; - - GlobalConstraintRegister memory register = organization.globalConstraintsRegisterPre[_globalConstraint]; - - if (register.isRegistered) { - return organization.globalConstraintsPre[register.index].params; - } - - register = organization.globalConstraintsRegisterPost[_globalConstraint]; - - if (register.isRegistered) { - return organization.globalConstraintsPost[register.index].params; - } - } - - /** - * @dev globalConstraintsCount return the global constraint pre and post count - * @return uint256 globalConstraintsPre count. - * @return uint256 globalConstraintsPost count. - */ - function globalConstraintsCount(address _avatar) external view returns (uint256, uint256) { - return ( - organizations[_avatar].globalConstraintsPre.length, - organizations[_avatar].globalConstraintsPost.length - ); - } - - function isGlobalConstraintRegistered(address _globalConstraint, address _avatar) external view returns (bool) { - return (organizations[_avatar].globalConstraintsRegisterPre[_globalConstraint].isRegistered || - organizations[_avatar].globalConstraintsRegisterPost[_globalConstraint].isRegistered); - } - - /** - * @dev getNativeReputation - * @param _avatar the organization avatar. - * @return organization native reputation - */ - function getNativeReputation(address _avatar) external view returns (address) { - return address(organizations[_avatar].nativeReputation); - } - - /** - * @dev removeGlobalConstraintPre - * @param _globalConstraint the address of the global constraint to be remove. - * @param _avatar the organization avatar. - * @return bool which represents a success - */ - function removeGlobalConstraintPre(address _globalConstraint, address _avatar) private returns (bool) { - GlobalConstraintRegister memory globalConstraintRegister = organizations[_avatar].globalConstraintsRegisterPre[ - _globalConstraint - ]; - GlobalConstraint[] storage globalConstraints = organizations[_avatar].globalConstraintsPre; - - if (globalConstraintRegister.isRegistered) { - if (globalConstraintRegister.index < globalConstraints.length - 1) { - GlobalConstraint memory globalConstraint = globalConstraints[globalConstraints.length - 1]; - globalConstraints[globalConstraintRegister.index] = globalConstraint; - organizations[_avatar] - .globalConstraintsRegisterPre[globalConstraint.gcAddress] - .index = globalConstraintRegister.index; - } - globalConstraints.length--; - delete organizations[_avatar].globalConstraintsRegisterPre[_globalConstraint]; - emit RemoveGlobalConstraint(_globalConstraint, globalConstraintRegister.index, true, _avatar); - return true; - } - return false; - } - - /** - * @dev removeGlobalConstraintPost - * @param _globalConstraint the address of the global constraint to be remove. - * @param _avatar the organization avatar. - * @return bool which represents a success - */ - function removeGlobalConstraintPost(address _globalConstraint, address _avatar) private returns (bool) { - GlobalConstraintRegister memory globalConstraintRegister = organizations[_avatar].globalConstraintsRegisterPost[ - _globalConstraint - ]; - GlobalConstraint[] storage globalConstraints = organizations[_avatar].globalConstraintsPost; - - if (globalConstraintRegister.isRegistered) { - if (globalConstraintRegister.index < globalConstraints.length - 1) { - GlobalConstraint memory globalConstraint = globalConstraints[globalConstraints.length - 1]; - globalConstraints[globalConstraintRegister.index] = globalConstraint; - organizations[_avatar] - .globalConstraintsRegisterPost[globalConstraint.gcAddress] - .index = globalConstraintRegister.index; - } - globalConstraints.length--; - delete organizations[_avatar].globalConstraintsRegisterPost[_globalConstraint]; - emit RemoveGlobalConstraint(_globalConstraint, globalConstraintRegister.index, false, _avatar); - return true; - } - return false; - } - - function _isSchemeRegistered(address _scheme, address _avatar) private view returns (bool) { - return (organizations[_avatar].schemes[_scheme].permissions & bytes4(0x00000001) != bytes4(0)); - } -} diff --git a/contracts/daostack/globalConstraints/GlobalConstraintInterface.sol b/contracts/daostack/globalConstraints/GlobalConstraintInterface.sol deleted file mode 100644 index 06934b53..00000000 --- a/contracts/daostack/globalConstraints/GlobalConstraintInterface.sol +++ /dev/null @@ -1,27 +0,0 @@ -pragma solidity ^0.5.4; - -contract GlobalConstraintInterface { - enum CallPhase { - Pre, - Post, - PreAndPost - } - - function pre( - address _scheme, - bytes32 _params, - bytes32 _method - ) public returns (bool); - - function post( - address _scheme, - bytes32 _params, - bytes32 _method - ) public returns (bool); - - /** - * @dev when return if this globalConstraints is pre, post or both. - * @return CallPhase enum indication Pre, Post or PreAndPost. - */ - function when() public returns (CallPhase); -} diff --git a/contracts/daostack/globalConstraints/TokenCapGC.sol b/contracts/daostack/globalConstraints/TokenCapGC.sol deleted file mode 100644 index 2624fc3c..00000000 --- a/contracts/daostack/globalConstraints/TokenCapGC.sol +++ /dev/null @@ -1,83 +0,0 @@ -pragma solidity ^0.5.4; - -import "openzeppelin-solidity/contracts/token/ERC20/IERC20.sol"; -import "./GlobalConstraintInterface.sol"; - -/** - * @title Token Cap Global Constraint - * @dev A simple global constraint to cap the number of tokens. - */ - -contract TokenCapGC { - // A set of parameters, on which the cap will be checked: - struct Parameters { - IERC20 token; - uint256 cap; - } - - // Mapping from the hash of the parameters to the parameters themselves: - mapping(bytes32 => Parameters) public parameters; - - /** - * @dev adding a new set of parameters - * @param _token the token to add to the params. - * @param _cap the cap to check the total supply against. - * @return the calculated parameters hash - */ - function setParameters(IERC20 _token, uint256 _cap) public returns (bytes32) { - bytes32 paramsHash = getParametersHash(_token, _cap); - parameters[paramsHash].token = _token; - parameters[paramsHash].cap = _cap; - return paramsHash; - } - - /** - * @dev calculate and returns the hash of the given parameters - * @param _token the token to add to the params. - * @param _cap the cap to check the total supply against. - * @return the calculated parameters hash - */ - function getParametersHash(IERC20 _token, uint256 _cap) public pure returns (bytes32) { - return (keccak256(abi.encodePacked(_token, _cap))); - } - - /** - * @dev check the constraint after the action. - * This global constraint only checks the state after the action, so here we just return true: - * @return true - */ - function pre( - address, - bytes32, - bytes32 - ) public pure returns (bool) { - return true; - } - - /** - * @dev check the total supply cap. - * @param _paramsHash the parameters hash to check the total supply cap against. - * @return bool which represents a success - */ - function post( - address, - bytes32 _paramsHash, - bytes32 - ) public view returns (bool) { - if ( - (parameters[_paramsHash].token != IERC20(0)) && - (parameters[_paramsHash].token.totalSupply() > parameters[_paramsHash].cap) - ) { - return false; - } - return true; - } - - /** - * @dev when return if this globalConstraints is pre, post or both. - * @return CallPhase enum indication Pre, Post or PreAndPost. - */ - function when() public pure returns (GlobalConstraintInterface.CallPhase) { - return GlobalConstraintInterface.CallPhase.Post; - } -} diff --git a/contracts/daostack/libs/RealMath.sol b/contracts/daostack/libs/RealMath.sol deleted file mode 100644 index 56610e1c..00000000 --- a/contracts/daostack/libs/RealMath.sol +++ /dev/null @@ -1,82 +0,0 @@ -pragma solidity ^0.5.11; - -/** - * RealMath: fixed-point math library, based on fractional and integer parts. - * Using uint256 as real216x40, which isn't in Solidity yet. - * Internally uses the wider uint256 for some math. - * - * Note that for addition, subtraction, and mod (%), you should just use the - * built-in Solidity operators. Functions for these operations are not provided. - * - */ - -library RealMath { - /** - * How many total bits are there? - */ - uint256 private constant REAL_BITS = 256; - - /** - * How many fractional bits are there? - */ - uint256 private constant REAL_FBITS = 40; - - /** - * What's the first non-fractional bit - */ - uint256 private constant REAL_ONE = uint256(1) << REAL_FBITS; - - /** - * Raise a real number to any positive integer power - */ - function pow(uint256 realBase, uint256 exponent) internal pure returns (uint256) { - uint256 tempRealBase = realBase; - uint256 tempExponent = exponent; - - // Start with the 0th power - uint256 realResult = REAL_ONE; - while (tempExponent != 0) { - // While there are still bits set - if ((tempExponent & 0x1) == 0x1) { - // If the low bit is set, multiply in the (many-times-squared) base - realResult = mul(realResult, tempRealBase); - } - // Shift off the low bit - tempExponent = tempExponent >> 1; - if (tempExponent != 0) { - // Do the squaring - tempRealBase = mul(tempRealBase, tempRealBase); - } - } - - // Return the final result. - return realResult; - } - - /** - * Create a real from a rational fraction. - */ - function fraction(uint216 numerator, uint216 denominator) internal pure returns (uint256) { - return div(uint256(numerator) * REAL_ONE, uint256(denominator) * REAL_ONE); - } - - /** - * Multiply one real by another. Truncates overflows. - */ - function mul(uint256 realA, uint256 realB) private pure returns (uint256) { - // When multiplying fixed point in x.y and z.w formats we get (x+z).(y+w) format. - // So we just have to clip off the extra REAL_FBITS fractional bits. - uint256 res = realA * realB; - require(res / realA == realB, "RealMath mul overflow"); - return (res >> REAL_FBITS); - } - - /** - * Divide one real by another real. Truncates overflows. - */ - function div(uint256 realNumerator, uint256 realDenominator) private pure returns (uint256) { - // We use the reverse of the multiplication trick: convert numerator from - // x.y to (x+z).(y+w) fixed point, then divide by denom in z.w fixed point. - return uint256((uint256(realNumerator) * REAL_ONE) / uint256(realDenominator)); - } -} diff --git a/contracts/daostack/libs/SafeERC20.sol b/contracts/daostack/libs/SafeERC20.sol deleted file mode 100644 index bab92ed5..00000000 --- a/contracts/daostack/libs/SafeERC20.sol +++ /dev/null @@ -1,85 +0,0 @@ -/* - -SafeERC20 by daostack. -The code is based on a fix by SECBIT Team. - -USE WITH CAUTION & NO WARRANTY - -REFERENCE & RELATED READING -- https://github.com/ethereum/solidity/issues/4116 -- https://medium.com/@chris_77367/explaining-unexpected-reverts-starting-with-solidity-0-4-22-3ada6e82308c -- https://medium.com/coinmonks/missing-return-value-bug-at-least-130-tokens-affected-d67bf08521ca -- https://gist.github.com/BrendanChou/88a2eeb80947ff00bcf58ffdafeaeb61 - -*/ -pragma solidity ^0.5.4; - -import "openzeppelin-solidity/contracts/utils/Address.sol"; -import "openzeppelin-solidity/contracts/token/ERC20/IERC20.sol"; - -library SafeERC20 { - using Address for address; - - bytes4 private constant TRANSFER_SELECTOR = bytes4(keccak256(bytes("transfer(address,uint256)"))); - bytes4 private constant TRANSFERFROM_SELECTOR = bytes4(keccak256(bytes("transferFrom(address,address,uint256)"))); - bytes4 private constant APPROVE_SELECTOR = bytes4(keccak256(bytes("approve(address,uint256)"))); - - function safeTransfer( - address _erc20Addr, - address _to, - uint256 _value - ) internal { - // Must be a contract addr first! - require(_erc20Addr.isContract()); - - ( - bool success, - bytes memory returnValue // solhint-disable-next-line avoid-low-level-calls - ) = _erc20Addr.call(abi.encodeWithSelector(TRANSFER_SELECTOR, _to, _value)); - // call return false when something wrong - require(success); - //check return value - require(returnValue.length == 0 || (returnValue.length == 32 && (returnValue[31] != 0))); - } - - function safeTransferFrom( - address _erc20Addr, - address _from, - address _to, - uint256 _value - ) internal { - // Must be a contract addr first! - require(_erc20Addr.isContract()); - - ( - bool success, - bytes memory returnValue // solhint-disable-next-line avoid-low-level-calls - ) = _erc20Addr.call(abi.encodeWithSelector(TRANSFERFROM_SELECTOR, _from, _to, _value)); - // call return false when something wrong - require(success); - //check return value - require(returnValue.length == 0 || (returnValue.length == 32 && (returnValue[31] != 0))); - } - - function safeApprove( - address _erc20Addr, - address _spender, - uint256 _value - ) internal { - // Must be a contract addr first! - require(_erc20Addr.isContract()); - - // safeApprove should only be called when setting an initial allowance, - // or when resetting it to zero. - require((_value == 0) || (IERC20(_erc20Addr).allowance(address(this), _spender) == 0)); - - ( - bool success, - bytes memory returnValue // solhint-disable-next-line avoid-low-level-calls - ) = _erc20Addr.call(abi.encodeWithSelector(APPROVE_SELECTOR, _spender, _value)); - // call return false when something wrong - require(success); - //check return value - require(returnValue.length == 0 || (returnValue.length == 32 && (returnValue[31] != 0))); - } -} diff --git a/contracts/daostack/test/AbsoluteVoteExecuteMock.sol b/contracts/daostack/test/AbsoluteVoteExecuteMock.sol deleted file mode 100644 index 943973a0..00000000 --- a/contracts/daostack/test/AbsoluteVoteExecuteMock.sol +++ /dev/null @@ -1,100 +0,0 @@ -pragma solidity 0.5.17; - -import "../votingMachines/ProposalExecuteInterface.sol"; -import "../votingMachines/VotingMachineCallbacksInterface.sol"; -import "openzeppelin-solidity/contracts/ownership/Ownable.sol"; -import "./Debug.sol"; -import "../controller/Reputation.sol"; -import "../votingMachines/AbsoluteVote.sol"; - -contract AbsoluteVoteExecuteMock is Debug, VotingMachineCallbacksInterface, ProposalExecuteInterface, Ownable { - Reputation public reputation; - AbsoluteVote public absoluteVote; - mapping(bytes32 => uint256) public proposalsBlockNumbers; - - event NewProposal( - bytes32 indexed _proposalId, - address indexed _organization, - uint256 _numOfChoices, - address _proposer, - bytes32 _paramsHash - ); - - /** - * @dev Constructor - */ - constructor(Reputation _reputation, AbsoluteVote _absoluteVote) public { - reputation = _reputation; - absoluteVote = _absoluteVote; - transferOwnership(address(_absoluteVote)); - } - - function mintReputation( - uint256 _amount, - address _beneficiary, - bytes32 - ) external onlyOwner returns (bool) { - return reputation.mint(_beneficiary, _amount); - } - - function burnReputation( - uint256 _amount, - address _beneficiary, - bytes32 - ) external onlyOwner returns (bool) { - return reputation.burn(_beneficiary, _amount); - } - - function stakingTokenTransfer( - IERC20 _stakingToken, - address _beneficiary, - uint256 _amount, - bytes32 - ) external onlyOwner returns (bool) { - return _stakingToken.transfer(_beneficiary, _amount); - } - - function executeProposal(bytes32 _proposalId, int256 _decision) external returns (bool) { - emit LogBytes32(_proposalId); - emit LogInt(_decision); - return true; - } - - function propose( - uint256 _numOfChoices, - bytes32 _paramsHash, - address, - address _proposer, - address _organization - ) external returns (bytes32) { - bytes32 proposalId = absoluteVote.propose(_numOfChoices, _paramsHash, _proposer, _organization); - proposalsBlockNumbers[proposalId] = block.number; - - return proposalId; - } - - //this function is used only for testing purpose on this mock contract - function burnReputationTest( - uint256 _amount, - address _beneficiary, - bytes32 - ) external returns (bool) { - return reputation.burn(_beneficiary, _amount); - } - - function setProposal(bytes32 _proposalId) external returns (bool) { - proposalsBlockNumbers[_proposalId] = block.number; - } - - function getTotalReputationSupply(bytes32 _proposalId) external view returns (uint256) { - return reputation.totalSupplyAt(proposalsBlockNumbers[_proposalId]); - } - - function reputationOf(address _owner, bytes32 _proposalId) external view returns (uint256) { - return reputation.balanceOfAt(_owner, proposalsBlockNumbers[_proposalId]); - } - - function balanceOfStakingToken(IERC20 _stakingToken, bytes32) external view returns (uint256) { - return _stakingToken.balanceOf(address(this)); - } -} diff --git a/contracts/daostack/test/Debug.sol b/contracts/daostack/test/Debug.sol deleted file mode 100644 index 81afcb38..00000000 --- a/contracts/daostack/test/Debug.sol +++ /dev/null @@ -1,15 +0,0 @@ -pragma solidity 0.5.17; - -/* - A contract you can inherit from that has some useful Events to print statements. -*/ - -contract Debug { - event LogAddress(address _msg); - event LogInt(int256 _msg); - event LogString(string _msg); - event LogUint(uint256 _msg); - event LogBytes(bytes _msg); - event LogBytes32(bytes32 _msg); - event LogBool(bool _msg); -} diff --git a/contracts/daostack/test/GenesisProtocolCallbacksMock.sol b/contracts/daostack/test/GenesisProtocolCallbacksMock.sol deleted file mode 100644 index 251248db..00000000 --- a/contracts/daostack/test/GenesisProtocolCallbacksMock.sol +++ /dev/null @@ -1,111 +0,0 @@ -pragma solidity 0.5.17; - -import "../votingMachines/VotingMachineCallbacksInterface.sol"; -import "../votingMachines/ProposalExecuteInterface.sol"; -import "../votingMachines/GenesisProtocol.sol"; -import "../controller/Reputation.sol"; -import "openzeppelin-solidity/contracts/ownership/Ownable.sol"; -import "./Debug.sol"; - -contract GenesisProtocolCallbacksMock is Debug, VotingMachineCallbacksInterface, ProposalExecuteInterface, Ownable { - Reputation public reputation; - IERC20 public stakingToken; - GenesisProtocol public genesisProtocol; - mapping(bytes32 => uint256) public proposalsBlockNumbers; - - event NewProposal( - bytes32 indexed _proposalId, - address indexed _organization, - uint256 _numOfChoices, - address _proposer, - bytes32 _paramsHash - ); - - /** - * @dev Constructor - */ - constructor( - Reputation _reputation, - IERC20 _stakingToken, - GenesisProtocol _genesisProtocol - ) public { - reputation = _reputation; - stakingToken = _stakingToken; - genesisProtocol = _genesisProtocol; - transferOwnership(address(genesisProtocol)); - } - - function mintReputation( - uint256 _amount, - address _beneficiary, - bytes32 - ) external onlyOwner returns (bool) { - return reputation.mint(_beneficiary, _amount); - } - - function burnReputation( - uint256 _amount, - address _beneficiary, - bytes32 - ) external onlyOwner returns (bool) { - return reputation.burn(_beneficiary, _amount); - } - - function stakingTokenTransfer( - IERC20 _stakingToken, - address _beneficiary, - uint256 _amount, - bytes32 - ) external onlyOwner returns (bool) { - return _stakingToken.transfer(_beneficiary, _amount); - } - - function setParameters(uint256[11] calldata _params, address _voteOnBehalf) external returns (bytes32) { - return genesisProtocol.setParameters(_params, _voteOnBehalf); - } - - function executeProposal(bytes32 _proposalId, int256 _decision) external returns (bool) { - emit LogBytes32(_proposalId); - emit LogInt(_decision); - return true; - } - - function propose( - uint256 _numOfChoices, - bytes32 _paramsHash, - address, - address _proposer, - address _organization - ) external returns (bytes32) { - bytes32 proposalId = genesisProtocol.propose(_numOfChoices, _paramsHash, _proposer, _organization); - emit NewProposal(proposalId, address(this), _numOfChoices, _proposer, _paramsHash); - proposalsBlockNumbers[proposalId] = block.number; - - return proposalId; - } - - //this function is used only for testing purpose on this mock contract - function burnReputationTest( - uint256 _amount, - address _beneficiary, - bytes32 - ) external returns (bool) { - return reputation.burn(_beneficiary, _amount); - } - - function setProposal(bytes32 _proposalId) external returns (bool) { - proposalsBlockNumbers[_proposalId] = block.number; - } - - function getTotalReputationSupply(bytes32 _proposalId) external view returns (uint256) { - return reputation.totalSupplyAt(proposalsBlockNumbers[_proposalId]); - } - - function balanceOfStakingToken(IERC20 _stakingToken, bytes32) external view returns (uint256) { - return _stakingToken.balanceOf(address(this)); - } - - function reputationOf(address _owner, bytes32 _proposalId) external view returns (uint256) { - return reputation.balanceOfAt(_owner, proposalsBlockNumbers[_proposalId]); - } -} diff --git a/contracts/daostack/test/RealMathTester.sol b/contracts/daostack/test/RealMathTester.sol deleted file mode 100644 index 55059015..00000000 --- a/contracts/daostack/test/RealMathTester.sol +++ /dev/null @@ -1,20 +0,0 @@ -pragma solidity 0.5.17; - -import "../libs/RealMath.sol"; - -contract RealMathTester { - using RealMath for uint216; - using RealMath for uint256; - - function power( - uint216 num, - uint216 den, - uint256 exp - ) public pure returns (uint256) { - return (num.fraction(den)).pow(exp); - } - - function fraction(uint216 num, uint216 den) public pure returns (uint256) { - return num.fraction(den); - } -} diff --git a/contracts/daostack/universalSchemes/ContributionReward.sol b/contracts/daostack/universalSchemes/ContributionReward.sol deleted file mode 100644 index f6045830..00000000 --- a/contracts/daostack/universalSchemes/ContributionReward.sol +++ /dev/null @@ -1,470 +0,0 @@ -pragma solidity ^0.5.4; - -import "../votingMachines/IntVoteInterface.sol"; -import "../votingMachines/VotingMachineCallbacksInterface.sol"; -import "./UniversalScheme.sol"; -import "../votingMachines/VotingMachineCallbacks.sol"; - -/** - * @title A scheme for proposing and rewarding contributions to an organization - * @dev An agent can ask an organization to recognize a contribution and reward - * him with token, reputation, ether or any combination. - */ - -contract ContributionReward is UniversalScheme, VotingMachineCallbacks, ProposalExecuteInterface { - using SafeMath for uint256; - - event NewContributionProposal( - address indexed _avatar, - bytes32 indexed _proposalId, - address indexed _intVoteInterface, - string _descriptionHash, - int256 _reputationChange, - uint256[5] _rewards, - IERC20 _externalToken, - address _beneficiary - ); - - event ProposalExecuted(address indexed _avatar, bytes32 indexed _proposalId, int256 _param); - - event RedeemReputation( - address indexed _avatar, - bytes32 indexed _proposalId, - address indexed _beneficiary, - int256 _amount - ); - - event RedeemEther( - address indexed _avatar, - bytes32 indexed _proposalId, - address indexed _beneficiary, - uint256 _amount - ); - - event RedeemNativeToken( - address indexed _avatar, - bytes32 indexed _proposalId, - address indexed _beneficiary, - uint256 _amount - ); - - event RedeemExternalToken( - address indexed _avatar, - bytes32 indexed _proposalId, - address indexed _beneficiary, - uint256 _amount - ); - - // A struct holding the data for a contribution proposal - struct ContributionProposal { - uint256 nativeTokenReward; // Reward asked in the native token of the organization. - int256 reputationChange; // Organization reputation reward requested. - uint256 ethReward; - IERC20 externalToken; - uint256 externalTokenReward; - address payable beneficiary; - uint256 periodLength; - uint256 numberOfPeriods; - uint256 executionTime; - uint256[4] redeemedPeriods; - } - - // A mapping from the organization (Avatar) address to the saved data of the organization: - mapping(address => mapping(bytes32 => ContributionProposal)) public organizationsProposals; - - // A mapping from hashes to parameters (use to store a particular configuration on the controller) - struct Parameters { - bytes32 voteApproveParams; - IntVoteInterface intVote; - } - - // A mapping from hashes to parameters (use to store a particular configuration on the controller) - mapping(bytes32 => Parameters) public parameters; - - /** - * @dev execution of proposals, can only be called by the voting machine in which the vote is held. - * @param _proposalId the ID of the voting in the voting machine - * @param _param a parameter of the voting result, 1 yes and 2 is no. - */ - function executeProposal(bytes32 _proposalId, int256 _param) - external - onlyVotingMachine(_proposalId) - returns (bool) - { - ProposalInfo memory proposal = proposalsInfo[msg.sender][_proposalId]; - require(organizationsProposals[address(proposal.avatar)][_proposalId].executionTime == 0); - require(organizationsProposals[address(proposal.avatar)][_proposalId].beneficiary != address(0)); - // Check if vote was successful: - if (_param == 1) { - // solhint-disable-next-line not-rely-on-time - organizationsProposals[address(proposal.avatar)][_proposalId].executionTime = now; - } - emit ProposalExecuted(address(proposal.avatar), _proposalId, _param); - return true; - } - - /** - * @dev hash the parameters, save them if necessary, and return the hash value - */ - function setParameters(bytes32 _voteApproveParams, IntVoteInterface _intVote) public returns (bytes32) { - bytes32 paramsHash = getParametersHash(_voteApproveParams, _intVote); - parameters[paramsHash].voteApproveParams = _voteApproveParams; - parameters[paramsHash].intVote = _intVote; - return paramsHash; - } - - /** - * @dev return a hash of the given parameters - * @param _voteApproveParams parameters for the voting machine used to approve a contribution - * @param _intVote the voting machine used to approve a contribution - * @return a hash of the parameters - */ - function getParametersHash(bytes32 _voteApproveParams, IntVoteInterface _intVote) public pure returns (bytes32) { - return (keccak256(abi.encodePacked(_voteApproveParams, _intVote))); - } - - /** - * @dev Submit a proposal for a reward for a contribution: - * @param _avatar Avatar of the organization that the contribution was made for - * @param _descriptionHash A hash of the proposal's description - * @param _reputationChange - Amount of reputation change requested .Can be negative. - * @param _rewards rewards array: - * rewards[0] - Amount of tokens requested per period - * rewards[1] - Amount of ETH requested per period - * rewards[2] - Amount of external tokens requested per period - * rewards[3] - Period length - if set to zero it allows immediate redeeming after execution. - * rewards[4] - Number of periods - * @param _externalToken Address of external token, if reward is requested there - * @param _beneficiary Who gets the rewards - */ - function proposeContributionReward( - Avatar _avatar, - string memory _descriptionHash, - int256 _reputationChange, - uint256[5] memory _rewards, - IERC20 _externalToken, - address payable _beneficiary - ) public returns (bytes32) { - validateProposalParams(_reputationChange, _rewards); - Parameters memory controllerParams = parameters[getParametersFromController(_avatar)]; - - bytes32 contributionId = controllerParams.intVote.propose( - 2, - controllerParams.voteApproveParams, - msg.sender, - address(_avatar) - ); - - address payable beneficiary = _beneficiary; - if (beneficiary == address(0)) { - beneficiary = msg.sender; - } - - ContributionProposal memory proposal = ContributionProposal({ - nativeTokenReward: _rewards[0], - reputationChange: _reputationChange, - ethReward: _rewards[1], - externalToken: _externalToken, - externalTokenReward: _rewards[2], - beneficiary: beneficiary, - periodLength: _rewards[3], - numberOfPeriods: _rewards[4], - executionTime: 0, - redeemedPeriods: [uint256(0), uint256(0), uint256(0), uint256(0)] - }); - organizationsProposals[address(_avatar)][contributionId] = proposal; - - emit NewContributionProposal( - address(_avatar), - contributionId, - address(controllerParams.intVote), - _descriptionHash, - _reputationChange, - _rewards, - _externalToken, - beneficiary - ); - - proposalsInfo[address(controllerParams.intVote)][contributionId] = ProposalInfo({ - blockNumber: block.number, - avatar: _avatar - }); - return contributionId; - } - - /** - * @dev RedeemReputation reward for proposal - * @param _proposalId the ID of the voting in the voting machine - * @param _avatar address of the controller - * @return reputation the redeemed reputation. - */ - function redeemReputation(bytes32 _proposalId, Avatar _avatar) public returns (int256 reputation) { - ContributionProposal memory _proposal = organizationsProposals[address(_avatar)][_proposalId]; - ContributionProposal storage proposal = organizationsProposals[address(_avatar)][_proposalId]; - require(proposal.executionTime != 0); - uint256 periodsToPay = getPeriodsToPay(_proposalId, address(_avatar), 0); - - //set proposal reward to zero to prevent reentrancy attack. - proposal.reputationChange = 0; - reputation = int256(periodsToPay) * _proposal.reputationChange; - if (reputation > 0) { - require( - ControllerInterface(_avatar.owner()).mintReputation( - uint256(reputation), - _proposal.beneficiary, - address(_avatar) - ) - ); - } else if (reputation < 0) { - require( - ControllerInterface(_avatar.owner()).burnReputation( - uint256(reputation * (-1)), - _proposal.beneficiary, - address(_avatar) - ) - ); - } - if (reputation != 0) { - proposal.redeemedPeriods[0] = proposal.redeemedPeriods[0].add(periodsToPay); - emit RedeemReputation(address(_avatar), _proposalId, _proposal.beneficiary, reputation); - } - //restore proposal reward. - proposal.reputationChange = _proposal.reputationChange; - } - - /** - * @dev RedeemNativeToken reward for proposal - * @param _proposalId the ID of the voting in the voting machine - * @param _avatar address of the controller - * @return amount the redeemed nativeToken. - */ - function redeemNativeToken(bytes32 _proposalId, Avatar _avatar) public returns (uint256 amount) { - ContributionProposal memory _proposal = organizationsProposals[address(_avatar)][_proposalId]; - ContributionProposal storage proposal = organizationsProposals[address(_avatar)][_proposalId]; - require(proposal.executionTime != 0); - uint256 periodsToPay = getPeriodsToPay(_proposalId, address(_avatar), 1); - //set proposal rewards to zero to prevent reentrancy attack. - proposal.nativeTokenReward = 0; - - amount = periodsToPay.mul(_proposal.nativeTokenReward); - if (amount > 0) { - require(ControllerInterface(_avatar.owner()).mintTokens(amount, _proposal.beneficiary, address(_avatar))); - proposal.redeemedPeriods[1] = proposal.redeemedPeriods[1].add(periodsToPay); - emit RedeemNativeToken(address(_avatar), _proposalId, _proposal.beneficiary, amount); - } - - //restore proposal reward. - proposal.nativeTokenReward = _proposal.nativeTokenReward; - } - - /** - * @dev RedeemEther reward for proposal - * @param _proposalId the ID of the voting in the voting machine - * @param _avatar address of the controller - * @return amount ether redeemed amount - */ - function redeemEther(bytes32 _proposalId, Avatar _avatar) public returns (uint256 amount) { - ContributionProposal memory _proposal = organizationsProposals[address(_avatar)][_proposalId]; - ContributionProposal storage proposal = organizationsProposals[address(_avatar)][_proposalId]; - require(proposal.executionTime != 0); - uint256 periodsToPay = getPeriodsToPay(_proposalId, address(_avatar), 2); - //set proposal rewards to zero to prevent reentrancy attack. - proposal.ethReward = 0; - amount = periodsToPay.mul(_proposal.ethReward); - - if (amount > 0) { - require(ControllerInterface(_avatar.owner()).sendEther(amount, _proposal.beneficiary, _avatar)); - proposal.redeemedPeriods[2] = proposal.redeemedPeriods[2].add(periodsToPay); - emit RedeemEther(address(_avatar), _proposalId, _proposal.beneficiary, amount); - } - - //restore proposal reward. - proposal.ethReward = _proposal.ethReward; - } - - /** - * @dev RedeemNativeToken reward for proposal - * @param _proposalId the ID of the voting in the voting machine - * @param _avatar address of the controller - * @return amount the external token redeemed amount - */ - function redeemExternalToken(bytes32 _proposalId, Avatar _avatar) public returns (uint256 amount) { - ContributionProposal memory _proposal = organizationsProposals[address(_avatar)][_proposalId]; - ContributionProposal storage proposal = organizationsProposals[address(_avatar)][_proposalId]; - require(proposal.executionTime != 0); - uint256 periodsToPay = getPeriodsToPay(_proposalId, address(_avatar), 3); - //set proposal rewards to zero to prevent reentrancy attack. - proposal.externalTokenReward = 0; - - if (proposal.externalToken != IERC20(0) && _proposal.externalTokenReward > 0) { - amount = periodsToPay.mul(_proposal.externalTokenReward); - if (amount > 0) { - require( - ControllerInterface(_avatar.owner()).externalTokenTransfer( - _proposal.externalToken, - _proposal.beneficiary, - amount, - _avatar - ) - ); - proposal.redeemedPeriods[3] = proposal.redeemedPeriods[3].add(periodsToPay); - emit RedeemExternalToken(address(_avatar), _proposalId, _proposal.beneficiary, amount); - } - } - //restore proposal reward. - proposal.externalTokenReward = _proposal.externalTokenReward; - } - - /** - * @dev redeem rewards for proposal - * @param _proposalId the ID of the voting in the voting machine - * @param _avatar address of the controller - * @param _whatToRedeem whatToRedeem array: - * whatToRedeem[0] - reputation - * whatToRedeem[1] - nativeTokenReward - * whatToRedeem[2] - Ether - * whatToRedeem[3] - ExternalToken - * @return result boolean array for each redeem type. - */ - function redeem( - bytes32 _proposalId, - Avatar _avatar, - bool[4] memory _whatToRedeem - ) - public - returns ( - int256 reputationReward, - uint256 nativeTokenReward, - uint256 etherReward, - uint256 externalTokenReward - ) - { - if (_whatToRedeem[0]) { - reputationReward = redeemReputation(_proposalId, _avatar); - } - - if (_whatToRedeem[1]) { - nativeTokenReward = redeemNativeToken(_proposalId, _avatar); - } - - if (_whatToRedeem[2]) { - etherReward = redeemEther(_proposalId, _avatar); - } - - if (_whatToRedeem[3]) { - externalTokenReward = redeemExternalToken(_proposalId, _avatar); - } - } - - /** - * @dev getPeriodsToPay return the periods left to be paid for reputation,nativeToken,ether or externalToken. - * The function ignore the reward amount to be paid (which can be zero). - * @param _proposalId the ID of the voting in the voting machine - * @param _avatar address of the controller - * @param _redeemType - the type of the reward : - * 0 - reputation - * 1 - nativeTokenReward - * 2 - Ether - * 3 - ExternalToken - * @return periods left to be paid. - */ - function getPeriodsToPay( - bytes32 _proposalId, - address _avatar, - uint256 _redeemType - ) public view returns (uint256) { - require(_redeemType <= 3, "should be in the redeemedPeriods range"); - ContributionProposal memory _proposal = organizationsProposals[_avatar][_proposalId]; - if (_proposal.executionTime == 0) return 0; - uint256 periodsFromExecution; - if (_proposal.periodLength > 0) { - // solhint-disable-next-line not-rely-on-time - periodsFromExecution = (now.sub(_proposal.executionTime)) / (_proposal.periodLength); - } - uint256 periodsToPay; - if ((_proposal.periodLength == 0) || (periodsFromExecution >= _proposal.numberOfPeriods)) { - periodsToPay = _proposal.numberOfPeriods.sub(_proposal.redeemedPeriods[_redeemType]); - } else { - periodsToPay = periodsFromExecution.sub(_proposal.redeemedPeriods[_redeemType]); - } - return periodsToPay; - } - - /** - * @dev getRedeemedPeriods return the already redeemed periods for reputation, nativeToken, ether or externalToken. - * @param _proposalId the ID of the voting in the voting machine - * @param _avatar address of the controller - * @param _redeemType - the type of the reward : - * 0 - reputation - * 1 - nativeTokenReward - * 2 - Ether - * 3 - ExternalToken - * @return redeemed period. - */ - function getRedeemedPeriods( - bytes32 _proposalId, - address _avatar, - uint256 _redeemType - ) public view returns (uint256) { - return organizationsProposals[_avatar][_proposalId].redeemedPeriods[_redeemType]; - } - - function getProposalEthReward(bytes32 _proposalId, address _avatar) public view returns (uint256) { - return organizationsProposals[_avatar][_proposalId].ethReward; - } - - function getProposalExternalTokenReward(bytes32 _proposalId, address _avatar) public view returns (uint256) { - return organizationsProposals[_avatar][_proposalId].externalTokenReward; - } - - function getProposalExternalToken(bytes32 _proposalId, address _avatar) public view returns (address) { - return address(organizationsProposals[_avatar][_proposalId].externalToken); - } - - function getProposalExecutionTime(bytes32 _proposalId, address _avatar) public view returns (uint256) { - return organizationsProposals[_avatar][_proposalId].executionTime; - } - - /** - * @dev validateProposalParams validate proposal's rewards parameters. - * The function check for potential overflow upon proposal's redeem. - * The function reverts if the params are not valid. - * @param _reputationChange - Amount of reputation change requested .Can be negative. - * @param _rewards rewards array: - * rewards[0] - Amount of tokens requested per period - * rewards[1] - Amount of ETH requested per period - * rewards[2] - Amount of external tokens requested per period - * rewards[3] - Period length - if set to zero it allows immediate redeeming after execution. - * rewards[4] - Number of periods - */ - function validateProposalParams(int256 _reputationChange, uint256[5] memory _rewards) private pure { - require(((_rewards[3] > 0) || (_rewards[4] == 1)), "periodLength equal 0 require numberOfPeriods to be 1"); - if (_rewards[4] > 0) { - // This is the only case of overflow not detected by the check below - require( - !(int256(_rewards[4]) == -1 && _reputationChange == (-2**255)), - "numberOfPeriods * _reputationChange will overflow" - ); - //check that numberOfPeriods * _reputationChange will not overflow - require( - (int256(_rewards[4]) * _reputationChange) / int256(_rewards[4]) == _reputationChange, - "numberOfPeriods * reputationChange will overflow" - ); - //check that numberOfPeriods * tokenReward will not overflow - require( - (_rewards[4] * _rewards[0]) / _rewards[4] == _rewards[0], - "numberOfPeriods * tokenReward will overflow" - ); - //check that numberOfPeriods * ethReward will not overflow - require( - (_rewards[4] * _rewards[1]) / _rewards[4] == _rewards[1], - "numberOfPeriods * ethReward will overflow" - ); - //check that numberOfPeriods * texternalTokenReward will not overflow - require( - (_rewards[4] * _rewards[2]) / _rewards[4] == _rewards[2], - "numberOfPeriods * texternalTokenReward will overflow" - ); - } - } -} diff --git a/contracts/daostack/universalSchemes/SchemeRegistrar.sol b/contracts/daostack/universalSchemes/SchemeRegistrar.sol deleted file mode 100644 index 448c50df..00000000 --- a/contracts/daostack/universalSchemes/SchemeRegistrar.sol +++ /dev/null @@ -1,191 +0,0 @@ -pragma solidity ^0.5.4; - -import "../votingMachines/IntVoteInterface.sol"; -import "../votingMachines/VotingMachineCallbacksInterface.sol"; -import "./UniversalScheme.sol"; -import "../votingMachines/VotingMachineCallbacks.sol"; - -/** - * @title A registrar for Schemes for organizations - * @dev The SchemeRegistrar is used for registering and unregistering schemes at organizations - */ - -contract SchemeRegistrar is UniversalScheme, VotingMachineCallbacks, ProposalExecuteInterface { - event NewSchemeProposal( - address indexed _avatar, - bytes32 indexed _proposalId, - address indexed _intVoteInterface, - address _scheme, - bytes32 _parametersHash, - bytes4 _permissions, - string _descriptionHash - ); - - event RemoveSchemeProposal( - address indexed _avatar, - bytes32 indexed _proposalId, - address indexed _intVoteInterface, - address _scheme, - string _descriptionHash - ); - - event ProposalExecuted(address indexed _avatar, bytes32 indexed _proposalId, int256 _param); - event ProposalDeleted(address indexed _avatar, bytes32 indexed _proposalId); - - // a SchemeProposal is a proposal to add or remove a scheme to/from the an organization - struct SchemeProposal { - address scheme; // - bool addScheme; // true: add a scheme, false: remove a scheme. - bytes32 parametersHash; - bytes4 permissions; - } - - // A mapping from the organization (Avatar) address to the saved data of the organization: - mapping(address => mapping(bytes32 => SchemeProposal)) public organizationsProposals; - - // A mapping from hashes to parameters (use to store a particular configuration on the controller) - struct Parameters { - bytes32 voteRegisterParams; - bytes32 voteRemoveParams; - IntVoteInterface intVote; - } - - mapping(bytes32 => Parameters) public parameters; - - /** - * @dev execution of proposals, can only be called by the voting machine in which the vote is held. - * @param _proposalId the ID of the voting in the voting machine - * @param _param a parameter of the voting result, 1 yes and 2 is no. - */ - function executeProposal(bytes32 _proposalId, int256 _param) - external - onlyVotingMachine(_proposalId) - returns (bool) - { - Avatar avatar = proposalsInfo[msg.sender][_proposalId].avatar; - SchemeProposal memory proposal = organizationsProposals[address(avatar)][_proposalId]; - require(proposal.scheme != address(0)); - delete organizationsProposals[address(avatar)][_proposalId]; - emit ProposalDeleted(address(avatar), _proposalId); - if (_param == 1) { - // Define controller and get the params: - ControllerInterface controller = ControllerInterface(avatar.owner()); - - // Add a scheme: - if (proposal.addScheme) { - require( - controller.registerScheme( - proposal.scheme, - proposal.parametersHash, - proposal.permissions, - address(avatar) - ) - ); - } - // Remove a scheme: - if (!proposal.addScheme) { - require(controller.unregisterScheme(proposal.scheme, address(avatar))); - } - } - emit ProposalExecuted(address(avatar), _proposalId, _param); - return true; - } - - /** - * @dev hash the parameters, save them if necessary, and return the hash value - */ - function setParameters( - bytes32 _voteRegisterParams, - bytes32 _voteRemoveParams, - IntVoteInterface _intVote - ) public returns (bytes32) { - bytes32 paramsHash = getParametersHash(_voteRegisterParams, _voteRemoveParams, _intVote); - parameters[paramsHash].voteRegisterParams = _voteRegisterParams; - parameters[paramsHash].voteRemoveParams = _voteRemoveParams; - parameters[paramsHash].intVote = _intVote; - return paramsHash; - } - - function getParametersHash( - bytes32 _voteRegisterParams, - bytes32 _voteRemoveParams, - IntVoteInterface _intVote - ) public pure returns (bytes32) { - return keccak256(abi.encodePacked(_voteRegisterParams, _voteRemoveParams, _intVote)); - } - - /** - * @dev create a proposal to register a scheme - * @param _avatar the address of the organization the scheme will be registered for - * @param _scheme the address of the scheme to be registered - * @param _parametersHash a hash of the configuration of the _scheme - * @param _permissions the permission of the scheme to be registered - * @param _descriptionHash proposal's description hash - * @return a proposal Id - * @dev NB: not only proposes the vote, but also votes for it - */ - function proposeScheme( - Avatar _avatar, - address _scheme, - bytes32 _parametersHash, - bytes4 _permissions, - string memory _descriptionHash - ) public returns (bytes32) { - // propose - require(_scheme != address(0), "scheme cannot be zero"); - Parameters memory controllerParams = parameters[getParametersFromController(_avatar)]; - - bytes32 proposalId = controllerParams.intVote.propose( - 2, - controllerParams.voteRegisterParams, - msg.sender, - address(_avatar) - ); - - SchemeProposal memory proposal = SchemeProposal({ - scheme: _scheme, - parametersHash: _parametersHash, - addScheme: true, - permissions: _permissions - }); - emit NewSchemeProposal( - address(_avatar), - proposalId, - address(controllerParams.intVote), - _scheme, - _parametersHash, - _permissions, - _descriptionHash - ); - organizationsProposals[address(_avatar)][proposalId] = proposal; - proposalsInfo[address(controllerParams.intVote)][proposalId] = ProposalInfo({ - blockNumber: block.number, - avatar: _avatar - }); - return proposalId; - } - - /** - * @dev propose to remove a scheme for a controller - * @param _avatar the address of the controller from which we want to remove a scheme - * @param _scheme the address of the scheme we want to remove - * @param _descriptionHash proposal description hash - * NB: not only registers the proposal, but also votes for it - */ - function proposeToRemoveScheme( - Avatar _avatar, - address _scheme, - string memory _descriptionHash - ) public returns (bytes32) { - require(_scheme != address(0), "scheme cannot be zero"); - bytes32 paramsHash = getParametersFromController(_avatar); - Parameters memory params = parameters[paramsHash]; - - IntVoteInterface intVote = params.intVote; - bytes32 proposalId = intVote.propose(2, params.voteRemoveParams, msg.sender, address(_avatar)); - organizationsProposals[address(_avatar)][proposalId].scheme = _scheme; - emit RemoveSchemeProposal(address(_avatar), proposalId, address(intVote), _scheme, _descriptionHash); - proposalsInfo[address(params.intVote)][proposalId] = ProposalInfo({blockNumber: block.number, avatar: _avatar}); - return proposalId; - } -} diff --git a/contracts/daostack/universalSchemes/UniversalScheme.sol b/contracts/daostack/universalSchemes/UniversalScheme.sol deleted file mode 100644 index 73894d51..00000000 --- a/contracts/daostack/universalSchemes/UniversalScheme.sol +++ /dev/null @@ -1,18 +0,0 @@ -pragma solidity ^0.5.4; - -import "./UniversalSchemeInterface.sol"; -import "../controller/ControllerInterface.sol"; -import "../controller/Avatar.sol"; - -contract UniversalScheme is UniversalSchemeInterface { - /** - * @dev get the parameters for the current scheme from the controller - */ - function getParametersFromController(Avatar _avatar) internal view returns (bytes32) { - require( - ControllerInterface(_avatar.owner()).isSchemeRegistered(address(this), address(_avatar)), - "scheme is not registered" - ); - return ControllerInterface(_avatar.owner()).getSchemeParameters(address(this), address(_avatar)); - } -} diff --git a/contracts/daostack/universalSchemes/UniversalSchemeInterface.sol b/contracts/daostack/universalSchemes/UniversalSchemeInterface.sol deleted file mode 100644 index 5dad27e5..00000000 --- a/contracts/daostack/universalSchemes/UniversalSchemeInterface.sol +++ /dev/null @@ -1,7 +0,0 @@ -pragma solidity ^0.5.4; - -import "../controller/Avatar.sol"; - -contract UniversalSchemeInterface { - function getParametersFromController(Avatar _avatar) internal view returns (bytes32); -} diff --git a/contracts/daostack/utils/Redeemer.sol b/contracts/daostack/utils/Redeemer.sol deleted file mode 100644 index 87ede785..00000000 --- a/contracts/daostack/utils/Redeemer.sol +++ /dev/null @@ -1,158 +0,0 @@ -pragma solidity 0.5.17; - -import "../universalSchemes/ContributionReward.sol"; - -// THIS IS NOT THE ORIGINAL REEDEMER FROM https://github.com/daostack/arc/blob/6edcc0e3ea4e49ec5181626dcfc7eae58df4f31b/contracts/utils/Redeemer.sol -// IS AN UPDATED VERSION - -contract Redeemer { - using SafeMath for uint256; - - /** - * @dev helper to redeem rewards for a proposal - * It calls execute on the proposal if it is not yet executed. - * It tries to redeem reputation and stake from the GenesisProtocol. - * It tries to redeem proposal rewards from the contribution rewards scheme. - * This function does not emit events. - * A client should listen to GenesisProtocol and ContributionReward redemption events - * to monitor redemption operations. - * @param _contributionReward contributionReward - * @param _genesisProtocol genesisProtocol - * @param _proposalId the ID of the voting in the voting machine - * @param _avatar address of the controller - * @param _beneficiary beneficiary - * @return gpRewards array - * gpRewards[0] - stakerTokenAmount - * gpRewards[1] - voterReputationAmount - * gpRewards[2] - proposerReputationAmount - * @return gpDaoBountyReward array - * gpDaoBountyReward[0] - staker dao bounty reward - - * will be zero for the case there is not enough tokens in avatar for the reward. - * gpDaoBountyReward[1] - staker potential dao bounty reward. - * @return executed bool true or false - * @return winningVote - * 1 - executed or closed and the winning vote is YES - * 2 - executed or closed and the winning vote is NO - * @return int256 crReputationReward Reputation - from ContributionReward - * @return int256 crNativeTokenReward NativeTokenReward - from ContributionReward - * @return int256 crEthReward Ether - from ContributionReward - * @return int256 crExternalTokenReward ExternalToken - from ContributionReward - */ - function redeem( - ContributionReward _contributionReward, - GenesisProtocol _genesisProtocol, - bytes32 _proposalId, - Avatar _avatar, - address _beneficiary - ) - external - returns ( - uint256[3] memory gpRewards, - uint256[2] memory gpDaoBountyReward, - bool executed, - uint256 winningVote, - int256 crReputationReward, - uint256 crNativeTokenReward, - uint256 crEthReward, - uint256 crExternalTokenReward - ) - { - bool callContributionReward; - (gpRewards, gpDaoBountyReward, executed, winningVote, callContributionReward) = genesisProtocolRedeem( - _genesisProtocol, - _proposalId, - _beneficiary - ); - if (callContributionReward) { - //redeem from contributionReward only if it executed - if (_contributionReward.getProposalExecutionTime(_proposalId, address(_avatar)) > 0) { - ( - crReputationReward, - crNativeTokenReward, - crEthReward, - crExternalTokenReward - ) = contributionRewardRedeem(_contributionReward, _proposalId, _avatar); - } - } - } - - function genesisProtocolRedeem( - GenesisProtocol _genesisProtocol, - bytes32 _proposalId, - address _beneficiary - ) - private - returns ( - uint256[3] memory gpRewards, - uint256[2] memory gpDaoBountyReward, - bool executed, - uint256 winningVote, - bool callContributionReward - ) - { - GenesisProtocol.ProposalState pState = _genesisProtocol.state(_proposalId); - - if ( - (pState == GenesisProtocolLogic.ProposalState.Queued) || - (pState == GenesisProtocolLogic.ProposalState.PreBoosted) || - (pState == GenesisProtocolLogic.ProposalState.Boosted) || - (pState == GenesisProtocolLogic.ProposalState.QuietEndingPeriod) - ) { - executed = _genesisProtocol.execute(_proposalId); - } - pState = _genesisProtocol.state(_proposalId); - if ( - (pState == GenesisProtocolLogic.ProposalState.Executed) || - (pState == GenesisProtocolLogic.ProposalState.ExpiredInQueue) - ) { - gpRewards = _genesisProtocol.redeem(_proposalId, _beneficiary); - if (pState == GenesisProtocolLogic.ProposalState.Executed) { - (gpDaoBountyReward[0], gpDaoBountyReward[1]) = _genesisProtocol.redeemDaoBounty( - _proposalId, - _beneficiary - ); - } - winningVote = _genesisProtocol.winningVote(_proposalId); - callContributionReward = true; - } - } - - function contributionRewardRedeem( - ContributionReward _contributionReward, - bytes32 _proposalId, - Avatar _avatar - ) - private - returns ( - int256 reputation, - uint256 nativeToken, - uint256 eth, - uint256 externalToken - ) - { - bool[4] memory whatToRedeem; - whatToRedeem[0] = true; //reputation - whatToRedeem[1] = true; //nativeToken - uint256 periodsToPay = _contributionReward.getPeriodsToPay(_proposalId, address(_avatar), 2); - uint256 ethReward = _contributionReward.getProposalEthReward(_proposalId, address(_avatar)); - uint256 externalTokenReward = _contributionReward.getProposalExternalTokenReward(_proposalId, address(_avatar)); - address externalTokenAddress = _contributionReward.getProposalExternalToken(_proposalId, address(_avatar)); - ethReward = periodsToPay.mul(ethReward); - if ((ethReward == 0) || (address(_avatar).balance < ethReward)) { - whatToRedeem[2] = false; - } else { - whatToRedeem[2] = true; - } - periodsToPay = _contributionReward.getPeriodsToPay(_proposalId, address(_avatar), 3); - externalTokenReward = periodsToPay.mul(externalTokenReward); - if ( - (externalTokenReward == 0) || - (IERC20(externalTokenAddress).balanceOf(address(_avatar)) < externalTokenReward) - ) { - whatToRedeem[3] = false; - } else { - whatToRedeem[3] = true; - } - (reputation, nativeToken, eth, externalToken) = _contributionReward.redeem(_proposalId, _avatar, whatToRedeem); - } -} diff --git a/contracts/daostack/votingMachines/AbsoluteVote.sol b/contracts/daostack/votingMachines/AbsoluteVote.sol deleted file mode 100644 index 29b86384..00000000 --- a/contracts/daostack/votingMachines/AbsoluteVote.sol +++ /dev/null @@ -1,292 +0,0 @@ -pragma solidity 0.5.17; - -import "../controller/Reputation.sol"; -import "./IntVoteInterface.sol"; -import "openzeppelin-solidity/contracts/math/SafeMath.sol"; -import "./VotingMachineCallbacksInterface.sol"; -import "./ProposalExecuteInterface.sol"; - -contract AbsoluteVote is IntVoteInterface { - using SafeMath for uint256; - - struct Parameters { - uint256 precReq; // how many percentages required for the proposal to be passed - address voteOnBehalf; //if this address is set so only this address is allowed - // to vote of behalf of someone else. - } - - struct Voter { - uint256 vote; // 0 - 'abstain' - uint256 reputation; // amount of voter's reputation - } - - struct Proposal { - bytes32 organizationId; // the organization Id - bool open; // voting open flag - address callbacks; - uint256 numOfChoices; - bytes32 paramsHash; // the hash of the parameters of the proposal - uint256 totalVotes; - mapping(uint256 => uint256) votes; - mapping(address => Voter) voters; - } - - event AVVoteProposal(bytes32 indexed _proposalId, bool _isProxyVote); - - mapping(bytes32 => Parameters) public parameters; // A mapping from hashes to parameters - mapping(bytes32 => Proposal) public proposals; // Mapping from the ID of the proposal to the proposal itself. - mapping(bytes32 => address) public organizations; - - uint256 public constant MAX_NUM_OF_CHOICES = 10; - uint256 public proposalsCnt; // Total amount of proposals - - /** - * @dev Check that the proposal is votable (open and not executed yet) - */ - modifier votable(bytes32 _proposalId) { - require(proposals[_proposalId].open); - _; - } - - /** - * @dev register a new proposal with the given parameters. Every proposal has a unique ID which is being - * generated by calculating keccak256 of a incremented counter. - * @param _numOfChoices number of voting choices - * @param _paramsHash defined the parameters of the voting machine used for this proposal - * @param _organization address - * @return proposal's id. - */ - function propose( - uint256 _numOfChoices, - bytes32 _paramsHash, - address, - address _organization - ) external returns (bytes32) { - // Check valid params and number of choices: - require(parameters[_paramsHash].precReq > 0); - require(_numOfChoices > 0 && _numOfChoices <= MAX_NUM_OF_CHOICES); - // Generate a unique ID: - bytes32 proposalId = keccak256(abi.encodePacked(this, proposalsCnt)); - proposalsCnt = proposalsCnt.add(1); - // Open proposal: - Proposal memory proposal; - proposal.numOfChoices = _numOfChoices; - proposal.paramsHash = _paramsHash; - proposal.callbacks = msg.sender; - proposal.organizationId = keccak256(abi.encodePacked(msg.sender, _organization)); - proposal.open = true; - proposals[proposalId] = proposal; - if (organizations[proposal.organizationId] == address(0)) { - if (_organization == address(0)) { - organizations[proposal.organizationId] = msg.sender; - } else { - organizations[proposal.organizationId] = _organization; - } - } - emit NewProposal(proposalId, organizations[proposal.organizationId], _numOfChoices, msg.sender, _paramsHash); - return proposalId; - } - - /** - * @dev voting function - * @param _proposalId id of the proposal - * @param _vote a value between 0 to and the proposal number of choices. - * @param _amount the reputation amount to vote with . if _amount == 0 it will use all voter reputation. - * @param _voter voter address - * @return bool true - the proposal has been executed - * false - otherwise. - */ - function vote( - bytes32 _proposalId, - uint256 _vote, - uint256 _amount, - address _voter - ) external votable(_proposalId) returns (bool) { - Proposal storage proposal = proposals[_proposalId]; - Parameters memory params = parameters[proposal.paramsHash]; - address voter; - if (params.voteOnBehalf != address(0)) { - require(msg.sender == params.voteOnBehalf); - voter = _voter; - } else { - voter = msg.sender; - } - return internalVote(_proposalId, voter, _vote, _amount); - } - - /** - * @dev Cancel the vote of the msg.sender: subtract the reputation amount from the votes - * and delete the voter from the proposal struct - * @param _proposalId id of the proposal - */ - function cancelVote(bytes32 _proposalId) external votable(_proposalId) { - cancelVoteInternal(_proposalId, msg.sender); - } - - /** - * @dev execute check if the proposal has been decided, and if so, execute the proposal - * @param _proposalId the id of the proposal - * @return bool true - the proposal has been executed - * false - otherwise. - */ - function execute(bytes32 _proposalId) external votable(_proposalId) returns (bool) { - return _execute(_proposalId); - } - - /** - * @dev getNumberOfChoices returns the number of choices possible in this proposal - * excluding the abstain vote (0) - * @param _proposalId the ID of the proposal - * @return uint256 that contains number of choices - */ - function getNumberOfChoices(bytes32 _proposalId) external view returns (uint256) { - return proposals[_proposalId].numOfChoices; - } - - /** - * @dev voteInfo returns the vote and the amount of reputation of the user committed to this proposal - * @param _proposalId the ID of the proposal - * @param _voter the address of the voter - * @return uint256 vote - the voters vote - * uint256 reputation - amount of reputation committed by _voter to _proposalId - */ - function voteInfo(bytes32 _proposalId, address _voter) external view returns (uint256, uint256) { - Voter memory voter = proposals[_proposalId].voters[_voter]; - return (voter.vote, voter.reputation); - } - - /** - * @dev voteStatus returns the reputation voted for a proposal for a specific voting choice. - * @param _proposalId the ID of the proposal - * @param _choice the index in the - * @return voted reputation for the given choice - */ - function voteStatus(bytes32 _proposalId, uint256 _choice) external view returns (uint256) { - return proposals[_proposalId].votes[_choice]; - } - - /** - * @dev isVotable check if the proposal is votable - * @param _proposalId the ID of the proposal - * @return bool true or false - */ - function isVotable(bytes32 _proposalId) external view returns (bool) { - return proposals[_proposalId].open; - } - - /** - * @dev isAbstainAllow returns if the voting machine allow abstain (0) - * @return bool true or false - */ - function isAbstainAllow() external pure returns (bool) { - return true; - } - - /** - * @dev getAllowedRangeOfChoices returns the allowed range of choices for a voting machine. - * @return min - minimum number of choices - max - maximum number of choices - */ - function getAllowedRangeOfChoices() external pure returns (uint256 min, uint256 max) { - return (0, MAX_NUM_OF_CHOICES); - } - - /** - * @dev hash the parameters, save them if necessary, and return the hash value - */ - function setParameters(uint256 _precReq, address _voteOnBehalf) public returns (bytes32) { - require(_precReq <= 100 && _precReq > 0); - bytes32 hashedParameters = getParametersHash(_precReq, _voteOnBehalf); - parameters[hashedParameters] = Parameters({precReq: _precReq, voteOnBehalf: _voteOnBehalf}); - return hashedParameters; - } - - /** - * @dev hashParameters returns a hash of the given parameters - */ - function getParametersHash(uint256 _precReq, address _voteOnBehalf) public pure returns (bytes32) { - return keccak256(abi.encodePacked(_precReq, _voteOnBehalf)); - } - - function cancelVoteInternal(bytes32 _proposalId, address _voter) internal { - Proposal storage proposal = proposals[_proposalId]; - Voter memory voter = proposal.voters[_voter]; - proposal.votes[voter.vote] = (proposal.votes[voter.vote]).sub(voter.reputation); - proposal.totalVotes = (proposal.totalVotes).sub(voter.reputation); - delete proposal.voters[_voter]; - emit CancelVoting(_proposalId, organizations[proposal.organizationId], _voter); - } - - function deleteProposal(bytes32 _proposalId) internal { - Proposal storage proposal = proposals[_proposalId]; - for (uint256 cnt = 0; cnt <= proposal.numOfChoices; cnt++) { - delete proposal.votes[cnt]; - } - delete proposals[_proposalId]; - } - - /** - * @dev execute check if the proposal has been decided, and if so, execute the proposal - * @param _proposalId the id of the proposal - * @return bool true - the proposal has been executed - * false - otherwise. - */ - function _execute(bytes32 _proposalId) internal votable(_proposalId) returns (bool) { - Proposal storage proposal = proposals[_proposalId]; - uint256 totalReputation = VotingMachineCallbacksInterface(proposal.callbacks).getTotalReputationSupply( - _proposalId - ); - uint256 precReq = parameters[proposal.paramsHash].precReq; - // Check if someone crossed the bar: - for (uint256 cnt = 0; cnt <= proposal.numOfChoices; cnt++) { - if (proposal.votes[cnt] > (totalReputation / 100) * precReq) { - Proposal memory tmpProposal = proposal; - deleteProposal(_proposalId); - emit ExecuteProposal(_proposalId, organizations[tmpProposal.organizationId], cnt, totalReputation); - return ProposalExecuteInterface(tmpProposal.callbacks).executeProposal(_proposalId, int256(cnt)); - } - } - return false; - } - - /** - * @dev Vote for a proposal, if the voter already voted, cancel the last vote and set a new one instead - * @param _proposalId id of the proposal - * @param _voter used in case the vote is cast for someone else - * @param _vote a value between 0 to and the proposal's number of choices. - * @return true in case of proposal execution otherwise false - * throws if proposal is not open or if it has been executed - * NB: executes the proposal if a decision has been reached - */ - function internalVote( - bytes32 _proposalId, - address _voter, - uint256 _vote, - uint256 _rep - ) internal returns (bool) { - Proposal storage proposal = proposals[_proposalId]; - // Check valid vote: - require(_vote <= proposal.numOfChoices); - // Check voter has enough reputation: - uint256 reputation = VotingMachineCallbacksInterface(proposal.callbacks).reputationOf(_voter, _proposalId); - require(reputation > 0, "_voter must have reputation"); - require(reputation >= _rep); - uint256 rep = _rep; - if (rep == 0) { - rep = reputation; - } - // If this voter has already voted, first cancel the vote: - if (proposal.voters[_voter].reputation != 0) { - cancelVoteInternal(_proposalId, _voter); - } - // The voting itself: - proposal.votes[_vote] = rep.add(proposal.votes[_vote]); - proposal.totalVotes = rep.add(proposal.totalVotes); - proposal.voters[_voter] = Voter({reputation: rep, vote: _vote}); - // Event: - emit VoteProposal(_proposalId, organizations[proposal.organizationId], _voter, _vote, rep); - emit AVVoteProposal(_proposalId, (_voter != msg.sender)); - // execute the proposal if this vote was decisive: - return _execute(_proposalId); - } -} diff --git a/contracts/daostack/votingMachines/DXDVotingMachineCallbacks.sol b/contracts/daostack/votingMachines/DXDVotingMachineCallbacks.sol deleted file mode 100644 index 440ac38d..00000000 --- a/contracts/daostack/votingMachines/DXDVotingMachineCallbacks.sol +++ /dev/null @@ -1,62 +0,0 @@ -pragma solidity ^0.5.4; - -import "../controller/ControllerInterface.sol"; - -import "../controller/Avatar.sol"; - -import "./VotingMachineCallbacksInterface.sol"; - -import "./IntVoteInterface.sol"; - -contract DXDVotingMachineCallbacks is VotingMachineCallbacksInterface { - IntVoteInterface public votingMachine; - - Avatar public avatar; - - modifier onlyVotingMachine() { - require(msg.sender == address(votingMachine), "only VotingMachine"); - - _; - } - - // proposalId -> block number - - mapping(bytes32 => uint256) public proposalsBlockNumber; - - function mintReputation( - uint256 _amount, - address _beneficiary, - bytes32 _proposalId - ) external onlyVotingMachine returns (bool) { - return ControllerInterface(avatar.owner()).mintReputation(_amount, _beneficiary, address(avatar)); - } - - function burnReputation( - uint256 _amount, - address _beneficiary, - bytes32 _proposalId - ) external onlyVotingMachine returns (bool) { - return ControllerInterface(avatar.owner()).burnReputation(_amount, _beneficiary, address(avatar)); - } - - function stakingTokenTransfer( - IERC20 _stakingToken, - address _beneficiary, - uint256 _amount, - bytes32 _proposalId - ) external onlyVotingMachine returns (bool) { - return ControllerInterface(avatar.owner()).externalTokenTransfer(_stakingToken, _beneficiary, _amount, avatar); - } - - function balanceOfStakingToken(IERC20 _stakingToken, bytes32 _proposalId) external view returns (uint256) { - return _stakingToken.balanceOf(address(avatar)); - } - - function getTotalReputationSupply(bytes32 _proposalId) external view returns (uint256) { - return Avatar(avatar).nativeReputation().totalSupplyAt(proposalsBlockNumber[_proposalId]); - } - - function reputationOf(address _owner, bytes32 _proposalId) external view returns (uint256) { - return Avatar(avatar).nativeReputation().balanceOfAt(_owner, proposalsBlockNumber[_proposalId]); - } -} diff --git a/contracts/daostack/votingMachines/GenesisProtocol.sol b/contracts/daostack/votingMachines/GenesisProtocol.sol deleted file mode 100644 index 475eb48d..00000000 --- a/contracts/daostack/votingMachines/GenesisProtocol.sol +++ /dev/null @@ -1,289 +0,0 @@ -pragma solidity 0.5.17; - -import "openzeppelin-solidity/contracts/cryptography/ECDSA.sol"; -import "./GenesisProtocolLogic.sol"; - -/** - * @title GenesisProtocol implementation -an organization's voting machine scheme. - */ -contract GenesisProtocol is IntVoteInterface, GenesisProtocolLogic { - using ECDSA for bytes32; - - // Digest describing the data the user signs according EIP 712. - // Needs to match what is passed to Metamask. - bytes32 public constant DELEGATION_HASH_EIP712 = - keccak256( - abi.encodePacked( - "address GenesisProtocolAddress", - "bytes32 ProposalId", - "uint256 Vote", - "uint256 AmountToStake", - "uint256 Nonce" - ) - ); - - mapping(address => uint256) public stakesNonce; //stakes Nonce - - /** - * @dev Constructor - */ - constructor(IERC20 _stakingToken) - public - // solhint-disable-next-line no-empty-blocks - GenesisProtocolLogic(_stakingToken) - {} - - /** - * @dev staking function - * @param _proposalId id of the proposal - * @param _vote NO(2) or YES(1). - * @param _amount the betting amount - * @return bool true - the proposal has been executed - * false - otherwise. - */ - function stake( - bytes32 _proposalId, - uint256 _vote, - uint256 _amount - ) external returns (bool) { - return _stake(_proposalId, _vote, _amount, msg.sender); - } - - /** - * @dev stakeWithSignature function - * @param _proposalId id of the proposal - * @param _vote NO(2) or YES(1). - * @param _amount the betting amount - * @param _nonce nonce value ,it is part of the signature to ensure that - a signature can be received only once. - * @param _signatureType signature type - 1 - for web3.eth.sign - 2 - for eth_signTypedData according to EIP #712. - * @param _signature - signed data by the staker - * @return bool true - the proposal has been executed - * false - otherwise. - */ - function stakeWithSignature( - bytes32 _proposalId, - uint256 _vote, - uint256 _amount, - uint256 _nonce, - uint256 _signatureType, - bytes calldata _signature - ) external returns (bool) { - // Recreate the digest the user signed - bytes32 delegationDigest; - if (_signatureType == 2) { - delegationDigest = keccak256( - abi.encodePacked( - DELEGATION_HASH_EIP712, - keccak256(abi.encodePacked(address(this), _proposalId, _vote, _amount, _nonce)) - ) - ); - } else { - delegationDigest = keccak256(abi.encodePacked(address(this), _proposalId, _vote, _amount, _nonce)) - .toEthSignedMessageHash(); - } - address staker = delegationDigest.recover(_signature); - //a garbage staker address due to wrong signature will revert due to lack of approval and funds. - require(staker != address(0), "staker address cannot be 0"); - require(stakesNonce[staker] == _nonce); - stakesNonce[staker] = stakesNonce[staker].add(1); - return _stake(_proposalId, _vote, _amount, staker); - } - - /** - * @dev voting function - * @param _proposalId id of the proposal - * @param _vote NO(2) or YES(1). - * @param _amount the reputation amount to vote with . if _amount == 0 it will use all voter reputation. - * @param _voter voter address - * @return bool true - the proposal has been executed - * false - otherwise. - */ - function vote( - bytes32 _proposalId, - uint256 _vote, - uint256 _amount, - address _voter - ) external votable(_proposalId) returns (bool) { - Proposal storage proposal = proposals[_proposalId]; - Parameters memory params = parameters[proposal.paramsHash]; - address voter; - if (params.voteOnBehalf != address(0)) { - require(msg.sender == params.voteOnBehalf); - voter = _voter; - } else { - voter = msg.sender; - } - return internalVote(_proposalId, voter, _vote, _amount); - } - - /** - * @dev Cancel the vote of the msg.sender. - * cancel vote is not allow in genesisProtocol so this function doing nothing. - * This function is here in order to comply to the IntVoteInterface . - */ - function cancelVote(bytes32 _proposalId) external votable(_proposalId) { - //this is not allowed - return; - } - - /** - * @dev execute check if the proposal has been decided, and if so, execute the proposal - * @param _proposalId the id of the proposal - * @return bool true - the proposal has been executed - * false - otherwise. - */ - function execute(bytes32 _proposalId) external votable(_proposalId) returns (bool) { - return _execute(_proposalId); - } - - /** - * @dev getNumberOfChoices returns the number of choices possible in this proposal - * @return uint256 that contains number of choices - */ - function getNumberOfChoices(bytes32) external view returns (uint256) { - return NUM_OF_CHOICES; - } - - /** - * @dev getProposalTimes returns proposals times variables. - * @param _proposalId id of the proposal - * @return proposals times array - */ - function getProposalTimes(bytes32 _proposalId) external view returns (uint256[3] memory times) { - return proposals[_proposalId].times; - } - - /** - * @dev voteInfo returns the vote and the amount of reputation of the user committed to this proposal - * @param _proposalId the ID of the proposal - * @param _voter the address of the voter - * @return uint256 vote - the voters vote - * uint256 reputation - amount of reputation committed by _voter to _proposalId - */ - function voteInfo(bytes32 _proposalId, address _voter) external view returns (uint256, uint256) { - Voter memory voter = proposals[_proposalId].voters[_voter]; - return (voter.vote, voter.reputation); - } - - /** - * @dev voteStatus returns the reputation voted for a proposal for a specific voting choice. - * @param _proposalId the ID of the proposal - * @param _choice the index in the - * @return voted reputation for the given choice - */ - function voteStatus(bytes32 _proposalId, uint256 _choice) external view returns (uint256) { - return proposals[_proposalId].votes[_choice]; - } - - /** - * @dev isVotable check if the proposal is votable - * @param _proposalId the ID of the proposal - * @return bool true or false - */ - function isVotable(bytes32 _proposalId) external view returns (bool) { - return _isVotable(_proposalId); - } - - /** - * @dev proposalStatus return the total votes and stakes for a given proposal - * @param _proposalId the ID of the proposal - * @return uint256 preBoostedVotes YES - * @return uint256 preBoostedVotes NO - * @return uint256 total stakes YES - * @return uint256 total stakes NO - */ - function proposalStatus(bytes32 _proposalId) - external - view - returns ( - uint256, - uint256, - uint256, - uint256 - ) - { - return ( - proposals[_proposalId].preBoostedVotes[YES], - proposals[_proposalId].preBoostedVotes[NO], - proposals[_proposalId].stakes[YES], - proposals[_proposalId].stakes[NO] - ); - } - - /** - * @dev getProposalOrganization return the organizationId for a given proposal - * @param _proposalId the ID of the proposal - * @return bytes32 organization identifier - */ - function getProposalOrganization(bytes32 _proposalId) external view returns (bytes32) { - return (proposals[_proposalId].organizationId); - } - - /** - * @dev getStaker return the vote and stake amount for a given proposal and staker - * @param _proposalId the ID of the proposal - * @param _staker staker address - * @return uint256 vote - * @return uint256 amount - */ - function getStaker(bytes32 _proposalId, address _staker) external view returns (uint256, uint256) { - return (proposals[_proposalId].stakers[_staker].vote, proposals[_proposalId].stakers[_staker].amount); - } - - /** - * @dev voteStake return the amount stakes for a given proposal and vote - * @param _proposalId the ID of the proposal - * @param _vote vote number - * @return uint256 stake amount - */ - function voteStake(bytes32 _proposalId, uint256 _vote) external view returns (uint256) { - return proposals[_proposalId].stakes[_vote]; - } - - /** - * @dev voteStake return the winningVote for a given proposal - * @param _proposalId the ID of the proposal - * @return uint256 winningVote - */ - function winningVote(bytes32 _proposalId) external view returns (uint256) { - return proposals[_proposalId].winningVote; - } - - /** - * @dev voteStake return the state for a given proposal - * @param _proposalId the ID of the proposal - * @return ProposalState proposal state - */ - function state(bytes32 _proposalId) external view returns (ProposalState) { - return proposals[_proposalId].state; - } - - /** - * @dev isAbstainAllow returns if the voting machine allow abstain (0) - * @return bool true or false - */ - function isAbstainAllow() external pure returns (bool) { - return false; - } - - /** - * @dev getAllowedRangeOfChoices returns the allowed range of choices for a voting machine. - * @return min - minimum number of choices - max - maximum number of choices - */ - function getAllowedRangeOfChoices() external pure returns (uint256 min, uint256 max) { - return (YES, NO); - } - - /** - * @dev score return the proposal score - * @param _proposalId the ID of the proposal - * @return uint256 proposal score. - */ - function score(bytes32 _proposalId) public view returns (uint256) { - return _score(_proposalId); - } -} diff --git a/contracts/daostack/votingMachines/GenesisProtocolLogic.sol b/contracts/daostack/votingMachines/GenesisProtocolLogic.sol deleted file mode 100644 index f5c80549..00000000 --- a/contracts/daostack/votingMachines/GenesisProtocolLogic.sol +++ /dev/null @@ -1,817 +0,0 @@ -pragma solidity 0.5.17; - -import "./IntVoteInterface.sol"; -import {RealMath} from "../libs/RealMath.sol"; -import "./VotingMachineCallbacksInterface.sol"; -import "./ProposalExecuteInterface.sol"; -import "openzeppelin-solidity/contracts/math/SafeMath.sol"; -import "openzeppelin-solidity/contracts/math/Math.sol"; -import "openzeppelin-solidity/contracts/token/ERC20/IERC20.sol"; -import "openzeppelin-solidity/contracts/utils/Address.sol"; - -/** - * @title GenesisProtocol implementation -an organization's voting machine scheme. - */ -contract GenesisProtocolLogic is IntVoteInterface { - using SafeMath for uint256; - using Math for uint256; - using RealMath for uint216; - using RealMath for uint256; - using Address for address; - - enum ProposalState { - None, - ExpiredInQueue, - Executed, - Queued, - PreBoosted, - Boosted, - QuietEndingPeriod - } - enum ExecutionState { - None, - QueueBarCrossed, - QueueTimeOut, - PreBoostedBarCrossed, - BoostedTimeOut, - BoostedBarCrossed - } - - //Organization's parameters - struct Parameters { - uint256 queuedVoteRequiredPercentage; // the absolute vote percentages bar. - uint256 queuedVotePeriodLimit; //the time limit for a proposal to be in an absolute voting mode. - uint256 boostedVotePeriodLimit; //the time limit for a proposal to be in boost mode. - uint256 preBoostedVotePeriodLimit; //the time limit for a proposal - //to be in an preparation state (stable) before boosted. - uint256 thresholdConst; //constant for threshold calculation . - //threshold =thresholdConst ** (numberOfBoostedProposals) - uint256 limitExponentValue; // an upper limit for numberOfBoostedProposals - //in the threshold calculation to prevent overflow - uint256 quietEndingPeriod; //quite ending period - uint256 proposingRepReward; //proposer reputation reward. - uint256 votersReputationLossRatio; //Unsuccessful pre booster - //voters lose votersReputationLossRatio% of their reputation. - uint256 minimumDaoBounty; - uint256 daoBountyConst; //The DAO downstake for each proposal is calculate according to the formula - //(daoBountyConst * averageBoostDownstakes)/100 . - uint256 activationTime; //the point in time after which proposals can be created. - //if this address is set so only this address is allowed to vote of behalf of someone else. - address voteOnBehalf; - } - - struct Voter { - uint256 vote; // YES(1) ,NO(2) - uint256 reputation; // amount of voter's reputation - bool preBoosted; - } - - struct Staker { - uint256 vote; // YES(1) ,NO(2) - uint256 amount; // amount of staker's stake - uint256 amount4Bounty; // amount of staker's stake used for bounty reward calculation. - } - - struct Proposal { - bytes32 organizationId; // the organization unique identifier the proposal is target to. - address callbacks; // should fulfill voting callbacks interface. - ProposalState state; - uint256 winningVote; //the winning vote. - address proposer; - //the proposal boosted period limit . it is updated for the case of quiteWindow mode. - uint256 currentBoostedVotePeriodLimit; - bytes32 paramsHash; - uint256 daoBountyRemain; //use for checking sum zero bounty claims.it is set at the proposing time. - uint256 daoBounty; - uint256 totalStakes; // Total number of tokens staked which can be redeemable by stakers. - uint256 confidenceThreshold; - uint256 secondsFromTimeOutTillExecuteBoosted; - uint256[3] times; //times[0] - submittedTime - //times[1] - boostedPhaseTime - //times[2] -preBoostedPhaseTime; - bool daoRedeemItsWinnings; - // vote reputation - mapping(uint256 => uint256) votes; - // vote reputation - mapping(uint256 => uint256) preBoostedVotes; - // address voter - mapping(address => Voter) voters; - // vote stakes - mapping(uint256 => uint256) stakes; - // address staker - mapping(address => Staker) stakers; - } - - event Stake( - bytes32 indexed _proposalId, - address indexed _organization, - address indexed _staker, - uint256 _vote, - uint256 _amount - ); - - event Redeem( - bytes32 indexed _proposalId, - address indexed _organization, - address indexed _beneficiary, - uint256 _amount - ); - - event RedeemDaoBounty( - bytes32 indexed _proposalId, - address indexed _organization, - address indexed _beneficiary, - uint256 _amount - ); - - event RedeemReputation( - bytes32 indexed _proposalId, - address indexed _organization, - address indexed _beneficiary, - uint256 _amount - ); - - event StateChange(bytes32 indexed _proposalId, ProposalState _proposalState); - event GPExecuteProposal(bytes32 indexed _proposalId, ExecutionState _executionState); - event ExpirationCallBounty(bytes32 indexed _proposalId, address indexed _beneficiary, uint256 _amount); - event ConfidenceLevelChange(bytes32 indexed _proposalId, uint256 _confidenceThreshold); - - mapping(bytes32 => Parameters) public parameters; // A mapping from hashes to parameters - mapping(bytes32 => Proposal) public proposals; // Mapping from the ID of the proposal to the proposal itself. - mapping(bytes32 => uint256) public orgBoostedProposalsCnt; - //organizationId => organization - mapping(bytes32 => address) public organizations; - //organizationId => averageBoostDownstakes - mapping(bytes32 => uint256) public averagesDownstakesOfBoosted; - uint256 public constant NUM_OF_CHOICES = 2; - uint256 public constant NO = 2; - uint256 public constant YES = 1; - uint256 public proposalsCnt; // Total number of proposals - IERC20 public stakingToken; - address private constant GEN_TOKEN_ADDRESS = 0x543Ff227F64Aa17eA132Bf9886cAb5DB55DCAddf; - uint256 private constant MAX_BOOSTED_PROPOSALS = 4096; - - /** - * @dev Constructor - */ - constructor(IERC20 _stakingToken) public { - //The GEN token (staking token) address is hard coded in the contract by GEN_TOKEN_ADDRESS . - //This will work for a network which already hosted the GEN token on this address (e.g mainnet). - //If such contract address does not exist in the network (e.g ganache) - //the contract will use the _stakingToken param as the - //staking token address. - if (address(GEN_TOKEN_ADDRESS).isContract()) { - stakingToken = IERC20(GEN_TOKEN_ADDRESS); - } else { - stakingToken = _stakingToken; - } - } - - /** - * @dev Check that the proposal is votable - * a proposal is votable if it is in one of the following states: - * PreBoosted,Boosted,QuietEndingPeriod or Queued - */ - modifier votable(bytes32 _proposalId) { - require(_isVotable(_proposalId)); - _; - } - - /** - * @dev register a new proposal with the given parameters. Every proposal has a unique ID which is being - * generated by calculating keccak256 of a incremented counter. - * @param _paramsHash parameters hash - * @param _proposer address - * @param _organization address - */ - function propose( - uint256, - bytes32 _paramsHash, - address _proposer, - address _organization - ) external returns (bytes32) { - // solhint-disable-next-line not-rely-on-time - require(now > parameters[_paramsHash].activationTime, "not active yet"); - //Check parameters existence. - require(parameters[_paramsHash].queuedVoteRequiredPercentage >= 50); - // Generate a unique ID: - bytes32 proposalId = keccak256(abi.encodePacked(this, proposalsCnt)); - proposalsCnt = proposalsCnt.add(1); - // Open proposal: - Proposal memory proposal; - proposal.callbacks = msg.sender; - proposal.organizationId = keccak256(abi.encodePacked(msg.sender, _organization)); - - proposal.state = ProposalState.Queued; - // solhint-disable-next-line not-rely-on-time - proposal.times[0] = now; //submitted time - proposal.currentBoostedVotePeriodLimit = parameters[_paramsHash].boostedVotePeriodLimit; - proposal.proposer = _proposer; - proposal.winningVote = NO; - proposal.paramsHash = _paramsHash; - if (organizations[proposal.organizationId] == address(0)) { - if (_organization == address(0)) { - organizations[proposal.organizationId] = msg.sender; - } else { - organizations[proposal.organizationId] = _organization; - } - } - //calc dao bounty - uint256 daoBounty = parameters[_paramsHash] - .daoBountyConst - .mul(averagesDownstakesOfBoosted[proposal.organizationId]) - .div(100); - proposal.daoBountyRemain = daoBounty.max(parameters[_paramsHash].minimumDaoBounty); - proposals[proposalId] = proposal; - proposals[proposalId].stakes[NO] = proposal.daoBountyRemain; //dao downstake on the proposal - - emit NewProposal(proposalId, organizations[proposal.organizationId], NUM_OF_CHOICES, _proposer, _paramsHash); - return proposalId; - } - - /** - * @dev executeBoosted try to execute a boosted or QuietEndingPeriod proposal if it is expired - * it rewards the msg.sender with P % of the proposal's upstakes upon a successful call to this function. - * P = t/150, where t is the number of seconds passed since the the proposal's timeout. - * P is capped by 10%. - * @param _proposalId the id of the proposal - * @return uint256 expirationCallBounty the bounty amount for the expiration call - */ - function executeBoosted(bytes32 _proposalId) external returns (uint256 expirationCallBounty) { - Proposal storage proposal = proposals[_proposalId]; - require( - proposal.state == ProposalState.Boosted || proposal.state == ProposalState.QuietEndingPeriod, - "proposal state in not Boosted nor QuietEndingPeriod" - ); - require(_execute(_proposalId), "proposal need to expire"); - - proposal.secondsFromTimeOutTillExecuteBoosted = now.sub( // solhint-disable-next-line not-rely-on-time - proposal.currentBoostedVotePeriodLimit.add(proposal.times[1]) - ); - - expirationCallBounty = calcExecuteCallBounty(_proposalId); - proposal.totalStakes = proposal.totalStakes.sub(expirationCallBounty); - require(stakingToken.transfer(msg.sender, expirationCallBounty), "transfer to msg.sender failed"); - emit ExpirationCallBounty(_proposalId, msg.sender, expirationCallBounty); - } - - /** - * @dev hash the parameters, save them if necessary, and return the hash value - * @param _params a parameters array - * _params[0] - _queuedVoteRequiredPercentage, - * _params[1] - _queuedVotePeriodLimit, //the time limit for a proposal to be in an absolute voting mode. - * _params[2] - _boostedVotePeriodLimit, //the time limit for a proposal to be in an relative voting mode. - * _params[3] - _preBoostedVotePeriodLimit, //the time limit for a proposal to be in an preparation - * state (stable) before boosted. - * _params[4] -_thresholdConst - * _params[5] -_quietEndingPeriod - * _params[6] -_proposingRepReward - * _params[7] -_votersReputationLossRatio - * _params[8] -_minimumDaoBounty - * _params[9] -_daoBountyConst - * _params[10] -_activationTime - * @param _voteOnBehalf - authorized to vote on behalf of others. - */ - function setParameters( - uint256[11] calldata _params, //use array here due to stack too deep issue. - address _voteOnBehalf - ) external returns (bytes32) { - require(_params[0] <= 100 && _params[0] >= 50, "50 <= queuedVoteRequiredPercentage <= 100"); - require(_params[4] <= 16000 && _params[4] > 1000, "1000 < thresholdConst <= 16000"); - require(_params[7] <= 100, "votersReputationLossRatio <= 100"); - require(_params[2] >= _params[5], "boostedVotePeriodLimit >= quietEndingPeriod"); - require(_params[8] > 0, "minimumDaoBounty should be > 0"); - require(_params[9] > 0, "daoBountyConst should be > 0"); - - bytes32 paramsHash = getParametersHash(_params, _voteOnBehalf); - //set a limit for power for a given alpha to prevent overflow - uint256 limitExponent = 172; //for alpha less or equal 2 - uint256 j = 2; - for (uint256 i = 2000; i < 16000; i = i * 2) { - if ((_params[4] > i) && (_params[4] <= i * 2)) { - limitExponent = limitExponent / j; - break; - } - j++; - } - - parameters[paramsHash] = Parameters({ - queuedVoteRequiredPercentage: _params[0], - queuedVotePeriodLimit: _params[1], - boostedVotePeriodLimit: _params[2], - preBoostedVotePeriodLimit: _params[3], - thresholdConst: uint216(_params[4]).fraction(uint216(1000)), - limitExponentValue: limitExponent, - quietEndingPeriod: _params[5], - proposingRepReward: _params[6], - votersReputationLossRatio: _params[7], - minimumDaoBounty: _params[8], - daoBountyConst: _params[9], - activationTime: _params[10], - voteOnBehalf: _voteOnBehalf - }); - return paramsHash; - } - - /** - * @dev redeem a reward for a successful stake, vote or proposing. - * The function use a beneficiary address as a parameter (and not msg.sender) to enable - * users to redeem on behalf of someone else. - * @param _proposalId the ID of the proposal - * @param _beneficiary - the beneficiary address - * @return rewards - - * [0] stakerTokenReward - * [1] voterReputationReward - * [2] proposerReputationReward - */ - // solhint-disable-next-line function-max-lines,code-complexity - function redeem(bytes32 _proposalId, address _beneficiary) public returns (uint256[3] memory rewards) { - Proposal storage proposal = proposals[_proposalId]; - require( - (proposal.state == ProposalState.Executed) || (proposal.state == ProposalState.ExpiredInQueue), - "Proposal should be Executed or ExpiredInQueue" - ); - Parameters memory params = parameters[proposal.paramsHash]; - //as staker - Staker storage staker = proposal.stakers[_beneficiary]; - uint256 totalWinningStakes = proposal.stakes[proposal.winningVote]; - uint256 totalStakesLeftAfterCallBounty = proposal.stakes[NO].add(proposal.stakes[YES]).sub( - calcExecuteCallBounty(_proposalId) - ); - if (staker.amount > 0) { - if (proposal.state == ProposalState.ExpiredInQueue) { - //Stakes of a proposal that expires in Queue are sent back to stakers - rewards[0] = staker.amount; - } else if (staker.vote == proposal.winningVote) { - if (staker.vote == YES) { - if (proposal.daoBounty < totalStakesLeftAfterCallBounty) { - uint256 _totalStakes = totalStakesLeftAfterCallBounty.sub(proposal.daoBounty); - rewards[0] = (staker.amount.mul(_totalStakes)) / totalWinningStakes; - } - } else { - rewards[0] = (staker.amount.mul(totalStakesLeftAfterCallBounty)) / totalWinningStakes; - } - } - staker.amount = 0; - } - //dao redeem its winnings - if ( - proposal.daoRedeemItsWinnings == false && - _beneficiary == organizations[proposal.organizationId] && - proposal.state != ProposalState.ExpiredInQueue && - proposal.winningVote == NO - ) { - rewards[0] = rewards[0] - .add((proposal.daoBounty.mul(totalStakesLeftAfterCallBounty)) / totalWinningStakes) - .sub(proposal.daoBounty); - proposal.daoRedeemItsWinnings = true; - } - - //as voter - Voter storage voter = proposal.voters[_beneficiary]; - if ((voter.reputation != 0) && (voter.preBoosted)) { - if (proposal.state == ProposalState.ExpiredInQueue) { - //give back reputation for the voter - rewards[1] = ((voter.reputation.mul(params.votersReputationLossRatio)) / 100); - } else if (proposal.winningVote == voter.vote) { - uint256 lostReputation; - if (proposal.winningVote == YES) { - lostReputation = proposal.preBoostedVotes[NO]; - } else { - lostReputation = proposal.preBoostedVotes[YES]; - } - lostReputation = (lostReputation.mul(params.votersReputationLossRatio)) / 100; - rewards[1] = ((voter.reputation.mul(params.votersReputationLossRatio)) / 100).add( - (voter.reputation.mul(lostReputation)) / proposal.preBoostedVotes[proposal.winningVote] - ); - } - voter.reputation = 0; - } - //as proposer - if ((proposal.proposer == _beneficiary) && (proposal.winningVote == YES) && (proposal.proposer != address(0))) { - rewards[2] = params.proposingRepReward; - proposal.proposer = address(0); - } - if (rewards[0] != 0) { - proposal.totalStakes = proposal.totalStakes.sub(rewards[0]); - require(stakingToken.transfer(_beneficiary, rewards[0]), "transfer to beneficiary failed"); - emit Redeem(_proposalId, organizations[proposal.organizationId], _beneficiary, rewards[0]); - } - if (rewards[1].add(rewards[2]) != 0) { - VotingMachineCallbacksInterface(proposal.callbacks).mintReputation( - rewards[1].add(rewards[2]), - _beneficiary, - _proposalId - ); - emit RedeemReputation( - _proposalId, - organizations[proposal.organizationId], - _beneficiary, - rewards[1].add(rewards[2]) - ); - } - } - - /** - * @dev redeemDaoBounty a reward for a successful stake. - * The function use a beneficiary address as a parameter (and not msg.sender) to enable - * users to redeem on behalf of someone else. - * @param _proposalId the ID of the proposal - * @param _beneficiary - the beneficiary address - * @return redeemedAmount - redeem token amount - * @return potentialAmount - potential redeem token amount(if there is enough tokens bounty at the organization ) - */ - function redeemDaoBounty(bytes32 _proposalId, address _beneficiary) - public - returns (uint256 redeemedAmount, uint256 potentialAmount) - { - Proposal storage proposal = proposals[_proposalId]; - require(proposal.state == ProposalState.Executed); - uint256 totalWinningStakes = proposal.stakes[proposal.winningVote]; - Staker storage staker = proposal.stakers[_beneficiary]; - if ( - (staker.amount4Bounty > 0) && - (staker.vote == proposal.winningVote) && - (proposal.winningVote == YES) && - (totalWinningStakes != 0) - ) { - //as staker - potentialAmount = (staker.amount4Bounty * proposal.daoBounty) / totalWinningStakes; - } - if ( - (potentialAmount != 0) && - (VotingMachineCallbacksInterface(proposal.callbacks).balanceOfStakingToken(stakingToken, _proposalId) >= - potentialAmount) - ) { - staker.amount4Bounty = 0; - proposal.daoBountyRemain = proposal.daoBountyRemain.sub(potentialAmount); - require( - VotingMachineCallbacksInterface(proposal.callbacks).stakingTokenTransfer( - stakingToken, - _beneficiary, - potentialAmount, - _proposalId - ) - ); - redeemedAmount = potentialAmount; - emit RedeemDaoBounty(_proposalId, organizations[proposal.organizationId], _beneficiary, redeemedAmount); - } - } - - /** - * @dev calcExecuteCallBounty calculate the execute boosted call bounty - * @param _proposalId the ID of the proposal - * @return uint256 executeCallBounty - */ - function calcExecuteCallBounty(bytes32 _proposalId) public view returns (uint256) { - uint256 maxRewardSeconds = 1500; - uint256 rewardSeconds = uint256(maxRewardSeconds).min( - proposals[_proposalId].secondsFromTimeOutTillExecuteBoosted - ); - return rewardSeconds.mul(proposals[_proposalId].stakes[YES]).div(maxRewardSeconds * 10); - } - - /** - * @dev shouldBoost check if a proposal should be shifted to boosted phase. - * @param _proposalId the ID of the proposal - * @return bool true or false. - */ - function shouldBoost(bytes32 _proposalId) public view returns (bool) { - Proposal memory proposal = proposals[_proposalId]; - return (_score(_proposalId) > threshold(proposal.paramsHash, proposal.organizationId)); - } - - /** - * @dev threshold return the organization's score threshold which required by - * a proposal to shift to boosted state. - * This threshold is dynamically set and it depend on the number of boosted proposal. - * @param _organizationId the organization identifier - * @param _paramsHash the organization parameters hash - * @return uint256 organization's score threshold as real number. - */ - function threshold(bytes32 _paramsHash, bytes32 _organizationId) public view returns (uint256) { - uint256 power = orgBoostedProposalsCnt[_organizationId]; - Parameters storage params = parameters[_paramsHash]; - - if (power > params.limitExponentValue) { - power = params.limitExponentValue; - } - - return params.thresholdConst.pow(power); - } - - /** - * @dev hashParameters returns a hash of the given parameters - */ - function getParametersHash( - uint256[11] memory _params, //use array here due to stack too deep issue. - address _voteOnBehalf - ) public pure returns (bytes32) { - //double call to keccak256 to avoid deep stack issue when call with too many params. - return - keccak256( - abi.encodePacked( - keccak256( - abi.encodePacked( - _params[0], - _params[1], - _params[2], - _params[3], - _params[4], - _params[5], - _params[6], - _params[7], - _params[8], - _params[9], - _params[10] - ) - ), - _voteOnBehalf - ) - ); - } - - /** - * @dev execute check if the proposal has been decided, and if so, execute the proposal - * @param _proposalId the id of the proposal - * @return bool true - the proposal has been executed - * false - otherwise. - */ - // solhint-disable-next-line function-max-lines,code-complexity - function _execute(bytes32 _proposalId) internal votable(_proposalId) returns (bool) { - Proposal storage proposal = proposals[_proposalId]; - Parameters memory params = parameters[proposal.paramsHash]; - Proposal memory tmpProposal = proposal; - uint256 totalReputation = VotingMachineCallbacksInterface(proposal.callbacks).getTotalReputationSupply( - _proposalId - ); - //first divide by 100 to prevent overflow - uint256 executionBar = (totalReputation / 100) * params.queuedVoteRequiredPercentage; - ExecutionState executionState = ExecutionState.None; - uint256 averageDownstakesOfBoosted; - uint256 confidenceThreshold; - - if (proposal.votes[proposal.winningVote] > executionBar) { - // someone crossed the absolute vote execution bar. - if (proposal.state == ProposalState.Queued) { - executionState = ExecutionState.QueueBarCrossed; - } else if (proposal.state == ProposalState.PreBoosted) { - executionState = ExecutionState.PreBoostedBarCrossed; - } else { - executionState = ExecutionState.BoostedBarCrossed; - } - proposal.state = ProposalState.Executed; - } else { - if (proposal.state == ProposalState.Queued) { - // solhint-disable-next-line not-rely-on-time - if ((now - proposal.times[0]) >= params.queuedVotePeriodLimit) { - proposal.state = ProposalState.ExpiredInQueue; - proposal.winningVote = NO; - executionState = ExecutionState.QueueTimeOut; - } else { - confidenceThreshold = threshold(proposal.paramsHash, proposal.organizationId); - if (_score(_proposalId) > confidenceThreshold) { - //change proposal mode to PreBoosted mode. - proposal.state = ProposalState.PreBoosted; - // solhint-disable-next-line not-rely-on-time - proposal.times[2] = now; - proposal.confidenceThreshold = confidenceThreshold; - } - } - } - - if (proposal.state == ProposalState.PreBoosted) { - confidenceThreshold = threshold(proposal.paramsHash, proposal.organizationId); - // solhint-disable-next-line not-rely-on-time - if ((now - proposal.times[2]) >= params.preBoostedVotePeriodLimit) { - if (_score(_proposalId) > confidenceThreshold) { - if (orgBoostedProposalsCnt[proposal.organizationId] < MAX_BOOSTED_PROPOSALS) { - //change proposal mode to Boosted mode. - proposal.state = ProposalState.Boosted; - // solhint-disable-next-line not-rely-on-time - proposal.times[1] = now; - orgBoostedProposalsCnt[proposal.organizationId]++; - //add a value to average -> average = average + ((value - average) / nbValues) - averageDownstakesOfBoosted = averagesDownstakesOfBoosted[proposal.organizationId]; - // solium-disable-next-line indentation - averagesDownstakesOfBoosted[proposal.organizationId] = uint256( - int256(averageDownstakesOfBoosted) + - ((int256(proposal.stakes[NO]) - int256(averageDownstakesOfBoosted)) / - int256(orgBoostedProposalsCnt[proposal.organizationId])) - ); - } - } else { - proposal.state = ProposalState.Queued; - } - } else { - //check the Confidence level is stable - uint256 proposalScore = _score(_proposalId); - if (proposalScore <= proposal.confidenceThreshold.min(confidenceThreshold)) { - proposal.state = ProposalState.Queued; - } else if (proposal.confidenceThreshold > proposalScore) { - proposal.confidenceThreshold = confidenceThreshold; - emit ConfidenceLevelChange(_proposalId, confidenceThreshold); - } - } - } - } - - if ((proposal.state == ProposalState.Boosted) || (proposal.state == ProposalState.QuietEndingPeriod)) { - // solhint-disable-next-line not-rely-on-time - if ((now - proposal.times[1]) >= proposal.currentBoostedVotePeriodLimit) { - proposal.state = ProposalState.Executed; - executionState = ExecutionState.BoostedTimeOut; - } - } - - if (executionState != ExecutionState.None) { - if ( - (executionState == ExecutionState.BoostedTimeOut) || - (executionState == ExecutionState.BoostedBarCrossed) - ) { - orgBoostedProposalsCnt[tmpProposal.organizationId] = orgBoostedProposalsCnt[tmpProposal.organizationId] - .sub(1); - //remove a value from average = ((average * nbValues) - value) / (nbValues - 1); - uint256 boostedProposals = orgBoostedProposalsCnt[tmpProposal.organizationId]; - if (boostedProposals == 0) { - averagesDownstakesOfBoosted[proposal.organizationId] = 0; - } else { - averageDownstakesOfBoosted = averagesDownstakesOfBoosted[proposal.organizationId]; - averagesDownstakesOfBoosted[proposal.organizationId] = - (averageDownstakesOfBoosted.mul(boostedProposals + 1).sub(proposal.stakes[NO])) / - boostedProposals; - } - } - emit ExecuteProposal( - _proposalId, - organizations[proposal.organizationId], - proposal.winningVote, - totalReputation - ); - emit GPExecuteProposal(_proposalId, executionState); - proposal.daoBounty = proposal.daoBountyRemain; - ProposalExecuteInterface(proposal.callbacks).executeProposal(_proposalId, int256(proposal.winningVote)); - } - if (tmpProposal.state != proposal.state) { - emit StateChange(_proposalId, proposal.state); - } - return (executionState != ExecutionState.None); - } - - /** - * @dev staking function - * @param _proposalId id of the proposal - * @param _vote NO(2) or YES(1). - * @param _amount the betting amount - * @return bool true - the proposal has been executed - * false - otherwise. - */ - function _stake( - bytes32 _proposalId, - uint256 _vote, - uint256 _amount, - address _staker - ) internal returns (bool) { - // 0 is not a valid vote. - require(_vote <= NUM_OF_CHOICES && _vote > 0, "wrong vote value"); - require(_amount > 0, "staking amount should be >0"); - - if (_execute(_proposalId)) { - return true; - } - Proposal storage proposal = proposals[_proposalId]; - - if ((proposal.state != ProposalState.PreBoosted) && (proposal.state != ProposalState.Queued)) { - return false; - } - - // enable to increase stake only on the previous stake vote - Staker storage staker = proposal.stakers[_staker]; - if ((staker.amount > 0) && (staker.vote != _vote)) { - return false; - } - - uint256 amount = _amount; - require(stakingToken.transferFrom(_staker, address(this), amount), "fail transfer from staker"); - proposal.totalStakes = proposal.totalStakes.add(amount); //update totalRedeemableStakes - staker.amount = staker.amount.add(amount); - //This is to prevent average downstakes calculation overflow - //Note that any how GEN cap is 100000000 ether. - require(staker.amount <= 0x100000000000000000000000000000000, "staking amount is too high"); - require( - proposal.totalStakes <= uint256(0x100000000000000000000000000000000).sub(proposal.daoBountyRemain), - "total stakes is too high" - ); - - if (_vote == YES) { - staker.amount4Bounty = staker.amount4Bounty.add(amount); - } - staker.vote = _vote; - - proposal.stakes[_vote] = amount.add(proposal.stakes[_vote]); - emit Stake(_proposalId, organizations[proposal.organizationId], _staker, _vote, _amount); - return _execute(_proposalId); - } - - /** - * @dev Vote for a proposal, if the voter already voted, cancel the last vote and set a new one instead - * @param _proposalId id of the proposal - * @param _voter used in case the vote is cast for someone else - * @param _vote a value between 0 to and the proposal's number of choices. - * @param _rep how many reputation the voter would like to stake for this vote. - * if _rep==0 so the voter full reputation will be use. - * @return true in case of proposal execution otherwise false - * throws if proposal is not open or if it has been executed - * NB: executes the proposal if a decision has been reached - */ - // solhint-disable-next-line function-max-lines,code-complexity - function internalVote( - bytes32 _proposalId, - address _voter, - uint256 _vote, - uint256 _rep - ) internal returns (bool) { - require(_vote <= NUM_OF_CHOICES && _vote > 0, "0 < _vote <= 2"); - if (_execute(_proposalId)) { - return true; - } - - Parameters memory params = parameters[proposals[_proposalId].paramsHash]; - Proposal storage proposal = proposals[_proposalId]; - - // Check voter has enough reputation: - uint256 reputation = VotingMachineCallbacksInterface(proposal.callbacks).reputationOf(_voter, _proposalId); - require(reputation > 0, "_voter must have reputation"); - require(reputation >= _rep, "reputation >= _rep"); - uint256 rep = _rep; - if (rep == 0) { - rep = reputation; - } - // If this voter has already voted, return false. - if (proposal.voters[_voter].reputation != 0) { - return false; - } - // The voting itself: - proposal.votes[_vote] = rep.add(proposal.votes[_vote]); - //check if the current winningVote changed or there is a tie. - //for the case there is a tie the current winningVote set to NO. - if ( - (proposal.votes[_vote] > proposal.votes[proposal.winningVote]) || - ((proposal.votes[NO] == proposal.votes[proposal.winningVote]) && proposal.winningVote == YES) - ) { - if ( - (proposal.state == ProposalState.Boosted && - ((now - proposal.times[1]) >= (params.boostedVotePeriodLimit - params.quietEndingPeriod))) || - // solhint-disable-next-line not-rely-on-time - proposal.state == ProposalState.QuietEndingPeriod - ) { - //quietEndingPeriod - if (proposal.state != ProposalState.QuietEndingPeriod) { - proposal.currentBoostedVotePeriodLimit = params.quietEndingPeriod; - proposal.state = ProposalState.QuietEndingPeriod; - emit StateChange(_proposalId, proposal.state); - } - // solhint-disable-next-line not-rely-on-time - proposal.times[1] = now; - } - proposal.winningVote = _vote; - } - proposal.voters[_voter] = Voter({ - reputation: rep, - vote: _vote, - preBoosted: ((proposal.state == ProposalState.PreBoosted) || (proposal.state == ProposalState.Queued)) - }); - if ((proposal.state == ProposalState.PreBoosted) || (proposal.state == ProposalState.Queued)) { - proposal.preBoostedVotes[_vote] = rep.add(proposal.preBoostedVotes[_vote]); - uint256 reputationDeposit = (params.votersReputationLossRatio.mul(rep)) / 100; - VotingMachineCallbacksInterface(proposal.callbacks).burnReputation(reputationDeposit, _voter, _proposalId); - } - emit VoteProposal(_proposalId, organizations[proposal.organizationId], _voter, _vote, rep); - return _execute(_proposalId); - } - - /** - * @dev _score return the proposal score (Confidence level) - * For dual choice proposal S = (S+)/(S-) - * @param _proposalId the ID of the proposal - * @return uint256 proposal score as real number. - */ - function _score(bytes32 _proposalId) internal view returns (uint256) { - Proposal storage proposal = proposals[_proposalId]; - //proposal.stakes[NO] cannot be zero as the dao downstake > 0 for each proposal. - return uint216(proposal.stakes[YES]).fraction(uint216(proposal.stakes[NO])); - } - - /** - * @dev _isVotable check if the proposal is votable - * @param _proposalId the ID of the proposal - * @return bool true or false - */ - function _isVotable(bytes32 _proposalId) internal view returns (bool) { - ProposalState pState = proposals[_proposalId].state; - return ((pState == ProposalState.PreBoosted) || - (pState == ProposalState.Boosted) || - (pState == ProposalState.QuietEndingPeriod) || - (pState == ProposalState.Queued)); - } -} diff --git a/contracts/daostack/votingMachines/IntVoteInterface.sol b/contracts/daostack/votingMachines/IntVoteInterface.sol deleted file mode 100644 index 53d18576..00000000 --- a/contracts/daostack/votingMachines/IntVoteInterface.sol +++ /dev/null @@ -1,90 +0,0 @@ -pragma solidity 0.5.17; - -interface IntVoteInterface { - //When implementing this interface please do not only override function and modifier, - //but also to keep the modifiers on the overridden functions. - modifier onlyProposalOwner(bytes32 _proposalId) { - revert(); - _; - } - modifier votable(bytes32 _proposalId) { - revert(); - _; - } - - event NewProposal( - bytes32 indexed _proposalId, - address indexed _organization, - uint256 _numOfChoices, - address _proposer, - bytes32 _paramsHash - ); - - event ExecuteProposal( - bytes32 indexed _proposalId, - address indexed _organization, - uint256 _decision, - uint256 _totalReputation - ); - - event VoteProposal( - bytes32 indexed _proposalId, - address indexed _organization, - address indexed _voter, - uint256 _vote, - uint256 _reputation - ); - - event CancelProposal(bytes32 indexed _proposalId, address indexed _organization); - event CancelVoting(bytes32 indexed _proposalId, address indexed _organization, address indexed _voter); - - /** - * @dev register a new proposal with the given parameters. Every proposal has a unique ID which is being - * generated by calculating keccak256 of a incremented counter. - * @param _numOfChoices number of voting choices - * @param _proposalParameters defines the parameters of the voting machine used for this proposal - * @param _proposer address - * @param _organization address - if this address is zero the msg.sender will be used as the organization address. - * @return proposal's id. - */ - function propose( - uint256 _numOfChoices, - bytes32 _proposalParameters, - address _proposer, - address _organization - ) external returns (bytes32); - - function vote( - bytes32 _proposalId, - uint256 _vote, - uint256 _rep, - address _voter - ) external returns (bool); - - function cancelVote(bytes32 _proposalId) external; - - function getNumberOfChoices(bytes32 _proposalId) external view returns (uint256); - - function isVotable(bytes32 _proposalId) external view returns (bool); - - /** - * @dev voteStatus returns the reputation voted for a proposal for a specific voting choice. - * @param _proposalId the ID of the proposal - * @param _choice the index in the - * @return voted reputation for the given choice - */ - function voteStatus(bytes32 _proposalId, uint256 _choice) external view returns (uint256); - - /** - * @dev isAbstainAllow returns if the voting machine allow abstain (0) - * @return bool true or false - */ - function isAbstainAllow() external pure returns (bool); - - /** - * @dev getAllowedRangeOfChoices returns the allowed range of choices for a voting machine. - * @return min - minimum number of choices - max - maximum number of choices - */ - function getAllowedRangeOfChoices() external pure returns (uint256 min, uint256 max); -} diff --git a/contracts/daostack/votingMachines/ProposalExecuteInterface.sol b/contracts/daostack/votingMachines/ProposalExecuteInterface.sol deleted file mode 100644 index 6e89fbe5..00000000 --- a/contracts/daostack/votingMachines/ProposalExecuteInterface.sol +++ /dev/null @@ -1,5 +0,0 @@ -pragma solidity 0.5.17; - -interface ProposalExecuteInterface { - function executeProposal(bytes32 _proposalId, int256 _decision) external returns (bool); -} diff --git a/contracts/daostack/votingMachines/QuorumVote.sol b/contracts/daostack/votingMachines/QuorumVote.sol deleted file mode 100644 index 4d578041..00000000 --- a/contracts/daostack/votingMachines/QuorumVote.sol +++ /dev/null @@ -1,44 +0,0 @@ -pragma solidity 0.5.17; - -import "./AbsoluteVote.sol"; -import "./ProposalExecuteInterface.sol"; - -contract QuorumVote is AbsoluteVote { - /** - * @dev check if the proposal has been decided, and if so, execute the proposal - * @param _proposalId the id of the proposal - */ - function execute(bytes32 _proposalId) external votable(_proposalId) returns (bool) { - return _execute(_proposalId); - } - - /** - * @dev check if the proposal has been decided, and if so, execute the proposal - * @param _proposalId the id of the proposal - */ - function _execute(bytes32 _proposalId) internal votable(_proposalId) returns (bool) { - Proposal storage proposal = proposals[_proposalId]; - uint256 totalReputation = VotingMachineCallbacksInterface(proposal.callbacks).getTotalReputationSupply( - _proposalId - ); - uint256 precReq = parameters[proposal.paramsHash].precReq; - - // this is the actual voting rule: - if (proposal.totalVotes > (totalReputation / 100) * precReq) { - uint256 max; - uint256 maxInd; - for (uint256 cnt = 0; cnt <= proposal.numOfChoices; cnt++) { - if (proposal.votes[cnt] > max) { - max = proposal.votes[cnt]; - maxInd = cnt; - } - } - Proposal memory tmpProposal = proposal; - deleteProposal(_proposalId); - emit ExecuteProposal(_proposalId, organizations[tmpProposal.organizationId], maxInd, totalReputation); - ProposalExecuteInterface(tmpProposal.callbacks).executeProposal(_proposalId, int256(maxInd)); - return true; - } - return false; - } -} diff --git a/contracts/daostack/votingMachines/VotingMachineCallbacks.sol b/contracts/daostack/votingMachines/VotingMachineCallbacks.sol deleted file mode 100644 index 4edb1422..00000000 --- a/contracts/daostack/votingMachines/VotingMachineCallbacks.sol +++ /dev/null @@ -1,80 +0,0 @@ -pragma solidity ^0.5.4; - -import "../universalSchemes/UniversalScheme.sol"; -import "./GenesisProtocol.sol"; - -contract VotingMachineCallbacks is VotingMachineCallbacksInterface { - struct ProposalInfo { - uint256 blockNumber; // the proposal's block number - Avatar avatar; // the proposal's avatar - } - - modifier onlyVotingMachine(bytes32 _proposalId) { - require(proposalsInfo[msg.sender][_proposalId].avatar != Avatar(address(0)), "only VotingMachine"); - _; - } - - // VotingMaching -> proposalId -> ProposalInfo - mapping(address => mapping(bytes32 => ProposalInfo)) public proposalsInfo; - - function mintReputation( - uint256 _amount, - address _beneficiary, - bytes32 _proposalId - ) external onlyVotingMachine(_proposalId) returns (bool) { - Avatar avatar = proposalsInfo[msg.sender][_proposalId].avatar; - if (avatar == Avatar(0)) { - return false; - } - return ControllerInterface(avatar.owner()).mintReputation(_amount, _beneficiary, address(avatar)); - } - - function burnReputation( - uint256 _amount, - address _beneficiary, - bytes32 _proposalId - ) external onlyVotingMachine(_proposalId) returns (bool) { - Avatar avatar = proposalsInfo[msg.sender][_proposalId].avatar; - if (avatar == Avatar(0)) { - return false; - } - return ControllerInterface(avatar.owner()).burnReputation(_amount, _beneficiary, address(avatar)); - } - - function stakingTokenTransfer( - IERC20 _stakingToken, - address _beneficiary, - uint256 _amount, - bytes32 _proposalId - ) external onlyVotingMachine(_proposalId) returns (bool) { - Avatar avatar = proposalsInfo[msg.sender][_proposalId].avatar; - if (avatar == Avatar(0)) { - return false; - } - return ControllerInterface(avatar.owner()).externalTokenTransfer(_stakingToken, _beneficiary, _amount, avatar); - } - - function balanceOfStakingToken(IERC20 _stakingToken, bytes32 _proposalId) external view returns (uint256) { - Avatar avatar = proposalsInfo[msg.sender][_proposalId].avatar; - if (proposalsInfo[msg.sender][_proposalId].avatar == Avatar(0)) { - return 0; - } - return _stakingToken.balanceOf(address(avatar)); - } - - function getTotalReputationSupply(bytes32 _proposalId) external view returns (uint256) { - ProposalInfo memory proposal = proposalsInfo[msg.sender][_proposalId]; - if (proposal.avatar == Avatar(0)) { - return 0; - } - return proposal.avatar.nativeReputation().totalSupplyAt(proposal.blockNumber); - } - - function reputationOf(address _owner, bytes32 _proposalId) external view returns (uint256) { - ProposalInfo memory proposal = proposalsInfo[msg.sender][_proposalId]; - if (proposal.avatar == Avatar(0)) { - return 0; - } - return proposal.avatar.nativeReputation().balanceOfAt(_owner, proposal.blockNumber); - } -} diff --git a/contracts/daostack/votingMachines/VotingMachineCallbacksInterface.sol b/contracts/daostack/votingMachines/VotingMachineCallbacksInterface.sol deleted file mode 100644 index 8ae69b64..00000000 --- a/contracts/daostack/votingMachines/VotingMachineCallbacksInterface.sol +++ /dev/null @@ -1,30 +0,0 @@ -pragma solidity 0.5.17; - -import "openzeppelin-solidity/contracts/token/ERC20/IERC20.sol"; - -interface VotingMachineCallbacksInterface { - function mintReputation( - uint256 _amount, - address _beneficiary, - bytes32 _proposalId - ) external returns (bool); - - function burnReputation( - uint256 _amount, - address _owner, - bytes32 _proposalId - ) external returns (bool); - - function stakingTokenTransfer( - IERC20 _stakingToken, - address _beneficiary, - uint256 _amount, - bytes32 _proposalId - ) external returns (bool); - - function getTotalReputationSupply(bytes32 _proposalId) external view returns (uint256); - - function reputationOf(address _owner, bytes32 _proposalId) external view returns (uint256); - - function balanceOfStakingToken(IERC20 _stakingToken, bytes32 _proposalId) external view returns (uint256); -} From fc9170db7dfcb144561cf3ad144d43fbd6d02e89 Mon Sep 17 00:00:00 2001 From: AugustoL Date: Mon, 19 Sep 2022 13:49:45 -0300 Subject: [PATCH 02/33] refactor(contracts): remove not needed DxToken --- contracts/dxdao/DxToken.sol | 11 ----------- 1 file changed, 11 deletions(-) delete mode 100644 contracts/dxdao/DxToken.sol diff --git a/contracts/dxdao/DxToken.sol b/contracts/dxdao/DxToken.sol deleted file mode 100644 index 25da2784..00000000 --- a/contracts/dxdao/DxToken.sol +++ /dev/null @@ -1,11 +0,0 @@ -pragma solidity ^0.5.4; -import "../daostack/controller/DAOToken.sol"; - -// is DAOToken -contract DxToken is DAOToken { - constructor( - string memory _name, - string memory _symbol, - uint256 _cap - ) public DAOToken(_name, _symbol, _cap) {} -} From 7feaeccd7cc969abdcacc144ac029ba488ff7a28 Mon Sep 17 00:00:00 2001 From: AugustoL Date: Mon, 19 Sep 2022 13:51:28 -0300 Subject: [PATCH 03/33] refactor(contracts): move dxvote utils to utils folder --- contracts/{dxvote => }/utils/ERC20VestingFactory.sol | 0 contracts/{dxvote => }/utils/ERC721Factory.sol | 0 2 files changed, 0 insertions(+), 0 deletions(-) rename contracts/{dxvote => }/utils/ERC20VestingFactory.sol (100%) rename contracts/{dxvote => }/utils/ERC721Factory.sol (100%) diff --git a/contracts/dxvote/utils/ERC20VestingFactory.sol b/contracts/utils/ERC20VestingFactory.sol similarity index 100% rename from contracts/dxvote/utils/ERC20VestingFactory.sol rename to contracts/utils/ERC20VestingFactory.sol diff --git a/contracts/dxvote/utils/ERC721Factory.sol b/contracts/utils/ERC721Factory.sol similarity index 100% rename from contracts/dxvote/utils/ERC721Factory.sol rename to contracts/utils/ERC721Factory.sol From 15e7a6b0da538af46111639a5ba16bb3cc0d6432 Mon Sep 17 00:00:00 2001 From: AugustoL Date: Mon, 19 Sep 2022 13:52:13 -0300 Subject: [PATCH 04/33] refactor(contracts): remove unnecesary DaoCreator and upgrade RealMath utils solc --- contracts/utils/DaoCreator.sol | 186 --------------------------------- contracts/utils/RealMath.sol | 167 +++++++++++++++-------------- 2 files changed, 83 insertions(+), 270 deletions(-) delete mode 100644 contracts/utils/DaoCreator.sol diff --git a/contracts/utils/DaoCreator.sol b/contracts/utils/DaoCreator.sol deleted file mode 100644 index 091f97fc..00000000 --- a/contracts/utils/DaoCreator.sol +++ /dev/null @@ -1,186 +0,0 @@ -pragma solidity 0.5.17; - -import "../dxdao/DxController.sol"; - -/** - * @title DxControllerCreator for creating a single controller. - */ -contract DxControllerCreator { - function create(Avatar _avatar) public returns (address) { - DxController controller = new DxController(_avatar); - controller.registerScheme(msg.sender, bytes32(0), bytes4(0x0000001f), address(_avatar)); - controller.unregisterScheme(address(this), address(_avatar)); - return address(controller); - } -} - -/** - * @title Genesis Scheme that creates organizations - */ -contract DaoCreator { - mapping(address => address) public locks; - - event NewOrg(address _avatar); - event InitialSchemesSet(address _avatar); - - DxControllerCreator private controllerCreator; - - constructor(DxControllerCreator _controllerCreator) public { - require(_controllerCreator != DxControllerCreator(0)); - controllerCreator = _controllerCreator; - } - - /** - * @dev addFounders add founders to the organization. - * this function can be called only after forgeOrg and before setSchemes - * @param _avatar the organization avatar - * @param _founders An array with the addresses of the founders of the organization - * @param _foundersTokenAmount An array of amount of tokens that the founders - * receive in the new organization - * @param _foundersReputationAmount An array of amount of reputation that the - * founders receive in the new organization - * @return bool true or false - */ - function addFounders( - Avatar _avatar, - address[] calldata _founders, - uint256[] calldata _foundersTokenAmount, - uint256[] calldata _foundersReputationAmount - ) external returns (bool) { - require(_founders.length == _foundersTokenAmount.length); - require(_founders.length == _foundersReputationAmount.length); - require(_founders.length > 0); - require(locks[address(_avatar)] == msg.sender); - // Mint token and reputation for founders: - for (uint256 i = 0; i < _founders.length; i++) { - require(_founders[i] != address(0)); - if (_foundersTokenAmount[i] > 0) { - DxController(_avatar.owner()).mintTokens(_foundersTokenAmount[i], _founders[i], address(_avatar)); - } - if (_foundersReputationAmount[i] > 0) { - DxController(_avatar.owner()).mintReputation( - _foundersReputationAmount[i], - _founders[i], - address(_avatar) - ); - } - } - return true; - } - - /** - * @dev Create a new organization - * @param _orgName The name of the new organization - * @param _tokenName The name of the token associated with the organization - * @param _tokenSymbol The symbol of the token - * @param _founders An array with the addresses of the founders of the organization - * @param _foundersTokenAmount An array of amount of tokens that the founders - * receive in the new organization - * @param _foundersReputationAmount An array of amount of reputation that the - * founders receive in the new organization - * @param _cap token cap - 0 for no cap. - * @return The address of the avatar of the controller - */ - function forgeOrg( - string calldata _orgName, - string calldata _tokenName, - string calldata _tokenSymbol, - address[] calldata _founders, - uint256[] calldata _foundersTokenAmount, - uint256[] calldata _foundersReputationAmount, - uint256 _cap - ) external returns (address) { - //The call for the private function is needed to bypass a deep stack issues - return - _forgeOrg( - _orgName, - _tokenName, - _tokenSymbol, - _founders, - _foundersTokenAmount, - _foundersReputationAmount, - _cap - ); - } - - /** - * @dev Set initial schemes for the organization. - * @param _avatar organization avatar (returns from forgeOrg) - * @param _schemes the schemes to register for the organization - * @param _params the schemes's params - * @param _permissions the schemes permissions. - * @param _metaData dao meta data hash - */ - function setSchemes( - Avatar _avatar, - address[] calldata _schemes, - bytes32[] calldata _params, - bytes4[] calldata _permissions, - string calldata _metaData - ) external { - // this action can only be executed by the account that holds the lock - // for this controller - require(locks[address(_avatar)] == msg.sender); - // register initial schemes: - DxController controller = DxController(_avatar.owner()); - for (uint256 i = 0; i < _schemes.length; i++) { - controller.registerScheme(_schemes[i], _params[i], _permissions[i], address(_avatar)); - } - controller.metaData(_metaData, _avatar); - // Unregister self: - controller.unregisterScheme(address(this), address(_avatar)); - // Remove lock: - delete locks[address(_avatar)]; - emit InitialSchemesSet(address(_avatar)); - } - - /** - * @dev Create a new organization - * @param _orgName The name of the new organization - * @param _tokenName The name of the token associated with the organization - * @param _tokenSymbol The symbol of the token - * @param _founders An array with the addresses of the founders of the organization - * @param _foundersTokenAmount An array of amount of tokens that the founders - * receive in the new organization - * @param _foundersReputationAmount An array of amount of reputation that the - * founders receive in the new organization - * @param _cap token cap - 0 for no cap. - * @return The address of the avatar of the controller - */ - function _forgeOrg( - string memory _orgName, - string memory _tokenName, - string memory _tokenSymbol, - address[] memory _founders, - uint256[] memory _foundersTokenAmount, - uint256[] memory _foundersReputationAmount, - uint256 _cap - ) private returns (address) { - // Create Token, Reputation and Avatar: - require(_founders.length == _foundersTokenAmount.length); - require(_founders.length == _foundersReputationAmount.length); - require(_founders.length > 0); - DAOToken nativeToken = new DAOToken(_tokenName, _tokenSymbol, _cap); - Reputation nativeReputation = new Reputation(); - Avatar avatar = new Avatar(_orgName, nativeToken, nativeReputation); - - // Mint token and reputation for founders: - for (uint256 i = 0; i < _founders.length; i++) { - if (_foundersReputationAmount[i] > 0) { - nativeReputation.mint(_founders[i], _foundersReputationAmount[i]); - } - } - - DxController controller = DxController(controllerCreator.create(avatar)); - - // Transfer ownership: - avatar.transferOwnership(address(controller)); - nativeToken.transferOwnership(address(controller)); - nativeReputation.transferOwnership(address(controller)); - - locks[address(avatar)] = msg.sender; - - emit NewOrg(address(avatar)); - return (address(avatar)); - } -} diff --git a/contracts/utils/RealMath.sol b/contracts/utils/RealMath.sol index a5566803..f715d111 100644 --- a/contracts/utils/RealMath.sol +++ b/contracts/utils/RealMath.sol @@ -1,84 +1,83 @@ -// SPDX-License-Identifier: AGPL-3.0 -pragma solidity ^0.8.8; - -/** - * RealMath: fixed-point math library, based on fractional and integer parts. - * Using uint256 as real216x40, which isn't in Solidity yet. - * Internally uses the wider uint256 for some math. - * - * Note that for addition, subtraction, and mod (%), you should just use the - * built-in Solidity operators. Functions for these operations are not provided. - * - */ - -library RealMath { - /** - * How many total bits are there? - */ - uint256 private constant REAL_BITS = 256; - - /** - * How many fractional bits are there? - */ - uint256 private constant REAL_FBITS = 40; - - /** - * What's the first non-fractional bit - */ - uint256 private constant REAL_ONE = uint256(1) << REAL_FBITS; - - /** - * Raise a real number to any positive integer power - */ - function pow(uint256 realBase, uint256 exponent) internal pure returns (uint256) { - uint256 tempRealBase = realBase; - uint256 tempExponent = exponent; - - // Start with the 0th power - uint256 realResult = REAL_ONE; - while (tempExponent != 0) { - // While there are still bits set - if ((tempExponent & 0x1) == 0x1) { - // If the low bit is set, multiply in the (many-times-squared) base - realResult = mul(realResult, tempRealBase); - } - // Shift off the low bit - tempExponent = tempExponent >> 1; - if (tempExponent != 0) { - // Do the squaring - tempRealBase = mul(tempRealBase, tempRealBase); - } - } - - // Return the final result. - return realResult; - } - - /** - * Create a real from a rational fraction. - */ - function fraction(uint216 numerator, uint216 denominator) internal pure returns (uint256) { - return div(uint256(numerator) * REAL_ONE, uint256(denominator) * REAL_ONE); - } - - /** - * Multiply one real by another. Truncates overflows. - */ - function mul(uint256 realA, uint256 realB) private pure returns (uint256) { - // When multiplying fixed point in x.y and z.w formats we get (x+z).(y+w) format. - // So we just have to clip off the extra REAL_FBITS fractional bits. - uint256 res = realA * realB; - require(res / realA == realB, "RealMath mul overflow"); - return (res >> REAL_FBITS); - } - - /** - * Divide one real by another real. Truncates overflows. - */ - function div(uint256 realNumerator, uint256 realDenominator) private pure returns (uint256) { - // We use the reverse of the multiplication trick: convert numerator from - // x.y to (x+z).(y+w) fixed point, then divide by denom in z.w fixed point. - return uint256((uint256(realNumerator) * REAL_ONE) / uint256(realDenominator)); - } -} - +// SPDX-License-Identifier: AGPL-3.0 +pragma solidity ^0.8.8; + +/** + * RealMath: fixed-point math library, based on fractional and integer parts. + * Using uint256 as real216x40, which isn't in Solidity yet. + * Internally uses the wider uint256 for some math. + * + * Note that for addition, subtraction, and mod (%), you should just use the + * built-in Solidity operators. Functions for these operations are not provided. + * + */ + +library RealMath { + /** + * How many total bits are there? + */ + uint256 private constant REAL_BITS = 256; + + /** + * How many fractional bits are there? + */ + uint256 private constant REAL_FBITS = 40; + + /** + * What's the first non-fractional bit + */ + uint256 private constant REAL_ONE = uint256(1) << REAL_FBITS; + + /** + * Raise a real number to any positive integer power + */ + function pow(uint256 realBase, uint256 exponent) internal pure returns (uint256) { + uint256 tempRealBase = realBase; + uint256 tempExponent = exponent; + + // Start with the 0th power + uint256 realResult = REAL_ONE; + while (tempExponent != 0) { + // While there are still bits set + if ((tempExponent & 0x1) == 0x1) { + // If the low bit is set, multiply in the (many-times-squared) base + realResult = mul(realResult, tempRealBase); + } + // Shift off the low bit + tempExponent = tempExponent >> 1; + if (tempExponent != 0) { + // Do the squaring + tempRealBase = mul(tempRealBase, tempRealBase); + } + } + + // Return the final result. + return realResult; + } + + /** + * Create a real from a rational fraction. + */ + function fraction(uint216 numerator, uint216 denominator) internal pure returns (uint256) { + return div(uint256(numerator) * REAL_ONE, uint256(denominator) * REAL_ONE); + } + + /** + * Multiply one real by another. Truncates overflows. + */ + function mul(uint256 realA, uint256 realB) private pure returns (uint256) { + // When multiplying fixed point in x.y and z.w formats we get (x+z).(y+w) format. + // So we just have to clip off the extra REAL_FBITS fractional bits. + uint256 res = realA * realB; + require(res / realA == realB, "RealMath mul overflow"); + return (res >> REAL_FBITS); + } + + /** + * Divide one real by another real. Truncates overflows. + */ + function div(uint256 realNumerator, uint256 realDenominator) private pure returns (uint256) { + // We use the reverse of the multiplication trick: convert numerator from + // x.y to (x+z).(y+w) fixed point, then divide by denom in z.w fixed point. + return uint256((uint256(realNumerator) * REAL_ONE) / uint256(realDenominator)); + } +} From 557dc1605605e388e87fc6dc03a86f7b2717f389 Mon Sep 17 00:00:00 2001 From: AugustoL Date: Mon, 19 Sep 2022 13:55:03 -0300 Subject: [PATCH 05/33] refactor(contracts): refactor and reorder of Gov 1.5 contracts Move all Governance 1.5 contracts to dxdao folder, upgrade all solc versions to math 0.8.8, do necessary changes in the contracts to bundle all them together and execute proposals (mostly changes in WalletSchemes, Voting machine and a bit on avatar, controller and reputation) --- contracts/dxdao/DxAvatar.sol | 11 +- contracts/dxdao/DxController.sol | 42 ++- contracts/dxdao/DxReputation.sol | 16 + .../schemes}/WalletScheme.sol | 299 ++++++------------ .../votingMachine}/DXDVotingMachine.sol | 58 ++-- .../DXDVotingMachineCallbacks.sol | 80 +++++ .../DXDVotingMachineCallbacksInterface.sol | 28 ++ .../ProposalExecuteInterface.sol | 5 + 8 files changed, 269 insertions(+), 270 deletions(-) rename contracts/{dxvote => dxdao/schemes}/WalletScheme.sol (55%) rename contracts/{dxvote => dxdao/votingMachine}/DXDVotingMachine.sol (94%) create mode 100644 contracts/dxdao/votingMachine/DXDVotingMachineCallbacks.sol create mode 100644 contracts/dxdao/votingMachine/DXDVotingMachineCallbacksInterface.sol create mode 100644 contracts/dxdao/votingMachine/ProposalExecuteInterface.sol diff --git a/contracts/dxdao/DxAvatar.sol b/contracts/dxdao/DxAvatar.sol index f7c4246a..317053d4 100644 --- a/contracts/dxdao/DxAvatar.sol +++ b/contracts/dxdao/DxAvatar.sol @@ -4,17 +4,22 @@ pragma solidity ^0.8.8; import "@openzeppelin/contracts-upgradeable/access/OwnableUpgradeable.sol"; /** - @title DXAvatar + @title DxAvatar @author github:miltontulli @dev An Avatar holds tokens, reputation and ether for a controller */ -contract DXAvatar is OwnableUpgradeable { +contract DxAvatar is OwnableUpgradeable { event CallExecuted(address indexed _to, bytes _data, uint256 _value, bool _success); - function initialize(address _owner) public initializer { + address public reputationToken; + + receive() external payable {} + + function initialize(address _owner, address _reputationToken) public initializer { __Ownable_init(); transferOwnership(_owner); + reputationToken = _reputationToken; } /** diff --git a/contracts/dxdao/DxController.sol b/contracts/dxdao/DxController.sol index 343d3959..960a225b 100644 --- a/contracts/dxdao/DxController.sol +++ b/contracts/dxdao/DxController.sol @@ -1,17 +1,20 @@ pragma solidity ^0.8.8; import "@openzeppelin/contracts-upgradeable/proxy/utils/Initializable.sol"; +import "@openzeppelin/contracts-upgradeable/utils/math/SafeMathUpgradeable.sol"; import "./DxAvatar.sol"; /** * @title Controller contract - * @dev A controller controls the organizations tokens, reputation and avatar. + * @dev A controller controls the organizations schemes, reputation and avatar. * It is subject to a set of schemes and constraints that determine its behavior. * Each scheme has it own parameters and operation permissions. */ contract DxController is Initializable { + using SafeMathUpgradeable for uint256; + struct Scheme { - bytes32 paramsHash; // a hash "configuration" of the scheme + bytes32 paramsHash; // a hash voting parameters of the scheme bool isRegistered; bool canManageSchemes; bool canMakeAvatarCalls; @@ -34,19 +37,18 @@ contract DxController is Initializable { schemesWithManageSchemesPermission = 1; } - // Modifiers: modifier onlyRegisteredScheme() { - require(schemes[msg.sender].isRegistered, "Sender is not a registered scheme"); + require(schemes[msg.sender].isRegistered, "DxController: Sender is not a registered scheme"); _; } modifier onlyRegisteringSchemes() { - require(schemes[msg.sender].canManageSchemes, "Sender cannot manage schemes"); + require(schemes[msg.sender].canManageSchemes, "DxController: Sender cannot manage schemes"); _; } modifier onlyAvatarCallScheme() { - require(schemes[msg.sender].canMakeAvatarCalls, "Sender cannot perform avatar calls"); + require(schemes[msg.sender].canMakeAvatarCalls, "DxController: Sender cannot perform avatar calls"); _; } @@ -56,7 +58,7 @@ contract DxController is Initializable { * @param _paramsHash a hashed configuration of the usage of the scheme * @param _canManageSchemes whether the scheme is able to manage schemes * @param _canMakeAvatarCalls whether the scheme is able to make avatar calls - * @return bool which represents a success + * @return bool success of the operation */ function registerScheme( address _scheme, @@ -66,32 +68,35 @@ contract DxController is Initializable { ) external onlyRegisteredScheme onlyRegisteringSchemes returns (bool) { Scheme memory scheme = schemes[_scheme]; - // produces non-zero if sender does not have perms that are being updated + // produces non-zero if sender does not have permissions that are being updated require( (_canMakeAvatarCalls || scheme.canMakeAvatarCalls != _canMakeAvatarCalls) ? schemes[msg.sender].canMakeAvatarCalls : true, - "Sender cannot add permissions sender doesn't have to a new scheme" + "DxController: Sender cannot add permissions sender doesn't have to a new scheme" ); // Add or change the scheme: if ((!scheme.isRegistered || !scheme.canManageSchemes) && _canManageSchemes) { - schemesWithManageSchemesPermission++; + schemesWithManageSchemesPermission = schemesWithManageSchemesPermission.add(1); } + schemes[_scheme] = Scheme({ paramsHash: _paramsHash, isRegistered: true, canManageSchemes: _canManageSchemes, canMakeAvatarCalls: _canMakeAvatarCalls }); + emit RegisterScheme(msg.sender, _scheme); + return true; } /** * @dev unregister a scheme * @param _scheme the address of the scheme - * @return bool which represents a success + * @return bool success of the operation */ function unregisterScheme(address _scheme, address _avatar) external @@ -109,14 +114,19 @@ contract DxController is Initializable { if (scheme.isRegistered && scheme.canManageSchemes) { require( schemesWithManageSchemesPermission > 1, - "Cannot unregister last scheme with manage schemes permission" + "DxController: Cannot unregister last scheme with manage schemes permission" ); + schemesWithManageSchemesPermission = schemesWithManageSchemesPermission.sub(1); } - // Unregister: emit UnregisterScheme(msg.sender, _scheme); - if (scheme.isRegistered && scheme.canManageSchemes) schemesWithManageSchemesPermission--; - schemes[_scheme].isRegistered = false; + + schemes[_scheme] = Scheme({ + paramsHash: bytes32(0), + isRegistered: false, + canManageSchemes: false, + canMakeAvatarCalls: false + }); return true; } @@ -132,7 +142,7 @@ contract DxController is Initializable { function avatarCall( address _contract, bytes calldata _data, - DXAvatar _avatar, + DxAvatar _avatar, uint256 _value ) external onlyRegisteredScheme onlyAvatarCallScheme returns (bool, bytes memory) { return _avatar.executeCall(_contract, _data, _value); diff --git a/contracts/dxdao/DxReputation.sol b/contracts/dxdao/DxReputation.sol index c33ce8e0..b0b9d1f0 100644 --- a/contracts/dxdao/DxReputation.sol +++ b/contracts/dxdao/DxReputation.sol @@ -22,6 +22,15 @@ contract DxReputation is OwnableUpgradeable, ERC20SnapshotUpgradeable { __Ownable_init(); } + // @dev Not allow the transfer of tokens + function _transfer( + address sender, + address recipient, + uint256 amount + ) internal virtual override { + revert("DxReputation: Reputation tokens are non-transferable"); + } + // @notice Generates `_amount` reputation that are assigned to `_user` // @param _user The address that will be assigned the new reputation // @param _amount The quantity of reputation generated @@ -61,4 +70,11 @@ contract DxReputation is OwnableUpgradeable, ERC20SnapshotUpgradeable { } return true; } + + /** + * @dev Get the current snapshotId + */ + function getCurrentSnapshotId() public view returns (uint256) { + return _getCurrentSnapshotId(); + } } diff --git a/contracts/dxvote/WalletScheme.sol b/contracts/dxdao/schemes/WalletScheme.sol similarity index 55% rename from contracts/dxvote/WalletScheme.sol rename to contracts/dxdao/schemes/WalletScheme.sol index 35115e63..e35b5fe9 100644 --- a/contracts/dxvote/WalletScheme.sol +++ b/contracts/dxdao/schemes/WalletScheme.sol @@ -4,7 +4,11 @@ pragma solidity ^0.8.8; import "@openzeppelin/contracts/utils/math/SafeMath.sol"; import "@openzeppelin/contracts/utils/Address.sol"; import "@openzeppelin/contracts/token/ERC20/IERC20.sol"; -import "../utils/PermissionRegistry.sol"; +import "../../utils/PermissionRegistry.sol"; +import "../DxReputation.sol"; +import "../DxAvatar.sol"; +import "../DxController.sol"; +import "../votingMachine/DXDVotingMachineCallbacks.sol"; /** * @title WalletScheme. @@ -16,11 +20,11 @@ import "../utils/PermissionRegistry.sol"; * the permissions will be checked using the avatar address as sender, if not the scheme address will be used as * sender. */ -contract WalletScheme { +contract WalletScheme is DXDVotingMachineCallbacks { using SafeMath for uint256; using Address for address; - string public constant SCHEME_TYPE = "Wallet Scheme v1.2"; + string public constant SCHEME_TYPE = "Wallet Scheme v1.3"; bytes4 public constant ERC20_TRANSFER_SIGNATURE = bytes4(keccak256("transfer(address,uint256)")); bytes4 public constant ERC20_APPROVE_SIGNATURE = bytes4(keccak256("approve(address,uint256)")); bytes4 public constant SET_MAX_SECONDS_FOR_EXECUTION_SIGNATURE = @@ -38,6 +42,7 @@ contract WalletScheme { address[] to; bytes[] callData; uint256[] value; + uint256 totalOptions; ProposalState state; string title; string descriptionHash; @@ -48,20 +53,16 @@ contract WalletScheme { bytes32[] public proposalsList; bool public doAvatarGenericCalls; - address public controller; + DxController public controller; PermissionRegistry public permissionRegistry; string public schemeName; uint256 public maxSecondsForExecution; uint256 public maxRepPercentageChange; - address public votingMachine; - address public avatar; - // Boolean that is true when is executing a proposal, to avoid re-entrancy attacks. bool internal executingProposal; event ProposalStateChange(bytes32 indexed _proposalId, uint256 indexed _state); - event ExecutionResults(bytes32 indexed _proposalId, bool[] _callsSucessResult, bytes[] _callsDataResult); /** * @dev initialize @@ -76,7 +77,7 @@ contract WalletScheme { * execution */ function initialize( - address _avatar, + address payable _avatar, address _votingMachine, bool _doAvatarGenericCalls, address _controller, @@ -85,17 +86,17 @@ contract WalletScheme { uint256 _maxSecondsForExecution, uint256 _maxRepPercentageChange ) external { - require(avatar == address(0), "WalletScheme: cannot init twice"); + require(address(avatar) == address(0), "WalletScheme: cannot init twice"); require(_avatar != address(0), "WalletScheme: avatar cannot be zero"); require(_controller != address(0), "WalletScheme: controller cannot be zero"); require( _maxSecondsForExecution >= 86400, "WalletScheme: _maxSecondsForExecution cant be less than 86400 seconds" ); - avatar = _avatar; + avatar = DxAvatar(_avatar); votingMachine = _votingMachine; doAvatarGenericCalls = _doAvatarGenericCalls; - controller = _controller; + controller = DxController(_controller); permissionRegistry = PermissionRegistry(_permissionRegistry); schemeName = _schemeName; maxSecondsForExecution = _maxSecondsForExecution; @@ -129,87 +130,90 @@ contract WalletScheme { * @dev execution of proposals, can only be called by the voting machine in which the vote is held. REQUIRE FROM "../daostack/votingMachines/ProposalExecuteInterface.sol" DONT REMOVE * @param _proposalId the ID of the voting in the voting machine - * @param _decision a parameter of the voting result, 1 yes and 2 is no. + * @param _winningOption The winning option in the voting machine * @return bool success */ - function executeProposal(bytes32 _proposalId, int256 _decision) external onlyVotingMachine returns (bool) { + function executeProposal(bytes32 _proposalId, uint256 _winningOption) external onlyVotingMachine returns (bool) { + // We use isExecutingProposal variable to avoid re-entrancy in proposal execution require(!executingProposal, "WalletScheme: proposal execution already running"); executingProposal = true; Proposal storage proposal = proposals[_proposalId]; require(proposal.state == ProposalState.Submitted, "WalletScheme: must be a submitted proposal"); - // If the amount of time passed since submission plus max proposal time is lower than block timestamp - // the proposal timeout execution is reached and proposal cant be executed from now on - if (proposal.submittedTime.add(maxSecondsForExecution) < block.timestamp) { + if (_winningOption == 0) { + proposal.state = ProposalState.Rejected; + emit ProposalStateChange(_proposalId, uint256(ProposalState.Rejected)); + } else if (proposal.submittedTime.add(maxSecondsForExecution) < block.timestamp) { + // If the amount of time passed since submission plus max proposal time is lower than block timestamp + // the proposal timeout execution is reached and proposal cant be executed from now on + proposal.state = ProposalState.ExecutionTimeout; emit ProposalStateChange(_proposalId, uint256(ProposalState.ExecutionTimeout)); - - // If decision is 1, it means the proposal was approved by the voting machine - } else if (_decision == 1) { + } else { uint256 oldRepSupply = getNativeReputationTotalSupply(); - // If one call fails the transaction will revert - bytes[] memory callsDataResult = new bytes[](proposal.to.length); - bool[] memory callsSucessResult = new bool[](proposal.to.length); - address _asset; - address _to; - bytes4 _callDataFuncSignature; - uint256 _value; + // proposal.to.length.div( proposal.totalOptions ) == Calls per option + // We dont assign it as variable to avoid hitting stack too deep error + uint256 callIndex = proposal.to.length.div(proposal.totalOptions).mul(_winningOption.sub(1)); + uint256 lastCallIndex = callIndex.add(proposal.to.length.div(proposal.totalOptions)); if (doAvatarGenericCalls) { - address(controller).call( - abi.encodeWithSignature( - "genericCall(address,bytes,address,uint256)", - address(permissionRegistry), - abi.encodeWithSignature("setERC20Balances()"), - avatar, - 0 - ) + controller.avatarCall( + address(permissionRegistry), + abi.encodeWithSignature("setERC20Balances()"), + avatar, + 0 ); } else { permissionRegistry.setERC20Balances(); } - for (uint256 i = 0; i < proposal.to.length; i++) { - _asset = address(0); - _callDataFuncSignature = this.getFuncSignature(proposal.callData[i]); - _to = proposal.to[i]; - _value = proposal.value[i]; + for (callIndex; callIndex < lastCallIndex; callIndex++) { + bytes memory _data = proposal.callData[callIndex]; + bytes4 callDataFuncSignature; + assembly { + callDataFuncSignature := mload(add(_data, 32)) + } + bool callsSucessResult = false; // The permission registry keeps track of all value transferred and checks call permission - permissionRegistry.setETHPermissionUsed( - doAvatarGenericCalls ? avatar : address(this), - _to, - _callDataFuncSignature, - _value - ); - - // If controller address is set the code needs to be encoded to genericCall function - if (doAvatarGenericCalls && proposal.to[i] != address(controller)) { - bytes memory genericCallData = abi.encodeWithSignature( - "genericCall(address,bytes,address,uint256)", - proposal.to[i], - proposal.callData[i], + if (doAvatarGenericCalls) { + controller.avatarCall( + address(permissionRegistry), + abi.encodeWithSignature( + "setETHPermissionUsed(address,address,bytes4,uint256)", + avatar, + proposal.to[callIndex], + callDataFuncSignature, + proposal.value[callIndex] + ), avatar, - proposal.value[i] + 0 + ); + (callsSucessResult, ) = controller.avatarCall( + proposal.to[callIndex], + proposal.callData[callIndex], + avatar, + proposal.value[callIndex] ); - (callsSucessResult[i], callsDataResult[i]) = address(controller).call{value: 0}(genericCallData); - - // The success is form the generic call, but the result data is from the call to the controller - (bool genericCallSucessResult, ) = abi.decode(callsDataResult[i], (bool, bytes)); - callsSucessResult[i] = genericCallSucessResult; - - // If controller address is not set the call is made to } else { - (callsSucessResult[i], callsDataResult[i]) = address(proposal.to[i]).call{value: proposal.value[i]}( - proposal.callData[i] + permissionRegistry.setETHPermissionUsed( + address(this), + proposal.to[callIndex], + callDataFuncSignature, + proposal.value[callIndex] + ); + (callsSucessResult, ) = proposal.to[callIndex].call{value: proposal.value[callIndex]}( + proposal.callData[callIndex] ); } - // If the call reverted the entire execution will revert - require(callsSucessResult[i], "WalletScheme: call execution failed"); + require(callsSucessResult, "WalletScheme: Proposal call failed"); + + proposal.state = ProposalState.ExecutionSucceeded; } + // Cant mint or burn more REP than the allowed percentaged set in the wallet scheme initialization require( (oldRepSupply.mul(uint256(100).add(maxRepPercentageChange)).div(100) >= @@ -219,18 +223,10 @@ contract WalletScheme { "WalletScheme: maxRepPercentageChange passed" ); - require(permissionRegistry.checkERC20Limits(doAvatarGenericCalls ? avatar : address(this))); + require(permissionRegistry.checkERC20Limits(doAvatarGenericCalls ? address(avatar) : address(this))); - proposal.state = ProposalState.ExecutionSucceeded; emit ProposalStateChange(_proposalId, uint256(ProposalState.ExecutionSucceeded)); - emit ExecutionResults(_proposalId, callsSucessResult, callsDataResult); - - // If decision is 2, it means the proposal was rejected by the voting machine - } else { - proposal.state = ProposalState.Rejected; - emit ProposalStateChange(_proposalId, uint256(ProposalState.Rejected)); } - executingProposal = false; return true; } @@ -240,6 +236,7 @@ contract WalletScheme { * @param _to - The addresses to call * @param _callData - The abi encode data for the calls * @param _value value(ETH) to transfer with the calls + * @param _totalOptions The amount of options to be voted on * @param _title title of proposal * @param _descriptionHash proposal description hash * @return an id which represents the proposal @@ -248,6 +245,7 @@ contract WalletScheme { address[] calldata _to, bytes[] calldata _callData, uint256[] calldata _value, + uint256 _totalOptions, string calldata _title, string calldata _descriptionHash ) external returns (bytes32) { @@ -271,20 +269,25 @@ contract WalletScheme { } require(_to.length == _callData.length, "WalletScheme: invalid _callData length"); require(_to.length == _value.length, "WalletScheme: invalid _value length"); - - bytes32 voteParams = abi.decode( - controller.functionStaticCall( - abi.encodeWithSignature("getSchemeParameters(address,address)", address(this), avatar), - "WalletScheme: getSchemeParameters error" - ), - (bytes32) + require( + _totalOptions <= _to.length && _value.length.mod(_totalOptions) == 0, + "WalletScheme: Invalid _totalOptions or action calls length" ); + require(_totalOptions == 2, "WalletScheme: The total amount of options should be 2"); + + bytes32 voteParams = controller.getSchemeParameters(address(this)); // Get the proposal id that will be used from the voting machine - // bytes32 proposalId = votingMachine.propose(2, voteParams, msg.sender, address(avatar)); + // bytes32 proposalId = votingMachine.propose(_totalOptions, voteParams, msg.sender, address(avatar)); bytes32 proposalId = abi.decode( votingMachine.functionCall( - abi.encodeWithSignature("propose(uint256,bytes32,address,address)", 2, voteParams, msg.sender, avatar), + abi.encodeWithSignature( + "propose(uint256,bytes32,address,address)", + _totalOptions, + voteParams, + msg.sender, + avatar + ), "WalletScheme: DXDVotingMachine callback propose error" ), (bytes32) @@ -296,13 +299,14 @@ contract WalletScheme { callData: _callData, value: _value, state: ProposalState.Submitted, + totalOptions: _totalOptions, title: _title, descriptionHash: _descriptionHash, submittedTime: block.timestamp }); // slither-disable-next-line all proposalsList.push(proposalId); - proposalsBlockNumber[proposalId] = block.number; + proposalSnapshots[proposalId] = DxReputation(getReputation()).getCurrentSnapshotId(); emit ProposalStateChange(proposalId, uint256(ProposalState.Submitted)); return proposalId; } @@ -380,131 +384,4 @@ contract WalletScheme { function getOrganizationProposals() external view returns (bytes32[] memory) { return proposalsList; } - - /** - * @dev DXDVotingMachineCallbacks DONT REMOVE - */ - - modifier onlyVotingMachine() { - require(msg.sender == address(votingMachine), "only VotingMachine"); - _; - } - - mapping(bytes32 => uint256) public proposalsBlockNumber; - - function mintReputation( - uint256 _amount, - address _beneficiary, - bytes32 - ) external onlyVotingMachine returns (bool) { - // return ControllerInterface(avatar.owner()).mintReputation(_amount, _beneficiary, address(avatar)); - return - abi.decode( - controller.functionCall( - abi.encodeWithSignature( - "mintReputation(uint256,address,address)", - _amount, - _beneficiary, - address(avatar) - ), - "WalletScheme: DXDVotingMachine callback mintReputation error" - ), - (bool) - ); - } - - function burnReputation( - uint256 _amount, - address _beneficiary, - bytes32 - ) external onlyVotingMachine returns (bool) { - // return ControllerInterface(avatar.owner()).burnReputation(_amount, _beneficiary, address(avatar)); - return - abi.decode( - controller.functionCall( - abi.encodeWithSignature( - "burnReputation(uint256,address,address)", - _amount, - _beneficiary, - address(avatar) - ), - "WalletScheme: DXDVotingMachine callback burnReputation error" - ), - (bool) - ); - } - - function stakingTokenTransfer( - IERC20 _stakingToken, - address _beneficiary, - uint256 _amount, - bytes32 - ) external onlyVotingMachine returns (bool) { - return - abi.decode( - controller.functionCall( - abi.encodeWithSignature( - "externalTokenTransfer(address,address,uint256,address)", - address(_stakingToken), - _beneficiary, - _amount, - address(avatar) - ), - "WalletScheme: DXDVotingMachine callback externalTokenTransfer error" - ), - (bool) - ); - } - - function getNativeReputation() public view returns (address) { - // return Avatar(avatar).nativeReputation(); - return - abi.decode( - avatar.functionStaticCall( - abi.encodeWithSignature("nativeReputation()"), - "WalletScheme: DXDVotingMachine callback nativeReputation error" - ), - (address) - ); - } - - function getNativeReputationTotalSupply() public view returns (uint256) { - // return Avatar(avatar).nativeReputation().totalSupply(); - return - abi.decode( - getNativeReputation().functionStaticCall( - abi.encodeWithSignature("totalSupply()"), - "WalletScheme: DXDVotingMachine callback totalSupply error" - ), - (uint256) - ); - } - - function balanceOfStakingToken(IERC20 _stakingToken, bytes32) external view returns (uint256) { - return _stakingToken.balanceOf(address(avatar)); - } - - function getTotalReputationSupply(bytes32 _proposalId) external view returns (uint256) { - // return Avatar(avatar).nativeReputation().totalSupplyAt(proposalsBlockNumber[_proposalId]); - return - abi.decode( - getNativeReputation().functionStaticCall( - abi.encodeWithSignature("totalSupplyAt(uint256)", proposalsBlockNumber[_proposalId]), - "WalletScheme: DXDVotingMachine callback totalSupplyAt error" - ), - (uint256) - ); - } - - function reputationOf(address _owner, bytes32 _proposalId) external view returns (uint256) { - // return Avatar(avatar).nativeReputation().balanceOfAt(_owner, proposalsBlockNumber[_proposalId]); - return - abi.decode( - getNativeReputation().functionStaticCall( - abi.encodeWithSignature("balanceOfAt(address,uint256)", _owner, proposalsBlockNumber[_proposalId]), - "WalletScheme: DXDVotingMachine callback balanceOfAt error" - ), - (uint256) - ); - } } diff --git a/contracts/dxvote/DXDVotingMachine.sol b/contracts/dxdao/votingMachine/DXDVotingMachine.sol similarity index 94% rename from contracts/dxvote/DXDVotingMachine.sol rename to contracts/dxdao/votingMachine/DXDVotingMachine.sol index 6be20362..9f1c6900 100644 --- a/contracts/dxvote/DXDVotingMachine.sol +++ b/contracts/dxdao/votingMachine/DXDVotingMachine.sol @@ -1,43 +1,15 @@ // SPDX-License-Identifier: AGPL-3.0 pragma solidity ^0.8.8; -import {RealMath} from "../utils/RealMath.sol"; +import {RealMath} from "../../utils/RealMath.sol"; import "@openzeppelin/contracts/utils/math/SafeMath.sol"; import "@openzeppelin/contracts/utils/math/Math.sol"; import "@openzeppelin/contracts/utils/Address.sol"; import "@openzeppelin/contracts/utils/cryptography/ECDSA.sol"; import "@openzeppelin/contracts/token/ERC20/IERC20.sol"; -interface ProposalExecuteInterface { - function executeProposal(bytes32 _proposalId, int256 _decision) external returns (bool); -} - -interface VotingMachineCallbacksInterface { - function mintReputation( - uint256 _amount, - address _beneficiary, - bytes32 _proposalId - ) external returns (bool); - - function burnReputation( - uint256 _amount, - address _owner, - bytes32 _proposalId - ) external returns (bool); - - function stakingTokenTransfer( - IERC20 _stakingToken, - address _beneficiary, - uint256 _amount, - bytes32 _proposalId - ) external returns (bool); - - function getTotalReputationSupply(bytes32 _proposalId) external view returns (uint256); - - function reputationOf(address _owner, bytes32 _proposalId) external view returns (uint256); - - function balanceOfStakingToken(IERC20 _stakingToken, bytes32 _proposalId) external view returns (uint256); -} +import "./DXDVotingMachineCallbacksInterface.sol"; +import "./ProposalExecuteInterface.sol"; /** * @title GenesisProtocol implementation designed for DXdao @@ -497,7 +469,7 @@ contract DXDVotingMachine { emit Redeem(_proposalId, organizations[proposal.organizationId], _beneficiary, rewards[0]); } if (rewards[1].add(rewards[2]) != 0) { - VotingMachineCallbacksInterface(proposal.callbacks).mintReputation( + DXDVotingMachineCallbacksInterface(proposal.callbacks).mintReputation( rewards[1].add(rewards[2]), _beneficiary, _proposalId @@ -539,14 +511,16 @@ contract DXDVotingMachine { } if ( (potentialAmount != 0) && - (VotingMachineCallbacksInterface(proposal.callbacks).balanceOfStakingToken(stakingToken, _proposalId) >= - potentialAmount) + (DXDVotingMachineCallbacksInterface(proposal.callbacks).balanceOfStakingToken( + address(stakingToken), + _proposalId + ) >= potentialAmount) ) { staker.amount4Bounty = 0; proposal.daoBountyRemain = proposal.daoBountyRemain.sub(potentialAmount); require( - VotingMachineCallbacksInterface(proposal.callbacks).stakingTokenTransfer( - stakingToken, + DXDVotingMachineCallbacksInterface(proposal.callbacks).stakingTokenTransfer( + address(stakingToken), _beneficiary, potentialAmount, _proposalId @@ -911,7 +885,7 @@ contract DXDVotingMachine { Proposal storage proposal = proposals[_proposalId]; // Check voter has enough reputation: - uint256 reputation = VotingMachineCallbacksInterface(proposal.callbacks).reputationOf(_voter, _proposalId); + uint256 reputation = DXDVotingMachineCallbacksInterface(proposal.callbacks).reputationOf(_voter, _proposalId); require(reputation > 0, "_voter must have reputation"); require(reputation >= _rep, "reputation >= _rep"); uint256 rep = _rep; @@ -957,7 +931,11 @@ contract DXDVotingMachine { if ((proposal.state == ProposalState.PreBoosted) || (proposal.state == ProposalState.Queued)) { proposalPreBoostedVotes[_proposalId][_vote] = rep.add(proposalPreBoostedVotes[_proposalId][_vote]); uint256 reputationDeposit = (params.votersReputationLossRatio.mul(rep)) / 100; - VotingMachineCallbacksInterface(proposal.callbacks).burnReputation(reputationDeposit, _voter, _proposalId); + DXDVotingMachineCallbacksInterface(proposal.callbacks).burnReputation( + reputationDeposit, + _voter, + _proposalId + ); } emit VoteProposal(_proposalId, organizations[proposal.organizationId], _voter, _vote, rep); return _execute(_proposalId); @@ -1022,7 +1000,7 @@ contract DXDVotingMachine { Parameters memory params = parameters[proposal.paramsHash]; Proposal memory tmpProposal = proposal; ExecuteFunctionParams memory executeParams; - executeParams.totalReputation = VotingMachineCallbacksInterface(proposal.callbacks).getTotalReputationSupply( + executeParams.totalReputation = DXDVotingMachineCallbacksInterface(proposal.callbacks).getTotalReputationSupply( _proposalId ); //first divide by 100 to prevent overflow @@ -1151,7 +1129,7 @@ contract DXDVotingMachine { ); emit GPExecuteProposal(_proposalId, executionState); proposal.daoBounty = proposal.daoBountyRemain; - ProposalExecuteInterface(proposal.callbacks).executeProposal(_proposalId, int256(proposal.winningVote)); + ProposalExecuteInterface(proposal.callbacks).executeProposal(_proposalId, proposal.winningVote); } if (tmpProposal.state != proposal.state) { emit StateChange(_proposalId, proposal.state); diff --git a/contracts/dxdao/votingMachine/DXDVotingMachineCallbacks.sol b/contracts/dxdao/votingMachine/DXDVotingMachineCallbacks.sol new file mode 100644 index 00000000..8cfb95e2 --- /dev/null +++ b/contracts/dxdao/votingMachine/DXDVotingMachineCallbacks.sol @@ -0,0 +1,80 @@ +pragma solidity ^0.8.8; + +import "@openzeppelin/contracts/token/ERC20/IERC20.sol"; +import "../DxController.sol"; +import "../DxAvatar.sol"; +import "../DxReputation.sol"; + +contract DXDVotingMachineCallbacks { + address public votingMachine; + + DxAvatar public avatar; + + modifier onlyVotingMachine() { + require(msg.sender == address(votingMachine), "only VotingMachine"); + + _; + } + + mapping(bytes32 => uint256) public proposalSnapshots; + + function mintReputation( + uint256 _amount, + address _beneficiary, + bytes32 + ) external onlyVotingMachine returns (bool success) { + (success, ) = DxController(avatar.owner()).avatarCall( + address(avatar.reputationToken()), + abi.encodeWithSignature("mint(address,uint256)", _beneficiary, _amount), + avatar, + 0 + ); + } + + function burnReputation( + uint256 _amount, + address _beneficiary, + bytes32 + ) external onlyVotingMachine returns (bool success) { + (success, ) = DxController(avatar.owner()).avatarCall( + address(avatar.reputationToken()), + abi.encodeWithSignature("burn(address,uint256)", _beneficiary, _amount), + avatar, + 0 + ); + } + + function stakingTokenTransfer( + IERC20 _stakingToken, + address _beneficiary, + uint256 _amount, + bytes32 + ) external onlyVotingMachine returns (bool success) { + (success, ) = DxController(avatar.owner()).avatarCall( + address(_stakingToken), + abi.encodeWithSignature("transferFrom(address,address,uint256)", avatar, _beneficiary, _amount), + avatar, + 0 + ); + } + + function getReputation() public view returns (DxReputation) { + return DxReputation(avatar.reputationToken()); + } + + function getNativeReputationTotalSupply() public view returns (uint256) { + return getReputation().totalSupply(); + } + + function balanceOfStakingToken(IERC20 _stakingToken, bytes32) external view returns (uint256) { + return _stakingToken.balanceOf(address(avatar)); + } + + function getTotalReputationSupply(bytes32 _proposalId) external view returns (uint256) { + return getReputation().totalSupplyAt(proposalSnapshots[_proposalId]); + } + + function reputationOf(address _owner, bytes32 _proposalId) external view returns (uint256) { + return getReputation().balanceOfAt(_owner, proposalSnapshots[_proposalId]); + } +} diff --git a/contracts/dxdao/votingMachine/DXDVotingMachineCallbacksInterface.sol b/contracts/dxdao/votingMachine/DXDVotingMachineCallbacksInterface.sol new file mode 100644 index 00000000..1e9fa78d --- /dev/null +++ b/contracts/dxdao/votingMachine/DXDVotingMachineCallbacksInterface.sol @@ -0,0 +1,28 @@ +pragma solidity ^0.8.8; + +interface DXDVotingMachineCallbacksInterface { + function mintReputation( + uint256 _amount, + address _beneficiary, + bytes32 _proposalId + ) external returns (bool); + + function burnReputation( + uint256 _amount, + address _owner, + bytes32 _proposalId + ) external returns (bool); + + function stakingTokenTransfer( + address _stakingToken, + address _beneficiary, + uint256 _amount, + bytes32 _proposalId + ) external returns (bool); + + function getTotalReputationSupply(bytes32 _proposalId) external view returns (uint256); + + function reputationOf(address _owner, bytes32 _proposalId) external view returns (uint256); + + function balanceOfStakingToken(address _stakingToken, bytes32 _proposalId) external view returns (uint256); +} diff --git a/contracts/dxdao/votingMachine/ProposalExecuteInterface.sol b/contracts/dxdao/votingMachine/ProposalExecuteInterface.sol new file mode 100644 index 00000000..219be474 --- /dev/null +++ b/contracts/dxdao/votingMachine/ProposalExecuteInterface.sol @@ -0,0 +1,5 @@ +pragma solidity ^0.8.8; + +interface ProposalExecuteInterface { + function executeProposal(bytes32 _proposalId, uint256 _decision) external returns (bool); +} From 0942d3f2a35db52b928d68077b798f2951d3329d Mon Sep 17 00:00:00 2001 From: AugustoL Date: Mon, 19 Sep 2022 13:56:14 -0300 Subject: [PATCH 06/33] fix(scripts): small change in deploy scripts just to compile for tests --- scripts/utils/deploy-dao.js | 10 ++-------- 1 file changed, 2 insertions(+), 8 deletions(-) diff --git a/scripts/utils/deploy-dao.js b/scripts/utils/deploy-dao.js index 4eaa7fd4..bd75252d 100644 --- a/scripts/utils/deploy-dao.js +++ b/scripts/utils/deploy-dao.js @@ -6,8 +6,6 @@ const MAX_UINT_256 = "0xffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff"; const ANY_FUNC_SIGNATURE = "0xaaaaaaaa"; -const { encodePermission } = require("../../test/helpers/permissions"); - const { waitBlocks } = require("../utils/wait"); const deployDao = async function (daoConfig, networkContracts) { @@ -221,11 +219,7 @@ const deployDao = async function (daoConfig, networkContracts) { await controller.registerScheme( contributionReward.address, contributionRewardVotingmachineParamsHash, - encodePermission({ - canGenericCall: true, - canUpgrade: false, - canRegisterSchemes: false, - }), + "0x0", avatar.address ); @@ -394,7 +388,7 @@ const deployDao = async function (daoConfig, networkContracts) { await controller.registerScheme( newScheme.address, schemeParamsHash, - encodePermission(schemeConfiguration.controllerPermissions), + "0x0", avatar.address ); From e7503efdb173a24ba27bbe8d5ab16f0d398a3cda Mon Sep 17 00:00:00 2001 From: AugustoL Date: Mon, 19 Sep 2022 13:57:02 -0300 Subject: [PATCH 07/33] refactor(tests): refactor helpers to woek with new dao contracts --- test/daostack/ContributionRewards.js | 1406 -------------------------- test/daostack/Controller.js | 1042 ------------------- test/daostack/Schemeregistrar.js | 472 --------- test/dxdao/DxAvatar.js | 4 +- test/dxdao/dxdao.js | 163 +-- test/helpers/index.js | 276 +---- test/helpers/permissions.js | 88 -- 7 files changed, 128 insertions(+), 3323 deletions(-) delete mode 100644 test/daostack/ContributionRewards.js delete mode 100644 test/daostack/Controller.js delete mode 100644 test/daostack/Schemeregistrar.js delete mode 100644 test/helpers/permissions.js diff --git a/test/daostack/ContributionRewards.js b/test/daostack/ContributionRewards.js deleted file mode 100644 index 2c357800..00000000 --- a/test/daostack/ContributionRewards.js +++ /dev/null @@ -1,1406 +0,0 @@ -// -// Copied from https://github.com/daostack/arc/blob/master/test/contributionsreward.js -// - -import * as helpers from "../helpers"; -const constants = require("../helpers/constants"); - -const ContributionReward = artifacts.require("./ContributionReward.sol"); -const ERC20Mock = artifacts.require("./ERC20Mock.sol"); -const Avatar = artifacts.require("./DXAvatar.sol"); -const Redeemer = artifacts.require("./Redeemer.sol"); -const ETHRelayer = artifacts.require("./ETHRelayer.sol"); -const GnosisProxy = artifacts.require("./GnosisProxy.sol"); -const GnosisSafe = artifacts.require("./GnosisSafe.sol"); - -const { expectEvent, time } = require("@openzeppelin/test-helpers"); - -const checkRedeemedPeriods = async function ( - testSetup, - proposalId, - ReputationPeriod, - nativeTokenPeriod, - EtherPeriod, - ExternalTokenPeriod -) { - assert.equal( - await testSetup.contributionReward.getRedeemedPeriods( - proposalId, - testSetup.org.avatar.address, - 0 - ), - ReputationPeriod - ); - assert.equal( - await testSetup.contributionReward.getRedeemedPeriods( - proposalId, - testSetup.org.avatar.address, - 1 - ), - nativeTokenPeriod - ); - assert.equal( - await testSetup.contributionReward.getRedeemedPeriods( - proposalId, - testSetup.org.avatar.address, - 2 - ), - EtherPeriod - ); - assert.equal( - await testSetup.contributionReward.getRedeemedPeriods( - proposalId, - testSetup.org.avatar.address, - 3 - ), - ExternalTokenPeriod - ); -}; - -const checkRedeemedPeriodsLeft = async function ( - testSetup, - proposalId, - ReputationPeriod, - nativeTokenPeriod, - EtherPeriod, - ExternalTokenPeriod -) { - assert.equal( - await testSetup.contributionReward.getPeriodsToPay( - proposalId, - testSetup.org.avatar.address, - web3.utils.toBN(0) - ), - ReputationPeriod - ); - assert.equal( - await testSetup.contributionReward.getPeriodsToPay( - proposalId, - testSetup.org.avatar.address, - web3.utils.toBN(1) - ), - nativeTokenPeriod - ); - assert.equal( - await testSetup.contributionReward.getPeriodsToPay( - proposalId, - testSetup.org.avatar.address, - web3.utils.toBN(2) - ), - EtherPeriod - ); - assert.equal( - await testSetup.contributionReward.getPeriodsToPay( - proposalId, - testSetup.org.avatar.address, - web3.utils.toBN(3) - ), - ExternalTokenPeriod - ); -}; - -const setupContributionRewardParams = async function ( - contributionReward, - accounts, - votingMachineType = "none", - token -) { - let votingMachine, paramsHash; - if (votingMachineType !== "none") { - votingMachine = await helpers.setUpVotingMachine(token); - await contributionReward.setParameters( - votingMachine.params, - votingMachine.address - ); - paramsHash = await contributionReward.getParametersHash( - votingMachine.params, - votingMachine.address - ); - } else { - votingMachine = await helpers.setupAbsoluteVote(); - await contributionReward.setParameters( - votingMachine.params, - votingMachine.address - ); - paramsHash = await contributionReward.getParametersHash( - votingMachine.params, - votingMachine.address - ); - } - return { votingMachine, paramsHash }; -}; - -const setup = async function ( - accounts, - votingMachineType = "none", - tokenAddress = "0x0000000000000000000000000000000000000000" -) { - const standardTokenMock = await ERC20Mock.new(accounts[1], 100, "", "", "18"); - const contributionReward = await ContributionReward.new(); - const reputationArray = - votingMachineType !== "none" ? [1000, 100, 0] : [2000, 4000, 7000]; - const org = await helpers.setupOrganization( - [accounts[0], accounts[1], accounts[2]], - [1000, 0, 0], - reputationArray - ); - const contributionRewardParams = await setupContributionRewardParams( - contributionReward, - accounts, - votingMachineType, - tokenAddress, - org.avatar - ); - var permissions = "0x00000000"; - await org.daoCreator.setSchemes( - org.avatar.address, - [contributionReward.address], - [contributionRewardParams.paramsHash], - [permissions], - "metaData" - ); - return { - standardTokenMock, - contributionReward, - reputationArray, - org, - contributionRewardParams, - }; -}; -contract("ContributionReward", accounts => { - it("setParameters", async function () { - var contributionReward = await ContributionReward.new(); - var params = await setupContributionRewardParams(contributionReward); - var parameters = await contributionReward.parameters(params.paramsHash); - assert.equal(parameters[1], params.votingMachine.address); - }); - - it("proposeContributionReward log", async function () { - var testSetup = await setup(accounts); - var periodLength = 1; - var tx = await testSetup.contributionReward.proposeContributionReward( - testSetup.org.avatar.address, - "description-hash", - 10, - [1, 2, 3, periodLength, 5], - testSetup.standardTokenMock.address, - accounts[0] - ); - assert.equal(tx.logs.length, 1); - assert.equal(tx.logs[0].event, "NewContributionProposal"); - assert.equal( - await helpers.getValueFromLogs(tx, "_avatar", 0), - testSetup.org.avatar.address, - "Wrong log: _avatar" - ); - assert.equal( - await helpers.getValueFromLogs(tx, "_intVoteInterface", 0), - testSetup.contributionRewardParams.votingMachine.address, - "Wrong log: _intVoteInterface" - ); - assert.equal( - await helpers.getValueFromLogs(tx, "_descriptionHash", 15), - "description-hash", - "Wrong log: _contributionDescription" - ); - assert.equal( - await helpers.getValueFromLogs(tx, "_reputationChange", 0), - 10, - "Wrong log: _reputationChange" - ); - var arr = await helpers.getValueFromLogs(tx, "_rewards", 0); - assert.equal(arr[0].words[0], 1, "Wrong log: _rewards"); - assert.equal(arr[1].words[0], 2, "Wrong log: _rewards"); - assert.equal(arr[2].words[0], 3, "Wrong log: _rewards"); - assert.equal(arr[3].words[0], periodLength, "Wrong log: _rewards"); - assert.equal(arr[4].words[0], 5, "Wrong log: _rewards"); - assert.equal( - await helpers.getValueFromLogs(tx, "_externalToken", 0), - testSetup.standardTokenMock.address, - "Wrong log: _externalToken" - ); - assert.equal( - await helpers.getValueFromLogs(tx, "_beneficiary", 0), - accounts[0], - "Wrong log: _beneficiary" - ); - }); - - it("proposeContributionReward check beneficiary==0", async () => { - var testSetup = await setup(accounts); - var beneficiary = constants.NULL_ADDRESS; - var periodLength = 1; - var tx = await testSetup.contributionReward.proposeContributionReward( - testSetup.org.avatar.address, - web3.utils.asciiToHex("description"), - 0, - [0, 0, 0, periodLength, 0], - testSetup.standardTokenMock.address, - beneficiary - ); - assert.equal( - await helpers.getValueFromLogs(tx, "_beneficiary"), - accounts[0] - ); - }); - - it("execute proposeContributionReward yes ", async function () { - var testSetup = await setup(accounts); - var periodLength = 1; - var tx = await testSetup.contributionReward.proposeContributionReward( - testSetup.org.avatar.address, - web3.utils.asciiToHex("description"), - 0, - [0, 0, 0, periodLength, 0], - testSetup.standardTokenMock.address, - accounts[0] - ); - //Vote with reputation to trigger execution - var proposalId = await helpers.getValueFromLogs(tx, "_proposalId", 1); - await testSetup.contributionRewardParams.votingMachine.contract.vote( - proposalId, - 1, - 0, - constants.NULL_ADDRESS, - { from: accounts[2] } - ); - var organizationProposal = - await testSetup.contributionReward.organizationsProposals( - testSetup.org.avatar.address, - proposalId - ); - assert.notEqual(organizationProposal[8], 0); //executionTime - }); - - it("execute proposeContributionReward mint reputation ", async function () { - var testSetup = await setup(accounts); - var reputationReward = 12; - var periodLength = 50; - var numberOfPeriods = 1; - var tx = await testSetup.contributionReward.proposeContributionReward( - testSetup.org.avatar.address, - web3.utils.asciiToHex("description"), - reputationReward, - [0, 0, 0, periodLength, numberOfPeriods], - testSetup.standardTokenMock.address, - accounts[1] - ); - //Vote with reputation to trigger execution - var proposalId = await helpers.getValueFromLogs(tx, "_proposalId", 1); - await testSetup.contributionRewardParams.votingMachine.contract.vote( - proposalId, - 1, - 0, - constants.NULL_ADDRESS, - { from: accounts[2] } - ); - await time.increase(periodLength + 1); - tx = await testSetup.contributionReward.redeem( - proposalId, - testSetup.org.avatar.address, - [true, false, false, false] - ); - assert.equal(tx.logs.length, 1); - assert.equal(tx.logs[0].event, "RedeemReputation"); - assert.equal(tx.logs[0].args._amount, reputationReward); - var rep = await testSetup.org.reputation.balanceOf(accounts[1]); - assert.equal( - rep.toNumber(), - testSetup.reputationArray[1] + reputationReward - ); - }); - - it("execute proposeContributionReward mint tokens ", async function () { - var testSetup = await setup(accounts); - var reputationReward = 12; - var nativeTokenReward = 12; - var periodLength = 50; - var numberOfPeriods = 1; - var tx = await testSetup.contributionReward.proposeContributionReward( - testSetup.org.avatar.address, - web3.utils.asciiToHex("description"), - reputationReward, - [nativeTokenReward, 0, 0, periodLength, numberOfPeriods], - testSetup.standardTokenMock.address, - accounts[1] - ); - //Vote with reputation to trigger execution - var proposalId = await helpers.getValueFromLogs(tx, "_proposalId", 1); - await testSetup.contributionRewardParams.votingMachine.contract.vote( - proposalId, - 1, - 0, - constants.NULL_ADDRESS, - { from: accounts[2] } - ); - await time.increase(periodLength + 1); - tx = await testSetup.contributionReward.redeem( - proposalId, - testSetup.org.avatar.address, - [false, true, false, false] - ); - var tokens = await testSetup.org.token.balanceOf(accounts[1]); - assert.equal(tokens.toNumber(), nativeTokenReward); - }); - - it("execute proposeContributionReward send ethers ", async function () { - var testSetup = await setup(accounts); - var reputationReward = 12; - var nativeTokenReward = 12; - var ethReward = 12; - var periodLength = 50; - var numberOfPeriods = 1; - //send some ether to the org avatar - var otherAvatar = await Avatar.new( - "otheravatar", - constants.NULL_ADDRESS, - constants.NULL_ADDRESS - ); - await web3.eth.sendTransaction({ - from: accounts[0], - to: testSetup.org.avatar.address, - value: 20, - }); - var tx = await testSetup.contributionReward.proposeContributionReward( - testSetup.org.avatar.address, - web3.utils.asciiToHex("description"), - reputationReward, - [nativeTokenReward, ethReward, 0, periodLength, numberOfPeriods], - testSetup.standardTokenMock.address, - otherAvatar.address - ); - //Vote with reputation to trigger execution - var proposalId = await helpers.getValueFromLogs(tx, "_proposalId", 1); - await testSetup.contributionRewardParams.votingMachine.contract.vote( - proposalId, - 1, - 0, - constants.NULL_ADDRESS, - { from: accounts[2] } - ); - await time.increase(periodLength + 1); - await testSetup.contributionReward.redeem( - proposalId, - testSetup.org.avatar.address, - [false, false, true, false] - ); - var eth = await web3.eth.getBalance(otherAvatar.address); - assert.equal(eth, ethReward); - }); - - it("execute proposeContributionReward send across relayer ", async function () { - var testSetup = await setup(accounts); - var ethReward = 666; - var periodLength = 50; - var numberOfPeriods = 1; - //send some ether to the org avatar - var gnosisSafe = await GnosisSafe.new(); - var gnosisProxy = await GnosisProxy.new(gnosisSafe.address); - var ethRelayer = await ETHRelayer.new(gnosisProxy.address); - await web3.eth.sendTransaction({ - from: accounts[0], - to: testSetup.org.avatar.address, - value: 666, - }); - var tx = await testSetup.contributionReward.proposeContributionReward( - testSetup.org.avatar.address, - web3.utils.asciiToHex("description"), - 0, - [0, ethReward, 0, periodLength, numberOfPeriods], - testSetup.standardTokenMock.address, - ethRelayer.address - ); - //Vote with reputation to trigger execution - var proposalId = await helpers.getValueFromLogs(tx, "_proposalId", 1); - await testSetup.contributionRewardParams.votingMachine.contract.vote( - proposalId, - 1, - 0, - constants.NULL_ADDRESS, - { from: accounts[2] } - ); - await time.increase(periodLength + 1); - await testSetup.contributionReward.redeem( - proposalId, - testSetup.org.avatar.address, - [false, false, true, false] - ); - assert.equal(await web3.eth.getBalance(ethRelayer.address), ethReward); - await ethRelayer.relay(); - assert.equal(await web3.eth.getBalance(gnosisProxy.address), ethReward); - }); - - it("execute proposeContributionReward send externalToken ", async function () { - var testSetup = await setup(accounts); - //give some tokens to organization avatar - await testSetup.standardTokenMock.transfer( - testSetup.org.avatar.address, - 30, - { from: accounts[1] } - ); - var reputationReward = 12; - var nativeTokenReward = 12; - var ethReward = 12; - var externalTokenReward = 12; - var periodLength = 50; - var numberOfPeriods = 1; - //send some ether to the org avatar - var otherAvatar = await Avatar.new( - "otheravatar", - constants.NULL_ADDRESS, - constants.NULL_ADDRESS - ); - await web3.eth.sendTransaction({ - from: accounts[0], - to: testSetup.org.avatar.address, - value: 20, - }); - var tx = await testSetup.contributionReward.proposeContributionReward( - testSetup.org.avatar.address, - web3.utils.asciiToHex("description"), - reputationReward, - [ - nativeTokenReward, - ethReward, - externalTokenReward, - periodLength, - numberOfPeriods, - ], - testSetup.standardTokenMock.address, - otherAvatar.address - ); - //Vote with reputation to trigger execution - var proposalId = await helpers.getValueFromLogs(tx, "_proposalId", 1); - await testSetup.contributionRewardParams.votingMachine.contract.vote( - proposalId, - 1, - 0, - constants.NULL_ADDRESS, - { from: accounts[2] } - ); - await time.increase(periodLength + 1); - await testSetup.contributionReward.redeem( - proposalId, - testSetup.org.avatar.address, - [false, false, false, true] - ); - var tokens = await testSetup.standardTokenMock.balanceOf( - otherAvatar.address - ); - assert.equal(tokens.toNumber(), externalTokenReward); - }); - - it("execute proposeContributionReward proposal decision=='no' send externalToken ", async function () { - var testSetup = await setup(accounts); - var reputationReward = 12; - var nativeTokenReward = 12; - var ethReward = 12; - var externalTokenReward = 12; - var periodLength = 50; - var numberOfPeriods = 1; - //send some ether to the org avatar - var otherAvatar = await Avatar.new( - "otheravatar", - constants.NULL_ADDRESS, - constants.NULL_ADDRESS - ); - await web3.eth.sendTransaction({ - from: accounts[0], - to: testSetup.org.avatar.address, - value: 20, - }); - var tx = await testSetup.contributionReward.proposeContributionReward( - testSetup.org.avatar.address, - web3.utils.asciiToHex("description"), - reputationReward, - [ - nativeTokenReward, - ethReward, - externalTokenReward, - periodLength, - numberOfPeriods, - ], - testSetup.standardTokenMock.address, - otherAvatar.address - ); - //Vote with reputation to trigger execution - var proposalId = await helpers.getValueFromLogs(tx, "_proposalId", 1); - var organizationProposal = - await testSetup.contributionReward.organizationsProposals( - testSetup.org.avatar.address, - proposalId - ); - assert.equal(organizationProposal[5], otherAvatar.address); //beneficiary - await testSetup.contributionRewardParams.votingMachine.contract.vote( - proposalId, - 0, - 0, - constants.NULL_ADDRESS, - { from: accounts[2] } - ); - await time.increase(periodLength + 1); - try { - await testSetup.contributionReward.redeem( - proposalId, - testSetup.org.avatar.address, - [true, true, true, true] - ); - assert( - false, - "redeem should revert because there was no positive voting" - ); - } catch (ex) { - helpers.assertVMException(ex); - } - }); - - it("redeem periods ether ", async function () { - var testSetup = await setup(accounts); - var reputationReward = 0; - var nativeTokenReward = 0; - var ethReward = 3; - var periodLength = 50; - var numberOfPeriods = 5; - //send some ether to the org avatar - var otherAvatar = await Avatar.new( - "otheravatar", - constants.NULL_ADDRESS, - constants.NULL_ADDRESS - ); - await web3.eth.sendTransaction({ - from: accounts[0], - to: testSetup.org.avatar.address, - value: 12, - }); - var tx = await testSetup.contributionReward.proposeContributionReward( - testSetup.org.avatar.address, - web3.utils.asciiToHex("description"), - reputationReward, - [nativeTokenReward, ethReward, 0, periodLength, numberOfPeriods], - testSetup.standardTokenMock.address, - otherAvatar.address - ); - //Vote with reputation to trigger execution - var proposalId = await helpers.getValueFromLogs(tx, "_proposalId", 1); - await testSetup.contributionRewardParams.votingMachine.contract.vote( - proposalId, - 1, - 0, - constants.NULL_ADDRESS, - { from: accounts[2] } - ); - await time.increase(periodLength + 1); - - await checkRedeemedPeriods(testSetup, proposalId, 0, 0, 0, 0); - await checkRedeemedPeriodsLeft(testSetup, proposalId, 1, 1, 1, 1); - tx = await testSetup.contributionReward.redeem( - proposalId, - testSetup.org.avatar.address, - [false, false, true, false] - ); - - assert.equal(tx.logs.length, 1); - assert.equal(tx.logs[0].event, "RedeemEther"); - assert.equal(tx.logs[0].args._amount, ethReward); - var eth = await web3.eth.getBalance(otherAvatar.address); - assert.equal(eth, ethReward); - - await checkRedeemedPeriods(testSetup, proposalId, 0, 0, 1, 0); - await checkRedeemedPeriodsLeft(testSetup, proposalId, 1, 1, 0, 1); - //now try again on the same period - tx = await testSetup.contributionReward.redeem( - proposalId, - testSetup.org.avatar.address, - [false, false, true, false] - ); - assert.equal(tx.logs.length, 0); - eth = await web3.eth.getBalance(otherAvatar.address); - assert.equal(eth, ethReward); - - //now try again on 2nd period - await time.increase(periodLength + 1); - - await checkRedeemedPeriods(testSetup, proposalId, 0, 0, 1, 0); - await checkRedeemedPeriodsLeft(testSetup, proposalId, 2, 2, 1, 2); - - tx = await testSetup.contributionReward.redeem( - proposalId, - testSetup.org.avatar.address, - [false, false, true, false] - ); - assert.equal(tx.logs.length, 1); - assert.equal(tx.logs[0].event, "RedeemEther"); - assert.equal(tx.logs[0].args._amount, ethReward); - eth = await web3.eth.getBalance(otherAvatar.address); - assert.equal(eth, ethReward * 2); - - //now try again on 4th period - await time.increase(periodLength * 2 + 1); - - await checkRedeemedPeriods(testSetup, proposalId, 0, 0, 2, 0); - await checkRedeemedPeriodsLeft(testSetup, proposalId, 4, 4, 2, 4); - - tx = await testSetup.contributionReward.redeem( - proposalId, - testSetup.org.avatar.address, - [false, false, true, false] - ); - assert.equal(tx.logs.length, 1); - assert.equal(tx.logs[0].event, "RedeemEther"); - assert.equal(tx.logs[0].args._amount, ethReward * 2); - eth = await web3.eth.getBalance(otherAvatar.address); - assert.equal(eth, ethReward * 4); - - //now try again on 5th period - no ether on avatar should revert - await time.increase(periodLength + 1); - await checkRedeemedPeriods(testSetup, proposalId, 0, 0, 4, 0); - await checkRedeemedPeriodsLeft(testSetup, proposalId, 5, 5, 1, 5); - try { - await testSetup.contributionReward.redeem( - proposalId, - testSetup.org.avatar.address, - [false, false, true, false] - ); - assert(false, "redeem should revert because no ether left on avatar"); - } catch (ex) { - helpers.assertVMException(ex); - } - await web3.eth.sendTransaction({ - from: accounts[0], - to: testSetup.org.avatar.address, - value: ethReward, - }); - - await checkRedeemedPeriods(testSetup, proposalId, 0, 0, 4, 0); - await checkRedeemedPeriodsLeft(testSetup, proposalId, 5, 5, 1, 5); - - tx = await testSetup.contributionReward.redeem( - proposalId, - testSetup.org.avatar.address, - [false, false, true, false] - ); - assert.equal(tx.logs.length, 1); - assert.equal(tx.logs[0].event, "RedeemEther"); - assert.equal(tx.logs[0].args._amount, ethReward); - eth = await web3.eth.getBalance(otherAvatar.address); - assert.equal(eth, ethReward * 5); - - await checkRedeemedPeriods(testSetup, proposalId, 0, 0, 5, 0); - await checkRedeemedPeriodsLeft(testSetup, proposalId, 5, 5, 0, 5); - - //cannot redeem any more.. - await time.increase(periodLength + 1); - tx = await testSetup.contributionReward.redeem( - proposalId, - testSetup.org.avatar.address, - [false, false, true, false] - ); - assert.equal(tx.logs.length, 0); - eth = await web3.eth.getBalance(otherAvatar.address); - assert.equal(eth, ethReward * 5); - - await checkRedeemedPeriods(testSetup, proposalId, 0, 0, 5, 0); - await checkRedeemedPeriodsLeft(testSetup, proposalId, 5, 5, 0, 5); - }); - - it("execute proposeContributionReward mint negative reputation ", async function () { - var testSetup = await setup(accounts); - var reputationReward = -12; - var periodLength = 50; - var numberOfPeriods = 1; - var tx = await testSetup.contributionReward.proposeContributionReward( - testSetup.org.avatar.address, - web3.utils.asciiToHex("description"), - reputationReward, - [0, 0, 0, periodLength, numberOfPeriods], - testSetup.standardTokenMock.address, - accounts[0] - ); - //Vote with reputation to trigger execution - var proposalId = await helpers.getValueFromLogs(tx, "_proposalId", 1); - await testSetup.contributionRewardParams.votingMachine.contract.vote( - proposalId, - 1, - 0, - constants.NULL_ADDRESS, - { from: accounts[2] } - ); - await time.increase(periodLength + 1); - tx = await testSetup.contributionReward.redeem( - proposalId, - testSetup.org.avatar.address, - [true, false, false, false] - ); - assert.equal(tx.logs.length, 1); - assert.equal(tx.logs[0].event, "RedeemReputation"); - assert.equal(tx.logs[0].args._amount, reputationReward); - var rep = await testSetup.org.reputation.balanceOf(accounts[0]); - assert.equal( - rep.toNumber(), - testSetup.reputationArray[0] + reputationReward - ); - }); - - it("call execute should revert ", async function () { - var testSetup = await setup(accounts); - var reputationReward = -12; - var periodLength = 50; - var numberOfPeriods = 1; - var tx = await testSetup.contributionReward.proposeContributionReward( - testSetup.org.avatar.address, - web3.utils.asciiToHex("description"), - reputationReward, - [0, 0, 0, periodLength, numberOfPeriods], - testSetup.standardTokenMock.address, - accounts[0] - ); - //Vote with reputation to trigger execution - var proposalId = await helpers.getValueFromLogs(tx, "_proposalId", 1); - try { - await testSetup.contributionReward.executeProposal(proposalId, 1); - assert(false, "only voting machine can call execute"); - } catch (ex) { - helpers.assertVMException(ex); - } - }); - - it("get redeemed periods left ", async function () { - var testSetup = await setup(accounts); - var periodLength = 1; - var fakePId = "0x1234"; - await checkRedeemedPeriodsLeft(testSetup, fakePId, 0, 0, 0, 0); - - await checkRedeemedPeriods(testSetup, fakePId, 0, 0, 0, 0); - - var tx = await testSetup.contributionReward.proposeContributionReward( - testSetup.org.avatar.address, - web3.utils.asciiToHex("description"), - 0, - [0, 0, 0, periodLength, 0], - testSetup.standardTokenMock.address, - accounts[0] - ); - //Vote with reputation to trigger execution - var proposalId = await helpers.getValueFromLogs(tx, "_proposalId", 1); - await checkRedeemedPeriods(testSetup, fakePId, 0, 0, 0, 0); - await checkRedeemedPeriodsLeft(testSetup, proposalId, 0, 0, 0, 0); - }); - - // eslint-disable-next-line max-len - it("execute proposeContributionReward via genesisProtocol voting machine and redeem using Redeemer", async function () { - var standardTokenMock = await ERC20Mock.new( - accounts[0], - 1000, - "", - "", - "18" - ); - var testSetup = await setup(accounts, "gen", standardTokenMock.address); - var reputationReward = 12; - var nativeTokenReward = 12; - var ethReward = 12; - var periodLength = 50; - var numberOfPeriods = 1; - //send some ether to the org avatar - var otherAvatar = await Avatar.new( - "otheravatar", - constants.NULL_ADDRESS, - constants.NULL_ADDRESS - ); - await web3.eth.sendTransaction({ - from: accounts[0], - to: testSetup.org.avatar.address, - value: 20, - }); - var tx = await testSetup.contributionReward.proposeContributionReward( - testSetup.org.avatar.address, - web3.utils.asciiToHex("description"), - reputationReward, - [nativeTokenReward, ethReward, 0, periodLength, numberOfPeriods], - testSetup.standardTokenMock.address, - otherAvatar.address - ); - //Vote with reputation to trigger execution - var proposalId = await helpers.getValueFromLogs(tx, "_proposalId", 1); - await testSetup.contributionRewardParams.votingMachine.contract.vote( - proposalId, - 1, - 0, - constants.NULL_ADDRESS, - { from: accounts[0] } - ); - await time.increase(periodLength + 1); - var arcUtils = await Redeemer.new(); - var redeemRewards = await arcUtils.redeem.call( - testSetup.contributionReward.address, - testSetup.contributionRewardParams.votingMachine.address, - proposalId, - testSetup.org.avatar.address, - accounts[0] - ); - assert.equal(redeemRewards[0][1], 100); //redeemRewards[0] gpRewards - assert.equal(redeemRewards[0][2], 60); - assert.equal(redeemRewards[1][0], 0); //daoBountyRewards - assert.equal(redeemRewards[1][1], 0); //daoBountyRewards - assert.equal(redeemRewards[2], false); //isExecuted - assert.equal(redeemRewards[3], 1); //winningVote - assert.equal(redeemRewards[4], reputationReward); //crReputationReward - assert.equal(redeemRewards[5], nativeTokenReward); //crNativeTokenReward - assert.equal(redeemRewards[6], ethReward); //crEthReward - assert.equal(redeemRewards[7], 0); //crExternalTokenReward - - await arcUtils.redeem( - testSetup.contributionReward.address, - testSetup.contributionRewardParams.votingMachine.address, - proposalId, - testSetup.org.avatar.address, - accounts[0] - ); - - var eth = await web3.eth.getBalance(otherAvatar.address); - assert.equal(eth, ethReward); - assert.equal( - await testSetup.org.reputation.balanceOf(otherAvatar.address), - reputationReward - ); - assert.equal( - await testSetup.org.token.balanceOf(otherAvatar.address), - nativeTokenReward - ); - var reputation = await testSetup.org.reputation.balanceOf(accounts[0]); - var reputationGainAsVoter = 0; - var proposingRepRewardConstA = 60; - var reputationGainAsProposer = proposingRepRewardConstA; - assert.equal( - reputation, - 1000 + reputationGainAsVoter + reputationGainAsProposer - ); - }); - - // eslint-disable-next-line max-len - it("execute proposeContributionReward via genesisProtocol voting machine and redeem using Redeemer for un executed boosted proposal", async function () { - var standardTokenMock = await ERC20Mock.new( - accounts[0], - 1000, - "", - "", - "18" - ); - var testSetup = await setup(accounts, "gen", standardTokenMock.address); - var reputationReward = 12; - var nativeTokenReward = 12; - var ethReward = 12; - var periodLength = 0; - var numberOfPeriods = 1; - //send some ether to the org avatar - var otherAvatar = await Avatar.new( - "otheravatar", - constants.NULL_ADDRESS, - constants.NULL_ADDRESS - ); - await web3.eth.sendTransaction({ - from: accounts[0], - to: testSetup.org.avatar.address, - value: 20, - }); - var tx = await testSetup.contributionReward.proposeContributionReward( - testSetup.org.avatar.address, - web3.utils.asciiToHex("description"), - reputationReward, - [nativeTokenReward, ethReward, 0, periodLength, numberOfPeriods], - testSetup.standardTokenMock.address, - otherAvatar.address - ); - //Vote with reputation to trigger execution - var proposalId = await helpers.getValueFromLogs(tx, "_proposalId", 1); - - await testSetup.contributionRewardParams.votingMachine.contract.vote( - proposalId, - 1, - 0, - constants.NULL_ADDRESS, - { from: accounts[1] } - ); - await standardTokenMock.approve( - testSetup.contributionRewardParams.votingMachine.contract.address, - 1000, - { from: accounts[0] } - ); - const stakeTx = - await testSetup.contributionRewardParams.votingMachine.contract.stake( - proposalId, - 1, - 1000, - { from: accounts[0] } - ); - expectEvent(stakeTx.receipt, "StateChange", { - _proposalId: proposalId, - _proposalState: "4", - }); - - await time.increase(3600 + 1); - const boostTx = - await testSetup.contributionRewardParams.votingMachine.contract.execute( - proposalId, - { from: accounts[0] } - ); - expectEvent(boostTx.receipt, "StateChange", { - _proposalId: proposalId, - _proposalState: "5", - }); - - await time.increase(86400 + 1); - var arcUtils = await Redeemer.new(); - var redeemRewards = await arcUtils.redeem.call( - testSetup.contributionReward.address, - testSetup.contributionRewardParams.votingMachine.address, - proposalId, - testSetup.org.avatar.address, - accounts[0] - ); - assert.equal(redeemRewards[0][1], 0); //redeemRewards[0] gpRewards - assert.equal(redeemRewards[0][2], 60); - assert.equal(redeemRewards[1][0], 0); //daoBountyRewards - assert.equal(redeemRewards[1][1], 15); //daoBountyRewards - assert.equal(redeemRewards[2], true); //isExecuted - assert.equal(redeemRewards[3], 1); //winningVote - assert.equal(redeemRewards[4], reputationReward); //crReputationReward - assert.equal(redeemRewards[5], nativeTokenReward); //crNativeTokenReward - assert.equal(redeemRewards[6], ethReward); //crEthReward - assert.equal(redeemRewards[7], 0); //crExternalTokenReward - - await arcUtils.redeem( - testSetup.contributionReward.address, - testSetup.contributionRewardParams.votingMachine.address, - proposalId, - testSetup.org.avatar.address, - accounts[0] - ); - - var eth = await web3.eth.getBalance(otherAvatar.address); - assert.equal(eth, ethReward); - assert.equal( - await testSetup.org.reputation.balanceOf(otherAvatar.address), - reputationReward - ); - assert.equal( - await testSetup.org.token.balanceOf(otherAvatar.address), - nativeTokenReward - ); - var reputation = await testSetup.org.reputation.balanceOf(accounts[0]); - var reputationGainAsVoter = 0; - var proposingRepRewardConstA = 60; - var reputationGainAsProposer = proposingRepRewardConstA; - assert.equal( - reputation, - 1000 + reputationGainAsVoter + reputationGainAsProposer - ); - }); - - // eslint-disable-next-line max-len - it("execute proposeContributionReward via dxd voting machine and redeem using Redeemer for un executed boosted proposal", async function () { - var standardTokenMock = await ERC20Mock.new( - accounts[0], - 1000, - "", - "", - "18" - ); - var testSetup = await setup(accounts, "dxd", standardTokenMock.address); - var reputationReward = 12; - var nativeTokenReward = 12; - var ethReward = 12; - var periodLength = 0; - var numberOfPeriods = 1; - //send some ether to the org avatar - var otherAvatar = await Avatar.new( - "otheravatar", - constants.NULL_ADDRESS, - constants.NULL_ADDRESS - ); - await web3.eth.sendTransaction({ - from: accounts[0], - to: testSetup.org.avatar.address, - value: 20, - }); - var tx = await testSetup.contributionReward.proposeContributionReward( - testSetup.org.avatar.address, - web3.utils.asciiToHex("description"), - reputationReward, - [nativeTokenReward, ethReward, 0, periodLength, numberOfPeriods], - testSetup.standardTokenMock.address, - otherAvatar.address - ); - //Vote with reputation to trigger execution - var proposalId = await helpers.getValueFromLogs(tx, "_proposalId", 1); - - await testSetup.contributionRewardParams.votingMachine.contract.vote( - proposalId, - 1, - 0, - constants.NULL_ADDRESS, - { from: accounts[1] } - ); - await standardTokenMock.approve( - testSetup.contributionRewardParams.votingMachine.contract.address, - 1000, - { from: accounts[0] } - ); - const stakeTx = - await testSetup.contributionRewardParams.votingMachine.contract.stake( - proposalId, - 1, - 1000, - { from: accounts[0] } - ); - - // Check it change to pre-boosted - expectEvent(stakeTx.receipt, "StateChange", { - _proposalId: proposalId, - _proposalState: "4", - }); - await time.increase(3600 + 10); - - // Pre-boost time passes but ther eis no need to execute pre-boosted proposal in DXD voting machine - // It will be boosted and executed automatically in redeem - - await time.increase(86400 + 1); - var arcUtils = await Redeemer.new(); - var redeemRewards = await arcUtils.redeem.call( - testSetup.contributionReward.address, - testSetup.contributionRewardParams.votingMachine.address, - proposalId, - testSetup.org.avatar.address, - accounts[0] - ); - assert.equal(redeemRewards[0][1], 0); //redeemRewards[0] gpRewards - assert.equal(redeemRewards[0][2], 60); - assert.equal(redeemRewards[1][0], 0); //daoBountyRewards - assert.equal(redeemRewards[1][1], 15); //daoBountyRewards - assert.equal(redeemRewards[2], true); //isExecuted - assert.equal(redeemRewards[3], 1); //winningVote - assert.equal(redeemRewards[4], reputationReward); //crReputationReward - assert.equal(redeemRewards[5], nativeTokenReward); //crNativeTokenReward - assert.equal(redeemRewards[6], ethReward); //crEthReward - assert.equal(redeemRewards[7], 0); //crExternalTokenReward - - const redeemTx = await arcUtils.redeem( - testSetup.contributionReward.address, - testSetup.contributionRewardParams.votingMachine.address, - proposalId, - testSetup.org.avatar.address, - accounts[0] - ); - - // Check it changed to executed in redeem - await expectEvent.inTransaction( - redeemTx.tx, - testSetup.contributionRewardParams.votingMachine.contract, - "StateChange", - { - _proposalId: proposalId, - _proposalState: "2", - } - ); - - var eth = await web3.eth.getBalance(otherAvatar.address); - assert.equal(eth, ethReward); - assert.equal( - await testSetup.org.reputation.balanceOf(otherAvatar.address), - reputationReward - ); - assert.equal( - await testSetup.org.token.balanceOf(otherAvatar.address), - nativeTokenReward - ); - var reputation = await testSetup.org.reputation.balanceOf(accounts[0]); - var reputationGainAsVoter = 0; - var proposingRepRewardConstA = 60; - var reputationGainAsProposer = proposingRepRewardConstA; - assert.equal( - reputation, - 1000 + reputationGainAsVoter + reputationGainAsProposer - ); - }); - - // eslint-disable-next-line max-len - it("execute proposeContributionReward via genesisProtocol voting machine and redeem using Redeemer for negative proposal", async function () { - var standardTokenMock = await ERC20Mock.new( - accounts[0], - 1000, - "", - "", - "18" - ); - var testSetup = await setup(accounts, "gen", standardTokenMock.address); - var reputationReward = 12; - var nativeTokenReward = 12; - var ethReward = 12; - var periodLength = 50; - var numberOfPeriods = 1; - //send some ether to the org avatar - var otherAvatar = await Avatar.new( - "otheravatar", - constants.NULL_ADDRESS, - constants.NULL_ADDRESS - ); - await web3.eth.sendTransaction({ - from: accounts[0], - to: testSetup.org.avatar.address, - value: 20, - }); - var tx = await testSetup.contributionReward.proposeContributionReward( - testSetup.org.avatar.address, - web3.utils.asciiToHex("description"), - reputationReward, - [nativeTokenReward, ethReward, 0, periodLength, numberOfPeriods], - testSetup.standardTokenMock.address, - otherAvatar.address - ); - //Vote with reputation to trigger execution - var proposalId = await helpers.getValueFromLogs(tx, "_proposalId", 1); - await testSetup.contributionRewardParams.votingMachine.contract.vote( - proposalId, - 2, - 0, - constants.NULL_ADDRESS, - { from: accounts[0] } - ); - await time.increase(periodLength + 1); - var arcUtils = await Redeemer.new(); - await arcUtils.redeem( - testSetup.contributionReward.address, - testSetup.contributionRewardParams.votingMachine.address, - proposalId, - testSetup.org.avatar.address, - accounts[0] - ); - var eth = await web3.eth.getBalance(otherAvatar.address); - assert.equal(eth, 0); - assert.equal( - await testSetup.org.reputation.balanceOf(otherAvatar.address), - 0 - ); - assert.equal(await testSetup.org.token.balanceOf(otherAvatar.address), 0); - var reputation = await testSetup.org.reputation.balanceOf(accounts[0]); - //no reputation reward for proposer for negative proposal. - //reputation reward for a single voter = 0 - assert.equal(reputation, 1000); - }); - - // eslint-disable-next-line max-len - it("execute proposeContributionReward via genesisProtocol voting machine and redeem using Redeemer ExpiredInQueue", async function () { - var standardTokenMock = await ERC20Mock.new( - accounts[0], - 1000, - "", - "", - "18" - ); - var testSetup = await setup(accounts, "gen", standardTokenMock.address); - var reputationReward = 12; - var nativeTokenReward = 12; - var ethReward = 12; - var periodLength = 50; - var numberOfPeriods = 1; - var tx = await testSetup.contributionReward.proposeContributionReward( - testSetup.org.avatar.address, - web3.utils.asciiToHex("description"), - reputationReward, - [nativeTokenReward, ethReward, 0, periodLength, numberOfPeriods], - testSetup.standardTokenMock.address, - constants.SOME_ADDRESS - ); - var proposalId = await helpers.getValueFromLogs(tx, "_proposalId", 1); - - await testSetup.contributionRewardParams.votingMachine.contract.vote( - proposalId, - 1, - 0, - constants.NULL_ADDRESS, - { from: accounts[1] } - ); - await time.increase(172800 + 1); - var arcUtils = await Redeemer.new(); - await arcUtils.redeem( - testSetup.contributionReward.address, - testSetup.contributionRewardParams.votingMachine.address, - proposalId, - testSetup.org.avatar.address, - accounts[1] - ); - var proposal = - await testSetup.contributionRewardParams.votingMachine.contract.proposals( - proposalId - ); - assert.equal(proposal.state, 1); //ExpiredInQueue - var reputation = await testSetup.org.reputation.balanceOf(accounts[1]); - //accounts[1] redeems its deposit rep. - assert.equal(reputation.toNumber(), 100); - }); - - it("execute proposeContributionReward mint reputation with period 0 ", async function () { - var testSetup = await setup(accounts); - var reputationReward = 12; - var periodLength = 0; - var numberOfPeriods = 1; - var tx = await testSetup.contributionReward.proposeContributionReward( - testSetup.org.avatar.address, - web3.utils.asciiToHex("description"), - reputationReward, - [0, 0, 0, periodLength, numberOfPeriods], - testSetup.standardTokenMock.address, - accounts[1], - { from: accounts[2] } - ); - try { - await testSetup.contributionReward.proposeContributionReward( - testSetup.org.avatar.address, - web3.utils.asciiToHex("description"), - reputationReward, - [0, 0, 0, periodLength, 2], - testSetup.standardTokenMock.address, - accounts[1], - { from: accounts[2] } - ); - assert(false, "if periodLength==0 so numberOfPeriods must be 1"); - } catch (ex) { - helpers.assertVMException(ex); - } - - //Vote with reputation to trigger execution - var proposalId = await helpers.getValueFromLogs(tx, "_proposalId", 1); - await testSetup.contributionRewardParams.votingMachine.contract.vote( - proposalId, - 1, - 0, - constants.NULL_ADDRESS, - { from: accounts[2] } - ); - tx = await testSetup.contributionReward.redeem( - proposalId, - testSetup.org.avatar.address, - [true, false, false, false] - ); - assert.equal(tx.logs.length, 1); - assert.equal(tx.logs[0].event, "RedeemReputation"); - assert.equal(tx.logs[0].args._amount, reputationReward); - var rep = await testSetup.org.reputation.balanceOf(accounts[1]); - assert.equal( - rep.toNumber(), - testSetup.reputationArray[1] + reputationReward - ); - //try to redeem again. - tx = await testSetup.contributionReward.redeem( - proposalId, - testSetup.org.avatar.address, - [true, false, false, false] - ); - assert.equal(tx.logs.length, 0); - rep = await testSetup.org.reputation.balanceOf(accounts[1]); - assert.equal( - rep.toNumber(), - testSetup.reputationArray[1] + reputationReward - ); - }); - - it("execute proposeContributionReward param validate ", async function () { - var testSetup = await setup(accounts); - let BigNumber = require("bignumber.js"); - let reputationReward = new BigNumber(2).toPower(255).sub(1).toString(10); - var periodLength = 1; - var numberOfPeriods = 2; - - try { - await testSetup.contributionReward.proposeContributionReward( - testSetup.org.avatar.address, - web3.utils.asciiToHex("description"), - reputationReward, - [0, 0, 0, periodLength, numberOfPeriods], - testSetup.standardTokenMock.address, - accounts[1], - { from: accounts[2] } - ); - assert(false, "numberOfPeriods * _reputationChange should not overflow"); - } catch (ex) { - helpers.assertVMException(ex); - } - reputationReward = 12; - var tokenReward = new BigNumber(2).toPower(256).sub(1).toString(10); - var ethReward = 0; - var externalTokenReward = 0; - try { - await testSetup.contributionReward.proposeContributionReward( - testSetup.org.avatar.address, - web3.utils.asciiToHex("description"), - reputationReward, - [ - tokenReward, - ethReward, - externalTokenReward, - periodLength, - numberOfPeriods, - ], - testSetup.standardTokenMock.address, - accounts[1], - { from: accounts[2] } - ); - assert(false, "numberOfPeriods * tokenReward should not overflow"); - } catch (ex) { - helpers.assertVMException(ex); - } - - tokenReward = 0; - ethReward = new BigNumber(2).toPower(256).sub(1).toString(10); - externalTokenReward = 0; - - try { - await testSetup.contributionReward.proposeContributionReward( - testSetup.org.avatar.address, - web3.utils.asciiToHex("description"), - reputationReward, - [ - tokenReward, - ethReward, - externalTokenReward, - periodLength, - numberOfPeriods, - ], - testSetup.standardTokenMock.address, - accounts[1], - { from: accounts[2] } - ); - assert(false, "numberOfPeriods * ethReward should not overflow"); - } catch (ex) { - helpers.assertVMException(ex); - } - - tokenReward = 0; - ethReward = 0; - externalTokenReward = new BigNumber(2).toPower(256).sub(1).toString(10); - - try { - await testSetup.contributionReward.proposeContributionReward( - testSetup.org.avatar.address, - web3.utils.asciiToHex("description"), - reputationReward, - [ - tokenReward, - ethReward, - externalTokenReward, - periodLength, - numberOfPeriods, - ], - testSetup.standardTokenMock.address, - accounts[1], - { from: accounts[2] } - ); - assert( - false, - "numberOfPeriods * externalTokenReward should not overflow" - ); - } catch (ex) { - helpers.assertVMException(ex); - } - }); -}); diff --git a/test/daostack/Controller.js b/test/daostack/Controller.js deleted file mode 100644 index 605baea8..00000000 --- a/test/daostack/Controller.js +++ /dev/null @@ -1,1042 +0,0 @@ -const helpers = require("../helpers"); - -const DxController = artifacts.require("./DxController.sol"); -const DxReputation = artifacts.require("./DxReputation.sol"); -const DxAvatar = artifacts.require("./DXAvatar.sol"); -const DxToken = artifacts.require("./DxToken.sol"); -const GlobalConstraintMock = artifacts.require( - "./test/GlobalConstraintMock.sol" -); -const ActionMock = artifacts.require("./test/ActionMock.sol"); -const ERC20Mock = artifacts.require("./test/ERC20Mock.sol"); -var constants = require("../helpers/constants"); - -var uint32 = require("uint32"); -let reputation, avatar, token, controller; -var amountToMint = 10; - -const setup = async function ( - accounts, - permission = "0", - registerScheme = accounts[0] -) { - var _controller; - token = await DxToken.new("TEST", "TST", 0); - // set up a reputation system - reputation = await DxReputation.new(); - await reputation.initialize("REPUTATION", "REP"); - avatar = await DxAvatar.new("name", token.address, reputation.address); - var sender = accounts[0]; - if (permission !== "0") { - sender = accounts[1]; - _controller = await DxController.new(avatar.address, { - from: sender, - gas: constants.GAS_LIMIT, - }); - await _controller.registerScheme( - registerScheme, - "0x0000000000000000000000000000000000000000", - permission, - avatar.address, - { from: accounts[1] } - ); - await _controller.unregisterSelf(avatar.address, { from: sender }); - await _controller - .getPastEvents("RegisterScheme", { - fromBlock: 0, - toBlock: "latest", - }) - .then(function (events) { - assert.equal(events[0].event, "RegisterScheme"); - assert.equal(events[0].args._scheme, registerScheme); - }); - } else { - _controller = await DxController.new(avatar.address, { - from: sender, - gas: constants.GAS_LIMIT, - }); - await _controller - .getPastEvents("RegisterScheme", { - fromBlock: 0, - toBlock: "latest", - }) - .then(function (events) { - assert.equal(events.length, 0); - }); - } - - controller = _controller; - return _controller; -}; - -const constraint = async function (method, pre = false, post = false) { - var globalConstraints = await GlobalConstraintMock.new(); - let globalConstraintsCountOrig = await controller.globalConstraintsCount( - avatar.address - ); - await globalConstraints.setConstraint( - web3.utils.asciiToHex(method), - pre, - post - ); - await controller.addGlobalConstraint( - globalConstraints.address, - web3.utils.asciiToHex("0"), - avatar.address - ); - let globalConstraintsCount = await controller.globalConstraintsCount( - avatar.address - ); - assert.equal( - globalConstraintsCount[0].toNumber(), - globalConstraintsCountOrig[0].toNumber() + (pre ? 0 : 1) - ); - assert.equal( - globalConstraintsCount[1].toNumber(), - globalConstraintsCountOrig[1].toNumber() + (post ? 0 : 1) - ); - return globalConstraints; -}; - -contract("Controller", accounts => { - it("getGlobalConstraintParameters", async () => { - controller = await setup(accounts); - // separate cases for pre and post - var globalConstraints = await constraint("gcParams1", true); - await controller.addGlobalConstraint( - globalConstraints.address, - "0x1235", - avatar.address - ); - var paramsHash = await controller.getGlobalConstraintParameters( - globalConstraints.address, - avatar.address - ); - - assert.equal( - paramsHash, - "0x1235000000000000000000000000000000000000000000000000000000000000" - ); - globalConstraints = await constraint("gcParams2", false, true); - - await controller.addGlobalConstraint( - globalConstraints.address, - "0x1236", - avatar.address - ); - - paramsHash = await controller.getGlobalConstraintParameters( - globalConstraints.address, - avatar.address - ); - - assert.equal( - paramsHash, - "0x1236000000000000000000000000000000000000000000000000000000000000" - ); - }); - - it("mint reputation via controller", async () => { - controller = await setup(accounts); - await reputation.transferOwnership(controller.address); - let tx = await controller.mintReputation( - amountToMint, - accounts[0], - avatar.address - ); - assert.equal(tx.logs.length, 1); - assert.equal(tx.logs[0].event, "MintReputation"); - assert.equal(tx.logs[0].args._amount, amountToMint); - assert.equal(tx.logs[0].args._to, accounts[0]); - let rep = await reputation.balanceOf(accounts[0]); - assert.equal(rep, amountToMint); - }); - - it("burn reputation via controller", async () => { - controller = await setup(accounts); - await reputation.transferOwnership(controller.address); - await controller.mintReputation(amountToMint, accounts[0], avatar.address); - let tx = await controller.burnReputation( - amountToMint - 1, - accounts[0], - avatar.address - ); - assert.equal(tx.logs.length, 1); - assert.equal(tx.logs[0].event, "BurnReputation"); - assert.equal(tx.logs[0].args._amount, amountToMint - 1); - assert.equal(tx.logs[0].args._from, accounts[0]); - let rep = await reputation.balanceOf(accounts[0]); - assert.equal(rep, 1); - }); - - it("mint tokens via controller", async () => { - controller = await setup(accounts); - await token.transferOwnership(controller.address); - let tx = await controller.mintTokens( - amountToMint, - accounts[0], - avatar.address - ); - assert.equal(tx.logs.length, 1); - assert.equal(tx.logs[0].event, "MintTokens"); - assert.equal(tx.logs[0].args._amount, amountToMint); - let balance = await token.balanceOf(accounts[0]); - assert.equal(balance, amountToMint); - }); - - it("register schemes", async () => { - controller = await setup(accounts); - let tx = await controller.registerScheme( - accounts[1], - web3.utils.asciiToHex("0"), - "0x00000000", - avatar.address - ); - assert.equal(tx.logs.length, 1); - assert.equal(tx.logs[0].event, "RegisterScheme"); - }); - - it("register schemes - check permissions for register new scheme", async () => { - // Check scheme has at least the permissions it is changing, and at least the current permissions. - var i, j; - // controller; - for (j = 0; j <= 15; j++) { - //registered scheme has already permission to register(2) - controller = await setup(accounts, "0x" + uint32.toHex(j | 2)); - var register; - for (i = 0; i <= 15; i++) { - register = true; - try { - await controller.registerScheme( - accounts[1], - 0, - "0x" + uint32.toHex(i), - avatar.address - ); - } catch (ex) { - //registered scheme has already permission to register(2) and is register(1). - assert.notEqual(i & (~(j | 3), 0)); - register = false; - } - if (register) { - await controller.unregisterScheme(accounts[1], avatar.address); - register = false; - } - } - } - }); - - it("register schemes - check permissions for updating existing scheme", async () => { - // Check scheme has at least the permissions it is changing, and at least the current permissions. - controller = await setup(accounts, "0x0000000F"); - // scheme with permission 0x0000000F should be able to register scheme with permission 0x00000001 - let tx = await controller.registerScheme( - accounts[0], - "0x0000000000000000000000000000000000000000", - "0x00000001", - avatar.address - ); - assert.equal(tx.logs.length, 1); - assert.equal(tx.logs[0].event, "RegisterScheme"); - - controller = await setup(accounts, "0x00000001"); - try { - await controller.registerScheme( - accounts[0], - "0x0000000000000000000000000000000000000000", - "0x00000002", - avatar.address - ); - assert( - false, - "scheme with permission 0x00000001 should not be able to register scheme with permission 0x00000002" - ); - } catch (ex) { - helpers.assertVMException(ex); - } - }); - - it("unregister schemes", async () => { - controller = await setup(accounts); - let tx = await controller.unregisterScheme(accounts[0], avatar.address); - assert.equal(tx.logs.length, 1); - assert.equal(tx.logs[0].event, "UnregisterScheme"); - }); - - it("unregister none registered scheme", async () => { - controller = await setup(accounts); - let tx = await controller.unregisterScheme(accounts[1], avatar.address); - assert.equal(tx.logs.length, 0); - }); - - it("unregister schemes - check permissions unregister scheme", async () => { - // Check scheme has at least the permissions it is changing, and at least the current permissions. - //1. setup - controller = await setup(accounts); - //2. account[0] register schemes ,on account[1] with variables permissions which could unregister other schemes. - var i, j; - var tx; - var registeredScheme = accounts[1]; - var unregisteredScheme = accounts[2]; - for (i = 0; i <= 5; i++) { - //registered scheme has already permission to register(2) - tx = await controller.registerScheme( - registeredScheme, - "0x0000000000000000000000000000000000000000", - "0x" + uint32.toHex(i | 3), - avatar.address - ); - assert.equal(tx.logs.length, 1); - assert.equal(tx.logs[0].event, "RegisterScheme"); - for (j = 0; j <= 5; j++) { - tx = await controller.registerScheme( - unregisteredScheme, - "0x0000000000000000000000000000000000000000", - "0x" + uint32.toHex(j), - avatar.address - ); - assert.equal(tx.logs.length, 1); - assert.equal(tx.logs[0].event, "RegisterScheme"); - //try to unregisterScheme - if (j & ~(i | 3)) { - //unregister should fail - try { - await controller.unregisterScheme( - unregisteredScheme, - avatar.address, - { from: registeredScheme } - ); - assert( - false, - "scheme with permission " + - uint32.toHex(i | 3) + - " should not be able to unregister scheme with permission" + - uint32.toHex(j) - ); - } catch (ex) { - helpers.assertVMException(ex); - } - } else { - //unregister should succeed - tx = await controller.unregisterScheme( - unregisteredScheme, - avatar.address, - { from: registeredScheme } - ); - assert.equal(tx.logs.length, 1); - assert.equal(tx.logs[0].event, "UnregisterScheme"); - } - } - } - }); - - it("call with none valid avatar should revert", async () => { - controller = await setup(accounts); - var registeredScheme = accounts[1]; - try { - await controller.registerScheme( - registeredScheme, - "0x0000000000000000000000000000000000000000", - "0x" + uint32.toHex(1 | 3), - "0x0000000000000000000000000000000000000000" - ); - assert(false, "call with none valid avatar should revert"); - } catch (ex) { - helpers.assertVMException(ex); - } - }); - - it("unregister self", async () => { - var tx; - controller = await setup(accounts, "0x00000000"); - tx = await controller.unregisterSelf(avatar.address, { from: accounts[1] }); - assert.equal(tx.logs.length, 0); // scheme was not registered - - tx = await controller.unregisterSelf(avatar.address); - assert.equal(tx.logs.length, 1); - assert.equal(tx.logs[0].event, "UnregisterScheme"); - }); - - it("isSchemeRegistered ", async () => { - var isSchemeRegistered; - controller = await setup(accounts, "0x00000000"); - isSchemeRegistered = await controller.isSchemeRegistered( - accounts[1], - avatar.address - ); - assert.equal(isSchemeRegistered, false); - isSchemeRegistered = await controller.isSchemeRegistered( - accounts[0], - avatar.address - ); - assert.equal(isSchemeRegistered, true); - }); - - it("addGlobalConstraint ", async () => { - controller = await setup(accounts); - var globalConstraints = await constraint(0); - var tx = await controller.addGlobalConstraint( - globalConstraints.address, - "0x0000000000000000000000000000000000000000", - avatar.address - ); - assert.equal( - await controller.isGlobalConstraintRegistered( - globalConstraints.address, - avatar.address - ), - true - ); - assert.equal(tx.logs.length, 1); - assert.equal(tx.logs[0].event, "AddGlobalConstraint"); - var count = await controller.globalConstraintsCount(avatar.address); - assert.equal(count[0], 1); //pre - assert.equal(count[1], 1); //post - }); - - it("removeGlobalConstraint ", async () => { - const zeroBytes32 = "0x0000000000000000000000000000000000000000"; - controller = await setup(accounts); - var globalConstraints = await GlobalConstraintMock.new(); - await globalConstraints.setConstraint(zeroBytes32, false, false); - var globalConstraints1 = await GlobalConstraintMock.new(); - await globalConstraints1.setConstraint( - web3.utils.asciiToHex("method"), - false, - false - ); - var globalConstraints2 = await GlobalConstraintMock.new(); - await globalConstraints2.setConstraint( - web3.utils.asciiToHex("method"), - false, - false - ); - var globalConstraints3 = await GlobalConstraintMock.new(); - await globalConstraints3.setConstraint( - web3.utils.asciiToHex("method"), - false, - false - ); - var globalConstraints4 = await GlobalConstraintMock.new(); - await globalConstraints4.setConstraint( - web3.utils.asciiToHex("method"), - false, - false - ); - - assert.equal( - await controller.isGlobalConstraintRegistered( - globalConstraints.address, - avatar.address - ), - false - ); - await controller.addGlobalConstraint( - globalConstraints.address, - zeroBytes32, - avatar.address - ); - await controller.addGlobalConstraint( - globalConstraints1.address, - zeroBytes32, - avatar.address - ); - await controller.addGlobalConstraint( - globalConstraints2.address, - zeroBytes32, - avatar.address - ); - await controller.addGlobalConstraint( - globalConstraints3.address, - zeroBytes32, - avatar.address - ); - await controller.addGlobalConstraint( - globalConstraints4.address, - zeroBytes32, - avatar.address - ); - var tx = await controller.removeGlobalConstraint( - globalConstraints2.address, - avatar.address - ); - assert.equal(tx.logs.length, 1); - assert.equal(tx.logs[0].event, "RemoveGlobalConstraint"); - assert.equal( - await controller.isGlobalConstraintRegistered( - globalConstraints.address, - avatar.address - ), - true - ); - assert.equal( - await controller.isGlobalConstraintRegistered( - globalConstraints1.address, - avatar.address - ), - true - ); - assert.equal( - await controller.isGlobalConstraintRegistered( - globalConstraints2.address, - avatar.address - ), - false - ); - assert.equal( - await controller.isGlobalConstraintRegistered( - globalConstraints3.address, - avatar.address - ), - true - ); - assert.equal( - await controller.isGlobalConstraintRegistered( - globalConstraints4.address, - avatar.address - ), - true - ); - - let gcCount = await controller.globalConstraintsCount(avatar.address); - - assert.equal(gcCount[0], 4); - assert.equal(gcCount[1], 4); - - await controller.removeGlobalConstraint( - globalConstraints4.address, - avatar.address - ); - assert.equal( - await controller.isGlobalConstraintRegistered( - globalConstraints4.address, - avatar.address - ), - false - ); - gcCount = await controller.globalConstraintsCount(avatar.address); - assert.equal(gcCount[0], 3); - assert.equal(gcCount[1], 3); - }); - - it("upgrade controller ", async () => { - controller = await setup(accounts); - await reputation.transferOwnership(controller.address); - await token.transferOwnership(controller.address); - await avatar.transferOwnership(controller.address); - var tx = await controller.upgradeController(accounts[1], avatar.address); - assert.equal(tx.logs.length, 1); - assert.equal(tx.logs[0].event, "UpgradeController"); - }); - - it("upgrade controller check permission", async () => { - controller = await setup(accounts, "0x00000007"); - await reputation.transferOwnership(controller.address); - await token.transferOwnership(controller.address); - await avatar.transferOwnership(controller.address); - try { - await controller.upgradeController(accounts[1], avatar.address); - assert( - false, - "scheme with permission 0x00000007 is not allowed to upgrade " - ); - } catch (ex) { - helpers.assertVMException(ex); - } - }); - - it("generic call log", async () => { - controller = await setup(accounts, "0x00000010"); - await avatar.transferOwnership(controller.address); - let actionMock = await ActionMock.new(); - const encodeABI = helpers.testCallFrom(avatar.address); - var tx = await controller.genericCall( - actionMock.address, - encodeABI, - avatar.address, - 0 - ); - await avatar - .getPastEvents("GenericCall", { - fromBlock: tx.blockNumber, - toBlock: "latest", - }) - .then(function (events) { - assert.equal(events[0].event, "GenericCall"); - assert.equal(events[0].args._contract, actionMock.address); - }); - }); - - it("generic call", async () => { - controller = await setup(accounts, "0x00000010"); - await avatar.transferOwnership(controller.address); - let actionMock = await ActionMock.new(); - const encodeABI = helpers.testCallFrom(avatar.address); - var result = await controller.genericCall.call( - actionMock.address, - encodeABI, - avatar.address, - 0 - ); - assert.equal( - result[1], - "0x0000000000000000000000000000000000000000000000000000000000000001" - ); - }); - - it("generic call withoutReturnValue", async () => { - controller = await setup(accounts, "0x00000010"); - await avatar.transferOwnership(controller.address); - let actionMock = await ActionMock.new(); - - const encodeABI = helpers.testCallWithoutReturnValueFrom(avatar.address); - var tx = await controller.genericCall( - actionMock.address, - encodeABI, - avatar.address, - 0 - ); - assert.equal( - helpers.logDecoder.decodeLogs(tx.receipt.rawLogs)[0].args._success, - true - ); - }); - - it("sendEther", async () => { - controller = await setup(accounts); - let otherAvatar = await DxAvatar.new( - "otheravatar", - constants.NULL_ADDRESS, - avatar.address - ); - await avatar.transferOwnership(controller.address); - //send some ether to the avatar - await web3.eth.sendTransaction({ - from: accounts[0], - to: avatar.address, - value: web3.utils.toWei("1", "ether"), - }); - //send some ether from an organization's avatar to the otherAvatar - var tx = await controller.sendEther( - web3.utils.toWei("1", "ether"), - otherAvatar.address, - avatar.address - ); - await avatar - .getPastEvents("SendEther", { - filter: { _addr: avatar.address }, // Using an array means OR: e.g. 20 or 23 - fromBlock: tx.blockNumber, - toBlock: "latest", - }) - .then(function (events) { - assert.equal(events[0].event, "SendEther"); - }); - var avatarBalance = - (await web3.eth.getBalance(avatar.address)) / - web3.utils.toWei("1", "ether"); - assert.equal(avatarBalance, 0); - var otherAvatarBalance = - (await web3.eth.getBalance(otherAvatar.address)) / - web3.utils.toWei("1", "ether"); - assert.equal(otherAvatarBalance, 1); - }); - - it("externalTokenTransfer", async () => { - //External transfer token from avatar contract to other address - controller = await setup(accounts); - var standardToken = await ERC20Mock.new(avatar.address, 100, "", "", "18"); - let balanceAvatar = await standardToken.balanceOf(avatar.address); - assert.equal(balanceAvatar, 100); - await avatar.transferOwnership(controller.address); - var tx = await controller.externalTokenTransfer( - standardToken.address, - accounts[1], - 50, - avatar.address - ); - await avatar - .getPastEvents("ExternalTokenTransfer", { - filter: { _addr: avatar.address }, // Using an array means OR: e.g. 20 or 23 - fromBlock: tx.blockNumber, - toBlock: "latest", - }) - .then(function (events) { - assert.equal(events[0].event, "ExternalTokenTransfer"); - }); - balanceAvatar = await standardToken.balanceOf(avatar.address); - assert.equal(balanceAvatar, 50); - let balance1 = await standardToken.balanceOf(accounts[1]); - assert.equal(balance1, 50); - }); - - it("externalTokenTransferFrom & ExternalTokenApproval", async () => { - var tx; - var to = accounts[1]; - controller = await setup(accounts); - var standardToken = await ERC20Mock.new(avatar.address, 100, "", "", "18"); - await avatar.transferOwnership(controller.address); - tx = await controller.externalTokenApproval( - standardToken.address, - avatar.address, - 50, - avatar.address - ); - await avatar - .getPastEvents("ExternalTokenApproval", { - filter: { _addr: avatar.address }, // Using an array means OR: e.g. 20 or 23 - fromBlock: tx.blockNumber, - toBlock: "latest", - }) - .then(function (events) { - assert.equal(events[0].event, "ExternalTokenApproval"); - }); - tx = await controller.externalTokenTransferFrom( - standardToken.address, - avatar.address, - to, - 50, - avatar.address - ); - await avatar - .getPastEvents("ExternalTokenTransferFrom", { - filter: { _addr: avatar.address }, // Using an array means OR: e.g. 20 or 23 - fromBlock: tx.blockNumber, - toBlock: "latest", - }) - .then(function (events) { - assert.equal(events[0].event, "ExternalTokenTransferFrom"); - }); - let balanceAvatar = await standardToken.balanceOf(avatar.address); - assert.equal(balanceAvatar, 50); - let balanceTo = await standardToken.balanceOf(to); - assert.equal(balanceTo, 50); - }); - - it("globalConstraints mintReputation add & remove", async () => { - await setup(accounts); - var globalConstraints = await constraint("mintReputation"); - await reputation.transferOwnership(controller.address); - try { - await controller.mintReputation( - amountToMint, - accounts[0], - avatar.address - ); - assert( - false, - "mint reputation should fail due to the global constraint " - ); - } catch (ex) { - helpers.assertVMException(ex); - } - await controller.removeGlobalConstraint( - globalConstraints.address, - avatar.address - ); - var globalConstraintsCount = await controller.globalConstraintsCount( - avatar.address - ); - assert.equal(globalConstraintsCount[0], 0); - assert.equal(globalConstraintsCount[1], 0); - let tx = await controller.mintReputation( - amountToMint, - accounts[0], - avatar.address - ); - assert.equal(tx.logs.length, 1); - assert.equal(tx.logs[0].event, "MintReputation"); - assert.equal(tx.logs[0].args._amount, amountToMint); - assert.equal(tx.logs[0].args._to, accounts[0]); - let rep = await reputation.balanceOf(accounts[0]); - assert.equal(rep, amountToMint); - }); - - it("globalConstraints register schemes add & remove", async () => { - controller = await setup(accounts); - var globalConstraints = await constraint("registerScheme"); - try { - await controller.registerScheme( - accounts[1], - constants.NULL_HASH, - "0x00000000", - avatar.address - ); - assert(false, "registerScheme should fail due to the global constraint "); - } catch (ex) { - helpers.assertVMException(ex); - } - await controller.removeGlobalConstraint( - globalConstraints.address, - avatar.address - ); - var globalConstraintsCount = await controller.globalConstraintsCount( - avatar.address - ); - assert.equal(globalConstraintsCount[0], 0); - assert.equal(globalConstraintsCount[1], 0); - let tx = await controller.registerScheme( - accounts[1], - constants.NULL_HASH, - "0x00000000", - avatar.address - ); - assert.equal(tx.logs.length, 1); - assert.equal(tx.logs[0].event, "RegisterScheme"); - }); - - it("globalConstraints unregister schemes add & remove", async () => { - controller = await setup(accounts); - var globalConstraints = await constraint("registerScheme"); - try { - await controller.unregisterScheme(accounts[0], avatar.address); - assert( - false, - "unregisterScheme should fail due to the global constraint " - ); - } catch (ex) { - helpers.assertVMException(ex); - } - await controller.removeGlobalConstraint( - globalConstraints.address, - avatar.address - ); - var globalConstraintsCount = await controller.globalConstraintsCount( - avatar.address - ); - assert.equal(globalConstraintsCount[0], 0); - assert.equal(globalConstraintsCount[1], 0); - let tx = await controller.unregisterScheme(accounts[0], avatar.address); - assert.equal(tx.logs.length, 1); - assert.equal(tx.logs[0].event, "UnregisterScheme"); - }); - - it("globalConstraints generic call add & remove", async () => { - controller = await setup(accounts, "0x00000014"); - var globalConstraints = await constraint("genericCall"); - await avatar.transferOwnership(controller.address); - let actionMock = await ActionMock.new(); - - const encodeABI = helpers.testCallFrom(avatar.address); - try { - await controller.genericCall.call( - actionMock.address, - encodeABI, - avatar.address, - 0 - ); - assert(false, "genericCall should fail due to the global constraint "); - } catch (ex) { - helpers.assertVMException(ex); - } - await controller.removeGlobalConstraint( - globalConstraints.address, - avatar.address - ); - var globalConstraintsCount = await controller.globalConstraintsCount( - avatar.address - ); - assert.equal(globalConstraintsCount[0], 0); - assert.equal(globalConstraintsCount[1], 0); - var tx = await controller.genericCall( - actionMock.address, - encodeABI, - avatar.address, - 0 - ); - await avatar - .getPastEvents("GenericCall", { - filter: { _addr: avatar.address }, // Using an array means OR: e.g. 20 or 23 - fromBlock: tx.blockNumber, - toBlock: "latest", - }) - .then(function (events) { - assert.equal(events[0].event, "GenericCall"); - }); - }); - - it("globalConstraints sendEther add & remove", async () => { - controller = await setup(accounts); - var globalConstraints = await constraint("sendEther"); - let otherAvatar = await DxAvatar.new( - "otheravatar", - constants.NULL_ADDRESS, - avatar.address - ); - await avatar.transferOwnership(controller.address); - web3.eth.sendTransaction({ - from: accounts[0], - to: avatar.address, - value: web3.utils.toWei("1", "ether"), - }); - - try { - await controller.sendEther( - web3.utils.toWei("1", "ether"), - otherAvatar.address, - avatar.address - ); - assert(false, "sendEther should fail due to the global constraint "); - } catch (ex) { - helpers.assertVMException(ex); - } - await controller.removeGlobalConstraint( - globalConstraints.address, - avatar.address - ); - var globalConstraintsCount = await controller.globalConstraintsCount( - avatar.address - ); - assert.equal(globalConstraintsCount[0], 0); - var tx = await controller.sendEther( - web3.utils.toWei("1", "ether"), - otherAvatar.address, - avatar.address - ); - await avatar - .getPastEvents("SendEther", { - filter: { _addr: avatar.address }, // Using an array means OR: e.g. 20 or 23 - fromBlock: tx.blockNumber, - toBlock: "latest", - }) - .then(function (events) { - assert.equal(events[0].event, "SendEther"); - }); - var avatarBalance = - (await web3.eth.getBalance(avatar.address)) / - web3.utils.toWei("1", "ether"); - assert.equal(avatarBalance, 0); - var otherAvatarBalance = - (await web3.eth.getBalance(otherAvatar.address)) / - web3.utils.toWei("1", "ether"); - assert.equal(otherAvatarBalance, 1); - }); - - it("globalConstraints externalTokenTransfer add & remove", async () => { - controller = await setup(accounts); - var globalConstraints = await constraint("externalTokenTransfer"); - var standardToken = await ERC20Mock.new(avatar.address, 100, "", "", "18"); - let balanceAvatar = await standardToken.balanceOf(avatar.address); - assert.equal(balanceAvatar, 100); - await avatar.transferOwnership(controller.address); - - try { - await controller.externalTokenTransfer( - standardToken.address, - accounts[1], - 50, - avatar.address - ); - assert( - false, - "externalTokenTransfer should fail due to the global constraint " - ); - } catch (ex) { - helpers.assertVMException(ex); - } - await controller.removeGlobalConstraint( - globalConstraints.address, - avatar.address - ); - var globalConstraintsCount = await controller.globalConstraintsCount( - avatar.address - ); - assert.equal(globalConstraintsCount[0], 0); - var tx = await controller.externalTokenTransfer( - standardToken.address, - accounts[1], - 50, - avatar.address - ); - await avatar - .getPastEvents("ExternalTokenTransfer", { - filter: { _addr: avatar.address }, // Using an array means OR: e.g. 20 or 23 - fromBlock: tx.blockNumber, - toBlock: "latest", - }) - .then(function (events) { - assert.equal(events[0].event, "ExternalTokenTransfer"); - }); - balanceAvatar = await standardToken.balanceOf(avatar.address); - assert.equal(balanceAvatar, 50); - let balance1 = await standardToken.balanceOf(accounts[1]); - assert.equal(balance1, 50); - }); - - it("getNativeReputation", async () => { - controller = await setup(accounts); - var nativeReputation = await controller.getNativeReputation(avatar.address); - assert.equal(nativeReputation, reputation.address); - }); - - it("globalConstraints externalTokenTransferFrom , externalTokenApproval", async () => { - var tx; - var to = accounts[1]; - controller = await setup(accounts); - var globalConstraints = await constraint("externalTokenApproval"); - var standardToken = await ERC20Mock.new(avatar.address, 100, "", "", "18"); - await avatar.transferOwnership(controller.address); - - try { - await controller.externalTokenApproval( - standardToken.address, - avatar.address, - 50, - avatar.address - ); - assert( - false, - "externalTokenApproval should fail due to the global constraint " - ); - } catch (ex) { - helpers.assertVMException(ex); - } - await controller.removeGlobalConstraint( - globalConstraints.address, - avatar.address - ); - var globalConstraintsCount = await controller.globalConstraintsCount( - avatar.address - ); - assert.equal(globalConstraintsCount[0], 0); - - tx = await controller.externalTokenApproval( - standardToken.address, - avatar.address, - 50, - avatar.address - ); - await avatar - .getPastEvents("ExternalTokenApproval", { - filter: { _addr: avatar.address }, // Using an array means OR: e.g. 20 or 23 - fromBlock: tx.blockNumber, - toBlock: "latest", - }) - .then(function (events) { - assert.equal(events[0].event, "ExternalTokenApproval"); - }); - globalConstraints = await constraint("externalTokenTransferFrom"); - try { - await controller.externalTokenTransferFrom( - standardToken.address, - avatar.address, - to, - 50, - avatar.address - ); - assert( - false, - "externalTokenTransferFrom should fail due to the global constraint " - ); - } catch (ex) { - helpers.assertVMException(ex); - } - await controller.removeGlobalConstraint( - globalConstraints.address, - avatar.address - ); - globalConstraintsCount = await controller.globalConstraintsCount( - avatar.address - ); - assert.equal(globalConstraintsCount[0], 0); - }); -}); diff --git a/test/daostack/Schemeregistrar.js b/test/daostack/Schemeregistrar.js deleted file mode 100644 index 81b77bca..00000000 --- a/test/daostack/Schemeregistrar.js +++ /dev/null @@ -1,472 +0,0 @@ -// -// Copied from https://github.com/daostack/arc/blob/master/test/schemeregistrar.js -// - -import * as helpers from "../helpers"; -const constants = require("../helpers/constants"); -const SchemeRegistrar = artifacts.require("./SchemeRegistrar.sol"); -const ERC20Mock = artifacts.require("./test/ERC20Mock.sol"); -const Controller = artifacts.require("./DxController.sol"); - -const setupSchemeRegistrarParams = async function (schemeRegistrar) { - const votingMachine = await helpers.setupAbsoluteVote( - constants.NULL_ADDRESS, - 50, - schemeRegistrar.address - ); - await schemeRegistrar.setParameters( - votingMachine.params, - votingMachine.params, - votingMachine.address - ); - const paramsHash = await schemeRegistrar.getParametersHash( - votingMachine.params, - votingMachine.params, - votingMachine.address - ); - return { votingMachine, paramsHash }; -}; - -const setup = async function (accounts) { - const fee = 10; - const standardTokenMock = await ERC20Mock.new(accounts[1], 100, "", "", "18"); - const schemeRegistrar = await SchemeRegistrar.new(); - const reputationArray = [20, 40, 70]; - const org = await helpers.setupOrganization( - [accounts[0], accounts[1], accounts[2]], - [1000, 0, 0], - reputationArray - ); - const schemeRegistrarParams = await setupSchemeRegistrarParams( - schemeRegistrar - ); - const permissions = "0x0000001F"; - await org.daoCreator.setSchemes( - org.avatar.address, - [schemeRegistrar.address], - [schemeRegistrarParams.paramsHash], - [permissions], - "metaData" - ); - - return { - fee, - standardTokenMock, - schemeRegistrar, - reputationArray, - org, - schemeRegistrarParams, - permissions, - }; -}; -contract("SchemeRegistrar", accounts => { - it("setParameters", async () => { - var schemeRegistrar = await SchemeRegistrar.new(); - var params = await setupSchemeRegistrarParams(schemeRegistrar); - var parameters = await schemeRegistrar.parameters(params.paramsHash); - assert.equal(parameters[2], params.votingMachine.address); - }); - - it("proposeScheme log", async function () { - var testSetup = await setup(accounts); - - var tx = await testSetup.schemeRegistrar.proposeScheme( - testSetup.org.avatar.address, - testSetup.schemeRegistrar.address, - constants.NULL_HASH, - "0x00000000", - constants.NULL_HASH - ); - assert.equal(tx.logs.length, 1); - assert.equal(tx.logs[0].event, "NewSchemeProposal"); - }); - - it("proposeToRemoveScheme log", async function () { - var testSetup = await setup(accounts); - - var tx = await testSetup.schemeRegistrar.proposeToRemoveScheme( - testSetup.org.avatar.address, - testSetup.schemeRegistrar.address, - constants.NULL_HASH - ); - assert.equal(tx.logs.length, 1); - assert.equal(tx.logs[0].event, "RemoveSchemeProposal"); - }); - - it("execute proposeScheme and execute -yes - fee > 0 ", async function () { - var testSetup = await setup(accounts); - var tx = await testSetup.schemeRegistrar.proposeScheme( - testSetup.org.avatar.address, - constants.SOME_ADDRESS, - constants.NULL_HASH, - "0x00000000", - constants.NULL_HASH - ); - //Vote with reputation to trigger execution - var proposalId = await helpers.getValueFromLogs(tx, "_proposalId", 1); - await testSetup.schemeRegistrarParams.votingMachine.contract.vote( - proposalId, - 1, - 0, - constants.NULL_ADDRESS, - { from: accounts[2] } - ); - var controller = await Controller.at(await testSetup.org.avatar.owner()); - assert.equal( - await controller.isSchemeRegistered( - constants.SOME_ADDRESS, - testSetup.org.avatar.address - ), - true - ); - }); - - it("execute proposeScheme and execute -yes - permissions== 0x00000001", async function () { - var testSetup = await setup(accounts); - var permissions = "0x00000001"; - - var tx = await testSetup.schemeRegistrar.proposeScheme( - testSetup.org.avatar.address, - accounts[0], - constants.NULL_HASH, - permissions, - constants.NULL_HASH - ); - //Vote with reputation to trigger execution - var proposalId = await helpers.getValueFromLogs(tx, "_proposalId", 1); - await testSetup.schemeRegistrarParams.votingMachine.contract.vote( - proposalId, - 1, - 0, - constants.NULL_ADDRESS, - { from: accounts[2] } - ); - var controller = await Controller.at(await testSetup.org.avatar.owner()); - assert.equal( - await controller.isSchemeRegistered( - accounts[0], - testSetup.org.avatar.address - ), - true - ); - assert.equal( - await controller.getSchemePermissions( - accounts[0], - testSetup.org.avatar.address - ), - "0x00000001" - ); - }); - - it("execute proposeScheme and execute -yes - permissions== 0x00000002", async function () { - var testSetup = await setup(accounts); - var permissions = "0x00000002"; - - var tx = await testSetup.schemeRegistrar.proposeScheme( - testSetup.org.avatar.address, - accounts[0], - constants.NULL_HASH, - permissions, - constants.NULL_HASH - ); - //Vote with reputation to trigger execution - var proposalId = await helpers.getValueFromLogs(tx, "_proposalId", 1); - await testSetup.schemeRegistrarParams.votingMachine.contract.vote( - proposalId, - 1, - 0, - constants.NULL_ADDRESS, - { from: accounts[2] } - ); - var controller = await Controller.at(await testSetup.org.avatar.owner()); - assert.equal( - await controller.isSchemeRegistered( - accounts[0], - testSetup.org.avatar.address - ), - true - ); - assert.equal( - await controller.getSchemePermissions( - accounts[0], - testSetup.org.avatar.address - ), - "0x00000003" - ); - }); - - it("execute proposeScheme and execute -yes - permissions== 0x00000003", async function () { - var testSetup = await setup(accounts); - var permissions = "0x00000003"; - - var tx = await testSetup.schemeRegistrar.proposeScheme( - testSetup.org.avatar.address, - accounts[0], - constants.NULL_HASH, - permissions, - constants.NULL_HASH - ); - //Vote with reputation to trigger execution - var proposalId = await helpers.getValueFromLogs(tx, "_proposalId", 1); - await testSetup.schemeRegistrarParams.votingMachine.contract.vote( - proposalId, - 1, - 0, - constants.NULL_ADDRESS, - { from: accounts[2] } - ); - var controller = await Controller.at(await testSetup.org.avatar.owner()); - assert.equal( - await controller.isSchemeRegistered( - accounts[0], - testSetup.org.avatar.address - ), - true - ); - assert.equal( - await controller.getSchemePermissions( - accounts[0], - testSetup.org.avatar.address - ), - "0x00000003" - ); - }); - - it("execute proposeScheme and execute -yes - permissions== 0x00000008", async function () { - var testSetup = await setup(accounts); - var permissions = "0x00000008"; - - var tx = await testSetup.schemeRegistrar.proposeScheme( - testSetup.org.avatar.address, - accounts[0], - constants.NULL_HASH, - permissions, - constants.NULL_HASH - ); - //Vote with reputation to trigger execution - var proposalId = await helpers.getValueFromLogs(tx, "_proposalId", 1); - await testSetup.schemeRegistrarParams.votingMachine.contract.vote( - proposalId, - 1, - 0, - constants.NULL_ADDRESS, - { from: accounts[2] } - ); - var controller = await Controller.at(await testSetup.org.avatar.owner()); - assert.equal( - await controller.isSchemeRegistered( - accounts[0], - testSetup.org.avatar.address - ), - true - ); - assert.equal( - await controller.getSchemePermissions( - accounts[0], - testSetup.org.avatar.address - ), - "0x00000009" - ); - }); - - it("execute proposeScheme and execute -yes - permissions== 0x00000010", async function () { - var testSetup = await setup(accounts); - var permissions = "0x00000010"; - - var tx = await testSetup.schemeRegistrar.proposeScheme( - testSetup.org.avatar.address, - accounts[0], - constants.NULL_HASH, - permissions, - constants.NULL_HASH - ); - //Vote with reputation to trigger execution - var proposalId = await helpers.getValueFromLogs(tx, "_proposalId", 1); - await testSetup.schemeRegistrarParams.votingMachine.contract.vote( - proposalId, - 1, - 0, - constants.NULL_ADDRESS, - { from: accounts[2] } - ); - var controller = await Controller.at(await testSetup.org.avatar.owner()); - assert.equal( - await controller.isSchemeRegistered( - accounts[0], - testSetup.org.avatar.address - ), - true - ); - assert.equal( - await controller.getSchemePermissions( - accounts[0], - testSetup.org.avatar.address - ), - "0x00000011" - ); - }); - - it("execute proposeScheme and execute -yes - isRegistering==FALSE ", async function () { - var testSetup = await setup(accounts); - - var tx = await testSetup.schemeRegistrar.proposeScheme( - testSetup.org.avatar.address, - accounts[0], - constants.NULL_HASH, - "0x00000000", - constants.NULL_HASH - ); - //Vote with reputation to trigger execution - var proposalId = await helpers.getValueFromLogs(tx, "_proposalId", 1); - await testSetup.schemeRegistrarParams.votingMachine.contract.vote( - proposalId, - 1, - 0, - constants.NULL_ADDRESS, - { from: accounts[2] } - ); - var controller = await Controller.at(await testSetup.org.avatar.owner()); - assert.equal( - await controller.isSchemeRegistered( - accounts[0], - testSetup.org.avatar.address - ), - true - ); - assert.equal( - await controller.getSchemePermissions( - accounts[0], - testSetup.org.avatar.address - ), - "0x00000001" - ); - }); - - it("execute proposeScheme - no decision (same for remove scheme) - proposal data delete", async function () { - var testSetup = await setup(accounts); - - var tx = await testSetup.schemeRegistrar.proposeScheme( - testSetup.org.avatar.address, - accounts[0], - constants.NULL_HASH, - "0x00000000", - constants.NULL_HASH - ); - var proposalId = await helpers.getValueFromLogs(tx, "_proposalId", 1); - //check organizationsProposals before execution - var organizationProposal = - await testSetup.schemeRegistrar.organizationsProposals( - testSetup.org.avatar.address, - proposalId - ); - assert.equal(organizationProposal[1], true); //proposalType - - //Vote with reputation to trigger execution - await testSetup.schemeRegistrarParams.votingMachine.contract.vote( - proposalId, - 2, - 0, - constants.NULL_ADDRESS, - { from: accounts[2] } - ); - var controller = await Controller.at(await testSetup.org.avatar.owner()); - //should not register because the decision is "no" - assert.equal( - await controller.isSchemeRegistered( - accounts[0], - testSetup.org.avatar.address - ), - false - ); - //check organizationsProposals after execution - organizationProposal = - await testSetup.schemeRegistrar.organizationsProposals( - testSetup.org.avatar.address, - proposalId - ); - assert.equal(organizationProposal[2], 0); //proposalType - }); - - it("execute proposeToRemoveScheme ", async function () { - var testSetup = await setup(accounts); - - var tx = await testSetup.schemeRegistrar.proposeToRemoveScheme( - testSetup.org.avatar.address, - testSetup.schemeRegistrar.address, - constants.NULL_HASH - ); - var proposalId = await helpers.getValueFromLogs(tx, "_proposalId", 1); - var controller = await Controller.at(await testSetup.org.avatar.owner()); - assert.equal( - await controller.isSchemeRegistered( - testSetup.schemeRegistrar.address, - testSetup.org.avatar.address - ), - true - ); - //Vote with reputation to trigger execution - await testSetup.schemeRegistrarParams.votingMachine.contract.vote( - proposalId, - 1, - 0, - constants.NULL_ADDRESS, - { from: accounts[2] } - ); - assert.equal( - await controller.isSchemeRegistered( - testSetup.schemeRegistrar.address, - testSetup.org.avatar.address - ), - false - ); - //check organizationsProposals after execution - var organizationProposal = - await testSetup.schemeRegistrar.organizationsProposals( - testSetup.org.avatar.address, - proposalId - ); - assert.equal(organizationProposal[2], 0); //proposalType - }); - - it("execute proposeScheme and execute -yes - autoRegisterOrganization==TRUE arc scheme", async function () { - var testSetup = await setup(accounts); - - var tx = await testSetup.schemeRegistrar.proposeScheme( - testSetup.org.avatar.address, - constants.SOME_ADDRESS, - constants.NULL_HASH, - "0x00000000", - constants.NULL_HASH - ); - //Vote with reputation to trigger execution - var proposalId = await helpers.getValueFromLogs(tx, "_proposalId", 1); - await testSetup.schemeRegistrarParams.votingMachine.contract.vote( - proposalId, - 1, - 0, - constants.NULL_ADDRESS, - { from: accounts[2] } - ); - }); - - it("execute proposeScheme and execute -yes - autoRegisterOrganization==FALSE arc scheme", async function () { - var testSetup = await setup(accounts); - - var tx = await testSetup.schemeRegistrar.proposeScheme( - testSetup.org.avatar.address, - constants.SOME_ADDRESS, - constants.NULL_HASH, - "0x00000000", - constants.NULL_HASH - ); - //Vote with reputation to trigger execution - var proposalId = await helpers.getValueFromLogs(tx, "_proposalId", 1); - await testSetup.schemeRegistrarParams.votingMachine.contract.vote( - proposalId, - 1, - 0, - constants.NULL_ADDRESS, - { from: accounts[2] } - ); - }); -}); diff --git a/test/dxdao/DxAvatar.js b/test/dxdao/DxAvatar.js index bce39550..e8a6a885 100644 --- a/test/dxdao/DxAvatar.js +++ b/test/dxdao/DxAvatar.js @@ -1,9 +1,9 @@ import * as helpers from "../helpers"; const { expectRevert, expectEvent } = require("@openzeppelin/test-helpers"); -const DxAvatar = artifacts.require("./DXAvatar.sol"); +const DxAvatar = artifacts.require("./DxAvatar.sol"); const BigNumber = require("bignumber.js"); -contract("DXAvatar", function (accounts) { +contract("DxAvatar", function (accounts) { it("Should revert call", async function () { const owner = accounts[0]; const avatar = await DxAvatar.new(); diff --git a/test/dxdao/dxdao.js b/test/dxdao/dxdao.js index e82eb637..27dece7e 100644 --- a/test/dxdao/dxdao.js +++ b/test/dxdao/dxdao.js @@ -1,61 +1,39 @@ +import { expectRevert } from "@openzeppelin/test-helpers"; +import { assert } from "chai"; import * as helpers from "../helpers"; const PermissionRegistry = artifacts.require("./PermissionRegistry.sol"); const WalletScheme = artifacts.require("./WalletScheme.sol"); -const DxController = artifacts.require("./DxController.sol"); -const DxAvatar = artifacts.require("./DXAvatar.sol"); -const DxToken = artifacts.require("./DxToken.sol"); -const DaoCreator = artifacts.require("./DaoCreator.sol"); -const DxControllerCreator = artifacts.require("./DxControllerCreator.sol"); -const DXDVotingMachine = artifacts.require("./DXDVotingMachine.sol"); const ERC20Mock = artifacts.require("./ERC20Mock.sol"); contract("DXdao", function (accounts) { const constants = helpers.constants; + let dxDao; + let proposalId; - it("Wallet - execute proposeVote -positive decision - check action - with DXDVotingMachine", async function () { + beforeEach(async function () { const votingMachineToken = await ERC20Mock.new( accounts[0], 1000, - "", - "", + "DXDao", + "DXD", "18" ); - const masterWalletScheme = await WalletScheme.new(); - const controllerCreator = await DxControllerCreator.new({ - gas: constants.GAS_LIMIT, - }); - const daoCreator = await DaoCreator.new(controllerCreator.address, { - gas: constants.GAS_LIMIT, + + dxDao = await helpers.deployDao({ + owner: accounts[0], + votingMachineToken: votingMachineToken.address, + repHolders: [ + { address: accounts[0], amount: 20 }, + { address: accounts[1], amount: 10 }, + { address: accounts[2], amount: 70 }, + ], }); - const users = [accounts[0], accounts[1], accounts[2]]; - const usersTokens = [1000, 1000, 1000]; - const usersRep = [20, 10, 70]; - - var tx = await daoCreator.forgeOrg( - "testOrg", - "TEST", - "TST", - users, - usersTokens, - usersRep, - 0, - { gas: constants.GAS_LIMIT } - ); - assert.equal(tx.logs.length, 1); - assert.equal(tx.logs[0].event, "NewOrg"); - const avatar = await DxAvatar.at(tx.logs[0].args._avatar); - const token = await DxToken.at(await avatar.nativeToken()); - const controller = await DxController.at(await avatar.owner()); - - const votingMachine = await helpers.setUpVotingMachine( - votingMachineToken.address, - "dxd", - constants.NULL_ADDRESS - ); - const genesisProtocol = await DXDVotingMachine.new(token.address, { - gas: constants.GAS_LIMIT, + await web3.eth.sendTransaction({ + to: dxDao.dxAvatar.address, + from: accounts[0], + value: 100, }); // Parameters @@ -66,13 +44,13 @@ contract("DXdao", function (accounts) { const _preBoostedVotePeriodLimit = 0; const _thresholdConst = 2000; const _quietEndingPeriod = 0; - const _proposingRepReward = 60; + const _proposingRepReward = 0; const _votersReputationLossRatio = 10; const _minimumDaoBounty = 15; const _daoBountyConst = 10; const _activationTime = 0; - genesisProtocol.setParameters( + await dxDao.votingMachine.setParameters( [ _queuedVoteRequiredPercentage, _queuedVotePeriodLimit, @@ -89,33 +67,96 @@ contract("DXdao", function (accounts) { voteOnBehalf ); - const permissionRegistry = await PermissionRegistry.new(accounts[0], 10); + const paramsHash = await dxDao.votingMachine.getParametersHash( + [ + _queuedVoteRequiredPercentage, + _queuedVotePeriodLimit, + _boostedVotePeriodLimit, + _preBoostedVotePeriodLimit, + _thresholdConst, + _quietEndingPeriod, + _proposingRepReward, + _votersReputationLossRatio, + _minimumDaoBounty, + _daoBountyConst, + _activationTime, + ], + voteOnBehalf + ); + + const permissionRegistry = await PermissionRegistry.new( + dxDao.dxAvatar.address, + 10 + ); await permissionRegistry.initialize(); + await permissionRegistry.setETHPermission( + dxDao.dxAvatar.address, + constants.NULL_ADDRESS, + constants.NULL_SIGNATURE, + 10, + true + ); + + const masterWalletScheme = await WalletScheme.new(); + await masterWalletScheme.initialize( - avatar.address, - votingMachine.address, + dxDao.dxAvatar.address, + dxDao.votingMachine.address, true, - controller.address, + dxDao.dxController.address, permissionRegistry.address, "Master Scheme", 86400, 5 ); - await daoCreator.setSchemes( - avatar.address, - [masterWalletScheme.address], - [constants.NULL_HASH], - [ - helpers.encodePermission({ - canGenericCall: true, - canUpgrade: true, - canChangeConstraints: true, - canRegisterSchemes: true, - }), - ], - "metaData" + await dxDao.dxController.registerScheme( + masterWalletScheme.address, + paramsHash, + true, + true + ); + + const createProposalTx = await masterWalletScheme.proposeCalls( + [accounts[1], accounts[1]], + ["0x0", "0x0"], + [10, 5], + 2, + "Test Proposal", + constants.NULL_HASH + ); + + proposalId = createProposalTx.logs[0].args._proposalId; + }); + + it("Wallet - execute proposeVote -option 0 - check action - with DXDVotingMachine", async function () { + assert.equal(await web3.eth.getBalance(dxDao.dxAvatar.address), "100"); + + await expectRevert( + dxDao.votingMachine.vote(proposalId, 0, 0, constants.NULL_ADDRESS, { + from: accounts[2], + }), + "wrong decision value" ); + assert.equal(await web3.eth.getBalance(dxDao.dxAvatar.address), "100"); + }); + + it("Wallet - execute proposeVote -option 1 - check action - with DXDVotingMachine", async function () { + assert.equal(await web3.eth.getBalance(dxDao.dxAvatar.address), "100"); + + await dxDao.votingMachine.vote(proposalId, 1, 0, constants.NULL_ADDRESS, { + from: accounts[2], + }); + assert.equal(await web3.eth.getBalance(dxDao.dxAvatar.address), "90"); + }); + + it("Wallet - execute proposeVote -option 2 - check action - with DXDVotingMachine", async function () { + assert.equal(await web3.eth.getBalance(dxDao.dxAvatar.address), "100"); + + await dxDao.votingMachine.vote(proposalId, 2, 0, constants.NULL_ADDRESS, { + from: accounts[2], + }); + assert.equal(await web3.eth.getBalance(dxDao.dxAvatar.address), "95"); }); }); diff --git a/test/helpers/index.js b/test/helpers/index.js index bd308d2b..981f0038 100644 --- a/test/helpers/index.js +++ b/test/helpers/index.js @@ -1,16 +1,10 @@ const constants = require("./constants"); -const { encodePermission, decodePermission } = require("./permissions"); const { LogDecoder } = require("@maticnetwork/eth-decoder"); -const DxControllerCreator = artifacts.require("./DxControllerCreator.sol"); -const DaoCreator = artifacts.require("./DaoCreator.sol"); -const Avatar = artifacts.require("./Avatar.sol"); -const Controller = artifacts.require("./Controller.sol"); -const DAOToken = artifacts.require("./DAOToken.sol"); -const Reputation = artifacts.require("./Reputation.sol"); -const AbsoluteVote = artifacts.require("./AbsoluteVote.sol"); -const GenesisProtocol = artifacts.require("./GenesisProtocol.sol"); +const DxAvatar = artifacts.require("./DxAvatar.sol"); +const DxController = artifacts.require("./DxController.sol"); +const DxReputation = artifacts.require("./DxReputation.sol"); const DXDVotingMachine = artifacts.require("./DXDVotingMachine.sol"); const WalletScheme = artifacts.require("./WalletScheme.sol"); const ActionMock = artifacts.require("./ActionMock.sol"); @@ -20,12 +14,9 @@ const ERC721Factory = artifacts.require("./ERC721Factory.sol"); const ERC20Guild = artifacts.require("./ERC20Guild.sol"); export const logDecoder = new LogDecoder([ - Avatar.abi, - Controller.abi, - DAOToken.abi, - Reputation.abi, - AbsoluteVote.abi, - GenesisProtocol.abi, + DxAvatar.abi, + DxController.abi, + DxReputation.abi, DXDVotingMachine.abi, WalletScheme.abi, PermissionRegistry.abi, @@ -34,29 +25,7 @@ export const logDecoder = new LogDecoder([ ERC20Guild.abi, ]); -export function getProposalAddress(tx) { - // helper function that returns a proposal object from the ProposalCreated event - // in the logs of tx - assert.equal(tx.logs[0].event, "ProposalCreated"); - const proposalAddress = tx.logs[0].args.proposaladdress; - return proposalAddress; -} - export function getValueFromLogs(tx, arg, eventName, index = 0) { - /** - * - * tx.logs look like this: - * - * [ { logIndex: 13, - * transactionIndex: 0, - * transactionHash: '0x999e51b4124371412924d73b60a0ae1008462eb367db45f8452b134e5a8d56c8', - * blockHash: '0xe35f7c374475a6933a500f48d4dfe5dce5b3072ad316f64fbf830728c6fe6fc9', - * blockNumber: 294, - * address: '0xd6a2a42b97ba20ee8655a80a842c2a723d7d488d', - * type: 'mined', - * event: 'NewOrg', - * args: { _avatar: '0xcc05f0cde8c3e4b6c41c9b963031829496107bbb' } } ] - */ if (!tx.logs || !tx.logs.length) { throw new Error("getValueFromLogs: Transaction has no logs"); } @@ -85,149 +54,29 @@ export function getValueFromLogs(tx, arg, eventName, index = 0) { return result; } -export async function etherForEveryone(accounts) { - // give all web3.eth.accounts some ether - for (let i = 0; i < 10; i++) { - await web3.eth.sendTransaction({ - to: accounts[i], - from: accounts[0], - value: web3.utils.toWei("0.1", "ether"), - }); - } -} - -export const outOfGasMessage = - "VM Exception while processing transaction: out of gas"; - -export function assertJumpOrOutOfGas(error) { - let condition = - error.message === outOfGasMessage || - error.message.search("invalid JUMP") > -1; - assert.isTrue( - condition, - "Expected an out-of-gas error or an invalid JUMP error, got this instead: " + - error.message - ); -} - -export function assertVMException(error) { - let condition = - error.message.search("VM Exception") > -1 || - error.message.search("Transaction reverted") > -1; - assert.isTrue( - condition, - "Expected a VM Exception, got this instead:" + error.message - ); -} - -export function assertInternalFunctionException(error) { - let condition = error.message.search("is not a function") > -1; - assert.isTrue( - condition, - "Expected a function not found Exception, got this instead:" + error.message - ); -} +export const deployDao = async function (deployConfig) { + const dxController = await DxController.new(); + await dxController.initialize(deployConfig.owner); -export function assertJump(error) { - assert.isAbove( - error.message.search("invalid JUMP"), - -1, - "Invalid JUMP error must be returned" + error.message - ); -} + const dxReputation = await DxReputation.new(); + await dxReputation.initialize("DxReputation", "DxRep"); -export const setupAbsoluteVote = async function ( - voteOnBehalf = constants.NULL_ADDRESS, - precReq = 50 -) { - const absoluteVote = await AbsoluteVote.new(); - absoluteVote.setParameters(precReq, voteOnBehalf); - const params = await absoluteVote.getParametersHash(precReq, voteOnBehalf); - return { address: absoluteVote.address, contract: absoluteVote, params }; -}; + const dxAvatar = await DxAvatar.new(); + await dxAvatar.initialize(dxController.address, dxReputation.address); -export const setUpVotingMachine = async function ( - tokenAddress, - votingMachineType = "dxd", - voteOnBehalf = constants.NULL_ADDRESS, - _queuedVoteRequiredPercentage = 50, - _queuedVotePeriodLimit = 172800, - _boostedVotePeriodLimit = 86400, - _preBoostedVotePeriodLimit = 3600, - _thresholdConst = 2000, - _quietEndingPeriod = 0, - _proposingRepReward = 60, - _votersReputationLossRatio = 10, - _minimumDaoBounty = 15, - _daoBountyConst = 10, - _activationTime = 0 -) { - const votingMachine = - votingMachineType === "dxd" - ? await DXDVotingMachine.new(tokenAddress, { gas: constants.GAS_LIMIT }) - : await GenesisProtocol.new(tokenAddress, { gas: constants.GAS_LIMIT }); + for (let i = 0; i < deployConfig.repHolders.length; i++) { + await dxReputation.mint( + deployConfig.repHolders[i].address, + deployConfig.repHolders[i].amount + ); + } + await dxReputation.transferOwnership(dxAvatar.address); - // register default parameters - await votingMachine.setParameters( - [ - _queuedVoteRequiredPercentage, - _queuedVotePeriodLimit, - _boostedVotePeriodLimit, - _preBoostedVotePeriodLimit, - _thresholdConst, - _quietEndingPeriod, - _proposingRepReward, - _votersReputationLossRatio, - _minimumDaoBounty, - _daoBountyConst, - _activationTime, - ], - voteOnBehalf + const votingMachine = await DXDVotingMachine.new( + deployConfig.votingMachineToken ); - const params = await votingMachine.getParametersHash( - [ - _queuedVoteRequiredPercentage, - _queuedVotePeriodLimit, - _boostedVotePeriodLimit, - _preBoostedVotePeriodLimit, - _thresholdConst, - _quietEndingPeriod, - _proposingRepReward, - _votersReputationLossRatio, - _minimumDaoBounty, - _daoBountyConst, - _activationTime, - ], - voteOnBehalf - ); - - return { address: votingMachine.address, contract: votingMachine, params }; -}; -export const setupOrganization = async function ( - daoCreatorOwner, - nativeTokenHolders, - reputationHolders, - cap = 0 -) { - const controllerCreator = await DxControllerCreator.new(); - const daoCreator = await DaoCreator.new(controllerCreator.address); - var tx = await daoCreator.forgeOrg( - "testOrg", - "TEST", - "TST", - daoCreatorOwner, - nativeTokenHolders, - reputationHolders, - cap - ); - assert.equal(tx.logs.length, 1); - assert.equal(tx.logs[0].event, "NewOrg"); - const avatar = await Avatar.at(tx.logs[0].args._avatar); - const token = await DAOToken.at(await avatar.nativeToken()); - const reputation = await Reputation.at(await avatar.nativeReputation()); - const controller = await Controller.at(await avatar.owner()); - return { daoCreator, avatar, token, reputation, controller }; + return { dxController, dxAvatar, dxReputation, votingMachine }; }; export async function getProposalId(tx, contract, eventName) { @@ -318,81 +167,4 @@ export function getEventFromTx(tx, eventName) { return logs.find(event => event.name === eventName); } -export async function setDefaultControllerPermissions( - permissionRegistry, - from, - controller -) { - await Promise.all( - [ - controller.contract._jsonInterface.find( - method => method.name === "genericCall" - ).signature, - controller.contract._jsonInterface.find( - method => method.name === "mintTokens" - ).signature, - controller.contract._jsonInterface.find( - method => method.name === "unregisterSelf" - ).signature, - controller.contract._jsonInterface.find( - method => method.name === "addGlobalConstraint" - ).signature, - controller.contract._jsonInterface.find( - method => method.name === "removeGlobalConstraint" - ).signature, - controller.contract._jsonInterface.find( - method => method.name === "upgradeController" - ).signature, - controller.contract._jsonInterface.find( - method => method.name === "sendEther" - ).signature, - controller.contract._jsonInterface.find( - method => method.name === "externalTokenTransfer" - ).signature, - controller.contract._jsonInterface.find( - method => method.name === "externalTokenTransferFrom" - ).signature, - controller.contract._jsonInterface.find( - method => method.name === "externalTokenApproval" - ).signature, - controller.contract._jsonInterface.find( - method => method.name === "metaData" - ).signature, - ].map(async funcSignature => { - await permissionRegistry.setETHPermission( - from, - controller.address, - funcSignature, - 0, - false - ); - }) - ); - - await Promise.all( - [ - controller.contract._jsonInterface.find( - method => method.name === "mintReputation" - ).signature, - controller.contract._jsonInterface.find( - method => method.name === "burnReputation" - ).signature, - controller.contract._jsonInterface.find( - method => method.name === "registerScheme" - ).signature, - controller.contract._jsonInterface.find( - method => method.name === "unregisterScheme" - ).signature, - ].map(async funcSignature => { - await permissionRegistry.setETHPermission( - from, - controller.address, - funcSignature, - 0, - true - ); - }) - ); -} - -export { encodePermission, decodePermission, constants }; +export { constants }; diff --git a/test/helpers/permissions.js b/test/helpers/permissions.js deleted file mode 100644 index d63dcc90..00000000 --- a/test/helpers/permissions.js +++ /dev/null @@ -1,88 +0,0 @@ -const binaryToHex = function (binaryString) { - const lookup = { - "0000": "0", - "0001": "1", - "0010": "2", - "0011": "3", - "0100": "4", - "0101": "5", - "0110": "6", - "0111": "7", - 1000: "8", - 1001: "9", - 1010: "A", - 1011: "B", - 1100: "C", - 1101: "D", - 1110: "E", - 1111: "F", - }; - var ret = ""; - binaryString = binaryString.split(" "); - for (var i = 0; i < binaryString.length; i++) { - ret += lookup[binaryString[i]]; - } - return ret; -}; - -const hexToBinary = function (hexString) { - hexString = hexString.replace(/^0x+/, ""); - const lookup = { - 0: "0000", - 1: "0001", - 2: "0010", - 3: "0011", - 4: "0100", - 5: "0101", - 6: "0110", - 7: "0111", - 8: "1000", - 9: "1001", - a: "1010", - b: "1011", - c: "1100", - d: "1101", - e: "1110", - f: "1111", - A: "1010", - B: "1011", - C: "1100", - D: "1101", - E: "1110", - F: "1111", - }; - - var ret = ""; - for (var i = 0, len = hexString.length; i < len; i++) { - if (hexString[i] !== "0") ret += lookup[hexString[i]]; - } - return ret; -}; - -// All 0: Not registered, -// 1st bit: Flag if the scheme is registered, -// 2nd bit: Scheme can register other schemes -// 3rd bit: Scheme can add/remove global constraints -// 4th bit: Scheme can upgrade the controller -// 5th bit: Scheme can call genericCall on behalf of the organization avatar -const encodePermission = function (permissions) { - const canGenericCall = permissions.canGenericCall || false; - const canUpgrade = permissions.canUpgrade || false; - const canChangeConstraints = permissions.canChangeConstraints || false; - const canRegisterSchemes = permissions.canRegisterSchemes || false; - const permissionBytes = `000${canGenericCall ? 1 : 0} ${canUpgrade ? 1 : 0}${ - canChangeConstraints ? 1 : 0 - }${canRegisterSchemes ? 1 : 0}1`; - return "0x000000" + binaryToHex(permissionBytes); -}; -const decodePermission = function (permission) { - permission = hexToBinary(permission); - return { - canGenericCall: permission.length > 3 && permission[4] === "1", - canUpgrade: permission.length > 3 && permission[5] === "1", - canChangeConstraints: permission.length > 3 && permission[6] === "1", - canRegisterSchemes: permission.length > 3 && permission[7] === "1", - }; -}; - -module.exports = { encodePermission, decodePermission }; From dcfe01bb05db0917a1cb220c75e4c9cee77ed80c Mon Sep 17 00:00:00 2001 From: AugustoL Date: Tue, 20 Sep 2022 10:52:14 -0300 Subject: [PATCH 08/33] refactor(contracts/dxdao): rename Dx contracts to DAO contracts --- .../dxdao/{DxAvatar.sol => DAOAvatar.sol} | 7 +++--- .../{DxController.sol => DAOController.sol} | 22 +++++++++---------- .../{DxReputation.sol => DAOReputation.sol} | 15 +++++-------- contracts/dxdao/schemes/WalletScheme.sol | 14 ++++++------ .../DXDVotingMachineCallbacks.sol | 20 ++++++++--------- test/dxdao/{DxAvatar.js => DAOAvatar.js} | 22 ++++++++++++++----- test/helpers/index.js | 20 ++++++++--------- 7 files changed, 63 insertions(+), 57 deletions(-) rename contracts/dxdao/{DxAvatar.sol => DAOAvatar.sol} (84%) rename contracts/dxdao/{DxController.sol => DAOController.sol} (84%) rename contracts/dxdao/{DxReputation.sol => DAOReputation.sol} (76%) rename test/dxdao/{DxAvatar.js => DAOAvatar.js} (64%) diff --git a/contracts/dxdao/DxAvatar.sol b/contracts/dxdao/DAOAvatar.sol similarity index 84% rename from contracts/dxdao/DxAvatar.sol rename to contracts/dxdao/DAOAvatar.sol index 317053d4..6a9c28c1 100644 --- a/contracts/dxdao/DxAvatar.sol +++ b/contracts/dxdao/DAOAvatar.sol @@ -4,12 +4,11 @@ pragma solidity ^0.8.8; import "@openzeppelin/contracts-upgradeable/access/OwnableUpgradeable.sol"; /** - @title DxAvatar - @author github:miltontulli - @dev An Avatar holds tokens, reputation and ether for a controller + @title DAO Avatar + @dev The avatar, representing the DAO, owned by the DAO, controls the reputation and funds of the DAO. */ -contract DxAvatar is OwnableUpgradeable { +contract DAOAvatar is OwnableUpgradeable { event CallExecuted(address indexed _to, bytes _data, uint256 _value, bool _success); address public reputationToken; diff --git a/contracts/dxdao/DxController.sol b/contracts/dxdao/DAOController.sol similarity index 84% rename from contracts/dxdao/DxController.sol rename to contracts/dxdao/DAOController.sol index 960a225b..13289ea8 100644 --- a/contracts/dxdao/DxController.sol +++ b/contracts/dxdao/DAOController.sol @@ -2,15 +2,15 @@ pragma solidity ^0.8.8; import "@openzeppelin/contracts-upgradeable/proxy/utils/Initializable.sol"; import "@openzeppelin/contracts-upgradeable/utils/math/SafeMathUpgradeable.sol"; -import "./DxAvatar.sol"; +import "./DAOAvatar.sol"; /** - * @title Controller contract - * @dev A controller controls the organizations schemes, reputation and avatar. - * It is subject to a set of schemes and constraints that determine its behavior. + * @title DAO Controller + * @dev A controller controls and connect the organizations schemes, reputation and avatar. + * The schemes execute proposals through the controller to the avatar. * Each scheme has it own parameters and operation permissions. */ -contract DxController is Initializable { +contract DAOController is Initializable { using SafeMathUpgradeable for uint256; struct Scheme { @@ -38,17 +38,17 @@ contract DxController is Initializable { } modifier onlyRegisteredScheme() { - require(schemes[msg.sender].isRegistered, "DxController: Sender is not a registered scheme"); + require(schemes[msg.sender].isRegistered, "DAOController: Sender is not a registered scheme"); _; } modifier onlyRegisteringSchemes() { - require(schemes[msg.sender].canManageSchemes, "DxController: Sender cannot manage schemes"); + require(schemes[msg.sender].canManageSchemes, "DAOController: Sender cannot manage schemes"); _; } modifier onlyAvatarCallScheme() { - require(schemes[msg.sender].canMakeAvatarCalls, "DxController: Sender cannot perform avatar calls"); + require(schemes[msg.sender].canMakeAvatarCalls, "DAOController: Sender cannot perform avatar calls"); _; } @@ -73,7 +73,7 @@ contract DxController is Initializable { (_canMakeAvatarCalls || scheme.canMakeAvatarCalls != _canMakeAvatarCalls) ? schemes[msg.sender].canMakeAvatarCalls : true, - "DxController: Sender cannot add permissions sender doesn't have to a new scheme" + "DAOController: Sender cannot add permissions sender doesn't have to a new scheme" ); // Add or change the scheme: @@ -114,7 +114,7 @@ contract DxController is Initializable { if (scheme.isRegistered && scheme.canManageSchemes) { require( schemesWithManageSchemesPermission > 1, - "DxController: Cannot unregister last scheme with manage schemes permission" + "DAOController: Cannot unregister last scheme with manage schemes permission" ); schemesWithManageSchemesPermission = schemesWithManageSchemesPermission.sub(1); } @@ -142,7 +142,7 @@ contract DxController is Initializable { function avatarCall( address _contract, bytes calldata _data, - DxAvatar _avatar, + DAOAvatar _avatar, uint256 _value ) external onlyRegisteredScheme onlyAvatarCallScheme returns (bool, bytes memory) { return _avatar.executeCall(_contract, _data, _value); diff --git a/contracts/dxdao/DxReputation.sol b/contracts/dxdao/DAOReputation.sol similarity index 76% rename from contracts/dxdao/DxReputation.sol rename to contracts/dxdao/DAOReputation.sol index b0b9d1f0..d3cee1c4 100644 --- a/contracts/dxdao/DxReputation.sol +++ b/contracts/dxdao/DAOReputation.sol @@ -5,15 +5,12 @@ import "@openzeppelin/contracts-upgradeable/access/OwnableUpgradeable.sol"; import "@openzeppelin/contracts-upgradeable/token/ERC20/extensions/ERC20SnapshotUpgradeable.sol"; /** - * @title Reputation system - * @author github:Kenny-Gin1 - * @dev A DAO has Reputation System which allows peers to rate other peers in order to build trust . - * Reputation is used to assign influence metric to a DAO's peers. - * Reputation is similar to regular tokens but with one crucial difference: It is non-transferable. - * This contract uses the ERC20SnapshotUpgradeable extension methods' under the hood to mint and burn reputation tokens. - * It uses snapshots to keep track of the total reputation of each peer. + * @title DAO Reputation + * @dev An ERC20 token that is non-transferable, owned and controlled by the DAO. + * Used by the DAO to vote on proposals. + * It uses a snapshot mechanism to keep track of the reputation at the moment of each proposal creation. */ -contract DxReputation is OwnableUpgradeable, ERC20SnapshotUpgradeable { +contract DAOReputation is OwnableUpgradeable, ERC20SnapshotUpgradeable { event Mint(address indexed _to, uint256 _amount); event Burn(address indexed _from, uint256 _amount); @@ -28,7 +25,7 @@ contract DxReputation is OwnableUpgradeable, ERC20SnapshotUpgradeable { address recipient, uint256 amount ) internal virtual override { - revert("DxReputation: Reputation tokens are non-transferable"); + revert("DAOReputation: Reputation tokens are non-transferable"); } // @notice Generates `_amount` reputation that are assigned to `_user` diff --git a/contracts/dxdao/schemes/WalletScheme.sol b/contracts/dxdao/schemes/WalletScheme.sol index e35b5fe9..2a23c6be 100644 --- a/contracts/dxdao/schemes/WalletScheme.sol +++ b/contracts/dxdao/schemes/WalletScheme.sol @@ -5,9 +5,9 @@ import "@openzeppelin/contracts/utils/math/SafeMath.sol"; import "@openzeppelin/contracts/utils/Address.sol"; import "@openzeppelin/contracts/token/ERC20/IERC20.sol"; import "../../utils/PermissionRegistry.sol"; -import "../DxReputation.sol"; -import "../DxAvatar.sol"; -import "../DxController.sol"; +import "../DAOReputation.sol"; +import "../DAOAvatar.sol"; +import "../DAOController.sol"; import "../votingMachine/DXDVotingMachineCallbacks.sol"; /** @@ -53,7 +53,7 @@ contract WalletScheme is DXDVotingMachineCallbacks { bytes32[] public proposalsList; bool public doAvatarGenericCalls; - DxController public controller; + DAOController public controller; PermissionRegistry public permissionRegistry; string public schemeName; uint256 public maxSecondsForExecution; @@ -93,10 +93,10 @@ contract WalletScheme is DXDVotingMachineCallbacks { _maxSecondsForExecution >= 86400, "WalletScheme: _maxSecondsForExecution cant be less than 86400 seconds" ); - avatar = DxAvatar(_avatar); + avatar = DAOAvatar(_avatar); votingMachine = _votingMachine; doAvatarGenericCalls = _doAvatarGenericCalls; - controller = DxController(_controller); + controller = DAOController(_controller); permissionRegistry = PermissionRegistry(_permissionRegistry); schemeName = _schemeName; maxSecondsForExecution = _maxSecondsForExecution; @@ -306,7 +306,7 @@ contract WalletScheme is DXDVotingMachineCallbacks { }); // slither-disable-next-line all proposalsList.push(proposalId); - proposalSnapshots[proposalId] = DxReputation(getReputation()).getCurrentSnapshotId(); + proposalSnapshots[proposalId] = DAOReputation(getReputation()).getCurrentSnapshotId(); emit ProposalStateChange(proposalId, uint256(ProposalState.Submitted)); return proposalId; } diff --git a/contracts/dxdao/votingMachine/DXDVotingMachineCallbacks.sol b/contracts/dxdao/votingMachine/DXDVotingMachineCallbacks.sol index 8cfb95e2..2e9a6de8 100644 --- a/contracts/dxdao/votingMachine/DXDVotingMachineCallbacks.sol +++ b/contracts/dxdao/votingMachine/DXDVotingMachineCallbacks.sol @@ -1,17 +1,17 @@ pragma solidity ^0.8.8; import "@openzeppelin/contracts/token/ERC20/IERC20.sol"; -import "../DxController.sol"; -import "../DxAvatar.sol"; -import "../DxReputation.sol"; +import "../DAOController.sol"; +import "../DAOAvatar.sol"; +import "../DAOReputation.sol"; contract DXDVotingMachineCallbacks { address public votingMachine; - DxAvatar public avatar; + DAOAvatar public avatar; modifier onlyVotingMachine() { - require(msg.sender == address(votingMachine), "only VotingMachine"); + require(msg.sender == address(votingMachine), "DXDVotingMachineCallbacks: only VotingMachine"); _; } @@ -23,7 +23,7 @@ contract DXDVotingMachineCallbacks { address _beneficiary, bytes32 ) external onlyVotingMachine returns (bool success) { - (success, ) = DxController(avatar.owner()).avatarCall( + (success, ) = DAOController(avatar.owner()).avatarCall( address(avatar.reputationToken()), abi.encodeWithSignature("mint(address,uint256)", _beneficiary, _amount), avatar, @@ -36,7 +36,7 @@ contract DXDVotingMachineCallbacks { address _beneficiary, bytes32 ) external onlyVotingMachine returns (bool success) { - (success, ) = DxController(avatar.owner()).avatarCall( + (success, ) = DAOController(avatar.owner()).avatarCall( address(avatar.reputationToken()), abi.encodeWithSignature("burn(address,uint256)", _beneficiary, _amount), avatar, @@ -50,7 +50,7 @@ contract DXDVotingMachineCallbacks { uint256 _amount, bytes32 ) external onlyVotingMachine returns (bool success) { - (success, ) = DxController(avatar.owner()).avatarCall( + (success, ) = DAOController(avatar.owner()).avatarCall( address(_stakingToken), abi.encodeWithSignature("transferFrom(address,address,uint256)", avatar, _beneficiary, _amount), avatar, @@ -58,8 +58,8 @@ contract DXDVotingMachineCallbacks { ); } - function getReputation() public view returns (DxReputation) { - return DxReputation(avatar.reputationToken()); + function getReputation() public view returns (DAOReputation) { + return DAOReputation(avatar.reputationToken()); } function getNativeReputationTotalSupply() public view returns (uint256) { diff --git a/test/dxdao/DxAvatar.js b/test/dxdao/DAOAvatar.js similarity index 64% rename from test/dxdao/DxAvatar.js rename to test/dxdao/DAOAvatar.js index e8a6a885..ffba4922 100644 --- a/test/dxdao/DxAvatar.js +++ b/test/dxdao/DAOAvatar.js @@ -1,13 +1,17 @@ import * as helpers from "../helpers"; const { expectRevert, expectEvent } = require("@openzeppelin/test-helpers"); -const DxAvatar = artifacts.require("./DxAvatar.sol"); +const DAOAvatar = artifacts.require("./DAOAvatar.sol"); +const DAOReputation = artifacts.require("./DAOReputation.sol"); const BigNumber = require("bignumber.js"); -contract("DxAvatar", function (accounts) { +contract("DAOAvatar", function (accounts) { it("Should revert call", async function () { const owner = accounts[0]; - const avatar = await DxAvatar.new(); - await avatar.initialize(owner); + const reputation = await DAOReputation.new(); + await reputation.initialize("DXDaoReputation", "DXRep"); + + const avatar = await DAOAvatar.new(); + await avatar.initialize(owner, reputation.address); const callData = helpers.testCallFrom(owner); const ANY_ADDRESS = "0xaAaAaAaaAaAaAaaAaAAAAAAAAaaaAaAaAaaAaaAa"; @@ -22,8 +26,14 @@ contract("DxAvatar", function (accounts) { it("Should transferOwnership on initialize and execute call", async function () { const owner = accounts[1]; - const avatar = await DxAvatar.new(); - const transferOwnershipTx = await avatar.initialize(owner); + const reputation = await DAOReputation.new(); + await reputation.initialize("DXDaoReputation", "DXRep"); + + const avatar = await DAOAvatar.new(); + const transferOwnershipTx = await avatar.initialize( + owner, + reputation.address + ); await expectEvent(transferOwnershipTx.receipt, "OwnershipTransferred", { previousOwner: accounts[0], diff --git a/test/helpers/index.js b/test/helpers/index.js index 981f0038..e78a919a 100644 --- a/test/helpers/index.js +++ b/test/helpers/index.js @@ -2,9 +2,9 @@ const constants = require("./constants"); const { LogDecoder } = require("@maticnetwork/eth-decoder"); -const DxAvatar = artifacts.require("./DxAvatar.sol"); -const DxController = artifacts.require("./DxController.sol"); -const DxReputation = artifacts.require("./DxReputation.sol"); +const DAOAvatar = artifacts.require("./DAOAvatar.sol"); +const DAOController = artifacts.require("./DAOController.sol"); +const DAOReputation = artifacts.require("./DAOReputation.sol"); const DXDVotingMachine = artifacts.require("./DXDVotingMachine.sol"); const WalletScheme = artifacts.require("./WalletScheme.sol"); const ActionMock = artifacts.require("./ActionMock.sol"); @@ -14,9 +14,9 @@ const ERC721Factory = artifacts.require("./ERC721Factory.sol"); const ERC20Guild = artifacts.require("./ERC20Guild.sol"); export const logDecoder = new LogDecoder([ - DxAvatar.abi, - DxController.abi, - DxReputation.abi, + DAOAvatar.abi, + DAOController.abi, + DAOReputation.abi, DXDVotingMachine.abi, WalletScheme.abi, PermissionRegistry.abi, @@ -55,13 +55,13 @@ export function getValueFromLogs(tx, arg, eventName, index = 0) { } export const deployDao = async function (deployConfig) { - const dxController = await DxController.new(); + const dxController = await DAOController.new(); await dxController.initialize(deployConfig.owner); - const dxReputation = await DxReputation.new(); - await dxReputation.initialize("DxReputation", "DxRep"); + const dxReputation = await DAOReputation.new(); + await dxReputation.initialize("DXDaoReputation", "DXRep"); - const dxAvatar = await DxAvatar.new(); + const dxAvatar = await DAOAvatar.new(); await dxAvatar.initialize(dxController.address, dxReputation.address); for (let i = 0; i < deployConfig.repHolders.length; i++) { From 16512f845059e0aa659e0759e49f67b868b5a96c Mon Sep 17 00:00:00 2001 From: AugustoL Date: Thu, 22 Sep 2022 09:47:57 -0300 Subject: [PATCH 09/33] refactor(contracts/dao): contracts renamed form dxdao to dao and placed in folders --- contracts/{dxdao => dao}/DAOAvatar.sol | 0 contracts/{dxdao => dao}/DAOController.sol | 0 contracts/{dxdao => dao}/DAOReputation.sol | 0 contracts/{dxdao => dao}/schemes/WalletScheme.sol | 0 contracts/{dxdao => dao}/votingMachine/DXDVotingMachine.sol | 0 .../{dxdao => dao}/votingMachine/DXDVotingMachineCallbacks.sol | 0 .../votingMachine/DXDVotingMachineCallbacksInterface.sol | 0 .../{dxdao => dao}/votingMachine/ProposalExecuteInterface.sol | 0 8 files changed, 0 insertions(+), 0 deletions(-) rename contracts/{dxdao => dao}/DAOAvatar.sol (100%) rename contracts/{dxdao => dao}/DAOController.sol (100%) rename contracts/{dxdao => dao}/DAOReputation.sol (100%) rename contracts/{dxdao => dao}/schemes/WalletScheme.sol (100%) rename contracts/{dxdao => dao}/votingMachine/DXDVotingMachine.sol (100%) rename contracts/{dxdao => dao}/votingMachine/DXDVotingMachineCallbacks.sol (100%) rename contracts/{dxdao => dao}/votingMachine/DXDVotingMachineCallbacksInterface.sol (100%) rename contracts/{dxdao => dao}/votingMachine/ProposalExecuteInterface.sol (100%) diff --git a/contracts/dxdao/DAOAvatar.sol b/contracts/dao/DAOAvatar.sol similarity index 100% rename from contracts/dxdao/DAOAvatar.sol rename to contracts/dao/DAOAvatar.sol diff --git a/contracts/dxdao/DAOController.sol b/contracts/dao/DAOController.sol similarity index 100% rename from contracts/dxdao/DAOController.sol rename to contracts/dao/DAOController.sol diff --git a/contracts/dxdao/DAOReputation.sol b/contracts/dao/DAOReputation.sol similarity index 100% rename from contracts/dxdao/DAOReputation.sol rename to contracts/dao/DAOReputation.sol diff --git a/contracts/dxdao/schemes/WalletScheme.sol b/contracts/dao/schemes/WalletScheme.sol similarity index 100% rename from contracts/dxdao/schemes/WalletScheme.sol rename to contracts/dao/schemes/WalletScheme.sol diff --git a/contracts/dxdao/votingMachine/DXDVotingMachine.sol b/contracts/dao/votingMachine/DXDVotingMachine.sol similarity index 100% rename from contracts/dxdao/votingMachine/DXDVotingMachine.sol rename to contracts/dao/votingMachine/DXDVotingMachine.sol diff --git a/contracts/dxdao/votingMachine/DXDVotingMachineCallbacks.sol b/contracts/dao/votingMachine/DXDVotingMachineCallbacks.sol similarity index 100% rename from contracts/dxdao/votingMachine/DXDVotingMachineCallbacks.sol rename to contracts/dao/votingMachine/DXDVotingMachineCallbacks.sol diff --git a/contracts/dxdao/votingMachine/DXDVotingMachineCallbacksInterface.sol b/contracts/dao/votingMachine/DXDVotingMachineCallbacksInterface.sol similarity index 100% rename from contracts/dxdao/votingMachine/DXDVotingMachineCallbacksInterface.sol rename to contracts/dao/votingMachine/DXDVotingMachineCallbacksInterface.sol diff --git a/contracts/dxdao/votingMachine/ProposalExecuteInterface.sol b/contracts/dao/votingMachine/ProposalExecuteInterface.sol similarity index 100% rename from contracts/dxdao/votingMachine/ProposalExecuteInterface.sol rename to contracts/dao/votingMachine/ProposalExecuteInterface.sol From 3e15a7d2a545a28b5ad1006e6aa32a0c001fc774 Mon Sep 17 00:00:00 2001 From: AugustoL Date: Thu, 22 Sep 2022 09:48:37 -0300 Subject: [PATCH 10/33] test(dao): tests renamed and placed in folders matching contracts --- test/{dxdao => dao}/DAOAvatar.js | 0 test/{dxdao => dao}/dxdao.js | 30 ++-- test/{dxvote => dao/schemes}/WalletScheme.js | 4 +- .../votingMachines}/DXDVotingMachine.js | 4 +- test/dxvote/deploy.js | 9 -- test/erc20guild/implementations/DXDGuild.js | 148 +++++++++++------- test/helpers/index.js | 18 +-- .../{dxvote => }/utils/ERC20VestingFactory.js | 0 test/{dxvote => }/utils/ERC721Factory.js | 2 +- test/{dxvote => utils}/PermissionRegistry.js | 0 10 files changed, 122 insertions(+), 93 deletions(-) rename test/{dxdao => dao}/DAOAvatar.js (100%) rename test/{dxdao => dao}/dxdao.js (79%) rename test/{dxvote => dao/schemes}/WalletScheme.js (96%) rename test/{dxvote => dao/votingMachines}/DXDVotingMachine.js (96%) delete mode 100644 test/dxvote/deploy.js rename test/{dxvote => }/utils/ERC20VestingFactory.js (100%) rename test/{dxvote => }/utils/ERC721Factory.js (89%) rename test/{dxvote => utils}/PermissionRegistry.js (100%) diff --git a/test/dxdao/DAOAvatar.js b/test/dao/DAOAvatar.js similarity index 100% rename from test/dxdao/DAOAvatar.js rename to test/dao/DAOAvatar.js diff --git a/test/dxdao/dxdao.js b/test/dao/dxdao.js similarity index 79% rename from test/dxdao/dxdao.js rename to test/dao/dxdao.js index 27dece7e..4b628842 100644 --- a/test/dxdao/dxdao.js +++ b/test/dao/dxdao.js @@ -31,7 +31,7 @@ contract("DXdao", function (accounts) { }); await web3.eth.sendTransaction({ - to: dxDao.dxAvatar.address, + to: dxDao.avatar.address, from: accounts[0], value: 100, }); @@ -85,13 +85,13 @@ contract("DXdao", function (accounts) { ); const permissionRegistry = await PermissionRegistry.new( - dxDao.dxAvatar.address, + dxDao.avatar.address, 10 ); await permissionRegistry.initialize(); await permissionRegistry.setETHPermission( - dxDao.dxAvatar.address, + dxDao.avatar.address, constants.NULL_ADDRESS, constants.NULL_SIGNATURE, 10, @@ -101,17 +101,17 @@ contract("DXdao", function (accounts) { const masterWalletScheme = await WalletScheme.new(); await masterWalletScheme.initialize( - dxDao.dxAvatar.address, + dxDao.avatar.address, dxDao.votingMachine.address, true, - dxDao.dxController.address, + dxDao.controller.address, permissionRegistry.address, "Master Scheme", 86400, 5 ); - await dxDao.dxController.registerScheme( + await dxDao.controller.registerScheme( masterWalletScheme.address, paramsHash, true, @@ -130,8 +130,14 @@ contract("DXdao", function (accounts) { proposalId = createProposalTx.logs[0].args._proposalId; }); + it("Deploy DXvote", function (done) { + // TODO: See how this tests can be run in github CI, the use the setTimeout breaks the tests + if (!process.env.CI) hre.run("deploy-dxvote-develop").then(done); + else done(); + }); + it("Wallet - execute proposeVote -option 0 - check action - with DXDVotingMachine", async function () { - assert.equal(await web3.eth.getBalance(dxDao.dxAvatar.address), "100"); + assert.equal(await web3.eth.getBalance(dxDao.avatar.address), "100"); await expectRevert( dxDao.votingMachine.vote(proposalId, 0, 0, constants.NULL_ADDRESS, { @@ -139,24 +145,24 @@ contract("DXdao", function (accounts) { }), "wrong decision value" ); - assert.equal(await web3.eth.getBalance(dxDao.dxAvatar.address), "100"); + assert.equal(await web3.eth.getBalance(dxDao.avatar.address), "100"); }); it("Wallet - execute proposeVote -option 1 - check action - with DXDVotingMachine", async function () { - assert.equal(await web3.eth.getBalance(dxDao.dxAvatar.address), "100"); + assert.equal(await web3.eth.getBalance(dxDao.avatar.address), "100"); await dxDao.votingMachine.vote(proposalId, 1, 0, constants.NULL_ADDRESS, { from: accounts[2], }); - assert.equal(await web3.eth.getBalance(dxDao.dxAvatar.address), "90"); + assert.equal(await web3.eth.getBalance(dxDao.avatar.address), "90"); }); it("Wallet - execute proposeVote -option 2 - check action - with DXDVotingMachine", async function () { - assert.equal(await web3.eth.getBalance(dxDao.dxAvatar.address), "100"); + assert.equal(await web3.eth.getBalance(dxDao.avatar.address), "100"); await dxDao.votingMachine.vote(proposalId, 2, 0, constants.NULL_ADDRESS, { from: accounts[2], }); - assert.equal(await web3.eth.getBalance(dxDao.dxAvatar.address), "95"); + assert.equal(await web3.eth.getBalance(dxDao.avatar.address), "95"); }); }); diff --git a/test/dxvote/WalletScheme.js b/test/dao/schemes/WalletScheme.js similarity index 96% rename from test/dxvote/WalletScheme.js rename to test/dao/schemes/WalletScheme.js index 278d8e35..af0417cc 100644 --- a/test/dxvote/WalletScheme.js +++ b/test/dao/schemes/WalletScheme.js @@ -1,6 +1,6 @@ import { assert } from "chai"; -import * as helpers from "../helpers"; -const { fixSignature } = require("../helpers/sign"); +import * as helpers from "../../helpers"; +const { fixSignature } = require("../../helpers/sign"); const { time, expectRevert } = require("@openzeppelin/test-helpers"); const WalletScheme = artifacts.require("./WalletScheme.sol"); diff --git a/test/dxvote/DXDVotingMachine.js b/test/dao/votingMachines/DXDVotingMachine.js similarity index 96% rename from test/dxvote/DXDVotingMachine.js rename to test/dao/votingMachines/DXDVotingMachine.js index b194e0ec..134b0598 100644 --- a/test/dxvote/DXDVotingMachine.js +++ b/test/dao/votingMachines/DXDVotingMachine.js @@ -1,5 +1,5 @@ -import * as helpers from "../helpers"; -const { fixSignature } = require("../helpers/sign"); +import * as helpers from "../../helpers"; +const { fixSignature } = require("../../helpers/sign"); const { BN, diff --git a/test/dxvote/deploy.js b/test/dxvote/deploy.js deleted file mode 100644 index e6503b24..00000000 --- a/test/dxvote/deploy.js +++ /dev/null @@ -1,9 +0,0 @@ -require("@nomiclabs/hardhat-web3"); - -contract("DXvote develop deployment", function () { - it("Deploy DXvote", function (done) { - // TODO: See how this tests can be run in github CI, the use the setTimeout breaks the tests - if (!process.env.CI) hre.run("deploy-dxvote-develop").then(done); - else done(); - }); -}); diff --git a/test/erc20guild/implementations/DXDGuild.js b/test/erc20guild/implementations/DXDGuild.js index c0591fe6..3f3ad104 100644 --- a/test/erc20guild/implementations/DXDGuild.js +++ b/test/erc20guild/implementations/DXDGuild.js @@ -1,3 +1,4 @@ +import { ZERO_ADDRESS } from "@openzeppelin/test-helpers/src/constants"; import * as helpers from "../../helpers"; const { createAndSetupGuildToken, @@ -24,10 +25,8 @@ contract("DXDGuild", function (accounts) { const VOTE_GAS = new BN("50000"); // 50k const MAX_GAS_PRICE = new BN("8000000000"); // 8 gwei - let walletScheme, - org, + let dxDao, actionMock, - votingMachine, guildToken, dxdGuild, tokenVault, @@ -42,58 +41,91 @@ contract("DXDGuild", function (accounts) { const votingMachineToken = await ERC20Mock.new( accounts[0], - 0, - "Test Token", - "TT", + 1000, + "DXDao", + "DXD", "18" ); - votingMachine = await helpers.setUpVotingMachine( - votingMachineToken.address, - 0, - constants.NULL_ADDRESS + dxDao = await helpers.deployDao({ + owner: accounts[0], + votingMachineToken: votingMachineToken.address, + repHolders: [ + { address: accounts[0], amount: 20 }, + { address: accounts[1], amount: 10 }, + { address: dxdGuild.address, amount: 70 }, + ], + }); + + // Parameters + const voteOnBehalf = constants.NULL_ADDRESS; + const _queuedVoteRequiredPercentage = 50; + const _queuedVotePeriodLimit = 60; + const _boostedVotePeriodLimit = 60; + const _preBoostedVotePeriodLimit = 0; + const _thresholdConst = 2000; + const _quietEndingPeriod = 0; + const _proposingRepReward = 0; + const _votersReputationLossRatio = 10; + const _minimumDaoBounty = 15; + const _daoBountyConst = 10; + const _activationTime = 0; + + await dxDao.votingMachine.setParameters( + [ + _queuedVoteRequiredPercentage, + _queuedVotePeriodLimit, + _boostedVotePeriodLimit, + _preBoostedVotePeriodLimit, + _thresholdConst, + _quietEndingPeriod, + _proposingRepReward, + _votersReputationLossRatio, + _minimumDaoBounty, + _daoBountyConst, + _activationTime, + ], + voteOnBehalf ); - org = await helpers.setupOrganization( - [accounts[0], accounts[1], accounts[2], dxdGuild.address], - [0, 0, 0, 0], - [10, 10, 10, 40] + const paramsHash = await dxDao.votingMachine.getParametersHash( + [ + _queuedVoteRequiredPercentage, + _queuedVotePeriodLimit, + _boostedVotePeriodLimit, + _preBoostedVotePeriodLimit, + _thresholdConst, + _quietEndingPeriod, + _proposingRepReward, + _votersReputationLossRatio, + _minimumDaoBounty, + _daoBountyConst, + _activationTime, + ], + voteOnBehalf ); const permissionRegistry = await PermissionRegistry.new(accounts[0], 10); await permissionRegistry.initialize(); - walletScheme = await WalletScheme.new(); - await walletScheme.initialize( - org.avatar.address, - votingMachine.address, - votingMachine.params, - org.controller.address, + const masterWalletScheme = await WalletScheme.new(); + + await masterWalletScheme.initialize( + dxDao.avatar.address, + dxDao.votingMachine.address, + true, + dxDao.controller.address, permissionRegistry.address, - "God Wallet Scheme", + "Master Scheme", 86400, 5 ); - await org.daoCreator.setSchemes( - org.avatar.address, - [walletScheme.address], - [votingMachine.params], - [ - helpers.encodePermission({ - canGenericCall: true, - canUpgrade: true, - canChangeConstraints: true, - canRegisterSchemes: true, - }), - ], - "metaData" - ); - - await helpers.setDefaultControllerPermissions( - permissionRegistry, - org.avatar.address, - org.controller + await dxDao.controller.registerScheme( + masterWalletScheme.address, + paramsHash, + true, + true ); actionMock = await ActionMock.new(); @@ -110,7 +142,7 @@ contract("DXDGuild", function (accounts) { 10, TIMELOCK, permissionRegistry.address, - votingMachine.address + dxDao.votingMachine.address ); await time.increase(time.duration.seconds(1)); @@ -128,17 +160,18 @@ contract("DXDGuild", function (accounts) { await dxdGuild.lockTokens(250, { from: accounts[4] }); await permissionRegistry.setETHPermission( - org.avatar.address, + dxDao.avatar.address, actionMock.address, - helpers.testCallFrom(org.avatar.address).substring(0, 10), + helpers.testCallFrom(dxDao.avatar.address).substring(0, 10), 0, true ); - const tx = await walletScheme.proposeCalls( - [actionMock.address], - [helpers.testCallFrom(org.avatar.address)], - [0], + const tx = await masterWalletScheme.proposeCalls( + [ZERO_ADDRESS, actionMock.address], + ["0x0", helpers.testCallFrom(dxDao.avatar.address)], + [0, 0], + 2, "Test Title", constants.SOME_HASH ); @@ -147,19 +180,18 @@ contract("DXDGuild", function (accounts) { describe("DXDGuild", function () { it("execute a positive vote on the voting machine from the dxd-guild", async function () { - const DXDVotingMachineContract = await new web3.eth.Contract( - votingMachine.contract.abi + const positiveVoteData = web3.eth.abi.encodeFunctionCall( + dxDao.votingMachine.abi.find(x => x.name === "vote"), + [walletSchemeProposalId, 2, 0, constants.NULL_ADDRESS] + ); + const negativeVoteData = web3.eth.abi.encodeFunctionCall( + dxDao.votingMachine.abi.find(x => x.name === "vote"), + [walletSchemeProposalId, 1, 0, constants.NULL_ADDRESS] ); - const positiveVoteData = DXDVotingMachineContract.methods - .vote(walletSchemeProposalId, 1, 0, constants.NULL_ADDRESS) - .encodeABI(); - const negativeVoteData = DXDVotingMachineContract.methods - .vote(walletSchemeProposalId, 2, 0, constants.NULL_ADDRESS) - .encodeABI(); await expectRevert( dxdGuild.createProposal( - [votingMachine.address, votingMachine.address], + [dxDao.votingMachine.address, dxDao.votingMachine.address], [positiveVoteData, negativeVoteData], [0, 0], 2, @@ -170,7 +202,7 @@ contract("DXDGuild", function (accounts) { "ERC20Guild: Not enough votingPower to create proposal" ); const tx = await dxdGuild.createProposal( - [votingMachine.address, votingMachine.address], + [dxDao.votingMachine.address, dxDao.votingMachine.address], [positiveVoteData, negativeVoteData], [0, 0], 2, @@ -230,7 +262,7 @@ contract("DXDGuild", function (accounts) { proposalInfo.state, constants.WALLET_SCHEME_PROPOSAL_STATES.executionSuccedd ); - assert.equal(proposalInfo.to[0], votingMachine.address); + assert.equal(proposalInfo.to[0], dxDao.votingMachine.address); assert.equal(proposalInfo.value[0], 0); }); }); diff --git a/test/helpers/index.js b/test/helpers/index.js index e78a919a..4732e14b 100644 --- a/test/helpers/index.js +++ b/test/helpers/index.js @@ -55,28 +55,28 @@ export function getValueFromLogs(tx, arg, eventName, index = 0) { } export const deployDao = async function (deployConfig) { - const dxController = await DAOController.new(); - await dxController.initialize(deployConfig.owner); + const controller = await DAOController.new(); + await controller.initialize(deployConfig.owner); - const dxReputation = await DAOReputation.new(); - await dxReputation.initialize("DXDaoReputation", "DXRep"); + const reputation = await DAOReputation.new(); + await reputation.initialize("DXDaoReputation", "DXRep"); - const dxAvatar = await DAOAvatar.new(); - await dxAvatar.initialize(dxController.address, dxReputation.address); + const avatar = await DAOAvatar.new(); + await avatar.initialize(controller.address, reputation.address); for (let i = 0; i < deployConfig.repHolders.length; i++) { - await dxReputation.mint( + await reputation.mint( deployConfig.repHolders[i].address, deployConfig.repHolders[i].amount ); } - await dxReputation.transferOwnership(dxAvatar.address); + await reputation.transferOwnership(avatar.address); const votingMachine = await DXDVotingMachine.new( deployConfig.votingMachineToken ); - return { dxController, dxAvatar, dxReputation, votingMachine }; + return { controller, avatar, reputation, votingMachine }; }; export async function getProposalId(tx, contract, eventName) { diff --git a/test/dxvote/utils/ERC20VestingFactory.js b/test/utils/ERC20VestingFactory.js similarity index 100% rename from test/dxvote/utils/ERC20VestingFactory.js rename to test/utils/ERC20VestingFactory.js diff --git a/test/dxvote/utils/ERC721Factory.js b/test/utils/ERC721Factory.js similarity index 89% rename from test/dxvote/utils/ERC721Factory.js rename to test/utils/ERC721Factory.js index 25b63b29..2142eea3 100644 --- a/test/dxvote/utils/ERC721Factory.js +++ b/test/utils/ERC721Factory.js @@ -1,5 +1,5 @@ import { artifacts, contract } from "hardhat"; -import { SOME_ADDRESS, SOME_TOKEN_URI } from "../../helpers/constants"; +import { SOME_ADDRESS, SOME_TOKEN_URI } from "../helpers/constants"; import { expectRevert, expectEvent } from "@openzeppelin/test-helpers"; const ERC721Factory = artifacts.require("ERC721Factory.sol"); diff --git a/test/dxvote/PermissionRegistry.js b/test/utils/PermissionRegistry.js similarity index 100% rename from test/dxvote/PermissionRegistry.js rename to test/utils/PermissionRegistry.js From f44b23e7cd8b1dd1840e07ce38aa425df45bf23f Mon Sep 17 00:00:00 2001 From: AugustoL Date: Thu, 22 Sep 2022 09:49:27 -0300 Subject: [PATCH 11/33] chore(package.json): some dependencies updated --- package.json | 7 +- yarn.lock | 13087 ++++++++++++++++--------------------------------- 2 files changed, 4156 insertions(+), 8938 deletions(-) diff --git a/package.json b/package.json index de38194f..67d79905 100644 --- a/package.json +++ b/package.json @@ -30,7 +30,7 @@ "@nomiclabs/buidler": "^1.4.8", "@nomiclabs/hardhat-ethers": "^2.0.2", "@nomiclabs/hardhat-etherscan": "^2.1.1", - "@nomiclabs/hardhat-truffle5": "^2.0.0", + "@nomiclabs/hardhat-truffle5": "^2.0.7", "@nomiclabs/hardhat-web3": "^2.0.0", "@openzeppelin/contract-loader": "^0.6.1", "@openzeppelin/hardhat-upgrades": "^1.6.0", @@ -53,7 +53,7 @@ "eslint-plugin-standard": "^3.0.1", "ethereumjs-abi": "^0.6.5", "ethers": "^5.1.0", - "hardhat": "^2.6.8", + "hardhat": "^2.11.2", "hardhat-contract-sizer": "^2.5.1", "hardhat-dependency-compiler": "^1.1.1", "hardhat-gas-reporter": "^1.0.4", @@ -93,7 +93,8 @@ "openzeppelin-solidity": "2.4.0", "prettier": "^2.0.5", "prettier-plugin-solidity": "^1.0.0-beta.19", - "truffle-flattener": "^1.4.4" + "truffle-flattener": "^1.4.4", + "web3": "^1.8.0" }, "peerDependencies": { "ganache-cli": "^6.4.1" diff --git a/yarn.lock b/yarn.lock index 893437b2..6abbfafe 100644 --- a/yarn.lock +++ b/yarn.lock @@ -2,37 +2,10 @@ # 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.4.16" - resolved "https://registry.yarnpkg.com/@apollo/client/-/client-3.4.16.tgz#67090d5655aa843fa64d26f1913315e384a5fa0f" - integrity sha512-iF4zEYwvebkri0BZQyv8zfavPfVEafsK0wkOofa6eC2yZu50J18uTutKtC174rjHZ2eyxZ8tV7NvAPKRT+OtZw== - dependencies: - "@graphql-typed-document-node/core" "^3.0.0" - "@wry/context" "^0.6.0" - "@wry/equality" "^0.5.0" - "@wry/trie" "^0.3.0" - graphql-tag "^2.12.3" - hoist-non-react-statics "^3.3.2" - optimism "^0.16.1" - prop-types "^15.7.2" - symbol-observable "^4.0.0" - ts-invariant "^0.9.0" - tslib "^2.3.0" - zen-observable-ts "~1.1.0" - -"@apollo/protobufjs@1.2.2": - version "1.2.2" - resolved "https://registry.yarnpkg.com/@apollo/protobufjs/-/protobufjs-1.2.2.tgz#4bd92cd7701ccaef6d517cdb75af2755f049f87c" - integrity sha512-vF+zxhPiLtkwxONs6YanSt1EpwpGilThpneExUN5K3tCymuxNnVq2yojTvnpRjv2QfsEIt/n7ozPIIzBLwGIDQ== +"@apollo/protobufjs@1.2.4": + version "1.2.4" + resolved "https://registry.yarnpkg.com/@apollo/protobufjs/-/protobufjs-1.2.4.tgz#d913e7627210ec5efd758ceeb751c776c68ba133" + integrity sha512-npVJ9NVU/pynj+SCU+fambvTneJDyCnif738DnZ7pCxdDtzeEz7WkpSIq5wNUmWm5Td55N+S2xfqZ+WP4hDLng== dependencies: "@protobufjs/aspromise" "^1.1.2" "@protobufjs/base64" "^1.1.2" @@ -48,37 +21,69 @@ "@types/node" "^10.1.0" long "^4.0.0" -"@apollographql/apollo-tools@^0.5.0": - version "0.5.1" - resolved "https://registry.yarnpkg.com/@apollographql/apollo-tools/-/apollo-tools-0.5.1.tgz#f0baef739ff7e2fafcb8b98ad29f6ac817e53e32" - integrity sha512-ZII+/xUFfb9ezDU2gad114+zScxVFMVlZ91f8fGApMzlS1kkqoyLnC4AJaQ1Ya/X+b63I20B4Gd+eCL8QuB4sA== +"@apollo/utils.dropunuseddefinitions@^1.1.0": + version "1.1.0" + resolved "https://registry.yarnpkg.com/@apollo/utils.dropunuseddefinitions/-/utils.dropunuseddefinitions-1.1.0.tgz#02b04006442eaf037f4c4624146b12775d70d929" + integrity sha512-jU1XjMr6ec9pPoL+BFWzEPW7VHHulVdGKMkPAMiCigpVIT11VmCbnij0bWob8uS3ODJ65tZLYKAh/55vLw2rbg== -"@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== +"@apollo/utils.keyvaluecache@^1.0.1": + version "1.0.1" + resolved "https://registry.yarnpkg.com/@apollo/utils.keyvaluecache/-/utils.keyvaluecache-1.0.1.tgz#46f310f859067efe9fa126156c6954f8381080d2" + integrity sha512-nLgYLomqjVimEzQ4cdvVQkcryi970NDvcRVPfd0OPeXhBfda38WjBq+WhQFk+czSHrmrSp34YHBxpat0EtiowA== dependencies: - xss "^1.0.8" + "@apollo/utils.logger" "^1.0.0" + lru-cache "^7.10.1" -"@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== +"@apollo/utils.logger@^1.0.0": + version "1.0.0" + resolved "https://registry.yarnpkg.com/@apollo/utils.logger/-/utils.logger-1.0.0.tgz#6e3460a2250c2ef7c2c3b0be6b5e148a1596f12b" + integrity sha512-dx9XrjyisD2pOa+KsB5RcDbWIAdgC91gJfeyLCgy0ctJMjQe7yZK5kdWaWlaOoCeX0z6YI9iYlg7vMPyMpQF3Q== + +"@apollo/utils.printwithreducedwhitespace@^1.1.0": + version "1.1.0" + resolved "https://registry.yarnpkg.com/@apollo/utils.printwithreducedwhitespace/-/utils.printwithreducedwhitespace-1.1.0.tgz#c466299a4766eef8577a2a64c8f27712e8bd7e30" + integrity sha512-GfFSkAv3n1toDZ4V6u2d7L4xMwLA+lv+6hqXicMN9KELSJ9yy9RzuEXaX73c/Ry+GzRsBy/fdSUGayGqdHfT2Q== + +"@apollo/utils.removealiases@1.0.0": + version "1.0.0" + resolved "https://registry.yarnpkg.com/@apollo/utils.removealiases/-/utils.removealiases-1.0.0.tgz#75f6d83098af1fcae2d3beb4f515ad4a8452a8c1" + integrity sha512-6cM8sEOJW2LaGjL/0vHV0GtRaSekrPQR4DiywaApQlL9EdROASZU5PsQibe2MWeZCOhNrPRuHh4wDMwPsWTn8A== + +"@apollo/utils.sortast@^1.1.0": + version "1.1.0" + resolved "https://registry.yarnpkg.com/@apollo/utils.sortast/-/utils.sortast-1.1.0.tgz#93218c7008daf3e2a0725196085a33f5aab5ad07" + integrity sha512-VPlTsmUnOwzPK5yGZENN069y6uUHgeiSlpEhRnLFYwYNoJHsuJq2vXVwIaSmts015WTPa2fpz1inkLYByeuRQA== dependencies: - tslib "~2.0.1" + lodash.sortby "^4.7.0" + +"@apollo/utils.stripsensitiveliterals@^1.2.0": + version "1.2.0" + resolved "https://registry.yarnpkg.com/@apollo/utils.stripsensitiveliterals/-/utils.stripsensitiveliterals-1.2.0.tgz#4920651f36beee8e260e12031a0c5863ad0c7b28" + integrity sha512-E41rDUzkz/cdikM5147d8nfCFVKovXxKBcjvLEQ7bjZm/cg9zEcXvS6vFY8ugTubI3fn6zoqo0CyU8zT+BGP9w== + +"@apollo/utils.usagereporting@^1.0.0": + version "1.0.0" + resolved "https://registry.yarnpkg.com/@apollo/utils.usagereporting/-/utils.usagereporting-1.0.0.tgz#b81df180f4ca78b91a22cb49105174a7f070db1e" + integrity sha512-5PL7hJMkTPmdo3oxPtigRrIyPxDk/ddrUryHPDaezL1lSFExpNzsDd2f1j0XJoHOg350GRd3LyD64caLA2PU1w== + dependencies: + "@apollo/utils.dropunuseddefinitions" "^1.1.0" + "@apollo/utils.printwithreducedwhitespace" "^1.1.0" + "@apollo/utils.removealiases" "1.0.0" + "@apollo/utils.sortast" "^1.1.0" + "@apollo/utils.stripsensitiveliterals" "^1.2.0" + apollo-reporting-protobuf "^3.3.1" + +"@apollographql/apollo-tools@^0.5.3": + version "0.5.4" + resolved "https://registry.yarnpkg.com/@apollographql/apollo-tools/-/apollo-tools-0.5.4.tgz#cb3998c6cf12e494b90c733f44dd9935e2d8196c" + integrity sha512-shM3q7rUbNyXVVRkQJQseXv6bnYM3BUma/eZhwXR4xsuM+bqWnJKvW7SAfRjP7LuSCocrexa5AXhjjawNHrIlw== + +"@apollographql/graphql-playground-html@1.6.29": + version "1.6.29" + resolved "https://registry.yarnpkg.com/@apollographql/graphql-playground-html/-/graphql-playground-html-1.6.29.tgz#a7a646614a255f62e10dcf64a7f68ead41dec453" + integrity sha512-xCcXpoz52rI4ksJSdOCxeOCn2DLocxwHf9dVT/Q90Pte1LX+LY+91SFtJF3KXVHH8kEin+g1KKCQPKBjZJfWNA== + dependencies: + xss "^1.0.8" "@assemblyscript/loader@^0.9.4": version "0.9.4" @@ -86,608 +91,126 @@ integrity sha512-HazVq9zwTVwGmqdwYzu7WyQ6FQVZ7SwET0KKQuKm55jD0IfUpZgN0OPIiZG3zV1iSrVYcN0bdwLRXI/VNCYsUA== "@babel/cli@^7.10.1": - version "7.16.0" - resolved "https://registry.yarnpkg.com/@babel/cli/-/cli-7.16.0.tgz#a729b7a48eb80b49f48a339529fc4129fd7bcef3" - integrity sha512-WLrM42vKX/4atIoQB+eb0ovUof53UUvecb4qGjU2PDDWRiZr50ZpiV8NpcLo7iSxeGYrRG0Mqembsa+UrTAV6Q== + version "7.18.10" + resolved "https://registry.yarnpkg.com/@babel/cli/-/cli-7.18.10.tgz#4211adfc45ffa7d4f3cee6b60bb92e9fe68fe56a" + integrity sha512-dLvWH+ZDFAkd2jPBSghrsFBuXrREvFwjpDycXbmUoeochqKYe4zNSLEJYErpLg8dvxvZYe79/MkN461XCwpnGw== dependencies: + "@jridgewell/trace-mapping" "^0.3.8" commander "^4.0.1" convert-source-map "^1.1.0" fs-readdir-recursive "^1.1.0" - glob "^7.0.0" + glob "^7.2.0" make-dir "^2.1.0" slash "^2.0.0" - source-map "^0.5.0" optionalDependencies: "@nicolo-ribaudo/chokidar-2" "2.1.8-no-fsevents.3" chokidar "^3.4.0" -"@babel/code-frame@^7.0.0", "@babel/code-frame@^7.12.13", "@babel/code-frame@^7.15.8": - version "7.15.8" - resolved "https://registry.yarnpkg.com/@babel/code-frame/-/code-frame-7.15.8.tgz#45990c47adadb00c03677baa89221f7cc23d2503" - integrity sha512-2IAnmn8zbvC/jKYhq5Ki9I+DwjlrtMPUCH/CpHvqI4dNnlwHwsxoIhlc8WcYY5LSYknXQtAlFYuHfqAFCvQ4Wg== - dependencies: - "@babel/highlight" "^7.14.5" - -"@babel/code-frame@^7.14.5", "@babel/code-frame@^7.16.0": - version "7.16.0" - resolved "https://registry.yarnpkg.com/@babel/code-frame/-/code-frame-7.16.0.tgz#0dfc80309beec8411e65e706461c408b0bb9b431" - integrity sha512-IF4EOMEV+bfYwOmNxGzSnjR2EmQod7f1UXOpZM3l4i4o4QNwzjtJAu/HxdjHq0aYBvdqMuQEY1eg0nqW9ZPORA== - dependencies: - "@babel/highlight" "^7.16.0" - -"@babel/compat-data@^7.13.11", "@babel/compat-data@^7.15.0", "@babel/compat-data@^7.16.0": - version "7.16.0" - resolved "https://registry.yarnpkg.com/@babel/compat-data/-/compat-data-7.16.0.tgz#ea269d7f78deb3a7826c39a4048eecda541ebdaa" - integrity sha512-DGjt2QZse5SGd9nfOSqO4WLJ8NN/oHkijbXbPrxuoJO3oIPJL3TciZs9FX+cOHNiY9E9l0opL8g7BmLe3T+9ew== - -"@babel/core@^7.0.0": - version "7.15.8" - resolved "https://registry.yarnpkg.com/@babel/core/-/core-7.15.8.tgz#195b9f2bffe995d2c6c159e72fe525b4114e8c10" - integrity sha512-3UG9dsxvYBMYwRv+gS41WKHno4K60/9GPy1CJaH6xy3Elq8CTtvtjT5R5jmNhXfCYLX2mTw+7/aq5ak/gOE0og== - dependencies: - "@babel/code-frame" "^7.15.8" - "@babel/generator" "^7.15.8" - "@babel/helper-compilation-targets" "^7.15.4" - "@babel/helper-module-transforms" "^7.15.8" - "@babel/helpers" "^7.15.4" - "@babel/parser" "^7.15.8" - "@babel/template" "^7.15.4" - "@babel/traverse" "^7.15.4" - "@babel/types" "^7.15.6" - convert-source-map "^1.7.0" - debug "^4.1.0" - gensync "^1.0.0-beta.2" - json5 "^2.1.2" - semver "^6.3.0" - source-map "^0.5.0" - -"@babel/eslint-parser@^7.17.0": - version "7.17.0" - resolved "https://registry.yarnpkg.com/@babel/eslint-parser/-/eslint-parser-7.17.0.tgz#eabb24ad9f0afa80e5849f8240d0e5facc2d90d6" - integrity sha512-PUEJ7ZBXbRkbq3qqM/jZ2nIuakUBqCYc7Qf52Lj7dlZ6zERnqisdHioL0l4wwQZnmskMeasqUNzLBFKs3nylXA== - dependencies: - eslint-scope "^5.1.1" - eslint-visitor-keys "^2.1.0" - semver "^6.3.0" - -"@babel/generator@^7.12.13", "@babel/generator@^7.15.8", "@babel/generator@^7.5.0": - version "7.15.8" - resolved "https://registry.yarnpkg.com/@babel/generator/-/generator-7.15.8.tgz#fa56be6b596952ceb231048cf84ee499a19c0cd1" - integrity sha512-ECmAKstXbp1cvpTTZciZCgfOt6iN64lR0d+euv3UZisU5awfRawOvg07Utn/qBGuH4bRIEZKrA/4LzZyXhZr8g== - dependencies: - "@babel/types" "^7.15.6" - jsesc "^2.5.1" - source-map "^0.5.0" - -"@babel/generator@^7.15.4", "@babel/generator@^7.16.0": - version "7.16.0" - resolved "https://registry.yarnpkg.com/@babel/generator/-/generator-7.16.0.tgz#d40f3d1d5075e62d3500bccb67f3daa8a95265b2" - integrity sha512-RR8hUCfRQn9j9RPKEVXo9LiwoxLPYn6hNZlvUOR8tSnaxlD0p0+la00ZP9/SnRt6HchKr+X0fO2r8vrETiJGew== +"@babel/code-frame@^7.0.0": + version "7.18.6" + resolved "https://registry.yarnpkg.com/@babel/code-frame/-/code-frame-7.18.6.tgz#3b25d38c89600baa2dcc219edfa88a74eb2c427a" + integrity sha512-TDCmlK5eOvH+eH7cdAFlNXeVJqWIQ7gW9tY1GJIpUtFb6CmjVyq2VM3u71bOyR8CRihcCgMUYoDNyLXao3+70Q== dependencies: - "@babel/types" "^7.16.0" - jsesc "^2.5.1" - source-map "^0.5.0" + "@babel/highlight" "^7.18.6" -"@babel/helper-annotate-as-pure@^7.14.5", "@babel/helper-annotate-as-pure@^7.15.4": - version "7.15.4" - resolved "https://registry.yarnpkg.com/@babel/helper-annotate-as-pure/-/helper-annotate-as-pure-7.15.4.tgz#3d0e43b00c5e49fdb6c57e421601a7a658d5f835" - integrity sha512-QwrtdNvUNsPCj2lfNQacsGSQvGX8ee1ttrBrcozUP2Sv/jylewBP/8QFe6ZkBsC8T/GYWonNAWJV4aRR9AL2DA== - dependencies: - "@babel/types" "^7.15.4" +"@babel/compat-data@^7.17.7", "@babel/compat-data@^7.19.1": + version "7.19.1" + resolved "https://registry.yarnpkg.com/@babel/compat-data/-/compat-data-7.19.1.tgz#72d647b4ff6a4f82878d184613353af1dd0290f9" + integrity sha512-72a9ghR0gnESIa7jBN53U32FOVCEoztyIlKaNoU05zRhEecduGK9L9c3ww7Mp06JiR+0ls0GBPFJQwwtjn9ksg== -"@babel/helper-compilation-targets@^7.13.0": - version "7.16.3" - resolved "https://registry.yarnpkg.com/@babel/helper-compilation-targets/-/helper-compilation-targets-7.16.3.tgz#5b480cd13f68363df6ec4dc8ac8e2da11363cbf0" - integrity sha512-vKsoSQAyBmxS35JUOOt+07cLc6Nk/2ljLIHwmq2/NM6hdioUaqEXq/S+nXvbvXbZkNDlWOymPanJGOc4CBjSJA== +"@babel/eslint-parser@^7.17.0": + version "7.19.1" + resolved "https://registry.yarnpkg.com/@babel/eslint-parser/-/eslint-parser-7.19.1.tgz#4f68f6b0825489e00a24b41b6a1ae35414ecd2f4" + integrity sha512-AqNf2QWt1rtu2/1rLswy6CDP7H9Oh3mMhk177Y67Rg8d7RD9WfOLLv8CGn6tisFvS2htm86yIe1yLF6I1UDaGQ== dependencies: - "@babel/compat-data" "^7.16.0" - "@babel/helper-validator-option" "^7.14.5" - browserslist "^4.17.5" + "@nicolo-ribaudo/eslint-scope-5-internals" "5.1.1-v1" + eslint-visitor-keys "^2.1.0" semver "^6.3.0" -"@babel/helper-compilation-targets@^7.15.4": - version "7.15.4" - resolved "https://registry.yarnpkg.com/@babel/helper-compilation-targets/-/helper-compilation-targets-7.15.4.tgz#cf6d94f30fbefc139123e27dd6b02f65aeedb7b9" - integrity sha512-rMWPCirulnPSe4d+gwdWXLfAXTTBj8M3guAf5xFQJ0nvFY7tfNAFnWdqaHegHlgDZOCT4qvhF3BYlSJag8yhqQ== +"@babel/helper-compilation-targets@^7.17.7": + version "7.19.1" + resolved "https://registry.yarnpkg.com/@babel/helper-compilation-targets/-/helper-compilation-targets-7.19.1.tgz#7f630911d83b408b76fe584831c98e5395d7a17c" + integrity sha512-LlLkkqhCMyz2lkQPvJNdIYU7O5YjWRgC2R4omjCTpZd8u8KMQzZvX4qce+/BluN1rcQiV7BoGUpmQ0LeHerbhg== dependencies: - "@babel/compat-data" "^7.15.0" - "@babel/helper-validator-option" "^7.14.5" - browserslist "^4.16.6" + "@babel/compat-data" "^7.19.1" + "@babel/helper-validator-option" "^7.18.6" + browserslist "^4.21.3" semver "^6.3.0" -"@babel/helper-create-class-features-plugin@^7.14.5": - version "7.15.4" - resolved "https://registry.yarnpkg.com/@babel/helper-create-class-features-plugin/-/helper-create-class-features-plugin-7.15.4.tgz#7f977c17bd12a5fba363cb19bea090394bf37d2e" - integrity sha512-7ZmzFi+DwJx6A7mHRwbuucEYpyBwmh2Ca0RvI6z2+WLZYCqV0JOaLb+u0zbtmDicebgKBZgqbYfLaKNqSgv5Pw== - dependencies: - "@babel/helper-annotate-as-pure" "^7.15.4" - "@babel/helper-function-name" "^7.15.4" - "@babel/helper-member-expression-to-functions" "^7.15.4" - "@babel/helper-optimise-call-expression" "^7.15.4" - "@babel/helper-replace-supers" "^7.15.4" - "@babel/helper-split-export-declaration" "^7.15.4" - -"@babel/helper-define-polyfill-provider@^0.2.4": - version "0.2.4" - resolved "https://registry.yarnpkg.com/@babel/helper-define-polyfill-provider/-/helper-define-polyfill-provider-0.2.4.tgz#8867aed79d3ea6cade40f801efb7ac5c66916b10" - integrity sha512-OrpPZ97s+aPi6h2n1OXzdhVis1SGSsMU2aMHgLcOKfsp4/v1NWpx3CWT3lBj5eeBq9cDkPkh+YCfdF7O12uNDQ== +"@babel/helper-define-polyfill-provider@^0.3.3": + version "0.3.3" + resolved "https://registry.yarnpkg.com/@babel/helper-define-polyfill-provider/-/helper-define-polyfill-provider-0.3.3.tgz#8612e55be5d51f0cd1f36b4a5a83924e89884b7a" + integrity sha512-z5aQKU4IzbqCC1XH0nAqfsFLMVSo22SBKUc0BxGrLkolTdPTructy0ToNnlO2zA4j9Q/7pjMZf0DSY+DSTYzww== dependencies: - "@babel/helper-compilation-targets" "^7.13.0" - "@babel/helper-module-imports" "^7.12.13" - "@babel/helper-plugin-utils" "^7.13.0" - "@babel/traverse" "^7.13.0" + "@babel/helper-compilation-targets" "^7.17.7" + "@babel/helper-plugin-utils" "^7.16.7" debug "^4.1.1" lodash.debounce "^4.0.8" resolve "^1.14.2" semver "^6.1.2" -"@babel/helper-function-name@^7.12.13", "@babel/helper-function-name@^7.14.5": - version "7.15.4" - resolved "https://registry.yarnpkg.com/@babel/helper-function-name/-/helper-function-name-7.15.4.tgz#845744dafc4381a4a5fb6afa6c3d36f98a787ebc" - integrity sha512-Z91cOMM4DseLIGOnog+Z8OI6YseR9bua+HpvLAQ2XayUGU+neTtX+97caALaLdyu53I/fjhbeCnWnRH1O3jFOw== - dependencies: - "@babel/helper-get-function-arity" "^7.15.4" - "@babel/template" "^7.15.4" - "@babel/types" "^7.15.4" - -"@babel/helper-function-name@^7.15.4", "@babel/helper-function-name@^7.16.0": - version "7.16.0" - resolved "https://registry.yarnpkg.com/@babel/helper-function-name/-/helper-function-name-7.16.0.tgz#b7dd0797d00bbfee4f07e9c4ea5b0e30c8bb1481" - integrity sha512-BZh4mEk1xi2h4HFjWUXRQX5AEx4rvaZxHgax9gcjdLWdkjsY7MKt5p0otjsg5noXw+pB+clMCjw+aEVYADMjog== - dependencies: - "@babel/helper-get-function-arity" "^7.16.0" - "@babel/template" "^7.16.0" - "@babel/types" "^7.16.0" - -"@babel/helper-get-function-arity@^7.15.4", "@babel/helper-get-function-arity@^7.16.0": - version "7.16.0" - resolved "https://registry.yarnpkg.com/@babel/helper-get-function-arity/-/helper-get-function-arity-7.16.0.tgz#0088c7486b29a9cb5d948b1a1de46db66e089cfa" - integrity sha512-ASCquNcywC1NkYh/z7Cgp3w31YW8aojjYIlNg4VeJiHkqyP4AzIvr4qx7pYDb4/s8YcsZWqqOSxgkvjUz1kpDQ== +"@babel/helper-module-imports@^7.18.6": + version "7.18.6" + resolved "https://registry.yarnpkg.com/@babel/helper-module-imports/-/helper-module-imports-7.18.6.tgz#1e3ebdbbd08aad1437b428c50204db13c5a3ca6e" + integrity sha512-0NFvs3VkuSYbFi1x2Vd6tKrywq+z/cLeYC/RJNFrIX/30Bf5aiGYbtvGXolEktzJH8o5E5KJ3tT+nkxuuZFVlA== dependencies: - "@babel/types" "^7.16.0" + "@babel/types" "^7.18.6" -"@babel/helper-hoist-variables@^7.15.4", "@babel/helper-hoist-variables@^7.16.0": - version "7.16.0" - resolved "https://registry.yarnpkg.com/@babel/helper-hoist-variables/-/helper-hoist-variables-7.16.0.tgz#4c9023c2f1def7e28ff46fc1dbcd36a39beaa81a" - integrity sha512-1AZlpazjUR0EQZQv3sgRNfM9mEVWPK3M6vlalczA+EECcPz3XPh6VplbErL5UoMpChhSck5wAJHthlj1bYpcmg== - dependencies: - "@babel/types" "^7.16.0" +"@babel/helper-plugin-utils@^7.16.7", "@babel/helper-plugin-utils@^7.19.0": + version "7.19.0" + resolved "https://registry.yarnpkg.com/@babel/helper-plugin-utils/-/helper-plugin-utils-7.19.0.tgz#4796bb14961521f0f8715990bee2fb6e51ce21bf" + integrity sha512-40Ryx7I8mT+0gaNxm8JGTZFUITNqdLAgdg0hXzeVZxVD6nFsdhQvip6v8dqkRHzsz1VFpFAaOCHNn0vKBL7Czw== -"@babel/helper-member-expression-to-functions@^7.15.4": - version "7.15.4" - resolved "https://registry.yarnpkg.com/@babel/helper-member-expression-to-functions/-/helper-member-expression-to-functions-7.15.4.tgz#bfd34dc9bba9824a4658b0317ec2fd571a51e6ef" - integrity sha512-cokOMkxC/BTyNP1AlY25HuBWM32iCEsLPI4BHDpJCHHm1FU2E7dKWWIXJgQgSFiu4lp8q3bL1BIKwqkSUviqtA== - dependencies: - "@babel/types" "^7.15.4" - -"@babel/helper-module-imports@^7.12.13", "@babel/helper-module-imports@^7.15.4", "@babel/helper-module-imports@^7.16.0": - version "7.16.0" - resolved "https://registry.yarnpkg.com/@babel/helper-module-imports/-/helper-module-imports-7.16.0.tgz#90538e60b672ecf1b448f5f4f5433d37e79a3ec3" - integrity sha512-kkH7sWzKPq0xt3H1n+ghb4xEMP8k0U7XV3kkB+ZGy69kDk2ySFW1qPi06sjKzFY3t1j6XbJSqr4mF9L7CYVyhg== - dependencies: - "@babel/types" "^7.16.0" +"@babel/helper-string-parser@^7.18.10": + version "7.18.10" + resolved "https://registry.yarnpkg.com/@babel/helper-string-parser/-/helper-string-parser-7.18.10.tgz#181f22d28ebe1b3857fa575f5c290b1aaf659b56" + integrity sha512-XtIfWmeNY3i4t7t4D2t02q50HvqHybPqW2ki1kosnvWCwuCMeo81Jf0gwr85jy/neUdg5XDdeFE/80DXiO+njw== -"@babel/helper-module-imports@^7.14.5": - version "7.15.4" - resolved "https://registry.yarnpkg.com/@babel/helper-module-imports/-/helper-module-imports-7.15.4.tgz#e18007d230632dea19b47853b984476e7b4e103f" - integrity sha512-jeAHZbzUwdW/xHgHQ3QmWR4Jg6j15q4w/gCfwZvtqOxoo5DKtLHk8Bsf4c5RZRC7NmLEs+ohkdq8jFefuvIxAA== - dependencies: - "@babel/types" "^7.15.4" +"@babel/helper-validator-identifier@^7.18.6": + version "7.19.1" + resolved "https://registry.yarnpkg.com/@babel/helper-validator-identifier/-/helper-validator-identifier-7.19.1.tgz#7eea834cf32901ffdc1a7ee555e2f9c27e249ca2" + integrity sha512-awrNfaMtnHUr653GgGEs++LlAvW6w+DcPrOliSMXWCKo597CwL5Acf/wWdNkf/tfEQE3mjkeD1YOVZOUV/od1w== -"@babel/helper-module-transforms@^7.15.4", "@babel/helper-module-transforms@^7.15.8": - version "7.15.8" - resolved "https://registry.yarnpkg.com/@babel/helper-module-transforms/-/helper-module-transforms-7.15.8.tgz#d8c0e75a87a52e374a8f25f855174786a09498b2" - integrity sha512-DfAfA6PfpG8t4S6npwzLvTUpp0sS7JrcuaMiy1Y5645laRJIp/LiLGIBbQKaXSInK8tiGNI7FL7L8UvB8gdUZg== - dependencies: - "@babel/helper-module-imports" "^7.15.4" - "@babel/helper-replace-supers" "^7.15.4" - "@babel/helper-simple-access" "^7.15.4" - "@babel/helper-split-export-declaration" "^7.15.4" - "@babel/helper-validator-identifier" "^7.15.7" - "@babel/template" "^7.15.4" - "@babel/traverse" "^7.15.4" - "@babel/types" "^7.15.6" - -"@babel/helper-optimise-call-expression@^7.15.4": - version "7.15.4" - resolved "https://registry.yarnpkg.com/@babel/helper-optimise-call-expression/-/helper-optimise-call-expression-7.15.4.tgz#f310a5121a3b9cc52d9ab19122bd729822dee171" - integrity sha512-E/z9rfbAOt1vDW1DR7k4SzhzotVV5+qMciWV6LaG1g4jeFrkDlJedjtV4h0i4Q/ITnUu+Pk08M7fczsB9GXBDw== - dependencies: - "@babel/types" "^7.15.4" - -"@babel/helper-plugin-utils@^7.12.13", "@babel/helper-plugin-utils@^7.13.0", "@babel/helper-plugin-utils@^7.14.5", "@babel/helper-plugin-utils@^7.8.0": - version "7.14.5" - resolved "https://registry.yarnpkg.com/@babel/helper-plugin-utils/-/helper-plugin-utils-7.14.5.tgz#5ac822ce97eec46741ab70a517971e443a70c5a9" - integrity sha512-/37qQCE3K0vvZKwoK4XU/irIJQdIfCJuhU5eKnNxpFDsOkgFaUAwbv+RYw6eYgsC0E4hS7r5KqGULUogqui0fQ== - -"@babel/helper-replace-supers@^7.14.5", "@babel/helper-replace-supers@^7.15.4": - version "7.15.4" - resolved "https://registry.yarnpkg.com/@babel/helper-replace-supers/-/helper-replace-supers-7.15.4.tgz#52a8ab26ba918c7f6dee28628b07071ac7b7347a" - integrity sha512-/ztT6khaXF37MS47fufrKvIsiQkx1LBRvSJNzRqmbyeZnTwU9qBxXYLaaT/6KaxfKhjs2Wy8kG8ZdsFUuWBjzw== - dependencies: - "@babel/helper-member-expression-to-functions" "^7.15.4" - "@babel/helper-optimise-call-expression" "^7.15.4" - "@babel/traverse" "^7.15.4" - "@babel/types" "^7.15.4" - -"@babel/helper-simple-access@^7.15.4": - version "7.15.4" - resolved "https://registry.yarnpkg.com/@babel/helper-simple-access/-/helper-simple-access-7.15.4.tgz#ac368905abf1de8e9781434b635d8f8674bcc13b" - integrity sha512-UzazrDoIVOZZcTeHHEPYrr1MvTR/K+wgLg6MY6e1CJyaRhbibftF6fR2KU2sFRtI/nERUZR9fBd6aKgBlIBaPg== - dependencies: - "@babel/types" "^7.15.4" +"@babel/helper-validator-option@^7.18.6": + version "7.18.6" + resolved "https://registry.yarnpkg.com/@babel/helper-validator-option/-/helper-validator-option-7.18.6.tgz#bf0d2b5a509b1f336099e4ff36e1a63aa5db4db8" + integrity sha512-XO7gESt5ouv/LRJdrVjkShckw6STTaB7l9BrpBaAHDeF5YZT+01PCwmR0SJHnkW6i8OwW/EVWRShfi4j2x+KQw== -"@babel/helper-skip-transparent-expression-wrappers@^7.15.4": - version "7.15.4" - resolved "https://registry.yarnpkg.com/@babel/helper-skip-transparent-expression-wrappers/-/helper-skip-transparent-expression-wrappers-7.15.4.tgz#707dbdba1f4ad0fa34f9114fc8197aec7d5da2eb" - integrity sha512-BMRLsdh+D1/aap19TycS4eD1qELGrCBJwzaY9IE8LrpJtJb+H7rQkPIdsfgnMtLBA6DJls7X9z93Z4U8h7xw0A== - dependencies: - "@babel/types" "^7.15.4" - -"@babel/helper-split-export-declaration@^7.12.13": - version "7.15.4" - resolved "https://registry.yarnpkg.com/@babel/helper-split-export-declaration/-/helper-split-export-declaration-7.15.4.tgz#aecab92dcdbef6a10aa3b62ab204b085f776e257" - integrity sha512-HsFqhLDZ08DxCpBdEVtKmywj6PQbwnF6HHybur0MAnkAKnlS6uHkwnmRIkElB2Owpfb4xL4NwDmDLFubueDXsw== +"@babel/highlight@^7.18.6": + version "7.18.6" + resolved "https://registry.yarnpkg.com/@babel/highlight/-/highlight-7.18.6.tgz#81158601e93e2563795adcbfbdf5d64be3f2ecdf" + integrity sha512-u7stbOuYjaPezCuLj29hNW1v64M2Md2qupEKP1fHc7WdOA3DgLh37suiSrZYY7haUB7iBeQZ9P1uiRF359do3g== dependencies: - "@babel/types" "^7.15.4" - -"@babel/helper-split-export-declaration@^7.15.4", "@babel/helper-split-export-declaration@^7.16.0": - version "7.16.0" - resolved "https://registry.yarnpkg.com/@babel/helper-split-export-declaration/-/helper-split-export-declaration-7.16.0.tgz#29672f43663e936df370aaeb22beddb3baec7438" - integrity sha512-0YMMRpuDFNGTHNRiiqJX19GjNXA4H0E8jZ2ibccfSxaCogbm3am5WN/2nQNj0YnQwGWM1J06GOcQ2qnh3+0paw== - dependencies: - "@babel/types" "^7.16.0" - -"@babel/helper-validator-identifier@^7.12.11", "@babel/helper-validator-identifier@^7.14.9", "@babel/helper-validator-identifier@^7.15.7": - version "7.15.7" - resolved "https://registry.yarnpkg.com/@babel/helper-validator-identifier/-/helper-validator-identifier-7.15.7.tgz#220df993bfe904a4a6b02ab4f3385a5ebf6e2389" - integrity sha512-K4JvCtQqad9OY2+yTU8w+E82ywk/fe+ELNlt1G8z3bVGlZfn/hOcQQsUhGhW/N+tb3fxK800wLtKOE/aM0m72w== - -"@babel/helper-validator-option@^7.14.5": - version "7.14.5" - resolved "https://registry.yarnpkg.com/@babel/helper-validator-option/-/helper-validator-option-7.14.5.tgz#6e72a1fff18d5dfcb878e1e62f1a021c4b72d5a3" - integrity sha512-OX8D5eeX4XwcroVW45NMvoYaIuFI+GQpA2a8Gi+X/U/cDUIRsV37qQfF905F0htTRCREQIB4KqPeaveRJUl3Ow== - -"@babel/helpers@^7.15.4": - version "7.15.4" - resolved "https://registry.yarnpkg.com/@babel/helpers/-/helpers-7.15.4.tgz#5f40f02050a3027121a3cf48d497c05c555eaf43" - integrity sha512-V45u6dqEJ3w2rlryYYXf6i9rQ5YMNu4FLS6ngs8ikblhu2VdR1AqAd6aJjBzmf2Qzh6KOLqKHxEN9+TFbAkAVQ== - dependencies: - "@babel/template" "^7.15.4" - "@babel/traverse" "^7.15.4" - "@babel/types" "^7.15.4" - -"@babel/highlight@^7.14.5", "@babel/highlight@^7.16.0": - version "7.16.0" - resolved "https://registry.yarnpkg.com/@babel/highlight/-/highlight-7.16.0.tgz#6ceb32b2ca4b8f5f361fb7fd821e3fddf4a1725a" - integrity sha512-t8MH41kUQylBtu2+4IQA3atqevA2lRgqA2wyVB/YiWmsDSuylZZuXOUy9ric30hfzauEFfdsuk/eXTRrGrfd0g== - dependencies: - "@babel/helper-validator-identifier" "^7.15.7" + "@babel/helper-validator-identifier" "^7.18.6" chalk "^2.0.0" 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.15.8": - version "7.15.8" - resolved "https://registry.yarnpkg.com/@babel/parser/-/parser-7.15.8.tgz#7bacdcbe71bdc3ff936d510c15dcea7cf0b99016" - integrity sha512-BRYa3wcQnjS/nqI8Ac94pYYpJfojHVvVXJ97+IDCImX4Jc8W8Xv1+47enbruk+q1etOpsQNwnfFcNGw+gtPGxA== - -"@babel/parser@^7.15.4", "@babel/parser@^7.16.0", "@babel/parser@^7.16.3": - version "7.16.3" - resolved "https://registry.yarnpkg.com/@babel/parser/-/parser-7.16.3.tgz#271bafcb811080905a119222edbc17909c82261d" - integrity sha512-dcNwU1O4sx57ClvLBVFbEgx0UZWfd0JQX5X6fxFRCLHelFBGXFfSz6Y0FAq2PEwUqlqLkdVjVr4VASEOuUnLJw== - -"@babel/plugin-proposal-class-properties@^7.0.0": - version "7.14.5" - resolved "https://registry.yarnpkg.com/@babel/plugin-proposal-class-properties/-/plugin-proposal-class-properties-7.14.5.tgz#40d1ee140c5b1e31a350f4f5eed945096559b42e" - integrity sha512-q/PLpv5Ko4dVc1LYMpCY7RVAAO4uk55qPwrIuJ5QJ8c6cVuAmhu7I/49JOppXL6gXf7ZHzpRVEUZdYoPLM04Gg== - dependencies: - "@babel/helper-create-class-features-plugin" "^7.14.5" - "@babel/helper-plugin-utils" "^7.14.5" - -"@babel/plugin-proposal-object-rest-spread@^7.0.0": - version "7.15.6" - resolved "https://registry.yarnpkg.com/@babel/plugin-proposal-object-rest-spread/-/plugin-proposal-object-rest-spread-7.15.6.tgz#ef68050c8703d07b25af402cb96cf7f34a68ed11" - integrity sha512-qtOHo7A1Vt+O23qEAX+GdBpqaIuD3i9VRrWgCJeq7WO6H2d14EK3q11urj5Te2MAeK97nMiIdRpwd/ST4JFbNg== - dependencies: - "@babel/compat-data" "^7.15.0" - "@babel/helper-compilation-targets" "^7.15.4" - "@babel/helper-plugin-utils" "^7.14.5" - "@babel/plugin-syntax-object-rest-spread" "^7.8.3" - "@babel/plugin-transform-parameters" "^7.15.4" - -"@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.14.5": - version "7.14.5" - resolved "https://registry.yarnpkg.com/@babel/plugin-syntax-flow/-/plugin-syntax-flow-7.14.5.tgz#2ff654999497d7d7d142493260005263731da180" - integrity sha512-9WK5ZwKCdWHxVuU13XNT6X73FGmutAXeor5lGFq6qhOFtMFUF4jkbijuyUdZZlpYq6E2hZeZf/u3959X9wsv0Q== - dependencies: - "@babel/helper-plugin-utils" "^7.14.5" - -"@babel/plugin-syntax-jsx@^7.0.0", "@babel/plugin-syntax-jsx@^7.14.5": - version "7.14.5" - resolved "https://registry.yarnpkg.com/@babel/plugin-syntax-jsx/-/plugin-syntax-jsx-7.14.5.tgz#000e2e25d8673cce49300517a3eda44c263e4201" - integrity sha512-ohuFIsOMXJnbOMRfX7/w7LocdR6R7whhuRD4ax8IipLcLPlZGJKkBxgHp++U4N/vKyU16/YDQr2f5seajD3jIw== - dependencies: - "@babel/helper-plugin-utils" "^7.14.5" - -"@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.14.5" - resolved "https://registry.yarnpkg.com/@babel/plugin-transform-arrow-functions/-/plugin-transform-arrow-functions-7.14.5.tgz#f7187d9588a768dd080bf4c9ffe117ea62f7862a" - integrity sha512-KOnO0l4+tD5IfOdi4x8C1XmEIRWUjNRV8wc6K2vz/3e8yAOoZZvsRXRRIF/yo/MAOFb4QjtAw9xSxMXbSMRy8A== - dependencies: - "@babel/helper-plugin-utils" "^7.14.5" - -"@babel/plugin-transform-block-scoped-functions@^7.0.0": - version "7.14.5" - resolved "https://registry.yarnpkg.com/@babel/plugin-transform-block-scoped-functions/-/plugin-transform-block-scoped-functions-7.14.5.tgz#e48641d999d4bc157a67ef336aeb54bc44fd3ad4" - integrity sha512-dtqWqdWZ5NqBX3KzsVCWfQI3A53Ft5pWFCT2eCVUftWZgjc5DpDponbIF1+c+7cSGk2wN0YK7HGL/ezfRbpKBQ== - dependencies: - "@babel/helper-plugin-utils" "^7.14.5" - -"@babel/plugin-transform-block-scoping@^7.0.0": - version "7.15.3" - resolved "https://registry.yarnpkg.com/@babel/plugin-transform-block-scoping/-/plugin-transform-block-scoping-7.15.3.tgz#94c81a6e2fc230bcce6ef537ac96a1e4d2b3afaf" - integrity sha512-nBAzfZwZb4DkaGtOes1Up1nOAp9TDRRFw4XBzBBSG9QK7KVFmYzgj9o9sbPv7TX5ofL4Auq4wZnxCoPnI/lz2Q== - dependencies: - "@babel/helper-plugin-utils" "^7.14.5" - -"@babel/plugin-transform-classes@^7.0.0": - version "7.15.4" - resolved "https://registry.yarnpkg.com/@babel/plugin-transform-classes/-/plugin-transform-classes-7.15.4.tgz#50aee17aaf7f332ae44e3bce4c2e10534d5d3bf1" - integrity sha512-Yjvhex8GzBmmPQUvpXRPWQ9WnxXgAFuZSrqOK/eJlOGIXwvv8H3UEdUigl1gb/bnjTrln+e8bkZUYCBt/xYlBg== - dependencies: - "@babel/helper-annotate-as-pure" "^7.15.4" - "@babel/helper-function-name" "^7.15.4" - "@babel/helper-optimise-call-expression" "^7.15.4" - "@babel/helper-plugin-utils" "^7.14.5" - "@babel/helper-replace-supers" "^7.15.4" - "@babel/helper-split-export-declaration" "^7.15.4" - globals "^11.1.0" - -"@babel/plugin-transform-computed-properties@^7.0.0": - version "7.14.5" - resolved "https://registry.yarnpkg.com/@babel/plugin-transform-computed-properties/-/plugin-transform-computed-properties-7.14.5.tgz#1b9d78987420d11223d41195461cc43b974b204f" - integrity sha512-pWM+E4283UxaVzLb8UBXv4EIxMovU4zxT1OPnpHJcmnvyY9QbPPTKZfEj31EUvG3/EQRbYAGaYEUZ4yWOBC2xg== - dependencies: - "@babel/helper-plugin-utils" "^7.14.5" - -"@babel/plugin-transform-destructuring@^7.0.0": - version "7.14.7" - resolved "https://registry.yarnpkg.com/@babel/plugin-transform-destructuring/-/plugin-transform-destructuring-7.14.7.tgz#0ad58ed37e23e22084d109f185260835e5557576" - integrity sha512-0mDE99nK+kVh3xlc5vKwB6wnP9ecuSj+zQCa/n0voENtP/zymdT4HH6QEb65wjjcbqr1Jb/7z9Qp7TF5FtwYGw== - dependencies: - "@babel/helper-plugin-utils" "^7.14.5" - -"@babel/plugin-transform-flow-strip-types@^7.0.0": - version "7.14.5" - resolved "https://registry.yarnpkg.com/@babel/plugin-transform-flow-strip-types/-/plugin-transform-flow-strip-types-7.14.5.tgz#0dc9c1d11dcdc873417903d6df4bed019ef0f85e" - integrity sha512-KhcolBKfXbvjwI3TV7r7TkYm8oNXHNBqGOy6JDVwtecFaRoKYsUUqJdS10q0YDKW1c6aZQgO+Ys3LfGkox8pXA== - dependencies: - "@babel/helper-plugin-utils" "^7.14.5" - "@babel/plugin-syntax-flow" "^7.14.5" - -"@babel/plugin-transform-for-of@^7.0.0": - version "7.15.4" - resolved "https://registry.yarnpkg.com/@babel/plugin-transform-for-of/-/plugin-transform-for-of-7.15.4.tgz#25c62cce2718cfb29715f416e75d5263fb36a8c2" - integrity sha512-DRTY9fA751AFBDh2oxydvVm4SYevs5ILTWLs6xKXps4Re/KG5nfUkr+TdHCrRWB8C69TlzVgA9b3RmGWmgN9LA== - dependencies: - "@babel/helper-plugin-utils" "^7.14.5" - -"@babel/plugin-transform-function-name@^7.0.0": - version "7.14.5" - resolved "https://registry.yarnpkg.com/@babel/plugin-transform-function-name/-/plugin-transform-function-name-7.14.5.tgz#e81c65ecb900746d7f31802f6bed1f52d915d6f2" - integrity sha512-vbO6kv0fIzZ1GpmGQuvbwwm+O4Cbm2NrPzwlup9+/3fdkuzo1YqOZcXw26+YUJB84Ja7j9yURWposEHLYwxUfQ== - dependencies: - "@babel/helper-function-name" "^7.14.5" - "@babel/helper-plugin-utils" "^7.14.5" - -"@babel/plugin-transform-literals@^7.0.0": - version "7.14.5" - resolved "https://registry.yarnpkg.com/@babel/plugin-transform-literals/-/plugin-transform-literals-7.14.5.tgz#41d06c7ff5d4d09e3cf4587bd3ecf3930c730f78" - integrity sha512-ql33+epql2F49bi8aHXxvLURHkxJbSmMKl9J5yHqg4PLtdE6Uc48CH1GS6TQvZ86eoB/ApZXwm7jlA+B3kra7A== - dependencies: - "@babel/helper-plugin-utils" "^7.14.5" - -"@babel/plugin-transform-member-expression-literals@^7.0.0": - version "7.14.5" - resolved "https://registry.yarnpkg.com/@babel/plugin-transform-member-expression-literals/-/plugin-transform-member-expression-literals-7.14.5.tgz#b39cd5212a2bf235a617d320ec2b48bcc091b8a7" - integrity sha512-WkNXxH1VXVTKarWFqmso83xl+2V3Eo28YY5utIkbsmXoItO8Q3aZxN4BTS2k0hz9dGUloHK26mJMyQEYfkn/+Q== - dependencies: - "@babel/helper-plugin-utils" "^7.14.5" - -"@babel/plugin-transform-modules-commonjs@^7.0.0": - version "7.15.4" - resolved "https://registry.yarnpkg.com/@babel/plugin-transform-modules-commonjs/-/plugin-transform-modules-commonjs-7.15.4.tgz#8201101240eabb5a76c08ef61b2954f767b6b4c1" - integrity sha512-qg4DPhwG8hKp4BbVDvX1s8cohM8a6Bvptu4l6Iingq5rW+yRUAhe/YRup/YcW2zCOlrysEWVhftIcKzrEZv3sA== - dependencies: - "@babel/helper-module-transforms" "^7.15.4" - "@babel/helper-plugin-utils" "^7.14.5" - "@babel/helper-simple-access" "^7.15.4" - babel-plugin-dynamic-import-node "^2.3.3" - -"@babel/plugin-transform-object-super@^7.0.0": - version "7.14.5" - resolved "https://registry.yarnpkg.com/@babel/plugin-transform-object-super/-/plugin-transform-object-super-7.14.5.tgz#d0b5faeac9e98597a161a9cf78c527ed934cdc45" - integrity sha512-MKfOBWzK0pZIrav9z/hkRqIk/2bTv9qvxHzPQc12RcVkMOzpIKnFCNYJip00ssKWYkd8Sf5g0Wr7pqJ+cmtuFg== - dependencies: - "@babel/helper-plugin-utils" "^7.14.5" - "@babel/helper-replace-supers" "^7.14.5" - -"@babel/plugin-transform-parameters@^7.0.0", "@babel/plugin-transform-parameters@^7.15.4": - version "7.15.4" - resolved "https://registry.yarnpkg.com/@babel/plugin-transform-parameters/-/plugin-transform-parameters-7.15.4.tgz#5f2285cc3160bf48c8502432716b48504d29ed62" - integrity sha512-9WB/GUTO6lvJU3XQsSr6J/WKvBC2hcs4Pew8YxZagi6GkTdniyqp8On5kqdK8MN0LMeu0mGbhPN+O049NV/9FQ== - dependencies: - "@babel/helper-plugin-utils" "^7.14.5" - -"@babel/plugin-transform-property-literals@^7.0.0": - version "7.14.5" - resolved "https://registry.yarnpkg.com/@babel/plugin-transform-property-literals/-/plugin-transform-property-literals-7.14.5.tgz#0ddbaa1f83db3606f1cdf4846fa1dfb473458b34" - integrity sha512-r1uilDthkgXW8Z1vJz2dKYLV1tuw2xsbrp3MrZmD99Wh9vsfKoob+JTgri5VUb/JqyKRXotlOtwgu4stIYCmnw== - dependencies: - "@babel/helper-plugin-utils" "^7.14.5" - -"@babel/plugin-transform-react-display-name@^7.0.0": - version "7.15.1" - resolved "https://registry.yarnpkg.com/@babel/plugin-transform-react-display-name/-/plugin-transform-react-display-name-7.15.1.tgz#6aaac6099f1fcf6589d35ae6be1b6e10c8c602b9" - integrity sha512-yQZ/i/pUCJAHI/LbtZr413S3VT26qNrEm0M5RRxQJA947/YNYwbZbBaXGDrq6CG5QsZycI1VIP6d7pQaBfP+8Q== - dependencies: - "@babel/helper-plugin-utils" "^7.14.5" - -"@babel/plugin-transform-react-jsx@^7.0.0": - version "7.14.9" - resolved "https://registry.yarnpkg.com/@babel/plugin-transform-react-jsx/-/plugin-transform-react-jsx-7.14.9.tgz#3314b2163033abac5200a869c4de242cd50a914c" - integrity sha512-30PeETvS+AeD1f58i1OVyoDlVYQhap/K20ZrMjLmmzmC2AYR/G43D4sdJAaDAqCD3MYpSWbmrz3kES158QSLjw== - dependencies: - "@babel/helper-annotate-as-pure" "^7.14.5" - "@babel/helper-module-imports" "^7.14.5" - "@babel/helper-plugin-utils" "^7.14.5" - "@babel/plugin-syntax-jsx" "^7.14.5" - "@babel/types" "^7.14.9" - "@babel/plugin-transform-runtime@^7.5.5": - version "7.16.0" - resolved "https://registry.yarnpkg.com/@babel/plugin-transform-runtime/-/plugin-transform-runtime-7.16.0.tgz#3fe0da36c2f0834bef7c4d3e7f2b2db0ee0c8909" - integrity sha512-zlPf1/XFn5+vWdve3AAhf+Sxl+MVa5VlwTwWgnLx23u4GlatSRQJ3Eoo9vllf0a9il3woQsT4SK+5Z7c06h8ag== - dependencies: - "@babel/helper-module-imports" "^7.16.0" - "@babel/helper-plugin-utils" "^7.14.5" - babel-plugin-polyfill-corejs2 "^0.2.3" - babel-plugin-polyfill-corejs3 "^0.3.0" - babel-plugin-polyfill-regenerator "^0.2.3" + version "7.19.1" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-runtime/-/plugin-transform-runtime-7.19.1.tgz#a3df2d7312eea624c7889a2dcd37fd1dfd25b2c6" + integrity sha512-2nJjTUFIzBMP/f/miLxEK9vxwW/KUXsdvN4sR//TmuDhe6yU2h57WmIOE12Gng3MDP/xpjUV/ToZRdcf8Yj4fA== + dependencies: + "@babel/helper-module-imports" "^7.18.6" + "@babel/helper-plugin-utils" "^7.19.0" + babel-plugin-polyfill-corejs2 "^0.3.3" + babel-plugin-polyfill-corejs3 "^0.6.0" + babel-plugin-polyfill-regenerator "^0.4.1" semver "^6.3.0" -"@babel/plugin-transform-shorthand-properties@^7.0.0": - version "7.14.5" - resolved "https://registry.yarnpkg.com/@babel/plugin-transform-shorthand-properties/-/plugin-transform-shorthand-properties-7.14.5.tgz#97f13855f1409338d8cadcbaca670ad79e091a58" - integrity sha512-xLucks6T1VmGsTB+GWK5Pl9Jl5+nRXD1uoFdA5TSO6xtiNjtXTjKkmPdFXVLGlK5A2/or/wQMKfmQ2Y0XJfn5g== - dependencies: - "@babel/helper-plugin-utils" "^7.14.5" - -"@babel/plugin-transform-spread@^7.0.0": - version "7.15.8" - resolved "https://registry.yarnpkg.com/@babel/plugin-transform-spread/-/plugin-transform-spread-7.15.8.tgz#79d5aa27f68d700449b2da07691dfa32d2f6d468" - integrity sha512-/daZ8s2tNaRekl9YJa9X4bzjpeRZLt122cpgFnQPLGUe61PH8zMEBmYqKkW5xF5JUEh5buEGXJoQpqBmIbpmEQ== - dependencies: - "@babel/helper-plugin-utils" "^7.14.5" - "@babel/helper-skip-transparent-expression-wrappers" "^7.15.4" - -"@babel/plugin-transform-template-literals@^7.0.0": - version "7.14.5" - resolved "https://registry.yarnpkg.com/@babel/plugin-transform-template-literals/-/plugin-transform-template-literals-7.14.5.tgz#a5f2bc233937d8453885dc736bdd8d9ffabf3d93" - integrity sha512-22btZeURqiepOfuy/VkFr+zStqlujWaarpMErvay7goJS6BWwdd6BY9zQyDLDa4x2S3VugxFb162IZ4m/S/+Gg== - dependencies: - "@babel/helper-plugin-utils" "^7.14.5" - -"@babel/runtime@^7.0.0", "@babel/runtime@^7.11.2", "@babel/runtime@^7.12.1", "@babel/runtime@^7.4.4", "@babel/runtime@^7.6.3", "@babel/runtime@^7.8.7", "@babel/runtime@^7.9.2": - version "7.15.4" - resolved "https://registry.yarnpkg.com/@babel/runtime/-/runtime-7.15.4.tgz#fd17d16bfdf878e6dd02d19753a39fa8a8d9c84a" - integrity sha512-99catp6bHCaxr4sJ/DbTGgHS4+Rs2RVd2g7iOap6SLGPDknRK9ztKNsE/Fg6QhSeh1FGE5f6gHGQmvvn3I3xhw== - dependencies: - regenerator-runtime "^0.13.4" - -"@babel/runtime@^7.5.5": - version "7.16.3" - resolved "https://registry.yarnpkg.com/@babel/runtime/-/runtime-7.16.3.tgz#b86f0db02a04187a3c17caa77de69840165d42d5" - integrity sha512-WBwekcqacdY2e9AF/Q7WLFUWmdJGJTkbjqTjoMDgXkVZ3ZRUvOPsLb5KdwISoQVsbP+DQzVZW4Zhci0DvpbNTQ== +"@babel/runtime@^7.4.4", "@babel/runtime@^7.5.5", "@babel/runtime@^7.6.3", "@babel/runtime@^7.9.2": + version "7.19.0" + resolved "https://registry.yarnpkg.com/@babel/runtime/-/runtime-7.19.0.tgz#22b11c037b094d27a8a2504ea4dcff00f50e2259" + integrity sha512-eR8Lo9hnDS7tqkO7NsV+mKvCmv5boaXFSZ70DnfhcgiEne8hv9oCEd36Klw74EtizEqLsy4YnW8UWwpBVolHZA== dependencies: regenerator-runtime "^0.13.4" -"@babel/template@^7.15.4", "@babel/template@^7.16.0": - version "7.16.0" - resolved "https://registry.yarnpkg.com/@babel/template/-/template-7.16.0.tgz#d16a35ebf4cd74e202083356fab21dd89363ddd6" - integrity sha512-MnZdpFD/ZdYhXwiunMqqgyZyucaYsbL0IrjoGjaVhGilz+x8YB++kRfygSOIj1yOtWKPlx7NBp+9I1RQSgsd5A== - dependencies: - "@babel/code-frame" "^7.16.0" - "@babel/parser" "^7.16.0" - "@babel/types" "^7.16.0" - -"@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.15.4": - version "7.15.4" - resolved "https://registry.yarnpkg.com/@babel/traverse/-/traverse-7.15.4.tgz#ff8510367a144bfbff552d9e18e28f3e2889c22d" - integrity sha512-W6lQD8l4rUbQR/vYgSuCAE75ADyyQvOpFVsvPPdkhf6lATXAsQIG9YdtOcu8BB1dZ0LKu+Zo3c1wEcbKeuhdlA== - dependencies: - "@babel/code-frame" "^7.14.5" - "@babel/generator" "^7.15.4" - "@babel/helper-function-name" "^7.15.4" - "@babel/helper-hoist-variables" "^7.15.4" - "@babel/helper-split-export-declaration" "^7.15.4" - "@babel/parser" "^7.15.4" - "@babel/types" "^7.15.4" - debug "^4.1.0" - globals "^11.1.0" - -"@babel/traverse@^7.13.0": - version "7.16.3" - resolved "https://registry.yarnpkg.com/@babel/traverse/-/traverse-7.16.3.tgz#f63e8a938cc1b780f66d9ed3c54f532ca2d14787" - integrity sha512-eolumr1vVMjqevCpwVO99yN/LoGL0EyHiLO5I043aYQvwOJ9eR5UsZSClHVCzfhBduMAsSzgA/6AyqPjNayJag== - dependencies: - "@babel/code-frame" "^7.16.0" - "@babel/generator" "^7.16.0" - "@babel/helper-function-name" "^7.16.0" - "@babel/helper-hoist-variables" "^7.16.0" - "@babel/helper-split-export-declaration" "^7.16.0" - "@babel/parser" "^7.16.3" - "@babel/types" "^7.16.0" - debug "^4.1.0" - globals "^11.1.0" - -"@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== +"@babel/types@^7.18.6": + version "7.19.0" + resolved "https://registry.yarnpkg.com/@babel/types/-/types-7.19.0.tgz#75f21d73d73dc0351f3368d28db73465f4814600" + integrity sha512-YuGopBq3ke25BVSiS6fgF49Ul9gH1x70Bcr6bqRLjWCkcX8Hre1/5+z+IiWOIerRMSSEfGZVB9z9kyq7wVs9YA== 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.13", "@babel/types@^7.14.9": - version "7.15.6" - resolved "https://registry.yarnpkg.com/@babel/types/-/types-7.15.6.tgz#99abdc48218b2881c058dd0a7ab05b99c9be758f" - integrity sha512-BPU+7QhqNjmWyDO0/vitH/CuhpV8ZmK1wpKva8nuyNF5MJfuRNWMc+hc14+u9xT93kvykMdncrJT19h74uB1Ig== - dependencies: - "@babel/helper-validator-identifier" "^7.14.9" - to-fast-properties "^2.0.0" - -"@babel/types@^7.15.4", "@babel/types@^7.15.6", "@babel/types@^7.16.0": - version "7.16.0" - resolved "https://registry.yarnpkg.com/@babel/types/-/types-7.16.0.tgz#db3b313804f96aadd0b776c4823e127ad67289ba" - integrity sha512-PJgg/k3SdLsGb3hhisFvtLOw5ts113klrpLuIPtCJIU+BB24fqq6lf8RWqKJEjzqXR9AEH1rIb5XTqwBHB+kQg== - dependencies: - "@babel/helper-validator-identifier" "^7.15.7" + "@babel/helper-string-parser" "^7.18.10" + "@babel/helper-validator-identifier" "^7.18.6" to-fast-properties "^2.0.0" "@chainsafe/libp2p-noise@^5.0.0", "@chainsafe/libp2p-noise@^5.0.1": @@ -715,14 +238,6 @@ resolved "https://registry.yarnpkg.com/@colors/colors/-/colors-1.5.0.tgz#bb504579c1cae923e6576a4f5da43d25f97bdbd9" integrity sha512-ooWCrlZP11i8GImSjTHYHLkvFDP48nS4+204nGb1RiX/WXYHmJA2III9/e2DWVabCESdW7hBAEzHRqUn9OUVvQ== -"@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" - "@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" @@ -736,27 +251,25 @@ 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== +"@ensdomains/ens@0.4.5": + version "0.4.5" + resolved "https://registry.yarnpkg.com/@ensdomains/ens/-/ens-0.4.5.tgz#e0aebc005afdc066447c6e22feb4eda89a5edbfc" + integrity sha512-JSvpj1iNMFjK6K+uVl4unqMoa9rf5jopb8cya5UGBWz23Nw8hSNT7efgUx4BTlAPAgpNlEioUfeTyQ6J9ZvTVw== 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== +"@ensdomains/ensjs@^2.0.1", "@ensdomains/ensjs@^2.1.0": + version "2.1.0" + resolved "https://registry.yarnpkg.com/@ensdomains/ensjs/-/ensjs-2.1.0.tgz#0a7296c1f3d735ef019320d863a7846a0760c460" + integrity sha512-GRbGPT8Z/OJMDuxs75U/jUNEC0tbL0aj7/L/QQznGYKm/tiasp+ndLOaoULy9kKJFC0TBByqfFliEHDgoLhyog== dependencies: "@babel/runtime" "^7.4.4" "@ensdomains/address-encoder" "^0.1.7" - "@ensdomains/ens" "0.4.3" + "@ensdomains/ens" "0.4.5" "@ensdomains/resolver" "0.2.4" content-hash "^2.5.2" eth-ens-namehash "^2.0.8" @@ -768,1150 +281,457 @@ resolved "https://registry.yarnpkg.com/@ensdomains/resolver/-/resolver-0.2.4.tgz#c10fe28bf5efbf49bff4666d909aed0265efbc89" integrity sha512-bvaTH34PMCbv6anRa9I/0zjLJgY4EuznbEMgbV77JBCQ9KNC46rzi0avuxpOfu+xDjPEtSFGqVEOr5GlUSGudA== -"@ethereumjs/block@^3.4.0", "@ethereumjs/block@^3.5.0", "@ethereumjs/block@^3.5.1": - version "3.5.1" - resolved "https://registry.yarnpkg.com/@ethereumjs/block/-/block-3.5.1.tgz#59737d393503249aa750c37dfc83896234f4e175" - integrity sha512-MoY9bHKABOBK6BW0v1N1Oc0Cve4x/giX67M3TtrVBUsKQTj2eznLGKpydoitxWSZ+WgKKSVhfRMzbCGRwk7T5w== - dependencies: - "@ethereumjs/common" "^2.5.0" - "@ethereumjs/tx" "^3.3.1" - ethereumjs-util "^7.1.1" - merkle-patricia-tree "^4.2.1" - -"@ethereumjs/blockchain@^5.4.0", "@ethereumjs/blockchain@^5.4.1": - version "5.4.2" - resolved "https://registry.yarnpkg.com/@ethereumjs/blockchain/-/blockchain-5.4.2.tgz#5074e0a0157818762a5f5175ea0bd93c5455fe32" - integrity sha512-AOAAwz/lw2lciG9gf5wHi7M/qknraXXnLR66lYgbQ04qfyFC3ZE5x/5rLVm1Vu+kfJLlKrYZTmA0IbOkc7kvgw== - dependencies: - "@ethereumjs/block" "^3.5.1" - "@ethereumjs/common" "^2.5.0" - "@ethereumjs/ethash" "^1.1.0" - debug "^2.2.0" - ethereumjs-util "^7.1.1" - 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": - version "2.5.0" - resolved "https://registry.yarnpkg.com/@ethereumjs/common/-/common-2.5.0.tgz#ec61551b31bef7a69d1dc634d8932468866a4268" - integrity sha512-DEHjW6e38o+JmB/NO3GZBpW4lpaiBpkFgXF6jLcJ6gETBYpEyaA5nTimsWBUJR3Vmtm/didUEbNjajskugZORg== - dependencies: - crc-32 "^1.2.0" - ethereumjs-util "^7.1.1" - -"@ethereumjs/common@^2.4.0", "@ethereumjs/common@^2.5.0", "@ethereumjs/common@^2.6.0": - version "2.6.0" - resolved "https://registry.yarnpkg.com/@ethereumjs/common/-/common-2.6.0.tgz#feb96fb154da41ee2cc2c5df667621a440f36348" - integrity sha512-Cq2qS0FTu6O2VU1sgg+WyU9Ps0M6j/BEMHN+hRaECXCV/r0aI78u4N6p52QW/BDVhwWZpCdrvG8X7NJdzlpNUA== +"@ethereumjs/common@^2.4.0", "@ethereumjs/common@^2.5.0", "@ethereumjs/common@^2.6.4": + version "2.6.5" + resolved "https://registry.yarnpkg.com/@ethereumjs/common/-/common-2.6.5.tgz#0a75a22a046272579d91919cb12d84f2756e8d30" + integrity sha512-lRyVQOeCDaIVtgfbowla32pzeDv2Obr8oR8Put5RdUBNRGr1VGPGQNGP6elWIpgK3YdpzqTOh4GyUGOureVeeA== dependencies: crc-32 "^1.2.0" - ethereumjs-util "^7.1.3" - -"@ethereumjs/ethash@^1.1.0": - version "1.1.0" - resolved "https://registry.yarnpkg.com/@ethereumjs/ethash/-/ethash-1.1.0.tgz#7c5918ffcaa9cb9c1dc7d12f77ef038c11fb83fb" - integrity sha512-/U7UOKW6BzpA+Vt+kISAoeDie1vAvY4Zy2KF5JJb+So7+1yKmJeJEHOGSnQIj330e9Zyl3L5Nae6VZyh2TJnAA== - dependencies: - "@ethereumjs/block" "^3.5.0" - "@types/levelup" "^4.3.0" - buffer-xor "^2.0.1" - ethereumjs-util "^7.1.1" - miller-rabin "^4.0.0" - -"@ethereumjs/tx@^3.2.1", "@ethereumjs/tx@^3.3.1": - version "3.3.2" - resolved "https://registry.yarnpkg.com/@ethereumjs/tx/-/tx-3.3.2.tgz#348d4624bf248aaab6c44fec2ae67265efe3db00" - integrity sha512-6AaJhwg4ucmwTvw/1qLaZUX5miWrwZ4nLOUsKyb/HtzS3BMw/CasKhdi1ims9mBKeK9sOJCH4qGKOBGyJCeeog== - dependencies: - "@ethereumjs/common" "^2.5.0" - ethereumjs-util "^7.1.2" + ethereumjs-util "^7.1.5" -"@ethereumjs/tx@^3.3.0": - version "3.4.0" - resolved "https://registry.yarnpkg.com/@ethereumjs/tx/-/tx-3.4.0.tgz#7eb1947eefa55eb9cf05b3ca116fb7a3dbd0bce7" - integrity sha512-WWUwg1PdjHKZZxPPo274ZuPsJCWV3SqATrEKQP1n2DrVYVP1aZIYpo/mFaA0BDoE0tIQmBeimRCEA0Lgil+yYw== - dependencies: - "@ethereumjs/common" "^2.6.0" - ethereumjs-util "^7.1.3" - -"@ethereumjs/vm@^5.5.2": - version "5.5.3" - resolved "https://registry.yarnpkg.com/@ethereumjs/vm/-/vm-5.5.3.tgz#dc8b30dd35efb589db093592600207660fa8dada" - integrity sha512-0k5OreWnlgXYs54wohgO11jtGI05GDasj2EYxzuaStxTi15CS3vow5wGYELC1pG9xngE1F/mFmKi/f14XRuDow== - dependencies: - "@ethereumjs/block" "^3.5.0" - "@ethereumjs/blockchain" "^5.4.1" - "@ethereumjs/common" "^2.5.0" - "@ethereumjs/tx" "^3.3.1" - async-eventemitter "^0.2.4" - core-js-pure "^3.0.1" - debug "^2.2.0" - ethereumjs-util "^7.1.1" - functional-red-black-tree "^1.0.1" - mcl-wasm "^0.7.1" - merkle-patricia-tree "^4.2.1" - 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" - 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.1", "@ethersproject/abi@^5.0.0-beta.146", "@ethersproject/abi@^5.1.2": - version "5.4.1" - resolved "https://registry.yarnpkg.com/@ethersproject/abi/-/abi-5.4.1.tgz#6ac28fafc9ef6f5a7a37e30356a2eb31fa05d39b" - integrity sha512-9mhbjUk76BiSluiiW4BaYyI58KSbDMMQpCLdsAR+RsT2GyATiNYxVv+pGWRrekmsIdY3I+hOqsYQSTkc8L/mcg== - 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/abi@5.5.0", "@ethersproject/abi@^5.4.0", "@ethersproject/abi@^5.5.0": - version "5.5.0" - resolved "https://registry.yarnpkg.com/@ethersproject/abi/-/abi-5.5.0.tgz#fb52820e22e50b854ff15ce1647cc508d6660613" - integrity sha512-loW7I4AohP5KycATvc0MgujU6JyCHPqHdeoo9z3Nr9xEiNioxa65ccdm1+fsoJhkuhdRtfcL8cfyGamz2AxZ5w== - dependencies: - "@ethersproject/address" "^5.5.0" - "@ethersproject/bignumber" "^5.5.0" - "@ethersproject/bytes" "^5.5.0" - "@ethersproject/constants" "^5.5.0" - "@ethersproject/hash" "^5.5.0" - "@ethersproject/keccak256" "^5.5.0" - "@ethersproject/logger" "^5.5.0" - "@ethersproject/properties" "^5.5.0" - "@ethersproject/strings" "^5.5.0" - -"@ethersproject/abstract-provider@5.4.1": - 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-provider@5.5.1", "@ethersproject/abstract-provider@^5.4.0", "@ethersproject/abstract-provider@^5.5.0": - version "5.5.1" - resolved "https://registry.yarnpkg.com/@ethersproject/abstract-provider/-/abstract-provider-5.5.1.tgz#2f1f6e8a3ab7d378d8ad0b5718460f85649710c5" - integrity sha512-m+MA/ful6eKbxpr99xUYeRvLkfnlqzrF8SZ46d/xFB1A7ZVknYc/sXJG0RcufF52Qn2jeFj1hhcoQ7IXjNKUqg== - dependencies: - "@ethersproject/bignumber" "^5.5.0" - "@ethersproject/bytes" "^5.5.0" - "@ethersproject/logger" "^5.5.0" - "@ethersproject/networks" "^5.5.0" - "@ethersproject/properties" "^5.5.0" - "@ethersproject/transactions" "^5.5.0" - "@ethersproject/web" "^5.5.0" - -"@ethersproject/abstract-signer@5.4.1": - 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/abstract-signer@5.5.0", "@ethersproject/abstract-signer@^5.4.0", "@ethersproject/abstract-signer@^5.5.0": - version "5.5.0" - resolved "https://registry.yarnpkg.com/@ethersproject/abstract-signer/-/abstract-signer-5.5.0.tgz#590ff6693370c60ae376bf1c7ada59eb2a8dd08d" - integrity sha512-lj//7r250MXVLKI7sVarXAbZXbv9P50lgmJQGr2/is82EwEb8r7HrxsmMqAjTsztMYy7ohrIhGMIml+Gx4D3mA== - dependencies: - "@ethersproject/abstract-provider" "^5.5.0" - "@ethersproject/bignumber" "^5.5.0" - "@ethersproject/bytes" "^5.5.0" - "@ethersproject/logger" "^5.5.0" - "@ethersproject/properties" "^5.5.0" - -"@ethersproject/address@5.4.0", "@ethersproject/address@^5.0.2", "@ethersproject/address@^5.0.4": - 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.5.0", "@ethersproject/address@^5.4.0", "@ethersproject/address@^5.5.0": - version "5.5.0" - resolved "https://registry.yarnpkg.com/@ethersproject/address/-/address-5.5.0.tgz#bcc6f576a553f21f3dd7ba17248f81b473c9c78f" - integrity sha512-l4Nj0eWlTUh6ro5IbPTgbpT4wRbdH5l8CQf7icF7sb/SI3Nhd9Y9HzhonTSTi6CefI0necIw7LJqQPopPLZyWw== - dependencies: - "@ethersproject/bignumber" "^5.5.0" - "@ethersproject/bytes" "^5.5.0" - "@ethersproject/keccak256" "^5.5.0" - "@ethersproject/logger" "^5.5.0" - "@ethersproject/rlp" "^5.5.0" - -"@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.4.0" - -"@ethersproject/base64@5.5.0", "@ethersproject/base64@^5.4.0", "@ethersproject/base64@^5.5.0": - version "5.5.0" - resolved "https://registry.yarnpkg.com/@ethersproject/base64/-/base64-5.5.0.tgz#881e8544e47ed976930836986e5eb8fab259c090" - integrity sha512-tdayUKhU1ljrlHzEWbStXazDpsx4eg1dBXUSI6+mHlYklOXoXF6lZvw8tnD6oVaWfnMxAgRSKROg3cVKtCcppA== - dependencies: - "@ethersproject/bytes" "^5.5.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/basex@5.5.0", "@ethersproject/basex@^5.4.0", "@ethersproject/basex@^5.5.0": - version "5.5.0" - resolved "https://registry.yarnpkg.com/@ethersproject/basex/-/basex-5.5.0.tgz#e40a53ae6d6b09ab4d977bd037010d4bed21b4d3" - integrity sha512-ZIodwhHpVJ0Y3hUCfUucmxKsWQA5TMnavp5j/UOuDdzZWzJlRmuOjcTMIGgHCYuZmHt36BfiSyQPSRskPxbfaQ== - dependencies: - "@ethersproject/bytes" "^5.5.0" - "@ethersproject/properties" "^5.5.0" - -"@ethersproject/bignumber@5.4.2", "@ethersproject/bignumber@^5.0.7": - version "5.4.2" - resolved "https://registry.yarnpkg.com/@ethersproject/bignumber/-/bignumber-5.4.2.tgz#44232e015ae4ce82ac034de549eb3583c71283d8" - integrity sha512-oIBDhsKy5bs7j36JlaTzFgNPaZjiNDOXsdSgSpXRucUl+UA6L/1YLlFeI3cPAoodcenzF4nxNPV13pcy7XbWjA== - dependencies: - "@ethersproject/bytes" "^5.4.0" - "@ethersproject/logger" "^5.4.0" - bn.js "^4.11.9" - -"@ethersproject/bignumber@5.5.0", "@ethersproject/bignumber@^5.4.0", "@ethersproject/bignumber@^5.5.0": - version "5.5.0" - resolved "https://registry.yarnpkg.com/@ethersproject/bignumber/-/bignumber-5.5.0.tgz#875b143f04a216f4f8b96245bde942d42d279527" - integrity sha512-6Xytlwvy6Rn3U3gKEc1vP7nR92frHkv6wtVr95LFR3jREXiCPzdWxKQ1cx4JGQBXxcguAwjA8murlYN2TSiEbg== - dependencies: - "@ethersproject/bytes" "^5.5.0" - "@ethersproject/logger" "^5.5.0" - bn.js "^4.11.9" - -"@ethersproject/bytes@5.4.0", "@ethersproject/bytes@^5.0.4": - 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.5.0", "@ethersproject/bytes@^5.4.0", "@ethersproject/bytes@^5.5.0": - version "5.5.0" - resolved "https://registry.yarnpkg.com/@ethersproject/bytes/-/bytes-5.5.0.tgz#cb11c526de657e7b45d2e0f0246fb3b9d29a601c" - integrity sha512-ABvc7BHWhZU9PNM/tANm/Qx4ostPGadAuQzWTr3doklZOhDlmcBqclrQe/ZXUIj3K8wC28oYeuRa+A37tX9kog== - dependencies: - "@ethersproject/logger" "^5.5.0" - -"@ethersproject/constants@5.4.0", "@ethersproject/constants@^5.0.4": - 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.5.0", "@ethersproject/constants@^5.4.0", "@ethersproject/constants@^5.5.0": - version "5.5.0" - resolved "https://registry.yarnpkg.com/@ethersproject/constants/-/constants-5.5.0.tgz#d2a2cd7d94bd1d58377d1d66c4f53c9be4d0a45e" - integrity sha512-2MsRRVChkvMWR+GyMGY4N1sAX9Mt3J9KykCsgUFd/1mwS0UH1qw+Bv9k1UJb3X3YJYFco9H20pjSlOIfCG5HYQ== - dependencies: - "@ethersproject/bignumber" "^5.5.0" - -"@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/contracts@5.5.0": - version "5.5.0" - resolved "https://registry.yarnpkg.com/@ethersproject/contracts/-/contracts-5.5.0.tgz#b735260d4bd61283a670a82d5275e2a38892c197" - integrity sha512-2viY7NzyvJkh+Ug17v7g3/IJC8HqZBDcOjYARZLdzRxrfGlRgmYgl6xPRKVbEzy1dWKw/iv7chDcS83pg6cLxg== - dependencies: - "@ethersproject/abi" "^5.5.0" - "@ethersproject/abstract-provider" "^5.5.0" - "@ethersproject/abstract-signer" "^5.5.0" - "@ethersproject/address" "^5.5.0" - "@ethersproject/bignumber" "^5.5.0" - "@ethersproject/bytes" "^5.5.0" - "@ethersproject/constants" "^5.5.0" - "@ethersproject/logger" "^5.5.0" - "@ethersproject/properties" "^5.5.0" - "@ethersproject/transactions" "^5.5.0" - -"@ethersproject/hash@5.4.0", "@ethersproject/hash@^5.0.4": - 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/hash@5.5.0", "@ethersproject/hash@^5.4.0", "@ethersproject/hash@^5.5.0": - version "5.5.0" - resolved "https://registry.yarnpkg.com/@ethersproject/hash/-/hash-5.5.0.tgz#7cee76d08f88d1873574c849e0207dcb32380cc9" - integrity sha512-dnGVpK1WtBjmnp3mUT0PlU2MpapnwWI0PibldQEq1408tQBAbZpPidkWoVVuNMOl/lISO3+4hXZWCL3YV7qzfg== - dependencies: - "@ethersproject/abstract-signer" "^5.5.0" - "@ethersproject/address" "^5.5.0" - "@ethersproject/bignumber" "^5.5.0" - "@ethersproject/bytes" "^5.5.0" - "@ethersproject/keccak256" "^5.5.0" - "@ethersproject/logger" "^5.5.0" - "@ethersproject/properties" "^5.5.0" - "@ethersproject/strings" "^5.5.0" - -"@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/hdnode@5.5.0", "@ethersproject/hdnode@^5.4.0", "@ethersproject/hdnode@^5.5.0": - version "5.5.0" - resolved "https://registry.yarnpkg.com/@ethersproject/hdnode/-/hdnode-5.5.0.tgz#4a04e28f41c546f7c978528ea1575206a200ddf6" - integrity sha512-mcSOo9zeUg1L0CoJH7zmxwUG5ggQHU1UrRf8jyTYy6HxdZV+r0PBoL1bxr+JHIPXRzS6u/UW4mEn43y0tmyF8Q== - dependencies: - "@ethersproject/abstract-signer" "^5.5.0" - "@ethersproject/basex" "^5.5.0" - "@ethersproject/bignumber" "^5.5.0" - "@ethersproject/bytes" "^5.5.0" - "@ethersproject/logger" "^5.5.0" - "@ethersproject/pbkdf2" "^5.5.0" - "@ethersproject/properties" "^5.5.0" - "@ethersproject/sha2" "^5.5.0" - "@ethersproject/signing-key" "^5.5.0" - "@ethersproject/strings" "^5.5.0" - "@ethersproject/transactions" "^5.5.0" - "@ethersproject/wordlists" "^5.5.0" - -"@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/json-wallets@5.5.0", "@ethersproject/json-wallets@^5.4.0", "@ethersproject/json-wallets@^5.5.0": - version "5.5.0" - resolved "https://registry.yarnpkg.com/@ethersproject/json-wallets/-/json-wallets-5.5.0.tgz#dd522d4297e15bccc8e1427d247ec8376b60e325" - integrity sha512-9lA21XQnCdcS72xlBn1jfQdj2A1VUxZzOzi9UkNdnokNKke/9Ya2xA9aIK1SC3PQyBDLt4C+dfps7ULpkvKikQ== - dependencies: - "@ethersproject/abstract-signer" "^5.5.0" - "@ethersproject/address" "^5.5.0" - "@ethersproject/bytes" "^5.5.0" - "@ethersproject/hdnode" "^5.5.0" - "@ethersproject/keccak256" "^5.5.0" - "@ethersproject/logger" "^5.5.0" - "@ethersproject/pbkdf2" "^5.5.0" - "@ethersproject/properties" "^5.5.0" - "@ethersproject/random" "^5.5.0" - "@ethersproject/strings" "^5.5.0" - "@ethersproject/transactions" "^5.5.0" +"@ethereumjs/tx@^3.3.0", "@ethereumjs/tx@^3.3.2": + version "3.5.2" + resolved "https://registry.yarnpkg.com/@ethereumjs/tx/-/tx-3.5.2.tgz#197b9b6299582ad84f9527ca961466fce2296c1c" + integrity sha512-gQDNJWKrSDGu2w7w0PzVXVBNMzb7wwdDOmOqczmhNjqFxFuIbhVJDwiGEnxFNC2/b8ifcZzY7MLcluizohRzNw== + dependencies: + "@ethereumjs/common" "^2.6.4" + ethereumjs-util "^7.1.5" + +"@ethersproject/abi@5.7.0", "@ethersproject/abi@^5.0.0-beta.146", "@ethersproject/abi@^5.1.2", "@ethersproject/abi@^5.6.3", "@ethersproject/abi@^5.7.0": + version "5.7.0" + resolved "https://registry.yarnpkg.com/@ethersproject/abi/-/abi-5.7.0.tgz#b3f3e045bbbeed1af3947335c247ad625a44e449" + integrity sha512-351ktp42TiRcYB3H1OP8yajPeAQstMW/yCFokj/AthP9bLHzQFPlOrxOcwYEDkUAICmOHljvN4K39OMTMUa9RA== + dependencies: + "@ethersproject/address" "^5.7.0" + "@ethersproject/bignumber" "^5.7.0" + "@ethersproject/bytes" "^5.7.0" + "@ethersproject/constants" "^5.7.0" + "@ethersproject/hash" "^5.7.0" + "@ethersproject/keccak256" "^5.7.0" + "@ethersproject/logger" "^5.7.0" + "@ethersproject/properties" "^5.7.0" + "@ethersproject/strings" "^5.7.0" + +"@ethersproject/abstract-provider@5.7.0", "@ethersproject/abstract-provider@^5.7.0": + version "5.7.0" + resolved "https://registry.yarnpkg.com/@ethersproject/abstract-provider/-/abstract-provider-5.7.0.tgz#b0a8550f88b6bf9d51f90e4795d48294630cb9ef" + integrity sha512-R41c9UkchKCpAqStMYUpdunjo3pkEvZC3FAwZn5S5MGbXoMQOHIdHItezTETxAO5bevtMApSyEhn9+CHcDsWBw== + dependencies: + "@ethersproject/bignumber" "^5.7.0" + "@ethersproject/bytes" "^5.7.0" + "@ethersproject/logger" "^5.7.0" + "@ethersproject/networks" "^5.7.0" + "@ethersproject/properties" "^5.7.0" + "@ethersproject/transactions" "^5.7.0" + "@ethersproject/web" "^5.7.0" + +"@ethersproject/abstract-signer@5.7.0", "@ethersproject/abstract-signer@^5.7.0": + version "5.7.0" + resolved "https://registry.yarnpkg.com/@ethersproject/abstract-signer/-/abstract-signer-5.7.0.tgz#13f4f32117868452191a4649723cb086d2b596b2" + integrity sha512-a16V8bq1/Cz+TGCkE2OPMTOUDLS3grCpdjoJCYNnVBbdYEMSgKrU0+B90s8b6H+ByYTBZN7a3g76jdIJi7UfKQ== + dependencies: + "@ethersproject/abstract-provider" "^5.7.0" + "@ethersproject/bignumber" "^5.7.0" + "@ethersproject/bytes" "^5.7.0" + "@ethersproject/logger" "^5.7.0" + "@ethersproject/properties" "^5.7.0" + +"@ethersproject/address@5.7.0", "@ethersproject/address@^5.0.2", "@ethersproject/address@^5.7.0": + version "5.7.0" + resolved "https://registry.yarnpkg.com/@ethersproject/address/-/address-5.7.0.tgz#19b56c4d74a3b0a46bfdbb6cfcc0a153fc697f37" + integrity sha512-9wYhYt7aghVGo758POM5nqcOMaE168Q6aRLJZwUmiqSrAungkG74gSSeKEIR7ukixesdRZGPgVqme6vmxs1fkA== + dependencies: + "@ethersproject/bignumber" "^5.7.0" + "@ethersproject/bytes" "^5.7.0" + "@ethersproject/keccak256" "^5.7.0" + "@ethersproject/logger" "^5.7.0" + "@ethersproject/rlp" "^5.7.0" + +"@ethersproject/base64@5.7.0", "@ethersproject/base64@^5.7.0": + version "5.7.0" + resolved "https://registry.yarnpkg.com/@ethersproject/base64/-/base64-5.7.0.tgz#ac4ee92aa36c1628173e221d0d01f53692059e1c" + integrity sha512-Dr8tcHt2mEbsZr/mwTPIQAf3Ai0Bks/7gTw9dSqk1mQvhW3XvRlmDJr/4n+wg1JmCl16NZue17CDh8xb/vZ0sQ== + dependencies: + "@ethersproject/bytes" "^5.7.0" + +"@ethersproject/basex@5.7.0", "@ethersproject/basex@^5.7.0": + version "5.7.0" + resolved "https://registry.yarnpkg.com/@ethersproject/basex/-/basex-5.7.0.tgz#97034dc7e8938a8ca943ab20f8a5e492ece4020b" + integrity sha512-ywlh43GwZLv2Voc2gQVTKBoVQ1mti3d8HK5aMxsfu/nRDnMmNqaSJ3r3n85HBByT8OpoY96SXM1FogC533T4zw== + dependencies: + "@ethersproject/bytes" "^5.7.0" + "@ethersproject/properties" "^5.7.0" + +"@ethersproject/bignumber@5.7.0", "@ethersproject/bignumber@^5.7.0": + version "5.7.0" + resolved "https://registry.yarnpkg.com/@ethersproject/bignumber/-/bignumber-5.7.0.tgz#e2f03837f268ba655ffba03a57853e18a18dc9c2" + integrity sha512-n1CAdIHRWjSucQO3MC1zPSVgV/6dy/fjL9pMrPP9peL+QxEg9wOsVqwD4+818B6LUEtaXzVHQiuivzRoxPxUGw== + dependencies: + "@ethersproject/bytes" "^5.7.0" + "@ethersproject/logger" "^5.7.0" + bn.js "^5.2.1" + +"@ethersproject/bytes@5.7.0", "@ethersproject/bytes@^5.7.0": + version "5.7.0" + resolved "https://registry.yarnpkg.com/@ethersproject/bytes/-/bytes-5.7.0.tgz#a00f6ea8d7e7534d6d87f47188af1148d71f155d" + integrity sha512-nsbxwgFXWh9NyYWo+U8atvmMsSdKJprTcICAkvbBffT75qDocbuggBU0SJiVK2MuTrp0q+xvLkTnGMPK1+uA9A== + dependencies: + "@ethersproject/logger" "^5.7.0" + +"@ethersproject/constants@5.7.0", "@ethersproject/constants@^5.7.0": + version "5.7.0" + resolved "https://registry.yarnpkg.com/@ethersproject/constants/-/constants-5.7.0.tgz#df80a9705a7e08984161f09014ea012d1c75295e" + integrity sha512-DHI+y5dBNvkpYUMiRQyxRBYBefZkJfo70VUkUAsRjcPs47muV9evftfZ0PJVCXYbAiCgght0DtcF9srFQmIgWA== + dependencies: + "@ethersproject/bignumber" "^5.7.0" + +"@ethersproject/contracts@5.7.0": + version "5.7.0" + resolved "https://registry.yarnpkg.com/@ethersproject/contracts/-/contracts-5.7.0.tgz#c305e775abd07e48aa590e1a877ed5c316f8bd1e" + integrity sha512-5GJbzEU3X+d33CdfPhcyS+z8MzsTrBGk/sc+G+59+tPa9yFkl6HQ9D6L0QMgNTA9q8dT0XKxxkyp883XsQvbbg== + dependencies: + "@ethersproject/abi" "^5.7.0" + "@ethersproject/abstract-provider" "^5.7.0" + "@ethersproject/abstract-signer" "^5.7.0" + "@ethersproject/address" "^5.7.0" + "@ethersproject/bignumber" "^5.7.0" + "@ethersproject/bytes" "^5.7.0" + "@ethersproject/constants" "^5.7.0" + "@ethersproject/logger" "^5.7.0" + "@ethersproject/properties" "^5.7.0" + "@ethersproject/transactions" "^5.7.0" + +"@ethersproject/hash@5.7.0", "@ethersproject/hash@^5.7.0": + version "5.7.0" + resolved "https://registry.yarnpkg.com/@ethersproject/hash/-/hash-5.7.0.tgz#eb7aca84a588508369562e16e514b539ba5240a7" + integrity sha512-qX5WrQfnah1EFnO5zJv1v46a8HW0+E5xuBBDTwMFZLuVTx0tbU2kkx15NqdjxecrLGatQN9FGQKpb1FKdHCt+g== + dependencies: + "@ethersproject/abstract-signer" "^5.7.0" + "@ethersproject/address" "^5.7.0" + "@ethersproject/base64" "^5.7.0" + "@ethersproject/bignumber" "^5.7.0" + "@ethersproject/bytes" "^5.7.0" + "@ethersproject/keccak256" "^5.7.0" + "@ethersproject/logger" "^5.7.0" + "@ethersproject/properties" "^5.7.0" + "@ethersproject/strings" "^5.7.0" + +"@ethersproject/hdnode@5.7.0", "@ethersproject/hdnode@^5.7.0": + version "5.7.0" + resolved "https://registry.yarnpkg.com/@ethersproject/hdnode/-/hdnode-5.7.0.tgz#e627ddc6b466bc77aebf1a6b9e47405ca5aef9cf" + integrity sha512-OmyYo9EENBPPf4ERhR7oj6uAtUAhYGqOnIS+jE5pTXvdKBS99ikzq1E7Iv0ZQZ5V36Lqx1qZLeak0Ra16qpeOg== + dependencies: + "@ethersproject/abstract-signer" "^5.7.0" + "@ethersproject/basex" "^5.7.0" + "@ethersproject/bignumber" "^5.7.0" + "@ethersproject/bytes" "^5.7.0" + "@ethersproject/logger" "^5.7.0" + "@ethersproject/pbkdf2" "^5.7.0" + "@ethersproject/properties" "^5.7.0" + "@ethersproject/sha2" "^5.7.0" + "@ethersproject/signing-key" "^5.7.0" + "@ethersproject/strings" "^5.7.0" + "@ethersproject/transactions" "^5.7.0" + "@ethersproject/wordlists" "^5.7.0" + +"@ethersproject/json-wallets@5.7.0", "@ethersproject/json-wallets@^5.7.0": + version "5.7.0" + resolved "https://registry.yarnpkg.com/@ethersproject/json-wallets/-/json-wallets-5.7.0.tgz#5e3355287b548c32b368d91014919ebebddd5360" + integrity sha512-8oee5Xgu6+RKgJTkvEMl2wDgSPSAQ9MB/3JYjFV9jlKvcYHUXZC+cQp0njgmxdHkYWn8s6/IqIZYm0YWCjO/0g== + dependencies: + "@ethersproject/abstract-signer" "^5.7.0" + "@ethersproject/address" "^5.7.0" + "@ethersproject/bytes" "^5.7.0" + "@ethersproject/hdnode" "^5.7.0" + "@ethersproject/keccak256" "^5.7.0" + "@ethersproject/logger" "^5.7.0" + "@ethersproject/pbkdf2" "^5.7.0" + "@ethersproject/properties" "^5.7.0" + "@ethersproject/random" "^5.7.0" + "@ethersproject/strings" "^5.7.0" + "@ethersproject/transactions" "^5.7.0" aes-js "3.0.0" scrypt-js "3.0.1" -"@ethersproject/keccak256@5.4.0", "@ethersproject/keccak256@^5.0.3": - 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.4.0" - js-sha3 "0.5.7" - -"@ethersproject/keccak256@5.5.0", "@ethersproject/keccak256@^5.4.0", "@ethersproject/keccak256@^5.5.0": - version "5.5.0" - resolved "https://registry.yarnpkg.com/@ethersproject/keccak256/-/keccak256-5.5.0.tgz#e4b1f9d7701da87c564ffe336f86dcee82983492" - integrity sha512-5VoFCTjo2rYbBe1l2f4mccaRFN/4VQEYFwwn04aJV2h7qf4ZvI2wFxUE1XOX+snbwCLRzIeikOqtAoPwMza9kg== +"@ethersproject/keccak256@5.7.0", "@ethersproject/keccak256@^5.7.0": + version "5.7.0" + resolved "https://registry.yarnpkg.com/@ethersproject/keccak256/-/keccak256-5.7.0.tgz#3186350c6e1cd6aba7940384ec7d6d9db01f335a" + integrity sha512-2UcPboeL/iW+pSg6vZ6ydF8tCnv3Iu/8tUmLLzWWGzxWKFFqOBQFLo6uLUv6BDrLgCDfN28RJ/wtByx+jZ4KBg== dependencies: - "@ethersproject/bytes" "^5.5.0" + "@ethersproject/bytes" "^5.7.0" js-sha3 "0.8.0" -"@ethersproject/logger@5.4.1", "@ethersproject/logger@^5.0.5": - version "5.4.1" - resolved "https://registry.yarnpkg.com/@ethersproject/logger/-/logger-5.4.1.tgz#503bd33683538b923c578c07d1c2c0dd18672054" - integrity sha512-DZ+bRinnYLPw1yAC64oRl0QyVZj43QeHIhVKfD/+YwSz4wsv1pfwb5SOFjz+r710YEWzU6LrhuSjpSO+6PeE4A== - -"@ethersproject/logger@5.5.0", "@ethersproject/logger@^5.4.0", "@ethersproject/logger@^5.5.0": - version "5.5.0" - resolved "https://registry.yarnpkg.com/@ethersproject/logger/-/logger-5.5.0.tgz#0c2caebeff98e10aefa5aef27d7441c7fd18cf5d" - integrity sha512-rIY/6WPm7T8n3qS2vuHTUBPdXHl+rGxWxW5okDfo9J4Z0+gRRZT0msvUdIJkE4/HS29GUMziwGaaKO2bWONBrg== - -"@ethersproject/networks@5.4.2": - 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/networks@5.5.0", "@ethersproject/networks@^5.4.0", "@ethersproject/networks@^5.5.0": - version "5.5.0" - resolved "https://registry.yarnpkg.com/@ethersproject/networks/-/networks-5.5.0.tgz#babec47cab892c51f8dd652ce7f2e3e14283981a" - integrity sha512-KWfP3xOnJeF89Uf/FCJdV1a2aDJe5XTN2N52p4fcQ34QhDqQFkgQKZ39VGtiqUgHcLI8DfT0l9azC3KFTunqtA== - dependencies: - "@ethersproject/logger" "^5.5.0" +"@ethersproject/logger@5.7.0", "@ethersproject/logger@^5.7.0": + version "5.7.0" + resolved "https://registry.yarnpkg.com/@ethersproject/logger/-/logger-5.7.0.tgz#6ce9ae168e74fecf287be17062b590852c311892" + integrity sha512-0odtFdXu/XHtjQXJYA3u9G0G8btm0ND5Cu8M7i5vhEcE8/HmF4Lbdqanwyv4uQTr2tx6b7fQRmgLrsnpQlmnig== -"@ethersproject/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== +"@ethersproject/networks@5.7.1", "@ethersproject/networks@^5.7.0": + version "5.7.1" + resolved "https://registry.yarnpkg.com/@ethersproject/networks/-/networks-5.7.1.tgz#118e1a981d757d45ccea6bb58d9fd3d9db14ead6" + integrity sha512-n/MufjFYv3yFcUyfhnXotyDlNdFb7onmkSy8aQERi2PjNcnWQ66xXxa3XlS8nCcA8aJKJjIIMNJTC7tu80GwpQ== dependencies: - "@ethersproject/bytes" "^5.4.0" - "@ethersproject/sha2" "^5.4.0" + "@ethersproject/logger" "^5.7.0" -"@ethersproject/pbkdf2@5.5.0", "@ethersproject/pbkdf2@^5.4.0", "@ethersproject/pbkdf2@^5.5.0": - version "5.5.0" - resolved "https://registry.yarnpkg.com/@ethersproject/pbkdf2/-/pbkdf2-5.5.0.tgz#e25032cdf02f31505d47afbf9c3e000d95c4a050" - integrity sha512-SaDvQFvXPnz1QGpzr6/HToLifftSXGoXrbpZ6BvoZhmx4bNLHrxDe8MZisuecyOziP1aVEwzC2Hasj+86TgWVg== +"@ethersproject/pbkdf2@5.7.0", "@ethersproject/pbkdf2@^5.7.0": + version "5.7.0" + resolved "https://registry.yarnpkg.com/@ethersproject/pbkdf2/-/pbkdf2-5.7.0.tgz#d2267d0a1f6e123f3771007338c47cccd83d3102" + integrity sha512-oR/dBRZR6GTyaofd86DehG72hY6NpAjhabkhxgr3X2FpJtJuodEl2auADWBZfhDHgVCbu3/H/Ocq2uC6dpNjjw== dependencies: - "@ethersproject/bytes" "^5.5.0" - "@ethersproject/sha2" "^5.5.0" + "@ethersproject/bytes" "^5.7.0" + "@ethersproject/sha2" "^5.7.0" -"@ethersproject/properties@5.4.1", "@ethersproject/properties@^5.0.3": - version "5.4.1" - resolved "https://registry.yarnpkg.com/@ethersproject/properties/-/properties-5.4.1.tgz#9f051f976ce790142c6261ccb7b826eaae1f2f36" - integrity sha512-cyCGlF8wWlIZyizsj2PpbJ9I7rIlUAfnHYwy/T90pdkSn/NFTa5YWZx2wTJBe9V7dD65dcrrEMisCRUJiq6n3w== +"@ethersproject/properties@5.7.0", "@ethersproject/properties@^5.7.0": + version "5.7.0" + resolved "https://registry.yarnpkg.com/@ethersproject/properties/-/properties-5.7.0.tgz#a6e12cb0439b878aaf470f1902a176033067ed30" + integrity sha512-J87jy8suntrAkIZtecpxEPxY//szqr1mlBaYlQ0r4RCaiD2hjheqF9s1LVE8vVuJCXisjIP+JgtK/Do54ej4Sw== dependencies: - "@ethersproject/logger" "^5.4.0" + "@ethersproject/logger" "^5.7.0" -"@ethersproject/properties@5.5.0", "@ethersproject/properties@^5.4.0", "@ethersproject/properties@^5.5.0": - version "5.5.0" - resolved "https://registry.yarnpkg.com/@ethersproject/properties/-/properties-5.5.0.tgz#61f00f2bb83376d2071baab02245f92070c59995" - integrity sha512-l3zRQg3JkD8EL3CPjNK5g7kMx4qSwiR60/uk5IVjd3oq1MZR5qUg40CNOoEJoX5wc3DyY5bt9EbMk86C7x0DNA== - dependencies: - "@ethersproject/logger" "^5.5.0" - -"@ethersproject/providers@5.4.5": - version "5.4.5" - resolved "https://registry.yarnpkg.com/@ethersproject/providers/-/providers-5.4.5.tgz#eb2ea2a743a8115f79604a8157233a3a2c832928" - integrity sha512-1GkrvkiAw3Fj28cwi1Sqm8ED1RtERtpdXmRfwIBGmqBSN5MoeRUHuwHPppMtbPayPgpFcvD7/Gdc9doO5fGYgw== - 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/providers@5.5.0": - version "5.5.0" - resolved "https://registry.yarnpkg.com/@ethersproject/providers/-/providers-5.5.0.tgz#bc2876a8fe5e0053ed9828b1f3767ae46e43758b" - integrity sha512-xqMbDnS/FPy+J/9mBLKddzyLLAQFjrVff5g00efqxPzcAwXiR+SiCGVy6eJ5iAIirBOATjx7QLhDNPGV+AEQsw== - dependencies: - "@ethersproject/abstract-provider" "^5.5.0" - "@ethersproject/abstract-signer" "^5.5.0" - "@ethersproject/address" "^5.5.0" - "@ethersproject/basex" "^5.5.0" - "@ethersproject/bignumber" "^5.5.0" - "@ethersproject/bytes" "^5.5.0" - "@ethersproject/constants" "^5.5.0" - "@ethersproject/hash" "^5.5.0" - "@ethersproject/logger" "^5.5.0" - "@ethersproject/networks" "^5.5.0" - "@ethersproject/properties" "^5.5.0" - "@ethersproject/random" "^5.5.0" - "@ethersproject/rlp" "^5.5.0" - "@ethersproject/sha2" "^5.5.0" - "@ethersproject/strings" "^5.5.0" - "@ethersproject/transactions" "^5.5.0" - "@ethersproject/web" "^5.5.0" +"@ethersproject/providers@5.7.1": + version "5.7.1" + resolved "https://registry.yarnpkg.com/@ethersproject/providers/-/providers-5.7.1.tgz#b0799b616d5579cd1067a8ebf1fc1ec74c1e122c" + integrity sha512-vZveG/DLyo+wk4Ga1yx6jSEHrLPgmTt+dFv0dv8URpVCRf0jVhalps1jq/emN/oXnMRsC7cQgAF32DcXLL7BPQ== + dependencies: + "@ethersproject/abstract-provider" "^5.7.0" + "@ethersproject/abstract-signer" "^5.7.0" + "@ethersproject/address" "^5.7.0" + "@ethersproject/base64" "^5.7.0" + "@ethersproject/basex" "^5.7.0" + "@ethersproject/bignumber" "^5.7.0" + "@ethersproject/bytes" "^5.7.0" + "@ethersproject/constants" "^5.7.0" + "@ethersproject/hash" "^5.7.0" + "@ethersproject/logger" "^5.7.0" + "@ethersproject/networks" "^5.7.0" + "@ethersproject/properties" "^5.7.0" + "@ethersproject/random" "^5.7.0" + "@ethersproject/rlp" "^5.7.0" + "@ethersproject/sha2" "^5.7.0" + "@ethersproject/strings" "^5.7.0" + "@ethersproject/transactions" "^5.7.0" + "@ethersproject/web" "^5.7.0" bech32 "1.1.4" ws "7.4.6" -"@ethersproject/random@5.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== +"@ethersproject/random@5.7.0", "@ethersproject/random@^5.7.0": + version "5.7.0" + resolved "https://registry.yarnpkg.com/@ethersproject/random/-/random-5.7.0.tgz#af19dcbc2484aae078bb03656ec05df66253280c" + integrity sha512-19WjScqRA8IIeWclFme75VMXSBvi4e6InrUNuaR4s5pTF2qNhcGdCUwdxUVGtDDqC00sDLCO93jPQoDUH4HVmQ== dependencies: - "@ethersproject/bytes" "^5.4.0" - "@ethersproject/logger" "^5.4.0" + "@ethersproject/bytes" "^5.7.0" + "@ethersproject/logger" "^5.7.0" -"@ethersproject/random@5.5.0", "@ethersproject/random@^5.4.0", "@ethersproject/random@^5.5.0": - version "5.5.0" - resolved "https://registry.yarnpkg.com/@ethersproject/random/-/random-5.5.0.tgz#305ed9e033ca537735365ac12eed88580b0f81f9" - integrity sha512-egGYZwZ/YIFKMHcoBUo8t3a8Hb/TKYX8BCBoLjudVCZh892welR3jOxgOmb48xznc9bTcMm7Tpwc1gHC1PFNFQ== +"@ethersproject/rlp@5.7.0", "@ethersproject/rlp@^5.7.0": + version "5.7.0" + resolved "https://registry.yarnpkg.com/@ethersproject/rlp/-/rlp-5.7.0.tgz#de39e4d5918b9d74d46de93af80b7685a9c21304" + integrity sha512-rBxzX2vK8mVF7b0Tol44t5Tb8gomOHkj5guL+HhzQ1yBh/ydjGnpw6at+X6Iw0Kp3OzzzkcKp8N9r0W4kYSs9w== dependencies: - "@ethersproject/bytes" "^5.5.0" - "@ethersproject/logger" "^5.5.0" + "@ethersproject/bytes" "^5.7.0" + "@ethersproject/logger" "^5.7.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== +"@ethersproject/sha2@5.7.0", "@ethersproject/sha2@^5.7.0": + version "5.7.0" + resolved "https://registry.yarnpkg.com/@ethersproject/sha2/-/sha2-5.7.0.tgz#9a5f7a7824ef784f7f7680984e593a800480c9fb" + integrity sha512-gKlH42riwb3KYp0reLsFTokByAKoJdgFCwI+CCiX/k+Jm2mbNs6oOaCjYQSlI1+XBVejwH2KrmCbMAT/GnRDQw== dependencies: - "@ethersproject/bytes" "^5.4.0" - "@ethersproject/logger" "^5.4.0" - -"@ethersproject/rlp@5.5.0", "@ethersproject/rlp@^5.4.0", "@ethersproject/rlp@^5.5.0": - version "5.5.0" - resolved "https://registry.yarnpkg.com/@ethersproject/rlp/-/rlp-5.5.0.tgz#530f4f608f9ca9d4f89c24ab95db58ab56ab99a0" - integrity sha512-hLv8XaQ8PTI9g2RHoQGf/WSxBfTB/NudRacbzdxmst5VHAqd1sMibWG7SENzT5Dj3yZ3kJYx+WiRYEcQTAkcYA== - dependencies: - "@ethersproject/bytes" "^5.5.0" - "@ethersproject/logger" "^5.5.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" + "@ethersproject/bytes" "^5.7.0" + "@ethersproject/logger" "^5.7.0" hash.js "1.1.7" -"@ethersproject/sha2@5.5.0", "@ethersproject/sha2@^5.4.0", "@ethersproject/sha2@^5.5.0": - version "5.5.0" - resolved "https://registry.yarnpkg.com/@ethersproject/sha2/-/sha2-5.5.0.tgz#a40a054c61f98fd9eee99af2c3cc6ff57ec24db7" - integrity sha512-B5UBoglbCiHamRVPLA110J+2uqsifpZaTmid2/7W5rbtYVz6gus6/hSDieIU/6gaKIDcOj12WnOdiymEUHIAOA== +"@ethersproject/signing-key@5.7.0", "@ethersproject/signing-key@^5.7.0": + version "5.7.0" + resolved "https://registry.yarnpkg.com/@ethersproject/signing-key/-/signing-key-5.7.0.tgz#06b2df39411b00bc57c7c09b01d1e41cf1b16ab3" + integrity sha512-MZdy2nL3wO0u7gkB4nA/pEf8lu1TlFswPNmy8AiYkfKTdO6eXBJyUdmHO/ehm/htHw9K/qF8ujnTyUAD+Ry54Q== dependencies: - "@ethersproject/bytes" "^5.5.0" - "@ethersproject/logger" "^5.5.0" - hash.js "1.1.7" - -"@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" + "@ethersproject/bytes" "^5.7.0" + "@ethersproject/logger" "^5.7.0" + "@ethersproject/properties" "^5.7.0" + bn.js "^5.2.1" elliptic "6.5.4" hash.js "1.1.7" -"@ethersproject/signing-key@5.5.0", "@ethersproject/signing-key@^5.4.0", "@ethersproject/signing-key@^5.5.0": - version "5.5.0" - resolved "https://registry.yarnpkg.com/@ethersproject/signing-key/-/signing-key-5.5.0.tgz#2aa37169ce7e01e3e80f2c14325f624c29cedbe0" - integrity sha512-5VmseH7qjtNmDdZBswavhotYbWB0bOwKIlOTSlX14rKn5c11QmJwGt4GHeo7NrL/Ycl7uo9AHvEqs5xZgFBTng== - dependencies: - "@ethersproject/bytes" "^5.5.0" - "@ethersproject/logger" "^5.5.0" - "@ethersproject/properties" "^5.5.0" - bn.js "^4.11.9" - elliptic "6.5.4" - hash.js "1.1.7" - -"@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/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/solidity@5.5.0": - version "5.5.0" - resolved "https://registry.yarnpkg.com/@ethersproject/solidity/-/solidity-5.5.0.tgz#2662eb3e5da471b85a20531e420054278362f93f" - integrity sha512-9NgZs9LhGMj6aCtHXhtmFQ4AN4sth5HuFXVvAQtzmm0jpSCNOTGtrHZJAeYTh7MBjRR8brylWZxBZR9zDStXbw== - dependencies: - "@ethersproject/bignumber" "^5.5.0" - "@ethersproject/bytes" "^5.5.0" - "@ethersproject/keccak256" "^5.5.0" - "@ethersproject/logger" "^5.5.0" - "@ethersproject/sha2" "^5.5.0" - "@ethersproject/strings" "^5.5.0" - -"@ethersproject/strings@5.4.0", "@ethersproject/strings@^5.0.4": - 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/strings@5.5.0", "@ethersproject/strings@^5.4.0", "@ethersproject/strings@^5.5.0": - version "5.5.0" - resolved "https://registry.yarnpkg.com/@ethersproject/strings/-/strings-5.5.0.tgz#e6784d00ec6c57710755699003bc747e98c5d549" - integrity sha512-9fy3TtF5LrX/wTrBaT8FGE6TDJyVjOvXynXJz5MT5azq+E6D92zuKNx7i29sWW2FjVOaWjAsiZ1ZWznuduTIIQ== - dependencies: - "@ethersproject/bytes" "^5.5.0" - "@ethersproject/constants" "^5.5.0" - "@ethersproject/logger" "^5.5.0" - -"@ethersproject/transactions@5.4.0", "@ethersproject/transactions@^5.0.0-beta.135": - 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.5.0", "@ethersproject/transactions@^5.4.0", "@ethersproject/transactions@^5.5.0": - version "5.5.0" - resolved "https://registry.yarnpkg.com/@ethersproject/transactions/-/transactions-5.5.0.tgz#7e9bf72e97bcdf69db34fe0d59e2f4203c7a2908" - integrity sha512-9RZYSKX26KfzEd/1eqvv8pLauCKzDTub0Ko4LfIgaERvRuwyaNV78mJs7cpIgZaDl6RJui4o49lHwwCM0526zA== - dependencies: - "@ethersproject/address" "^5.5.0" - "@ethersproject/bignumber" "^5.5.0" - "@ethersproject/bytes" "^5.5.0" - "@ethersproject/constants" "^5.5.0" - "@ethersproject/keccak256" "^5.5.0" - "@ethersproject/logger" "^5.5.0" - "@ethersproject/properties" "^5.5.0" - "@ethersproject/rlp" "^5.5.0" - "@ethersproject/signing-key" "^5.5.0" - -"@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/units@5.5.0": - version "5.5.0" - resolved "https://registry.yarnpkg.com/@ethersproject/units/-/units-5.5.0.tgz#104d02db5b5dc42cc672cc4587bafb87a95ee45e" - integrity sha512-7+DpjiZk4v6wrikj+TCyWWa9dXLNU73tSTa7n0TSJDxkYbV3Yf1eRh9ToMLlZtuctNYu9RDNNy2USq3AdqSbag== - dependencies: - "@ethersproject/bignumber" "^5.5.0" - "@ethersproject/constants" "^5.5.0" - "@ethersproject/logger" "^5.5.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/wallet@5.5.0": - version "5.5.0" - resolved "https://registry.yarnpkg.com/@ethersproject/wallet/-/wallet-5.5.0.tgz#322a10527a440ece593980dca6182f17d54eae75" - integrity sha512-Mlu13hIctSYaZmUOo7r2PhNSd8eaMPVXe1wxrz4w4FCE4tDYBywDH+bAR1Xz2ADyXGwqYMwstzTrtUVIsKDO0Q== - dependencies: - "@ethersproject/abstract-provider" "^5.5.0" - "@ethersproject/abstract-signer" "^5.5.0" - "@ethersproject/address" "^5.5.0" - "@ethersproject/bignumber" "^5.5.0" - "@ethersproject/bytes" "^5.5.0" - "@ethersproject/hash" "^5.5.0" - "@ethersproject/hdnode" "^5.5.0" - "@ethersproject/json-wallets" "^5.5.0" - "@ethersproject/keccak256" "^5.5.0" - "@ethersproject/logger" "^5.5.0" - "@ethersproject/properties" "^5.5.0" - "@ethersproject/random" "^5.5.0" - "@ethersproject/signing-key" "^5.5.0" - "@ethersproject/transactions" "^5.5.0" - "@ethersproject/wordlists" "^5.5.0" - -"@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/web@5.5.0", "@ethersproject/web@^5.4.0", "@ethersproject/web@^5.5.0": - version "5.5.0" - resolved "https://registry.yarnpkg.com/@ethersproject/web/-/web-5.5.0.tgz#0e5bb21a2b58fb4960a705bfc6522a6acf461e28" - integrity sha512-BEgY0eL5oH4mAo37TNYVrFeHsIXLRxggCRG/ksRIxI2X5uj5IsjGmcNiRN/VirQOlBxcUhCgHhaDLG4m6XAVoA== - dependencies: - "@ethersproject/base64" "^5.5.0" - "@ethersproject/bytes" "^5.5.0" - "@ethersproject/logger" "^5.5.0" - "@ethersproject/properties" "^5.5.0" - "@ethersproject/strings" "^5.5.0" - -"@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" - -"@ethersproject/wordlists@5.5.0", "@ethersproject/wordlists@^5.4.0", "@ethersproject/wordlists@^5.5.0": - version "5.5.0" - resolved "https://registry.yarnpkg.com/@ethersproject/wordlists/-/wordlists-5.5.0.tgz#aac74963aa43e643638e5172353d931b347d584f" - integrity sha512-bL0UTReWDiaQJJYOC9sh/XcRu/9i2jMrzf8VLRmPKx58ckSlOJiohODkECCO50dtLZHcGU6MLXQ4OOrgBwP77Q== - dependencies: - "@ethersproject/bytes" "^5.5.0" - "@ethersproject/hash" "^5.5.0" - "@ethersproject/logger" "^5.5.0" - "@ethersproject/properties" "^5.5.0" - "@ethersproject/strings" "^5.5.0" - -"@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.1.2": - version "7.1.2" - resolved "https://registry.yarnpkg.com/@graphql-tools/batch-execute/-/batch-execute-7.1.2.tgz#35ba09a1e0f80f34f1ce111d23c40f039d4403a0" - integrity sha512-IuR2SB2MnC2ztA/XeTMTfWcA0Wy7ZH5u+nDkDNLAdX+AaSyDnsQS35sCmHqG0VOGTl7rzoyBWLCKGwSJplgtwg== - dependencies: - "@graphql-tools/utils" "^7.7.0" - dataloader "2.0.0" - tslib "~2.2.0" - value-or-promise "1.0.6" - -"@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.1.5": - version "7.1.5" - resolved "https://registry.yarnpkg.com/@graphql-tools/delegate/-/delegate-7.1.5.tgz#0b027819b7047eff29bacbd5032e34a3d64bd093" - integrity sha512-bQu+hDd37e+FZ0CQGEEczmRSfQRnnXeUxI/0miDV+NV/zCbEdIJj5tYFNrKT03W6wgdqx8U06d8L23LxvGri/g== - dependencies: - "@ardatan/aggregate-error" "0.0.6" - "@graphql-tools/batch-execute" "^7.1.2" - "@graphql-tools/schema" "^7.1.5" - "@graphql-tools/utils" "^7.7.1" - dataloader "2.0.0" - tslib "~2.2.0" - value-or-promise "1.0.6" - -"@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.5.2" - resolved "https://registry.yarnpkg.com/@graphql-tools/import/-/import-6.5.2.tgz#0f1a88d415c74add711eeda78154ad3b30795fa1" - integrity sha512-Hi3aEWHK6B83d+mjO7CdX1xhaBwEon3ZLc9Ch1ivrU7vay84k6UQkoY/B4NdOZuLKrKlt920UtoDbGoZFFYlHA== - dependencies: - "@graphql-tools/utils" "8.2.5" - resolve-from "5.0.0" - tslib "~2.3.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.5.1" - resolved "https://registry.yarnpkg.com/@graphql-tools/load-files/-/load-files-6.5.1.tgz#f0945f995a339a7adf6d310b87dd8f2d1fcd17a9" - integrity sha512-d+wMq/t2o4VctfKl4ZaCq0djKOErzvw9WI56HjKpoVji7zRz+WCbs1EgZjVneas+Cvf14cPvBTheFuL9j7w46w== - dependencies: - globby "11.0.4" - tslib "~2.3.0" - unixify "1.0.0" - -"@graphql-tools/load@^6.2.4": - version "6.2.8" - resolved "https://registry.yarnpkg.com/@graphql-tools/load/-/load-6.2.8.tgz#16900fb6e75e1d075cad8f7ea439b334feb0b96a" - integrity sha512-JpbyXOXd8fJXdBh2ta0Q4w8ia6uK5FHzrTNmcvYBvflFuWly2LDTk2abbSl81zKkzswQMEd2UIYghXELRg8eTA== - dependencies: - "@graphql-tools/merge" "^6.2.12" - "@graphql-tools/utils" "^7.5.0" - globby "11.0.3" - import-from "3.0.0" - is-glob "4.0.1" - p-limit "3.1.0" - tslib "~2.2.0" - unixify "1.0.0" - valid-url "1.0.9" - -"@graphql-tools/merge@^6.2.12", "@graphql-tools/merge@^6.2.4": - version "6.2.17" - resolved "https://registry.yarnpkg.com/@graphql-tools/merge/-/merge-6.2.17.tgz#4dedf87d8435a5e1091d7cc8d4f371ed1e029f1f" - integrity sha512-G5YrOew39fZf16VIrc49q3c8dBqQDD0ax5LYPiNja00xsXDi0T9zsEWVt06ApjtSdSF6HDddlu5S12QjeN8Tow== - dependencies: - "@graphql-tools/schema" "^8.0.2" - "@graphql-tools/utils" "8.0.2" - tslib "~2.3.0" - -"@graphql-tools/merge@^8.1.0": - version "8.1.2" - resolved "https://registry.yarnpkg.com/@graphql-tools/merge/-/merge-8.1.2.tgz#50f5763927c51de764d09c5bfd20261671976e24" - integrity sha512-kFLd4kKNJXYXnKIhM8q9zgGAtbLmsy3WmGdDxYq3YHBJUogucAxnivQYyRIseUq37KGmSAIWu3pBQ23TKGsGOw== - dependencies: - "@graphql-tools/utils" "^8.2.2" - tslib "~2.3.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.4.0" - resolved "https://registry.yarnpkg.com/@graphql-tools/relay-operation-optimizer/-/relay-operation-optimizer-6.4.0.tgz#3ef4d7ec0620239f3a4e9b9acfa3c263636c5ad2" - integrity sha512-auNvHC8gHu9BHBPnLA5c8Iv5VAXQG866KZJz7ljhKpXPdlPevK4zjHlVJwqnF8H6clJ9NgZpizN4kNNCe/3R9g== - dependencies: - "@graphql-tools/utils" "^8.2.0" - relay-compiler "11.0.2" - tslib "~2.3.0" - -"@graphql-tools/resolvers-composition@^6.2.4": - version "6.4.0" - resolved "https://registry.yarnpkg.com/@graphql-tools/resolvers-composition/-/resolvers-composition-6.4.0.tgz#f45a1e7fa0232ff5d160c711063ae0b178910014" - integrity sha512-YkAmpIzyFtto9aDp/FysuyPb/tPba/gXYYvlN2vdBkE9nRU8ms8Fwhnroek0pW5ipjZAhpQZsZPVVpzSwldj3A== - dependencies: - "@graphql-tools/utils" "^8.2.0" - lodash "4.17.21" - micromatch "^4.0.4" - tslib "~2.3.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.1.5": - version "7.1.5" - resolved "https://registry.yarnpkg.com/@graphql-tools/schema/-/schema-7.1.5.tgz#07b24e52b182e736a6b77c829fc48b84d89aa711" - integrity sha512-uyn3HSNSckf4mvQSq0Q07CPaVZMNFCYEVxroApOaw802m9DcZPgf9XVPy/gda5GWj9AhbijfRYVTZQgHnJ4CXA== - dependencies: - "@graphql-tools/utils" "^7.1.2" - tslib "~2.2.0" - value-or-promise "1.0.6" - -"@graphql-tools/schema@^8.0.2": - version "8.2.0" - resolved "https://registry.yarnpkg.com/@graphql-tools/schema/-/schema-8.2.0.tgz#ae75cbb2df6cee9ed6d89fce56be467ab23758dc" - integrity sha512-ufmI5mJQa8NJczzfkh0pUttKvspqDcT5LLakA3jUmOrrE4d4NVj6onZlazdTzF5sAepSNqanFnwhrxZpCAJMKg== - dependencies: - "@graphql-tools/merge" "^8.1.0" - "@graphql-tools/utils" "^8.2.0" - tslib "~2.3.0" - value-or-promise "1.0.10" - -"@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.10.1" - resolved "https://registry.yarnpkg.com/@graphql-tools/url-loader/-/url-loader-6.10.1.tgz#dc741e4299e0e7ddf435eba50a1f713b3e763b33" - integrity sha512-DSDrbhQIv7fheQ60pfDpGD256ixUQIR6Hhf9Z5bRjVkXOCvO5XrkwoWLiU7iHL81GB1r0Ba31bf+sl+D4nyyfw== - dependencies: - "@graphql-tools/delegate" "^7.0.1" - "@graphql-tools/utils" "^7.9.0" - "@graphql-tools/wrap" "^7.0.4" - "@microsoft/fetch-event-source" "2.0.1" - "@types/websocket" "1.0.2" - abort-controller "3.0.0" - cross-fetch "3.1.4" - extract-files "9.0.0" - form-data "4.0.0" - graphql-ws "^4.4.1" - is-promise "4.0.0" - isomorphic-ws "4.0.1" - lodash "4.17.21" - meros "1.1.4" - subscriptions-transport-ws "^0.9.18" - sync-fetch "0.3.0" - tslib "~2.2.0" - valid-url "1.0.9" - ws "7.4.5" - -"@graphql-tools/utils@8.0.2": - version "8.0.2" - resolved "https://registry.yarnpkg.com/@graphql-tools/utils/-/utils-8.0.2.tgz#795a8383cdfdc89855707d62491c576f439f3c51" - integrity sha512-gzkavMOgbhnwkHJYg32Adv6f+LxjbQmmbdD5Hty0+CWxvaiuJq+nU6tzb/7VSU4cwhbNLx/lGu2jbCPEW1McZQ== - dependencies: - tslib "~2.3.0" - -"@graphql-tools/utils@8.2.5", "@graphql-tools/utils@^8.2.0", "@graphql-tools/utils@^8.2.2": - version "8.2.5" - resolved "https://registry.yarnpkg.com/@graphql-tools/utils/-/utils-8.2.5.tgz#695e6d760c1187ad2b159d5d3c4696eff9c08a27" - integrity sha512-k/Rktklhy22dQfbJLKiLGfQymQCTr6Rd2BilC7g2Yk6wFSzVLYr8jeXNoTD+/p61XBQzBjTVayskvaMvNS3BDg== - dependencies: - tslib "~2.3.0" - -"@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.2", "@graphql-tools/utils@^7.5.0", "@graphql-tools/utils@^7.7.0", "@graphql-tools/utils@^7.7.1", "@graphql-tools/utils@^7.8.1", "@graphql-tools/utils@^7.9.0": - version "7.10.0" - resolved "https://registry.yarnpkg.com/@graphql-tools/utils/-/utils-7.10.0.tgz#07a4cb5d1bec1ff1dc1d47a935919ee6abd38699" - integrity sha512-d334r6bo9mxdSqZW6zWboEnnOOFRrAPVQJ7LkU8/6grglrbcu6WhwCLzHb90E94JI3TD3ricC3YGbUqIi9Xg0w== - dependencies: - "@ardatan/aggregate-error" "0.0.6" - camel-case "4.1.2" - tslib "~2.2.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.8" - resolved "https://registry.yarnpkg.com/@graphql-tools/wrap/-/wrap-7.0.8.tgz#ad41e487135ca3ea1ae0ea04bb3f596177fb4f50" - integrity sha512-1NDUymworsOlb53Qfh7fonDi2STvqCtbeE68ntKY9K/Ju/be2ZNxrFSbrBHwnxWcN9PjISNnLcAyJ1L5tCUyhg== - dependencies: - "@graphql-tools/delegate" "^7.1.5" - "@graphql-tools/schema" "^7.1.5" - "@graphql-tools/utils" "^7.8.1" - tslib "~2.2.0" - value-or-promise "1.0.6" - -"@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.1" - resolved "https://registry.yarnpkg.com/@improbable-eng/grpc-web/-/grpc-web-0.14.1.tgz#f4662f64dc89c0f956a94bb8a3b576556c74589c" - integrity sha512-XaIYuunepPxoiGVLLHmlnVminUGzBTnXr8Wv7khzmLWbNw4TCwJKX09GSMJlKhu/TRk6gms0ySFxewaETSBqgw== - dependencies: - browser-headers "^0.4.1" - -"@ipld/car@^3.1.0": - version "3.2.4" - resolved "https://registry.yarnpkg.com/@ipld/car/-/car-3.2.4.tgz#115951ba2255ec51d865773a074e422c169fb01c" - integrity sha512-rezKd+jk8AsTGOoJKqzfjLJ3WVft7NZNH95f0pfPbicROvzTyvHCNy567HzSUd6gRXZ9im29z5ZEv9Hw49jSYw== +"@ethersproject/solidity@5.7.0": + version "5.7.0" + resolved "https://registry.yarnpkg.com/@ethersproject/solidity/-/solidity-5.7.0.tgz#5e9c911d8a2acce2a5ebb48a5e2e0af20b631cb8" + integrity sha512-HmabMd2Dt/raavyaGukF4XxizWKhKQ24DoLtdNbBmNKUOPqwjsKQSdV9GQtj9CBEea9DlzETlVER1gYeXXBGaA== + dependencies: + "@ethersproject/bignumber" "^5.7.0" + "@ethersproject/bytes" "^5.7.0" + "@ethersproject/keccak256" "^5.7.0" + "@ethersproject/logger" "^5.7.0" + "@ethersproject/sha2" "^5.7.0" + "@ethersproject/strings" "^5.7.0" + +"@ethersproject/strings@5.7.0", "@ethersproject/strings@^5.7.0": + version "5.7.0" + resolved "https://registry.yarnpkg.com/@ethersproject/strings/-/strings-5.7.0.tgz#54c9d2a7c57ae8f1205c88a9d3a56471e14d5ed2" + integrity sha512-/9nu+lj0YswRNSH0NXYqrh8775XNyEdUQAuf3f+SmOrnVewcJ5SBNAjF7lpgehKi4abvNNXyf+HX86czCdJ8Mg== + dependencies: + "@ethersproject/bytes" "^5.7.0" + "@ethersproject/constants" "^5.7.0" + "@ethersproject/logger" "^5.7.0" + +"@ethersproject/transactions@5.7.0", "@ethersproject/transactions@^5.6.2", "@ethersproject/transactions@^5.7.0": + version "5.7.0" + resolved "https://registry.yarnpkg.com/@ethersproject/transactions/-/transactions-5.7.0.tgz#91318fc24063e057885a6af13fdb703e1f993d3b" + integrity sha512-kmcNicCp1lp8qanMTC3RIikGgoJ80ztTyvtsFvCYpSCfkjhD0jZ2LOrnbcuxuToLIUYYf+4XwD1rP+B/erDIhQ== + dependencies: + "@ethersproject/address" "^5.7.0" + "@ethersproject/bignumber" "^5.7.0" + "@ethersproject/bytes" "^5.7.0" + "@ethersproject/constants" "^5.7.0" + "@ethersproject/keccak256" "^5.7.0" + "@ethersproject/logger" "^5.7.0" + "@ethersproject/properties" "^5.7.0" + "@ethersproject/rlp" "^5.7.0" + "@ethersproject/signing-key" "^5.7.0" + +"@ethersproject/units@5.7.0": + version "5.7.0" + resolved "https://registry.yarnpkg.com/@ethersproject/units/-/units-5.7.0.tgz#637b563d7e14f42deeee39245275d477aae1d8b1" + integrity sha512-pD3xLMy3SJu9kG5xDGI7+xhTEmGXlEqXU4OfNapmfnxLVY4EMSSRp7j1k7eezutBPH7RBN/7QPnwR7hzNlEFeg== + dependencies: + "@ethersproject/bignumber" "^5.7.0" + "@ethersproject/constants" "^5.7.0" + "@ethersproject/logger" "^5.7.0" + +"@ethersproject/wallet@5.7.0": + version "5.7.0" + resolved "https://registry.yarnpkg.com/@ethersproject/wallet/-/wallet-5.7.0.tgz#4e5d0790d96fe21d61d38fb40324e6c7ef350b2d" + integrity sha512-MhmXlJXEJFBFVKrDLB4ZdDzxcBxQ3rLyCkhNqVu3CDYvR97E+8r01UgrI+TI99Le+aYm/in/0vp86guJuM7FCA== + dependencies: + "@ethersproject/abstract-provider" "^5.7.0" + "@ethersproject/abstract-signer" "^5.7.0" + "@ethersproject/address" "^5.7.0" + "@ethersproject/bignumber" "^5.7.0" + "@ethersproject/bytes" "^5.7.0" + "@ethersproject/hash" "^5.7.0" + "@ethersproject/hdnode" "^5.7.0" + "@ethersproject/json-wallets" "^5.7.0" + "@ethersproject/keccak256" "^5.7.0" + "@ethersproject/logger" "^5.7.0" + "@ethersproject/properties" "^5.7.0" + "@ethersproject/random" "^5.7.0" + "@ethersproject/signing-key" "^5.7.0" + "@ethersproject/transactions" "^5.7.0" + "@ethersproject/wordlists" "^5.7.0" + +"@ethersproject/web@5.7.1", "@ethersproject/web@^5.7.0": + version "5.7.1" + resolved "https://registry.yarnpkg.com/@ethersproject/web/-/web-5.7.1.tgz#de1f285b373149bee5928f4eb7bcb87ee5fbb4ae" + integrity sha512-Gueu8lSvyjBWL4cYsWsjh6MtMwM0+H4HvqFPZfB6dV8ctbP9zFAO73VG1cMWae0FLPCtz0peKPpZY8/ugJJX2w== + dependencies: + "@ethersproject/base64" "^5.7.0" + "@ethersproject/bytes" "^5.7.0" + "@ethersproject/logger" "^5.7.0" + "@ethersproject/properties" "^5.7.0" + "@ethersproject/strings" "^5.7.0" + +"@ethersproject/wordlists@5.7.0", "@ethersproject/wordlists@^5.7.0": + version "5.7.0" + resolved "https://registry.yarnpkg.com/@ethersproject/wordlists/-/wordlists-5.7.0.tgz#8fb2c07185d68c3e09eb3bfd6e779ba2774627f5" + integrity sha512-S2TFNJNfHWVHNE6cNDjbVlZ6MgE17MIxMbMg2zv3wn+3XSJGosL1m9ZVv3GXCf/2ymSsQ+hRI5IzoMJTG6aoVA== + dependencies: + "@ethersproject/bytes" "^5.7.0" + "@ethersproject/hash" "^5.7.0" + "@ethersproject/logger" "^5.7.0" + "@ethersproject/properties" "^5.7.0" + "@ethersproject/strings" "^5.7.0" + +"@graphql-tools/batch-execute@8.5.1": + version "8.5.1" + resolved "https://registry.yarnpkg.com/@graphql-tools/batch-execute/-/batch-execute-8.5.1.tgz#fa3321d58c64041650be44250b1ebc3aab0ba7a9" + integrity sha512-hRVDduX0UDEneVyEWtc2nu5H2PxpfSfM/riUlgZvo/a/nG475uyehxR5cFGvTEPEQUKY3vGIlqvtRigzqTfCew== + dependencies: + "@graphql-tools/utils" "8.9.0" + dataloader "2.1.0" + tslib "^2.4.0" + value-or-promise "1.0.11" + +"@graphql-tools/delegate@^8.4.3": + version "8.8.1" + resolved "https://registry.yarnpkg.com/@graphql-tools/delegate/-/delegate-8.8.1.tgz#0653a72f38947f38ab7917dfac50ebf6a6b883e9" + integrity sha512-NDcg3GEQmdEHlnF7QS8b4lM1PSF+DKeFcIlLEfZFBvVq84791UtJcDj8734sIHLukmyuAxXMfA1qLd2l4lZqzA== + dependencies: + "@graphql-tools/batch-execute" "8.5.1" + "@graphql-tools/schema" "8.5.1" + "@graphql-tools/utils" "8.9.0" + dataloader "2.1.0" + tslib "~2.4.0" + value-or-promise "1.0.11" + +"@graphql-tools/merge@8.3.1": + version "8.3.1" + resolved "https://registry.yarnpkg.com/@graphql-tools/merge/-/merge-8.3.1.tgz#06121942ad28982a14635dbc87b5d488a041d722" + integrity sha512-BMm99mqdNZbEYeTPK3it9r9S6rsZsQKtlqJsSBknAclXq2pGEfOxjcIZi+kBSkHZKPKCRrYDd5vY0+rUmIHVLg== + dependencies: + "@graphql-tools/utils" "8.9.0" + tslib "^2.4.0" + +"@graphql-tools/merge@8.3.6": + version "8.3.6" + resolved "https://registry.yarnpkg.com/@graphql-tools/merge/-/merge-8.3.6.tgz#97a936d4c8e8f935e58a514bb516c476437b5b2c" + integrity sha512-uUBokxXi89bj08P+iCvQk3Vew4vcfL5ZM6NTylWi8PIpoq4r5nJ625bRuN8h2uubEdRiH8ntN9M4xkd/j7AybQ== + dependencies: + "@graphql-tools/utils" "8.12.0" + tslib "^2.4.0" + +"@graphql-tools/mock@^8.1.2": + version "8.7.6" + resolved "https://registry.yarnpkg.com/@graphql-tools/mock/-/mock-8.7.6.tgz#701d898f7fe6c22e40d6d80e25874e464359ce11" + integrity sha512-cQGPyY6dF4x28552zjAg9En2WWVury62u1/xzipCNUSCdKRVOsAupTNBcAGdMjsKPLcGzzk1cPA8dP0DUfNqzg== + dependencies: + "@graphql-tools/schema" "9.0.4" + "@graphql-tools/utils" "8.12.0" + fast-json-stable-stringify "^2.1.0" + tslib "^2.4.0" + +"@graphql-tools/schema@8.5.1", "@graphql-tools/schema@^8.0.0", "@graphql-tools/schema@^8.3.1": + version "8.5.1" + resolved "https://registry.yarnpkg.com/@graphql-tools/schema/-/schema-8.5.1.tgz#c2f2ff1448380919a330312399c9471db2580b58" + integrity sha512-0Esilsh0P/qYcB5DKQpiKeQs/jevzIadNTaT0jeWklPMwNbT7yMX4EqZany7mbeRRlSRwMzNzL5olyFdffHBZg== + dependencies: + "@graphql-tools/merge" "8.3.1" + "@graphql-tools/utils" "8.9.0" + tslib "^2.4.0" + value-or-promise "1.0.11" + +"@graphql-tools/schema@9.0.4": + version "9.0.4" + resolved "https://registry.yarnpkg.com/@graphql-tools/schema/-/schema-9.0.4.tgz#1a74608b57abf90fae6fd929d25e5482c57bc05d" + integrity sha512-B/b8ukjs18fq+/s7p97P8L1VMrwapYc3N2KvdG/uNThSazRRn8GsBK0Nr+FH+mVKiUfb4Dno79e3SumZVoHuOQ== + dependencies: + "@graphql-tools/merge" "8.3.6" + "@graphql-tools/utils" "8.12.0" + tslib "^2.4.0" + value-or-promise "1.0.11" + +"@graphql-tools/utils@8.12.0": + version "8.12.0" + resolved "https://registry.yarnpkg.com/@graphql-tools/utils/-/utils-8.12.0.tgz#243bc4f5fc2edbc9e8fd1038189e57d837cbe31f" + integrity sha512-TeO+MJWGXjUTS52qfK4R8HiPoF/R7X+qmgtOYd8DTH0l6b+5Y/tlg5aGeUJefqImRq7nvi93Ms40k/Uz4D5CWw== + dependencies: + tslib "^2.4.0" + +"@graphql-tools/utils@8.9.0": + version "8.9.0" + resolved "https://registry.yarnpkg.com/@graphql-tools/utils/-/utils-8.9.0.tgz#c6aa5f651c9c99e1aca55510af21b56ec296cdb7" + integrity sha512-pjJIWH0XOVnYGXCqej8g/u/tsfV4LvLlj0eATKQu5zwnxd/TiTHq7Cg313qUPTFFHZ3PP5wJ15chYVtLDwaymg== + dependencies: + tslib "^2.4.0" + +"@ipld/car@^4.1.0": + version "4.1.5" + resolved "https://registry.yarnpkg.com/@ipld/car/-/car-4.1.5.tgz#f0ae25121201a7681877c5bc35698f7f8c93e56e" + integrity sha512-PFj4XsKOsxu5h12JUoBJ+mrAVqeA8YYq2bZbcE2sAIopJTwJIB5sBVTmc8ylkUsFXEysZQ4xQD+rZb3Ct0lbjQ== dependencies: "@ipld/dag-cbor" "^7.0.0" + cborg "^1.9.0" multiformats "^9.5.4" varint "^6.0.0" -"@ipld/dag-cbor@^6.0.3", "@ipld/dag-cbor@^6.0.4": +"@ipld/dag-cbor@^6.0.3": version "6.0.15" resolved "https://registry.yarnpkg.com/@ipld/dag-cbor/-/dag-cbor-6.0.15.tgz#aebe7a26c391cae98c32faedb681b1519e3d2372" integrity sha512-Vm3VTSTwlmGV92a3C5aeY+r2A18zbH2amehNhsX8PBa3muXICaWrN8Uri85A5hLH7D7ElhE8PdjxD6kNqUmTZA== @@ -1919,26 +739,26 @@ cborg "^1.5.4" multiformats "^9.5.4" -"@ipld/dag-cbor@^7.0.0": - version "7.0.1" - resolved "https://registry.yarnpkg.com/@ipld/dag-cbor/-/dag-cbor-7.0.1.tgz#d46c6bbb9afa55c74a85d0117b4ab389ceb9083b" - integrity sha512-XqG8VEzHjQDC/Qcy5Gyf1kvAav5VuAugc6c7VtdaRLI+3d8lJrUP3F76GYJNNXuEnRZ58cCBnNNglkIGTdg1+A== +"@ipld/dag-cbor@^7.0.0", "@ipld/dag-cbor@^7.0.2": + version "7.0.3" + resolved "https://registry.yarnpkg.com/@ipld/dag-cbor/-/dag-cbor-7.0.3.tgz#aa31b28afb11a807c3d627828a344e5521ac4a1e" + integrity sha512-1VVh2huHsuohdXC1bGJNE8WR72slZ9XE2T3wbBBq31dm7ZBatmKLLxrB+XAqafxfRFjv08RZmj/W/ZqaM13AuA== dependencies: cborg "^1.6.0" multiformats "^9.5.4" "@ipld/dag-json@^8.0.1": - version "8.0.8" - resolved "https://registry.yarnpkg.com/@ipld/dag-json/-/dag-json-8.0.8.tgz#680f2981acf968772d23fe9634d8e3f1bcdc802a" - integrity sha512-oEtnvIO3Q6CtIJsWt2qSF6twW2vzlfuv+XWutfkWMvH0w+PFhxjtc3OWAyHnzzNQz5dXUzLe+xuyXKr0ab7gvA== + version "8.0.11" + resolved "https://registry.yarnpkg.com/@ipld/dag-json/-/dag-json-8.0.11.tgz#8d30cc2dfacb0aef04d327465d3df91e79e8b6ce" + integrity sha512-Pea7JXeYHTWXRTIhBqBlhw7G53PJ7yta3G/sizGEZyzdeEwhZRr0od5IQ0r2ZxOt1Do+2czddjeEPp+YTxDwCA== dependencies: cborg "^1.5.4" multiformats "^9.5.4" "@ipld/dag-pb@^2.0.0", "@ipld/dag-pb@^2.0.2", "@ipld/dag-pb@^2.1.0", "@ipld/dag-pb@^2.1.3": - version "2.1.16" - resolved "https://registry.yarnpkg.com/@ipld/dag-pb/-/dag-pb-2.1.16.tgz#7133fec4f1bbce8fedb859bc2d477a0a2401de93" - integrity sha512-5+A87ZsKZ2yEEjtW6LIzTgDJcm6O24d0lmXlubwtMblI5ZB+aTw7PH6kjc8fM6pbnNtVg4Y+c+WZ3zCxdesIBg== + version "2.1.18" + resolved "https://registry.yarnpkg.com/@ipld/dag-pb/-/dag-pb-2.1.18.tgz#12d63e21580e87c75fd1a2c62e375a78e355c16f" + integrity sha512-ZBnf2fuX9y3KccADURG5vb9FaOeMjFkCrNysB0PtftME/4iCTjxfaLoNq/IAh5fTqUOMXvryN6Jyka4ZGuMLIg== dependencies: multiformats "^9.5.4" @@ -1947,49 +767,28 @@ resolved "https://registry.yarnpkg.com/@josephg/resolvable/-/resolvable-1.0.1.tgz#69bc4db754d79e1a2f17a650d3466e038d94a5eb" integrity sha512-CtzORUwWTTOTqfVtHaKRJ0I1kNQd1bpn3sUh8I3nJDVY+5/M/Oe1DnEWzPQvqq/xPIIkzzzIP7mfCoAjFRvDhg== -"@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== +"@jridgewell/resolve-uri@^3.0.3": + version "3.1.0" + resolved "https://registry.yarnpkg.com/@jridgewell/resolve-uri/-/resolve-uri-3.1.0.tgz#2203b118c157721addfe69d47b70465463066d78" + integrity sha512-F2msla3tad+Mfht5cJq7LSXcdudKTWCVYUgw6pLFOOHSTtZlj6SWNYAp+AhuqLmWdBO2X5hPrLcu8cVP8fy28w== -"@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" +"@jridgewell/sourcemap-codec@^1.4.10": + version "1.4.14" + resolved "https://registry.yarnpkg.com/@jridgewell/sourcemap-codec/-/sourcemap-codec-1.4.14.tgz#add4c98d341472a289190b424efbdb096991bb24" + integrity sha512-XPSJHWmi394fuUuzDnGz1wiKqWfo1yXecHQMRf2l6hztTO+nPru658AyDngaBe7isIxEkRsPR3FZh+s7iVa4Uw== -"@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== +"@jridgewell/trace-mapping@^0.3.8": + version "0.3.15" + resolved "https://registry.yarnpkg.com/@jridgewell/trace-mapping/-/trace-mapping-0.3.15.tgz#aba35c48a38d3fd84b37e66c9c0423f9744f9774" + integrity sha512-oWZNOULl+UbhsgB51uuZzglikfIKSUBO/M9W2OfEjn7cmqoAiCgmv9lyACTUacZwBz0ITnJ2NqjU8Tx0DHL88g== 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== + "@jridgewell/resolve-uri" "^3.0.3" + "@jridgewell/sourcemap-codec" "^1.4.10" "@leichtgewicht/ip-codec@^2.0.1": - version "2.0.3" - resolved "https://registry.yarnpkg.com/@leichtgewicht/ip-codec/-/ip-codec-2.0.3.tgz#0300943770e04231041a51bd39f0439b5c7ab4f0" - integrity sha512-nkalE/f1RvRGChwBnEIoBfSEYOXnCRdleKuv6+lePbMDrMZXeDQnqak5XDOeBgrPPyPfAdcCu/B5z+v3VhplGg== + version "2.0.4" + resolved "https://registry.yarnpkg.com/@leichtgewicht/ip-codec/-/ip-codec-2.0.4.tgz#b2ac626d6cb9c8718ab459166d4bb405b8ffa78b" + integrity sha512-Hcv+nVC0kZnQ3tD9GVu5xSMR4VVYOteQIr/hwFPVEvPdlXqgGEuRjiheChHgdM+JyqdgNcmzZOX/tnl0JOiI7A== "@maticnetwork/eth-decoder@^0.0.4": version "0.0.4" @@ -1998,20 +797,21 @@ dependencies: ethers "^5.0.24" -"@microsoft/fetch-event-source@2.0.1": - version "2.0.1" - resolved "https://registry.yarnpkg.com/@microsoft/fetch-event-source/-/fetch-event-source-2.0.1.tgz#9ceecc94b49fbaa15666e38ae8587f64acce007d" - integrity sha512-W6CLUJ2eBMw3Rec70qrsEW0jOm/3twwJv21mrmj2yORiaVmVYGS4sSS5yUwvQc1ZlDLYGPnClVWmUUMagKNsfA== - -"@multiformats/base-x@^4.0.1": +"@metamask/eth-sig-util@^4.0.0": version "4.0.1" - resolved "https://registry.yarnpkg.com/@multiformats/base-x/-/base-x-4.0.1.tgz#95ff0fa58711789d53aefb2590a8b7a4e715d121" - integrity sha512-eMk0b9ReBbV23xXU693TAIrLyeO5iTgBZGSJfpqriG8UkYvr/hC9u9pyMlAakDNHWmbhMZCDs6KQO0jzKD8OTw== + resolved "https://registry.yarnpkg.com/@metamask/eth-sig-util/-/eth-sig-util-4.0.1.tgz#3ad61f6ea9ad73ba5b19db780d40d9aae5157088" + integrity sha512-tghyZKLHZjcdlDqCA3gNZmLeR0XvOE9U1qoQO9ohyAZT6Pya+H9vkBPcsyXytmYLNgVoin7CKCmweo/R43V+tQ== + dependencies: + ethereumjs-abi "^0.6.8" + ethereumjs-util "^6.2.1" + ethjs-util "^0.1.6" + tweetnacl "^1.0.3" + tweetnacl-util "^0.15.1" "@multiformats/murmur3@^1.0.3", "@multiformats/murmur3@^1.1.1": - version "1.1.1" - resolved "https://registry.yarnpkg.com/@multiformats/murmur3/-/murmur3-1.1.1.tgz#52a8ae168f495664af774df896be3708cbe7731e" - integrity sha512-TPIBMPX4DX7T4291bPUAn/AMW6H6mnYoI4Bza1DeX1I59dpTWBbOgxaqc+139Ph+NEgb/PNd3sFS8VFoOXzNlw== + version "1.1.3" + resolved "https://registry.yarnpkg.com/@multiformats/murmur3/-/murmur3-1.1.3.tgz#70349166992e5f981f1ddff0200fa775b2bf6606" + integrity sha512-wAPLUErGR8g6Lt+bAZn6218k9YQPym+sjszsXL6o4zfxbA22P+gxWZuuD9wDbwL55xrKO5idpcuQUX7/E3oHcw== dependencies: multiformats "^9.5.4" murmurhash3js-revisited "^3.0.0" @@ -2021,25 +821,32 @@ resolved "https://registry.yarnpkg.com/@nicolo-ribaudo/chokidar-2/-/chokidar-2-2.1.8-no-fsevents.3.tgz#323d72dd25103d0c4fbdce89dadf574a787b1f9b" integrity sha512-s88O1aVtXftvp5bCPB7WnmXc5IwOZZ7YPuwNPt+GtOOXpPvad1LfbmjYv+qII7zP6RU2QGnqve27dnLycEnyEQ== +"@nicolo-ribaudo/eslint-scope-5-internals@5.1.1-v1": + version "5.1.1-v1" + resolved "https://registry.yarnpkg.com/@nicolo-ribaudo/eslint-scope-5-internals/-/eslint-scope-5-internals-5.1.1-v1.tgz#dbf733a965ca47b1973177dc0bb6c889edcfb129" + integrity sha512-54/JRvkLIzzDWshCWfuhadfrfZVPiElY8Fcgmg1HroEly/EDSszzhBAsarCux+D/kOslTRquNzuyGSmUSTTHGg== + dependencies: + eslint-scope "5.1.1" + "@noble/ed25519@^1.5.1": - version "1.6.0" - resolved "https://registry.yarnpkg.com/@noble/ed25519/-/ed25519-1.6.0.tgz#b55f7c9e532b478bf1d7c4f609e1f3a37850b583" - integrity sha512-UKju89WV37IUALIMfKhKW3psO8AqmrE/GvH6QbPKjzolQ98zM7WmGUeY+xdIgSf5tqPFf75ZCYMgym6E9Jsw3Q== + version "1.7.1" + resolved "https://registry.yarnpkg.com/@noble/ed25519/-/ed25519-1.7.1.tgz#6899660f6fbb97798a6fbd227227c4589a454724" + integrity sha512-Rk4SkJFaXZiznFyC/t77Q0NKS4FL7TLJJsVG2V2oiEq3kJVeTdxysEe/yRWSpnWMe808XRDJ+VFh5pt/FN5plw== -"@noble/secp256k1@^1.3.0": - version "1.5.5" - resolved "https://registry.yarnpkg.com/@noble/secp256k1/-/secp256k1-1.5.5.tgz#315ab5745509d1a8c8e90d0bdf59823ccf9bcfc3" - integrity sha512-sZ1W6gQzYnu45wPrWx8D3kwI2/U29VYTx9OjbDAd7jwRItJ0cSTMPRL/C8AWZFn9kWFLQGqEXVEE86w4Z8LpIQ== +"@noble/hashes@1.1.2", "@noble/hashes@~1.1.1": + version "1.1.2" + resolved "https://registry.yarnpkg.com/@noble/hashes/-/hashes-1.1.2.tgz#e9e035b9b166ca0af657a7848eb2718f0f22f183" + integrity sha512-KYRCASVTv6aeUi1tsF8/vpyR7zpfs3FUzy2Jqm+MU+LmUKhQ0y2FpfwqkCcxSg2ua4GALJd8k2R76WxwZGbQpA== -"@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== +"@noble/secp256k1@1.6.3", "@noble/secp256k1@~1.6.0": + version "1.6.3" + resolved "https://registry.yarnpkg.com/@noble/secp256k1/-/secp256k1-1.6.3.tgz#7eed12d9f4404b416999d0c87686836c4c5c9b94" + integrity sha512-T04e4iTurVy7I8Sw4+c5OSN9/RkPlo1uKxAomtxQNLq8j1uPAqnsqG1bqvY3Jv7c13gyr6dui0zmh/I3+f/JaQ== -"@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== +"@noble/secp256k1@^1.3.0": + version "1.7.0" + resolved "https://registry.yarnpkg.com/@noble/secp256k1/-/secp256k1-1.7.0.tgz#d15357f7c227e751d90aa06b05a0e5cf993ba8c1" + integrity sha512-kbacwGSsH/CTout0ZnZWxnW1B+jH/7r/WAAKLBtrRJ/+CUH7lgmQzl3GTrQua3SGKWNSDsS6lmjnDpIJ5Dxyaw== "@nodelib/fs.scandir@2.1.5": version "2.1.5" @@ -2062,6 +869,204 @@ "@nodelib/fs.scandir" "2.1.5" fastq "^1.6.0" +"@nomicfoundation/ethereumjs-block@^4.0.0": + version "4.0.0" + resolved "https://registry.yarnpkg.com/@nomicfoundation/ethereumjs-block/-/ethereumjs-block-4.0.0.tgz#fdd5c045e7baa5169abeed0e1202bf94e4481c49" + integrity sha512-bk8uP8VuexLgyIZAHExH1QEovqx0Lzhc9Ntm63nCRKLHXIZkobaFaeCVwTESV7YkPKUk7NiK11s8ryed4CS9yA== + dependencies: + "@nomicfoundation/ethereumjs-common" "^3.0.0" + "@nomicfoundation/ethereumjs-rlp" "^4.0.0" + "@nomicfoundation/ethereumjs-trie" "^5.0.0" + "@nomicfoundation/ethereumjs-tx" "^4.0.0" + "@nomicfoundation/ethereumjs-util" "^8.0.0" + ethereum-cryptography "0.1.3" + +"@nomicfoundation/ethereumjs-blockchain@^6.0.0": + version "6.0.0" + resolved "https://registry.yarnpkg.com/@nomicfoundation/ethereumjs-blockchain/-/ethereumjs-blockchain-6.0.0.tgz#1a8c243a46d4d3691631f139bfb3a4a157187b0c" + integrity sha512-pLFEoea6MWd81QQYSReLlLfH7N9v7lH66JC/NMPN848ySPPQA5renWnE7wPByfQFzNrPBuDDRFFULMDmj1C0xw== + dependencies: + "@nomicfoundation/ethereumjs-block" "^4.0.0" + "@nomicfoundation/ethereumjs-common" "^3.0.0" + "@nomicfoundation/ethereumjs-ethash" "^2.0.0" + "@nomicfoundation/ethereumjs-rlp" "^4.0.0" + "@nomicfoundation/ethereumjs-trie" "^5.0.0" + "@nomicfoundation/ethereumjs-util" "^8.0.0" + abstract-level "^1.0.3" + debug "^4.3.3" + ethereum-cryptography "0.1.3" + level "^8.0.0" + lru-cache "^5.1.1" + memory-level "^1.0.0" + +"@nomicfoundation/ethereumjs-common@^3.0.0": + version "3.0.0" + resolved "https://registry.yarnpkg.com/@nomicfoundation/ethereumjs-common/-/ethereumjs-common-3.0.0.tgz#f6bcc7753994555e49ab3aa517fc8bcf89c280b9" + integrity sha512-WS7qSshQfxoZOpHG/XqlHEGRG1zmyjYrvmATvc4c62+gZXgre1ymYP8ZNgx/3FyZY0TWe9OjFlKOfLqmgOeYwA== + dependencies: + "@nomicfoundation/ethereumjs-util" "^8.0.0" + crc-32 "^1.2.0" + +"@nomicfoundation/ethereumjs-ethash@^2.0.0": + version "2.0.0" + resolved "https://registry.yarnpkg.com/@nomicfoundation/ethereumjs-ethash/-/ethereumjs-ethash-2.0.0.tgz#11539c32fe0990e1122ff987d1b84cfa34774e81" + integrity sha512-WpDvnRncfDUuXdsAXlI4lXbqUDOA+adYRQaEezIkxqDkc+LDyYDbd/xairmY98GnQzo1zIqsIL6GB5MoMSJDew== + dependencies: + "@nomicfoundation/ethereumjs-block" "^4.0.0" + "@nomicfoundation/ethereumjs-rlp" "^4.0.0" + "@nomicfoundation/ethereumjs-util" "^8.0.0" + abstract-level "^1.0.3" + bigint-crypto-utils "^3.0.23" + ethereum-cryptography "0.1.3" + +"@nomicfoundation/ethereumjs-evm@^1.0.0": + version "1.0.0" + resolved "https://registry.yarnpkg.com/@nomicfoundation/ethereumjs-evm/-/ethereumjs-evm-1.0.0.tgz#99cd173c03b59107c156a69c5e215409098a370b" + integrity sha512-hVS6qRo3V1PLKCO210UfcEQHvlG7GqR8iFzp0yyjTg2TmJQizcChKgWo8KFsdMw6AyoLgLhHGHw4HdlP8a4i+Q== + dependencies: + "@nomicfoundation/ethereumjs-common" "^3.0.0" + "@nomicfoundation/ethereumjs-util" "^8.0.0" + "@types/async-eventemitter" "^0.2.1" + async-eventemitter "^0.2.4" + debug "^4.3.3" + ethereum-cryptography "0.1.3" + mcl-wasm "^0.7.1" + rustbn.js "~0.2.0" + +"@nomicfoundation/ethereumjs-rlp@^4.0.0", "@nomicfoundation/ethereumjs-rlp@^4.0.0-beta.2": + version "4.0.0" + resolved "https://registry.yarnpkg.com/@nomicfoundation/ethereumjs-rlp/-/ethereumjs-rlp-4.0.0.tgz#d9a9c5f0f10310c8849b6525101de455a53e771d" + integrity sha512-GaSOGk5QbUk4eBP5qFbpXoZoZUj/NrW7MRa0tKY4Ew4c2HAS0GXArEMAamtFrkazp0BO4K5p2ZCG3b2FmbShmw== + +"@nomicfoundation/ethereumjs-statemanager@^1.0.0": + version "1.0.0" + resolved "https://registry.yarnpkg.com/@nomicfoundation/ethereumjs-statemanager/-/ethereumjs-statemanager-1.0.0.tgz#14a9d4e1c828230368f7ab520c144c34d8721e4b" + integrity sha512-jCtqFjcd2QejtuAMjQzbil/4NHf5aAWxUc+CvS0JclQpl+7M0bxMofR2AJdtz+P3u0ke2euhYREDiE7iSO31vQ== + dependencies: + "@nomicfoundation/ethereumjs-common" "^3.0.0" + "@nomicfoundation/ethereumjs-rlp" "^4.0.0" + "@nomicfoundation/ethereumjs-trie" "^5.0.0" + "@nomicfoundation/ethereumjs-util" "^8.0.0" + debug "^4.3.3" + ethereum-cryptography "0.1.3" + functional-red-black-tree "^1.0.1" + +"@nomicfoundation/ethereumjs-trie@^5.0.0": + version "5.0.0" + resolved "https://registry.yarnpkg.com/@nomicfoundation/ethereumjs-trie/-/ethereumjs-trie-5.0.0.tgz#dcfbe3be53a94bc061c9767a396c16702bc2f5b7" + integrity sha512-LIj5XdE+s+t6WSuq/ttegJzZ1vliwg6wlb+Y9f4RlBpuK35B9K02bO7xU+E6Rgg9RGptkWd6TVLdedTI4eNc2A== + dependencies: + "@nomicfoundation/ethereumjs-rlp" "^4.0.0" + "@nomicfoundation/ethereumjs-util" "^8.0.0" + ethereum-cryptography "0.1.3" + readable-stream "^3.6.0" + +"@nomicfoundation/ethereumjs-tx@^4.0.0": + version "4.0.0" + resolved "https://registry.yarnpkg.com/@nomicfoundation/ethereumjs-tx/-/ethereumjs-tx-4.0.0.tgz#59dc7452b0862b30342966f7052ab9a1f7802f52" + integrity sha512-Gg3Lir2lNUck43Kp/3x6TfBNwcWC9Z1wYue9Nz3v4xjdcv6oDW9QSMJxqsKw9QEGoBBZ+gqwpW7+F05/rs/g1w== + dependencies: + "@nomicfoundation/ethereumjs-common" "^3.0.0" + "@nomicfoundation/ethereumjs-rlp" "^4.0.0" + "@nomicfoundation/ethereumjs-util" "^8.0.0" + ethereum-cryptography "0.1.3" + +"@nomicfoundation/ethereumjs-util@^8.0.0": + version "8.0.0" + resolved "https://registry.yarnpkg.com/@nomicfoundation/ethereumjs-util/-/ethereumjs-util-8.0.0.tgz#deb2b15d2c308a731e82977aefc4e61ca0ece6c5" + integrity sha512-2emi0NJ/HmTG+CGY58fa+DQuAoroFeSH9gKu9O6JnwTtlzJtgfTixuoOqLEgyyzZVvwfIpRueuePb8TonL1y+A== + dependencies: + "@nomicfoundation/ethereumjs-rlp" "^4.0.0-beta.2" + ethereum-cryptography "0.1.3" + +"@nomicfoundation/ethereumjs-vm@^6.0.0": + version "6.0.0" + resolved "https://registry.yarnpkg.com/@nomicfoundation/ethereumjs-vm/-/ethereumjs-vm-6.0.0.tgz#2bb50d332bf41790b01a3767ffec3987585d1de6" + integrity sha512-JMPxvPQ3fzD063Sg3Tp+UdwUkVxMoo1uML6KSzFhMH3hoQi/LMuXBoEHAoW83/vyNS9BxEe6jm6LmT5xdeEJ6w== + dependencies: + "@nomicfoundation/ethereumjs-block" "^4.0.0" + "@nomicfoundation/ethereumjs-blockchain" "^6.0.0" + "@nomicfoundation/ethereumjs-common" "^3.0.0" + "@nomicfoundation/ethereumjs-evm" "^1.0.0" + "@nomicfoundation/ethereumjs-rlp" "^4.0.0" + "@nomicfoundation/ethereumjs-statemanager" "^1.0.0" + "@nomicfoundation/ethereumjs-trie" "^5.0.0" + "@nomicfoundation/ethereumjs-tx" "^4.0.0" + "@nomicfoundation/ethereumjs-util" "^8.0.0" + "@types/async-eventemitter" "^0.2.1" + async-eventemitter "^0.2.4" + debug "^4.3.3" + ethereum-cryptography "0.1.3" + functional-red-black-tree "^1.0.1" + mcl-wasm "^0.7.1" + rustbn.js "~0.2.0" + +"@nomicfoundation/solidity-analyzer-darwin-arm64@0.0.3": + version "0.0.3" + resolved "https://registry.yarnpkg.com/@nomicfoundation/solidity-analyzer-darwin-arm64/-/solidity-analyzer-darwin-arm64-0.0.3.tgz#1d49e4ac028831a3011a9f3dca60bd1963185342" + integrity sha512-W+bIiNiZmiy+MTYFZn3nwjyPUO6wfWJ0lnXx2zZrM8xExKObMrhCh50yy8pQING24mHfpPFCn89wEB/iG7vZDw== + +"@nomicfoundation/solidity-analyzer-darwin-x64@0.0.3": + version "0.0.3" + resolved "https://registry.yarnpkg.com/@nomicfoundation/solidity-analyzer-darwin-x64/-/solidity-analyzer-darwin-x64-0.0.3.tgz#c0fccecc5506ff5466225e41e65691abafef3dbe" + integrity sha512-HuJd1K+2MgmFIYEpx46uzwEFjvzKAI765mmoMxy4K+Aqq1p+q7hHRlsFU2kx3NB8InwotkkIq3A5FLU1sI1WDw== + +"@nomicfoundation/solidity-analyzer-freebsd-x64@0.0.3": + version "0.0.3" + resolved "https://registry.yarnpkg.com/@nomicfoundation/solidity-analyzer-freebsd-x64/-/solidity-analyzer-freebsd-x64-0.0.3.tgz#8261d033f7172b347490cd005931ef8168ab4d73" + integrity sha512-2cR8JNy23jZaO/vZrsAnWCsO73asU7ylrHIe0fEsXbZYqBP9sMr+/+xP3CELDHJxUbzBY8zqGvQt1ULpyrG+Kw== + +"@nomicfoundation/solidity-analyzer-linux-arm64-gnu@0.0.3": + version "0.0.3" + resolved "https://registry.yarnpkg.com/@nomicfoundation/solidity-analyzer-linux-arm64-gnu/-/solidity-analyzer-linux-arm64-gnu-0.0.3.tgz#1ba64b1d76425f8953dedc6367bd7dd46f31dfc5" + integrity sha512-Eyv50EfYbFthoOb0I1568p+eqHGLwEUhYGOxcRNywtlTE9nj+c+MT1LA53HnxD9GsboH4YtOOmJOulrjG7KtbA== + +"@nomicfoundation/solidity-analyzer-linux-arm64-musl@0.0.3": + version "0.0.3" + resolved "https://registry.yarnpkg.com/@nomicfoundation/solidity-analyzer-linux-arm64-musl/-/solidity-analyzer-linux-arm64-musl-0.0.3.tgz#8d864c49b55e683f7e3b5cce9d10b628797280ac" + integrity sha512-V8grDqI+ivNrgwEt2HFdlwqV2/EQbYAdj3hbOvjrA8Qv+nq4h9jhQUxFpegYMDtpU8URJmNNlXgtfucSrAQwtQ== + +"@nomicfoundation/solidity-analyzer-linux-x64-gnu@0.0.3": + version "0.0.3" + resolved "https://registry.yarnpkg.com/@nomicfoundation/solidity-analyzer-linux-x64-gnu/-/solidity-analyzer-linux-x64-gnu-0.0.3.tgz#16e769500cf1a8bb42ab9498cee3b93c30f78295" + integrity sha512-uRfVDlxtwT1vIy7MAExWAkRD4r9M79zMG7S09mCrWUn58DbLs7UFl+dZXBX0/8FTGYWHhOT/1Etw1ZpAf5DTrg== + +"@nomicfoundation/solidity-analyzer-linux-x64-musl@0.0.3": + version "0.0.3" + resolved "https://registry.yarnpkg.com/@nomicfoundation/solidity-analyzer-linux-x64-musl/-/solidity-analyzer-linux-x64-musl-0.0.3.tgz#75f4e1a25526d54c506e4eba63b3d698b6255b8f" + integrity sha512-8HPwYdLbhcPpSwsE0yiU/aZkXV43vlXT2ycH+XlOjWOnLfH8C41z0njK8DHRtEFnp4OVN6E7E5lHBBKDZXCliA== + +"@nomicfoundation/solidity-analyzer-win32-arm64-msvc@0.0.3": + version "0.0.3" + resolved "https://registry.yarnpkg.com/@nomicfoundation/solidity-analyzer-win32-arm64-msvc/-/solidity-analyzer-win32-arm64-msvc-0.0.3.tgz#ef6e20cfad5eedfdb145cc34a44501644cd7d015" + integrity sha512-5WWcT6ZNvfCuxjlpZOY7tdvOqT1kIQYlDF9Q42wMpZ5aTm4PvjdCmFDDmmTvyXEBJ4WTVmY5dWNWaxy8h/E28g== + +"@nomicfoundation/solidity-analyzer-win32-ia32-msvc@0.0.3": + version "0.0.3" + resolved "https://registry.yarnpkg.com/@nomicfoundation/solidity-analyzer-win32-ia32-msvc/-/solidity-analyzer-win32-ia32-msvc-0.0.3.tgz#98c4e3af9cee68896220fa7e270aefdf7fc89c7b" + integrity sha512-P/LWGZwWkyjSwkzq6skvS2wRc3gabzAbk6Akqs1/Iiuggql2CqdLBkcYWL5Xfv3haynhL+2jlNkak+v2BTZI4A== + +"@nomicfoundation/solidity-analyzer-win32-x64-msvc@0.0.3": + version "0.0.3" + resolved "https://registry.yarnpkg.com/@nomicfoundation/solidity-analyzer-win32-x64-msvc/-/solidity-analyzer-win32-x64-msvc-0.0.3.tgz#12da288e7ef17ec14848f19c1e8561fed20d231d" + integrity sha512-4AcTtLZG1s/S5mYAIr/sdzywdNwJpOcdStGF3QMBzEt+cGn3MchMaS9b1gyhb2KKM2c39SmPF5fUuWq1oBSQZQ== + +"@nomicfoundation/solidity-analyzer@^0.0.3": + version "0.0.3" + resolved "https://registry.yarnpkg.com/@nomicfoundation/solidity-analyzer/-/solidity-analyzer-0.0.3.tgz#d1029f872e66cb1082503b02cc8b0be12f8dd95e" + integrity sha512-VFMiOQvsw7nx5bFmrmVp2Q9rhIjw2AFST4DYvWVVO9PMHPE23BY2+kyfrQ4J3xCMFC8fcBbGLt7l4q7m1SlTqg== + optionalDependencies: + "@nomicfoundation/solidity-analyzer-darwin-arm64" "0.0.3" + "@nomicfoundation/solidity-analyzer-darwin-x64" "0.0.3" + "@nomicfoundation/solidity-analyzer-freebsd-x64" "0.0.3" + "@nomicfoundation/solidity-analyzer-linux-arm64-gnu" "0.0.3" + "@nomicfoundation/solidity-analyzer-linux-arm64-musl" "0.0.3" + "@nomicfoundation/solidity-analyzer-linux-x64-gnu" "0.0.3" + "@nomicfoundation/solidity-analyzer-linux-x64-musl" "0.0.3" + "@nomicfoundation/solidity-analyzer-win32-arm64-msvc" "0.0.3" + "@nomicfoundation/solidity-analyzer-win32-ia32-msvc" "0.0.3" + "@nomicfoundation/solidity-analyzer-win32-x64-msvc" "0.0.3" + "@nomiclabs/buidler@^1.4.8": version "1.4.8" resolved "https://registry.yarnpkg.com/@nomiclabs/buidler/-/buidler-1.4.8.tgz#36ebbd0fb54eb2052b1336bf90ee47825393e5dc" @@ -2133,14 +1138,14 @@ util.promisify "^1.0.0" "@nomiclabs/hardhat-ethers@^2.0.2": - version "2.0.2" - resolved "https://registry.yarnpkg.com/@nomiclabs/hardhat-ethers/-/hardhat-ethers-2.0.2.tgz#c472abcba0c5185aaa4ad4070146e95213c68511" - integrity sha512-6quxWe8wwS4X5v3Au8q1jOvXYEPkS1Fh+cME5u6AwNdnI4uERvPlVjlgRWzpnb+Rrt1l/cEqiNRH9GlsBMSDQg== + version "2.1.1" + resolved "https://registry.yarnpkg.com/@nomiclabs/hardhat-ethers/-/hardhat-ethers-2.1.1.tgz#3f1d1ab49813d1bae4c035cc1adec224711e528b" + integrity sha512-Gg0IFkT/DW3vOpih4/kMjeZCLYqtfgECLeLXTs7ZDPzcK0cfoc5wKk4nq5n/izCUzdhidO/Utd6ptF9JrWwWVA== "@nomiclabs/hardhat-etherscan@^2.1.1": - version "2.1.6" - resolved "https://registry.yarnpkg.com/@nomiclabs/hardhat-etherscan/-/hardhat-etherscan-2.1.6.tgz#8d1502f42adc6f7b8ef16fb917c0b5a8780cb83a" - integrity sha512-gCvT5fj8GbXS9+ACS3BzrX0pzYHHZqAHCb+NcipOkl2cy48FakUXlzrCf4P4sTH+Y7W10OgT62ezD1sJ+/NikQ== + version "2.1.8" + resolved "https://registry.yarnpkg.com/@nomiclabs/hardhat-etherscan/-/hardhat-etherscan-2.1.8.tgz#e206275e96962cd15e5ba9148b44388bc922d8c2" + integrity sha512-0+rj0SsZotVOcTLyDOxnOc3Gulo8upo0rsw/h+gBPcmtj91YqYJNhdARHoBxOhhE8z+5IUQPx+Dii04lXT14PA== dependencies: "@ethersproject/abi" "^5.1.2" "@ethersproject/address" "^5.0.2" @@ -2150,15 +1155,15 @@ node-fetch "^2.6.0" semver "^6.3.0" -"@nomiclabs/hardhat-truffle5@^2.0.0": - version "2.0.2" - resolved "https://registry.yarnpkg.com/@nomiclabs/hardhat-truffle5/-/hardhat-truffle5-2.0.2.tgz#bfc29843a5a78a6eceafc3f5c24b6163b92424a1" - integrity sha512-QHxtwNPmAYSxiUFCLqfTy3lbIgMeh0Uqcv5g9ioQWExMrYpwqW0goXTH6JWx3gwYIsF2ALtI4/10CKj7zLDyWA== +"@nomiclabs/hardhat-truffle5@^2.0.7": + version "2.0.7" + resolved "https://registry.yarnpkg.com/@nomiclabs/hardhat-truffle5/-/hardhat-truffle5-2.0.7.tgz#7519eadd2c6c460c2addc3d4d6efda7a8883361e" + integrity sha512-Pw8451IUZp1bTp0QqCHCYfCHs66sCnyxPcaorapu9mfOV9xnZsVaFdtutnhNEiXdiZwbed7LFKpRsde4BjFwig== dependencies: "@nomiclabs/truffle-contract" "^4.2.23" "@types/chai" "^4.2.0" chai "^4.2.0" - ethereumjs-util "^7.1.0" + ethereumjs-util "^7.1.4" fs-extra "^7.0.1" "@nomiclabs/hardhat-web3@^2.0.0": @@ -2169,15 +1174,16 @@ "@types/bignumber.js" "^5.0.0" "@nomiclabs/truffle-contract@^4.2.23": - version "4.2.23" - resolved "https://registry.yarnpkg.com/@nomiclabs/truffle-contract/-/truffle-contract-4.2.23.tgz#3431d09d2400413d3a14650494abc0a6233c16d4" - integrity sha512-Khj/Ts9r0LqEpGYhISbc+8WTOd6qJ4aFnDR+Ew+neqcjGnhwrIvuihNwPFWU6hDepW3Xod6Y+rTo90N8sLRDjw== - dependencies: - "@truffle/blockchain-utils" "^0.0.25" - "@truffle/contract-schema" "^3.2.5" - "@truffle/debug-utils" "^4.2.9" - "@truffle/error" "^0.0.11" - "@truffle/interface-adapter" "^0.4.16" + version "4.5.10" + resolved "https://registry.yarnpkg.com/@nomiclabs/truffle-contract/-/truffle-contract-4.5.10.tgz#52adcca1068647e1c2b44bf0e6a89fc4ad7f9213" + integrity sha512-nF/6InFV+0hUvutyFgsdOMCoYlr//2fJbRER4itxYtQtc4/O1biTwZIKRu+5l2J5Sq6LU2WX7vZHtDgQdhWxIQ== + dependencies: + "@ensdomains/ensjs" "^2.0.1" + "@truffle/blockchain-utils" "^0.1.3" + "@truffle/contract-schema" "^3.4.7" + "@truffle/debug-utils" "^6.0.22" + "@truffle/error" "^0.1.0" + "@truffle/interface-adapter" "^0.5.16" bignumber.js "^7.2.1" ethereum-ens "^0.8.0" ethers "^4.0.0-beta.1" @@ -2202,16 +1208,19 @@ integrity sha512-dlKiZmDvJnGRLHojrDoFZJmsQVeltVeoiRN7RK+cf2FmkhASDEblE0RiaYdxPNsUZa6mRG8393b9bfyp+V5IAw== "@openzeppelin/hardhat-upgrades@^1.6.0": - version "1.12.0" - resolved "https://registry.yarnpkg.com/@openzeppelin/hardhat-upgrades/-/hardhat-upgrades-1.12.0.tgz#35b4dd9bdefb203e7e0ba4b1c38df133bf721ddf" - integrity sha512-C5eOSt01zHKYUaRRDunqCsP5fXLpqFatIEs+NywVKLfVV6LNatugaNiRC4oHT8FF8wnr38uSoWrJJVTRoXUECw== + version "1.20.0" + resolved "https://registry.yarnpkg.com/@openzeppelin/hardhat-upgrades/-/hardhat-upgrades-1.20.0.tgz#fe1bddc4ab591ccf185caf4cfa269a4851b73599" + integrity sha512-ign7fc/ZdPe+KAYCB91619o+wlBr7sIEEt1nqLhoXAJ9f0qVuXkwAaTdLB0MTSWH85TzlUUT2fTJp1ZnZ1o4LQ== dependencies: - "@openzeppelin/upgrades-core" "^1.10.0" + "@openzeppelin/upgrades-core" "^1.18.0" + chalk "^4.1.0" + debug "^4.1.1" + proper-lockfile "^4.1.1" "@openzeppelin/test-helpers@^0.5.15": - version "0.5.15" - resolved "https://registry.yarnpkg.com/@openzeppelin/test-helpers/-/test-helpers-0.5.15.tgz#7727d4bb1535e1fa2372d65d1dcee335ce8d36af" - integrity sha512-10fS0kyOjc/UObo9iEWPNbC6MCeiQ7z97LDOJBj68g+AAs5pIGEI2h3V6G9TYTIq8VxOdwMQbfjKrx7Y3YZJtA== + version "0.5.16" + resolved "https://registry.yarnpkg.com/@openzeppelin/test-helpers/-/test-helpers-0.5.16.tgz#2c9054f85069dfbfb5e8cef3ed781e8caf241fb3" + integrity sha512-T1EvspSfH1qQO/sgGlskLfYVBbqzJR23SZzYl/6B2JnT4EhThcI85UpvDk0BkLWKaDScQTabGHt4GzHW+3SfZg== dependencies: "@openzeppelin/contract-loader" "^0.6.2" "@truffle/contract" "^4.0.35" @@ -2224,15 +1233,14 @@ web3 "^1.2.5" web3-utils "^1.2.5" -"@openzeppelin/upgrades-core@^1.10.0": - version "1.10.0" - resolved "https://registry.yarnpkg.com/@openzeppelin/upgrades-core/-/upgrades-core-1.10.0.tgz#d3aa72b7a23827e0e6daff08ddfb8dcd75171abb" - integrity sha512-N20t1i1wlHrVmu3etVZLiaRxT6XLkCrO9gIo4mUZNpsaVftl8V+WBu8o940AjoYXvzTEqj7O0re2DSFzjpkRBw== +"@openzeppelin/upgrades-core@^1.18.0": + version "1.19.1" + resolved "https://registry.yarnpkg.com/@openzeppelin/upgrades-core/-/upgrades-core-1.19.1.tgz#46da1cc1825ed1175ff3eaf5aa6cb5620f7da4d0" + integrity sha512-g0x/7xIXLHjYzvhsAyzkbIcIxLv87GEdEfq6KmEhljP2hEzcN3krNhGbjpoqZlJcV+sIEFcxSkDkYgOffAQmvA== dependencies: - bn.js "^5.1.2" cbor "^8.0.0" chalk "^4.1.0" - compare-versions "^3.6.0" + compare-versions "^5.0.0" debug "^4.1.1" ethereumjs-util "^7.0.3" proper-lockfile "^4.1.1" @@ -2241,7 +1249,7 @@ "@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= + integrity sha512-j+gKExEuLmKwvz3OgROXtrJ2UG2x8Ch2YZUxahh+s1F2HZ+wAceUNLkvy6zKCPVRkU++ZWQrdxsUeQXmcg4uoQ== "@protobufjs/base64@^1.1.2": version "1.1.2" @@ -2256,12 +1264,12 @@ "@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= + integrity sha512-j9ednRT81vYJ9OfVuXG6ERSTdEL1xVsNgqpkxMsbIabzSo3goCjDIveeGv5d03om39ML71RdmrGNjG5SReBP/Q== "@protobufjs/fetch@^1.1.0": version "1.1.0" resolved "https://registry.yarnpkg.com/@protobufjs/fetch/-/fetch-1.1.0.tgz#ba99fb598614af65700c1619ff06d454b0d84c45" - integrity sha1-upn7WYYUr2VwDBYZ/wbUVLDYTEU= + integrity sha512-lljVXpqXebpsijW71PZaCYeIcE5on1w5DlQy5WH6GLbFryLUrBD4932W/E2BSpfRJWseIL4v/KPgBFxDOIdKpQ== dependencies: "@protobufjs/aspromise" "^1.1.1" "@protobufjs/inquire" "^1.1.0" @@ -2269,76 +1277,71 @@ "@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= + integrity sha512-Ddb+kVXlXst9d+R9PfTIxh1EdNkgoRe5tOX6t01f1lYWOvJnSPDBlG241QLzcyPdoNTsblLUdujGSE4RzrTZGQ== "@protobufjs/inquire@^1.1.0": version "1.1.0" resolved "https://registry.yarnpkg.com/@protobufjs/inquire/-/inquire-1.1.0.tgz#ff200e3e7cf2429e2dcafc1140828e8cc638f089" - integrity sha1-/yAOPnzyQp4tyvwRQIKOjMY48Ik= + integrity sha512-kdSefcPdruJiFMVSbn801t4vFK7KB/5gd2fYvrxhuJYg8ILrmn9SKSX2tZdV6V+ksulWqS7aXjBcRXl3wHoD9Q== "@protobufjs/path@^1.1.2": version "1.1.2" resolved "https://registry.yarnpkg.com/@protobufjs/path/-/path-1.1.2.tgz#6cc2b20c5c9ad6ad0dccfd21ca7673d8d7fbf68d" - integrity sha1-bMKyDFya1q0NzP0hynZz2Nf79o0= + integrity sha512-6JOcJ5Tm08dOHAbdR3GrvP+yUUfkjG5ePsHYczMFLq3ZmMkAD98cDgcT2iA1lJ9NVwFd4tH/iSSoe44YWkltEA== "@protobufjs/pool@^1.1.0": version "1.1.0" resolved "https://registry.yarnpkg.com/@protobufjs/pool/-/pool-1.1.0.tgz#09fd15f2d6d3abfa9b65bc366506d6ad7846ff54" - integrity sha1-Cf0V8tbTq/qbZbw2ZQbWrXhG/1Q= + integrity sha512-0kELaGSIDBKvcgS4zkjz1PeddatrjYcmMWOlAuAPwAeccUrPHdUqo/J6LiymHHEiJT5NrF1UVwxY14f+fy4WQw== "@protobufjs/utf8@^1.1.0": version "1.1.0" resolved "https://registry.yarnpkg.com/@protobufjs/utf8/-/utf8-1.1.0.tgz#a777360b5b39a1a2e5106f8e858f2fd2d060c570" - integrity sha1-p3c2C1s5oaLlEG+OhY8v0tBgxXA= + integrity sha512-Vvn3zZrhQZkkBE8LSuW3em98c0FwgO4nxzv6OdSxPKJIEKY2bGbHn+mhGIPerzI4twdxaP8/0+06HBpwf345Lw== "@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== + version "1.2.1" + resolved "https://registry.yarnpkg.com/@redux-saga/core/-/core-1.2.1.tgz#3680989621517d075a2cc85e0d2744b682990ed8" + integrity sha512-ABCxsZy9DwmNoYNo54ZlfuTvh77RXx8ODKpxOHeWam2dOaLGQ7vAktpfOtqSeTdYrKEORtTeWnxkGJMmPOoukg== 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-saga/deferred" "^1.2.1" + "@redux-saga/delay-p" "^1.2.1" + "@redux-saga/is" "^1.1.3" + "@redux-saga/symbols" "^1.1.3" + "@redux-saga/types" "^1.2.1" 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== +"@redux-saga/deferred@^1.2.1": + version "1.2.1" + resolved "https://registry.yarnpkg.com/@redux-saga/deferred/-/deferred-1.2.1.tgz#aca373a08ccafd6f3481037f2f7ee97f2c87c3ec" + integrity sha512-cmin3IuuzMdfQjA0lG4B+jX+9HdTgHZZ+6u3jRAOwGUxy77GSlTi4Qp2d6PM1PUoTmQUR5aijlA39scWWPF31g== -"@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== +"@redux-saga/delay-p@^1.2.1": + version "1.2.1" + resolved "https://registry.yarnpkg.com/@redux-saga/delay-p/-/delay-p-1.2.1.tgz#e72ac4731c5080a21f75b61bedc31cb639d9e446" + integrity sha512-MdiDxZdvb1m+Y0s4/hgdcAXntpUytr9g0hpcOO1XFVyyzkrDu3SKPgBFOtHn7lhu7n24ZKIAT1qtKyQjHqRd+w== dependencies: - "@redux-saga/symbols" "^1.1.2" + "@redux-saga/symbols" "^1.1.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== +"@redux-saga/is@^1.1.3": + version "1.1.3" + resolved "https://registry.yarnpkg.com/@redux-saga/is/-/is-1.1.3.tgz#b333f31967e87e32b4e6b02c75b78d609dd4ad73" + integrity sha512-naXrkETG1jLRfVfhOx/ZdLj0EyAzHYbgJWkXbB3qFliPcHKiWbv/ULQryOAEKyjrhiclmr6AMdgsXFyx7/yE6Q== 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/symbols" "^1.1.3" + "@redux-saga/types" "^1.2.1" -"@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== +"@redux-saga/symbols@^1.1.3": + version "1.1.3" + resolved "https://registry.yarnpkg.com/@redux-saga/symbols/-/symbols-1.1.3.tgz#b731d56201719e96dc887dc3ae9016e761654367" + integrity sha512-hCx6ZvU4QAEUojETnX8EVg4ubNLBFl1Lps4j2tX7o45x/2qg37m3c6v+kSp8xjDJY+2tJw4QB3j8o8dsl1FDXg== -"@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== +"@redux-saga/types@^1.2.1": + version "1.2.1" + resolved "https://registry.yarnpkg.com/@redux-saga/types/-/types-1.2.1.tgz#9403f51c17cae37edf870c6bc0c81c1ece5ccef8" + integrity sha512-1dgmkh+3so0+LlBWRhGA33ua4MYr7tUOj+a9Si28vUi0IUFNbff1T3sgpeDJI/LaC75bBYnQ0A3wXjn0OrRNBA== "@resolver-engine/core@^0.2.1": version "0.2.1" @@ -2374,6 +1377,28 @@ debug "^3.1.0" hosted-git-info "^2.6.0" +"@scure/base@~1.1.0": + version "1.1.1" + resolved "https://registry.yarnpkg.com/@scure/base/-/base-1.1.1.tgz#ebb651ee52ff84f420097055f4bf46cfba403938" + integrity sha512-ZxOhsSyxYwLJj3pLZCefNitxsj093tb2vq90mp2txoYeBqbcjDjqFhyM8eUjq/uFm6zJ+mUuqxlS2FkuSY1MTA== + +"@scure/bip32@1.1.0": + version "1.1.0" + resolved "https://registry.yarnpkg.com/@scure/bip32/-/bip32-1.1.0.tgz#dea45875e7fbc720c2b4560325f1cf5d2246d95b" + integrity sha512-ftTW3kKX54YXLCxH6BB7oEEoJfoE2pIgw7MINKAs5PsS6nqKPuKk1haTF/EuHmYqG330t5GSrdmtRuHaY1a62Q== + dependencies: + "@noble/hashes" "~1.1.1" + "@noble/secp256k1" "~1.6.0" + "@scure/base" "~1.1.0" + +"@scure/bip39@1.1.0": + version "1.1.0" + resolved "https://registry.yarnpkg.com/@scure/bip39/-/bip39-1.1.0.tgz#92f11d095bae025f166bef3defcc5bf4945d419a" + integrity sha512-pwrPOS16VeTKg98dYXQyIjJEcWfz7/1YJIwxUEPFfQPtc86Ym/1sVgQ2RLoD43AazMk2l/unK4ITySSpW2+82w== + dependencies: + "@noble/hashes" "~1.1.1" + "@scure/base" "~1.1.0" + "@sentry/core@5.30.0": version "5.30.0" resolved "https://registry.yarnpkg.com/@sentry/core/-/core-5.30.0.tgz#6b203664f69e75106ee8b5a2fe1d717379b331f3" @@ -2452,32 +1477,20 @@ resolved "https://registry.yarnpkg.com/@sindresorhus/is/-/is-0.7.0.tgz#9a06f4f137ee84d7df0460c1fdb1135ffa6c50fd" integrity sha512-ONhaKPIufzzrlNbqtWFFd+jlnemX6lJAgq9ZeiZtS7I1PIf/la7CW4m83rTXRnVnsMbW2k56pGYu7AUFJD9Pow== -"@socket.io/base64-arraybuffer@~1.0.2": - version "1.0.2" - resolved "https://registry.yarnpkg.com/@socket.io/base64-arraybuffer/-/base64-arraybuffer-1.0.2.tgz#568d9beae00b0d835f4f8c53fd55714986492e61" - integrity sha512-dOlCBKnDw4iShaIsH/bxujKTM18+2TOAsYz+KSc11Am38H4q5Xw8Bbz97ZYdrVNM+um3p7w86Bvvmcn9q+5+eQ== - -"@socket.io/component-emitter@~3.0.0": - version "3.0.0" - resolved "https://registry.yarnpkg.com/@socket.io/component-emitter/-/component-emitter-3.0.0.tgz#8863915676f837d9dad7b76f50cb500c1e9422e9" - integrity sha512-2pTGuibAXJswAPJjaKisthqS/NOK5ypG4LYT6tEAV0S/mxW0zOIvYvGK0V8w8+SHxAm6vRMSjqSalFXeBAqs+Q== - -"@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== +"@sindresorhus/is@^4.0.0", "@sindresorhus/is@^4.6.0": + version "4.6.0" + resolved "https://registry.yarnpkg.com/@sindresorhus/is/-/is-4.6.0.tgz#3c7c9c46e678feefe7a2e5bb609d3dbd665ffb3f" + integrity sha512-t09vSN3MdfsyCHoFcTRCH/iUtG7OJ0CsjzB8cjAmKc/va/kIgeDI/TxsigdncE/4be734m0cvIYwNaV4i2XqAw== -"@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" +"@socket.io/component-emitter@~3.1.0": + version "3.1.0" + resolved "https://registry.yarnpkg.com/@socket.io/component-emitter/-/component-emitter-3.1.0.tgz#96116f2a912e0c02817345b3c10751069920d553" + integrity sha512-+9jVqKhRSpsc591z5vX+X5Yyw+he/HCB4iQ/RYxw35CEPaY1gnsNE43nf9n9AaYjAQrTiI/mOwKUKdUs9vf7Xg== -"@solidity-parser/parser@^0.14.0": - version "0.14.0" - resolved "https://registry.yarnpkg.com/@solidity-parser/parser/-/parser-0.14.0.tgz#d51f074efb0acce0e953ec48133561ed710cebc0" - integrity sha512-cX0JJRcmPtNUJpzD2K7FdA7qQsTOk1UZnFx2k7qAg9ZRvuaH5NBe5IEdBMXGlmf2+FmjhqbygJ26H8l2SV7aKQ== +"@solidity-parser/parser@^0.14.0", "@solidity-parser/parser@^0.14.1", "@solidity-parser/parser@^0.14.3": + version "0.14.3" + resolved "https://registry.yarnpkg.com/@solidity-parser/parser/-/parser-0.14.3.tgz#0d627427b35a40d8521aaa933cc3df7d07bfa36f" + integrity sha512-29g2SZ29HtsqA58pLCtopI1P/cPy5/UAzlcAXO6T/CNJimG6yA8kx4NaseMyJULiC+TEs02Y9/yeHzClqoA0hw== dependencies: antlr4ts "^0.5.0-alpha.4" @@ -2486,11 +1499,6 @@ resolved "https://registry.yarnpkg.com/@solidity-parser/parser/-/parser-0.5.2.tgz#4d74670ead39e4f4fdab605a393ba8ea2390a2c4" integrity sha512-uRyvnvVYmgNmTBpWDbBsH/0kPESQhQpEc4KsvMRLVzFJ1o1s0uIv0Y6Y9IB5vI1Dwz2CbS4X/y4Wyw/75cTFnQ== -"@solidity-parser/parser@^0.8.0": - version "0.8.2" - resolved "https://registry.yarnpkg.com/@solidity-parser/parser/-/parser-0.8.2.tgz#a6a5e93ac8dca6884a99a532f133beba59b87b69" - integrity sha512-8LySx3qrNXPgB5JiULfG10O3V7QTxI/TLzSw5hFQhXWSkVxZBAv4rZQ0sYgLEbc8g3L2lmnujj1hKul38Eu5NQ== - "@stablelib/aead@^1.0.1": version "1.0.1" resolved "https://registry.yarnpkg.com/@stablelib/aead/-/aead-1.0.1.tgz#c4b1106df9c23d1b867eb9b276d8f42d5fc4c0c3" @@ -2576,10 +1584,10 @@ "@stablelib/constant-time" "^1.0.1" "@stablelib/wipe" "^1.0.1" -"@stablelib/random@^1.0.1": - version "1.0.1" - resolved "https://registry.yarnpkg.com/@stablelib/random/-/random-1.0.1.tgz#4357a00cb1249d484a9a71e6054bc7b8324a7009" - integrity sha512-zOh+JHX3XG9MSfIB0LZl/YwPP9w3o6WBiJkZvjPoKKu5LKFW4OLV71vMxWp9qG5T43NaWyn0QQTWgqCdO+yOBQ== +"@stablelib/random@^1.0.2": + version "1.0.2" + resolved "https://registry.yarnpkg.com/@stablelib/random/-/random-1.0.2.tgz#2dece393636489bf7e19c51229dd7900eddf742c" + integrity sha512-rIsE83Xpb7clHPVRlBj8qNe5L8ISQOzjghYQm/dZ7VaM2KHYwMW5adjQjrzTZCchFnNCNhkwtnOBa9HTMJCI8w== dependencies: "@stablelib/binary" "^1.0.1" "@stablelib/wipe" "^1.0.1" @@ -2599,12 +1607,12 @@ integrity sha512-WfqfX/eXGiAd3RJe4VU2snh/ZPwtSjLG4ynQ/vYzvghTh7dHFcI1wl+nrkWG6lGhukOxOsUHfv8dUXr58D0ayg== "@stablelib/x25519@^1.0.1": - version "1.0.2" - resolved "https://registry.yarnpkg.com/@stablelib/x25519/-/x25519-1.0.2.tgz#ae21e2ab668076ec2eb2b4853b82a27fab045fa1" - integrity sha512-wTR0t0Bp1HABLFRbYaE3vFLuco2QbAg6QvxBnzi5j9qjhYezWHW7OiCZyaWbt25UkSaoolUUT4Il0nS/2vcbSw== + version "1.0.3" + resolved "https://registry.yarnpkg.com/@stablelib/x25519/-/x25519-1.0.3.tgz#13c8174f774ea9f3e5e42213cbf9fc68a3c7b7fd" + integrity sha512-KnTbKmUhPhHavzobclVJQG5kuivH+qDLpe84iRqX3CLrKp881cF160JvXJ+hjn1aMyCwYOKeIZefIH/P5cJoRw== dependencies: "@stablelib/keyagreement" "^1.0.1" - "@stablelib/random" "^1.0.1" + "@stablelib/random" "^1.0.2" "@stablelib/wipe" "^1.0.1" "@szmarczak/http-timer@^1.1.2": @@ -2614,477 +1622,211 @@ 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.2.0": - version "6.2.0" - resolved "https://registry.yarnpkg.com/@textile/buckets/-/buckets-6.2.0.tgz#0c67d8cd221da3a44f7e4aa55cf60b6b09a57dfa" - integrity sha512-83yqKiz1sAvu93l+5klGdjYzsoXYdRbncXzZ7QPWReS8UEV6/VhrvmkIz0K5EYSVWXuLeh0HjVB53Kq3VLMmiw== - dependencies: - "@improbable-eng/grpc-web" "^0.13.0" - "@repeaterjs/repeater" "^3.0.4" - "@textile/buckets-grpc" "2.6.6" - "@textile/context" "^0.12.1" - "@textile/crypto" "^4.2.1" - "@textile/grpc-authentication" "^3.4.1" - "@textile/grpc-connection" "^2.5.1" - "@textile/grpc-transport" "^0.5.1" - "@textile/hub-grpc" "2.6.6" - "@textile/hub-threads-client" "^5.5.0" - "@textile/security" "^0.9.1" - "@textile/threads-id" "^0.6.1" - 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.1": - version "0.12.1" - resolved "https://registry.yarnpkg.com/@textile/context/-/context-0.12.1.tgz#417a6e1a9f76fe4fb965a163129a8a95dc143601" - integrity sha512-3UDkz0YjwpWt8zY8NBkZ9UqqlR2L9Gv6t2TAXAQT+Rh/3/X0IAFGQlAaFT5wdGPN2nqbXDeEOFfkMs/T2K02Iw== - dependencies: - "@improbable-eng/grpc-web" "^0.13.0" - "@textile/security" "^0.9.1" - -"@textile/crypto@^4.2.1": - version "4.2.1" - resolved "https://registry.yarnpkg.com/@textile/crypto/-/crypto-4.2.1.tgz#96f03daab9e9a1b97967e490e2ca3f9b2fd66f89" - integrity sha512-7qxFLrXiSq5Tf3Wh3Oh6JKJMitF/6N3/AJyma6UAA8iQnAZBF98ShWz9tR59a3dvmGTc9MlyplOm16edbccscg== - 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.1": - version "3.4.1" - resolved "https://registry.yarnpkg.com/@textile/grpc-authentication/-/grpc-authentication-3.4.1.tgz#e2c3cc90f4b4c42e9abdd9d9eed1199de96f898a" - integrity sha512-AzMWlmx//EzBeanVdtXLFr8joMc5v9T5Q6VhAUjzN2vx0bCYywn0GhJEiCWbHsvfr4CJ19FvDYeUZUPfewxNPA== - dependencies: - "@textile/context" "^0.12.1" - "@textile/crypto" "^4.2.1" - "@textile/grpc-connection" "^2.5.1" - "@textile/hub-threads-client" "^5.5.0" - "@textile/security" "^0.9.1" - -"@textile/grpc-connection@^2.5.1": - version "2.5.1" - resolved "https://registry.yarnpkg.com/@textile/grpc-connection/-/grpc-connection-2.5.1.tgz#3b9756bca796596f200a51b5de8ba0cfefb32084" - integrity sha512-ujSjt0gcFLxu4VWtUFlCrnoqUVa/aI8emQ1YSo71Hdf4/XVYctSJlj4abVPArQdyusIVK3bWoUekBE6suJeMhg== - dependencies: - "@improbable-eng/grpc-web" "^0.12.0" - "@textile/context" "^0.12.1" - "@textile/grpc-transport" "^0.5.1" - -"@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.1": - version "0.5.1" - resolved "https://registry.yarnpkg.com/@textile/grpc-transport/-/grpc-transport-0.5.1.tgz#bb12cce341ab7daad7fd0a6199d2c122a52c0bdf" - integrity sha512-TXd51uWUYhcGPeESbzgSgCy3OYAXJemUUk0lqAklAKvRiXG33SYx8K9CFDxBJdnzT5FOMck7eSliKCROaRuabw== - 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.2.0": - version "2.2.0" - resolved "https://registry.yarnpkg.com/@textile/hub-filecoin/-/hub-filecoin-2.2.0.tgz#c659508490bf0a777bc4b95bf97c0de025957934" - integrity sha512-1niQti/TSqsY8KKF3/QRxGWI4j2L0b6GfJDSh0t2hvWS4Sz6miTEtuLccL1ccQB/lj8Nko3MUok3v04WhhmoBA== - dependencies: - "@improbable-eng/grpc-web" "^0.12.0" - "@textile/context" "^0.12.1" - "@textile/crypto" "^4.2.1" - "@textile/grpc-authentication" "^3.4.1" - "@textile/grpc-connection" "^2.5.1" - "@textile/grpc-powergate-client" "^2.6.2" - "@textile/hub-grpc" "2.6.6" - "@textile/security" "^0.9.1" - 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.5.0": - version "5.5.0" - resolved "https://registry.yarnpkg.com/@textile/hub-threads-client/-/hub-threads-client-5.5.0.tgz#83d09cbc794b9796891f4d1b9b590eaf00a5b576" - integrity sha512-W8j5W5ZO2i9nnRbBQLkt3DXbk2NEdz8jZ+YBavgJniWg8OdvnobSznvTv6ZNlJs7WWJPQF8Z3TA0aXKZi1ik6A== - dependencies: - "@improbable-eng/grpc-web" "^0.13.0" - "@textile/context" "^0.12.1" - "@textile/hub-grpc" "2.6.6" - "@textile/security" "^0.9.1" - "@textile/threads-client" "^2.3.0" - "@textile/threads-id" "^0.6.1" - "@textile/users-grpc" "2.6.6" - loglevel "^1.7.0" - -"@textile/hub@^6.0.2": - version "6.3.0" - resolved "https://registry.yarnpkg.com/@textile/hub/-/hub-6.3.0.tgz#a88b916d7b2cf1ffb9d699909be1f525052ed569" - integrity sha512-LJe/KgFK6xMDlycl+txus70DV/zwbwlbcaM2xlnE6mK+fr+ZA0s8+7CX4UnvjT2xjgrw4/TPiQ8hoTArxmZ2xg== - dependencies: - "@textile/buckets" "^6.2.0" - "@textile/crypto" "^4.2.1" - "@textile/grpc-authentication" "^3.4.1" - "@textile/hub-filecoin" "^2.2.0" - "@textile/hub-grpc" "2.6.6" - "@textile/hub-threads-client" "^5.5.0" - "@textile/security" "^0.9.1" - "@textile/threads-id" "^0.6.1" - "@textile/users" "^6.2.0" - loglevel "^1.6.8" - multihashes "3.1.2" - -"@textile/multiaddr@^0.6.1": - version "0.6.1" - resolved "https://registry.yarnpkg.com/@textile/multiaddr/-/multiaddr-0.6.1.tgz#c3dc666866d7616ab7a31bceb390ffad4f5932fb" - integrity sha512-OQK/kXYhtUA8yN41xltCxCiCO98Pkk8yMgUdhPDAhogvptvX4k9g6Rg0Yob18uBwN58AYUg075V//SWSK1kUCQ== - dependencies: - "@textile/threads-id" "^0.6.1" - multiaddr "^8.1.2" - varint "^6.0.0" - -"@textile/security@^0.9.1": - version "0.9.1" - resolved "https://registry.yarnpkg.com/@textile/security/-/security-0.9.1.tgz#fe40cad3b27caf097252236b843b4fa71e81ffaf" - integrity sha512-pmiSOUezV/udTMoQsvyEZwZFfN0tMo6dOAof4VBqyFdDZZV6doeI5zTDpqSJZTg69n0swfWxsHw96ZWQIoWvsw== - 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.1.1": - 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.3.0": - version "2.3.0" - resolved "https://registry.yarnpkg.com/@textile/threads-client/-/threads-client-2.3.0.tgz#d911e80191eed7de9e75f20b760a2d2273f369ca" - integrity sha512-4pbAuv8ke6Pyd7cuM/sWbrG5tZ3ODUeVLhq0HwIGXWFvT1odMfMS3E2gss6oEA5P4LxAHm7ITzt/0UwXDtEp0g== - dependencies: - "@improbable-eng/grpc-web" "^0.13.0" - "@textile/context" "^0.12.1" - "@textile/crypto" "^4.2.1" - "@textile/grpc-transport" "^0.5.1" - "@textile/multiaddr" "^0.6.1" - "@textile/security" "^0.9.1" - "@textile/threads-client-grpc" "^1.1.1" - "@textile/threads-id" "^0.6.1" - "@types/to-json-schema" "^0.2.0" - fastestsmallesttextencoderdecoder "^1.0.22" - to-json-schema "^0.2.5" - -"@textile/threads-id@^0.6.1": - version "0.6.1" - resolved "https://registry.yarnpkg.com/@textile/threads-id/-/threads-id-0.6.1.tgz#ac6b5c93c9bd669f6c8f75ab2044b47a0f09627c" - integrity sha512-KwhbLjZ/eEquPorGgHFotw4g0bkKLTsqQmnsIxFeo+6C1mz40PQu4IOvJwohHr5GL6wedjlobry4Jj+uI3N+0w== - 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== +"@szmarczak/http-timer@^4.0.5": + version "4.0.6" + resolved "https://registry.yarnpkg.com/@szmarczak/http-timer/-/http-timer-4.0.6.tgz#b4a914bb62e7c272d4e5989fe4440f812ab1d807" + integrity sha512-4BAffykYOgO+5nzBWYwE3W90sBgLJoUPRWWcL8wlyiM8IB8ipJz3UMJ9KXQd1RKQXpKp8Tutn80HZtWsu2u76w== dependencies: - "@improbable-eng/grpc-web" "^0.13.0" - "@types/google-protobuf" "^3.7.4" - google-protobuf "^3.13.0" - -"@textile/users@^6.2.0": - version "6.2.0" - resolved "https://registry.yarnpkg.com/@textile/users/-/users-6.2.0.tgz#5f92bccbecc23b38c95b3ef4fbe85cbff2cff9af" - integrity sha512-uUQfKgsdBGKxSffnwwm1G8Je4sQ/Qvn2fTCMe83o3NFYhB3tOhv/gQSlsxd0TCyJnEyq7pH9EanuoCRNWe5Hcg== - dependencies: - "@improbable-eng/grpc-web" "^0.13.0" - "@textile/buckets-grpc" "2.6.6" - "@textile/context" "^0.12.1" - "@textile/crypto" "^4.2.1" - "@textile/grpc-authentication" "^3.4.1" - "@textile/grpc-connection" "^2.5.1" - "@textile/grpc-transport" "^0.5.1" - "@textile/hub-grpc" "2.6.6" - "@textile/hub-threads-client" "^5.5.0" - "@textile/security" "^0.9.1" - "@textile/threads-id" "^0.6.1" - "@textile/users-grpc" "2.6.6" - event-iterator "^2.0.0" - loglevel "^1.7.0" + defer-to-connect "^2.0.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== +"@szmarczak/http-timer@^5.0.1": + version "5.0.1" + resolved "https://registry.yarnpkg.com/@szmarczak/http-timer/-/http-timer-5.0.1.tgz#c7c1bf1141cdd4751b0399c8fc7b8b664cd5be3a" + integrity sha512-+PmQX0PiAYPMeVYe237LJAYvOMYW1j2rH5YROyS3b4CTVJum34HfRvKvAzozHAQG0TnHNdUfY9nCeUyRAs//cw== dependencies: - change-case "3.0.2" - faker "^5.3.1" - fast-check "^2.12.1" + defer-to-connect "^2.0.1" -"@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== +"@truffle/abi-utils@^0.3.2": + version "0.3.2" + resolved "https://registry.yarnpkg.com/@truffle/abi-utils/-/abi-utils-0.3.2.tgz#71184255cfa05a5ded3c7b7fb50a3de813446224" + integrity sha512-32queMD64YKL/tmQgSV4Xs073dIaZ9tp7NP1icjwvFSA3Q9yeu7ApYbSbYMsx9H9zWkkVOsfcoJ2kJEieOCzsA== dependencies: change-case "3.0.2" - faker "^5.3.1" - fast-check "^2.12.1" - -"@truffle/blockchain-utils@^0.0.25": - version "0.0.25" - resolved "https://registry.yarnpkg.com/@truffle/blockchain-utils/-/blockchain-utils-0.0.25.tgz#f4b320890113d282f25f1a1ecd65b94a8b763ac1" - integrity sha512-XA5m0BfAWtysy5ChHyiAf1fXbJxJXphKk+eZ9Rb9Twi6fn3Jg4gnHNwYXJacYFEydqT5vr2s4Ou812JHlautpw== - dependencies: - source-map-support "^0.5.19" + fast-check "3.1.1" + web3-utils "1.7.4" -"@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/blockchain-utils@^0.1.3", "@truffle/blockchain-utils@^0.1.4": + version "0.1.4" + resolved "https://registry.yarnpkg.com/@truffle/blockchain-utils/-/blockchain-utils-0.1.4.tgz#1365b88c3d2922a066d947e93748f09b0fac2e93" + integrity sha512-HegAo5A8UX9vE8dtceBRgCY207gOb9wj54c8mNOOWHcFpkyJz7kZYGo44As6Imh10/0hD2j7vHQ56Jf+uszJ3A== -"@truffle/code-utils@^1.2.30": - version "1.2.30" - resolved "https://registry.yarnpkg.com/@truffle/code-utils/-/code-utils-1.2.30.tgz#aa0a2a11eea40e3c76824729467f27d6cb76819b" - integrity sha512-/GFtGkmSZlLpIbIjBTunvhQQ4K2xaHK63QCEKydt3xRMPhpaeVAIaBNH53Z1ulOMDi6BZcSgwQHkquHf/omvMQ== +"@truffle/code-utils@^2.0.1": + version "2.0.1" + resolved "https://registry.yarnpkg.com/@truffle/code-utils/-/code-utils-2.0.1.tgz#9c59bd2e16e2b231774839e44c1a47ccb8ab3675" + integrity sha512-TUiGXpUVtRwh0j2CqIy4nXdT3YftDi9+e6fOKfSUnaZSHP/5OHjXdjbSM/9ogzmiWNaKAQ2ZkEp0nMoZ/YJ/vQ== dependencies: - cbor "^5.1.0" + cbor "^5.2.0" -"@truffle/codec@^0.11.17": - version "0.11.17" - resolved "https://registry.yarnpkg.com/@truffle/codec/-/codec-0.11.17.tgz#451ad820b0c7abaf78d52fa8bf310e000d04c1aa" - integrity sha512-WO9D5TVyTf9czqdsfK/qqYeSS//zWcHBgQgSNKPlCDb6koCNLxG5yGbb4P+0bZvTUNS2e2iIdN92QHg00wMbSQ== +"@truffle/codec@^0.14.5": + version "0.14.5" + resolved "https://registry.yarnpkg.com/@truffle/codec/-/codec-0.14.5.tgz#5b1574fb55d20a56af3039adaac7cd9dd421b1fe" + integrity sha512-3FCpTJe6o7LGWUfrSdguMpdpH1PTn3u7bIfbj6Cfdzym2OAVSgxTgdlqC1poepbk0xcOVcUW+EsqNwLMqmBiPA== dependencies: - "@truffle/abi-utils" "^0.2.4" - "@truffle/compile-common" "^0.7.22" - big.js "^5.2.2" + "@truffle/abi-utils" "^0.3.2" + "@truffle/compile-common" "^0.8.1" + big.js "^6.0.3" bn.js "^5.1.3" - cbor "^5.1.0" + cbor "^5.2.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.3" - -"@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" + lodash "^4.17.21" + semver "7.3.7" utf8 "^3.0.0" - web3-utils "1.2.9" + web3-utils "1.7.4" -"@truffle/compile-common@^0.7.22": - version "0.7.22" - resolved "https://registry.yarnpkg.com/@truffle/compile-common/-/compile-common-0.7.22.tgz#c376eea36f59dc770ece3bc8cbb7132f49352846" - integrity sha512-afFKh0Wphn8JrCSjOORKjO8/E1X0EtQv6GpFJpQCAWo3/i4VGcSVKR1rjkknnExtjEGe9PJH/Ym/opGH3pQyDw== +"@truffle/compile-common@^0.8.1": + version "0.8.1" + resolved "https://registry.yarnpkg.com/@truffle/compile-common/-/compile-common-0.8.1.tgz#a3fe500edb880a3104324c9885bbd27b6ce05c54" + integrity sha512-7mzzG9Cfrn+fDT5Sqi7B6pccvIIV5w/GM8/56YgnjysbDzy5aZ6mv0fe37ZbcznEVQ35NJjBy+lEr/ozOGXwQA== dependencies: - "@truffle/error" "^0.0.14" - colors "^1.4.0" + "@truffle/error" "^0.1.1" + colors "1.4.0" -"@truffle/config@^1.3.10": - version "1.3.10" - resolved "https://registry.yarnpkg.com/@truffle/config/-/config-1.3.10.tgz#4694ba3882a6f40197aeec8d2192d35ae0f9dc76" - integrity sha512-7r4eVa/CEhzjS1eYdegXGqlzNy7PnyAv0TdGxdNeFi9XqZFg4dzF8XkHLDcmRjC5otYWRIpobjSljTLpfIOqoQ== +"@truffle/config@^1.3.37": + version "1.3.37" + resolved "https://registry.yarnpkg.com/@truffle/config/-/config-1.3.37.tgz#b0bf87d3cba82da199926e450a7237643f8214eb" + integrity sha512-QscARxWIu7ezFgVzSDXhnTz9bpKNvhJh15NDn71uS5k7CdLEs2ZI0w+2Z82bQPXkxDNCur57l8WL0UDLuGDyQg== dependencies: - "@truffle/error" "^0.0.14" - "@truffle/events" "^0.0.16" - "@truffle/provider" "^0.2.42" - conf "^10.0.2" + "@truffle/error" "^0.1.1" + "@truffle/events" "^0.1.14" + "@truffle/provider" "^0.2.59" + conf "^10.1.2" find-up "^2.1.0" - lodash.assignin "^4.2.0" - lodash.merge "^4.6.2" - lodash.pick "^4.4.0" - module "^1.2.5" + lodash "^4.17.21" original-require "^1.0.1" -"@truffle/contract-schema@^3.2.5", "@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== +"@truffle/contract-schema@^3.4.10", "@truffle/contract-schema@^3.4.7": + version "3.4.10" + resolved "https://registry.yarnpkg.com/@truffle/contract-schema/-/contract-schema-3.4.10.tgz#c11a814c13ad55a5e454fb35ddfa291ae0d24ace" + integrity sha512-BhRNRoRvlj2th6E5RNS0BnS0ZxQe01JJz8I7MjkGqdeXSvrn6qDCAnbmvhNgUv0l5h8w5+gBOQhAJhILf1shdQ== 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: +"@truffle/contract@^4.0.35", "@truffle/contract@^4.2.21": + version "4.6.1" + resolved "https://registry.yarnpkg.com/@truffle/contract/-/contract-4.6.1.tgz#4d38049dc80da7245e591b55ebb40f0a4f258e89" + integrity sha512-WYYR1ic8csYN0GVp2mhPmVZwK4o4S2CLacef69LygdFSsap/NTivUUK6wqReHiFBYHUbFE2fH8otlwHh+h3mqA== + dependencies: + "@ensdomains/ensjs" "^2.1.0" + "@truffle/blockchain-utils" "^0.1.4" + "@truffle/contract-schema" "^3.4.10" + "@truffle/debug-utils" "^6.0.35" + "@truffle/error" "^0.1.1" + "@truffle/interface-adapter" "^0.5.21" + bignumber.js "^7.2.1" debug "^4.3.1" - glob "^7.1.6" + ethers "^4.0.32" + web3 "1.7.4" + web3-core-helpers "1.7.4" + web3-core-promievent "1.7.4" + web3-eth-abi "1.7.4" + web3-utils "1.7.4" -"@truffle/contract@^4.0.35", "@truffle/contract@^4.2.21", "@truffle/contract@^4.3.38": - version "4.3.38" - resolved "https://registry.yarnpkg.com/@truffle/contract/-/contract-4.3.38.tgz#51627cda844ed123f609e49a56016ecc0ed870b1" - integrity sha512-11HL9IJTmd45pVXJvEaRYeyuhf8GmAgRD7bTYBZj2CiMBnt0337Fg7Zz/GuTpUUW2h3fbyTYO4hgOntxdQjZ5A== +"@truffle/dashboard-message-bus-client@^0.1.6": + version "0.1.6" + resolved "https://registry.yarnpkg.com/@truffle/dashboard-message-bus-client/-/dashboard-message-bus-client-0.1.6.tgz#1956c1582fd2c1a923343d12d8543db92eba6baf" + integrity sha512-qIf5e+/xfZfXiiOkfWKtRjwbkstpjQpCkbndKSKhZcnz3QLkDIvfgSU6K9d+j4AyNCq4oN38gWoLDa3PVqZo8Q== dependencies: - "@ensdomains/ensjs" "^2.0.1" - "@truffle/blockchain-utils" "^0.0.31" - "@truffle/contract-schema" "^3.4.3" - "@truffle/debug-utils" "^5.1.18" - "@truffle/error" "^0.0.14" - "@truffle/interface-adapter" "^0.5.8" - bignumber.js "^7.2.1" - ethers "^4.0.32" - web3 "1.5.3" - web3-core-helpers "1.5.3" - web3-core-promievent "1.5.3" - web3-eth-abi "1.5.3" - web3-utils "1.5.3" - -"@truffle/db-loader@^0.0.13": - version "0.0.13" - resolved "https://registry.yarnpkg.com/@truffle/db-loader/-/db-loader-0.0.13.tgz#9af1deb24500ee706963e2522ba352ee30d034bd" - integrity sha512-tq6fN2hwDG9d3rf63g9gRnEIORKI3fsFi5FIrxwtW7r2ZWxEcJjwYIkV5ZTvXlaARzoAE9kFUpI7+SybDrfyYQ== + "@truffle/dashboard-message-bus-common" "^0.1.4" + "@truffle/promise-tracker" "^0.1.3" + axios "0.27.2" + debug "^4.3.1" + delay "^5.0.0" + isomorphic-ws "^4.0.1" + node-abort-controller "^3.0.1" + tiny-typed-emitter "^2.1.0" + ws "^7.2.0" + +"@truffle/dashboard-message-bus-common@^0.1.4": + version "0.1.4" + resolved "https://registry.yarnpkg.com/@truffle/dashboard-message-bus-common/-/dashboard-message-bus-common-0.1.4.tgz#f5b5326eb4774d5d209c310c135309f4b3f42bea" + integrity sha512-R+16jYcr/mxhz5pI+0GAJI14XUvYySLTB650kWubMBrVf4vi4QaIOdAOrx4KxAIA6e/5Nq9j0le59Y2c+xAHYg== + +"@truffle/db-loader@^0.1.32": + version "0.1.32" + resolved "https://registry.yarnpkg.com/@truffle/db-loader/-/db-loader-0.1.32.tgz#4ada5da6fd2fe17d75ed12a3d625531a4802dca9" + integrity sha512-Yyeue2R0lC0Ib/xjCicNXpIbnIG06HfMQIRm73CgVpNJ/ZZg2ow02iED2lNUiBV10h3ObkC8/x4KweqgUD13pQ== optionalDependencies: - "@truffle/db" "^0.5.34" - -"@truffle/db@^0.5.34": - version "0.5.34" - resolved "https://registry.yarnpkg.com/@truffle/db/-/db-0.5.34.tgz#a59ed4349a66ea293abb51ff4869b5bac71f3898" - integrity sha512-pIBnha8sejXsvBjv6S8pn0J2qEqir19q4FsGP7jfdpjAonUbu0cmAT7pZIJ7p5Y97GWoowXPiKLsL9TDfZz8lg== - dependencies: - "@truffle/abi-utils" "^0.2.4" - "@truffle/code-utils" "^1.2.30" - "@truffle/config" "^1.3.10" - "@truffle/resolver" "^7.0.32" - apollo-server "^2.18.2" + "@truffle/db" "^1.0.22" + +"@truffle/db@^1.0.22": + version "1.0.22" + resolved "https://registry.yarnpkg.com/@truffle/db/-/db-1.0.22.tgz#c8b16fabfed99fd84eda1dc7199d3358a95b340f" + integrity sha512-59OPD2yLCYKEwaNlIBDfeFK112w9VnKIl+hbBZgQqCsJxye6f1+tsmbyQFWjpy1fI9OGNmFnLrCZql93RV+bFw== + dependencies: + "@graphql-tools/delegate" "^8.4.3" + "@graphql-tools/schema" "^8.3.1" + "@truffle/abi-utils" "^0.3.2" + "@truffle/code-utils" "^2.0.1" + "@truffle/config" "^1.3.37" + abstract-leveldown "^7.2.0" + apollo-server "^3.6.3" debug "^4.3.1" fs-extra "^9.1.0" graphql "^15.3.0" - graphql-tag "^2.11.0" - graphql-tools "^6.2.4" + graphql-tag "^2.12.6" json-stable-stringify "^1.0.1" - jsondown "^1.0.0" pascal-case "^2.0.1" pluralize "^8.0.0" - pouchdb "7.1.1" + pouchdb "7.3.0" 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.3" - -"@truffle/debug-utils@^4.2.9": - version "4.2.14" - resolved "https://registry.yarnpkg.com/@truffle/debug-utils/-/debug-utils-4.2.14.tgz#28431691bc3a96bad19e31733d957ac79059d4e7" - integrity sha512-g5UTX2DPTzrjRjBJkviGI2IrQRTTSvqjmNWCNZNXP+vgQKNxL9maLZhQ6oA3BuuByVW/kusgYeXt8+W1zynC8g== - dependencies: - "@truffle/codec" "^0.7.1" - "@trufflesuite/chromafi" "^2.2.1" - chalk "^2.4.2" - debug "^4.1.0" - highlight.js "^9.15.8" - highlightjs-solidity "^1.0.18" + web3-utils "1.7.4" -"@truffle/debug-utils@^5.1.18": - version "5.1.18" - resolved "https://registry.yarnpkg.com/@truffle/debug-utils/-/debug-utils-5.1.18.tgz#6068673f3536149c0584a3c1193eb933f4663dc6" - integrity sha512-QBq1vA/YozksQZGjyA7o482AuT8KW5gvO8VmYM/PIDllCIqDruEZuz4DZ+zpVUPXyVoJycFo+RKnM/TLE1AZRQ== +"@truffle/debug-utils@^6.0.22", "@truffle/debug-utils@^6.0.35": + version "6.0.35" + resolved "https://registry.yarnpkg.com/@truffle/debug-utils/-/debug-utils-6.0.35.tgz#c9e93d9968857bae14789737f986b8d601a03eb2" + integrity sha512-GuLsc+GFEYiUM683GWh4/ol3jkBts5a601detVWu1Xo5/bSL5gxooOjgOTovjA8dimCjkyi/DnK2yHHC+q+g0g== dependencies: - "@truffle/codec" "^0.11.17" - "@trufflesuite/chromafi" "^2.2.2" + "@truffle/codec" "^0.14.5" + "@trufflesuite/chromafi" "^3.0.0" bn.js "^5.1.3" chalk "^2.4.2" debug "^4.3.1" - highlightjs-solidity "^2.0.1" + highlightjs-solidity "^2.0.5" -"@truffle/debugger@^9.1.19": - version "9.1.19" - resolved "https://registry.yarnpkg.com/@truffle/debugger/-/debugger-9.1.19.tgz#99a8cbd90f5cb55d073800346ae34abdec90ca9b" - integrity sha512-JPUcIqPmOPNwFAaDgOl4N6ZKeagO6ut82EfaoWjbkaB047JLbwr0Lie2wDCylHxt/3+fvGJDjllWkC1bho0FBg== +"@truffle/debugger@^11.0.8": + version "11.0.8" + resolved "https://registry.yarnpkg.com/@truffle/debugger/-/debugger-11.0.8.tgz#81bc4948a610236e9b1f054578950703d79f658a" + integrity sha512-jMhmBG4s9v9yklsy4LYcBhW+8qfcbNxJ9yDyilCHPAN4FWJHSLs9uhPwHiNhMaKCxKVEjwSduq6atGA1HXnIng== dependencies: - "@truffle/abi-utils" "^0.2.4" - "@truffle/codec" "^0.11.17" - "@truffle/source-map-utils" "^1.3.61" + "@truffle/abi-utils" "^0.3.2" + "@truffle/codec" "^0.14.5" + "@truffle/source-map-utils" "^1.3.95" bn.js "^5.1.3" debug "^4.3.1" - json-pointer "^0.6.0" + json-pointer "^0.6.1" 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" + lodash "^4.17.21" 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.3" - web3-eth-abi "1.5.3" - -"@truffle/error@^0.0.11": - version "0.0.11" - resolved "https://registry.yarnpkg.com/@truffle/error/-/error-0.0.11.tgz#2789c0042d7e796dcbb840c7a9b5d2bcd8e0e2d8" - integrity sha512-ju6TucjlJkfYMmdraYY/IBJaFb+Sa+huhYtOoyOJ+G29KcgytUVnDzKGwC7Kgk6IsxQMm62Mc1E0GZzFbGGipw== + reselect-tree "^1.3.7" + semver "7.3.7" + web3 "1.7.4" + web3-eth-abi "1.7.4" -"@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/error@^0.1.0", "@truffle/error@^0.1.1": + version "0.1.1" + resolved "https://registry.yarnpkg.com/@truffle/error/-/error-0.1.1.tgz#e52026ac8ca7180d83443dca73c03e07ace2a301" + integrity sha512-sE7c9IHIGdbK4YayH4BC8i8qMjoAOeg6nUXUDZZp8wlU21/EMpaG+CLx+KqcIPyR+GSWIW3Dm0PXkr2nlggFDA== -"@truffle/events@^0.0.16": - version "0.0.16" - resolved "https://registry.yarnpkg.com/@truffle/events/-/events-0.0.16.tgz#ef1cead08ee38864f809357ec226e0337b5faa91" - integrity sha512-kTad2IdbnAUsE4FRKZciYB4SHTEhX+Mm7+EStpvTwxKFf4GnKH4RPeLOapUb/M0sd4ZUzQEO5fonTXMMbFz7Cw== +"@truffle/events@^0.1.14": + version "0.1.14" + resolved "https://registry.yarnpkg.com/@truffle/events/-/events-0.1.14.tgz#6a3f1026dc1739bfac18b7f8351935b9f2756045" + integrity sha512-6hAaThmkiMe7Hub+p6tyOlOqRQS4VUtxXQkSKN3ol5FphCXe7XE2ZFGRPOK+hUgNcrPXjzD2Q6GbSosVqO65oA== dependencies: + "@truffle/dashboard-message-bus-client" "^0.1.6" + "@truffle/spinners" "^0.2.2" + debug "^4.3.1" emittery "^0.4.1" - ora "^3.4.0" - -"@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== + web3-utils "1.7.4" "@truffle/hdwallet-provider@^1.4.0": - version "1.6.0" - resolved "https://registry.yarnpkg.com/@truffle/hdwallet-provider/-/hdwallet-provider-1.6.0.tgz#8b6c52fa5fcdb1ed1b68df512c518a2115340549" - integrity sha512-/G3WBnO3Ohn2xsf/UZS9mbfKF92EnWtutcC+k1fg+N+feBGNBgsBKJwPOAn3qZ77ezitBWCrdMNoeTbP8jY6nQ== + version "1.7.0" + resolved "https://registry.yarnpkg.com/@truffle/hdwallet-provider/-/hdwallet-provider-1.7.0.tgz#5cfa8bc67c2a30b3943d3dab78f74c6a191cde02" + integrity sha512-nT7BPJJ2jPCLJc5uZdVtRnRMny5he5d3kO9Hi80ZSqe5xlnK905grBptM/+CwOfbeqHKQirI1btwm6r3wIBM8A== dependencies: "@ethereumjs/common" "^2.4.0" "@ethereumjs/tx" "^3.3.0" @@ -3095,132 +1837,69 @@ ethereumjs-util "^6.1.0" ethereumjs-wallet "^1.0.1" -"@truffle/interface-adapter@^0.4.16": - version "0.4.24" - resolved "https://registry.yarnpkg.com/@truffle/interface-adapter/-/interface-adapter-0.4.24.tgz#5d6d4f10c756e967f19ac2ad1620d11d25c034bb" - integrity sha512-2Zho4dJbm/XGwNleY7FdxcjXiAR3SzdGklgrAW4N/YVmltaJv6bT56ACIbPNN6AdzkTSTO65OlsB/63sfSa/VA== - dependencies: - bn.js "^5.1.3" - ethers "^4.0.32" - web3 "1.3.6" - -"@truffle/interface-adapter@^0.5.8": - version "0.5.8" - resolved "https://registry.yarnpkg.com/@truffle/interface-adapter/-/interface-adapter-0.5.8.tgz#76cfd34374d85849e1164de1a3d5a3dce0dc5d01" - integrity sha512-vvy3xpq36oLgjjy8KE9l2Jabg3WcGPOt18tIyMfTQX9MFnbHoQA2Ne2i8xsd4p6KfxIqSjAB53Q9/nScAqY0UQ== +"@truffle/interface-adapter@^0.5.16", "@truffle/interface-adapter@^0.5.21": + version "0.5.21" + resolved "https://registry.yarnpkg.com/@truffle/interface-adapter/-/interface-adapter-0.5.21.tgz#f22c99b7cb5d5c4ebbb6106f9274ea844baeaa2b" + integrity sha512-2ltbu3upsWS0TAQu1kLQc048XlXNmDkCzH6iebX4dg3VBB+l7oG/pu5+/kl8t+LRfzGoEMLKwOQt7vk0Vm3PNA== dependencies: bn.js "^5.1.3" ethers "^4.0.32" - web3 "1.5.3" - -"@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/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" + web3 "1.7.4" -"@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/promise-tracker@^0.1.3": + version "0.1.3" + resolved "https://registry.yarnpkg.com/@truffle/promise-tracker/-/promise-tracker-0.1.3.tgz#8a971a5f22ea6922b3578a49b05be481d2d2a3fa" + integrity sha512-1Z5qEfu0KSS+774xe9aPPlLMvzCJNdEeTofne2HkEPLBb53Lb28ZZoMYrwE8eJRjMKMG+y75IYpX7SKcSgj+OQ== -"@truffle/provider@^0.2.24", "@truffle/provider@^0.2.42": - version "0.2.42" - resolved "https://registry.yarnpkg.com/@truffle/provider/-/provider-0.2.42.tgz#9da6a144b3c9188cdb587451dd7bd907b4c7164b" - integrity sha512-ZNoglPho4alYIjJR+sLTgX0x6ho7m4OAUWuJ50RAWmoEqYc4AM6htdrI+lTSoRrOHHbmgasv22a7rFPMnmDrTg== +"@truffle/provider@^0.2.24", "@truffle/provider@^0.2.59": + version "0.2.59" + resolved "https://registry.yarnpkg.com/@truffle/provider/-/provider-0.2.59.tgz#a6bc51c53a6bf0e376e9b3167fae255f3b0d9208" + integrity sha512-4b79yUSZlEd7KqzaPkQiiT4aRCGaI+pXPdwJMD0olLvnZrGoNrBtRQSmnXesxBcqi6FaSDxxC+/9URG2HBPE2g== dependencies: - "@truffle/error" "^0.0.14" - "@truffle/interface-adapter" "^0.5.8" - web3 "1.5.3" + "@truffle/error" "^0.1.1" + "@truffle/interface-adapter" "^0.5.21" + debug "^4.3.1" + web3 "1.7.4" -"@truffle/provisioner@^0.2.33": - version "0.2.33" - resolved "https://registry.yarnpkg.com/@truffle/provisioner/-/provisioner-0.2.33.tgz#6512cdd4fe04bb8edc12a7c14c46faa8f9f7fea3" - integrity sha512-rvjM24WLacxfbFd9kMRyF0PnnyAsraFBDx5L4g32GRziltHJFqjcgEN12C/jyw7tDhd8BWOf3rS3y+HFpvYJ9A== +"@truffle/source-map-utils@^1.3.95": + version "1.3.95" + resolved "https://registry.yarnpkg.com/@truffle/source-map-utils/-/source-map-utils-1.3.95.tgz#fc38b8586c5cf167f87946f3ea0955c5668fc73f" + integrity sha512-Cm2XEVaueACLywkAltWg5EI5sXt8e+KRMdtOfynFvV8EAMsbGRr8gMwznojFr+d/4lPyiX+Y8E0T2+cquD11Vg== dependencies: - "@truffle/config" "^1.3.10" + "@truffle/code-utils" "^2.0.1" + "@truffle/codec" "^0.14.5" + debug "^4.3.1" + json-pointer "^0.6.1" + node-interval-tree "^1.3.3" + web3-utils "1.7.4" -"@truffle/resolver@^7.0.32": - version "7.0.32" - resolved "https://registry.yarnpkg.com/@truffle/resolver/-/resolver-7.0.32.tgz#180085b3e0006b180192de10ed5d6229f7a4ca47" - integrity sha512-LV69HFsNZypNz3KWOlVqownmi8RR5lX/Hnn2VXTUnuaUQNY2YYN4BpXYTdmeXBT1ytIHugvULiqmk22/fuLqlw== +"@truffle/spinners@^0.2.2": + version "0.2.2" + resolved "https://registry.yarnpkg.com/@truffle/spinners/-/spinners-0.2.2.tgz#0f69f18f3d8242eb6a9a20497e73e1c97e8ca0ac" + integrity sha512-6srCpV5MykkROtkj+ak5YX0GexAVuw+AB+lZIQxWLGP3i75pfJer7vL2nnqgr0madaAUuIixb7A2NJDFx3lOdg== dependencies: - "@truffle/contract" "^4.3.38" - "@truffle/contract-sources" "^0.1.12" - "@truffle/expect" "^0.0.18" - "@truffle/provisioner" "^0.2.33" - 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" + "@trufflesuite/spinnies" "^0.1.1" -"@truffle/source-map-utils@^1.3.61": - version "1.3.61" - resolved "https://registry.yarnpkg.com/@truffle/source-map-utils/-/source-map-utils-1.3.61.tgz#28f3b2c5a4ec0979b95f43ba8ec5c9718512f1b5" - integrity sha512-R9pD0CQIfJbQTtcLxo6qOBC6IFVQYvu6IVXk11i4sBNV2xRZ3/5t/SOyPAO7Ju7GKrJi4g4Chd/3EB7wzHPjQg== +"@trufflesuite/bigint-buffer@1.1.10": + version "1.1.10" + resolved "https://registry.yarnpkg.com/@trufflesuite/bigint-buffer/-/bigint-buffer-1.1.10.tgz#a1d9ca22d3cad1a138b78baaf15543637a3e1692" + integrity sha512-pYIQC5EcMmID74t26GCC67946mgTJFiLXOT/BYozgrd4UEY2JHEGLhWi9cMiQCt5BSqFEvKkCHNnoj82SRjiEw== dependencies: - "@truffle/code-utils" "^1.2.30" - "@truffle/codec" "^0.11.17" - debug "^4.3.1" - json-pointer "^0.6.0" - node-interval-tree "^1.3.3" - web3-utils "1.5.3" + node-gyp-build "4.4.0" -"@trufflesuite/chromafi@^2.2.1", "@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== +"@trufflesuite/chromafi@^3.0.0": + version "3.0.0" + resolved "https://registry.yarnpkg.com/@trufflesuite/chromafi/-/chromafi-3.0.0.tgz#f6956408c1af6a38a6ed1657783ce59504a1eb8b" + integrity sha512-oqWcOqn8nT1bwlPPfidfzS55vqcIDdpfzo3HbU9EnUmcSTX+I8z0UyUFI3tZQjByVJulbzxHxUGS3ZJPwK/GPQ== 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" "@trufflesuite/eth-json-rpc-filters@^4.1.2-1": version "4.1.2-1" @@ -3272,6 +1951,15 @@ ethereumjs-abi "^0.6.8" ethereumjs-util "^5.1.1" +"@trufflesuite/spinnies@^0.1.1": + version "0.1.1" + resolved "https://registry.yarnpkg.com/@trufflesuite/spinnies/-/spinnies-0.1.1.tgz#719230993f55ab39f936ed8778979e7661af188d" + integrity sha512-jltEtmFJj6xmQqr85gP8OqBHCEiId+zw+uAsb3DyLLRD17O6sySW6Afa2Z/jpzSafj+32ssDfLJ+c0of1NLqcA== + dependencies: + chalk "^4.1.2" + cli-cursor "^3.1.0" + strip-ansi "^6.0.0" + "@trufflesuite/web3-provider-engine@15.0.14": version "15.0.14" resolved "https://registry.yarnpkg.com/@trufflesuite/web3-provider-engine/-/web3-provider-engine-15.0.14.tgz#8f9696f434585cc0ab2e57c312090c1f138bc471" @@ -3300,18 +1988,18 @@ xhr "^2.2.0" xtend "^4.0.1" -"@types/abstract-leveldown@*": - version "5.0.2" - resolved "https://registry.yarnpkg.com/@types/abstract-leveldown/-/abstract-leveldown-5.0.2.tgz#ee81917fe38f770e29eec8139b6f16ee4a8b0a5f" - integrity sha512-+jA1XXF3jsz+Z7FcuiNqgK53hTa/luglT2TyTpKPqoYbxVY+mCPF22Rm+q3KPBrMHJwNXFrTViHszBOfU4vftQ== - -"@types/accepts@*", "@types/accepts@^1.3.5": +"@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== dependencies: "@types/node" "*" +"@types/async-eventemitter@^0.2.1": + version "0.2.1" + resolved "https://registry.yarnpkg.com/@types/async-eventemitter/-/async-eventemitter-0.2.1.tgz#f8e6280e87e8c60b2b938624b0a3530fb3e24712" + integrity sha512-M2P4Ng26QbAeITiH7w1d7OxtldgfAe0wobpyJzVK/XOb0cUGKU2R4pfAhqcJBXAe2ife5ZOhSv4wk7p+ffURtg== + "@types/babel-types@*", "@types/babel-types@^7.0.0": version "7.0.11" resolved "https://registry.yarnpkg.com/@types/babel-types/-/babel-types-7.0.11.tgz#263b113fa396fac4373188d73225297fb86f19a9" @@ -3339,32 +2027,34 @@ "@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== + version "5.1.1" + resolved "https://registry.yarnpkg.com/@types/bn.js/-/bn.js-5.1.1.tgz#b51e1b55920a4ca26e9285ff79936bbdec910682" + integrity sha512-qNrYbZqMx0uJAfKnKclPh+dTwK33KfLHYqtyODwd5HnXOjnkhc4qgn3BrK6RWyGZm5+sIFE7Q7Vz6QQtJB7w7g== dependencies: "@types/node" "*" -"@types/body-parser@*": - version "1.19.1" - resolved "https://registry.yarnpkg.com/@types/body-parser/-/body-parser-1.19.1.tgz#0c0174c42a7d017b818303d4b5d969cb0b75929c" - integrity sha512-a6bTJ21vFOGIkwM0kzh9Yr89ziVxq4vYH2fQ6N8AeipEzai/cFK6aGMArIkUeIdRIgpwQa+2bXiLuUJCpSf2Cg== +"@types/body-parser@*", "@types/body-parser@1.19.2": + version "1.19.2" + resolved "https://registry.yarnpkg.com/@types/body-parser/-/body-parser-1.19.2.tgz#aea2059e28b7658639081347ac4fab3de166e6f0" + integrity sha512-ALYone6pm6QmwZoAgeyNksccT9Q4AWZQ6PvfwR37GT6r6FWUPguq6sUmNGSMV2Wr761oQoBxwGGa6DR5o1DC9g== dependencies: "@types/connect" "*" "@types/node" "*" -"@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== +"@types/cacheable-request@^6.0.1", "@types/cacheable-request@^6.0.2": + version "6.0.2" + resolved "https://registry.yarnpkg.com/@types/cacheable-request/-/cacheable-request-6.0.2.tgz#c324da0197de0a98a2312156536ae262429ff6b9" + integrity sha512-B3xVo+dlKM6nnKTcmm5ZtY/OL8bOAOd2Olee9M1zft65ox50OzjEHW91sDiU9j6cvW8Ejg1/Qkf4xd2kugApUA== dependencies: - "@types/connect" "*" + "@types/http-cache-semantics" "*" + "@types/keyv" "*" "@types/node" "*" + "@types/responselike" "*" "@types/chai@^4.2.0": - version "4.2.22" - resolved "https://registry.yarnpkg.com/@types/chai/-/chai-4.2.22.tgz#47020d7e4cf19194d43b5202f35f75bd2ad35ce7" - integrity sha512-tFfcE+DSTzWAgifkjik9AySNqIyNoYwmR+uecPwwD/XRNfvOjmC/FjCxpiUGDkDVDphPfCUecSQVFw+lN3M3kQ== + version "4.3.3" + resolved "https://registry.yarnpkg.com/@types/chai/-/chai-4.3.3.tgz#3c90752792660c4b562ad73b3fbd68bf3bc7ae07" + integrity sha512-hC7OMnszpxhZPduX+m+nrx+uFoLkWOMiR4oa/AZF3MuSETYTZmFfJAHqZEM8MVlvfG7BEUcgvtwoCTxBp6hm3g== "@types/concat-stream@^1.6.0": version "1.6.1" @@ -3380,25 +2070,10 @@ dependencies: "@types/node" "*" -"@types/content-disposition@*": - version "0.5.4" - resolved "https://registry.yarnpkg.com/@types/content-disposition/-/content-disposition-0.5.4.tgz#de48cf01c79c9f1560bcfd8ae43217ab028657f8" - integrity sha512-0mPF08jn9zYI0n0Q/Pnz7C4kThdSt+6LD4amsrYDDpgBfrVWa3TcCOxKX1zkGgYniGagRv8heN2cbh+CAn+uuQ== - -"@types/cookies@*": - version "0.7.7" - resolved "https://registry.yarnpkg.com/@types/cookies/-/cookies-0.7.7.tgz#7a92453d1d16389c05a5301eef566f34946cfd81" - integrity sha512-h7BcvPUogWbKCzBR2lY4oqaZbO3jXZksexYJVFvkrFeLgbZjQkU4x8pRq6eg2MHXQhY0McQdqmmsxRWlVAHooA== - dependencies: - "@types/connect" "*" - "@types/express" "*" - "@types/keygrip" "*" - "@types/node" "*" - -"@types/cors@2.8.10": - version "2.8.10" - resolved "https://registry.yarnpkg.com/@types/cors/-/cors-2.8.10.tgz#61cc8469849e5bcdd0c7044122265c39cec10cf4" - integrity sha512-C7srjHiVG3Ey1nR6d511dtDkCEjxuN9W1HWAEjGq8kpcwmNM6JJkpC0xvabM7BXTG2wDq8Eu33iH9aQKa7IvLQ== +"@types/cors@2.8.12": + version "2.8.12" + resolved "https://registry.yarnpkg.com/@types/cors/-/cors-2.8.12.tgz#6b2c510a7ad7039e98e7b8d3d6598f4359e5c080" + integrity sha512-vt+kDhq/M2ayberEtJcIN/hxXy1Pk+59g2FV/ZQceeaTyCtCucjL2Q7FXlFjtWn4n15KCr1NE2lNNFhp0lEThw== "@types/debug@^4.1.7": version "4.1.7" @@ -3407,23 +2082,25 @@ dependencies: "@types/ms" "*" -"@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== +"@types/express-serve-static-core@4.17.30": + version "4.17.30" + resolved "https://registry.yarnpkg.com/@types/express-serve-static-core/-/express-serve-static-core-4.17.30.tgz#0f2f99617fa8f9696170c46152ccf7500b34ac04" + integrity sha512-gstzbTWro2/nFed1WXtf+TtrpwxH7Ggs4RLYTLbeVgIkUQOI3WG/JKjgeOU1zXDvezllupjrf8OPIdvTbIaVOQ== dependencies: - tweetnacl "^1.0.0" + "@types/node" "*" + "@types/qs" "*" + "@types/range-parser" "*" -"@types/express-serve-static-core@^4.17.18", "@types/express-serve-static-core@^4.17.21": - version "4.17.24" - resolved "https://registry.yarnpkg.com/@types/express-serve-static-core/-/express-serve-static-core-4.17.24.tgz#ea41f93bf7e0d59cd5a76665068ed6aab6815c07" - integrity sha512-3UJuW+Qxhzwjq3xhwXm2onQcFHn76frIYVbTu+kn24LFxI+dEhdfISDFovPB8VpEgW8oQCTpRuCe+0zJxB7NEA== +"@types/express-serve-static-core@^4.17.18": + version "4.17.31" + resolved "https://registry.yarnpkg.com/@types/express-serve-static-core/-/express-serve-static-core-4.17.31.tgz#a1139efeab4e7323834bb0226e62ac019f474b2f" + integrity sha512-DxMhY+NAsTwMMFHBTtJFNp5qiHKJ7TeqOo23zVEM9alT1Ml27Q3xcTH0xwxn7Q0BbMcVEJOs/7aQtUWupUQN3Q== dependencies: "@types/node" "*" "@types/qs" "*" "@types/range-parser" "*" -"@types/express@*", "@types/express@^4.17.12": +"@types/express@4.17.13": version "4.17.13" resolved "https://registry.yarnpkg.com/@types/express/-/express-4.17.13.tgz#a76e2995728999bab51a33fabce1d705a3709034" integrity sha512-6bSZTPaTIACxn48l50SR+axgrqm6qXFIxrdAKaG6PaJk3+zuUr35hBlgT7vOmJcum+OEaIBLtHV/qloEAFITeA== @@ -3436,106 +2113,56 @@ "@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: - "@types/node" "*" - -"@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== + integrity sha512-8BSvG1kGm83cyJITQMZSulnl6QV8jqAGreJsc5tPu1Jq0vTSOiY/k24Wx82JRpWwZSqrala6sd5rWi6aNXvqcw== dependencies: "@types/node" "*" "@types/glob@^7.1.1": - version "7.1.4" - resolved "https://registry.yarnpkg.com/@types/glob/-/glob-7.1.4.tgz#ea59e21d2ee5c517914cb4bc8e4153b99e566672" - integrity sha512-w+LsMxKyYQm347Otw+IfBXOv9UWVjpHpCDdbBMt8Kz/xbvCYNjP+0qPh91Km3iKfSRLBB0P7fAMf0KHrPu+MyA== + version "7.2.0" + resolved "https://registry.yarnpkg.com/@types/glob/-/glob-7.2.0.tgz#bc1b5bf3aa92f25bd5dd39f35c57361bdce5b2eb" + integrity sha512-ZUxbzKl0IfJILTS6t7ip5fQQM/J3TJYubDm3nMbgubNNYS62eXeUpoLUC8/7fJNiFYHTrGPQn7hspDUzIHX3UA== dependencies: "@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.3" - resolved "https://registry.yarnpkg.com/@types/http-assert/-/http-assert-1.5.3.tgz#ef8e3d1a8d46c387f04ab0f2e8ab8cb0c5078661" - integrity sha512-FyAOrDuQmBi8/or3ns4rwPno7/9tJTijVW6aQQjK02+kOQ8zmoNg2XJtAuQhvQcy1ASJq38wirX5//9J1EqoUA== - -"@types/http-errors@*": - version "1.8.1" - resolved "https://registry.yarnpkg.com/@types/http-errors/-/http-errors-1.8.1.tgz#e81ad28a60bee0328c6d2384e029aec626f1ae67" - integrity sha512-e+2rjEwK6KDaNOm5Aa9wNGgyS9oSZU/4pfSMMPYNOfjvFI0WVXm29+ITRFr6aKDvvKo7uU1jV68MW4ScsfDi7Q== - -"@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/http-cache-semantics@*": + version "4.0.1" + resolved "https://registry.yarnpkg.com/@types/http-cache-semantics/-/http-cache-semantics-4.0.1.tgz#0ea7b61496902b95890dc4c3a116b60cb8dae812" + integrity sha512-SZs7ekbP8CN0txVG2xVRH6EgKmEm31BOxA07vkFaETzZz1xh+cbt8BcI0slpymvwhx5dlFnQG2rTlPVQn+iRPQ== "@types/json5@^0.0.29": version "0.0.29" resolved "https://registry.yarnpkg.com/@types/json5/-/json5-0.0.29.tgz#ee28707ae94e11d2b827bcbe5270bcea7f3e71ee" - integrity sha1-7ihweulOEdK4J7y+UnC86n8+ce4= - -"@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== - -"@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.4" - resolved "https://registry.yarnpkg.com/@types/koa/-/koa-2.13.4.tgz#10620b3f24a8027ef5cbae88b393d1b31205726b" - integrity sha512-dfHYMfU+z/vKtQB7NUrthdAEiSvnLebvBjwHtfFmpZmB7em2N3WVQdHgnFq+xvyVgxW5jKDmjWfLD3lw4g4uTw== - dependencies: - "@types/accepts" "*" - "@types/content-disposition" "*" - "@types/cookies" "*" - "@types/http-assert" "*" - "@types/http-errors" "*" - "@types/keygrip" "*" - "@types/koa-compose" "*" - "@types/node" "*" - -"@types/level-errors@*": - version "3.0.0" - resolved "https://registry.yarnpkg.com/@types/level-errors/-/level-errors-3.0.0.tgz#15c1f4915a5ef763b51651b15e90f6dc081b96a8" - integrity sha512-/lMtoq/Cf/2DVOm6zE6ORyOM+3ZVm/BvzEZVxUhf6bgh8ZHglXlBqxbxSlJeVp8FCbD3IVvk/VbsaNmDjrQvqQ== + integrity sha512-dRLjCWHYg4oaA77cxO64oO+7JwCwnIzkZPdrrC71jQmQtlhM556pwKo5bUzqvZndkVbeFLIIi+9TC40JNF5hNQ== -"@types/levelup@^4.3.0": - version "4.3.3" - resolved "https://registry.yarnpkg.com/@types/levelup/-/levelup-4.3.3.tgz#4dc2b77db079b1cf855562ad52321aa4241b8ef4" - integrity sha512-K+OTIjJcZHVlZQN1HmU64VtrC0jC3dXWQozuEIR9zVvltIk90zaGPM2AgT+fIkChpzHhFE3YnvFLCbLtzAmexA== +"@types/keyv@*": + version "3.1.4" + resolved "https://registry.yarnpkg.com/@types/keyv/-/keyv-3.1.4.tgz#3ccdb1c6751b0c7e52300bcdacd5bcbf8faa75b6" + integrity sha512-BQ5aZNSCpj7D6K2ksrRCTmKRLEpnPvWDiLPfoGyhZ++8YtiK9d/3DBKPJgry359X/P1PfruyYwvnvwFjuEiEIg== dependencies: - "@types/abstract-leveldown" "*" - "@types/level-errors" "*" "@types/node" "*" "@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== + version "4.0.2" + resolved "https://registry.yarnpkg.com/@types/long/-/long-4.0.2.tgz#b74129719fc8d11c01868010082d483b7545591a" + integrity sha512-MqTGEo5bj5t157U6fA/BiDynNkn0YknVdh48CMPkTSpFTVmvao5UQmm7uEF6xBEo7qIMAlY/JSleYaE6VOdpaA== -"@types/lru-cache@^5.1.0": +"@types/lru-cache@5.1.1", "@types/lru-cache@^5.1.0": version "5.1.1" resolved "https://registry.yarnpkg.com/@types/lru-cache/-/lru-cache-5.1.1.tgz#c48c2e27b65d2a153b19bfc1a317e30872e01eef" integrity sha512-ssE3Vlrys7sdIzs5LOxCzTVMsU7i9oa/IaW92wF32JFb3CVczqOkru2xspuKczHEbG3nvmPY7IFqVmGGHdNbYw== -"@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== +"@types/mime@*": + version "3.0.1" + resolved "https://registry.yarnpkg.com/@types/mime/-/mime-3.0.1.tgz#5f8f2bca0a5863cb69bc0b0acd88c96cb1d4ae10" + integrity sha512-Y4XFY5VJAuw0FgAqPNd6NNoV44jbq9Bz2L7Rh/J6jLTiHBSBJa9fxqQIvkIld4GsoDOcCbvzOUAbLPsSKKg+uA== + +"@types/minimatch@*": + version "5.1.2" + resolved "https://registry.yarnpkg.com/@types/minimatch/-/minimatch-5.1.2.tgz#07508b45797cb81ec3f273011b054cd0755eddca" + integrity sha512-K0VQKziLUWkVKiRVrx4a40iPaxTUefQmjtkQofBkYRcoaaL/8rhwDWww9qWbrgicNOgnpIsMxyNIUM4+n6dUIA== -"@types/minimatch@*", "@types/minimatch@^3.0.4": +"@types/minimatch@^3.0.4": version "3.0.5" resolved "https://registry.yarnpkg.com/@types/minimatch/-/minimatch-3.0.5.tgz#1001cc5e6a3704b83c236027e77f2f58ea010f40" integrity sha512-Klz949h02Gz2uZCMGwDUSDS1YBlTdDDgbWHi+81l29tQALUtvz4rAYi5uoVhE5Lagoq6DeqAUlbrHvW/mXDgdQ== @@ -3545,25 +2172,10 @@ resolved "https://registry.yarnpkg.com/@types/ms/-/ms-0.7.31.tgz#31b7ca6407128a3d2bbc27fe2d21b345397f6197" integrity sha512-iiUgKzV9AuaEkZqkOLDIvlQiL6ltuZd9tGcW3gwpnX8JbuiuhFlEGmmFXEXkN50Cvq7Os88IY2v0dkDqXYWVgA== -"@types/node@*": - version "16.11.7" - resolved "https://registry.yarnpkg.com/@types/node/-/node-16.11.7.tgz#36820945061326978c42a01e56b61cd223dfdc42" - integrity sha512-QB5D2sqfSjCmTuWcBWyJ+/44bcjO7VbjSbOE0ucoVbAsSNQc4Lt6QkgkVXkTDwkL4z/beecZNDvVX15D4P8Jbw== - -"@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": - version "16.10.3" - resolved "https://registry.yarnpkg.com/@types/node/-/node-16.10.3.tgz#7a8f2838603ea314d1d22bb3171d899e15c57bd5" - integrity sha512-ho3Ruq+fFnBrZhUYI46n/bV2GjwzSkwuT4dTf0GkuNFmnb8nq4ny2z9JEVemFi6bdEJanHLlYfy9c6FN9B9McQ== +"@types/node@*", "@types/node@>=13.7.0": + version "18.7.18" + resolved "https://registry.yarnpkg.com/@types/node/-/node-18.7.18.tgz#633184f55c322e4fb08612307c274ee6d5ed3154" + integrity sha512-m+6nTEOadJZuTPkKR/SYK3A2d7FZrgElol9UP1Kae90VVU4a6mxnPuLiIW1m4Cq4gZ/nWb9GrdVXJCoCazDAbg== "@types/node@^10.0.3", "@types/node@^10.1.0", "@types/node@^10.3.2": version "10.17.60" @@ -3571,9 +2183,9 @@ integrity sha512-F0KIgDJfy2nA3zMLmWGKxcH2ZVEtCZXHHdOQs2gSaQ27+lNeEfGxzkIw90aXswATX7AZ33tahPbzy6KAfUreVw== "@types/node@^12.12.6": - version "12.20.28" - resolved "https://registry.yarnpkg.com/@types/node/-/node-12.20.28.tgz#4b20048c6052b5f51a8d5e0d2acbf63d5a17e1e2" - integrity sha512-cBw8gzxUPYX+/5lugXIPksioBSbE42k0fZ39p+4yRzfYjN6++eq9kAPdlY9qm+MXyfbk9EmvCYAYRn380sF46w== + version "12.20.55" + resolved "https://registry.yarnpkg.com/@types/node/-/node-12.20.55.tgz#c329cbd434c42164f846b909bd6f85b5537f6240" + integrity sha512-J8xLz7q2OFulZ2cyGTLE1TbbZcjpno7FaN6zdJNrgAdrJ+DZzh/uFR6YrTb4C+nXakvud8Q4+rbhoIWlYQbUFQ== "@types/node@^8.0.0": version "8.10.66" @@ -3597,10 +2209,17 @@ resolved "https://registry.yarnpkg.com/@types/range-parser/-/range-parser-1.2.4.tgz#cd667bcfdd025213aafb7ca5915a932590acdcdc" integrity sha512-EEhsLsD6UsDM1yFhAvy0Cjr6VwmpMWqFBCb9w07wVugF7w9nfajxLuVmngTIpgS6svCnm6Vaw+MZhoDCKnOfsw== -"@types/retry@^0.12.0": - version "0.12.1" - resolved "https://registry.yarnpkg.com/@types/retry/-/retry-0.12.1.tgz#d8f1c0d0dc23afad6dc16a9e993a0865774b4065" - integrity sha512-xoDlM2S4ortawSWORYqsdU+2rxdh4LRW9ytc3zmT37RIKQh6IHyKwwtKhKis9ah8ol07DCkZxPt8BBvPjC6v4g== +"@types/responselike@*", "@types/responselike@^1.0.0": + version "1.0.0" + resolved "https://registry.yarnpkg.com/@types/responselike/-/responselike-1.0.0.tgz#251f4fe7d154d2bad125abe1b429b23afd262e29" + integrity sha512-85Y2BjiufFzaMIlvJDvTTB8Fxl2xfLo4HgmHzVBz08w4wDePCTjYw66PdrolO0kzli3yam/YCgRufyo1DdQVTA== + dependencies: + "@types/node" "*" + +"@types/retry@0.12.0": + version "0.12.0" + resolved "https://registry.yarnpkg.com/@types/retry/-/retry-0.12.0.tgz#2b35eccfcee7d38cd72ad99232fbd58bffb3c84d" + integrity sha512-wWKOClTTiizcZhXnPY4wikVAwmdYHp8q6DmC+EJUzAMsycb7HB32Kh9RN4+0gExjmPmZSAQjgURXIGATPegAvA== "@types/secp256k1@^4.0.1": version "4.0.3" @@ -3609,98 +2228,29 @@ dependencies: "@types/node" "*" -"@types/serve-static@*": - version "1.13.10" - resolved "https://registry.yarnpkg.com/@types/serve-static/-/serve-static-1.13.10.tgz#f5e0ce8797d2d7cc5ebeda48a52c96c4fa47a8d9" - integrity sha512-nCkHGI4w7ZgAdNkrEu0bv+4xNV/XDqW+DydknebMOQwkpDGx8G+HTlj7R7ABI8i8nKxVw0wtKPi1D+lPOkh4YQ== - dependencies: - "@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/websocket@1.0.2": - version "1.0.2" - resolved "https://registry.yarnpkg.com/@types/websocket/-/websocket-1.0.2.tgz#d2855c6a312b7da73ed16ba6781815bf30c6187a" - integrity sha512-B5m9aq7cbbD/5/jThEr33nUY8WEfVi6A2YKCTOvw5Ldy7mtsOkqRvGjnzy6g7iMMDsgu7xREuCzqATLDLQVKcQ== - dependencies: - "@types/node" "*" +"@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/ws@^7.0.0", "@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== +"@types/serve-static@*": + version "1.15.0" + resolved "https://registry.yarnpkg.com/@types/serve-static/-/serve-static-1.15.0.tgz#c7930ff61afb334e121a9da780aac0d9b8f34155" + integrity sha512-z5xyF6uh8CbjAu9760KDKsH2FcDxZ2tFCsA4HIMWE6IkiYMXfVoa+4f9KX+FN0ZLsaMw1WNG2ETLA6N+/YA+cg== dependencies: + "@types/mime" "*" "@types/node" "*" -"@types/zen-observable@0.8.3": - version "0.8.3" - resolved "https://registry.yarnpkg.com/@types/zen-observable/-/zen-observable-0.8.3.tgz#781d360c282436494b32fe7d9f7f8e64b3118aa3" - integrity sha512-fbF6oTd4sGGy0xjHPKAt+eS2CrxJ3+6gQ3FGcBoIJR2TLAyCkCyI8JqZNy+FeON0AhVgNJoUumVoZQjBFUqHkw== +"@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== "@vascosantos/moving-average@^1.1.0": version "1.1.0" resolved "https://registry.yarnpkg.com/@vascosantos/moving-average/-/moving-average-1.1.0.tgz#8d5793b09b2d6021ba5e620c6a0f876c20db7eaa" integrity sha512-MVEJ4vWAPNbrGLjz7ITnHYg+YXZ6ijAqtH5/cHwSoCpbvuJ98aLXwFfPKAUfZpJMQR5uXB58UJajbY130IRF/w== -"@wry/context@^0.6.0": - version "0.6.1" - resolved "https://registry.yarnpkg.com/@wry/context/-/context-0.6.1.tgz#c3c29c0ad622adb00f6a53303c4f965ee06ebeb2" - integrity sha512-LOmVnY1iTU2D8tv4Xf6MVMZZ+juIJ87Kt/plMijjN20NMAXGmH4u8bS1t0uT74cZ5gwpocYueV58YwyI8y+GKw== - dependencies: - tslib "^2.3.0" - -"@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" - -"@wry/equality@^0.5.0": - version "0.5.2" - resolved "https://registry.yarnpkg.com/@wry/equality/-/equality-0.5.2.tgz#72c8a7a7d884dff30b612f4f8464eba26c080e73" - integrity sha512-oVMxbUXL48EV/C0/M7gLVsoK6qRHPS85x8zECofEZOVvxGmIPLA9o5Z27cc2PoAyZz1S2VoM2A7FLAnpfGlneA== - dependencies: - tslib "^2.3.0" - -"@wry/trie@^0.3.0": - version "0.3.1" - resolved "https://registry.yarnpkg.com/@wry/trie/-/trie-0.3.1.tgz#2279b790f15032f8bcea7fc944d27988e5b3b139" - integrity sha512-WwB53ikYudh9pIorgxrkHKrQZcCqNM/Q/bDzZBffEaGUKGuHrRb3zZUT9Sh2qw9yogC7SsdRmQ1ER0pqvd3bfw== - dependencies: - tslib "^2.3.0" - -"@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" - integrity sha1-X6rZwsB/YN12dw9xzwJbYqY8/U4= - abbrev@1: version "1.1.1" resolved "https://registry.yarnpkg.com/abbrev/-/abbrev-1.1.1.tgz#f8f2c887ad10bf67f634f005b6987fed3179aac8" @@ -3709,22 +2259,7 @@ abbrev@1: abbrev@1.0.x: version "1.0.9" resolved "https://registry.yarnpkg.com/abbrev/-/abbrev-1.0.9.tgz#91b4792588a7738c25f35dd6f63752a2f8776135" - integrity sha1-kbR5JYinc4wl813W9jdSovh3YTU= - -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" + integrity sha512-LEyx4aLEC3x6T0UguF6YILf+ntvmOaWsVfENmIW0E9H09vKlLDGelMjjSm0jkDHALj8A8quZ/HapKNigzwge+Q== abort-controller@3.0.0, abort-controller@^3.0.0: version "3.0.0" @@ -3740,6 +2275,24 @@ abortable-iterator@^3.0.0, abortable-iterator@^3.0.2: dependencies: get-iterator "^1.0.2" +abortcontroller-polyfill@^1.7.3: + version "1.7.3" + resolved "https://registry.yarnpkg.com/abortcontroller-polyfill/-/abortcontroller-polyfill-1.7.3.tgz#1b5b487bd6436b5b764fd52a612509702c3144b5" + integrity sha512-zetDJxd89y3X99Kvo4qFx8GKlt6GsvN3UcRZHwU6iFA/0KiOmhkTVhe8oRoTBiTVPZu09x3vCra47+w8Yz1+2Q== + +abstract-level@^1.0.0, abstract-level@^1.0.2, abstract-level@^1.0.3: + version "1.0.3" + resolved "https://registry.yarnpkg.com/abstract-level/-/abstract-level-1.0.3.tgz#78a67d3d84da55ee15201486ab44c09560070741" + integrity sha512-t6jv+xHy+VYwc4xqZMn2Pa9DjcdzvzZmQGRjTFc8spIbRGHgBrEKbPq+rYXc7CCo0lxgYvSgKVg9qZAhpVQSjA== + dependencies: + buffer "^6.0.3" + catering "^2.1.0" + is-buffer "^2.0.5" + level-supports "^4.0.0" + level-transcoder "^1.0.1" + module-error "^1.0.1" + queue-microtask "^1.2.3" + abstract-leveldown@^5.0.0, abstract-leveldown@~5.0.0: version "5.0.0" resolved "https://registry.yarnpkg.com/abstract-leveldown/-/abstract-leveldown-5.0.0.tgz#f7128e1f86ccabf7d2893077ce5d06d798e386c6" @@ -3784,15 +2337,7 @@ abstract-leveldown@~2.7.1: dependencies: xtend "~4.0.0" -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" - -abstract-leveldown@~6.2.1: +abstract-leveldown@~6.2.1, abstract-leveldown@~6.2.3: version "6.2.3" resolved "https://registry.yarnpkg.com/abstract-leveldown/-/abstract-leveldown-6.2.3.tgz#036543d87e3710f2528e47040bc3261b77a9a8eb" integrity sha512-BsLm5vFMRUrrLeCcRc+G0t2qOaTzpoJQLOubq2XM72eNpjF5UdU5o/5NvlNhx95XHcAvcl8OMXr4mlg/fRgUXQ== @@ -3803,32 +2348,18 @@ abstract-leveldown@~6.2.1: level-supports "~1.0.0" xtend "~4.0.0" -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== - dependencies: - 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" - integrity sha1-VbtemGkVB7dFedBRNBMhfDgMVM8= +accepts@^1.3.5, accepts@~1.3.8: + version "1.3.8" + resolved "https://registry.yarnpkg.com/accepts/-/accepts-1.3.8.tgz#0bf0be125b67014adcb0b0921e62db7bffe16b2e" + integrity sha512-PYAthTa2m2VKxuvSD3DPC/Gy+U+sOA1LAuT8mkmRuvw+NACSaeXEQ+NHcVF7rONl6qcaxV3Uuemwawk+7+SJLw== dependencies: - acorn "^2.1.0" + mime-types "~2.1.34" + negotiator "0.6.3" acorn-globals@^3.0.0: version "3.1.0" resolved "https://registry.yarnpkg.com/acorn-globals/-/acorn-globals-3.1.0.tgz#fd8270f71fbb4996b004fa880ee5d46573a731bf" - integrity sha1-/YJw9x+7SZawBPqIDuXUZXOnMb8= + integrity sha512-uWttZCk96+7itPxK8xCzY86PnxKTMrReKDqrHzv42VQY0K30PUO8WY13WMOuI+cOdX4EIdzdvQ8k6jkuGRFMYw== dependencies: acorn "^4.0.4" @@ -3837,25 +2368,15 @@ acorn-jsx@^5.0.0: resolved "https://registry.yarnpkg.com/acorn-jsx/-/acorn-jsx-5.3.2.tgz#7ed5bb55908b3b2f1bc55c6af1653bada7f07937" integrity sha512-rq9s+JNhf0IChjtDXxllJ7g41oZk5SlXtp0LHwyA5cejwn7vKmKp4pPri6YEePv2PU65sAsegbXtIinmDFDXgQ== -acorn@4.X, acorn@^4.0.3, acorn@^4.0.4, acorn@~4.0.2: - 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@^3.1.0: version "3.3.0" resolved "https://registry.yarnpkg.com/acorn/-/acorn-3.3.0.tgz#45e37fb39e8da3f25baee3ff5369e2bb5f22017a" - integrity sha1-ReN/s56No/JbruP/U2niu18iAXo= + integrity sha512-OLUyIIZ7mF5oaAUT1w0TFqQS81q3saT46x8t7ukpPjMNk+nbs4ZHhs7ToV8EWnLYLepjETXd4XaCE4uxkMeqUw== -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@^4.0.4, acorn@~4.0.2: + version "4.0.13" + resolved "https://registry.yarnpkg.com/acorn/-/acorn-4.0.13.tgz#105495ae5361d697bd195c825192e1ad7f253787" + integrity sha512-fu2ygVGuMmlzG8ZeRJ0bvR41nsAkxxhbyk8bZ1SS521Z7vmgJFTQQlfz/Mp/nJexGBz+v8sC9bM6+lNgskt4Ug== acorn@^6.0.7: version "6.4.2" @@ -3863,9 +2384,9 @@ acorn@^6.0.7: integrity sha512-XtGIhXwF8YM8bJhGxG5kXgjkEuNGLTkoYqVE+KMR+aspr4KGYmKYg7yUe3KghyQ9yheNwLnjmzh/7+gfDBmHCQ== address@^1.0.1: - version "1.1.2" - resolved "https://registry.yarnpkg.com/address/-/address-1.1.2.tgz#bf1116c9c758c51b7a933d296b72c221ed9428b6" - integrity sha512-aT6camzM4xEA54YVJYSqxz1kv4IHnQZRtThJJHhUMRExaU5spC7jX5ugSwTaTgJliIgs4VhZOk7htClvQ/LmRA== + version "1.2.1" + resolved "https://registry.yarnpkg.com/address/-/address-1.2.1.tgz#25bb61095b7522d65b357baa11bc05492d4c8acd" + integrity sha512-B+6bi5D34+fDYENiH5qOlA0cV2rAGKuWZ9LeyUUehbXy8e0VS9e498yO0Jeeh+iM+6KbfudHTFjXw2MmJD4QRA== adm-zip@^0.4.16: version "0.4.16" @@ -3875,7 +2396,7 @@ adm-zip@^0.4.16: 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= + integrity sha512-H7wUZRn8WpTq9jocdxQ2c8x2sKo9ZVmzfRE13GiNJXfp7NcKYEdvl3vspKjXox6RIG2VtaRe4JFvxG4rqp2Zuw== aes-js@^3.1.2: version "3.1.2" @@ -3904,12 +2425,7 @@ ajv-formats@^2.1.1: dependencies: ajv "^8.0.0" -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.10.2, ajv@^6.12.3, ajv@^6.12.5, ajv@^6.6.1, ajv@^6.9.1: +ajv@^6.10.0, ajv@^6.10.2, ajv@^6.12.3, 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== @@ -3920,9 +2436,9 @@ ajv@^6.1.0, ajv@^6.10.0, ajv@^6.10.2, ajv@^6.12.3, ajv@^6.12.5, ajv@^6.6.1, ajv@ uri-js "^4.2.2" ajv@^8.0.0, ajv@^8.6.3: - version "8.6.3" - resolved "https://registry.yarnpkg.com/ajv/-/ajv-8.6.3.tgz#11a66527761dc3e9a3845ea775d2d3c0414e8764" - integrity sha512-SMJOdDP6LqTkD0Uq8qLi+gMwSt0imXLSV080qFVwJCpH9U6Mb+SUGHAXM0KNbcBPguytWyvFxcHgMLe2D2XSpw== + version "8.11.0" + resolved "https://registry.yarnpkg.com/ajv/-/ajv-8.11.0.tgz#977e91dd96ca669f54a11e23e378e33b884a565f" + integrity sha512-wGgprdCvMalC0BztXvitD2hC04YffAvtsUn93JbGXYLAtCUO4xd17mCCZQxUOItiBwZvJScWo8NIvQMQ71rdpg== dependencies: fast-deep-equal "^3.1.1" json-schema-traverse "^1.0.0" @@ -3932,7 +2448,7 @@ ajv@^8.0.0, ajv@^8.6.3: 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= + integrity sha512-GrTZLRpmp6wIC2ztrWW9MjjTgSKccffgFagbNDOX95/dcjEcYZibYTeaOntySQLcdw1ztBoFkviiUvTMbb9MYg== dependencies: kind-of "^3.0.2" longest "^1.0.1" @@ -3941,26 +2457,26 @@ align-text@^0.1.1, align-text@^0.1.3: amdefine@>=0.0.4: version "1.0.1" resolved "https://registry.yarnpkg.com/amdefine/-/amdefine-1.0.1.tgz#4a5282ac164729e93619bcfd3ad151f817ce91f5" - integrity sha1-SlKCrBZHKek2Gbz9OtFR+BfOkfU= + integrity sha512-S2Hw0TtNkMJhIabBwIojKL9YHO5T0n5eNqWJ7Lrlel/zDbftQpxpapi8tZs3X1HWa+u+QeydGmzzNU0m09+Rcg== amp-message@~0.1.1: version "0.1.2" resolved "https://registry.yarnpkg.com/amp-message/-/amp-message-0.1.2.tgz#a78f1c98995087ad36192a41298e4db49e3dfc45" - integrity sha1-p48cmJlQh602GSpBKY5NtJ49/EU= + integrity sha512-JqutcFwoU1+jhv7ArgW38bqrE+LQdcRv4NxNw0mp0JHQyB6tXesWRjtYKlDgHRY2o3JE5UTaBGUK8kSWUdxWUg== dependencies: amp "0.3.1" amp@0.3.1, amp@~0.3.1: version "0.3.1" resolved "https://registry.yarnpkg.com/amp/-/amp-0.3.1.tgz#6adf8d58a74f361e82c1fa8d389c079e139fc47d" - integrity sha1-at+NWKdPNh6CwfqNOJwHnhOfxH0= + integrity sha512-OwIuC4yZaRogHKiuU5WlMR5Xk/jAcpPtawWL05Gj8Lvm2F6mwoJt4O/bHI+DHwG79vWd+8OFYM4/BzYqyRd3qw== 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, 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== @@ -3970,6 +2486,11 @@ ansi-colors@^3.2.3: resolved "https://registry.yarnpkg.com/ansi-colors/-/ansi-colors-3.2.4.tgz#e3a3da4bfbae6c86a9c285625de124a234026fbf" integrity sha512-hHUXGagefjN2iRrID63xckIvotOXOojhQKWIPUZ4mNUZ9nLZW+7FMNoE1lOkEhNWYsx/7ysGIuJYCiMAA9FnrA== +ansi-colors@^4.1.1: + version "4.1.3" + resolved "https://registry.yarnpkg.com/ansi-colors/-/ansi-colors-4.1.3.tgz#37611340eb2243e70cc604cad35d63270d48781b" + integrity sha512-/6w/C21Pm1A7aZitlI5Ni/2J6FFQN8i1Cvz3kHABAAbw93v/NlvKdVOqz7CCWz/3iv/JplRSEEZ83XION15ovw== + ansi-escapes@^3.2.0: version "3.2.0" resolved "https://registry.yarnpkg.com/ansi-escapes/-/ansi-escapes-3.2.0.tgz#8780b98ff9dbf5638152d1f1fe5c1d7b4442976b" @@ -3982,31 +2503,20 @@ ansi-escapes@^4.3.0: dependencies: type-fest "^0.21.3" -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: version "2.1.1" resolved "https://registry.yarnpkg.com/ansi-regex/-/ansi-regex-2.1.1.tgz#c3b33ab5ee360d86e0e628f0468ae7ef27d654df" - integrity sha1-w7M6te42DYbg5ijwRorn7yfWVN8= + integrity sha512-TIGnTpdo+E3+pCyAluZvtED5p5wCqLdezCyhPZzKPcxvFplEt4i+W7OONCKgeZFT3+y5NZZfOOS/Bdcanm1MYA== 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= + version "3.0.1" + resolved "https://registry.yarnpkg.com/ansi-regex/-/ansi-regex-3.0.1.tgz#123d6479e92ad45ad897d4054e3c7ca7db4944e1" + integrity sha512-+O9Jct8wf++lXxxFc4hc8LsjaSq0HFzzL7cVsw8pRDIPdjKD2mT4ytDZlLuSBZ4cLKZFXIrMGO7DbQCtMJJMKw== 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== + version "4.1.1" + resolved "https://registry.yarnpkg.com/ansi-regex/-/ansi-regex-4.1.1.tgz#164daac87ab2d6f6db3a29875e2d1766582dabed" + integrity sha512-ILlv4k/3f6vfQ4OoP2AGvirOktlQ98ZEL1k9FaQjxa3L1abBgbuTDAdPOpvbGncC0BTVQrl+OM8xZGK6tWXt7g== ansi-regex@^5.0.1: version "5.0.1" @@ -4021,7 +2531,7 @@ ansi-regex@^6.0.1: 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= + integrity sha512-kmCevFghRiWM7HB5zTPULl4r9bVFSWjz62MhqizDGUrq2NWuNMQyuv4tHHoKJHs69M/MF64lEcHdYIocrdWQYA== ansi-styles@^3.2.0, ansi-styles@^3.2.1: version "3.2.1" @@ -4038,9 +2548,9 @@ ansi-styles@^4.0.0, ansi-styles@^4.1.0: color-convert "^2.0.1" ansi-styles@^6.0.0: - version "6.1.0" - resolved "https://registry.yarnpkg.com/ansi-styles/-/ansi-styles-6.1.0.tgz#87313c102b8118abd57371afab34618bf7350ed3" - integrity sha512-VbqNsoz55SYGczauuup0MFUyXNQviSpFTj1RQtFzmQLk18qbVSpTFFGMT293rmDaQuKCT6InmbuEyUne4mTuxQ== + version "6.1.1" + resolved "https://registry.yarnpkg.com/ansi-styles/-/ansi-styles-6.1.1.tgz#63cd61c72283a71cb30bd881dbb60adada74bc70" + integrity sha512-qDOv24WjnYuL+wbwHdlsYZFy+cgPtrYw0Tn7GLORicQp9BkQLzrgI3Pm4VyR9ERZ41YTn7KlMPuL1n05WdZvmg== antlr4@4.7.1: version "4.7.1" @@ -4055,20 +2565,12 @@ antlr4ts@^0.5.0-alpha.4: 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" + integrity sha512-7UvmKalWRt1wgjL1RrGxoSJW/0QZFIegpeGvZG9kjp8vrRu55XTHbwnqq2GpXm9uLbcuhxm3IqX9OB4MZR1b2A== any-signal@^3.0.0: - version "3.0.0" - resolved "https://registry.yarnpkg.com/any-signal/-/any-signal-3.0.0.tgz#4f6ee491e5cdda9e9a544f50fdf1d14be40535b6" - integrity sha512-l1H1GEkGGIXVGfCtvq8N68YI7gHajmfzRdKhmb8sGyAQpLCblirLa8eB09j4uKaiwe7vodAChocUf7AT3mYq5g== + version "3.0.1" + resolved "https://registry.yarnpkg.com/any-signal/-/any-signal-3.0.1.tgz#49cae34368187a3472e31de28fb5cb1430caa9a6" + integrity sha512-xgZgJtKEa9YmDqXodIgl7Fl1C8yNXr8w6gXjqK3LW4GcEiYT+6AQfJSE/8SPsEpLLmcvbv8YU+qet94UewHxqg== anymatch@^2.0.0: version "2.0.0" @@ -4086,181 +2588,109 @@ anymatch@~3.1.1, anymatch@~3.1.2: normalize-path "^3.0.0" picomatch "^2.0.4" -apollo-cache-control@^0.14.0: - version "0.14.0" - resolved "https://registry.yarnpkg.com/apollo-cache-control/-/apollo-cache-control-0.14.0.tgz#95f20c3e03e7994e0d1bd48c59aeaeb575ed0ce7" - integrity sha512-qN4BCq90egQrgNnTRMUHikLZZAprf3gbm8rC5Vwmc6ZdLolQ7bFsa769Hqi6Tq/lS31KLsXBLTOsRbfPHph12w== - dependencies: - apollo-server-env "^3.1.0" - apollo-server-plugin-base "^0.13.0" - -apollo-datasource@^0.9.0: - version "0.9.0" - resolved "https://registry.yarnpkg.com/apollo-datasource/-/apollo-datasource-0.9.0.tgz#b0b2913257a6103a5f4c03cb56d78a30e9d850db" - integrity sha512-y8H99NExU1Sk4TvcaUxTdzfq2SZo6uSj5dyh75XSQvbpH6gdAXIW9MaBcvlNC7n0cVPsidHmOcHOWxJ/pTXGjA== - dependencies: - apollo-server-caching "^0.7.0" - apollo-server-env "^3.1.0" - -apollo-graphql@^0.9.0: - version "0.9.3" - resolved "https://registry.yarnpkg.com/apollo-graphql/-/apollo-graphql-0.9.3.tgz#1ca6f625322ae10a66f57a39642849a07a7a5dc9" - integrity sha512-rcAl2E841Iko4kSzj4Pt3PRBitmyq1MvoEmpl04TQSpGnoVgl1E/ZXuLBYxMTSnEAm7umn2IsoY+c6Ll9U/10A== - dependencies: - core-js-pure "^3.10.2" - lodash.sortby "^4.7.0" - sha.js "^2.4.11" - -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== - dependencies: - apollo-utilities "^1.3.0" - ts-invariant "^0.4.0" - tslib "^1.9.3" - zen-observable-ts "^0.8.21" - -apollo-reporting-protobuf@^0.8.0: - version "0.8.0" - resolved "https://registry.yarnpkg.com/apollo-reporting-protobuf/-/apollo-reporting-protobuf-0.8.0.tgz#ae9d967934d3d8ed816fc85a0d8068ef45c371b9" - integrity sha512-B3XmnkH6Y458iV6OsA7AhfwvTgeZnFq9nPVjbxmLKnvfkEl8hYADtz724uPa0WeBiD7DSFcnLtqg9yGmCkBohg== - dependencies: - "@apollo/protobufjs" "1.2.2" - -apollo-server-caching@^0.7.0: - version "0.7.0" - resolved "https://registry.yarnpkg.com/apollo-server-caching/-/apollo-server-caching-0.7.0.tgz#e6d1e68e3bb571cba63a61f60b434fb771c6ff39" - integrity sha512-MsVCuf/2FxuTFVhGLK13B+TZH9tBd2qkyoXKKILIiGcZ5CDUEBO14vIV63aNkMkS1xxvK2U4wBcuuNj/VH2Mkw== +apollo-datasource@^3.3.2: + version "3.3.2" + resolved "https://registry.yarnpkg.com/apollo-datasource/-/apollo-datasource-3.3.2.tgz#5711f8b38d4b7b53fb788cb4dbd4a6a526ea74c8" + integrity sha512-L5TiS8E2Hn/Yz7SSnWIVbZw0ZfEIXZCa5VUiVxD9P53JvSrf4aStvsFDlGWPvpIdCR+aly2CfoB79B9/JjKFqg== dependencies: - lru-cache "^6.0.0" + "@apollo/utils.keyvaluecache" "^1.0.1" + apollo-server-env "^4.2.1" -apollo-server-core@^2.25.2: - version "2.25.2" - resolved "https://registry.yarnpkg.com/apollo-server-core/-/apollo-server-core-2.25.2.tgz#ff65da5e512d9b5ca54c8e5e8c78ee28b5987247" - integrity sha512-lrohEjde2TmmDTO7FlOs8x5QQbAS0Sd3/t0TaK2TWaodfzi92QAvIsq321Mol6p6oEqmjm8POIDHW1EuJd7XMA== - dependencies: - "@apollographql/apollo-tools" "^0.5.0" - "@apollographql/graphql-playground-html" "1.6.27" - "@apollographql/graphql-upload-8-fork" "^8.1.3" +apollo-reporting-protobuf@^3.3.1, apollo-reporting-protobuf@^3.3.2: + version "3.3.2" + resolved "https://registry.yarnpkg.com/apollo-reporting-protobuf/-/apollo-reporting-protobuf-3.3.2.tgz#2078c53d3140bc6221c6040c5326623e0c21c8d4" + integrity sha512-j1tx9tmkVdsLt1UPzBrvz90PdjAeKW157WxGn+aXlnnGfVjZLIRXX3x5t1NWtXvB7rVaAsLLILLtDHW382TSoQ== + dependencies: + "@apollo/protobufjs" "1.2.4" + +apollo-server-core@^3.10.2: + version "3.10.2" + resolved "https://registry.yarnpkg.com/apollo-server-core/-/apollo-server-core-3.10.2.tgz#04c5c3fc96b6c7d7f84fdc7356cf9830de4db561" + integrity sha512-/1o9KPoAMgcjJJ9Y0IH1665wf9d02L/m/mcfBOHiFmRgeGkNgrhTy59BxQTBK241USAWMhwMpp171cv/hM5Dng== + dependencies: + "@apollo/utils.keyvaluecache" "^1.0.1" + "@apollo/utils.logger" "^1.0.0" + "@apollo/utils.usagereporting" "^1.0.0" + "@apollographql/apollo-tools" "^0.5.3" + "@apollographql/graphql-playground-html" "1.6.29" + "@graphql-tools/mock" "^8.1.2" + "@graphql-tools/schema" "^8.0.0" "@josephg/resolvable" "^1.0.0" - "@types/ws" "^7.0.0" - apollo-cache-control "^0.14.0" - apollo-datasource "^0.9.0" - apollo-graphql "^0.9.0" - apollo-reporting-protobuf "^0.8.0" - apollo-server-caching "^0.7.0" - apollo-server-env "^3.1.0" - apollo-server-errors "^2.5.0" - apollo-server-plugin-base "^0.13.0" - apollo-server-types "^0.9.0" - apollo-tracing "^0.15.0" + apollo-datasource "^3.3.2" + apollo-reporting-protobuf "^3.3.2" + apollo-server-env "^4.2.1" + apollo-server-errors "^3.3.1" + apollo-server-plugin-base "^3.6.2" + apollo-server-types "^3.6.2" async-retry "^1.2.1" - fast-json-stable-stringify "^2.0.0" - graphql-extensions "^0.15.0" + fast-json-stable-stringify "^2.1.0" graphql-tag "^2.11.0" - graphql-tools "^4.0.8" - loglevel "^1.6.7" + loglevel "^1.6.8" lru-cache "^6.0.0" sha.js "^2.4.11" - subscriptions-transport-ws "^0.9.19" uuid "^8.0.0" + whatwg-mimetype "^3.0.0" -apollo-server-env@^3.1.0: - version "3.1.0" - resolved "https://registry.yarnpkg.com/apollo-server-env/-/apollo-server-env-3.1.0.tgz#0733c2ef50aea596cc90cf40a53f6ea2ad402cd0" - integrity sha512-iGdZgEOAuVop3vb0F2J3+kaBVi4caMoxefHosxmgzAbbSpvWehB8Y1QiSyyMeouYC38XNVk5wnZl+jdGSsWsIQ== +apollo-server-env@^4.2.1: + version "4.2.1" + resolved "https://registry.yarnpkg.com/apollo-server-env/-/apollo-server-env-4.2.1.tgz#ea5b1944accdbdba311f179e4dfaeca482c20185" + integrity sha512-vm/7c7ld+zFMxibzqZ7SSa5tBENc4B0uye9LTfjJwGoQFY5xsUPH5FpO5j0bMUDZ8YYNbrF9SNtzc5Cngcr90g== dependencies: - node-fetch "^2.6.1" - util.promisify "^1.0.0" + node-fetch "^2.6.7" -apollo-server-errors@^2.5.0: - version "2.5.0" - resolved "https://registry.yarnpkg.com/apollo-server-errors/-/apollo-server-errors-2.5.0.tgz#5d1024117c7496a2979e3e34908b5685fe112b68" - integrity sha512-lO5oTjgiC3vlVg2RKr3RiXIIQ5pGXBFxYGGUkKDhTud3jMIhs+gel8L8zsEjKaKxkjHhCQAA/bcEfYiKkGQIvA== +apollo-server-errors@^3.3.1: + version "3.3.1" + resolved "https://registry.yarnpkg.com/apollo-server-errors/-/apollo-server-errors-3.3.1.tgz#ba5c00cdaa33d4cbd09779f8cb6f47475d1cd655" + integrity sha512-xnZJ5QWs6FixHICXHxUfm+ZWqqxrNuPlQ+kj5m6RtEgIpekOPssH/SD9gf2B4HuWV0QozorrygwZnux8POvyPA== -apollo-server-express@^2.25.2: - version "2.25.2" - resolved "https://registry.yarnpkg.com/apollo-server-express/-/apollo-server-express-2.25.2.tgz#58cd819694ff4c2dec6945a95c5dff6aa2719ef6" - integrity sha512-A2gF2e85vvDugPlajbhr0A14cDFDIGX0mteNOJ8P3Z3cIM0D4hwrWxJidI+SzobefDIyIHu1dynFedJVhV0euQ== +apollo-server-express@^3.10.2: + version "3.10.2" + resolved "https://registry.yarnpkg.com/apollo-server-express/-/apollo-server-express-3.10.2.tgz#df7cb81eab10d84db55297a2820cf3bd8814eb80" + integrity sha512-TUpnh23qAP3NqMp3/2TxcCpOxhvT64H6teOM5W+t5ncdHZ85aEMDrbfIhNwqkdsya+UyMn9IoBmn25h5TW93ZQ== dependencies: - "@apollographql/graphql-playground-html" "1.6.27" "@types/accepts" "^1.3.5" - "@types/body-parser" "1.19.0" - "@types/cors" "2.8.10" - "@types/express" "^4.17.12" - "@types/express-serve-static-core" "^4.17.21" + "@types/body-parser" "1.19.2" + "@types/cors" "2.8.12" + "@types/express" "4.17.13" + "@types/express-serve-static-core" "4.17.30" accepts "^1.3.5" - apollo-server-core "^2.25.2" - apollo-server-types "^0.9.0" - body-parser "^1.18.3" + apollo-server-core "^3.10.2" + apollo-server-types "^3.6.2" + body-parser "^1.19.0" cors "^2.8.5" - express "^4.17.1" - graphql-subscriptions "^1.0.0" - graphql-tools "^4.0.8" - parseurl "^1.3.2" - subscriptions-transport-ws "^0.9.19" - type-is "^1.6.16" + parseurl "^1.3.3" -apollo-server-plugin-base@^0.13.0: - version "0.13.0" - resolved "https://registry.yarnpkg.com/apollo-server-plugin-base/-/apollo-server-plugin-base-0.13.0.tgz#3f85751a420d3c4625355b6cb3fbdd2acbe71f13" - integrity sha512-L3TMmq2YE6BU6I4Tmgygmd0W55L+6XfD9137k+cWEBFu50vRY4Re+d+fL5WuPkk5xSPKd/PIaqzidu5V/zz8Kg== +apollo-server-plugin-base@^3.6.2: + version "3.6.2" + resolved "https://registry.yarnpkg.com/apollo-server-plugin-base/-/apollo-server-plugin-base-3.6.2.tgz#f256e1f274c8fee0d7267b6944f402da71788fb3" + integrity sha512-erWXjLOO1u7fxQkbxJ2cwSO7p0tYzNied91I1SJ9tikXZ/2eZUyDyvrpI+4g70kOdEi+AmJ5Fo8ahEXKJ75zdg== dependencies: - apollo-server-types "^0.9.0" + apollo-server-types "^3.6.2" -apollo-server-types@^0.9.0: - version "0.9.0" - resolved "https://registry.yarnpkg.com/apollo-server-types/-/apollo-server-types-0.9.0.tgz#ccf550b33b07c48c72f104fbe2876232b404848b" - integrity sha512-qk9tg4Imwpk732JJHBkhW0jzfG0nFsLqK2DY6UhvJf7jLnRePYsPxWfPiNkxni27pLE2tiNlCwoDFSeWqpZyBg== - dependencies: - apollo-reporting-protobuf "^0.8.0" - apollo-server-caching "^0.7.0" - apollo-server-env "^3.1.0" - -apollo-server@^2.18.2: - version "2.25.2" - resolved "https://registry.yarnpkg.com/apollo-server/-/apollo-server-2.25.2.tgz#db45c3ef8d9116cee8f12218f06588db717fee9e" - integrity sha512-2Ekx9puU5DqviZk6Kw1hbqTun3lwOWUjhiBJf+UfifYmnqq0s9vAv6Ditw+DEXwphJQ4vGKVVgVIEw6f/9YfhQ== - dependencies: - apollo-server-core "^2.25.2" - apollo-server-express "^2.25.2" - express "^4.0.0" - graphql-subscriptions "^1.0.0" - graphql-tools "^4.0.8" - stoppable "^1.1.0" - -apollo-tracing@^0.15.0: - version "0.15.0" - resolved "https://registry.yarnpkg.com/apollo-tracing/-/apollo-tracing-0.15.0.tgz#237fbbbf669aee4370b7e9081b685eabaa8ce84a" - integrity sha512-UP0fztFvaZPHDhIB/J+qGuy6hWO4If069MGC98qVs0I8FICIGu4/8ykpX3X3K6RtaQ56EDAWKykCxFv4ScxMeA== - dependencies: - apollo-server-env "^3.1.0" - apollo-server-plugin-base "^0.13.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== - dependencies: - "@apollo/client" "^3.1.5" - "@babel/runtime" "^7.11.2" - extract-files "^9.0.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" +apollo-server-types@^3.6.2: + version "3.6.2" + resolved "https://registry.yarnpkg.com/apollo-server-types/-/apollo-server-types-3.6.2.tgz#34bb0c335fcce3057cbdf72b3b63da182de6fc84" + integrity sha512-9Z54S7NB+qW1VV+kmiqwU2Q6jxWfX89HlSGCGOo3zrkrperh85LrzABgN9S92+qyeHYd72noMDg2aI039sF3dg== + dependencies: + "@apollo/utils.keyvaluecache" "^1.0.1" + "@apollo/utils.logger" "^1.0.0" + apollo-reporting-protobuf "^3.3.2" + apollo-server-env "^4.2.1" + +apollo-server@^3.6.3: + version "3.10.2" + resolved "https://registry.yarnpkg.com/apollo-server/-/apollo-server-3.10.2.tgz#8d7859ba27f3d94c57a0a7065ae776f32dfc697a" + integrity sha512-iKYcbCGl32TxmV2YShiBbQqU8uJrwTopNi82KphKXcwgPyaZnMlNbVQOqiZSHVH4DtANAR4bB1cx8ORG+29NhQ== + dependencies: + "@types/express" "4.17.13" + apollo-server-core "^3.10.2" + apollo-server-express "^3.10.2" + express "^4.17.1" 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= + integrity sha512-gkco+qxENJV+8vFcDiiFhuoSvRXb2a/QPqpSoWhVz829VNJfOTnELbBmPmNKFxf3xdNnw4DWCkzkDaavcX/1YQ== aproba@^1.0.3: version "1.2.0" @@ -4278,7 +2708,7 @@ arb-ethers-web3-bridge@^0.7.3: archive-type@^4.0.0: version "4.0.0" resolved "https://registry.yarnpkg.com/archive-type/-/archive-type-4.0.0.tgz#f92e72233056dfc6969472749c267bdb046b1d70" - integrity sha1-+S5yIzBW38aWlHJ0nCZ72wRrHXA= + integrity sha512-zV4Ky0v1F8dBrdYElwTvQhweQ0P7Kwc1aluqJsYtOBP01jXcWCyW2IEfI1YiqsG+Iy7ZR+o5LF1N+PGECBxHWA== dependencies: file-type "^4.2.0" @@ -4297,24 +2727,22 @@ argparse@^1.0.7: dependencies: sprintf-js "~1.0.2" +argparse@^2.0.1: + version "2.0.1" + resolved "https://registry.yarnpkg.com/argparse/-/argparse-2.0.1.tgz#246f50f3ca78a3240f6c997e8a9bd1eac49e4b38" + integrity sha512-8+9WqebbFzpX9OR+Wa6O29asIogeRMzcGtAINdpMHHyAg10f05aSFVBbcEqGf/PXw1EjAZ+q2/bEBg3DvurK3Q== + 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= - -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= - dependencies: - arr-flatten "^1.0.1" + integrity sha512-u96dg2GcAKtpTrBdDoFIM7PjcBA+6rSP0OR94MOReNRyUECL6MtQt5XXmRr4qrftYaef9+l5hcpO5te7sML1Cg== 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= + integrity sha512-YVIQ82gZPGBebQV/a8dar4AitzCQs0jjXwMPZllpXMaGjXPYVUawSxQrRsjhjupyVxEvbHgUmIhKVlND+j02kA== -arr-flatten@^1.0.1, arr-flatten@^1.1.0: +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== @@ -4322,21 +2750,21 @@ arr-flatten@^1.0.1, arr-flatten@^1.1.0: 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= + integrity sha512-sKpyeERZ02v1FeCZT8lrfJq5u6goHCtpTAzPwJYe7c8SPFOboNjNg1vz2L4VTn9T4PQxEx13TbXLmYUcS6Ug7Q== 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= + integrity sha512-PCVAQswWemu6UdxsDFFX/+gVeYqKAod3D3UVm91jHwynguOwAvYPhx8nNlM++NqRcK6CxxpUafjmhIdKiHibqg== -array-includes@^3.1.3, array-includes@^3.1.4: - version "3.1.4" - resolved "https://registry.yarnpkg.com/array-includes/-/array-includes-3.1.4.tgz#f5b493162c760f3539631f005ba2bb46acb45ba9" - integrity sha512-ZTNSQkmWumEbiHO2GF4GmWxYVTiQyJy2XOTa15sdQSrvKn7l+180egQMqlrMOUMCyLMD7pmyQe4mMDUT6Behrw== +array-includes@^3.1.4, array-includes@^3.1.5: + version "3.1.5" + resolved "https://registry.yarnpkg.com/array-includes/-/array-includes-3.1.5.tgz#2c320010db8d31031fd2a5f6b3bbd4b1aad31bdb" + integrity sha512-iSDYZMMyTPkiFasVqfuAQnWAYcvO/SeBSCGKePoEthjp4LEMTe4uLc7b025o4jAZpHhihh8xPo99TNWUWWkGDQ== dependencies: call-bind "^1.0.2" - define-properties "^1.1.3" - es-abstract "^1.19.1" + define-properties "^1.1.4" + es-abstract "^1.19.5" get-intrinsic "^1.1.1" is-string "^1.0.7" @@ -4350,56 +2778,53 @@ 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.3: +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= + integrity sha512-MNha4BWQ6JbwhFhj03YK552f7cb3AzoE8SzeljgChvL1dl3IcvggXVz1DilzySZkCja+CXuZbdW7yATchWn8/Q== 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= + integrity sha512-SleRWjh9JUud2wH1hPs9rZBZ33H6T9HOiL0uwGnGx9FpE6wKGyfWugmbkEOIs6qWrZhg0LWeLziLrEwQJhs5mQ== array.prototype.flat@^1.2.5: - version "1.2.5" - resolved "https://registry.yarnpkg.com/array.prototype.flat/-/array.prototype.flat-1.2.5.tgz#07e0975d84bbc7c48cd1879d609e682598d33e13" - integrity sha512-KaYU+S+ndVqyUnignHftkwc58o3uVU1jzczILJ1tN2YaIZpFIKBiP/x/j97E5MVPsaCloPbqWLB/8qCTVvT2qg== + version "1.3.0" + resolved "https://registry.yarnpkg.com/array.prototype.flat/-/array.prototype.flat-1.3.0.tgz#0b0c1567bf57b38b56b4c97b8aa72ab45e4adc7b" + integrity sha512-12IUEkHsAhA4DY5s0FPgNXIdc8VRSqD9Zp78a5au9abH/SOBrsp082JOWFNTjkMozh8mqcdiKuaLGhPeYztxSw== dependencies: call-bind "^1.0.2" define-properties "^1.1.3" - es-abstract "^1.19.0" + es-abstract "^1.19.2" + es-shim-unscopables "^1.0.0" -array.prototype.flatmap@^1.2.5: - version "1.2.5" - resolved "https://registry.yarnpkg.com/array.prototype.flatmap/-/array.prototype.flatmap-1.2.5.tgz#908dc82d8a406930fdf38598d51e7411d18d4446" - integrity sha512-08u6rVyi1Lj7oqWbS9nUxliETrtIROT4XGTA4D/LWGten6E3ocm7cy9SIrmNHOL5XVbVuckUp3X6Xyg8/zpvHA== +array.prototype.flatmap@^1.3.0: + version "1.3.0" + resolved "https://registry.yarnpkg.com/array.prototype.flatmap/-/array.prototype.flatmap-1.3.0.tgz#a7e8ed4225f4788a70cd910abcf0791e76a5534f" + integrity sha512-PZC9/8TKAIxcWKdyeb77EzULHPrIX/tIZebLJUQOMR1OwYosT8yggdfWScfTBCDj5utONvOuPQQumYsU2ULbkg== dependencies: - call-bind "^1.0.0" + call-bind "^1.0.2" define-properties "^1.1.3" - es-abstract "^1.19.0" + es-abstract "^1.19.2" + es-shim-unscopables "^1.0.0" -array.prototype.map@^1.0.1: +array.prototype.reduce@^1.0.4: version "1.0.4" - resolved "https://registry.yarnpkg.com/array.prototype.map/-/array.prototype.map-1.0.4.tgz#0d97b640cfdd036c1b41cfe706a5e699aa0711f2" - integrity sha512-Qds9QnX7A0qISY7JT5WuJO0NJPE9CMlC6JzHQfhpqAAQQzufVRoeH7EzUY5GcPTx72voG8LV/5eo+b8Qi8hmhA== + resolved "https://registry.yarnpkg.com/array.prototype.reduce/-/array.prototype.reduce-1.0.4.tgz#8167e80089f78bff70a99e20bd4201d4663b0a6f" + integrity sha512-WnM+AjG/DvLRLo4DDl+r+SvCzYtD2Jd9oeBYMcEaI7t3fFrHY9M53/wdLcTvmZNQ70IU6Htj0emFkZ5TS+lrdw== dependencies: call-bind "^1.0.2" define-properties "^1.1.3" - es-abstract "^1.19.0" + es-abstract "^1.19.2" es-array-method-boxes-properly "^1.0.0" is-string "^1.0.7" 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= + integrity sha512-BSHWgDSAiKs50o2Re8ppvp3seVHXSRM44cdSsT9FfNEUUZLOGWVCsiWaRPWM1Znn+mqZ1OfVZ3z3DWEzSp7hRA== -asn1.js@^5.0.1, asn1.js@^5.2.0: +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== @@ -4416,30 +2841,10 @@ 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" + integrity sha512-NfJ4UzBCcQGLDlQq7nHxH+tv3kyZ0hHQqF5BO6J7tNJeP5do1llPr8dZ8zHonfhAu0PHAdMkSo+8o0wxg9lZWw== assertion-error@^1.1.0: version "1.1.0" @@ -4449,12 +2854,12 @@ assertion-error@^1.1.0: 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= + integrity sha512-Q+JC7Whu8HhmTdBph/Tq59IoRtoy6KAm5zzPv00WdujX82lbAL8K7WVjne7vdCsAmbF4AYaDOPyO3k0kl8qIrw== 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= + integrity sha512-XHusKxKz3zoYk1ic8Un640joHbFMhbqneyoZfoKnEGtf2ey9Uh/IdpcQplODdO/kENaMIWsD0nJm4+wX3UNLHA== astral-regex@^1.0.0: version "1.0.0" @@ -4501,24 +2906,24 @@ async-retry@^1.2.1: async@1.5, async@1.x, async@^1.4.2: version "1.5.2" resolved "https://registry.yarnpkg.com/async/-/async-1.5.2.tgz#ec6a61ae56480c0c3cb241c95618e20892f9672a" - integrity sha1-7GphrlZIDAw8skHJVhjiCJL5Zyo= + integrity sha512-nSVgobk4rv61R9PUSDtYt7mPVB2olxNR5RWJcAsH676/ef11bUZwvu7+RGYrYauVdDPcO519v68wRhXQtxsV9w== async@^2.0.1, async@^2.1.2, async@^2.4.0, async@^2.5, async@^2.5.0, async@^2.6, async@^2.6.1: - version "2.6.3" - resolved "https://registry.yarnpkg.com/async/-/async-2.6.3.tgz#d72625e2344a3656e3a3ad4fa749fa83299d82ff" - integrity sha512-zflvls11DCy+dQWzTW2dzuilv8Z5X/pjfmZOWba6TNIVDm+2UDaJmXSOXlasHKfNBs8oo3M0aT50fDEWfKZjXg== + version "2.6.4" + resolved "https://registry.yarnpkg.com/async/-/async-2.6.4.tgz#706b7ff6084664cd7eae713f6f965433b5504221" + integrity sha512-mzo5dfJYwAn29PeiJ0zvwTo04zj8HDJj0Mn8TD7sno7q12prdbnasKJHhkm2c1LgrhlJ0teaea8860oxi51mGA== dependencies: lodash "^4.17.14" async@^3.2.0: - version "3.2.3" - resolved "https://registry.yarnpkg.com/async/-/async-3.2.3.tgz#ac53dafd3f4720ee9e8a160628f18ea91df196c9" - integrity sha512-spZRyzKL5l5BZQrr/6m/SqFdBN0q3OCI0f9rjfBzCMBIP4p75P620rR3gTmaksNOhmzgdxcaxdNfMy6anrbM0g== + version "3.2.4" + resolved "https://registry.yarnpkg.com/async/-/async-3.2.4.tgz#2d22e00f8cddeb5fde5dd33522b56d1cf569a81c" + integrity sha512-iAB+JbDEGXhyIUavoDl9WP/Jj106Kz9DEn1DPgYw5ruDn0e3Wgi3sKFm55sASdGBNOQB8F59d9qQ7deqrHA8wQ== asynckit@^0.4.0: version "0.4.0" resolved "https://registry.yarnpkg.com/asynckit/-/asynckit-0.4.0.tgz#c79ed97f7f34cb8f2ba1bc9790bcc366474b4b79" - integrity sha1-x57Zf380y48robyXkLzDZkdLS3k= + integrity sha512-Oei9OH4tRh0YqU3GxhX79dM/mwVgvbZJaSNaRk+bshkj0S5cfHcgYakreBjrHwatXKbz+IoIdYLxrKim2MjW0Q== at-least-node@^1.0.0: version "1.0.0" @@ -4548,24 +2953,25 @@ await-semaphore@^0.1.3: 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= + integrity sha512-08kcGqnYf/YmjoRhfxyu+CLxBjUtHLXLXX/vUfx9l2LYzG3c1m61nrpyFUZI6zeS+Li/wWMMidD9KgrqtGq3mA== aws4@^1.8.0: version "1.11.0" resolved "https://registry.yarnpkg.com/aws4/-/aws4-1.11.0.tgz#d61f46d83b2519250e2784daf5b09479a8b41c59" integrity sha512-xh1Rl34h6Fi1DC2WWKfxUTVqRsNnr6LsKz2+hfwDxQJWmrx8+c7ylaqBMcHfl1U1r2dsifOvKX3LQuLNZ+XSvA== -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== +axios@0.27.2: + version "0.27.2" + resolved "https://registry.yarnpkg.com/axios/-/axios-0.27.2.tgz#207658cc8621606e586c85db4b41a750e756d972" + integrity sha512-t+yRIyySRTp/wua5xEr+z1q60QmLq8ABsS5O9Me1AsE5dfKqgnCFzwiCZZ/cGNd1lq4/7akDWMxdhVlucjmnOQ== dependencies: - follow-redirects "^1.10.0" + follow-redirects "^1.14.9" + form-data "^4.0.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" - integrity sha1-Y/1D99weO7fONZR9uP42mj9Yx0s= + integrity sha512-XqYMR2dfdGMW+hd0IUZ2PwK+fGeFkOxZJ0wY+JaQAHzt1Zx8LcvpiZD2NiGkEG8qx0CfkAOr5xt76d1e8vG90g== dependencies: chalk "^1.1.3" esutils "^2.0.2" @@ -4596,7 +3002,7 @@ babel-core@^6.26.0: slash "^1.0.0" source-map "^0.5.7" -babel-generator@6.26.1, babel-generator@^6.26.0: +babel-generator@^6.26.0: version "6.26.1" resolved "https://registry.yarnpkg.com/babel-generator/-/babel-generator-6.26.1.tgz#1844408d3b8f0d35a404ea7ac180f087a601bd90" integrity sha512-HyfwY6ApZj7BYTcJURpM5tznulaBvyio7/0d4zFOeMPUmfxkCjHocCuoLa2SAGzBI8AREcH3eP3758F672DppA== @@ -4613,7 +3019,7 @@ babel-generator@6.26.1, babel-generator@^6.26.0: babel-helper-call-delegate@^6.24.1: version "6.24.1" resolved "https://registry.yarnpkg.com/babel-helper-call-delegate/-/babel-helper-call-delegate-6.24.1.tgz#ece6aacddc76e41c3461f88bfc575bd0daa2df8d" - integrity sha1-7Oaqzdx25Bw0YfiL/Fdb0Nqi340= + integrity sha512-RL8n2NiEj+kKztlrVJM9JT1cXzzAdvWFh76xh/H1I4nKwunzE4INBXn8ieCZ+wh4zWszZk7NBS1s/8HR5jDkzQ== dependencies: babel-helper-hoist-variables "^6.24.1" babel-runtime "^6.22.0" @@ -4623,7 +3029,7 @@ babel-helper-call-delegate@^6.24.1: babel-helper-define-map@^6.24.1: version "6.26.0" resolved "https://registry.yarnpkg.com/babel-helper-define-map/-/babel-helper-define-map-6.26.0.tgz#a5f56dab41a25f97ecb498c7ebaca9819f95be5f" - integrity sha1-pfVtq0GiX5fstJjH66ypgZ+Vvl8= + integrity sha512-bHkmjcC9lM1kmZcVpA5t2om2nzT/xiZpo6TJq7UlZ3wqKfzia4veeXbIhKvJXAMzhhEBd3cR1IElL5AenWEUpA== dependencies: babel-helper-function-name "^6.24.1" babel-runtime "^6.26.0" @@ -4633,7 +3039,7 @@ babel-helper-define-map@^6.24.1: babel-helper-function-name@^6.24.1: version "6.24.1" resolved "https://registry.yarnpkg.com/babel-helper-function-name/-/babel-helper-function-name-6.24.1.tgz#d3475b8c03ed98242a25b48351ab18399d3580a9" - integrity sha1-00dbjAPtmCQqJbSDUasYOZ01gKk= + integrity sha512-Oo6+e2iX+o9eVvJ9Y5eKL5iryeRdsIkwRYheCuhYdVHsdEQysbc2z2QkqCLIYnNxkT5Ss3ggrHdXiDI7Dhrn4Q== dependencies: babel-helper-get-function-arity "^6.24.1" babel-runtime "^6.22.0" @@ -4644,7 +3050,7 @@ babel-helper-function-name@^6.24.1: babel-helper-get-function-arity@^6.24.1: version "6.24.1" resolved "https://registry.yarnpkg.com/babel-helper-get-function-arity/-/babel-helper-get-function-arity-6.24.1.tgz#8f7782aa93407c41d3aa50908f89b031b1b6853d" - integrity sha1-j3eCqpNAfEHTqlCQj4mwMbG2hT0= + integrity sha512-WfgKFX6swFB1jS2vo+DwivRN4NB8XUdM3ij0Y1gnC21y1tdBoe6xjVnd7NSI6alv+gZXCtJqvrTeMW3fR/c0ng== dependencies: babel-runtime "^6.22.0" babel-types "^6.24.1" @@ -4652,7 +3058,7 @@ babel-helper-get-function-arity@^6.24.1: babel-helper-hoist-variables@^6.24.1: version "6.24.1" resolved "https://registry.yarnpkg.com/babel-helper-hoist-variables/-/babel-helper-hoist-variables-6.24.1.tgz#1ecb27689c9d25513eadbc9914a73f5408be7a76" - integrity sha1-HssnaJydJVE+rbyZFKc/VAi+enY= + integrity sha512-zAYl3tqerLItvG5cKYw7f1SpvIxS9zi7ohyGHaI9cgDUjAT6YcY9jIEH5CstetP5wHIVSceXwNS7Z5BpJg+rOw== dependencies: babel-runtime "^6.22.0" babel-types "^6.24.1" @@ -4660,7 +3066,7 @@ babel-helper-hoist-variables@^6.24.1: babel-helper-optimise-call-expression@^6.24.1: version "6.24.1" resolved "https://registry.yarnpkg.com/babel-helper-optimise-call-expression/-/babel-helper-optimise-call-expression-6.24.1.tgz#f7a13427ba9f73f8f4fa993c54a97882d1244257" - integrity sha1-96E0J7qfc/j0+pk8VKl4gtEkQlc= + integrity sha512-Op9IhEaxhbRT8MDXx2iNuMgciu2V8lDvYCNQbDGjdBNCjaMvyLf4wl4A3b8IgndCyQF8TwfgsQ8T3VD8aX1/pA== dependencies: babel-runtime "^6.22.0" babel-types "^6.24.1" @@ -4668,7 +3074,7 @@ babel-helper-optimise-call-expression@^6.24.1: babel-helper-regex@^6.24.1: version "6.26.0" resolved "https://registry.yarnpkg.com/babel-helper-regex/-/babel-helper-regex-6.26.0.tgz#325c59f902f82f24b74faceed0363954f6495e72" - integrity sha1-MlxZ+QL4LyS3T6zu0DY5VPZJXnI= + integrity sha512-VlPiWmqmGJp0x0oK27Out1D+71nVVCTSdlbhIVoaBAj2lUgrNjBCRR9+llO4lTSb2O4r7PJg+RobRkhBrf6ofg== dependencies: babel-runtime "^6.26.0" babel-types "^6.26.0" @@ -4677,7 +3083,7 @@ babel-helper-regex@^6.24.1: babel-helper-replace-supers@^6.24.1: version "6.24.1" resolved "https://registry.yarnpkg.com/babel-helper-replace-supers/-/babel-helper-replace-supers-6.24.1.tgz#bf6dbfe43938d17369a213ca8a8bf74b6a90ab1a" - integrity sha1-v22/5Dk40XNpohPKiov3S2qQqxo= + integrity sha512-sLI+u7sXJh6+ToqDr57Bv973kCepItDhMou0xCP2YPVmR1jkHSCY+p1no8xErbV1Siz5QE8qKT1WIwybSWlqjw== dependencies: babel-helper-optimise-call-expression "^6.24.1" babel-messages "^6.23.0" @@ -4689,7 +3095,7 @@ babel-helper-replace-supers@^6.24.1: babel-helpers@^6.24.1: version "6.24.1" resolved "https://registry.yarnpkg.com/babel-helpers/-/babel-helpers-6.24.1.tgz#3471de9caec388e5c850e597e58a26ddf37602b2" - integrity sha1-NHHenK7DiOXIUOWX5Yom3fN2ArI= + integrity sha512-n7pFrqQm44TCYvrCDb0MqabAF+JUBq+ijBvNMUxpkLjJaAu32faIexewMumrH5KLLJ1HDyT0PTEqRyAe/GwwuQ== dependencies: babel-runtime "^6.22.0" babel-template "^6.24.1" @@ -4697,76 +3103,64 @@ babel-helpers@^6.24.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= + integrity sha512-Bl3ZiA+LjqaMtNYopA9TYE9HP1tQ+E5dLxE0XrAzcIJeK2UqF0/EaqXwBn9esd4UmTfEab+P+UYQ1GnioFIb/w== dependencies: babel-runtime "^6.22.0" babel-plugin-check-es2015-constants@^6.22.0: version "6.22.0" resolved "https://registry.yarnpkg.com/babel-plugin-check-es2015-constants/-/babel-plugin-check-es2015-constants-6.22.0.tgz#35157b101426fd2ffd3da3f75c7d1e91835bbf8a" - integrity sha1-NRV7EBQm/S/9PaP3XH0ekYNbv4o= + integrity sha512-B1M5KBP29248dViEo1owyY32lk1ZSH2DaNNrXLGt8lyjjHm7pBqAdQ7VKUPR6EEDO323+OvT3MQXbCin8ooWdA== 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" - -babel-plugin-polyfill-corejs2@^0.2.3: - version "0.2.3" - resolved "https://registry.yarnpkg.com/babel-plugin-polyfill-corejs2/-/babel-plugin-polyfill-corejs2-0.2.3.tgz#6ed8e30981b062f8fe6aca8873a37ebcc8cc1c0f" - integrity sha512-NDZ0auNRzmAfE1oDDPW2JhzIMXUk+FFe2ICejmt5T4ocKgiQx3e0VCRx9NCAidcMtL2RUZaWtXnmjTCkx0tcbA== +babel-plugin-polyfill-corejs2@^0.3.3: + version "0.3.3" + resolved "https://registry.yarnpkg.com/babel-plugin-polyfill-corejs2/-/babel-plugin-polyfill-corejs2-0.3.3.tgz#5d1bd3836d0a19e1b84bbf2d9640ccb6f951c122" + integrity sha512-8hOdmFYFSZhqg2C/JgLUQ+t52o5nirNwaWM2B9LWteozwIvM14VSwdsCAUET10qT+kmySAlseadmfeeSWFCy+Q== dependencies: - "@babel/compat-data" "^7.13.11" - "@babel/helper-define-polyfill-provider" "^0.2.4" + "@babel/compat-data" "^7.17.7" + "@babel/helper-define-polyfill-provider" "^0.3.3" semver "^6.1.1" -babel-plugin-polyfill-corejs3@^0.3.0: - version "0.3.0" - resolved "https://registry.yarnpkg.com/babel-plugin-polyfill-corejs3/-/babel-plugin-polyfill-corejs3-0.3.0.tgz#fa7ca3d1ee9ddc6193600ffb632c9785d54918af" - integrity sha512-JLwi9vloVdXLjzACL80j24bG6/T1gYxwowG44dg6HN/7aTPdyPbJJidf6ajoA3RPHHtW0j9KMrSOLpIZpAnPpg== +babel-plugin-polyfill-corejs3@^0.6.0: + version "0.6.0" + resolved "https://registry.yarnpkg.com/babel-plugin-polyfill-corejs3/-/babel-plugin-polyfill-corejs3-0.6.0.tgz#56ad88237137eade485a71b52f72dbed57c6230a" + integrity sha512-+eHqR6OPcBhJOGgsIar7xoAB1GcSwVUA3XjAd7HJNzOXT4wv6/H7KIdA/Nc60cvUlDbKApmqNvD1B1bzOt4nyA== dependencies: - "@babel/helper-define-polyfill-provider" "^0.2.4" - core-js-compat "^3.18.0" + "@babel/helper-define-polyfill-provider" "^0.3.3" + core-js-compat "^3.25.1" -babel-plugin-polyfill-regenerator@^0.2.3: - version "0.2.3" - resolved "https://registry.yarnpkg.com/babel-plugin-polyfill-regenerator/-/babel-plugin-polyfill-regenerator-0.2.3.tgz#2e9808f5027c4336c994992b48a4262580cb8d6d" - integrity sha512-JVE78oRZPKFIeUqFGrSORNzQnrDwZR16oiWeGM8ZyjBn2XAT5OjP+wXx5ESuo33nUsFUEJYjtklnsKbxW5L+7g== +babel-plugin-polyfill-regenerator@^0.4.1: + version "0.4.1" + resolved "https://registry.yarnpkg.com/babel-plugin-polyfill-regenerator/-/babel-plugin-polyfill-regenerator-0.4.1.tgz#390f91c38d90473592ed43351e801a9d3e0fd747" + integrity sha512-NtQGmyQDXjQqQ+IzRkBVwEOz9lQ4zxAQZgoAYEtU9dJjnl1Oc98qnN7jcp+bE7O7aYzVpavXE3/VKXNzUbh7aw== dependencies: - "@babel/helper-define-polyfill-provider" "^0.2.4" + "@babel/helper-define-polyfill-provider" "^0.3.3" babel-plugin-syntax-async-functions@^6.13.0: version "6.13.0" resolved "https://registry.yarnpkg.com/babel-plugin-syntax-async-functions/-/babel-plugin-syntax-async-functions-6.13.0.tgz#cad9cad1191b5ad634bf30ae0872391e0647be95" - integrity sha1-ytnK0RkbWtY0vzCuCHI5HgZHvpU= - -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== + integrity sha512-4Zp4unmHgw30A1eWI5EpACji2qMocisdXhAftfhXoSV9j0Tvj6nRFE3tOmRY912E0FMRm/L5xWE7MGVT2FoLnw== babel-plugin-transform-es2015-arrow-functions@^6.22.0: version "6.22.0" resolved "https://registry.yarnpkg.com/babel-plugin-transform-es2015-arrow-functions/-/babel-plugin-transform-es2015-arrow-functions-6.22.0.tgz#452692cb711d5f79dc7f85e440ce41b9f244d221" - integrity sha1-RSaSy3EdX3ncf4XkQM5BufJE0iE= + integrity sha512-PCqwwzODXW7JMrzu+yZIaYbPQSKjDTAsNNlK2l5Gg9g4rz2VzLnZsStvp/3c46GfXpwkyufb3NCyG9+50FF1Vg== dependencies: babel-runtime "^6.22.0" babel-plugin-transform-es2015-block-scoped-functions@^6.22.0: version "6.22.0" resolved "https://registry.yarnpkg.com/babel-plugin-transform-es2015-block-scoped-functions/-/babel-plugin-transform-es2015-block-scoped-functions-6.22.0.tgz#bbc51b49f964d70cb8d8e0b94e820246ce3a6141" - integrity sha1-u8UbSflk1wy42OC5ToICRs46YUE= + integrity sha512-2+ujAT2UMBzYFm7tidUsYh+ZoIutxJ3pN9IYrF1/H6dCKtECfhmB8UkHVpyxDwkj0CYbQG35ykoz925TUnBc3A== dependencies: babel-runtime "^6.22.0" babel-plugin-transform-es2015-block-scoping@^6.24.1: version "6.26.0" resolved "https://registry.yarnpkg.com/babel-plugin-transform-es2015-block-scoping/-/babel-plugin-transform-es2015-block-scoping-6.26.0.tgz#d70f5299c1308d05c12f463813b0a09e73b1895f" - integrity sha1-1w9SmcEwjQXBL0Y4E7CgnnOxiV8= + integrity sha512-YiN6sFAQ5lML8JjCmr7uerS5Yc/EMbgg9G8ZNmk2E3nYX4ckHR01wrkeeMijEf5WHNK5TW0Sl0Uu3pv3EdOJWw== dependencies: babel-runtime "^6.26.0" babel-template "^6.26.0" @@ -4777,7 +3171,7 @@ babel-plugin-transform-es2015-block-scoping@^6.24.1: babel-plugin-transform-es2015-classes@^6.24.1: version "6.24.1" resolved "https://registry.yarnpkg.com/babel-plugin-transform-es2015-classes/-/babel-plugin-transform-es2015-classes-6.24.1.tgz#5a4c58a50c9c9461e564b4b2a3bfabc97a2584db" - integrity sha1-WkxYpQyclGHlZLSyo7+ryXolhNs= + integrity sha512-5Dy7ZbRinGrNtmWpquZKZ3EGY8sDgIVB4CU8Om8q8tnMLrD/m94cKglVcHps0BCTdZ0TJeeAWOq2TK9MIY6cag== dependencies: babel-helper-define-map "^6.24.1" babel-helper-function-name "^6.24.1" @@ -4792,7 +3186,7 @@ babel-plugin-transform-es2015-classes@^6.24.1: babel-plugin-transform-es2015-computed-properties@^6.24.1: version "6.24.1" resolved "https://registry.yarnpkg.com/babel-plugin-transform-es2015-computed-properties/-/babel-plugin-transform-es2015-computed-properties-6.24.1.tgz#6fe2a8d16895d5634f4cd999b6d3480a308159b3" - integrity sha1-b+Ko0WiV1WNPTNmZttNICjCBWbM= + integrity sha512-C/uAv4ktFP/Hmh01gMTvYvICrKze0XVX9f2PdIXuriCSvUmV9j+u+BB9f5fJK3+878yMK6dkdcq+Ymr9mrcLzw== dependencies: babel-runtime "^6.22.0" babel-template "^6.24.1" @@ -4800,14 +3194,14 @@ babel-plugin-transform-es2015-computed-properties@^6.24.1: babel-plugin-transform-es2015-destructuring@^6.22.0: version "6.23.0" resolved "https://registry.yarnpkg.com/babel-plugin-transform-es2015-destructuring/-/babel-plugin-transform-es2015-destructuring-6.23.0.tgz#997bb1f1ab967f682d2b0876fe358d60e765c56d" - integrity sha1-mXux8auWf2gtKwh2/jWNYOdlxW0= + integrity sha512-aNv/GDAW0j/f4Uy1OEPZn1mqD+Nfy9viFGBfQ5bZyT35YqOiqx7/tXdyfZkJ1sC21NyEsBdfDY6PYmLHF4r5iA== dependencies: babel-runtime "^6.22.0" babel-plugin-transform-es2015-duplicate-keys@^6.24.1: version "6.24.1" resolved "https://registry.yarnpkg.com/babel-plugin-transform-es2015-duplicate-keys/-/babel-plugin-transform-es2015-duplicate-keys-6.24.1.tgz#73eb3d310ca969e3ef9ec91c53741a6f1576423e" - integrity sha1-c+s9MQypaePvnskcU3QabxV2Qj4= + integrity sha512-ossocTuPOssfxO2h+Z3/Ea1Vo1wWx31Uqy9vIiJusOP4TbF7tPs9U0sJ9pX9OJPf4lXRGj5+6Gkl/HHKiAP5ug== dependencies: babel-runtime "^6.22.0" babel-types "^6.24.1" @@ -4815,14 +3209,14 @@ babel-plugin-transform-es2015-duplicate-keys@^6.24.1: babel-plugin-transform-es2015-for-of@^6.22.0: version "6.23.0" resolved "https://registry.yarnpkg.com/babel-plugin-transform-es2015-for-of/-/babel-plugin-transform-es2015-for-of-6.23.0.tgz#f47c95b2b613df1d3ecc2fdb7573623c75248691" - integrity sha1-9HyVsrYT3x0+zC/bdXNiPHUkhpE= + integrity sha512-DLuRwoygCoXx+YfxHLkVx5/NpeSbVwfoTeBykpJK7JhYWlL/O8hgAK/reforUnZDlxasOrVPPJVI/guE3dCwkw== dependencies: babel-runtime "^6.22.0" babel-plugin-transform-es2015-function-name@^6.24.1: version "6.24.1" resolved "https://registry.yarnpkg.com/babel-plugin-transform-es2015-function-name/-/babel-plugin-transform-es2015-function-name-6.24.1.tgz#834c89853bc36b1af0f3a4c5dbaa94fd8eacaa8b" - integrity sha1-g0yJhTvDaxrw86TF26qU/Y6sqos= + integrity sha512-iFp5KIcorf11iBqu/y/a7DK3MN5di3pNCzto61FqCNnUX4qeBwcV1SLqe10oXNnCaxBUImX3SckX2/o1nsrTcg== dependencies: babel-helper-function-name "^6.24.1" babel-runtime "^6.22.0" @@ -4831,14 +3225,14 @@ babel-plugin-transform-es2015-function-name@^6.24.1: babel-plugin-transform-es2015-literals@^6.22.0: version "6.22.0" resolved "https://registry.yarnpkg.com/babel-plugin-transform-es2015-literals/-/babel-plugin-transform-es2015-literals-6.22.0.tgz#4f54a02d6cd66cf915280019a31d31925377ca2e" - integrity sha1-T1SgLWzWbPkVKAAZox0xklN3yi4= + integrity sha512-tjFl0cwMPpDYyoqYA9li1/7mGFit39XiNX5DKC/uCNjBctMxyL1/PT/l4rSlbvBG1pOKI88STRdUsWXB3/Q9hQ== dependencies: babel-runtime "^6.22.0" babel-plugin-transform-es2015-modules-amd@^6.24.1: version "6.24.1" resolved "https://registry.yarnpkg.com/babel-plugin-transform-es2015-modules-amd/-/babel-plugin-transform-es2015-modules-amd-6.24.1.tgz#3b3e54017239842d6d19c3011c4bd2f00a00d154" - integrity sha1-Oz5UAXI5hC1tGcMBHEvS8AoA0VQ= + integrity sha512-LnIIdGWIKdw7zwckqx+eGjcS8/cl8D74A3BpJbGjKTFFNJSMrjN4bIh22HY1AlkUbeLG6X6OZj56BDvWD+OeFA== dependencies: babel-plugin-transform-es2015-modules-commonjs "^6.24.1" babel-runtime "^6.22.0" @@ -4857,7 +3251,7 @@ babel-plugin-transform-es2015-modules-commonjs@^6.24.1: babel-plugin-transform-es2015-modules-systemjs@^6.24.1: version "6.24.1" resolved "https://registry.yarnpkg.com/babel-plugin-transform-es2015-modules-systemjs/-/babel-plugin-transform-es2015-modules-systemjs-6.24.1.tgz#ff89a142b9119a906195f5f106ecf305d9407d23" - integrity sha1-/4mhQrkRmpBhlfXxBuzzBdlAfSM= + integrity sha512-ONFIPsq8y4bls5PPsAWYXH/21Hqv64TBxdje0FvU3MhIV6QM2j5YS7KvAzg/nTIVLot2D2fmFQrFWCbgHlFEjg== dependencies: babel-helper-hoist-variables "^6.24.1" babel-runtime "^6.22.0" @@ -4866,7 +3260,7 @@ babel-plugin-transform-es2015-modules-systemjs@^6.24.1: babel-plugin-transform-es2015-modules-umd@^6.24.1: version "6.24.1" resolved "https://registry.yarnpkg.com/babel-plugin-transform-es2015-modules-umd/-/babel-plugin-transform-es2015-modules-umd-6.24.1.tgz#ac997e6285cd18ed6176adb607d602344ad38468" - integrity sha1-rJl+YoXNGO1hdq22B9YCNErThGg= + integrity sha512-LpVbiT9CLsuAIp3IG0tfbVo81QIhn6pE8xBJ7XSeCtFlMltuar5VuBV6y6Q45tpui9QWcy5i0vLQfCfrnF7Kiw== dependencies: babel-plugin-transform-es2015-modules-amd "^6.24.1" babel-runtime "^6.22.0" @@ -4875,7 +3269,7 @@ babel-plugin-transform-es2015-modules-umd@^6.24.1: babel-plugin-transform-es2015-object-super@^6.24.1: version "6.24.1" resolved "https://registry.yarnpkg.com/babel-plugin-transform-es2015-object-super/-/babel-plugin-transform-es2015-object-super-6.24.1.tgz#24cef69ae21cb83a7f8603dad021f572eb278f8d" - integrity sha1-JM72muIcuDp/hgPa0CH1cusnj40= + integrity sha512-8G5hpZMecb53vpD3mjs64NhI1au24TAmokQ4B+TBFBjN9cVoGoOvotdrMMRmHvVZUEvqGUPWL514woru1ChZMA== dependencies: babel-helper-replace-supers "^6.24.1" babel-runtime "^6.22.0" @@ -4883,7 +3277,7 @@ babel-plugin-transform-es2015-object-super@^6.24.1: babel-plugin-transform-es2015-parameters@^6.24.1: version "6.24.1" resolved "https://registry.yarnpkg.com/babel-plugin-transform-es2015-parameters/-/babel-plugin-transform-es2015-parameters-6.24.1.tgz#57ac351ab49caf14a97cd13b09f66fdf0a625f2b" - integrity sha1-V6w1GrScrxSpfNE7CfZv3wpiXys= + integrity sha512-8HxlW+BB5HqniD+nLkQ4xSAVq3bR/pcYW9IigY+2y0dI+Y7INFeTbfAQr+63T3E4UDsZGjyb+l9txUnABWxlOQ== dependencies: babel-helper-call-delegate "^6.24.1" babel-helper-get-function-arity "^6.24.1" @@ -4895,7 +3289,7 @@ babel-plugin-transform-es2015-parameters@^6.24.1: babel-plugin-transform-es2015-shorthand-properties@^6.24.1: version "6.24.1" resolved "https://registry.yarnpkg.com/babel-plugin-transform-es2015-shorthand-properties/-/babel-plugin-transform-es2015-shorthand-properties-6.24.1.tgz#24f875d6721c87661bbd99a4622e51f14de38aa0" - integrity sha1-JPh11nIch2YbvZmkYi5R8U3jiqA= + integrity sha512-mDdocSfUVm1/7Jw/FIRNw9vPrBQNePy6wZJlR8HAUBLybNp1w/6lr6zZ2pjMShee65t/ybR5pT8ulkLzD1xwiw== dependencies: babel-runtime "^6.22.0" babel-types "^6.24.1" @@ -4903,14 +3297,14 @@ babel-plugin-transform-es2015-shorthand-properties@^6.24.1: babel-plugin-transform-es2015-spread@^6.22.0: version "6.22.0" resolved "https://registry.yarnpkg.com/babel-plugin-transform-es2015-spread/-/babel-plugin-transform-es2015-spread-6.22.0.tgz#d6d68a99f89aedc4536c81a542e8dd9f1746f8d1" - integrity sha1-1taKmfia7cRTbIGlQujdnxdG+NE= + integrity sha512-3Ghhi26r4l3d0Js933E5+IhHwk0A1yiutj9gwvzmFbVV0sPMYk2lekhOufHBswX7NCoSeF4Xrl3sCIuSIa+zOg== dependencies: babel-runtime "^6.22.0" babel-plugin-transform-es2015-sticky-regex@^6.24.1: version "6.24.1" resolved "https://registry.yarnpkg.com/babel-plugin-transform-es2015-sticky-regex/-/babel-plugin-transform-es2015-sticky-regex-6.24.1.tgz#00c1cdb1aca71112cdf0cf6126c2ed6b457ccdbc" - integrity sha1-AMHNsaynERLN8M9hJsLta0V8zbw= + integrity sha512-CYP359ADryTo3pCsH0oxRo/0yn6UsEZLqYohHmvLQdfS9xkf+MbCzE3/Kolw9OYIY4ZMilH25z/5CbQbwDD+lQ== dependencies: babel-helper-regex "^6.24.1" babel-runtime "^6.22.0" @@ -4919,21 +3313,21 @@ babel-plugin-transform-es2015-sticky-regex@^6.24.1: babel-plugin-transform-es2015-template-literals@^6.22.0: version "6.22.0" resolved "https://registry.yarnpkg.com/babel-plugin-transform-es2015-template-literals/-/babel-plugin-transform-es2015-template-literals-6.22.0.tgz#a84b3450f7e9f8f1f6839d6d687da84bb1236d8d" - integrity sha1-qEs0UPfp+PH2g51taH2oS7EjbY0= + integrity sha512-x8b9W0ngnKzDMHimVtTfn5ryimars1ByTqsfBDwAqLibmuuQY6pgBQi5z1ErIsUOWBdw1bW9FSz5RZUojM4apg== dependencies: babel-runtime "^6.22.0" babel-plugin-transform-es2015-typeof-symbol@^6.22.0: version "6.23.0" resolved "https://registry.yarnpkg.com/babel-plugin-transform-es2015-typeof-symbol/-/babel-plugin-transform-es2015-typeof-symbol-6.23.0.tgz#dec09f1cddff94b52ac73d505c84df59dcceb372" - integrity sha1-3sCfHN3/lLUqxz1QXITfWdzOs3I= + integrity sha512-fz6J2Sf4gYN6gWgRZaoFXmq93X+Li/8vf+fb0sGDVtdeWvxC9y5/bTD7bvfWMEq6zetGEHpWjtzRGSugt5kNqw== dependencies: babel-runtime "^6.22.0" babel-plugin-transform-es2015-unicode-regex@^6.24.1: version "6.24.1" resolved "https://registry.yarnpkg.com/babel-plugin-transform-es2015-unicode-regex/-/babel-plugin-transform-es2015-unicode-regex-6.24.1.tgz#d38b12f42ea7323f729387f18a7c5ae1faeb35e9" - integrity sha1-04sS9C6nMj9yk4fxinxa4frrNek= + integrity sha512-v61Dbbihf5XxnYjtBN04B/JBvsScY37R1cZT5r9permN1cp+b70DY3Ib3fIkgn1DI9U3tGgBJZVD8p/mE/4JbQ== dependencies: babel-helper-regex "^6.24.1" babel-runtime "^6.22.0" @@ -4942,14 +3336,14 @@ babel-plugin-transform-es2015-unicode-regex@^6.24.1: babel-plugin-transform-regenerator@^6.24.1: version "6.26.0" resolved "https://registry.yarnpkg.com/babel-plugin-transform-regenerator/-/babel-plugin-transform-regenerator-6.26.0.tgz#e0703696fbde27f0a3efcacf8b4dca2f7b3a8f2f" - integrity sha1-4HA2lvveJ/Cj78rPi03KL3s6jy8= + integrity sha512-LS+dBkUGlNR15/5WHKe/8Neawx663qttS6AGqoOUhICc9d1KciBvtrQSuc0PI+CxQ2Q/S1aKuJ+u64GtLdcEZg== dependencies: regenerator-transform "^0.10.0" babel-plugin-transform-strict-mode@^6.24.1: version "6.24.1" resolved "https://registry.yarnpkg.com/babel-plugin-transform-strict-mode/-/babel-plugin-transform-strict-mode-6.24.1.tgz#d5faf7aa578a65bbe591cf5edae04a0c67020758" - integrity sha1-1fr3qleKZbvlkc9e2uBKDGcCB1g= + integrity sha512-j3KtSpjyLSJxNoCDrhwiJad8kw0gJ9REGj8/CqL0HeRyLnvUNYV9zcqluL6QJSXh3nfsLEmSLvwRfGzrgR96Pw== dependencies: babel-runtime "^6.22.0" babel-types "^6.24.1" @@ -4957,7 +3351,7 @@ babel-plugin-transform-strict-mode@^6.24.1: babel-polyfill@^6.26.0: version "6.26.0" resolved "https://registry.yarnpkg.com/babel-polyfill/-/babel-polyfill-6.26.0.tgz#379937abc67d7895970adc621f284cd966cf2153" - integrity sha1-N5k3q8Z9eJWXCtxiHyhM2WbPIVM= + integrity sha512-F2rZGQnAdaHWQ8YAoeRbukc7HS9QgdgeyJ0rQDd485v9opwuPvjpPFcOOT/WmkKTdgy9ESgSPXDcTNpzrGr6iQ== dependencies: babel-runtime "^6.26.0" core-js "^2.5.0" @@ -4966,7 +3360,7 @@ babel-polyfill@^6.26.0: babel-preset-es2015@^6.24.1: version "6.24.1" resolved "https://registry.yarnpkg.com/babel-preset-es2015/-/babel-preset-es2015-6.24.1.tgz#d44050d6bc2c9feea702aaf38d727a0210538939" - integrity sha1-1EBQ1rwsn+6nAqrzjXJ6AhBTiTk= + integrity sha512-XfwUqG1Ry6R43m4Wfob+vHbIVBIqTg/TJY4Snku1iIzeH7mUnwHA8Vagmv+ZQbPwhS8HgsdQvy28Py3k5zpoFQ== dependencies: babel-plugin-check-es2015-constants "^6.22.0" babel-plugin-transform-es2015-arrow-functions "^6.22.0" @@ -4993,43 +3387,10 @@ babel-preset-es2015@^6.24.1: babel-plugin-transform-es2015-unicode-regex "^6.24.1" babel-plugin-transform-regenerator "^6.24.1" -babel-preset-fbjs@^3.3.0: - version "3.4.0" - resolved "https://registry.yarnpkg.com/babel-preset-fbjs/-/babel-preset-fbjs-3.4.0.tgz#38a14e5a7a3b285a3f3a86552d650dca5cf6111c" - integrity sha512-9ywCsCvo1ojrw0b+XYk7aFvTH6D9064t0RIL1rtMf3nsa02Xw41MS7sZw216Im35xj/UY0PDBQsa1brUDDF1Ow== - 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-register@^6.26.0: version "6.26.0" resolved "https://registry.yarnpkg.com/babel-register/-/babel-register-6.26.0.tgz#6ed021173e2fcb486d7acb45c6009a856f647071" - integrity sha1-btAhFz4vy0htestFxgCahW9kcHE= + integrity sha512-veliHlHX06wjaeY8xNITbveXSiI+ASFnOqvne/LaIJIqOWi2Ogmj91KOugEz/hoh/fwMhXNBJPCv8Xaz5CyM4A== dependencies: babel-core "^6.26.0" babel-runtime "^6.26.0" @@ -5042,7 +3403,7 @@ babel-register@^6.26.0: babel-runtime@^6.18.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= + integrity sha512-ITKNuq2wKlW1fJg9sSW52eepoYgZBggvOAHC0u/CYu/qxQ9EVzThCgR69BnSXLHjy2f7SY5zaQ4yt7H9ZVxY2g== dependencies: core-js "^2.4.0" regenerator-runtime "^0.11.0" @@ -5050,7 +3411,7 @@ babel-runtime@^6.18.0, babel-runtime@^6.22.0, babel-runtime@^6.26.0: babel-template@^6.24.1, babel-template@^6.26.0: version "6.26.0" resolved "https://registry.yarnpkg.com/babel-template/-/babel-template-6.26.0.tgz#de03e2d16396b069f46dd9fff8521fb1a0e35e02" - integrity sha1-3gPi0WOWsGn0bdn/+FIfsaDjXgI= + integrity sha512-PCOcLFW7/eazGUKIoqH97sO9A2UYMahsn/yRQ7uOk37iutwjq7ODtcTNF+iFDSHNfkctqsLRjLP7URnOx0T1fg== dependencies: babel-runtime "^6.26.0" babel-traverse "^6.26.0" @@ -5058,10 +3419,10 @@ babel-template@^6.24.1, babel-template@^6.26.0: babylon "^6.18.0" lodash "^4.17.4" -babel-traverse@6.26.0, babel-traverse@^6.24.1, babel-traverse@^6.26.0: +babel-traverse@^6.24.1, 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= + integrity sha512-iSxeXx7apsjCHe9c7n8VtRXGzI2Bk1rBSOJgCCjfyXb6v1aCqE1KSEpq/8SXuVN8Ka/Rh1WDTF0MDzkvTA4MIA== dependencies: babel-code-frame "^6.26.0" babel-messages "^6.23.0" @@ -5076,27 +3437,22 @@ babel-traverse@6.26.0, babel-traverse@^6.24.1, babel-traverse@^6.26.0: babel-types@^6.19.0, babel-types@^6.24.1, 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= + integrity sha512-zhe3V/26rCWsEZK8kZN+HaQj5yQ1CilTObixFzKW1UWjqG7618Twz6YEsCnjfg5gBcJh02DrpCkS9h98ZqDY+g== dependencies: babel-runtime "^6.26.0" esutils "^2.0.2" lodash "^4.17.4" to-fast-properties "^1.0.3" -babylon@6.18.0, 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== -backo2@^1.0.2, backo2@~1.0.2: - version "1.0.2" - resolved "https://registry.yarnpkg.com/backo2/-/backo2-1.0.2.tgz#31ab1ac8b129363463e35b3ebb69f4dfcfba7947" - integrity sha1-MasayLEpNjRj41s+u2n038+6eUc= - backoff@^2.5.0: version "2.5.0" resolved "https://registry.yarnpkg.com/backoff/-/backoff-2.5.0.tgz#f616eda9d3e4b66b8ca7fca79f695722c5f8e26f" - integrity sha1-9hbtqdPktmuMp/ynn2lXIsX44m8= + integrity sha512-wC5ihrnUXmR2douXmXLCe5O3zg3GKIyvRi/hi58a/XyRxVI+3/yM0PYueQOZXPXQ9pxBislYkw+sF9b7C/RuMA== dependencies: precond "0.2" @@ -5105,33 +3461,14 @@ balanced-match@^1.0.0: resolved "https://registry.yarnpkg.com/balanced-match/-/balanced-match-1.0.2.tgz#e83e3a7e3f300b34cb9d87f615fa0cbf357690ee" integrity sha512-3oSeUO0TMV67hN1AmbXsK4yaqU7tjiHlbxRDZOpH0KW9+CeX4bRAaX0Anxt0tx2MrpRpWwQaPwIlISEJhYU5Pw== -base-x@^3.0.2: +base-x@^3.0.2, base-x@^3.0.8: version "3.0.9" resolved "https://registry.yarnpkg.com/base-x/-/base-x-3.0.9.tgz#6349aaabb58526332de9f60995e548a53fe21320" integrity sha512-H7JU6iBHTal1gp56aKoaa//YUxEaAOUiydvrV/pILqIHXTtqxSkATOnDA2u+jZ/61sD+L/412+7kzXRtWukhpQ== dependencies: safe-buffer "^5.0.1" -base-x@^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: - 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, base64-js@^1.3.1: +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== @@ -5152,7 +3489,7 @@ base@^0.11.1: 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= + integrity sha512-qeFIXtP4MSoi6NLqO12WfqARWWuCKi2Rn/9hJLEmtB5yTNr9DqFWkJRCf2qShWzPeAMRnOgCrq0sg/KLv5ES9w== dependencies: tweetnacl "^0.14.3" @@ -5161,38 +3498,32 @@ bech32@1.1.4, bech32@^1.1.3: 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== +big.js@^6.0.3: + version "6.2.1" + resolved "https://registry.yarnpkg.com/big.js/-/big.js-6.2.1.tgz#7205ce763efb17c2e41f26f121c420c6a7c2744f" + integrity sha512-bCtHMwL9LeDIozFn+oNhhFoq+yQ3BNdnsLSASUxLciOb1vgvpHsIO1dsENiGMgbb4SkP5TrzWzRiLddn8ahVOQ== + +bigint-crypto-utils@^3.0.23: + version "3.1.6" + resolved "https://registry.yarnpkg.com/bigint-crypto-utils/-/bigint-crypto-utils-3.1.6.tgz#3a52a660423416856342d0d9981935fa9856f177" + integrity sha512-k5ljSLHx94jQTW3+18KEfxLJR8/XFBHqhfhEGF48qT8p/jL6EdiG7oNOiiIRGMFh2wEP8kaCXZbVd+5dYkngUg== + dependencies: + bigint-mod-arith "^3.1.0" + +bigint-mod-arith@^3.1.0: + version "3.1.1" + resolved "https://registry.yarnpkg.com/bigint-mod-arith/-/bigint-mod-arith-3.1.1.tgz#127c504faf30d27ba010ac7b7d58708a68e3c20b" + integrity sha512-SzFqdncZKXq5uh3oLFZXmzaZEMDsA7ml9l53xKaVGO6/+y26xNwAaTQEg2R+D+d07YduLbKi0dni3YPsR51UDQ== bignumber.js@*, bignumber.js@^9.0.0, 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== + version "9.1.0" + resolved "https://registry.yarnpkg.com/bignumber.js/-/bignumber.js-9.1.0.tgz#8d340146107fe3a6cb8d40699643c302e8773b62" + integrity sha512-4LwHK4nfDOraBCtst+wOWIHbu1vhvAPJK8g8nROd4iuc3PSEjWif/qwbkh8jwCJz6yDBvtU4KPynETgrfh7y3A== bignumber.js@^5.0.0: version "5.0.0" @@ -5214,64 +3545,13 @@ binary-extensions@^2.0.0: resolved "https://registry.yarnpkg.com/binary-extensions/-/binary-extensions-2.2.0.tgz#75f502eeaf9ffde42fc98829645be4ea76bd9e2d" integrity sha512-jDctJ/IVQbZoJykoeHbhXpOlNBqGNcwXJKJog42E5HDPUwQTSdjCHdihjj0DlnheQ7blbT6dHOafNAiS8ooQKA== -bindings@^1.3.0, bindings@^1.3.1, bindings@^1.5.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" - integrity sha1-AfqHSHhcpwlV1QESF9GzE5lpyiI= - 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.3" resolved "https://registry.yarnpkg.com/bl/-/bl-1.2.3.tgz#1e8dd80142eac80d7158c9dccc047fb620e035e7" @@ -5280,15 +3560,6 @@ 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" - bl@^5.0.0: version "5.0.0" resolved "https://registry.yarnpkg.com/bl/-/bl-5.0.0.tgz#6928804a41e9da9034868e1c50ca88f21f57aea2" @@ -5299,21 +3570,21 @@ bl@^5.0.0: readable-stream "^3.4.0" blakejs@^1.1.0: - version "1.1.1" - resolved "https://registry.yarnpkg.com/blakejs/-/blakejs-1.1.1.tgz#bf313053978b2cd4c444a48795710be05c785702" - integrity sha512-bLG6PHOCZJKNshTjGRBvET0vTciwQE6zFKOKKXPDJfwFBd4Ac0yBfPZqcGvGJap50l7ktvlpFqc2jGVaUgbJgg== + version "1.2.1" + resolved "https://registry.yarnpkg.com/blakejs/-/blakejs-1.2.1.tgz#5057e4206eadb4a97f7c0b6e197a505042fc3814" + integrity sha512-QXUSXI3QVc/gJME0dBpXrag1kbzOqCjCX8/b54ntNyW6sjtoqxqRk3LTmXzaJoh71zMsDCjM+47jS7XiwN/+fQ== blessed@^0.1.81: version "0.1.81" resolved "https://registry.yarnpkg.com/blessed/-/blessed-0.1.81.tgz#f962d687ec2c369570ae71af843256e6d0ca1129" - integrity sha1-+WLWh+wsNpVwrnGvhDJW5tDKESk= + integrity sha512-LoF5gae+hlmfORcG1M5+5XZi4LBmvlXTzwJWzUlPryN/SJdSflZvROM2TwkT0GMpq7oqT48NRd4GS7BiVBc5OQ== blob-to-it@^1.0.1: - version "1.0.3" - resolved "https://registry.yarnpkg.com/blob-to-it/-/blob-to-it-1.0.3.tgz#699a05548f4d9a51851e476a5c2de4d11a801fe8" - integrity sha512-3bCrqSWG2qWwoIeF6DUJeuW/1isjx7DUhqZn9GpWlK8SVeqcjP+zw4yujdV0bVaqtggk6CUgtu87jfwHi5g7Zg== + version "1.0.4" + resolved "https://registry.yarnpkg.com/blob-to-it/-/blob-to-it-1.0.4.tgz#f6caf7a4e90b7bb9215fa6a318ed6bd8ad9898cb" + integrity sha512-iCmk0W4NdbrWgRRuxOriU8aM5ijeVLI61Zulsmg/lUHNr7pYjoj+U77opLefNagevtrrbMt3JQ5Qip7ar178kA== dependencies: - browser-readablestream-to-it "^1.0.2" + browser-readablestream-to-it "^1.0.3" blockstore-core@^1.0.0, blockstore-core@^1.0.2: version "1.0.5" @@ -5350,9 +3621,9 @@ bluebird@^3.4.7, bluebird@^3.5.0, bluebird@^3.5.2: 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= + integrity sha512-XWwnNNFCuuSQ0m3r3C4LE3EiORltHd9M05pq6FOlVeiophzRbMo50Sbz1ehl8K3Z+jw9+vmgnXefY1hz8X+2wA== -bn.js@4.11.8, bn.js@=4.11.8: +bn.js@4.11.8: version "4.11.8" resolved "https://registry.yarnpkg.com/bn.js/-/bn.js-4.11.8.tgz#2cde09eb5ee341f484746bb0309b3253b1b1442f" integrity sha512-ItfYfPLkWHUjckQCk8xC+LwxgK8NYcXywGigJgSwOP8Y2iyWT4f2vsZnoOXTTbo+o5yXmIUJ4gn5538SO5S3gA== @@ -5362,44 +3633,33 @@ bn.js@^4.0.0, bn.js@^4.1.0, bn.js@^4.11.0, bn.js@^4.11.6, bn.js@^4.11.8, bn.js@^ resolved "https://registry.yarnpkg.com/bn.js/-/bn.js-4.12.0.tgz#775b3f278efbb9718eec7361f483fb36fbbfea88" integrity sha512-c98Bf3tPniI+scsdk237ku1Dc3ujXQTSgyiPUDEOe7tRkhrqridvh8klBv0HCEso1OLOYcHuCv/cS6DNxKH+ZA== -bn.js@^5.0.0, bn.js@^5.1.1, bn.js@^5.1.2, bn.js@^5.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== +bn.js@^5.0.0, bn.js@^5.1.1, bn.js@^5.1.2, bn.js@^5.1.3, bn.js@^5.2.0, bn.js@^5.2.1: + version "5.2.1" + resolved "https://registry.yarnpkg.com/bn.js/-/bn.js-5.2.1.tgz#0bc527a6a0d18d0aa8d5b0538ce4a77dccfa7b70" + integrity sha512-eXRvHzWyYPBuB4NBy0cmYQjGitUrtqwbvlzP3G6VFnNRbsZQIxQ10PbKKHt8gZ/HW/D/747aDl+QkDqg3KQLMQ== -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== +body-parser@1.20.0, body-parser@^1.16.0, body-parser@^1.19.0: + version "1.20.0" + resolved "https://registry.yarnpkg.com/body-parser/-/body-parser-1.20.0.tgz#3de69bd89011c11573d7bfee6a64f11b6bd27cc5" + integrity sha512-DfJ+q6EPcGKZD1QWUjSpqp+Q7bDQTsQIF4zfUAtZ6qk+H/3/QRhg9CEp39ss+/T2vw0+HaidC0ecJj/DRLIaKg== dependencies: - bytes "3.1.0" + bytes "3.1.2" content-type "~1.0.4" debug "2.6.9" - depd "~1.1.2" - http-errors "1.7.2" + depd "2.0.0" + destroy "1.2.0" + http-errors "2.0.0" iconv-lite "0.4.24" - on-finished "~2.3.0" - qs "6.7.0" - raw-body "2.4.0" - type-is "~1.6.17" + on-finished "2.4.1" + qs "6.10.3" + raw-body "2.5.1" + type-is "~1.6.18" + unpipe "1.0.0" -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" + integrity sha512-JZOSA7Mo9sNGB8+UjSgzdLtokWAky1zbztM3WRLCbZ70/3cTANmQmOdR7y2g+J0e2WXywy1yS468tY+IruqEww== brace-expansion@^1.1.7: version "1.1.11" @@ -5409,14 +3669,12 @@ brace-expansion@^1.1.7: balanced-match "^1.0.0" concat-map "0.0.1" -braces@^1.8.2: - version "1.8.5" - resolved "https://registry.yarnpkg.com/braces/-/braces-1.8.5.tgz#ba77962e12dff969d6b76711e914b737857bf6a7" - integrity sha1-uneWLhLf+WnWt2cR6RS3N4V79qc= +brace-expansion@^2.0.1: + version "2.0.1" + resolved "https://registry.yarnpkg.com/brace-expansion/-/brace-expansion-2.0.1.tgz#1edc459e0f0c548486ecf9fc99f2221364b9a0ae" + integrity sha512-XnAIvQ8eM+kC6aULx6wuQiwVsnzsi9d3WxzV3FpWTGA19F621kwdbsAcFKXgKUHZWsy+mY6iL1sHTxWEFCytDA== dependencies: - expand-range "^1.8.1" - preserve "^0.2.0" - repeat-element "^1.1.2" + balanced-match "^1.0.0" braces@^2.3.1, braces@^2.3.2: version "2.3.2" @@ -5434,7 +3692,7 @@ braces@^2.3.1, braces@^2.3.2: split-string "^3.0.2" to-regex "^3.0.1" -braces@^3.0.1, braces@~3.0.2: +braces@^3.0.2, braces@~3.0.2: version "3.0.2" resolved "https://registry.yarnpkg.com/braces/-/braces-3.0.2.tgz#3454e1a462ee8d599e236df336cd9ea4f8afe107" integrity sha512-b8um+L1RzM3WDSzvhm6gIz1yfTbBt6YTlcEKAvsmqCZZFw46z626lVj9j1yEPW33H5H+lBQpZMP1k8l+78Ha0A== @@ -5444,24 +3702,29 @@ braces@^3.0.1, braces@~3.0.2: 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= + integrity sha512-cKV8tMCEpQs4hK/ik71d6LrPOnpkpGBR0wzxqr68g2m/LB2GxVYQroAjMJZRVM1Y4BCjCKc3vAamxSzOY2RP+w== -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-level@^1.0.1: + version "1.0.1" + resolved "https://registry.yarnpkg.com/browser-level/-/browser-level-1.0.1.tgz#36e8c3183d0fe1c405239792faaab5f315871011" + integrity sha512-XECYKJ+Dbzw0lbydyQuJzwNXtOpbMSq737qxJN11sIRTErOMShvDpbzTlgju7orJKvx4epULolZAuJGLzCmWRQ== + dependencies: + abstract-level "^1.0.2" + catering "^2.1.1" + module-error "^1.0.2" + run-parallel-limit "^1.1.0" -browser-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-readablestream-to-it@^1.0.1, browser-readablestream-to-it@^1.0.3: + version "1.0.3" + resolved "https://registry.yarnpkg.com/browser-readablestream-to-it/-/browser-readablestream-to-it-1.0.3.tgz#ac3e406c7ee6cdf0a502dd55db33bab97f7fba76" + integrity sha512-+12sHB+Br8HIh6VAMVEG5r3UXCyESIgDW7kzk3BjIXa43DVqVwL7GC5TW3jeh+72dtcH99pPVpw0X8i0jt+/kw== 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== -browserify-aes@^1.0.0, browserify-aes@^1.0.4, browserify-aes@^1.0.6, browserify-aes@^1.2.0: +browserify-aes@^1.0.0, browserify-aes@^1.0.4, 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== @@ -5515,32 +3778,24 @@ browserify-sign@^4.0.0: readable-stream "^3.6.0" safe-buffer "^5.2.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.16.6, browserslist@^4.17.5, browserslist@^4.17.6: - version "4.18.1" - resolved "https://registry.yarnpkg.com/browserslist/-/browserslist-4.18.1.tgz#60d3920f25b6860eb917c6c7b185576f4d8b017f" - integrity sha512-8ScCzdpPwR2wQh8IT82CA2VgDwjHyqMovPBZSNH54+tm4Jk2pCuv90gmAdH6J84OCRWi0b4gMe6O6XPXuJnjgQ== +browserslist@^4.21.3, browserslist@^4.21.4: + version "4.21.4" + resolved "https://registry.yarnpkg.com/browserslist/-/browserslist-4.21.4.tgz#e7496bbc67b9e39dd0f98565feccdcb0d4ff6987" + integrity sha512-CBHJJdDmgjl3daYjN5Cp5kbTf1mUhZoS+beLklHIvkOWscs83YAhLlF3Wsh/lciQYAcbBJgTOD44VtG31ZM4Hw== dependencies: - caniuse-lite "^1.0.30001280" - electron-to-chromium "^1.3.896" - escalade "^3.1.1" - node-releases "^2.0.1" - picocolors "^1.0.0" + caniuse-lite "^1.0.30001400" + electron-to-chromium "^1.4.251" + node-releases "^2.0.6" + update-browserslist-db "^1.0.9" bs58@^4.0.0, bs58@^4.0.1: version "4.0.1" resolved "https://registry.yarnpkg.com/bs58/-/bs58-4.0.1.tgz#be161e76c354f6f788ae4071f63f34e8c4f0a42a" - integrity sha1-vhYedsNU9veIrkBx9j806MTwpCo= + integrity sha512-Ok3Wdf5vOIlBrgCvTq96gBkJw+JUEzdBgyaza5HLtPm7yTHkjRy8+JzNyHF7BHa0bNWOQIp3m5YF0nnFcOIKLw== dependencies: base-x "^3.0.2" -bs58check@<3.0.0, bs58check@^2.1.1, bs58check@^2.1.2: +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== @@ -5549,18 +3804,6 @@ bs58check@<3.0.0, bs58check@^2.1.1, bs58check@^2.1.2: create-hash "^1.1.0" safe-buffer "^5.1.2" -bser@2.1.1: - version "2.1.1" - resolved "https://registry.yarnpkg.com/bser/-/bser-2.1.1.tgz#e6787da20ece9d07998533cfd9de6f5c38f4bc05" - integrity sha512-gQxTNE/GAfIIrmHLUE3oJyp5FO6HRBfhjnw4/wMmA63ZGDJnWBmgY/lyQBpnDUkGmAhbSe39tx2d/iTOAfglwQ== - dependencies: - node-int64 "^0.4.0" - -btoa-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= - btoa@^1.2.1: version "1.2.1" resolved "https://registry.yarnpkg.com/btoa/-/btoa-1.2.1.tgz#01a9909f8b2c93f6bf680ba26131eb30f7fa3d73" @@ -5579,52 +3822,35 @@ 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" - integrity sha1-DTM+PwDqxQqhRUq9MO+MKl2ackI= + integrity sha512-VO9Ht/+p3SN7SKWqcrgEzjGbRSJYTx+Q1pTQC0wrWqHx0vpJraQ6GtHx8tvcg1rlK1byhU5gccxgOgj7B0TDkQ== buffer-fill@^1.0.0: version "1.0.0" resolved "https://registry.yarnpkg.com/buffer-fill/-/buffer-fill-1.0.0.tgz#f8f78b76789888ef39f205cd637f68e702122b2c" - integrity sha1-+PeLdniYiO858gXNY39o5wISKyw= + integrity sha512-T7zexNBwiiaCOGDg9xNX9PBmjrubblRkENuptryuI64URkXDFum9il/JGL8Lm8wYfAXpredVXXZz7eMHilimiQ== 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== -buffer-from@1.1.1: - 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-from@^1.0.0: +buffer-from@1.1.2, buffer-from@^1.0.0: version "1.1.2" resolved "https://registry.yarnpkg.com/buffer-from/-/buffer-from-1.1.2.tgz#2b146a6fd72e80b4f55d255f35ed59a3a9a41bd5" integrity sha512-E+XQCRwSbaaiChtv6k6Dwgc+bx+Bs6vuKJHHl5kox/BaKbhiXzqQOwK4cO22yElGp2OCmjwVhT3HmxgyPGnJfQ== -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= + integrity sha512-3dthu5CYiVB1DEJp61FtApNnNndTckcqe4pFcLdvHtrpG+kcyekCJKg4MRiDcFW7A6AODnXB9U4dwQiCW5kzJQ== buffer-xor@^1.0.3: version "1.0.3" resolved "https://registry.yarnpkg.com/buffer-xor/-/buffer-xor-1.0.3.tgz#26e61ed1422fb70dd42e6e36729ed51d855fe8d9" - integrity sha1-JuYe0UIvtw3ULm42cp7VHYVf6Nk= + integrity sha512-571s0T7nZWK6vB67HI5dyUF7wXiNcfaPPPTl6zYCNApANjIvYJTg7hlud/+cJpdAhS7dVzqMLmfhfHR3rAcOjQ== buffer-xor@^2.0.1: version "2.0.2" @@ -5641,16 +3867,7 @@ buffer@6.0.3, buffer@^6.0.1, buffer@^6.0.3: 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, buffer@^5.4.3, buffer@^5.5.0, buffer@^5.6.0, buffer@^5.7.0: +buffer@^5.0.5, buffer@^5.2.1, 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== @@ -5658,31 +3875,21 @@ buffer@^5.0.5, buffer@^5.2.1, buffer@^5.4.3, buffer@^5.5.0, buffer@^5.6.0, buffe base64-js "^1.3.1" ieee754 "^1.1.13" -bufferutil@^4.0.1: - version "4.0.4" - resolved "https://registry.yarnpkg.com/bufferutil/-/bufferutil-4.0.4.tgz#ab81373d313a6ead0d734e98c448c722734ae7bb" - integrity sha512-VNxjXUCrF3LvbLgwfkTb5LsFvk6pGIn7OBb9x+3o+iJ6mKw0JTUp4chBFc88hi1aspeZGeZG9jAIbpFYPQSLZw== +bufferutil@4.0.5: + version "4.0.5" + resolved "https://registry.yarnpkg.com/bufferutil/-/bufferutil-4.0.5.tgz#da9ea8166911cc276bf677b8aed2d02d31f59028" + integrity sha512-HTm14iMQKK2FjFLRTM5lAVcyaUzOnqbPtesFIvREgXpJHdQm8bWS+GkQgIkfaBYRHuCnea7w8UVNfwiAQhlr9A== dependencies: - node-gyp-build "^4.2.0" - -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= + node-gyp-build "^4.3.0" -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== +bufferutil@^4.0.1: + version "4.0.6" + resolved "https://registry.yarnpkg.com/bufferutil/-/bufferutil-4.0.6.tgz#ebd6c67c7922a0e902f053e5d8be5ec850e48433" + integrity sha512-jduaYOYtnio4aIAyc6UbvPCVcgq7nYpVnucyxr6eCYg/Woad9Hf/oxxBRDnGGjPfjUm6j5O/uBWhIu4iLebFaw== 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== + node-gyp-build "^4.3.0" -bytes@^3.1.0: +bytes@3.1.2, bytes@^3.1.0: version "3.1.2" resolved "https://registry.yarnpkg.com/bytes/-/bytes-3.1.2.tgz#8b0beeb98605adf1b128fa4386403c009e0221a5" integrity sha512-/Nf7TyzTx6S3yRJObOAV7956r8cr2+Oj8AC5dt8wSP3BQAoeX58NoHyCU8P8zGkNXStjTSi6fzO6F0pBdcYbEg== @@ -5702,10 +3909,20 @@ cache-base@^1.0.1: union-value "^1.0.0" unset-value "^1.0.0" +cacheable-lookup@^5.0.3: + version "5.0.4" + resolved "https://registry.yarnpkg.com/cacheable-lookup/-/cacheable-lookup-5.0.4.tgz#5a6b865b2c44357be3d5ebc2a467b032719a7005" + integrity sha512-2/kNscPhpcxrOigMZzbiWF7dz8ilhb/nIHU3EyZiXWXpeq/au8qJ8VhdftMkty3n7Gj6HIGalQG8oiBNB3AJgA== + +cacheable-lookup@^6.0.4: + version "6.1.0" + resolved "https://registry.yarnpkg.com/cacheable-lookup/-/cacheable-lookup-6.1.0.tgz#0330a543471c61faa4e9035db583aad753b36385" + integrity sha512-KJ/Dmo1lDDhmW2XDPMo+9oiy/CeqosPguPCrgcVzKyZrL6pM1gU2GmPY/xo6OQPTUaA/c0kwHuywB4E6nmT9ww== + cacheable-request@^2.1.1: version "2.1.4" resolved "https://registry.yarnpkg.com/cacheable-request/-/cacheable-request-2.1.4.tgz#0d808801b6342ad33c91df9d0b44dc09b91e5c3d" - integrity sha1-DYCIAbY0KtM8kd+dC0TcCbkeXD0= + integrity sha512-vag0O2LKZ/najSoUwDbVlnlCFvhBE/7mGTY2B5FgCBDcRD+oVV1HYTOwM6JZfMg/hIcM6IwnTZ1uQQL5/X3xIQ== dependencies: clone-response "1.0.2" get-stream "3.0.0" @@ -5728,6 +3945,19 @@ cacheable-request@^6.0.0: normalize-url "^4.1.0" responselike "^1.0.2" +cacheable-request@^7.0.2: + version "7.0.2" + resolved "https://registry.yarnpkg.com/cacheable-request/-/cacheable-request-7.0.2.tgz#ea0d0b889364a25854757301ca12b2da77f91d27" + integrity sha512-pouW8/FmiPQbuGpkXQ9BAPv/Mo5xDGANgSNXzTzJ8DrKGuXOssM4wIQRjfanNRh3Yu5cfYPvcorqbhg2KIJtew== + dependencies: + clone-response "^1.0.2" + get-stream "^5.1.0" + http-cache-semantics "^4.0.0" + keyv "^4.0.0" + lowercase-keys "^2.0.0" + normalize-url "^6.0.1" + responselike "^2.0.0" + 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" @@ -5739,47 +3969,31 @@ call-bind@^1.0.0, call-bind@^1.0.2: caller-callsite@^2.0.0: version "2.0.0" resolved "https://registry.yarnpkg.com/caller-callsite/-/caller-callsite-2.0.0.tgz#847e0fce0a223750a9a027c54b33731ad3154134" - integrity sha1-hH4PzgoiN1CpoCfFSzNzGtMVQTQ= + integrity sha512-JuG3qI4QOftFsZyOn1qq87fq5grLIyk1JYd5lJmdA+fG7aQ9pA/i3JIJGcO3q0MrRcHlOt1U+ZeHW8Dq9axALQ== dependencies: callsites "^2.0.0" 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= + integrity sha512-MCL3sf6nCSXOwCTzvPKhN18TU7AHTvdtam8DAogxcrJ8Rjfbbg7Lgng64H9Iy+vUV6VGFClN/TyxBkAebLRR4A== dependencies: caller-callsite "^2.0.0" 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= + integrity sha512-ksWePWBloaWPxJYQ8TL0JHvtci6G5QTKwQ95RcWAa/lzoAKuAOflGdAK92hpHXjkwb8zLxoLNUoNYZgVsaJzvQ== 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== -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== - dependencies: - pascal-case "^3.1.1" - tslib "^1.10.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== - dependencies: - pascal-case "^3.1.2" - tslib "^2.0.3" - 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= + integrity sha512-+MbKztAYHXPr1jNTSKQF52VpcFjwY5RkR7fxksV8Doo4KAYc5Fl4UJRgthBbTmEx8C54DqahhbLJkDwjI3PI/w== dependencies: no-case "^2.2.0" upper-case "^1.1.1" @@ -5787,39 +4001,39 @@ camel-case@^3.0.0: 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" - integrity sha1-fB0W1nmhu+WcoCys7PsBHiAfWh8= + integrity sha512-wzLkDa4K/mzI1OSITC+DUyjgIl/ETNHE9QvYgy6J6Jvqyyz4C0Xfd+lQhb19sX2jMpZV4IssUn0VDVmglV+s4g== 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= + integrity sha512-4nhGqUkc4BqbBBB4Q6zLuD7lzzrHYrjKGeYaEji/3tFR5VdJu9v+LilhGIVe8wxEJPPOeWo7eg8dwY13TZ1BNg== 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= + integrity sha512-FxAv7HpHrXbh3aPo4o2qxHay2lkLY3x5Mw3KeE4KQE8ysVfziWeRZDwcjauvwBSGEC/nXUPzZy8zeh4HokqOnw== -camelcase@^5.0.0, camelcase@^5.3.1: +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== -caniuse-lite@^1.0.30001280: - version "1.0.30001280" - resolved "https://registry.yarnpkg.com/caniuse-lite/-/caniuse-lite-1.0.30001280.tgz#066a506046ba4be34cde5f74a08db7a396718fb7" - integrity sha512-kFXwYvHe5rix25uwueBxC569o53J6TpnGu0BEEn+6Lhl2vsnAumRFWEBhDft1fwyo6m1r4i+RqA4+163FpeFcA== +camelcase@^6.0.0: + version "6.3.0" + resolved "https://registry.yarnpkg.com/camelcase/-/camelcase-6.3.0.tgz#5685b95eb209ac9c0c177467778c9c84df58ba9a" + integrity sha512-Gmy6FhYlCY7uOElZUSbxo2UCDH8owEk996gkbrpsgGtrJLM3J7jGxl9Ic7Qwwj4ivOE5AWZWRMecDdF7hqGjFA== + +caniuse-lite@^1.0.30001400: + version "1.0.30001409" + resolved "https://registry.yarnpkg.com/caniuse-lite/-/caniuse-lite-1.0.30001409.tgz#6135da9dcab34cd9761d9cdb12a68e6740c5e96e" + integrity sha512-V0mnJ5dwarmhYv8/MzhJ//aW68UpvnQBXv8lJ2QUsvn2pHcmAuNtu8hQEDz37XnA1iE+lRR9CIfGWWpgJ5QedQ== 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= + integrity sha512-4tYFyifaFfGacoiObjJegolkwSU4xQNGbVgUiNYVUxbQ2x2lUsFvY4hVgVzGiIe6WLOPqycWXA40l+PWsxthUw== -catering@^2.0.0, catering@^2.1.0: +catering@^2.0.0, catering@^2.1.0, catering@^2.1.1: version "2.1.1" resolved "https://registry.yarnpkg.com/catering/-/catering-2.1.1.tgz#66acba06ed5ee28d5286133982a927de9a04b510" integrity sha512-K7Qy8O9p76sL3/3m7/zLKbRkyOlSZAgzEaLhyj2mXS8PsCud2Eo4hAb8aLtZqHh0QGqLcb9dlJSu6lHRVENm1w== @@ -5834,7 +4048,7 @@ caw@^2.0.1: tunnel-agent "^0.6.0" url-to-options "^1.0.1" -cbor@^5.0.2, cbor@^5.1.0: +cbor@^5.0.2, cbor@^5.2.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== @@ -5849,15 +4063,15 @@ cbor@^8.0.0: dependencies: nofilter "^3.1.0" -cborg@^1.3.1, cborg@^1.3.3, cborg@^1.3.4, cborg@^1.5.4, cborg@^1.6.0: - version "1.8.1" - resolved "https://registry.yarnpkg.com/cborg/-/cborg-1.8.1.tgz#c54334f70f411783b9f67feb5ec81ecb600be797" - integrity sha512-x49Vf1DUrS9rc+ar8QwOqfvA48H9YRn6UzcvlXpd1jKIzq2ebSR1R/yegu7MsskJew4+yc+3znWmud0PMJkR1Q== +cborg@^1.3.1, cborg@^1.3.3, cborg@^1.3.4, cborg@^1.5.4, cborg@^1.6.0, cborg@^1.9.0: + version "1.9.5" + resolved "https://registry.yarnpkg.com/cborg/-/cborg-1.9.5.tgz#1e3b8a8407b3665566001f8841c9d72d7a80b2d5" + integrity sha512-fLBv8wmqtlXqy1Yu+pHzevAIkW6k2K0ZtMujNzWphLsA34vzzg9BHn+5GmZqOJkSA9V7EMKsWrf6K976c1QMjQ== 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= + integrity sha512-Baz3aNe2gd2LP2qk5U+sDk/m4oSuwSDcBfayTCTBoWpfIGO5XFxPmjILQII4NGiZjD6DoDI6kf7gKaxkf7s3VQ== dependencies: align-text "^0.1.3" lazy-cache "^1.0.3" @@ -5868,21 +4082,22 @@ chai-bn@^0.2.1: integrity sha512-MzjelH0p8vWn65QKmEq/DLBG1Hle4WeyqT79ANhXZhn/UxRWO0OogkAxi5oGGtfzwU9bZR8mvbvYdoqNVWQwFg== chai@^4.2.0: - version "4.3.4" - resolved "https://registry.yarnpkg.com/chai/-/chai-4.3.4.tgz#b55e655b31e1eac7099be4c08c21964fce2e6c49" - integrity sha512-yS5H68VYOCtN1cjfwumDSuzn/9c+yza4f3reKXlE5rUg7SFcCEy90gJvydNgOYtblyf4Zi6jIWRnXOgErta0KA== + version "4.3.6" + resolved "https://registry.yarnpkg.com/chai/-/chai-4.3.6.tgz#ffe4ba2d9fa9d6680cc0b370adae709ec9011e9c" + integrity sha512-bbcp3YfHCUzMOvKqsztczerVgBKSsEijCySNlHHbX3VG1nskvqjz5Rfso1gGwD6w6oOV3eI60pKuMOV5MV7p3Q== dependencies: assertion-error "^1.1.0" check-error "^1.0.2" deep-eql "^3.0.1" get-func-name "^2.0.0" + loupe "^2.3.1" pathval "^1.1.1" type-detect "^4.0.5" -chalk@1.1.3, chalk@^1.1, chalk@^1.1.3: +chalk@^1.1, chalk@^1.1.3: version "1.1.3" resolved "https://registry.yarnpkg.com/chalk/-/chalk-1.1.3.tgz#a8115c55e4a702fe4d150abd3872822a7e09fc98" - integrity sha1-qBFcVeSnAv5NFQq9OHKCKn4J/Jg= + integrity sha512-U3lRVLMSlsCfjqYPbLyVv11M9CPW4I728d6TCKMAOJueEeB9/8o+eSsMnxPJD+Q+K909sdESg7C+tIkoH6on1A== dependencies: ansi-styles "^2.2.1" escape-string-regexp "^1.0.2" @@ -5890,7 +4105,7 @@ chalk@1.1.3, chalk@^1.1, chalk@^1.1.3: strip-ansi "^3.0.0" supports-color "^2.0.0" -chalk@^2.0.0, chalk@^2.0.1, chalk@^2.1.0, chalk@^2.3.2, chalk@^2.4.1, chalk@^2.4.2: +chalk@^2.0.0, chalk@^2.1.0, chalk@^2.3.2, 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== @@ -5899,7 +4114,7 @@ chalk@^2.0.0, chalk@^2.0.1, chalk@^2.1.0, chalk@^2.3.2, chalk@^2.4.1, chalk@^2.4 escape-string-regexp "^1.0.5" supports-color "^5.3.0" -chalk@^4.0.0, chalk@^4.1.0: +chalk@^4.0.0, chalk@^4.1.0, chalk@^4.1.2: version "4.1.2" resolved "https://registry.yarnpkg.com/chalk/-/chalk-4.1.2.tgz#aac4e2b7734a740867aeb16bf02aad556a1e7a01" integrity sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA== @@ -5934,7 +4149,7 @@ change-case@3.0.2: character-parser@^2.1.1: version "2.2.0" resolved "https://registry.yarnpkg.com/character-parser/-/character-parser-2.2.0.tgz#c7ce28f36d4bcd9744e5ffc2c5fcde1c73261fc0" - integrity sha1-x84o821LzZdE5f/CxfzeHHMmH8A= + integrity sha512-+UqJQjFEFaTAs3bNsF2j2kEN1baG/zghZbdqoYEDxGZtJo9LBzl1A+m0D4n3qKx8N2FNv8/Xp6yV9mQmBuptaw== dependencies: is-regex "^1.0.3" @@ -5946,73 +4161,49 @@ chardet@^0.7.0: "charenc@>= 0.0.1": version "0.0.2" resolved "https://registry.yarnpkg.com/charenc/-/charenc-0.0.2.tgz#c0a1d2f3a7092e03774bfa83f14c0fc5790a8667" - integrity sha1-wKHS86cJLgN3S/qD8UwPxXkKhmc= + integrity sha512-yrLQ/yVUFXkzg7EDQsPieE/53+0RlaWTs+wBrvW36cyilJ2SaDWfl4Yj7MtLTXleV9uEKefbAGUPv2/iWSooRA== charm@~0.1.1: version "0.1.2" resolved "https://registry.yarnpkg.com/charm/-/charm-0.1.2.tgz#06c21eed1a1b06aeb67553cdc53e23274bac2296" - integrity sha1-BsIe7RobBq62dVPNxT4jJ0usIpY= + integrity sha512-syedaZ9cPe7r3hoQA9twWYKu5AIyCswN5+szkmPBe9ccdLrj4bYaCnLVPTLd2kgVRc7+zoX4tyPgRnFKCj5YjQ== 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= + integrity sha512-BrgHpW9NURQgzoNyjfq0Wu6VFO6D7IZEmJNdtgNqpzGG8RuNFHt2jQxWlAs4HMe119chBnv+34syEZtc6IhLtA== checkpoint-store@^1.1.0: version "1.1.0" resolved "https://registry.yarnpkg.com/checkpoint-store/-/checkpoint-store-1.1.0.tgz#04e4cb516b91433893581e6d4601a78e9552ea06" - integrity sha1-BOTLUWuRQziTWB5tRgGnjpVS6gY= + integrity sha512-J/NdY2WvIx654cc6LWSq/IYFFCUf75fFTgwzFnmbqyORH4MwgiQCgswLLKBGzmsyTI5V7i5bp/So6sMbDWhedg== dependencies: functional-red-black-tree "^1.0.1" -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= +cheerio-select@^2.1.0: + version "2.1.0" + resolved "https://registry.yarnpkg.com/cheerio-select/-/cheerio-select-2.1.0.tgz#4d8673286b8126ca2a8e42740d5e3c4884ae21b4" + integrity sha512-9v9kG0LvzrlcungtnJtpGNxY+fzECQKhK4EGJX2vByejiMX84MFNQw4UxPJl3bFbTMw+Dfs37XaIkCwTZfLh4g== 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" + boolbase "^1.0.0" + css-select "^5.1.0" + css-what "^6.1.0" + domelementtype "^2.3.0" + domhandler "^5.0.3" + domutils "^3.0.1" cheerio@^1.0.0-rc.2: - version "1.0.0-rc.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" + version "1.0.0-rc.12" + resolved "https://registry.yarnpkg.com/cheerio/-/cheerio-1.0.0-rc.12.tgz#788bf7466506b1c6bf5fae51d24a2c4d62e47683" + integrity sha512-VqR8m68vM46BNnuZ5NtnGBKIE/DfN0cRIzg9n40EIq9NOv90ayxLBXA8fXC5gquFRGJSTRqBq25Jt2ECLR431Q== + dependencies: + cheerio-select "^2.1.0" + dom-serializer "^2.0.0" + domhandler "^5.0.3" + domutils "^3.0.1" + htmlparser2 "^8.0.1" + parse5 "^7.0.0" + parse5-htmlparser2-tree-adapter "^7.0.0" chokidar@3.3.0: version "3.3.0" @@ -6029,22 +4220,22 @@ chokidar@3.3.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" - integrity sha512-IZHaDeBeI+sZJRX7lGcXsdzgvZqKv6sECqsbErJA4mHWfpRrD8B97kSFN4cQz6nGBGiuFia1MKR4d6c1o8Cv7A== +chokidar@3.5.3, chokidar@^3.4.0: + version "3.5.3" + resolved "https://registry.yarnpkg.com/chokidar/-/chokidar-3.5.3.tgz#1cf37c8707b932bd1af1ae22c0432e2acd1903bd" + integrity sha512-Dr3sfKRP6oTcjf2JmUmFJfeVMvXBdegxB0iVQ5eb2V10uFJUCAS8OByZdVAyVb8xXNz3GjjTgj9kLWsZTqE6kw== dependencies: - anymatch "~3.1.1" + anymatch "~3.1.2" braces "~3.0.2" - glob-parent "~5.1.0" + glob-parent "~5.1.2" is-binary-path "~2.1.0" is-glob "~4.0.1" normalize-path "~3.0.0" - readdirp "~3.4.0" + readdirp "~3.6.0" optionalDependencies: - fsevents "~2.1.2" + fsevents "~2.3.2" -chokidar@^2, chokidar@^2.1.8: +chokidar@^2: version "2.1.8" resolved "https://registry.yarnpkg.com/chokidar/-/chokidar-2.1.8.tgz#804b3a7b6a99358c3c5c61e71d8728f041cff917" integrity sha512-ZmZUazfOzf0Nve7duiCKD23PFSCs4JPoYyccjUFF3aQkQadqBhfzhjkwBH2mNOG9cTBwhamM37EIsIkZw3nRgg== @@ -6063,21 +4254,6 @@ chokidar@^2, chokidar@^2.1.8: optionalDependencies: fsevents "^1.2.7" -chokidar@^3.4.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== - dependencies: - anymatch "~3.1.2" - braces "~3.0.2" - glob-parent "~5.1.2" - is-binary-path "~2.1.0" - is-glob "~4.0.1" - normalize-path "~3.0.0" - readdirp "~3.6.0" - optionalDependencies: - fsevents "~2.3.2" - chownr@^1.1.4: version "1.1.4" resolved "https://registry.yarnpkg.com/chownr/-/chownr-1.1.4.tgz#6fc9d7b42d32a583596337666e7d08084da2cc6b" @@ -6099,16 +4275,6 @@ 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.9" - resolved "https://registry.yarnpkg.com/cids/-/cids-1.1.9.tgz#402c26db5c07059377bcd6fb82f2a24e7f2f4a4f" - integrity sha512-l11hWRfugIcbGuTZwAM5PwpjPPjyb6UZOGwlHSnOBV5o07XhQ4gNpBN67FbODvpjyHtd+0Xs6KNvUcGBiDRsdg== - dependencies: - multibase "^4.0.1" - multicodec "^3.0.1" - multihashes "^4.0.1" - uint8arrays "^3.0.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" @@ -6117,11 +4283,6 @@ 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== - class-is@^1.1.0: version "1.1.0" resolved "https://registry.yarnpkg.com/class-is/-/class-is-1.1.0.tgz#9d3c0fba0440d211d843cec3dedfa48055005825" @@ -6137,10 +4298,21 @@ class-utils@^0.3.5: isobject "^3.0.0" static-extend "^0.1.1" +classic-level@^1.2.0: + version "1.2.0" + resolved "https://registry.yarnpkg.com/classic-level/-/classic-level-1.2.0.tgz#2d52bdec8e7a27f534e67fdeb890abef3e643c27" + integrity sha512-qw5B31ANxSluWz9xBzklRWTUAJ1SXIdaVKTVS7HcTGKOAmExx65Wo5BUICW+YGORe2FOUaDghoI9ZDxj82QcFg== + dependencies: + abstract-level "^1.0.2" + catering "^2.1.0" + module-error "^1.0.1" + napi-macros "~2.0.0" + node-gyp-build "^4.3.0" + clean-css@^4.1.11: - version "4.2.3" - resolved "https://registry.yarnpkg.com/clean-css/-/clean-css-4.2.3.tgz#507b5de7d97b48ee53d84adb0160ff6216380f78" - integrity sha512-VcMWDN54ZN/DS+g58HYL5/n4Zrqe8vHJpGA8KdgUXFU4fuP/aHNw8eld9SyEIyabIMJX/0RaY/fplOo5hYLSFA== + version "4.2.4" + resolved "https://registry.yarnpkg.com/clean-css/-/clean-css-4.2.4.tgz#733bf46eba4e607c6891ea57c24a989356831178" + integrity sha512-EJUDT7nDVFDvaQgAo2G/PJvxmp1o/c6iXLbswsBbUFXi1Nr+AjA2cKmfbKDMjMvzEe75g3P6JkaDDAKk96A85A== dependencies: source-map "~0.6.0" @@ -6152,22 +4324,17 @@ clean-stack@^2.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= + integrity sha512-8lgKz8LmCRYZZQDpRyT2m5rKJ08TnU4tR9FFFW2rxpxR1FzWi4PQ/NfyODchAatHaUgnSPVcx/R5w6NuTBzFiw== dependencies: restore-cursor "^2.0.0" -cli-cursor@^3.0.0, cli-cursor@^3.1.0: +cli-cursor@^3.1.0: version "3.1.0" resolved "https://registry.yarnpkg.com/cli-cursor/-/cli-cursor-3.1.0.tgz#264305a7ae490d1d03bf0c9ba7c925d1753af307" integrity sha512-I/zHAwsKf9FqGoXM4WWRACob9+SNukZTd94DWF57E4toouRulbCxcUh6RKUEOQlYTHJnzkPMySvPNaaSLNfLZw== dependencies: restore-cursor "^3.1.0" -cli-spinners@^2.0.0: - version "2.6.1" - resolved "https://registry.yarnpkg.com/cli-spinners/-/cli-spinners-2.6.1.tgz#adc954ebe281c37a6319bfa401e6dd2488ffb70d" - integrity sha512-x/5fWmGMnbKQAaNwN+UZlV79qBLM9JFnJuJ03gIi5whrob0xV0ofNVHy9DhwGdsMJQc2OKv0oGmLzvaqvAVv+g== - cli-table-redemption@^1.0.0: version "1.0.1" resolved "https://registry.yarnpkg.com/cli-table-redemption/-/cli-table-redemption-1.0.1.tgz#0359d8c34df74980029d76dff071a05a127c4fdd" @@ -6186,9 +4353,9 @@ cli-table3@^0.5.0: colors "^1.1.2" cli-table3@^0.6.0: - version "0.6.2" - resolved "https://registry.yarnpkg.com/cli-table3/-/cli-table3-0.6.2.tgz#aaf5df9d8b5bf12634dc8b3040806a0c07120d2a" - integrity sha512-QyavHCaIC80cMivimWu4aWHilIpiDpfm3hGmqAmXVL1UsnbLuBSMd21hTX6VY4ZSDSM73ESLeF8TOYId3rBTbw== + version "0.6.3" + resolved "https://registry.yarnpkg.com/cli-table3/-/cli-table3-0.6.3.tgz#61ab765aac156b52f222954ffc607a6f01dbeeb2" + integrity sha512-w5Jac5SykAeZJKntOxJCrm63Eg5/4dhMWIcuTbo9rpE+brgaSZo0RuNJZeOyMgsUdhDeojvgyQLmjI+K50ZGyg== dependencies: string-width "^4.2.0" optionalDependencies: @@ -6218,7 +4385,7 @@ cli-width@^2.0.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= + integrity sha512-GIOYRizG+TGoc7Wgc1LiOTLare95R3mzKgoln+Q/lE4ceiYH19gUpl0l0Ffq4lJDEf3FxujMe6IBfOCs7pfqNA== dependencies: center-align "^0.1.1" right-align "^0.1.1" @@ -6227,7 +4394,7 @@ cliui@^2.1.0: cliui@^3.2.0: version "3.2.0" resolved "https://registry.yarnpkg.com/cliui/-/cliui-3.2.0.tgz#120601537a916d29940f934da3b48d585a39213d" - integrity sha1-EgYBU3qRbSmUD5NNo7SNWFo5IT0= + integrity sha512-0yayqDxWQbqk3ojkYqUKqaAQ6AfNKeKWRNA8kR0WXzAsdHpP4BIaOmMAG87JGuO6qcobyW4GjxHd9PmhEd+T9w== dependencies: string-width "^1.0.1" strip-ansi "^3.0.1" @@ -6242,61 +4409,48 @@ cliui@^5.0.0: strip-ansi "^5.2.0" wrap-ansi "^5.1.0" -cliui@^6.0.0: - version "6.0.0" - resolved "https://registry.yarnpkg.com/cliui/-/cliui-6.0.0.tgz#511d702c0c4e41ca156d7d0e96021f23e13225b1" - integrity sha512-t6wbgtoCXvAzst7QgXxJYqPt0usEfbgQdftEPbLL/cvv6HPE5VgvqCuAIDR0NgU52ds6rFwqrgakNLrHEjCbrQ== +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: string-width "^4.2.0" strip-ansi "^6.0.0" - wrap-ansi "^6.2.0" + wrap-ansi "^7.0.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= + integrity sha512-KLLTJWrvwIP+OPfMn0x2PheDEP20RPUcGXj/ERegTgdmPEZylALQldygiqrPPu8P45uNuPs7ckmReLY6v/iA5g== -clone-response@1.0.2, clone-response@^1.0.2: +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= + integrity sha512-yjLXh88P599UOyPTFX0POsd7WxnbsVsGohcwzHOLspIhhpalPw1BcqED8NblyZLKcGrL8dTgMlcaZxV2jAD41Q== dependencies: mimic-response "^1.0.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= - -clone@2.1.1: - version "2.1.1" - resolved "https://registry.yarnpkg.com/clone/-/clone-2.1.1.tgz#d217d1e961118e3ac9a4b8bba3285553bf647cdb" - integrity sha1-0hfR6WERjjrJpLi7oyhVU79kfNs= - -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= +clone-response@^1.0.2: + version "1.0.3" + resolved "https://registry.yarnpkg.com/clone-response/-/clone-response-1.0.3.tgz#af2032aa47816399cf5f0a1d0db902f517abb8c3" + integrity sha512-ROoL94jJH2dUVML2Y/5PEDNaSHgeOdSDicUyS7izcF63G6sTc/FTjLub4b8Il9S8S0beOfYt0TaA5qvFK+w0wA== + dependencies: + mimic-response "^1.0.0" clone@^2.0.0, clone@^2.1.1: version "2.1.2" resolved "https://registry.yarnpkg.com/clone/-/clone-2.1.2.tgz#1b7f4b9f591f1e8f83670401600345a02887435f" - integrity sha1-G39Ln1kfHo+DZwQBYANFoCiHQ18= - -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== + integrity sha512-3Pe/CF1Nn94hyhIYpjtiLhdCoEoz0DqQ+988E9gmeEdQZlojxnOb74wctFyuwWQHzqyf9X7C7MG8juUpqBJT8w== 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= + integrity sha512-RpAVKQA5T63xEj6/giIbUEtZwJ4UFIc3ZtvEkiaUERylqe8xb5IvqcgOurZLahv93CLKfxcw5YI+DZcUBRyLXA== collection-visit@^1.0.0: version "1.0.0" resolved "https://registry.yarnpkg.com/collection-visit/-/collection-visit-1.0.0.tgz#4bc0373c164bc3291b4d368c829cf1a80a59dca0" - integrity sha1-S8A3PBZLwykbTTaMgpzxqApZ3KA= + integrity sha512-lNkKvzEeMBBjUGHZ+q6z9pSJla0KWAQPvtzhEV9+iGyQYG+pBpl7xKDhxoNSOZH2hhv0v5k0y2yAM4o4SjoSkw== dependencies: map-visit "^1.0.0" object-visit "^1.0.0" @@ -6315,20 +4469,10 @@ color-convert@^2.0.1: 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= + integrity sha512-72fSenhMw2HZMTVHeCA9KCmpEIbzWiQsjN+BHcBbS9vr1mtt+vJjPdksIBNUmKAW8TFUDPJK5SUU3QhE9NEXDw== color-name@~1.1.4: version "1.1.4" @@ -6336,11 +4480,11 @@ color-name@~1.1.4: integrity sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA== colorette@^2.0.16: - version "2.0.16" - resolved "https://registry.yarnpkg.com/colorette/-/colorette-2.0.16.tgz#713b9af84fdb000139f04546bd4a93f62a5085da" - integrity sha512-hUewv7oMjCp+wkBv5Rm0v87eJhq4woh5rSR+42YSQJKecCqgIqNkZ6lAlQms/BwHPJA5NKMRlpxPRv0n8HQW6g== + version "2.0.19" + resolved "https://registry.yarnpkg.com/colorette/-/colorette-2.0.19.tgz#cdf044f47ad41a0f4b56b3a0d5b4e6e1a2d5a798" + integrity sha512-3tlv/dIP7FWvj3BsbHrGLJ6l/oKh1O3TcgBqMn+yyCagOxc23fyzDS6HypQbgxWbkpDnf52p1LuR4eWDQ/K9WQ== -colors@^1.1.2, colors@^1.4.0: +colors@1.4.0, 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== @@ -6372,7 +4516,7 @@ commander@3.0.2: resolved "https://registry.yarnpkg.com/commander/-/commander-3.0.2.tgz#6837c3fb677ad9933d1cfba42dd14d5117d6b39e" integrity sha512-Gar0ASD4BDyKC4hl4DwHqDrmvjoxWKZigVnAbn5H1owvm4CxCPdb0HQDehwNYMJpla5+M2tPmPARzhtYuwpHow== -commander@^2.15.0, commander@^2.20.3, commander@^2.8.1: +commander@^2.20.3, commander@^2.8.1: 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== @@ -6382,44 +4526,25 @@ commander@^4.0.1: resolved "https://registry.yarnpkg.com/commander/-/commander-4.1.1.tgz#9fd602bd936294e9e9ef46a3f4d6964044b18068" integrity sha512-NOKm8xhkzAjzFx8B2v5OAHT+u5pRQc2UCa2Vq9jYL/31o2wi9mxBA7LIFs3sV5VSC49z6pEhfbMULvShKj26WA== -commander@^8.3.0: - version "8.3.0" - resolved "https://registry.yarnpkg.com/commander/-/commander-8.3.0.tgz#4837ea1b2da67b9c616a67afbb0fafee567bca66" - integrity sha512-OkTL9umf+He2DZkUq8f8J9of7yL6RJKI24dVITBmNfZBmri9zYZQrKkuXiKhyfPSu8tUhnVBB1iKXevvnlR4Ww== +commander@^9.3.0: + version "9.4.0" + resolved "https://registry.yarnpkg.com/commander/-/commander-9.4.0.tgz#bc4a40918fefe52e22450c111ecd6b7acce6f11c" + integrity sha512-sRPT+umqkz90UA8M1yqYfnHlZA7fF6nSphDtxeywPZ49ysjxDQybzk13CL+mXekDRG92skbcqCLVovuCusNmFw== -compare-versions@^3.6.0: - version "3.6.0" - resolved "https://registry.yarnpkg.com/compare-versions/-/compare-versions-3.6.0.tgz#1a5689913685e5a87637b8d3ffca75514ec41d62" - integrity sha512-W6Af2Iw1z4CB7q4uU4hv646dW9GQuBM+YpC0UvUCWSD8w90SJjp+ujJuXaEMtAXBtSqGfMPuFOVn4/+FlaqfBA== - -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= +compare-versions@^5.0.0: + version "5.0.1" + resolved "https://registry.yarnpkg.com/compare-versions/-/compare-versions-5.0.1.tgz#14c6008436d994c3787aba38d4087fabe858555e" + integrity sha512-v8Au3l0b+Nwkp4G142JcgJFh1/TUhdxut7wzD1Nq1dyp5oa3tXaqb03EXOAB6jS4gMlalkjAUPZBMiAfKUixHQ== component-emitter@^1.2.1: 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" + integrity sha512-/Srv4dswyQNBfohGpz9o6Yb3Gz3SrUDqBH5rTuhGR7ahtlbYKnVxw2bCFMRljaA7EXHaXZ8wsHdodFvbkhKmqg== concat-stream@^1.6.0, concat-stream@^1.6.2: version "1.6.2" @@ -6431,10 +4556,10 @@ concat-stream@^1.6.0, concat-stream@^1.6.2: readable-stream "^2.2.2" typedarray "^0.0.6" -conf@^10.0.2: - version "10.0.3" - resolved "https://registry.yarnpkg.com/conf/-/conf-10.0.3.tgz#af266186cc754daefd2749398861ec538c50da17" - integrity sha512-4gtQ/Q36qVxBzMe6B7gWOAfni1VdhuHkIzxydHkclnwGmgN+eW4bb6jj73vigCfr7d3WlmqawvhZrpCUCTPYxQ== +conf@^10.1.2: + version "10.2.0" + resolved "https://registry.yarnpkg.com/conf/-/conf-10.2.0.tgz#838e757be963f1a2386dfe048a98f8f69f7b55d6" + integrity sha512-8fLl9F04EJqjSqH+QjITQfJF8BrOVaYr1jewVgSRAEWePfxT0sku4w2hrGQ60BC/TNLGQ2pgxNlTbWQmMPFvXg== dependencies: ajv "^8.6.3" ajv-formats "^2.1.1" @@ -6455,20 +4580,15 @@ config-chain@^1.1.11: ini "^1.3.4" proto-list "~1.2.1" -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" - integrity sha1-PXz0Rk22RG6mRL9LOVB/mFEAjo4= + integrity sha512-ty/fTekppD2fIwRvnZAVdeOiGd1c7YXEixbgJTNzqcxJWKQnjJ/V1bNEEE6hygpM3WjwHFUVK6HTjWSzV4a8sQ== 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= + integrity sha512-eS0N9WwmjTqrOmR3o83F5vW8Z+9R1HnVz3xmzT2PMFug9ly+Au/fxRWlEBSb6LcZwspSsEn9Xs1uw9YgzAg1EQ== dependencies: snake-case "^2.1.0" upper-case "^1.1.1" @@ -6483,17 +4603,12 @@ constantinople@^3.0.1, constantinople@^3.1.2: babel-types "^6.26.0" babylon "^6.18.0" -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, content-disposition@^0.5.2: - version "0.5.3" - resolved "https://registry.yarnpkg.com/content-disposition/-/content-disposition-0.5.3.tgz#e130caf7e7279087c5616c2007d0485698984fbd" - integrity sha512-ExO0774ikEObIAEV9kDo50o+79VCUdEB6n6lzKgGwupcVeRlhrj3qGAfwq8G6uBJjkqLrhT0qEYFcWng8z1z0g== +content-disposition@0.5.4, content-disposition@^0.5.2: + version "0.5.4" + resolved "https://registry.yarnpkg.com/content-disposition/-/content-disposition-0.5.4.tgz#8b82b4efac82512a02bb0b1dcec9d2c5e8eb5bfe" + integrity sha512-FveZTNuGw04cxlAiWbzi6zTAL/lhehaWbTtgluJh4/E95DqMwTmha3KZN1aAWA8cFIhHzMZUvLevkw5Rqk+tSQ== dependencies: - safe-buffer "5.1.2" + safe-buffer "5.2.1" content-hash@^2.5.2: version "2.5.2" @@ -6517,7 +4632,7 @@ continuation-local-storage@^3.1.4: async-listener "^0.6.0" emitter-listener "^1.1.1" -convert-source-map@1.X, convert-source-map@^1.1.0, convert-source-map@^1.5.1, convert-source-map@^1.7.0: +convert-source-map@^1.1.0, convert-source-map@^1.5.1: version "1.8.0" resolved "https://registry.yarnpkg.com/convert-source-map/-/convert-source-map-1.8.0.tgz#f3373c32d21b4d780dd8004514684fb791ca4369" integrity sha512-+OQdjP49zViI/6i7nIJpA8rAl4sV/JdPfU9nZs3VqOwGIgizICvuN2ru6fMd+4llL0tar18UYJXfZ/TWtmhUjA== @@ -6527,17 +4642,17 @@ convert-source-map@1.X, convert-source-map@^1.1.0, convert-source-map@^1.5.1, co 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= + integrity sha512-QADzlaHc8icV8I7vbaJXJwod9HWYp8uCqf1xa4OfNu1T7JVxQIrUgOWtHdNDtPiywmFbiS12VjotIXLrKM3orQ== -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== +cookie@0.5.0: + version "0.5.0" + resolved "https://registry.yarnpkg.com/cookie/-/cookie-0.5.0.tgz#d1f5d71adec6558c58f389987c366aa47e994f8b" + integrity sha512-YZ3GUyn/o8gfKJlnlX7g7xq4gyO6OSuhGPKaaGssGB2qgDUS0gPgtTvoyZLTt9Ab6dC4hfc9dV5arkvc/OCmrw== 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== + version "0.4.2" + resolved "https://registry.yarnpkg.com/cookie/-/cookie-0.4.2.tgz#0e41f24de5ecf317947c82fc789e06a884824432" + integrity sha512-aSWTXFzaKWkvHO1Ny/s+ePFpvKsPnjc551iI41v3ny/ow6tBG5Vd+FuqGNhh1LxOmVzOlGUriIlOaokOvhaStA== cookiejar@^2.1.1: version "2.1.3" @@ -6547,35 +4662,29 @@ cookiejar@^2.1.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= + integrity sha512-XgZ0pFcakEUlbwQEVNg3+QAis1FyTL3Qel9FYy8pSkQqoG3PNoT0bOCQtOXcOkur21r2Eq2kI+IE+gsmAEVlYw== -core-js-compat@^3.18.0: - version "3.19.1" - resolved "https://registry.yarnpkg.com/core-js-compat/-/core-js-compat-3.19.1.tgz#fe598f1a9bf37310d77c3813968e9f7c7bb99476" - integrity sha512-Q/VJ7jAF/y68+aUsQJ/afPOewdsGkDtcMb40J8MbuWKlK3Y+wtHq8bTHKPj2WKWLIqmS5JhHs4CzHtz6pT2W6g== +core-js-compat@^3.25.1: + version "3.25.2" + resolved "https://registry.yarnpkg.com/core-js-compat/-/core-js-compat-3.25.2.tgz#7875573586809909c69e03ef310810c1969ee138" + integrity sha512-TxfyECD4smdn3/CjWxczVtJqVLEEC2up7/82t7vC0AzNogr+4nQ8vyF7abxAuTXWvjTClSbvGhU0RgqA4ToQaQ== dependencies: - browserslist "^4.17.6" - semver "7.0.0" + browserslist "^4.21.4" -core-js-pure@^3.0.1, core-js-pure@^3.10.2: - version "3.18.2" - resolved "https://registry.yarnpkg.com/core-js-pure/-/core-js-pure-3.18.2.tgz#d8cc11d4885ea919f3de776d45e720e4c769d406" - integrity sha512-4hMMLUlZhKJKOWbbGD1/VDUxGPEhEoN/T01k7bx271WiBKCvCfkgPzy0IeRS4PB50p6/N1q/SZL4B/TRsTE5bA== +core-js-pure@^3.0.1: + version "3.25.2" + resolved "https://registry.yarnpkg.com/core-js-pure/-/core-js-pure-3.25.2.tgz#44a4fd873bdd4fecf6ca11512bcefedbe87e744a" + integrity sha512-ItD7YpW1cUB4jaqFLZXe1AXkyqIxz6GqPnsDV4uF4hVcWh/WAGIqSqw5p0/WdsILM0Xht9s3Koyw05R3K6RtiA== core-js@^2.4.0, core-js@^2.5.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.2.1: - version "3.18.2" - resolved "https://registry.yarnpkg.com/core-js/-/core-js-3.18.2.tgz#63a551e8a29f305cd4123754846e65896619ba5b" - integrity sha512-zNhPOUoSgoizoSQFdX1MeZO16ORRb9FFQLts8gSYbZU5FcgXhp24iMWMxnOQo5uIaIG7/6FA/IqJPwev1o9ZXQ== - core-util-is@1.0.2: version "1.0.2" resolved "https://registry.yarnpkg.com/core-util-is/-/core-util-is-1.0.2.tgz#b5fd54220aa2bc5ab57aab7140c940754503c1a7" - integrity sha1-tf1UIgqivFq1eqtxQMlAdUUDwac= + integrity sha512-3lqz5YjWTYnW6dlDa5TLaTCcShfar1e40rmcJVwCBJC6mWlFuj0eCHIElmG1g5kyuJ/GD+8Wn4FFCcz4gJPfaQ== core-util-is@~1.0.0: version "1.0.3" @@ -6601,12 +4710,9 @@ cosmiconfig@^5.0.7: parse-json "^4.0.0" 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" + version "1.2.2" + resolved "https://registry.yarnpkg.com/crc-32/-/crc-32-1.2.2.tgz#3cad35a934b8bf71f25ca524b6da51fb7eace2ff" + integrity sha512-ROmzCKrTnOwybPcJApAA6WBWij23HVfGVNKqqrZpuyZOHqK2CwHSvpGuyt/UNNvaIjEd8X5IFGp4Mh+Ie1IHJQ== create-ecdh@^4.0.0: version "4.0.4" @@ -6640,49 +4746,33 @@ create-hmac@^1.1.0, create-hmac@^1.1.4, create-hmac@^1.1.7: sha.js "^2.4.8" cron@^1.3: - version "1.8.2" - resolved "https://registry.yarnpkg.com/cron/-/cron-1.8.2.tgz#4ac5e3c55ba8c163d84f3407bde94632da8370ce" - integrity sha512-Gk2c4y6xKEO8FSAUTklqtfSr7oTq0CiPQeLBG5Fl0qoXpZyMcj1SG59YL+hqq04bu6/IuEA7lMkYDAplQNKkyg== + version "1.8.3" + resolved "https://registry.yarnpkg.com/cron/-/cron-1.8.3.tgz#2a61d7b15848716885834ec56ac072f4b9744ebd" + integrity sha512-JYR/QZFklJCIPndBLfd/2nU1nSlCMrUdtQ2mGLXSVM/qqqEK7DOrFR0gsEiyeqs0PdWrs0ve1ggH4V7XksDwXg== dependencies: - moment-timezone "^0.5.x" + luxon "^1.23.x" cross-conf-env@^1.1.2: - version "1.2.1" - resolved "https://registry.yarnpkg.com/cross-conf-env/-/cross-conf-env-1.2.1.tgz#03f2dd9eee326f7a6a5890cbcda2de5071ce047a" - integrity sha512-hFskzboUXdGGCmezF324K/34tFIe1dPV/AUgwuFQFtQva5lYZo7QtV2Ot2zo6biPBfccdH0AyMT6FOj1LpsvTQ== + version "1.3.0" + resolved "https://registry.yarnpkg.com/cross-conf-env/-/cross-conf-env-1.3.0.tgz#e41fe1ad79c8cf6b581f95762256e537ad95045b" + integrity sha512-ZVgwin28C6FTzsNxGIzg1Tt4gDNXgm/4ZZRUV3vrcUsLJHZG2aGINMWuEPZhdzsvtq/Vr5qNNobCryeLPSBwoA== dependencies: cross-spawn "^7.0.3" -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.1.4, cross-fetch@^3.0.4: - version "3.1.4" - resolved "https://registry.yarnpkg.com/cross-fetch/-/cross-fetch-3.1.4.tgz#9723f3a3a247bf8b89039f3a380a9244e8fa2f39" - integrity sha512-1eAtFWdIubi6T4XPy6ei9iUFoKpUkIF971QLN8lIvvvwueI65+Nw5haMNKUwfJxabqlIIDODJKGrQ66gxC0PbQ== - dependencies: - node-fetch "2.6.1" - cross-fetch@^2.1.0, cross-fetch@^2.1.1: - version "2.2.5" - resolved "https://registry.yarnpkg.com/cross-fetch/-/cross-fetch-2.2.5.tgz#afaf5729f3b6c78d89c9296115c9f142541a5705" - integrity sha512-xqYAhQb4NhCJSRym03dwxpP1bYXpK3y7UN83Bo2WFi3x1Zmzn0SL/6xGoPr+gpt4WmNrgCCX3HPysvOwFOW36w== + version "2.2.6" + resolved "https://registry.yarnpkg.com/cross-fetch/-/cross-fetch-2.2.6.tgz#2ef0bb39a24ac034787965c457368a28730e220a" + integrity sha512-9JZz+vXCmfKUZ68zAptS7k4Nu8e2qcibe7WVZYps7sAgk5R8GYTc+T1WR0v1rlP9HxgARmOX1UTIJZFytajpNA== dependencies: - node-fetch "2.6.1" - whatwg-fetch "2.0.4" + node-fetch "^2.6.7" + whatwg-fetch "^2.0.4" -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= +cross-fetch@^3.1.4: + version "3.1.5" + resolved "https://registry.yarnpkg.com/cross-fetch/-/cross-fetch-3.1.5.tgz#e1389f44d9e7ba767907f7af8454787952ab534f" + integrity sha512-lvb1SBsI0Z7GDwmuid+mU3kWVBwTVUbe7S0H52yaaAdQOXq2YktTCZdlAcNKFzE6QtRz0snpw9bNiPeOIkkQvw== dependencies: - lru-cache "^4.0.1" - shebang-command "^1.2.0" - which "^1.2.9" + node-fetch "2.6.7" cross-spawn@^6.0.0, cross-spawn@^6.0.5: version "6.0.5" @@ -6707,7 +4797,7 @@ cross-spawn@^7.0.3: "crypt@>= 0.0.1": version "0.0.2" resolved "https://registry.yarnpkg.com/crypt/-/crypt-0.0.2.tgz#88d7ff7ec0dfb86f713dc87bbb42d044d3e6c41b" - integrity sha1-iNf/fsDfuG9xPch7u0LQRNPmxBs= + integrity sha512-mCxBlsHFYh9C+HVpiEacem8FEBnMXgU9gy4zmNC+SXAZNB/1idgp/aulFJ4FgCi7GPEVbfyng092GqL2k2rmow== crypto-addr-codec@^0.1.7: version "0.1.7" @@ -6722,7 +4812,7 @@ crypto-addr-codec@^0.1.7: safe-buffer "^5.2.0" sha3 "^2.1.1" -crypto-browserify@3.12.0, crypto-browserify@^3.11.0: +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== @@ -6739,63 +4829,26 @@ crypto-browserify@3.12.0, crypto-browserify@^3.11.0: randombytes "^2.0.0" randomfill "^1.0.3" -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== +css-select@^5.1.0: + version "5.1.0" + resolved "https://registry.yarnpkg.com/css-select/-/css-select-5.1.0.tgz#b8ebd6554c3637ccc76688804ad3f6a6fdaea8a6" + integrity sha512-nwoRF1rvRRnnCqqY7updORDsuqKzqYJ28+oSMaJMMgOauh3fvwHqMS7EZpIPqK8GL+g9mKxF1vP/ZjSeNjEVHg== 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-what "^6.1.0" + domhandler "^5.0.2" + domutils "^3.0.1" + nth-check "^2.0.1" -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" +css-what@^6.1.0: + version "6.1.0" + resolved "https://registry.yarnpkg.com/css-what/-/css-what-6.1.0.tgz#fb5effcf76f1ddea2c81bdfaa4de44e79bac70f4" + integrity sha512-HTUrgRJ7r4dsZKU6GjmpfRK1O76h97Z8MfS1G0FozR+oF2kG6Vfe8JE6zwrkbxigziPHinCJ+gCPjA9EaBDtRw== 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" + integrity sha512-FAaLDaplstoRsDR8XGYH51znUN0UY7nMc6Z9/fvE8EXGwvJE9hu7W2vHwx1+bd6gCYnln9nLbzxFTrcO9YQDZw== d@1, d@^1.0.1: version "1.0.1" @@ -6816,19 +4869,19 @@ dag-jose@^1.0.0: 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= + integrity sha512-jRFi8UDGo6j+odZiEpjazZaWqEal3w/basFjQHQEwVtZJGDpxbH1MeYluwCS8Xq5wmLJooDlMgvVarmWfGM44g== 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== +dataloader@2.1.0: + version "2.1.0" + resolved "https://registry.yarnpkg.com/dataloader/-/dataloader-2.1.0.tgz#c69c538235e85e7ac6c6c444bae8ecabf5de9df7" + integrity sha512-qTcEYLen3r7ojZNgVUaRggOI+KM7jrKxXeSHhogh/TWxYMeONEMqY+hmkobiYQozsGIyg9OYVzO4ZIfoB4I0pQ== datastore-core@^7.0.0: - version "7.0.1" - resolved "https://registry.yarnpkg.com/datastore-core/-/datastore-core-7.0.1.tgz#f50f30bb55474a569118d41bba6052896b096aec" - integrity sha512-TrV0PRtwwDo2OfzYpnVQmVgDc4HwtpYkzb6da5GZxKElZN7eDT5mBtrkVbXbyTn+Y2+WPiMBm6/KbJD7p0TBfA== + version "7.0.3" + resolved "https://registry.yarnpkg.com/datastore-core/-/datastore-core-7.0.3.tgz#af04689432110435b863f069adc8b109396967eb" + integrity sha512-DmPsUux63daOfCszxLkcp6LjdJ0k/BQNhIMtoAi5mbraYQnEQkFtKORmTu6XmDX6ujbtaBkeuJAiCBNI7MZklw== dependencies: debug "^4.1.1" err-code "^3.0.1" @@ -6882,7 +4935,7 @@ datastore-pubsub@^2.0.0: death@^1.1.0: version "1.1.0" resolved "https://registry.yarnpkg.com/death/-/death-1.1.0.tgz#01aa9c401edd92750514470b8266390c66c67318" - integrity sha1-AaqcQB7dknUFFEcLgmY5DGbGcxg= + integrity sha512-vsV6S4KVHvTGxbEcij7hkWRv0It+sGGWVOM67dQde/o5Xjnr+KmLjxWJii2uEObIrt1CcM9w0Yaovx+iOlIL+w== debounce-fn@^4.0.0: version "4.0.0" @@ -6891,16 +4944,7 @@ debounce-fn@^4.0.0: dependencies: mimic-fn "^3.0.0" -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.3, debug@^2.6.8, debug@^2.6.9: +debug@2.6.9, debug@^2.2.0, debug@^2.3.3, debug@^2.6.3, debug@^2.6.8, debug@^2.6.9: version "2.6.9" resolved "https://registry.yarnpkg.com/debug/-/debug-2.6.9.tgz#5d128515df134ff327e90a4c93f4e077a536341f" integrity sha512-bC7ElrdJaJnPbAP+1EotYvqZsb3ecl5wi6Bfi6BJTUcNowp6cvspg0jXznRTKDjm/E7AdgFBVeAPVMNcKGsHMA== @@ -6921,19 +4965,19 @@ debug@3.2.6: dependencies: ms "^2.1.1" -debug@4, debug@^4.0.1, debug@^4.1.0, debug@^4.1.1, debug@^4.3.1: - version "4.3.2" - resolved "https://registry.yarnpkg.com/debug/-/debug-4.3.2.tgz#f0a49c18ac8779e31d4a0c6029dfb76873c7428b" - integrity sha512-mOp8wKcvj7XxC78zLgw/ZA+6TSgkoE2C/ienthhRD298T7UNwAg9diBpLRxC0mOezLl4B0xV7M0cCO6P/O0Xhw== +debug@4, debug@4.3.4, debug@^4.0.1, debug@^4.1.0, debug@^4.1.1, debug@^4.2.0, debug@^4.3.0, debug@^4.3.1, debug@^4.3.3, debug@^4.3.4, debug@~4.3.1, debug@~4.3.2: + version "4.3.4" + resolved "https://registry.yarnpkg.com/debug/-/debug-4.3.4.tgz#1319f6579357f2338d3337d2cdd4914bb5dcc865" + integrity sha512-PRWFHuSU3eDtQJPvnNY7Jcket1j0t5OuOsFzPPzsekD52Zl8qUfFIPEiswXqIvHWGVHOgX+7G/vCNNhehwxfkQ== dependencies: ms "2.1.2" -debug@4.1.1: - version "4.1.1" - resolved "https://registry.yarnpkg.com/debug/-/debug-4.1.1.tgz#3b72260255109c6b589cee050f1d516139664791" - integrity sha512-pYAIzeRo8J6KPEaJ0VWOh5Pzkbw/RetuzehGM7QRRX5he4fPHx2rdKMB256ehJCkX+XRQm16eZLqLNS8RSZXZw== +debug@4.3.3: + version "4.3.3" + resolved "https://registry.yarnpkg.com/debug/-/debug-4.3.3.tgz#04266e0b70a98d4462e6e288e38259213332b664" + integrity sha512-/zxw5+vh1Tfv+4Qn7a5nsbcJKPaSvCDhojn6FEl9vupwK2VCSDtEiEtqr8DFtzYFOdz63LBkxec7DYuc2jon6Q== dependencies: - ms "^2.1.1" + ms "2.1.2" debug@^3, debug@^3.0, debug@^3.1.0, debug@^3.2.6, debug@^3.2.7: version "3.2.7" @@ -6942,30 +4986,35 @@ debug@^3, debug@^3.0, debug@^3.1.0, debug@^3.2.6, debug@^3.2.7: dependencies: ms "^2.1.1" -debug@^4.2.0, debug@^4.3.0, debug@^4.3.3, debug@~4.3.1, debug@~4.3.2: - version "4.3.3" - resolved "https://registry.yarnpkg.com/debug/-/debug-4.3.3.tgz#04266e0b70a98d4462e6e288e38259213332b664" - integrity sha512-/zxw5+vh1Tfv+4Qn7a5nsbcJKPaSvCDhojn6FEl9vupwK2VCSDtEiEtqr8DFtzYFOdz63LBkxec7DYuc2jon6Q== - 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= + integrity sha512-z2S+W9X73hAUUki+N+9Za2lBlun89zigOyGrsax+KUQ6wKW4ZoWpEYBkGhQjwAjjDCkWxhY0VKEhk8wzY7F5cA== + +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== 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= + integrity sha512-hjf+xovcEn31w/EUYdTXQh/8smFL/dzYjohQGEIgjyNavaJfBY2p5F527Bo1VPATxv0VYTUC2bOcXvqFwk78Og== 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= + integrity sha512-BzRPQuY1ip+qDonAOz42gRm/pg9F768C+npV/4JOsxRC2sq+Rlk+Q4ZCAsOhnIaMrgarILY+RMUIvMmmX1qAEA== dependencies: mimic-response "^1.0.0" +decompress-response@^6.0.0: + version "6.0.0" + resolved "https://registry.yarnpkg.com/decompress-response/-/decompress-response-6.0.0.tgz#ca387612ddb7e104bd16d85aab00d5ecf09c66fc" + integrity sha512-aW35yZM6Bb/4oJlZncMH2LCoZtJXTRxES17vE3hoRiowU2kWHaJKFkSBDnDR+cm9J+9QhXmREyIfv0pji9ejCQ== + dependencies: + mimic-response "^3.1.0" + 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" @@ -6998,7 +5047,7 @@ decompress-targz@^4.0.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= + integrity sha512-1fqeluvxgnn86MOh66u8FjbtJpAFv5wgCT9Iw8rcBqQcCo5tO8eiJw7NNTrvt9n4CRBVq7CstiS922oPgyGLrw== dependencies: file-type "^3.8.0" get-stream "^2.2.0" @@ -7019,13 +5068,6 @@ decompress@^4.0.0, decompress@^4.2.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" @@ -7065,22 +5107,20 @@ default-gateway@^6.0.2: default-options@^1.0.0: version "1.0.0" resolved "https://registry.yarnpkg.com/default-options/-/default-options-1.0.0.tgz#6624665a9ac0d09882af74e6e44cb1dac58cab2a" - integrity sha1-ZiRmWprA0JiCr3Tm5Eyx2sWMqyo= + integrity sha512-P/F/EM9s2cnEloZ/b6WEfVCYJztXLU6MoRdhsCp94Vl1NI4hFLRepAgNk2r09nLgxMY6+QW3CN3ftFTENdE7XA== dependencies: lodash "^4.0.0" -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== +defer-to-connect@^2.0.0, defer-to-connect@^2.0.1: + version "2.0.1" + resolved "https://registry.yarnpkg.com/defer-to-connect/-/defer-to-connect-2.0.1.tgz#8016bdb4143e4632b77a3449c6236277de520587" + integrity sha512-4tvttepXG1VaYGrRibk5EwJd1t4udunSOVMdLSAL6mId1ix438oPwPZMALY41FCijukO1L0twNcGsdzS7dHgDg== + deferred-leveldown@^7.0.0: version "7.0.0" resolved "https://registry.yarnpkg.com/deferred-leveldown/-/deferred-leveldown-7.0.0.tgz#39802715fda6ec06d0159a8b28bd1c7e2b1cf0bf" @@ -7104,14 +5144,6 @@ deferred-leveldown@~4.0.0: abstract-leveldown "~5.0.0" inherits "^2.0.3" -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" @@ -7120,24 +5152,25 @@ deferred-leveldown@~5.3.0: 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== +define-properties@^1.1.2, define-properties@^1.1.3, define-properties@^1.1.4: + version "1.1.4" + resolved "https://registry.yarnpkg.com/define-properties/-/define-properties-1.1.4.tgz#0b14d7bd7fbeb2f3572c3a7eda80ea5d57fb05b1" + integrity sha512-uckOqKcfaVvtBdsVkdPv3XjveQJsNQqmhXgRi8uhvWWuPYZCNlzT8qAyblUgNoXdHdjMTzAqeGjAoli8f+bzPA== dependencies: - object-keys "^1.0.12" + has-property-descriptors "^1.0.0" + object-keys "^1.1.1" 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= + integrity sha512-Rr7ADjQZenceVOAKop6ALkkRAmH1A4Gx9hV/7ZujPUN2rkATqFO0JZLZInbAjpZYoJ1gUx8MRMQVkYemcbMSTA== 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= + integrity sha512-cZTYKFWspt9jZsMscWo8sc/5lbPC9Q0N5nBLgb+Yd915iL3udB1uFgS3B8YCx66UVHq018DAVFoee7x+gxggeA== dependencies: is-descriptor "^1.0.0" @@ -7157,32 +5190,22 @@ delay@^5.0.0: 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= + integrity sha512-ZySD7Nf91aLB0RxL4KGrKHBXl7Eds1DAmEdcoVawXnLD7SDhpNgtuII2aAkg7a7QS41jxPSZ17p4VdGnMHk3MQ== 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= + integrity sha512-bd2L678uiWATM6m5Z1VzNCErI3jiGzt6HGY8OVICs40JQq/HALfbyNJmp0UDakEY4pMMaN0Ly5om/B1VI/+xfQ== denque@^1.5.0: version "1.5.1" resolved "https://registry.yarnpkg.com/denque/-/denque-1.5.1.tgz#07f670e29c9a78f8faecb2566a1e2c11929c5cbf" integrity sha512-XwE+iZ4D6ZUB7mfYRMb5wByE8L74HCn30FBN7sWnXksWc1LO1bPDl67pBR9o/kC4z/xSNAwkMYcGgqDV3BE3Hw== -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= +depd@2.0.0: + version "2.0.0" + resolved "https://registry.yarnpkg.com/depd/-/depd-2.0.0.tgz#b696163cc757560d09cf22cc8fad1571b79e76df" + integrity sha512-g7nH6P6dyDioJogAAGprGpCtVImJhpPk/roCzdb3fIh61/s/nPsfR6onyMwkCAR/OlC3yBC0lESvUoQEAssIrw== des.js@^1.0.0: version "1.0.1" @@ -7192,64 +5215,45 @@ des.js@^1.0.0: 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= +destroy@1.2.0: + version "1.2.0" + resolved "https://registry.yarnpkg.com/destroy/-/destroy-1.2.0.tgz#4803735509ad8be552934c67df614f94e66fa015" + integrity sha512-2sJGJTaXIIaR1w4iJSNoN0hnMY7Gpc/n8D4qSCJw8QqFWXf7cuAgnEHxBpweaVcPevC2l3KpjYCx3NypQQgaJg== detect-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= + integrity sha512-BDKtmHlOzwI7iRuEkhzsnPoi5ypEhWAJB5RvHWe1kMr06js3uK5B3734i3ui5Yd+wOJV1cpE4JnivPD283GU/A== 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" + integrity sha512-rlpvsxUtM0PQvy9iZe640/IWwWYyBsTApREbA1pHOpmOUIl9MkP/U4z7vTtg4Oaojvqhxt7sdufnT0EzGaR31g== 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= + integrity sha512-pGjwhsmsp4kL2RTz08wcOlGN83otlqHeD/Z5T8GXZB+/YcpQ/dgo+lbU8ZsGxV0HIvqqxo9l7mqYwyYMD9bKDg== 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== + version "1.5.0" + resolved "https://registry.yarnpkg.com/detect-port/-/detect-port-1.5.0.tgz#e40d67a0e93b464cbb7dda1e27a6edddd258d2a6" + integrity sha512-XA/tO5uCPYgRO8jWazmM/yaJQtqpya6x3Tm0iQVuKSRq6/dNB0TcoegMSGQWSl8AjFZNJPBBvnz7u12edNAwEQ== 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" + debug "4" 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: - version "4.0.2" - resolved "https://registry.yarnpkg.com/diff/-/diff-4.0.2.tgz#60f3aecb89d5fae520c11aa19efc2bb982aade7d" - integrity sha512-58lmxKSA4BNyLz+HHMUzlOEpg09FV+ev6ZMe3vJihgdxzgcwZ8VoEEPmALCZG9LmqfVoNMMKpttIYTVG6uDY7A== +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== diffie-hellman@^5.0.0: version "5.0.3" @@ -7272,7 +5276,7 @@ dlv@^1.1.3: resolved "https://registry.yarnpkg.com/dlv/-/dlv-1.1.3.tgz#5c198a8a11453596e751494d49874bc7732f2e79" integrity sha512-+HlytyjlPKnIG8XuRG8WvmBP8xs8P71y+SKKS6ZXWoEgLuePxtDoUEiH7WkdePWrQ5JBpE6aoVqfZfJUQkjXwA== -dns-over-http-resolver@^1.0.0, dns-over-http-resolver@^1.2.3: +dns-over-http-resolver@^1.2.3: 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== @@ -7282,9 +5286,9 @@ dns-over-http-resolver@^1.0.0, dns-over-http-resolver@^1.2.3: receptacle "^1.3.2" dns-packet@^5.2.2: - version "5.3.1" - resolved "https://registry.yarnpkg.com/dns-packet/-/dns-packet-5.3.1.tgz#eb94413789daec0f0ebe2fcc230bdc9d7c91b43d" - integrity sha512-spBwIj0TK0Ey3666GwIdWVfUpLyubpU53BTCu8iPn4r4oXd9O14Hjg3EHw3ts2oed77/SeckunUYCyRlSngqHw== + version "5.4.0" + resolved "https://registry.yarnpkg.com/dns-packet/-/dns-packet-5.4.0.tgz#1f88477cf9f27e78a213fb6d118ae38e759a879b" + integrity sha512-EgqGeaBB8hLiHLZtp/IbaDQTL8pZ0+IvwzSHA6d7VyMDM+B9hgddEMa9xjK5oYnw0ci0JQ6g2XCD7/f6cafU6g== dependencies: "@leichtgewicht/ip-codec" "^2.0.1" @@ -7305,103 +5309,47 @@ doctrine@^3.0.0: doctypes@^1.1.0: version "1.1.0" resolved "https://registry.yarnpkg.com/doctypes/-/doctypes-1.1.0.tgz#ea80b106a87538774e8a3a4a5afe293de489e0a9" - integrity sha1-6oCxBqh1OHdOijpKWv4pPeSJ4Kk= - -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" + integrity sha512-LLBi6pEqS6Do3EKQ3J0NqHWV5hhb78Pi8vvESYwyOy2c31ZEZVdtitdzsQsKb7878PEERhzUk0ftqGhG6Mz+pQ== -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== +dom-serializer@^2.0.0: + version "2.0.0" + resolved "https://registry.yarnpkg.com/dom-serializer/-/dom-serializer-2.0.0.tgz#e41b802e1eedf9f6cae183ce5e622d789d7d8e53" + integrity sha512-wIkAryiqt/nV5EQKqQpo3SToSOV9J0DnbJqwK7Wv/Trc92zIAYZ4FlMu+JPFW1DfGFt81ZTCGgDEabffXeLyJg== dependencies: - domelementtype "^1.3.0" - entities "^1.1.1" + domelementtype "^2.3.0" + domhandler "^5.0.2" + entities "^4.2.0" dom-walk@^0.1.0: version "0.1.2" resolved "https://registry.yarnpkg.com/dom-walk/-/dom-walk-0.1.2.tgz#0c548bef048f4d1f2a97249002236060daa3fd84" integrity sha512-6QvTW9mrGeIegrFXdtQi9pk7O/nSK6lSdXW2eqUspN5LWD7UTji2Fqw5V2YLjBpHEoU9Xl/eUWNpDeZvoyOv2w== -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, 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: +domelementtype@^2.3.0: 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.2" - resolved "https://registry.yarnpkg.com/domhandler/-/domhandler-4.2.2.tgz#e825d721d19a86b8c201a35264e226c678ee755f" - integrity sha512-PzE9aBMsdZO8TK4BnuJwH0QT41wgMbRzuZrHUcpYncEjmQazq8QEaBWgLG7ZyC/DAZKEgglpIA6j4Qn/HmxS3w== - 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" + resolved "https://registry.yarnpkg.com/domelementtype/-/domelementtype-2.3.0.tgz#5c45e8e869952626331d7aab326d01daf65d589d" + integrity sha512-OLETBj6w0OsagBwdXnPdN0cnMfF9opN69co+7ZrbfPGrdpPVNBUj02spi6B1N7wChLQiPn4CSH/zJvXw56gmHw== -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== +domhandler@^5.0.1, domhandler@^5.0.2, domhandler@^5.0.3: + version "5.0.3" + resolved "https://registry.yarnpkg.com/domhandler/-/domhandler-5.0.3.tgz#cc385f7f751f1d1fc650c21374804254538c7d31" + integrity sha512-cgwlv/1iFQiFnU96XXgROh8xTeetsnJiDsTc7TYCLFd9+/WNkIqPTxiM/8pSd8VIrhXGTf1Ny1q1hquVqDJB5w== dependencies: - dom-serializer "0" - domelementtype "1" + domelementtype "^2.3.0" -domutils@^2.5.2, domutils@^2.6.0, domutils@^2.7.0: - version "2.8.0" - resolved "https://registry.yarnpkg.com/domutils/-/domutils-2.8.0.tgz#4437def5db6e2d1f5d6ee859bd95ca7d02048135" - integrity sha512-w96Cjofp72M5IIhpjgobBimYEfoPjx1Vx0BSX9P30WBdZW2WIKU0T1Bd0kz2eNZ9ikjKgHbEyKx8BB6H1L3h3A== +domutils@^3.0.1: + version "3.0.1" + resolved "https://registry.yarnpkg.com/domutils/-/domutils-3.0.1.tgz#696b3875238338cb186b6c0612bd4901c89a4f1c" + integrity sha512-z08c1l761iKhDFtfXO04C7kTdPBLi41zwOZl00WS8b5eiaebNpY00HKbztwBq+e3vyqWNwWF3mP9YLUeqIrF+Q== dependencies: - dom-serializer "^1.0.1" - domelementtype "^2.2.0" - domhandler "^4.2.0" + dom-serializer "^2.0.0" + domelementtype "^2.3.0" + domhandler "^5.0.1" dot-case@^2.1.0: version "2.1.1" resolved "https://registry.yarnpkg.com/dot-case/-/dot-case-2.1.1.tgz#34dcf37f50a8e93c2b3bca8bb7fb9155c7da3bee" - integrity sha1-NNzzf1Co6TwrO8qLt/uRVcfaO+4= + integrity sha512-HnM6ZlFqcajLsyudHq7LeeLDr2rFAVYtDv/hV5qchQEidSck8j9OPUsXY9KwJv/lHMtYlX4DjRQqwFYa+0r8Ug== dependencies: no-case "^2.2.0" @@ -7420,7 +5368,7 @@ dotenv@^8.2.0: 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= + integrity sha512-+BNfZ+deCo8hMNpDqDnvT+c0XpJ5cUa6mqYq89bho2Ifze4URTqRkcwR399hWoTrTkbZ/XJYDgP6rc7pRgffEQ== download@^7.1.0: version "7.1.0" @@ -7440,29 +5388,10 @@ download@^7.1.0: p-event "^2.1.0" pify "^3.0.0" -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" + version "0.1.5" + resolved "https://registry.yarnpkg.com/duplexer3/-/duplexer3-0.1.5.tgz#0b5e4d7bad5de8901ea4440624c8e1d20099217e" + integrity sha512-1A8za6ws41LQgv9HrE/66jyC5yuSjQ3L/KOpFtoBilsAK2iA2wuS5rTt1OCzIvtS2V7nVmedsUU+DGRcjBmOYA== eastasianwidth@^0.2.0: version "0.2.0" @@ -7472,22 +5401,15 @@ eastasianwidth@^0.2.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= + integrity sha512-eh9O+hwRHNbG4BLTjEl3nw044CkGm5X6LoaCf7LPp7UU8Qrt47JYNi6nPX8xjW97TKGKm1ouctg0QSpZe9qrnw== 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= + integrity sha512-WMwm9LhRUo+WUaRN+vRuETqG89IgZphVSNkdFgeb6sS/E4OrDIN7t48CAewSHXc6C8lefD8KKfr5vY61brQlow== electron-fetch@^1.7.2: version "1.7.4" @@ -7496,22 +5418,22 @@ electron-fetch@^1.7.2: dependencies: encoding "^0.1.13" -electron-to-chromium@^1.3.896: - version "1.3.896" - resolved "https://registry.yarnpkg.com/electron-to-chromium/-/electron-to-chromium-1.3.896.tgz#4a94efe4870b1687eafd5c378198a49da06e8a1b" - integrity sha512-NcGkBVXePiuUrPLV8IxP43n1EOtdg+dudVjrfVEUd/bOqpQUFZ2diL5PPYzbgEhZFEltdXV3AcyKwGnEQ5lhMA== +electron-to-chromium@^1.4.251: + version "1.4.256" + resolved "https://registry.yarnpkg.com/electron-to-chromium/-/electron-to-chromium-1.4.256.tgz#c735032f412505e8e0482f147a8ff10cfca45bf4" + integrity sha512-x+JnqyluoJv8I0U9gVe+Sk2st8vF0CzMt78SXxuoWCooLLY2k5VerIBdpvG7ql6GKI4dzNnPjmqgDJ76EdaAKw== elliptic@6.3.3: version "6.3.3" resolved "https://registry.yarnpkg.com/elliptic/-/elliptic-6.3.3.tgz#5482d9646d54bcb89fd7d994fc9e2e9568876e3f" - integrity sha1-VILZZG1UvLif19mU/J4ulWiHbj8= + integrity sha512-cIky9SO2H8W2eU1NOLySnhOYJnuEWCq9ZJeHvHd/lXzEL9vyraIMfilZSn57X3aVX+wkfYmqkch2LvmTzkjFpA== dependencies: bn.js "^4.4.0" brorand "^1.0.1" hash.js "^1.0.0" inherits "^2.0.1" -elliptic@6.5.4, elliptic@^6.4.0, elliptic@^6.5.2, elliptic@^6.5.3: +elliptic@6.5.4, elliptic@^6.4.0, elliptic@^6.5.2, elliptic@^6.5.3, elliptic@^6.5.4: version "6.5.4" resolved "https://registry.yarnpkg.com/elliptic/-/elliptic-6.5.4.tgz#da37cebd31e79a1367e941b592ed1fbebd58abbb" integrity sha512-iLhC6ULemrljPZb+QutR5TQGB+pdW6KGD5RSegS+8sorOZT+rdQFbsQFJgvN3eRqNALqJer4oQ16YvJHlU8hzQ== @@ -7531,15 +5453,20 @@ emitter-listener@^1.1.1: dependencies: shimmer "^1.2.0" +emittery@0.10.0: + version "0.10.0" + resolved "https://registry.yarnpkg.com/emittery/-/emittery-0.10.0.tgz#bb373c660a9d421bb44706ec4967ed50c02a8026" + integrity sha512-AGvFfs+d0JKCJQ4o01ASQLGPmSCxgfU9RFXvzPvZdjKK8oscynksuJhWrSTSw7j7Ep/sZct5b5ZhYCi8S/t0HQ== + 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@^10.0.0: - version "10.0.0" - resolved "https://registry.yarnpkg.com/emoji-regex/-/emoji-regex-10.0.0.tgz#96559e19f82231b436403e059571241d627c42b8" - integrity sha512-KmJa8l6uHi1HrBI34udwlzZY1jOEuID/ft4d8BSSEdRyap7PwBEt910453PJa5MuGvxkLqlt4Uvhu7tttFHViw== +emoji-regex@^10.1.0: + version "10.1.0" + resolved "https://registry.yarnpkg.com/emoji-regex/-/emoji-regex-10.1.0.tgz#d50e383743c0f7a5945c47087295afc112e3cf66" + integrity sha512-xAEnNCT3w2Tg6MA7ly6QqYJvEoY1tm9iIjJ3yMKK9JPlWuRHAMoe5iETwQnx3M9TVbFMfsrBgWKR+IsmswwNjg== emoji-regex@^7.0.1: version "7.0.3" @@ -7556,15 +5483,10 @@ emoji-regex@^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= + integrity sha512-TPJXq8JqFaVYm2CWmPvnP2Iyo4ZSM7/QKcSmuMLDObfpH5fi7RUGmd/rTDf+rut/saiDiQEeVTNgAmJEdAOx0w== encoding-down@^6.3.0: version "6.3.0" @@ -7614,41 +5536,25 @@ end-of-stream@^1.0.0, end-of-stream@^1.1.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= + integrity sha512-Brl10T8kYnc75IepKizW6Y9liyW8ikz1B7n/xoHrJxoVSSjoqPn30sb7XVFfQERK4QfUMYRGs9dhWwtt2eu6uA== dependencies: write-stream "~0.4.3" -engine.io-client@~6.1.1: - version "6.1.1" - resolved "https://registry.yarnpkg.com/engine.io-client/-/engine.io-client-6.1.1.tgz#800d4b9db5487d169686729e5bd887afa78d36b0" - integrity sha512-V05mmDo4gjimYW+FGujoGmmmxRaDsrVr7AXA3ZIfa04MWM1jOfZfUwou0oNqhNwy/votUDvGDt4JA4QF4e0b4g== +engine.io-client@~6.2.1: + version "6.2.2" + resolved "https://registry.yarnpkg.com/engine.io-client/-/engine.io-client-6.2.2.tgz#c6c5243167f5943dcd9c4abee1bfc634aa2cbdd0" + integrity sha512-8ZQmx0LQGRTYkHuogVZuGSpDqYZtCM/nv8zQ68VZ+JkOpazJ7ICdsSpaO6iXwvaU30oFg5QJOJWj8zWqhbKjkQ== dependencies: - "@socket.io/component-emitter" "~3.0.0" + "@socket.io/component-emitter" "~3.1.0" debug "~4.3.1" - engine.io-parser "~5.0.0" - has-cors "1.1.0" - parseqs "0.0.6" - parseuri "0.0.6" + engine.io-parser "~5.0.3" ws "~8.2.3" xmlhttprequest-ssl "~2.0.0" - yeast "0.1.2" - -engine.io-parser@~5.0.0: - version "5.0.3" - resolved "https://registry.yarnpkg.com/engine.io-parser/-/engine.io-parser-5.0.3.tgz#ca1f0d7b11e290b4bfda251803baea765ed89c09" - integrity sha512-BtQxwF27XUNnSafQLvDi0dQ8s3i6VgzSoQMJacpIcGNrlUdfHSKbgm3jmjCVvQluGzqwujQMPAoMai3oYSTurg== - dependencies: - "@socket.io/base64-arraybuffer" "~1.0.2" -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" +engine.io-parser@~5.0.3: + version "5.0.4" + resolved "https://registry.yarnpkg.com/engine.io-parser/-/engine.io-parser-5.0.4.tgz#0b13f704fa9271b3ec4f33112410d8f3f41d0fc0" + integrity sha512-+nVFp+5z1E3HcToEnO7ZIj3g+3k9389DvWtvJZz0T6/eOCPIyyxehFcedoYrZQrp0LgQbD9pPXhpMBKMd5QURg== enquirer@^2.3.0: version "2.3.6" @@ -7657,27 +5563,17 @@ enquirer@^2.3.0: dependencies: ansi-colors "^4.1.1" -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== +entities@^4.2.0, entities@^4.3.0, entities@^4.4.0: + version "4.4.0" + resolved "https://registry.yarnpkg.com/entities/-/entities-4.4.0.tgz#97bdaba170339446495e653cfd2db78962900174" + integrity sha512-oYp7156SP8LkeGD0GF85ad1X9Ai79WtRsZ2gxJqtBuzH+98YUV6jkHEKlZkMbcrjJjIVJNIDP/3WL9wQkoPbWA== env-paths@^2.2.0, env-paths@^2.2.1: version "2.2.1" resolved "https://registry.yarnpkg.com/env-paths/-/env-paths-2.2.1.tgz#420399d416ce1fbe9bc0a07c62fa68d67fd0f8f2" integrity sha512-+h1lkLKhZMTYjog1VEpJNG7NZJWcuc2DDk/qsqSTRRCOXiLjeQ1d1/udrUGhqMxUgAlwKNZ0cf2uqan5GLuS2A== -err-code@^2.0.0, err-code@^2.0.3: +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== @@ -7687,7 +5583,7 @@ err-code@^3.0.0, err-code@^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: +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== @@ -7701,50 +5597,46 @@ error-ex@^1.2.0, error-ex@^1.3.1: dependencies: is-arrayish "^0.2.1" -es-abstract@^1.17.0-next.1, es-abstract@^1.18.5, es-abstract@^1.19.0, es-abstract@^1.19.1: - version "1.19.1" - resolved "https://registry.yarnpkg.com/es-abstract/-/es-abstract-1.19.1.tgz#d4885796876916959de78edaa0df456627115ec3" - integrity sha512-2vJ6tjA/UfqLm2MPs7jxVybLoB8i1t1Jd9R3kISld20sIxPcTbLuggQOUxeWeAvIUkduv/CfMjuh4WmiXr2v9w== +es-abstract@^1.19.0, es-abstract@^1.19.1, es-abstract@^1.19.2, es-abstract@^1.19.5, es-abstract@^1.20.0, es-abstract@^1.20.1: + version "1.20.2" + resolved "https://registry.yarnpkg.com/es-abstract/-/es-abstract-1.20.2.tgz#8495a07bc56d342a3b8ea3ab01bd986700c2ccb3" + integrity sha512-XxXQuVNrySBNlEkTYJoDNFe5+s2yIOpzq80sUHEdPdQr0S5nTLz4ZPPPswNIpKseDDUS5yghX1gfLIHQZ1iNuQ== dependencies: call-bind "^1.0.2" es-to-primitive "^1.2.1" function-bind "^1.1.1" - get-intrinsic "^1.1.1" + function.prototype.name "^1.1.5" + get-intrinsic "^1.1.2" get-symbol-description "^1.0.0" has "^1.0.3" - has-symbols "^1.0.2" + has-property-descriptors "^1.0.0" + has-symbols "^1.0.3" internal-slot "^1.0.3" is-callable "^1.2.4" - is-negative-zero "^2.0.1" + is-negative-zero "^2.0.2" is-regex "^1.1.4" - is-shared-array-buffer "^1.0.1" + is-shared-array-buffer "^1.0.2" is-string "^1.0.7" - is-weakref "^1.0.1" - object-inspect "^1.11.0" + is-weakref "^1.0.2" + object-inspect "^1.12.2" object-keys "^1.1.1" - object.assign "^4.1.2" - string.prototype.trimend "^1.0.4" - string.prototype.trimstart "^1.0.4" - unbox-primitive "^1.0.1" + object.assign "^4.1.4" + regexp.prototype.flags "^1.4.3" + string.prototype.trimend "^1.0.5" + string.prototype.trimstart "^1.0.5" + unbox-primitive "^1.0.2" 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== +es-shim-unscopables@^1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/es-shim-unscopables/-/es-shim-unscopables-1.0.0.tgz#702e632193201e3edf8713635d083d378e510241" + integrity sha512-Jm6GPcCdC30eMLbZ2x8z2WuRwAws3zTBBKuusffYVUrNj/GVSUAZ+xKMaUpfNDR5IbyNA5LJbaecoUVbmUcB1w== dependencies: - 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" + has "^1.0.3" es-to-primitive@^1.2.1: version "1.2.1" @@ -7755,66 +5647,35 @@ es-to-primitive@^1.2.1: is-date-object "^1.0.1" is-symbol "^1.0.2" -es5-ext@^0.10.35, es5-ext@^0.10.46, es5-ext@^0.10.50, es5-ext@~0.10.14: - version "0.10.53" - resolved "https://registry.yarnpkg.com/es5-ext/-/es5-ext-0.10.53.tgz#93c5a3acfdbef275220ad72644ad02ee18368de1" - integrity sha512-Xs2Stw6NiNHWypzRTY1MtaG/uJlwCk8kH81920ma8mvN8Xq1gsfhZvpkImLQArw8AHnv8MT2I45J3c0R8slE+Q== +es5-ext@^0.10.35, es5-ext@^0.10.50: + version "0.10.62" + resolved "https://registry.yarnpkg.com/es5-ext/-/es5-ext-0.10.62.tgz#5e6adc19a6da524bf3d1e02bbc8960e5eb49a9a5" + integrity sha512-BHLqn0klhEpnOKSrzn/Xsz2UIW8j+cGmo9JLzr8BiUapV8hPL9+FliFqjwr9ngW7jWdnxv6eO+/LqyhJVqgrjA== dependencies: - es6-iterator "~2.0.3" - es6-symbol "~3.1.3" - next-tick "~1.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-symbol "^3.1.3" + next-tick "^1.1.0" -es6-iterator@^2.0.3, es6-iterator@~2.0.1, es6-iterator@~2.0.3: +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= + integrity sha512-zw4SRzoUkd+cl+ZoE15A9o1oQd920Bb0iOJMQkQhl3jNc03YqVjAhG7scf9C5KWRU/R13Orf588uCC6525o02g== 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-promisify@^7.0.0: - version "7.0.0" - resolved "https://registry.yarnpkg.com/es6-promisify/-/es6-promisify-7.0.0.tgz#9a710008dd6a4ab75a89e280bad787bfb749927b" - integrity sha512-ginqzK3J90Rd4/Yz7qRrqUeIpe3TwSXTPPZtPne7tGBPeAaQiU8qt4fpKApnxHcq1AwtUdHVg5P77x/yrggG8Q== - -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-promise@^4.2.8: + version "4.2.8" + resolved "https://registry.yarnpkg.com/es6-promise/-/es6-promise-4.2.8.tgz#4eb21594c972bc40553d276e510539143db53e0a" + integrity sha512-HJDGx5daxeIvxdBxvG2cb9g4tEvwIk3i8+nhX0yGrYmZUzbkdg8QbDevheDB8gd0//uPj4c1EQua8Q+MViT0/w== -es6-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-promisify@^7.0.0: + version "7.0.0" + resolved "https://registry.yarnpkg.com/es6-promisify/-/es6-promisify-7.0.0.tgz#9a710008dd6a4ab75a89e280bad787bfb749927b" + integrity sha512-ginqzK3J90Rd4/Yz7qRrqUeIpe3TwSXTPPZtPne7tGBPeAaQiU8qt4fpKApnxHcq1AwtUdHVg5P77x/yrggG8Q== -es6-symbol@^3.1.1, es6-symbol@~3.1.1, es6-symbol@~3.1.3: +es6-symbol@^3.1.1, es6-symbol@^3.1.3: version "3.1.3" resolved "https://registry.yarnpkg.com/es6-symbol/-/es6-symbol-3.1.3.tgz#bad5d3c1bcdac28269f4cb331e431c78ac705d18" integrity sha512-NJ6Yn3FuDinBaBRWl/q5X/s4koRHBrgKAu+yGI6JCBeiu3qrcbJhwT2GeR/EXVfylRk8dpQVJoLEFhK+Mu31NA== @@ -7822,35 +5683,25 @@ es6-symbol@^3.1.1, es6-symbol@~3.1.1, es6-symbol@~3.1.3: d "^1.0.1" ext "^1.1.2" -es6-weak-map@^2.0.1: - 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: +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= + integrity sha512-NiSupZ4OeuGwr68lGIeym/ksIZMJodUGOSCZ/FSnTxcrekbvqrgdUxlJOMpijaKZVjAJrWrGs/6Jy8OMuyj9ow== escape-regexp@0.0.1: version "0.0.1" resolved "https://registry.yarnpkg.com/escape-regexp/-/escape-regexp-0.0.1.tgz#f44bda12d45bbdf9cb7f862ee7e4827b3dd32254" - integrity sha1-9EvaEtRbvfnLf4Yu5+SCez3TIlQ= + integrity sha512-jVgdsYRa7RKxTT6MKNC3gdT+BF0Gfhpel19+HMRZJC2L0PufB0XOBuXBoXj29NKHwuktnAXd1Z1lyiH/8vOTpw== 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= + integrity sha512-vbRorB5FUQWvla16U8R/qgaFIya2qGzwDrNmCZuYKrbdSUMG6I1ZCGQRefkRVhuOkIGVne7BQ35DSfo1qvJqFg== escape-string-regexp@4.0.0, escape-string-regexp@^4.0.0: version "4.0.0" @@ -7860,7 +5711,7 @@ escape-string-regexp@4.0.0, escape-string-regexp@^4.0.0: escodegen@1.8.x: version "1.8.1" resolved "https://registry.yarnpkg.com/escodegen/-/escodegen-1.8.1.tgz#5a5b53af4693110bebb0867aa3430dd3b70a1018" - integrity sha1-WltTr0aTEQvrsIZ6o0MN07cKEBg= + integrity sha512-yhi5S+mNTOuRvyW4gWlg5W1byMaQGWWSYHXsuFZ7GBo7tpyOwi2EdzMP/QWxh9hwkD2m+wDVHJsxhRIj+v/b/A== dependencies: esprima "^2.7.1" estraverse "^1.9.1" @@ -7869,49 +5720,10 @@ escodegen@1.8.x: 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" - eslint-config-defaults@^9.0.0: version "9.0.0" resolved "https://registry.yarnpkg.com/eslint-config-defaults/-/eslint-config-defaults-9.0.0.tgz#a090adc13b2935e3f43b3cd048a92701654e5ad5" - integrity sha1-oJCtwTspNeP0OzzQSKknAWVOWtU= + integrity sha512-+7YOx3HLdwG50YWpFNI/CLriyqcScVyFB7AWmR0T+6LyWhZCQrlHGYiQbniv04zACAv0W9hjIrhd8yFIMov6PQ== eslint-config-standard@^11.0.0-beta.0: version "11.0.0" @@ -7926,33 +5738,31 @@ eslint-import-resolver-node@^0.3.6: debug "^3.2.7" resolve "^1.20.0" -eslint-module-utils@^2.7.1: - version "2.7.1" - resolved "https://registry.yarnpkg.com/eslint-module-utils/-/eslint-module-utils-2.7.1.tgz#b435001c9f8dd4ab7f6d0efcae4b9696d4c24b7c" - integrity sha512-fjoetBXQZq2tSTWZ9yWVl2KuFrTZZH3V+9iD1V1RfpDgxzJR+mPd/KZmMiA8gbPqdBzpNiEHOuT7IYEWxrH0zQ== +eslint-module-utils@^2.7.3: + version "2.7.4" + resolved "https://registry.yarnpkg.com/eslint-module-utils/-/eslint-module-utils-2.7.4.tgz#4f3e41116aaf13a20792261e61d3a2e7e0583974" + integrity sha512-j4GT+rqzCoRKHwURX7pddtIPGySnX9Si/cgMI5ztrcqOPtk5dDEeZ34CQVPphnqkJytlc97Vuk05Um2mJ3gEQA== dependencies: debug "^3.2.7" - find-up "^2.1.0" - pkg-dir "^2.0.0" eslint-plugin-import@^2.20.2: - version "2.25.3" - resolved "https://registry.yarnpkg.com/eslint-plugin-import/-/eslint-plugin-import-2.25.3.tgz#a554b5f66e08fb4f6dc99221866e57cfff824766" - integrity sha512-RzAVbby+72IB3iOEL8clzPLzL3wpDrlwjsTBAQXgyp5SeTqqY+0bFubwuo+y/HLhNZcXV4XqTBO4LGsfyHIDXg== + version "2.26.0" + resolved "https://registry.yarnpkg.com/eslint-plugin-import/-/eslint-plugin-import-2.26.0.tgz#f812dc47be4f2b72b478a021605a59fc6fe8b88b" + integrity sha512-hYfi3FXaM8WPLf4S1cikh/r4IxnO6zrhZbEGz2b660EJRbuxgpDS5gkCuYgGWg2xxh2rBuIr4Pvhve/7c31koA== dependencies: array-includes "^3.1.4" array.prototype.flat "^1.2.5" debug "^2.6.9" doctrine "^2.1.0" eslint-import-resolver-node "^0.3.6" - eslint-module-utils "^2.7.1" + eslint-module-utils "^2.7.3" has "^1.0.3" - is-core-module "^2.8.0" + is-core-module "^2.8.1" is-glob "^4.0.3" - minimatch "^3.0.4" + minimatch "^3.1.2" object.values "^1.1.5" - resolve "^1.20.0" - tsconfig-paths "^3.11.0" + resolve "^1.22.0" + tsconfig-paths "^3.14.1" eslint-plugin-node@^5.2.1: version "5.2.1" @@ -7970,30 +5780,38 @@ eslint-plugin-promise@^3.6.0: integrity sha512-JiFL9UFR15NKpHyGii1ZcvmtIqa3UTwiDAGb8atSffe43qJ3+1czVGN6UtkklpcJ2DVnqvTMzEKRaJdBkAL2aQ== eslint-plugin-react@^7.20.3: - version "7.28.0" - resolved "https://registry.yarnpkg.com/eslint-plugin-react/-/eslint-plugin-react-7.28.0.tgz#8f3ff450677571a659ce76efc6d80b6a525adbdf" - integrity sha512-IOlFIRHzWfEQQKcAD4iyYDndHwTQiCMcJVJjxempf203jnNLUnW34AXLrV33+nEXoifJE2ZEGmcjKPL8957eSw== + version "7.31.8" + resolved "https://registry.yarnpkg.com/eslint-plugin-react/-/eslint-plugin-react-7.31.8.tgz#3a4f80c10be1bcbc8197be9e8b641b2a3ef219bf" + integrity sha512-5lBTZmgQmARLLSYiwI71tiGVTLUuqXantZM6vlSY39OaDSV0M7+32K5DnLkmFrwTe+Ksz0ffuLUC91RUviVZfw== dependencies: - array-includes "^3.1.4" - array.prototype.flatmap "^1.2.5" + array-includes "^3.1.5" + array.prototype.flatmap "^1.3.0" doctrine "^2.1.0" estraverse "^5.3.0" jsx-ast-utils "^2.4.1 || ^3.0.0" - minimatch "^3.0.4" + minimatch "^3.1.2" object.entries "^1.1.5" object.fromentries "^2.0.5" - object.hasown "^1.1.0" + object.hasown "^1.1.1" object.values "^1.1.5" - prop-types "^15.7.2" + prop-types "^15.8.1" resolve "^2.0.0-next.3" semver "^6.3.0" - string.prototype.matchall "^4.0.6" + string.prototype.matchall "^4.0.7" eslint-plugin-standard@^3.0.1: version "3.1.0" resolved "https://registry.yarnpkg.com/eslint-plugin-standard/-/eslint-plugin-standard-3.1.0.tgz#2a9e21259ba4c47c02d53b2d0c9135d4b1022d47" integrity sha512-fVcdyuKRr0EZ4fjWl3c+gp1BANFJD1+RaWa2UPYfMZ6jCtp5RG00kSaXnK/dE5sYzt4kaWJ9qdxqUfc0d9kX0w== +eslint-scope@5.1.1: + version "5.1.1" + resolved "https://registry.yarnpkg.com/eslint-scope/-/eslint-scope-5.1.1.tgz#e786e59a66cb92b3f6c1fb0d508aab174848f48c" + integrity sha512-2NxwbF/hZ0KpepYN0cNbo+FN6XoK7GaHlQhgx/hIZl6Va0bF45RQOOwhLIy8lQDbuCiadSLCBnH2CFYquit5bw== + dependencies: + esrecurse "^4.3.0" + estraverse "^4.1.1" + eslint-scope@^4.0.3: version "4.0.3" resolved "https://registry.yarnpkg.com/eslint-scope/-/eslint-scope-4.0.3.tgz#ca03833310f6889a3264781aa82e63eb9cfe7848" @@ -8002,14 +5820,6 @@ eslint-scope@^4.0.3: esrecurse "^4.1.0" estraverse "^4.1.1" -eslint-scope@^5.1.1: - version "5.1.1" - resolved "https://registry.yarnpkg.com/eslint-scope/-/eslint-scope-5.1.1.tgz#e786e59a66cb92b3f6c1fb0d508aab174848f48c" - integrity sha512-2NxwbF/hZ0KpepYN0cNbo+FN6XoK7GaHlQhgx/hIZl6Va0bF45RQOOwhLIy8lQDbuCiadSLCBnH2CFYquit5bw== - dependencies: - esrecurse "^4.3.0" - estraverse "^4.1.1" - eslint-utils@^1.3.1: version "1.4.3" resolved "https://registry.yarnpkg.com/eslint-utils/-/eslint-utils-1.4.3.tgz#74fec7c54d0776b6f67e0251040b5806564e981f" @@ -8081,9 +5891,9 @@ espree@^5.0.1: 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= + integrity sha512-OarPfz0lFCiW4/AV2Oy1Rp9qu0iusTKqykwTspGCZtPxmF81JR4MmIebvF1F9+UOKth2ZubLQ4XGGaU+hSn99A== -esprima@^4.0.0, esprima@^4.0.1: +esprima@^4.0.0: version "4.0.1" resolved "https://registry.yarnpkg.com/esprima/-/esprima-4.0.1.tgz#13b04cdb3e6c5d19df91ab6987a8695619b0aa71" integrity sha512-eGuFFw7Upda+g4p+QHvnW0RyTX/SVeJBDM/gCtMARO0cLuT2HcEKnTPvhjV6aGeqrCB/sbNop0Kszm0jsaWU4A== @@ -8105,19 +5915,14 @@ esrecurse@^4.1.0, esrecurse@^4.3.0: estraverse@^1.9.1: version "1.9.3" resolved "https://registry.yarnpkg.com/estraverse/-/estraverse-1.9.3.tgz#af67f2dc922582415950926091a4005d29c9bb44" - integrity sha1-r2fy3JIlgkFZUJJgkaQAXSnJu0Q= + integrity sha512-25w1fMXQrGdoquWnScXZGckOv+Wes+JDnuN/+7ex3SauFRS72r2lFDec0EKPt2YD1wUJ/IrfEex+9yp4hfSOJA== -estraverse@^4.1.1, estraverse@^4.2.0: +estraverse@^4.1.1: version "4.3.0" resolved "https://registry.yarnpkg.com/estraverse/-/estraverse-4.3.0.tgz#398ad3f3c5a24948be7725e83d11a7de28cdbd1d" integrity sha512-39nnKffWz8xN1BU/2c79n9nB9HDzo0niYUqx6xyqUnyoAnQyyWpOTdZEeiCch8BBu515t4wp9ZmgVfVhn9EBpw== -estraverse@^5.1.0: - version "5.2.0" - resolved "https://registry.yarnpkg.com/estraverse/-/estraverse-5.2.0.tgz#307df42547e6cc7324d3cf03c155d5cdb8c53880" - integrity sha512-BxbNGGNm0RyRYvUdHpIwv9IWzeM9XClbOxwoATuFdOE7ZE6wHL+HQ5T8hoPM+zHvmKzzsEqhgy0GrQ5X13afiQ== - -estraverse@^5.2.0, estraverse@^5.3.0: +estraverse@^5.1.0, estraverse@^5.2.0, estraverse@^5.3.0: version "5.3.0" resolved "https://registry.yarnpkg.com/estraverse/-/estraverse-5.3.0.tgz#2eea5290702f26ab8fe5370370ff86c965d21123" integrity sha512-MMdARuVEQziNTeJD8DgMqmhwR11BRQ/cBP+pLtYdSTnf3MIO8fFeiINEbX36ZdNlfU/7A9f3gUw49B3oQsvwBA== @@ -8130,7 +5935,7 @@ esutils@^2.0.2: etag@~1.8.1: version "1.8.1" resolved "https://registry.yarnpkg.com/etag/-/etag-1.8.1.tgz#41ae2eeb65efa62268aebfea83ac7d79299b0887" - integrity sha1-Qa4u62XvpiJorr/qg6x9eSmbCIc= + integrity sha512-aIL5Fx7mawVa300al2BnEE4iNvo1qETxLrPI/o05L7z6go7fCw1J6EQmbK4FmJ2AS7kgVF/KEZWufBfdClMcPg== eth-block-tracker@^4.4.2: version "4.4.3" @@ -8147,21 +5952,21 @@ eth-block-tracker@^4.4.2: eth-ens-namehash@2.0.8, eth-ens-namehash@^2.0.0, 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= + integrity sha512-VWEI1+KJfz4Km//dadyvBBoBeSQ0MHTXPvr8UIXiLW6IanxvAV+DmlZAijZwAyggqGUfwQBeHf7tc9wzc1piSw== dependencies: idna-uts46-hx "^2.3.1" js-sha3 "^0.5.7" -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== +eth-gas-reporter@^0.2.25: + version "0.2.25" + resolved "https://registry.yarnpkg.com/eth-gas-reporter/-/eth-gas-reporter-0.2.25.tgz#546dfa946c1acee93cb1a94c2a1162292d6ff566" + integrity sha512-1fRgyE4xUB8SoqLgN3eDfpDfwEfRxh2Sz1b7wzFbyQA+9TekMmvSjjoRu9SKcSVyK+vLkLIsVbJDsTWjw195OQ== dependencies: "@ethersproject/abi" "^5.0.0-beta.146" - "@solidity-parser/parser" "^0.12.0" + "@solidity-parser/parser" "^0.14.0" cli-table3 "^0.5.0" - colors "^1.1.2" - ethereumjs-util "6.2.0" + colors "1.4.0" + ethereum-cryptography "^1.0.3" ethers "^4.0.40" fs-readdir-recursive "^1.1.0" lodash "^4.17.14" @@ -8190,7 +5995,7 @@ eth-json-rpc-errors@^2.0.2: 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= + integrity sha512-VqEBQKH92jNsaE8lG9CTq8M/bc12gdAfb5MY8Ro1hVyXkh7rOtY3m5tRHK3Hus5HqIAAwU2ivcUjTLVwsvf/kw== dependencies: bn.js "^4.11.6" elliptic "^6.4.0" @@ -8220,7 +6025,7 @@ eth-lib@^0.1.26: eth-query@^2.1.0, eth-query@^2.1.2: version "2.1.2" resolved "https://registry.yarnpkg.com/eth-query/-/eth-query-2.1.2.tgz#d6741d9000106b51510c72db92d6365456a6da5e" - integrity sha1-1nQdkAAQa1FRDHLbktY2VFam2l4= + integrity sha512-srES0ZcvwkR/wd5OQBRA1bIJMww1skfGS0s8wlwK3/oNP4+wnds60krvu5R1QbpRQjMmpG5OMIWro5s7gvDPsA== dependencies: json-rpc-random-id "^1.0.0" xtend "^4.0.1" @@ -8277,9 +6082,9 @@ ethereum-common@0.2.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= + integrity sha512-EoltVQTRNg2Uy4o84qpa2aXymXDJhxm7eos/ACOg0DG4baAbMjhbdAEsx9GeE8sC3XCxnYvrrzZDH8D8MtA2iQ== -ethereum-cryptography@^0.1.2, ethereum-cryptography@^0.1.3: +ethereum-cryptography@0.1.3, 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== @@ -8300,6 +6105,16 @@ ethereum-cryptography@^0.1.2, ethereum-cryptography@^0.1.3: secp256k1 "^4.0.1" setimmediate "^1.0.5" +ethereum-cryptography@^1.0.3: + version "1.1.2" + resolved "https://registry.yarnpkg.com/ethereum-cryptography/-/ethereum-cryptography-1.1.2.tgz#74f2ac0f0f5fe79f012c889b3b8446a9a6264e6d" + integrity sha512-XDSJlg4BD+hq9N2FjvotwUET9Tfxpxc3kWGE2AqUG5vcbeunnbImVk3cj6e/xT3phdW21mE8R5IugU4fspQDcQ== + dependencies: + "@noble/hashes" "1.1.2" + "@noble/secp256k1" "1.6.3" + "@scure/bip32" "1.1.0" + "@scure/bip39" "1.1.0" + ethereum-ens@^0.8.0: version "0.8.0" resolved "https://registry.yarnpkg.com/ethereum-ens/-/ethereum-ens-0.8.0.tgz#6d0f79acaa61fdbc87d2821779c4e550243d4c57" @@ -8386,13 +6201,6 @@ ethereumjs-common@^1.1.0, ethereumjs-common@^1.3.2, ethereumjs-common@^1.5.0: resolved "https://registry.yarnpkg.com/ethereumjs-common/-/ethereumjs-common-1.5.2.tgz#2065dbe9214e850f2e955a80e650cb6999066979" integrity sha512-hTfZjwGX52GS2jcVO6E2sx4YuFnf0Fhp5ylo4pEPhEffNln7vS59Hr5sLnp3/QCazFLluuBZ+FZ6J5HTp0EqCA== -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.2.2, ethereumjs-tx@^1.3.7: version "1.3.7" resolved "https://registry.yarnpkg.com/ethereumjs-tx/-/ethereumjs-tx-1.3.7.tgz#88323a2d875b10549b8347e09f4862b546f3d89a" @@ -8409,20 +6217,7 @@ ethereumjs-tx@^2.1.1, ethereumjs-tx@^2.1.2: ethereumjs-common "^1.5.0" ethereumjs-util "^6.0.0" -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: - "@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, ethereumjs-util@^6.0.0, ethereumjs-util@^6.1.0, ethereumjs-util@^6.2.0: +ethereumjs-util@6.2.1, ethereumjs-util@^6.0.0, ethereumjs-util@^6.1.0, ethereumjs-util@^6.2.0, ethereumjs-util@^6.2.1: version "6.2.1" resolved "https://registry.yarnpkg.com/ethereumjs-util/-/ethereumjs-util-6.2.1.tgz#fcb4e4dd5ceacb9d2305426ab1a5cd93e3163b69" integrity sha512-W2Ktez4L01Vexijrm5EB6w7dg4n/TgpoYU4avuT5T3Vmnw/eCRtiBrJfQYS/DCSvDIOLn2k57GcHdeBcgVxAqw== @@ -8448,22 +6243,10 @@ ethereumjs-util@^5.0.0, ethereumjs-util@^5.1.1, ethereumjs-util@^5.1.2, ethereum rlp "^2.0.0" safe-buffer "^5.1.1" -ethereumjs-util@^7.0.10, ethereumjs-util@^7.0.2, ethereumjs-util@^7.1.0: - version "7.1.2" - resolved "https://registry.yarnpkg.com/ethereumjs-util/-/ethereumjs-util-7.1.2.tgz#cfd79a9a3f5cdc042d1abf29964de9caf10ec238" - integrity sha512-xCV3PTAhW8Q2k88XZn9VcO4OrjpeXAlDm5LQTaOLp81SjNSSY6+MwuGXrx6vafOMheWSmZGxIXUbue5e9UvUBw== - 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" - -ethereumjs-util@^7.0.3, ethereumjs-util@^7.1.1, ethereumjs-util@^7.1.2, ethereumjs-util@^7.1.3: - version "7.1.3" - resolved "https://registry.yarnpkg.com/ethereumjs-util/-/ethereumjs-util-7.1.3.tgz#b55d7b64dde3e3e45749e4c41288238edec32d23" - integrity sha512-y+82tEbyASO0K0X1/SRhbJJoAlfcvq8JbrG4a5cjrOks7HS/36efU/0j2flxCPOUM++HFahk33kr/ZxyC4vNuw== +ethereumjs-util@^7.0.10, ethereumjs-util@^7.0.2, ethereumjs-util@^7.0.3, ethereumjs-util@^7.1.0, ethereumjs-util@^7.1.2, ethereumjs-util@^7.1.4, ethereumjs-util@^7.1.5: + version "7.1.5" + resolved "https://registry.yarnpkg.com/ethereumjs-util/-/ethereumjs-util-7.1.5.tgz#9ecf04861e4fbbeed7465ece5f23317ad1129181" + integrity sha512-SDl5kKrQAudFBUe5OJM9Ac6WmMyYmXX/6sTmLZ3ffG2eY6ZIGBes3pEDxNN6V72WyOw4CPD5RomKdsa8DAAwLg== dependencies: "@types/bn.js" "^5.1.0" bn.js "^5.1.2" @@ -8552,82 +6335,46 @@ ethers@^4.0.0-beta.1, ethers@^4.0.32, ethers@^4.0.40: uuid "2.0.1" xmlhttprequest "1.8.0" -ethers@^5.0.13: - version "5.4.7" - resolved "https://registry.yarnpkg.com/ethers/-/ethers-5.4.7.tgz#0fd491a5da7c9793de2d6058d76b41b1e7efba8f" - integrity sha512-iZc5p2nqfWK1sj8RabwsPM28cr37Bpq7ehTQ5rWExBr2Y09Sn1lDKZOED26n+TsZMye7Y6mIgQ/1cwpSD8XZew== - dependencies: - "@ethersproject/abi" "5.4.1" - "@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.2" - "@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.1" - "@ethersproject/networks" "5.4.2" - "@ethersproject/pbkdf2" "5.4.0" - "@ethersproject/properties" "5.4.1" - "@ethersproject/providers" "5.4.5" - "@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" - -ethers@^5.0.24, ethers@^5.1.0: - version "5.5.1" - resolved "https://registry.yarnpkg.com/ethers/-/ethers-5.5.1.tgz#d3259a95a42557844aa543906c537106c0406fbf" - integrity sha512-RodEvUFZI+EmFcE6bwkuJqpCYHazdzeR1nMzg+YWQSmQEsNtfl1KHGfp/FWZYl48bI/g7cgBeP2IlPthjiVngw== - dependencies: - "@ethersproject/abi" "5.5.0" - "@ethersproject/abstract-provider" "5.5.1" - "@ethersproject/abstract-signer" "5.5.0" - "@ethersproject/address" "5.5.0" - "@ethersproject/base64" "5.5.0" - "@ethersproject/basex" "5.5.0" - "@ethersproject/bignumber" "5.5.0" - "@ethersproject/bytes" "5.5.0" - "@ethersproject/constants" "5.5.0" - "@ethersproject/contracts" "5.5.0" - "@ethersproject/hash" "5.5.0" - "@ethersproject/hdnode" "5.5.0" - "@ethersproject/json-wallets" "5.5.0" - "@ethersproject/keccak256" "5.5.0" - "@ethersproject/logger" "5.5.0" - "@ethersproject/networks" "5.5.0" - "@ethersproject/pbkdf2" "5.5.0" - "@ethersproject/properties" "5.5.0" - "@ethersproject/providers" "5.5.0" - "@ethersproject/random" "5.5.0" - "@ethersproject/rlp" "5.5.0" - "@ethersproject/sha2" "5.5.0" - "@ethersproject/signing-key" "5.5.0" - "@ethersproject/solidity" "5.5.0" - "@ethersproject/strings" "5.5.0" - "@ethersproject/transactions" "5.5.0" - "@ethersproject/units" "5.5.0" - "@ethersproject/wallet" "5.5.0" - "@ethersproject/web" "5.5.0" - "@ethersproject/wordlists" "5.5.0" +ethers@^5.0.13, ethers@^5.0.24, ethers@^5.1.0: + version "5.7.1" + resolved "https://registry.yarnpkg.com/ethers/-/ethers-5.7.1.tgz#48c83a44900b5f006eb2f65d3ba6277047fd4f33" + integrity sha512-5krze4dRLITX7FpU8J4WscXqADiKmyeNlylmmDLbS95DaZpBhDe2YSwRQwKXWNyXcox7a3gBgm/MkGXV1O1S/Q== + dependencies: + "@ethersproject/abi" "5.7.0" + "@ethersproject/abstract-provider" "5.7.0" + "@ethersproject/abstract-signer" "5.7.0" + "@ethersproject/address" "5.7.0" + "@ethersproject/base64" "5.7.0" + "@ethersproject/basex" "5.7.0" + "@ethersproject/bignumber" "5.7.0" + "@ethersproject/bytes" "5.7.0" + "@ethersproject/constants" "5.7.0" + "@ethersproject/contracts" "5.7.0" + "@ethersproject/hash" "5.7.0" + "@ethersproject/hdnode" "5.7.0" + "@ethersproject/json-wallets" "5.7.0" + "@ethersproject/keccak256" "5.7.0" + "@ethersproject/logger" "5.7.0" + "@ethersproject/networks" "5.7.1" + "@ethersproject/pbkdf2" "5.7.0" + "@ethersproject/properties" "5.7.0" + "@ethersproject/providers" "5.7.1" + "@ethersproject/random" "5.7.0" + "@ethersproject/rlp" "5.7.0" + "@ethersproject/sha2" "5.7.0" + "@ethersproject/signing-key" "5.7.0" + "@ethersproject/solidity" "5.7.0" + "@ethersproject/strings" "5.7.0" + "@ethersproject/transactions" "5.7.0" + "@ethersproject/units" "5.7.0" + "@ethersproject/wallet" "5.7.0" + "@ethersproject/web" "5.7.1" + "@ethersproject/wordlists" "5.7.0" ethjs-abi@^0.2.1: version "0.2.1" resolved "https://registry.yarnpkg.com/ethjs-abi/-/ethjs-abi-0.2.1.tgz#e0a7a93a7e81163a94477bad56ede524ab6de533" - integrity sha1-4KepOn6BFjqUR3utVu3lJKtt5TM= + integrity sha512-g2AULSDYI6nEJyJaEVEXtTimRY2aPC2fi7ddSy0W+LXvEVL8Fe1y76o43ecbgdUKwZD+xsmEgX1yJr1Ia3r1IA== dependencies: bn.js "4.11.6" js-sha3 "0.5.5" @@ -8636,12 +6383,12 @@ ethjs-abi@^0.2.1: 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= + integrity sha512-/Sn9Y0oKl0uqQuvgFk/zQgR7aw1g36qX/jzSQ5lSwlO0GigPymk4eGQfeNTD03w1dPOqfz8V77Cy43jH56pagw== dependencies: bn.js "4.11.6" number-to-bn "1.7.0" -ethjs-util@0.1.6, ethjs-util@^0.1.3: +ethjs-util@0.1.6, ethjs-util@^0.1.3, ethjs-util@^0.1.6: version "0.1.6" resolved "https://registry.yarnpkg.com/ethjs-util/-/ethjs-util-0.1.6.tgz#f308b62f185f9fe6237132fb2a9818866a5cd536" integrity sha512-CUnVOQq7gSpDHZVVrQW8ExxUETWrnrvXYvYz55wOU8Uj4VCgw56XC2B/fVqQN+f7gmrnRHSLVnFAwsCuNwji8w== @@ -8649,19 +6396,6 @@ 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: - 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" @@ -8675,14 +6409,14 @@ event-target-shim@^5.0.0: eventemitter2@1.0.5: version "1.0.5" resolved "https://registry.yarnpkg.com/eventemitter2/-/eventemitter2-1.0.5.tgz#f983610517b1737c0b9dc643beca93893c04df18" - integrity sha1-+YNhBRexc3wLncZDvsqTiTwE3xg= + integrity sha512-EUFhWUYzqqBZlzBMI+dPU8rnKXfQZEUnitnccQuEIAnvWFHCpt3+4fts2+4dpxLtlsiseVXCMFg37KjYChSxpg== eventemitter2@~0.4.14: version "0.4.14" resolved "https://registry.yarnpkg.com/eventemitter2/-/eventemitter2-0.4.14.tgz#8f61b75cde012b2e9eb284d4545583b5643b61ab" - integrity sha1-j2G3XN4BKy6esoTUVFWDtWQ7Yas= + integrity sha512-K7J4xq5xAD5jHsGM5ReWXRTFa3JRGofHiMcVgQ8PRwgWxzjHpMWCIzsmyf60+mh8KLsqYPcjUMa0AC4hd6lPyQ== -eventemitter3@3.1.2, eventemitter3@^3.1.0, eventemitter3@^3.1.2: +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== @@ -8697,7 +6431,7 @@ eventemitter3@^4.0.4: resolved "https://registry.yarnpkg.com/eventemitter3/-/eventemitter3-4.0.7.tgz#2de9b68f6528d5644ef5c59526a1b4a07306169f" integrity sha512-8guHBZCwKnFhYdHr2ysuRWErTwhoN2X8XELRlrRwpmfeY2jjuUN4taQMsULKUVo1K4DvZl+0pgfyoysHxvmvEw== -events@^3.0.0, events@^3.2.0, events@^3.3.0: +events@^3.0.0, events@^3.3.0: version "3.3.0" resolved "https://registry.yarnpkg.com/events/-/events-3.3.0.tgz#31a95ad0a924e2d2c419a813aeb2c4e878ea7400" integrity sha512-mQw+2fkQbALzQ7V0MY0IqdnXNOeTtP4r0lN9z7AAawCXgqea7bDii20AYrIBrFd/Hx0M2Ocz6S111CaFkUcb0Q== @@ -8710,19 +6444,6 @@ 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" @@ -8751,22 +6472,10 @@ execa@^5.0.0, execa@^5.1.1: signal-exit "^3.0.3" strip-final-newline "^2.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= + integrity sha512-w/ozOKR9Obk3qoWeY/WDi6MFta9AoMR+zud60mdnbniMcBxRuFJyDt2LdX/14A1UABeqk+Uk+LDfUpvoGKppZA== dependencies: debug "^2.3.3" define-property "^0.2.5" @@ -8776,52 +6485,39 @@ expand-brackets@^2.1.4: 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== +express@^4.14.0, express@^4.17.1: + version "4.18.1" + resolved "https://registry.yarnpkg.com/express/-/express-4.18.1.tgz#7797de8b9c72c857b9cd0e14a5eea80666267caf" + integrity sha512-zZBcOX9TfehHQhtupq57OF8lFZ3UZi08Y97dwFCkD8p9d/d2Y3M+ykKcwaMDEL+4qyUolgBDX6AblpR3fL212Q== dependencies: - accepts "~1.3.7" + accepts "~1.3.8" array-flatten "1.1.1" - body-parser "1.19.0" - content-disposition "0.5.3" + body-parser "1.20.0" + content-disposition "0.5.4" content-type "~1.0.4" - cookie "0.4.0" + cookie "0.5.0" cookie-signature "1.0.6" debug "2.6.9" - depd "~1.1.2" + depd "2.0.0" encodeurl "~1.0.2" escape-html "~1.0.3" etag "~1.8.1" - finalhandler "~1.1.2" + finalhandler "1.2.0" fresh "0.5.2" + http-errors "2.0.0" merge-descriptors "1.0.1" methods "~1.1.2" - on-finished "~2.3.0" + on-finished "2.4.1" parseurl "~1.3.3" path-to-regexp "0.1.7" - proxy-addr "~2.0.5" - qs "6.7.0" + proxy-addr "~2.0.7" + qs "6.10.3" 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" + safe-buffer "5.2.1" + send "0.18.0" + serve-static "1.15.0" + setprototypeof "1.2.0" + statuses "2.0.1" type-is "~1.6.18" utils-merge "1.0.1" vary "~1.1.2" @@ -8842,23 +6538,23 @@ ext-name@^5.0.0: sort-keys-length "^1.0.0" ext@^1.1.2: - version "1.6.0" - resolved "https://registry.yarnpkg.com/ext/-/ext-1.6.0.tgz#3871d50641e874cc172e2b53f919842d19db4c52" - integrity sha512-sdBImtzkq2HpkdRLtlLWDa6w4DX22ijZLKx8BMPUuKe1c5lbN6xwQDQCxSfxBQnHZ13ls/FH0MQZx/q/gr6FQg== + version "1.7.0" + resolved "https://registry.yarnpkg.com/ext/-/ext-1.7.0.tgz#0ea4383c0103d60e70be99e9a7f11027a33c4f5f" + integrity sha512-6hxeJYaL110a9b5TEJSj0gojyHQAmA2ch5Os+ySCiA1QGdS697XWY1pzsrSjqA9LDEEgdB/KypIlR59RcLuHYw== dependencies: - type "^2.5.0" + type "^2.7.2" 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= + integrity sha512-zCnTtlxNoAiDc3gqY2aYAWFx7XWWiasuF2K8Me5WbN8otHKTUKBwjPtNpRs/rbUZm7KxWAaNj7P1a/p52GbVug== dependencies: is-extendable "^0.1.0" extend-shallow@^3.0.0, extend-shallow@^3.0.2: version "3.0.2" resolved "https://registry.yarnpkg.com/extend-shallow/-/extend-shallow-3.0.2.tgz#26a71aaf073b39fb2127172746131c2704028db8" - integrity sha1-Jqcarwc7OfshJxcnRhMcJwQCjbg= + integrity sha512-BwY5b5Ql4+qZoefgMj2NUmx+tehVTH/Kf4k1ZEtOHNFcm2wSxMRo992l6X3TIgni2eZVTZ85xMOjF31fwZAj6Q== dependencies: assign-symbols "^1.0.0" is-extendable "^1.0.1" @@ -8877,13 +6573,6 @@ external-editor@^3.0.3: iconv-lite "^0.4.24" tmp "^0.0.33" -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" @@ -8898,15 +6587,10 @@ extglob@^2.0.4: 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= + integrity sha512-11Ndz7Nv+mvAC1j0ktTa7fAb0vLyGGX+rMHNBYQviQDGU0Hw7lhctJANqbPhu9nV9/izT/IntTgZ7Im/9LJs9g== extsprintf@^1.2.0: version "1.4.1" @@ -8916,21 +6600,16 @@ extsprintf@^1.2.0: fake-merkle-patricia-tree@^1.0.1: version "1.0.1" resolved "https://registry.yarnpkg.com/fake-merkle-patricia-tree/-/fake-merkle-patricia-tree-1.0.1.tgz#4b8c3acfb520afadf9860b1f14cd8ce3402cddd3" - integrity sha1-S4w6z7Ugr635hgsfFM2M40As3dM= + integrity sha512-Tgq37lkc9pUIgIKw5uitNUKcgcYL3R6JvXtKQbOf/ZSavXbidsksgp/pAY6p//uhw0I4yoMsvTSovvVIsk/qxA== dependencies: checkpoint-store "^1.1.0" -faker@^5.3.1: - version "5.5.3" - resolved "https://registry.yarnpkg.com/faker/-/faker-5.5.3.tgz#c57974ee484431b25205c2c8dc09fda861e51e0e" - integrity sha512-wLTv2a28wjUyWkbnX7u/ABZBkUkIF2fCd73V6P2oFqEGEktDfzWx4UxrSqtPRw0xPRAcjeAOIiJWqZm3pP4u3g== - -fast-check@^2.12.1: - version "2.17.0" - resolved "https://registry.yarnpkg.com/fast-check/-/fast-check-2.17.0.tgz#9b9637684332be386219a5f73a4799874da7461c" - integrity sha512-fNNKkxNEJP+27QMcEzF6nbpOYoSZIS0p+TyB+xh/jXqRBxRhLkiZSREly4ruyV8uJi7nwH1YWAhi7OOK5TubRw== +fast-check@3.1.1: + version "3.1.1" + resolved "https://registry.yarnpkg.com/fast-check/-/fast-check-3.1.1.tgz#72c5ae7022a4e86504762e773adfb8a5b0b01252" + integrity sha512-3vtXinVyuUKCKFKYcwXhGE6NtGWkqF8Yh3rvMZNzmwz8EPrgoc/v4pDdLHyLnCyCI5MZpZZkDEwFyXyEONOxpA== dependencies: - pure-rand "^5.0.0" + pure-rand "^5.0.1" fast-deep-equal@^3.1.1: version "3.1.3" @@ -8943,19 +6622,14 @@ fast-diff@^1.1.2: integrity sha512-xJuoT5+L99XlZ8twedaRf6Ax2TgQVxvgZOYoPKqZufmJib0tL2tegPBOZb1pVNgIhlqDlA0eO0c3wBvQcmzx4w== 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= + version "1.1.0" + resolved "https://registry.yarnpkg.com/fast-fifo/-/fast-fifo-1.1.0.tgz#17d1a3646880b9891dfa0c54e69c5fef33cad779" + integrity sha512-Kl29QoNbNvn4nhDsLYjyIAaIqaJB6rBx5p3sL9VjaefJ+eMFBWVZiaoguaoZfzEKr5RhAti0UgM8703akGPJ6g== -fast-glob@^3.0.3, fast-glob@^3.1.1: - version "3.2.7" - resolved "https://registry.yarnpkg.com/fast-glob/-/fast-glob-3.2.7.tgz#fd6cb7a2d7e9aa7a7846111e85a196d6b2f766a1" - integrity sha512-rYGMRwip6lUMvYD3BTScMwT1HtAs2d71SMv66Vrxs0IekGZEjhM0pcMfjQPnknBt2zeCwQMEupiN02ZP4DiT1Q== +fast-glob@^3.0.3: + version "3.2.12" + resolved "https://registry.yarnpkg.com/fast-glob/-/fast-glob-3.2.12.tgz#7f39ec99c2e6ab030337142da9e0c18f37afae80" + integrity sha512-DVj4CQIYYow0BlaelwK1pHl5n5cRSJfM60UA0zK891sVInoPri2Ekj7+e1CT3/3qxXenpI+nBBmQAcJPJgaj4w== dependencies: "@nodelib/fs.stat" "^2.0.2" "@nodelib/fs.walk" "^1.2.3" @@ -8963,7 +6637,7 @@ fast-glob@^3.0.3, fast-glob@^3.1.1: merge2 "^1.3.0" micromatch "^4.0.4" -fast-json-stable-stringify@^2.0.0: +fast-json-stable-stringify@^2.0.0, fast-json-stable-stringify@^2.1.0: version "2.1.0" resolved "https://registry.yarnpkg.com/fast-json-stable-stringify/-/fast-json-stable-stringify-2.1.0.tgz#874bf69c6f404c2b5d99c481341399fd55892633" integrity sha512-lhd/wF+Lk98HZoTCtlVraHtfh5XYijIjalXck7saUtuanSDyLMxnHhSXEDJqHxD7msR8D0uCmqlkwjCV8xvwHw== @@ -8971,28 +6645,18 @@ fast-json-stable-stringify@^2.0.0: 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= + integrity sha512-DCXu6Ifhqcks7TZKY3Hxp3y6qphY5SJZmrWMDrKcERSOXWQdMhU9Ig/PYrzyw/ul9jOIyh0N4M0tbC5hodg8dw== fast-safe-stringify@^2.0.6: version "2.1.1" resolved "https://registry.yarnpkg.com/fast-safe-stringify/-/fast-safe-stringify-2.1.1.tgz#c406a83b6e70d9e35ce3b30a81141df30aeba884" integrity sha512-W+KJc2dmILlPplD/H4K9l9LcAHAfPtP6BY84uVLXQ6Evcz9Lcg33Y2z1IVblT6xdY54PXYVHEv+0Wpq8Io6zkA== -fast-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== - fast-write-atomic@^0.2.0: version "0.2.1" resolved "https://registry.yarnpkg.com/fast-write-atomic/-/fast-write-atomic-0.2.1.tgz#7ee8ef0ce3c1f531043c09ae8e5143361ab17ede" integrity sha512-WvJe06IfNYlr+6cO3uQkdKdy3Cb1LlCJSF8zRs2eT8yuhdbSlR9nIt+TgQ92RUxiRrQm+/S7RARnMfCs5iuAjw== -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.13.0" resolved "https://registry.yarnpkg.com/fastq/-/fastq-1.13.0.tgz#616760f88a7526bdfc596b7cab8c18938c36b98c" @@ -9000,69 +6664,36 @@ fastq@^1.6.0: 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" - fclone@1.0.11: version "1.0.11" resolved "https://registry.yarnpkg.com/fclone/-/fclone-1.0.11.tgz#10e85da38bfea7fc599341c296ee1d77266ee640" - integrity sha1-EOhdo4v+p/xZk0HClu4ddyZu5kA= + integrity sha512-GDqVQezKzRABdeqflsgMr7ktzgF9CyS+p2oe0jJqUY6izSSbhPIQJDpoU4PtGcD7VPM9xh/dVrTu6z1nwgmEGw== 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= + integrity sha512-cE1qsB/VwyQozZ+q1dGxR8LBYNZeofhEdUNGSMbQD3Gw2lAzX9Zb3uIU6Ebc/Fmyjo9AWWfnn0AUCHqtevs/8g== 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== +fetch-cookie@0.11.0: + version "0.11.0" + resolved "https://registry.yarnpkg.com/fetch-cookie/-/fetch-cookie-0.11.0.tgz#e046d2abadd0ded5804ce7e2cae06d4331c15407" + integrity sha512-BQm7iZLFhMWFy5CZ/162sAGjBfdNWb7a8LEqqnzsHFhxT/X/SVj/z2t2nu3aJvjlbQkrAlTUApplPRjWyH4mhA== 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" - fetch-ponyfill@^4.0.0: version "4.1.0" resolved "https://registry.yarnpkg.com/fetch-ponyfill/-/fetch-ponyfill-4.1.0.tgz#ae3ce5f732c645eab87e4ae8793414709b239893" - integrity sha1-rjzl9zLGReq4fkroeTQUcJsjmJM= + integrity sha512-knK9sGskIg2T7OnYLdZ2hZXn0CtDrAIBxYQLpmEf0BqfdWnwmM1weccUl5+4EdA44tzNSFAuxITPbXtPehUB3g== dependencies: node-fetch "~1.7.1" figures@^2.0.0: version "2.0.0" resolved "https://registry.yarnpkg.com/figures/-/figures-2.0.0.tgz#3ab1a2d2a62c8bfb431a0c94cb797a2fce27c962" - integrity sha1-OrGi0qYsi/tDGgyUy3l6L84nyWI= + integrity sha512-Oa2M9atig69ZkfwiApY8F2Yy+tzMbazyvqv21R0NsSC8floSOC09BbT1ITWAdoMGQvJ/aZnR1KMwdx9tvHnTNA== dependencies: escape-string-regexp "^1.0.5" @@ -9076,17 +6707,17 @@ file-entry-cache@^5.0.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= + integrity sha512-RLoqTXE8/vPmMuTI88DAzhMYC99I8BWv7zYP4A1puo5HIjEJ5EX48ighy4ZyKMG9EDXxBgW6e++cn7d1xuFghA== file-type@^4.2.0: version "4.4.0" resolved "https://registry.yarnpkg.com/file-type/-/file-type-4.4.0.tgz#1b600e5fca1fbdc6e80c0a70c71c8dba5f7906c5" - integrity sha1-G2AOX8ofvcboDApwxxyNul95BsU= + integrity sha512-f2UbFQEk7LXgWpi5ntcO86OeA/cC80fuDDDaX/fZ2ZGel+AF7leRQqBBW1eJNiiQkrZlAoM6P+VYP5P6bOlDEQ== 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= + integrity sha512-Iq1nJ6D2+yIO4c8HHg4fyVb8mAJieo1Oloy1mLLaB2PvezNedhBVm+QU7g0qM42aiMbRXTxKKwGD17rjKNJYVQ== file-type@^6.1.0: version "6.2.0" @@ -9103,38 +6734,10 @@ 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" - integrity sha1-wcS5vuPglyXdsQa3XB4wH+LxiyY= - filename-reserved-regex@^2.0.0: version "2.0.0" resolved "https://registry.yarnpkg.com/filename-reserved-regex/-/filename-reserved-regex-2.0.0.tgz#abf73dfab735d045440abfea2d91f389ebbfa229" - integrity sha1-q/c9+rc10EVECr/qLZHzieu/oik= + integrity sha512-lc1bnsSr4L4Bdif8Xb/qrtokGbq5zlsms/CYH8PP+WtCkGNF65DPiQY8vG3SakEdRn8Dlnm+gW/qWKKjS5sZzQ== filenamify@^2.0.0: version "2.1.0" @@ -9145,21 +6748,10 @@ filenamify@^2.0.0: strip-outer "^1.0.0" trim-repeated "^1.0.0" -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= + integrity sha512-VcpLTWqWDiTerugjj8e3+esbg+skS3M9e54UuR3iCeIDMXCLTsAH8hTSzDQU/X6/6t3eYkOKoZSef2PlU6U1XQ== dependencies: extend-shallow "^2.0.1" is-number "^3.0.0" @@ -9173,17 +6765,17 @@ fill-range@^7.0.1: 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== +finalhandler@1.2.0: + version "1.2.0" + resolved "https://registry.yarnpkg.com/finalhandler/-/finalhandler-1.2.0.tgz#7d23fe5731b207b4640e4fcd00aec1f9207a7b32" + integrity sha512-5uXcUVftlQMFnWC9qu/svkWv3GTd2PfUhK/3PLkYNAe7FbqJMt3515HaxE6eRL74GdsriiwujiawdaB1BpEISg== dependencies: debug "2.6.9" encodeurl "~1.0.2" escape-html "~1.0.3" - on-finished "~2.3.0" + on-finished "2.4.1" parseurl "~1.3.3" - statuses "~1.5.0" + statuses "2.0.1" unpipe "~1.0.0" find-up@3.0.0, find-up@^3.0.0: @@ -9204,15 +6796,15 @@ find-up@5.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= + integrity sha512-jvElSjyuo4EMQGoTwo1uJU5pQMwTW5lS1x05zzfJuTIyLR3zwO27LYrxNg+dlvKpGOuGy/MzBdXh80g0ve5+HA== dependencies: path-exists "^2.0.0" pinkie-promise "^2.0.0" -find-up@^2.0.0, find-up@^2.1.0: +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= + integrity sha512-NWzkk0jSJtTt08+FBFMvXoeZnOJD+jTtsRmBYbAIzJdX6l7dLgR7CTubCM5/eDdPUBvLCeVasP1brfVR/9/EZQ== dependencies: locate-path "^2.0.0" @@ -9224,11 +6816,6 @@ find-up@^4.1.0: locate-path "^5.0.0" path-exists "^4.0.0" -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-cache@^2.0.1: version "2.0.1" resolved "https://registry.yarnpkg.com/flat-cache/-/flat-cache-2.0.1.tgz#5d296d6f04bda44a4630a301413bdbc2ec085ec0" @@ -9245,6 +6832,11 @@ flat@^4.1.0: dependencies: is-buffer "~2.0.3" +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== + flatted@^2.0.0: version "2.0.2" resolved "https://registry.yarnpkg.com/flatted/-/flatted-2.0.2.tgz#4575b21e2bcee7434aa9be662f4b7b5f9c2b5138" @@ -9253,17 +6845,17 @@ flatted@^2.0.0: flow-stoplight@^1.0.0: version "1.0.0" resolved "https://registry.yarnpkg.com/flow-stoplight/-/flow-stoplight-1.0.0.tgz#4a292c5bcff8b39fa6cc0cb1a853d86f27eeff7b" - integrity sha1-SiksW8/4s5+mzAyxqFPYbyfu/3s= + integrity sha512-rDjbZUKpN8OYhB0IE/vY/I8UWO/602IIJEU/76Tv4LvYnwHCk0BCsvz4eRr9n+FQcri7L5cyaXOo0+/Kh4HisA== fnv1a@^1.0.1: - version "1.0.1" - resolved "https://registry.yarnpkg.com/fnv1a/-/fnv1a-1.0.1.tgz#915e2d6d023c43d5224ad9f6d2a3c4156f5712f5" - integrity sha1-kV4tbQI8Q9UiStn20qPEFW9XEvU= + version "1.1.1" + resolved "https://registry.yarnpkg.com/fnv1a/-/fnv1a-1.1.1.tgz#4e01d51bae60735d00e54ffde02581fe2e74f465" + integrity sha512-S2HviLR9UyNbt8R+vU6YeQtL8RliPwez9DQEVba5MAvN3Od+RSgKUSL2+qveOMt3owIeBukKoRu2enoOck5uag== -follow-redirects@^1.10.0, follow-redirects@^1.12.1: - version "1.14.4" - resolved "https://registry.yarnpkg.com/follow-redirects/-/follow-redirects-1.14.4.tgz#838fdf48a8bbdd79e52ee51fb1c94e3ed98b9379" - integrity sha512-zwGkiSXC1MUJG/qmeIFH2HBJx9u0V46QGUe3YR1fXG8bXQxq7fLj0RjLZQ5nubr9qNJUZrH+xUcwXEoXNpfS+g== +follow-redirects@^1.12.1, follow-redirects@^1.14.9: + version "1.15.2" + resolved "https://registry.yarnpkg.com/follow-redirects/-/follow-redirects-1.15.2.tgz#b460864144ba63f2681096f274c4e57026da2c13" + integrity sha512-VQLG33o04KaQ8uYi2tVNbdrWp1QWxNNea+nmIB4EVM28v0hmP17z7aG1+wAkNzVq4KeXTq3221ye5qTJP91JwA== for-each@^0.3.3: version "0.3.3" @@ -9272,45 +6864,25 @@ for-each@^0.3.3: dependencies: is-callable "^1.1.3" -for-in@^1.0.1, for-in@^1.0.2: +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" + integrity sha512-7EwmXrOjyL+ChxMhmG5lnW9MPt1aIeZEwKhQzoBUdTV0N3zuwWDZYVJatDvZ2OyzPUvdIAZDsCetk3coyMfcnQ== -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= +foreach@^2.0.4: + version "2.0.6" + resolved "https://registry.yarnpkg.com/foreach/-/foreach-2.0.6.tgz#87bcc8a1a0e74000ff2bf9802110708cfb02eb6e" + integrity sha512-k6GAGDyqLe9JaebCsFCoudPPWfihKu8pylYXRlqP1J7ms39iPoTtk2fviNglIeQEwdh0bQeKJ01ZPyuyQvKzwg== 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" + integrity sha512-j0KLYPhm6zeac4lz3oJ3o65qvgQCcPubiyotZrXqEaG4hNagNYO8qdlUrX5vwqv9ohqeT/Z3j6+yW067yWWdUw== -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-encoder@1.7.1: + version "1.7.1" + resolved "https://registry.yarnpkg.com/form-data-encoder/-/form-data-encoder-1.7.1.tgz#ac80660e4f87ee0d3d3c3638b7da8278ddb8ec96" + integrity sha512-EFRDrsMm/kyqbTQocNvRXMLjc7Es2Vk+IQFx/YW7hkUH1eBl4J1fqiP34l74Yt0pFLCNpc06fkbVk00008mzjg== form-data@^2.2.0: version "2.5.1" @@ -9321,10 +6893,10 @@ form-data@^2.2.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== +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" @@ -9357,46 +6929,32 @@ fp-ts@^1.0.0: 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= + integrity sha512-GMBAbW9antB8iZRHLoGw0b3HANt57diZYFO/HL1JGIC1MjKrdmhxvrJbupnVvpys0zsz7yBApXdQyfepKly2kA== 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= + integrity sha512-zJ2mQYM18rEFOudeV4GShTGIQ7RbzA7ozbU9I/XBpm7kqgMywgmylMwXHxZJmkVoYkna9d2pVXVXPdYTP9ej8Q== from2@^2.1.1: version "2.3.0" resolved "https://registry.yarnpkg.com/from2/-/from2-2.3.0.tgz#8bfb5502bde4a4d36cfdeea007fcca21d7e382af" - integrity sha1-i/tVAr3kpNNs/e6gB/zKIdfjgq8= + integrity sha512-OMcX/4IC/uqEPVgGeyfN22LJk6AZrMkRZHxcHBMBvHScDGgwTm2GT2Wkgtocyd3JfZffjj2kYUDXXII0Fk9W0g== dependencies: inherits "^2.0.1" readable-stream "^2.0.0" -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-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= + integrity sha512-UvSPKyhMn6LEd/WpUaV9C9t3zATuqoqfWc3QdPhPLb58prN9tqYPlPWi8Krxi44loBoUzlobqZ3+8tGpxxSzwA== dependencies: graceful-fs "^4.1.2" jsonfile "^2.1.0" @@ -9431,7 +6989,7 @@ fs-extra@^8.1.0: jsonfile "^4.0.0" universalify "^0.1.0" -fs-extra@^9.0.1, fs-extra@^9.1.0: +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== @@ -9456,7 +7014,7 @@ fs-readdir-recursive@^1.1.0: fs.realpath@^1.0.0: version "1.0.0" resolved "https://registry.yarnpkg.com/fs.realpath/-/fs.realpath-1.0.0.tgz#1504ad2523158caa40db4a2787cb01411994ea4f" - integrity sha1-FQStJSMVjKpA20onh8sBQRmU6k8= + integrity sha512-OO0pH2lK6a0hZnAdau5ItzHPI6pUlvI7jMVnxUQRtw4owF2wk8lOSabtGDCTP4Ggrg2MbGnWO9X8K1t4+fGMDw== fsevents@^1.2.7: version "1.2.13" @@ -9466,7 +7024,7 @@ fsevents@^1.2.7: bindings "^1.5.0" nan "^2.12.1" -fsevents@~2.1.1, fsevents@~2.1.2: +fsevents@~2.1.1: version "2.1.3" resolved "https://registry.yarnpkg.com/fsevents/-/fsevents-2.1.3.tgz#fb738703ae8d2f9fe900c33836ddebee8b97f23e" integrity sha512-Auw9a4AxqWpa9GUfj370BMPzzyncfBABW8Mab7BGWBYDj4Isgq+cDKtx0i6u9jcX9pQDnswsaaOTgTmA5pEjuQ== @@ -9481,12 +7039,27 @@ function-bind@^1.1.1: resolved "https://registry.yarnpkg.com/function-bind/-/function-bind-1.1.1.tgz#a56899d3ea3c9bab874bb9773b7c5ede92f4895d" integrity sha512-yIovAzMX49sF8Yl58fSCWJ5svSLuaibPxXQJFLmBObTuCr0Mf1KiPopGM9NiFjiYBCbfaa2Fh6breQ6ANVTI0A== +function.prototype.name@^1.1.5: + version "1.1.5" + resolved "https://registry.yarnpkg.com/function.prototype.name/-/function.prototype.name-1.1.5.tgz#cce0505fe1ffb80503e6f9e46cc64e46a12a9621" + integrity sha512-uN7m/BzVKQnCUF/iW8jYea67v++2u7m5UgENbHRtdDVclOUP+FMPlCNdmk0h/ysGyo2tavMJEDqJAkJdRa1vMA== + dependencies: + call-bind "^1.0.2" + define-properties "^1.1.3" + es-abstract "^1.19.0" + functions-have-names "^1.2.2" + functional-red-black-tree@^1.0.1, 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= + integrity sha512-dsKNQNdj6xA3T+QlADDA7mOSlX0qiMINjn0cgr+eGHGsbSHzTabcIogz2+p/iqP1Xs6EP/sS2SbqH+brGTbq0g== -ganache-cli@^6.0.3, ganache-cli@^6.1.0, ganache-cli@^6.12.2: +functions-have-names@^1.2.2: + version "1.2.3" + resolved "https://registry.yarnpkg.com/functions-have-names/-/functions-have-names-1.2.3.tgz#0404fe4ee2ba2f607f0e0ec3c80bae994133b834" + integrity sha512-xckBUXyTIqT97tq2x2AMb+g163b5JFysYk0x4qxNFwbfQkmNZoiRHb6sPzI9/QV33WeuvVYBUIiD4NzNIyqaRQ== + +ganache-cli@^6.0.3: version "6.12.2" resolved "https://registry.yarnpkg.com/ganache-cli/-/ganache-cli-6.12.2.tgz#c0920f7db0d4ac062ffe2375cb004089806f627a" integrity sha512-bnmwnJDBDsOWBUP8E/BExWf85TsdDEFelQSzihSJm9VChVO1SHp94YXLP5BlA4j/OTxp0wR4R1Tje9OHOuAJVw== @@ -9495,10 +7068,27 @@ ganache-cli@^6.0.3, ganache-cli@^6.1.0, ganache-cli@^6.12.2: source-map-support "0.5.12" yargs "13.2.4" +ganache@7.4.0: + version "7.4.0" + resolved "https://registry.yarnpkg.com/ganache/-/ganache-7.4.0.tgz#24c56a55c15f6031ffbbb8a634fbb52d752f155e" + integrity sha512-e1x0ZJsJ5zUP+hWtpSNv+FaavRdcrQhQwe+QZ4kVon5mDm6RgFpe3PzNDJXg82AeqqslohJeK9UinZbZzjewjQ== + dependencies: + "@trufflesuite/bigint-buffer" "1.1.10" + "@types/bn.js" "^5.1.0" + "@types/lru-cache" "5.1.1" + "@types/seedrandom" "3.0.1" + emittery "0.10.0" + keccak "3.0.1" + leveldown "6.1.0" + secp256k1 "4.0.2" + optionalDependencies: + bufferutil "4.0.5" + utf-8-validate "5.0.7" + 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= + integrity sha512-14x4kjc6lkD3ltw589k0NrPD6cCNTD6CWoVUNpB85+DrtONoZn+Rug6xZU5RvSC4+TZPxA5AnBibQYAvZn41Hg== dependencies: aproba "^1.0.3" console-control-strings "^1.0.0" @@ -9509,11 +7099,6 @@ gauge@~2.7.3: 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-browser-rtc@^1.0.0: version "1.1.0" resolved "https://registry.yarnpkg.com/get-browser-rtc/-/get-browser-rtc-1.1.0.tgz#d1494e299b00f33fc8e9d6d3343ba4ba99711a2c" @@ -9524,7 +7109,7 @@ get-caller-file@^1.0.1: 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: +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== @@ -9532,50 +7117,26 @@ get-caller-file@^2.0.1: 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" + integrity sha512-Hm0ixYtaSZ/V7C8FJrtZIuBBI+iSgL+1Aq82zSu8VQNB4S3Gk8e7Qs3VwBDJAhmRZcFqkl3tQu36g/Foh5I5ig== -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== +get-intrinsic@^1.0.2, get-intrinsic@^1.1.0, get-intrinsic@^1.1.1, get-intrinsic@^1.1.2: + version "1.1.3" + resolved "https://registry.yarnpkg.com/get-intrinsic/-/get-intrinsic-1.1.3.tgz#063c84329ad93e83893c7f4f243ef63ffa351385" + integrity sha512-QJVz1Tj7MS099PevUG5jvnt9tSkXN8K14dxQlikJuPt4uD9hHAHjLyLBiLR5zELelBdD9QNRAXZzsJx0WaDL9A== dependencies: function-bind "^1.1.1" has "^1.0.3" - has-symbols "^1.0.1" + has-symbols "^1.0.3" 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= + integrity sha512-x5UJKlgeUiNT8nyo/AcnwLnZuZNcSjSw0kogRB+Whd1fjjFq4B1hySFxSFWWSn4mIBzg3sRNUDFYc4g5gjPoLg== get-proxy@^2.0.0: version "2.1.0" @@ -9587,12 +7148,12 @@ get-proxy@^2.0.0: get-stream@3.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= + integrity sha512-GlhdIUuVakc8SJ6kK0zAFbiGzRFzNnY4jUuEbV9UROo4Y+0Ny4fjvcZFVTeDA4odpFyOQzaw6hXukJSq/f28sQ== 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= + integrity sha512-AUGhbbemXxrZJRD5cDvKtQxLuYaIbNtDTK8YqupCI393Q2KSTreEsLUN3ZxAWFGiKTzL6nKuzfcIvieflUX9qA== dependencies: object-assign "^4.0.1" pinkie-promise "^2.0.0" @@ -9611,7 +7172,7 @@ get-stream@^5.1.0: dependencies: pump "^3.0.0" -get-stream@^6.0.0: +get-stream@^6.0.0, get-stream@^6.0.1: version "6.0.1" resolved "https://registry.yarnpkg.com/get-stream/-/get-stream-6.0.1.tgz#a262d8eef67aced57c2852ad6167526a43cbf7b7" integrity sha512-ts6Wi+2j3jQjqi70w5AlN8DFnkSwC+MqmxEzdEALB2qXZYV3X/b1CTfgPLGJNMeAWxdPfU8FO1ms3NUfaHCPYg== @@ -9627,12 +7188,12 @@ get-symbol-description@^1.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= + integrity sha512-Ln0UQDlxH1BapMu3GPtf7CuYNwRZf2gwCuPqbyG6pB8WfmFpzqcy4xtAaAMUhnNqjMKTiCPZG2oMT3YSx8U2NA== getpass@^0.1.1: version "0.1.7" resolved "https://registry.yarnpkg.com/getpass/-/getpass-0.1.7.tgz#5eff8e3e684d569ae4cb2b1282604e8ba62149fa" - integrity sha1-Xv+OPmhNVprkyysSgmBOi6YhSfo= + integrity sha512-0fzj9JxOLfJ+XGLhR8ze3unN0KZCgZwiSSDz168VERjK8Wl8kVSdcu2kspd4s4wtAa1y/qrVRiAA0WclVsu0ng== dependencies: assert-plus "^1.0.0" @@ -9648,25 +7209,10 @@ ghost-testrpc@^0.0.2: version "1.0.0" resolved "https://tgz.pm2.io/gkt-1.0.0.tgz#405502b007f319c3f47175c4474527300f2ab5ad" -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: +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= + integrity sha512-E8Ak/2+dZY6fnzlR7+ueWvhsH1SjHr4jjss4YS/h4py44jY9MhK/VFdaZJAWDz6BbL21KeteKxFSFpq8OS5gVA== dependencies: is-glob "^3.1.0" path-dirname "^1.0.0" @@ -9678,20 +7224,6 @@ glob-parent@^5.1.2, glob-parent@~5.1.0, glob-parent@~5.1.2: 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" @@ -9704,10 +7236,10 @@ glob@7.1.3: once "^1.3.0" path-is-absolute "^1.0.0" -glob@7.1.6: - version "7.1.6" - resolved "https://registry.yarnpkg.com/glob/-/glob-7.1.6.tgz#141f33b81a7c2492e125594307480c46679278a6" - integrity sha512-LwaxwyZ72Lk7vZINtNNrywX0ZuLyStrdDtabefZKAY5ZGJhVtgdznluResxNmPitE0SAO+O26sWTHeKSI2wMBA== +glob@7.2.0: + version "7.2.0" + resolved "https://registry.yarnpkg.com/glob/-/glob-7.2.0.tgz#d15535af7732e02e948f4c41628bd910293f6023" + integrity sha512-lmLf6gtyrPq8tTjSmrO94wBeQbFR3HbLHbuyD69wuyQkImp2hWqMGB47OX65FBkPffO641IP9jWa1z4ivqG26Q== dependencies: fs.realpath "^1.0.0" inflight "^1.0.4" @@ -9716,10 +7248,10 @@ glob@7.1.6: once "^1.3.0" path-is-absolute "^1.0.0" -glob@^5.0.15, glob@^5.0.3: +glob@^5.0.15: version "5.0.15" resolved "https://registry.yarnpkg.com/glob/-/glob-5.0.15.tgz#1bc936b9e02f4a603fcc222ecf7633d30b8b93b1" - integrity sha1-G8k2ueAvSmA/zCIuz3Yz0wuLk7E= + integrity sha512-c9IPMazfRITpmAAKi22dK1VKxGDX9ehhqfABDriL/lzO92xcUKEJPQHrVA/2YHSNFB4iFlykVmWvwo48nr3OxA== dependencies: inflight "^1.0.4" inherits "2" @@ -9727,34 +7259,25 @@ glob@^5.0.15, glob@^5.0.3: once "^1.3.0" path-is-absolute "^1.0.0" -glob@^7.0.0, glob@^7.0.5, glob@^7.1.1, glob@^7.1.2, glob@^7.1.3, glob@^7.1.6: - version "7.2.0" - resolved "https://registry.yarnpkg.com/glob/-/glob-7.2.0.tgz#d15535af7732e02e948f4c41628bd910293f6023" - integrity sha512-lmLf6gtyrPq8tTjSmrO94wBeQbFR3HbLHbuyD69wuyQkImp2hWqMGB47OX65FBkPffO641IP9jWa1z4ivqG26Q== +glob@^7.0.0, glob@^7.0.5, glob@^7.1.2, glob@^7.1.3, glob@^7.2.0: + version "7.2.3" + resolved "https://registry.yarnpkg.com/glob/-/glob-7.2.3.tgz#b8df0fb802bbfa8e89bd1d938b4e16578ed44f2b" + integrity sha512-nFR0zLpU2YCaRxwoCJvL6UvCH2JFyFVIvwTLsIf21AuHlMskA1hhTdk+LlYJtOlYt9v6dvszD2BGRqBL+iQK9Q== dependencies: fs.realpath "^1.0.0" inflight "^1.0.4" inherits "2" - minimatch "^3.0.4" + minimatch "^3.1.1" once "^1.3.0" path-is-absolute "^1.0.0" global-dirs@^0.1.1: version "0.1.1" resolved "https://registry.yarnpkg.com/global-dirs/-/global-dirs-0.1.1.tgz#b319c0dd4607f353f3be9cca4c72fc148c49f445" - integrity sha1-sxnA3UYH81PzvpzKTHL8FIxJ9EU= + integrity sha512-NknMLn7F2J7aflwFOlGdNIuCDpN3VGoSoB+aap3KABFWbHVn1TCgFC+np23J8W2BiZbjfEw3BFBycSMv1AFblg== dependencies: ini "^1.3.4" -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" @@ -9762,17 +7285,6 @@ 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" @@ -9790,46 +7302,15 @@ global@~4.4.0: min-document "^2.19.0" process "^0.11.10" -globals@^11.1.0, globals@^11.7.0: +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@^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.3: - version "11.0.3" - resolved "https://registry.yarnpkg.com/globby/-/globby-11.0.3.tgz#9b1f0cb523e171dd1ad8c7b2a9fb4b644b9593cb" - integrity sha512-ffdmosjA807y7+lA1NM0jELARVmYul/715xiILEjo3hBLPTcirgQNnXECn5g3mtR8TOLCVbkfua1Hpen25/Xcg== - 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" + resolved "https://registry.yarnpkg.com/globals/-/globals-11.12.0.tgz#ab8795338868a0babd8525758018c2a7eb95c42e" + integrity sha512-WOBp/EEGUiIsJSp7wcv/y6MO+lV9UoncWqxuFfm8eBwzWNgyfBd6Gz+IeKQ9jCmyhoH99g15M3T+QaVHFjizVA== -globby@11.0.4: - version "11.0.4" - resolved "https://registry.yarnpkg.com/globby/-/globby-11.0.4.tgz#2cbaff77c2f2a62e71e9b2813a67b97a3a3001a5" - integrity sha512-9O4MVG9ioZJ08ffbcyVYyLOJLk5JQ688pJ4eMGLpdWLHq/Wr1D9BlriLQyL0E+jbkuePVZXYFj47QM/v093wHg== - 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" +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== globby@^10.0.1: version "10.0.2" @@ -9845,10 +7326,24 @@ globby@^10.0.1: merge2 "^1.2.3" slash "^3.0.0" -google-protobuf@^3.13.0, google-protobuf@^3.17.3: - version "3.18.1" - resolved "https://registry.yarnpkg.com/google-protobuf/-/google-protobuf-3.18.1.tgz#31de10b65e833aa5bbd44680e8a748fa54c920f6" - integrity sha512-cDqSamZ8rGs+pOzhIsBte7wpezUKg/sggeptDWN5odhnRY/eDLa5VWLeNeQvcfiqjS3yUwgM+6OePCJMB7aWZA== +got@12.1.0: + version "12.1.0" + resolved "https://registry.yarnpkg.com/got/-/got-12.1.0.tgz#099f3815305c682be4fd6b0ee0726d8e4c6b0af4" + integrity sha512-hBv2ty9QN2RdbJJMK3hesmSkFTjVIHyIDDbssCKnSmq62edGgImJWD10Eb1k77TiV1bxloxqcFAVK8+9pkhOig== + dependencies: + "@sindresorhus/is" "^4.6.0" + "@szmarczak/http-timer" "^5.0.1" + "@types/cacheable-request" "^6.0.2" + "@types/responselike" "^1.0.0" + cacheable-lookup "^6.0.4" + cacheable-request "^7.0.2" + decompress-response "^6.0.0" + form-data-encoder "1.7.1" + get-stream "^6.0.1" + http2-wrapper "^2.1.10" + lowercase-keys "^3.0.0" + p-cancelable "^3.0.0" + responselike "^2.0.0" got@9.6.0: version "9.6.0" @@ -9867,6 +7362,23 @@ got@9.6.0: to-readable-stream "^1.0.0" url-parse-lax "^3.0.0" +got@^11.8.5: + version "11.8.5" + resolved "https://registry.yarnpkg.com/got/-/got-11.8.5.tgz#ce77d045136de56e8f024bebb82ea349bc730046" + integrity sha512-o0Je4NvQObAuZPHLFoRSkdG2lTgtcynqymzg2Vupdx6PorhaT5MCbIyXG6d4D94kk8ZG57QeosgdiqfJWhEhlQ== + dependencies: + "@sindresorhus/is" "^4.0.0" + "@szmarczak/http-timer" "^4.0.5" + "@types/cacheable-request" "^6.0.1" + "@types/responselike" "^1.0.0" + cacheable-lookup "^5.0.3" + cacheable-request "^7.0.2" + decompress-response "^6.0.0" + http2-wrapper "^1.0.0-beta.5.2" + lowercase-keys "^2.0.0" + p-cancelable "^2.0.0" + responselike "^2.0.0" + got@^7.1.0: version "7.1.0" resolved "https://registry.yarnpkg.com/got/-/got-7.1.0.tgz#05450fd84094e6bbea56f451a43a9c289166385a" @@ -9910,111 +7422,28 @@ got@^8.3.1: url-parse-lax "^3.0.0" url-to-options "^1.0.1" -graceful-fs@4.X, graceful-fs@^4.0.0, 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, graceful-fs@^4.2.4: - version "4.2.8" - resolved "https://registry.yarnpkg.com/graceful-fs/-/graceful-fs-4.2.8.tgz#e412b8d33f5e006593cbd3cee6df9f2cebbe802a" - integrity sha512-qkIilPUYcNhJpd33n0GBXTB1MMPp14TxEsEs0pTrsSVucApsYzW5V+Q8Qxhik6KU3evy+qkAAowTByymK0avdg== - -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.15.0: - version "0.15.0" - resolved "https://registry.yarnpkg.com/graphql-extensions/-/graphql-extensions-0.15.0.tgz#3f291f9274876b0c289fa4061909a12678bd9817" - integrity sha512-bVddVO8YFJPwuACn+3pgmrEg6I8iBuYLuwvxiE+lcQQ7POotVZxm2rgGw0PvVYmWWf3DT7nTVDZ5ROh/ALp8mA== - dependencies: - "@apollographql/apollo-tools" "^0.5.0" - apollo-server-env "^3.1.0" - apollo-server-types "^0.9.0" - -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" +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, graceful-fs@^4.2.4: + version "4.2.10" + resolved "https://registry.yarnpkg.com/graceful-fs/-/graceful-fs-4.2.10.tgz#147d3a006da4ca3ce14728c7aefc287c367d7a6c" + integrity sha512-9ByhssR2fPVsNZj478qUUbKfmL0+t5BDVyjShtyZZLiK7ZDAArFFfopyOTj0M05wE2tJPisA4iTnnXl2YoPvOA== -graphql-tag@^2.11.0, graphql-tag@^2.12.3: - version "2.12.5" - resolved "https://registry.yarnpkg.com/graphql-tag/-/graphql-tag-2.12.5.tgz#5cff974a67b417747d05c8d9f5f3cb4495d0db8f" - integrity sha512-5xNhP4063d16Pz3HBtKprutsPrmHZi5IdUGOWRxA2B6VF7BIRGOHZ5WQvDmJXZuPcBg7rYwaFxvQYjqkSdR3TQ== +graphql-tag@^2.11.0, graphql-tag@^2.12.6: + version "2.12.6" + resolved "https://registry.yarnpkg.com/graphql-tag/-/graphql-tag-2.12.6.tgz#d441a569c1d2537ef10ca3d1633b48725329b5f1" + integrity sha512-FdSNcu2QQcWnM2VNvSCCDCVS5PpPqpzgFT8+GXzqJuoDd0CBncxCY278u4mhRO7tMgo2JjgJA5aZ+nWSQ/Z+xg== dependencies: tslib "^2.1.0" -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-ws@^4.4.1: - version "4.9.0" - resolved "https://registry.yarnpkg.com/graphql-ws/-/graphql-ws-4.9.0.tgz#5cfd8bb490b35e86583d8322f5d5d099c26e365c" - integrity sha512-sHkK9+lUm20/BGawNEWNtVAeJzhZeBg21VmvmLoT5NdGVeZWv5PdIhkcayQIAgjSyyQ17WMKmbDijIPG2On+Ag== - graphql@^15.3.0: - version "15.6.1" - resolved "https://registry.yarnpkg.com/graphql/-/graphql-15.6.1.tgz#9125bdf057553525da251e19e96dab3d3855ddfc" - integrity sha512-3i5lu0z6dRvJ48QP9kFxBkJ7h4Kso7PS8eahyTFz5Jm6CvQfLtNIE8LX9N6JLnXTuwR+sIYnXzaWp6anOg0QQw== + version "15.8.0" + resolved "https://registry.yarnpkg.com/graphql/-/graphql-15.8.0.tgz#33410e96b012fa3bdb1091cc99a94769db212b38" + integrity sha512-5gghUc24tP9HRznNpV2+FIoq3xKkj5dTQqf4v0CpdPbFVwFkWoxOM+o+2OC9ZSvjEMTjfmG9QT+gcvggTwW1zw== 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" - hamt-sharding@^2.0.0: version "2.0.1" resolved "https://registry.yarnpkg.com/hamt-sharding/-/hamt-sharding-2.0.1.tgz#f45686d0339e74b03b233bee1bde9587727129b6" @@ -10038,7 +7467,7 @@ handlebars@^4.0.1: 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= + integrity sha512-Oqluz6zhGX8cyRaTQlFMPw80bSJVG2x/cFb8ZPhUILGgHka9SsokCCOQgpveePerqidZOrT14ipqfJb7ILcW5Q== har-validator@~5.1.3: version "5.1.5" @@ -10049,43 +7478,51 @@ har-validator@~5.1.3: har-schema "^2.0.0" hardhat-contract-sizer@^2.5.1: - version "2.5.1" - resolved "https://registry.yarnpkg.com/hardhat-contract-sizer/-/hardhat-contract-sizer-2.5.1.tgz#cb0b8dd32593b7a28c8d96ecde04841292bbd603" - integrity sha512-28yRb73e30aBVaZOOHTlHZFIdIasA/iFunIehrUviIJTubvdQjtSiQUo2wexHFtt71mQeMPP8qjw2sdbgatDnQ== + version "2.6.1" + resolved "https://registry.yarnpkg.com/hardhat-contract-sizer/-/hardhat-contract-sizer-2.6.1.tgz#2b0046a55fa1ec96f19fdab7fde372377401c874" + integrity sha512-b8wS7DBvyo22kmVwpzstAQTdDCThpl/ySBqZh5ga9Yxjf61/uTL12TEg5nl7lDeWy73ntEUzxMwY6XxbQEc2wA== dependencies: chalk "^4.0.0" cli-table3 "^0.6.0" hardhat-dependency-compiler@^1.1.1: - version "1.1.1" - resolved "https://registry.yarnpkg.com/hardhat-dependency-compiler/-/hardhat-dependency-compiler-1.1.1.tgz#0bfe713d450a7fdad14a210b7a9b8a32e56cc744" - integrity sha512-2xubH8aPojhMGbILFlfL28twu6l/5Tyrj4Dpkogvycse6YegKW9GuGA3rnbPH0KP+Nv2xT626ZuR2Ys+w3ifPw== + version "1.1.3" + resolved "https://registry.yarnpkg.com/hardhat-dependency-compiler/-/hardhat-dependency-compiler-1.1.3.tgz#1e49e23f68878bd713f860c66648a711bc4a4a79" + integrity sha512-bCDqsOxGST6WkbMvj4lPchYWidNSSBm5CFnkyAex1T11cGmr9otZTGl81W6f9pmrtBXbKCvr3OSuNJ6Q394sAw== 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== + version "1.0.9" + resolved "https://registry.yarnpkg.com/hardhat-gas-reporter/-/hardhat-gas-reporter-1.0.9.tgz#9a2afb354bc3b6346aab55b1c02ca556d0e16450" + integrity sha512-INN26G3EW43adGKBNzYWOlI3+rlLnasXTwW79YNnUhXPDa+yHESgt639dJEs37gCjhkbNKcRRJnomXEuMFBXJg== dependencies: - eth-gas-reporter "^0.2.20" + array-uniq "1.0.3" + eth-gas-reporter "^0.2.25" sha1 "^1.1.1" -hardhat@^2.6.8: - version "2.6.8" - resolved "https://registry.yarnpkg.com/hardhat/-/hardhat-2.6.8.tgz#9ef6f8c16f9044acb95609d15a760b89177b8181" - integrity sha512-iRVd5DgcIVV3rNXMlogOfwlXAhHp7Wy/OjjFiUhTey8Unvo6oq5+Is5ANiKVN+Iw07Pcb/HpkGt7jCB6a4ITgg== +hardhat@^2.11.2: + version "2.11.2" + resolved "https://registry.yarnpkg.com/hardhat/-/hardhat-2.11.2.tgz#c81388630255823bb1717ec07c4ee651b1fbe97f" + integrity sha512-BdsXC1CFJQDJKmAgCwpmGhFuVU6dcqlgMgT0Kg/xmFAFVugkpYu6NRmh4AaJ3Fah0/BR9DOR4XgQGIbg4eon/Q== dependencies: - "@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" + "@metamask/eth-sig-util" "^4.0.0" + "@nomicfoundation/ethereumjs-block" "^4.0.0" + "@nomicfoundation/ethereumjs-blockchain" "^6.0.0" + "@nomicfoundation/ethereumjs-common" "^3.0.0" + "@nomicfoundation/ethereumjs-evm" "^1.0.0" + "@nomicfoundation/ethereumjs-rlp" "^4.0.0" + "@nomicfoundation/ethereumjs-statemanager" "^1.0.0" + "@nomicfoundation/ethereumjs-trie" "^5.0.0" + "@nomicfoundation/ethereumjs-tx" "^4.0.0" + "@nomicfoundation/ethereumjs-util" "^8.0.0" + "@nomicfoundation/ethereumjs-vm" "^6.0.0" + "@nomicfoundation/solidity-analyzer" "^0.0.3" "@sentry/node" "^5.18.1" - "@solidity-parser/parser" "^0.14.0" "@types/bn.js" "^5.1.0" "@types/lru-cache" "^5.1.0" abort-controller "^3.0.0" adm-zip "^0.4.16" + aggregate-error "^3.0.0" ansi-escapes "^4.3.0" chalk "^2.4.2" chokidar "^3.4.0" @@ -10093,81 +7530,74 @@ hardhat@^2.6.8: debug "^4.1.1" enquirer "^2.3.0" env-paths "^2.2.0" - eth-sig-util "^2.5.2" - ethereum-cryptography "^0.1.2" + ethereum-cryptography "^1.0.3" 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" + glob "7.2.0" immutable "^4.0.0-rc.12" io-ts "1.10.4" + keccak "^3.0.2" lodash "^4.17.11" - merkle-patricia-tree "^4.2.0" mnemonist "^0.38.0" - mocha "^7.1.2" - node-fetch "^2.6.0" + mocha "^10.0.0" + p-map "^4.0.0" qs "^6.7.0" raw-body "^2.4.1" resolve "1.17.0" semver "^6.3.0" - 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" + undici "^5.4.0" + uuid "^8.3.2" ws "^7.4.6" 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= + integrity sha512-C8vBJ8DwUCx19vhm7urhTuUsr4/IyP6l4VzNQDv+ryHQObW3TTTp9yB68WpYgRe2bbaGuZ/se74IqFeVnMnLZg== dependencies: ansi-regex "^2.0.0" -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== - -has-cors@1.1.0: - version "1.1.0" - resolved "https://registry.yarnpkg.com/has-cors/-/has-cors-1.1.0.tgz#5e474793f7ea9843d1bb99c23eef49ff126fff39" - integrity sha1-XkdHk/fqmEPRu5nCPu9J/xJv/zk= +has-bigints@^1.0.1, has-bigints@^1.0.2: + version "1.0.2" + resolved "https://registry.yarnpkg.com/has-bigints/-/has-bigints-1.0.2.tgz#0871bd3e3d51626f6ca0966668ba35d5602d6eaa" + integrity sha512-tSvCKtBr9lkF0Ex0aQiP9N+OpV4zi2r/Nee5VkRDbaqv35RLYMzbwQfFSZZH0kR+Rd6302UJZ2p/bJCEoR3VoQ== has-flag@^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= + integrity sha512-DyYHfIYwAJmjAjSSPKANxI8bFY9YtFrgkAfinBojQ8YJTOuOuav64tMUJv584SES4xl74PmuaevIyaLESHdTAA== 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= + integrity sha512-sKJf1+ceQBr4SMkvQnBDNDtf4TXpVhVGateu0t918bl30FnbE2m4vNLX+VWe/dpjlb+HugGYzW7uQXH98HPEYw== has-flag@^4.0.0: version "4.0.0" resolved "https://registry.yarnpkg.com/has-flag/-/has-flag-4.0.0.tgz#944771fd9c81c81265c4d6941860da06bb59479b" integrity sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ== +has-property-descriptors@^1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/has-property-descriptors/-/has-property-descriptors-1.0.0.tgz#610708600606d36961ed04c196193b6a607fa861" + integrity sha512-62DVLZGoiEBDHQyqG4w9xCuZ7eJEwNmJRWw2VY84Oedb7WFcA27fiEVe8oUQx9hAUJ4ekurquucTGwsyO1XGdQ== + dependencies: + get-intrinsic "^1.1.1" + has-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-symbols@^1.0.0, has-symbols@^1.0.1, has-symbols@^1.0.2, has-symbols@^1.0.3: + version "1.0.3" + resolved "https://registry.yarnpkg.com/has-symbols/-/has-symbols-1.0.3.tgz#bb7b2c4349251dce87b125f7bdf874aa7c8b39f8" + integrity sha512-l3LCuF6MgDNwTDKkdYGEihYjt5pRPbEg46rtlmnSPlUbgmB8LOIrKJbYYFBSbnPaJexMKtiPO8hmeRjRz2Td+A== has-to-string-tag-x@^1.2.0: version "1.4.1" @@ -10186,12 +7616,12 @@ has-tostringtag@^1.0.0: 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= + integrity sha512-8Rf9Y83NBReMnx0gFzA8JImQACstCYWUplepDa9xprwwtmgEZUF0h/i5xSA625zB/I37EtrswSST6OXxwaaIJQ== 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= + integrity sha512-gpG936j8/MzaeID5Yif+577c17TxaDmhuyVgSwtnL/q8UUTySg8Mecb+8Cf1otgLoD7DDH75axp86ER7LFsf3Q== dependencies: get-value "^2.0.3" has-values "^0.1.4" @@ -10200,7 +7630,7 @@ has-value@^0.3.1: 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= + integrity sha512-IBXk4GTsLYdQ7Rvt+GRBrFSVEkmuOUy4re0Xjd9kJSUQpnTrWR4/y9RpfexN9vkAPMFuQoeWKwqzPozRTlasGw== dependencies: get-value "^2.0.6" has-values "^1.0.0" @@ -10209,12 +7639,12 @@ has-value@^1.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= + integrity sha512-J8S0cEdWuQbqD9//tlZxiMuMNmxB8PlEwvYwuxsTmR1G5RXUePEX/SJn7aD0GMLieuZYSwNH0cQuJGwnYunXRQ== 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= + integrity sha512-ODYZC64uqzmtfGMEAX/FvZiRyWLpAC3vYnNunURUnkGVTS+mI0smVsWaPydRBsE3g+ok7h960jChO8mFcWlHaQ== dependencies: is-number "^3.0.0" kind-of "^4.0.0" @@ -10256,7 +7686,7 @@ hashlru@^2.3.0: resolved "https://registry.yarnpkg.com/hashlru/-/hashlru-2.3.0.tgz#5dc15928b3f6961a2056416bb3a4910216fdfb51" integrity sha512-0cMsjjIC8I+D3M44pOQdsy0OHXGLVz6Z0beRuufhKa0KfaD2wGwAev6jILzXsd3/vpnNQJmWyZtIILqM1N+n5A== -he@1.2.0, he@^1.1.1: +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== @@ -10264,7 +7694,7 @@ he@1.2.0, he@^1.1.1: 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= + integrity sha512-i0q9mkOeSuhXw6bGgiQCCBgY/jlZuV/7dZXyZ9c6LcBrqwvT8eT719E9uxE5LiZftdl+z81Ugbg/VvXV4OJOeQ== dependencies: no-case "^2.2.0" upper-case "^1.1.3" @@ -10274,89 +7704,42 @@ highlight.js@^10.4.1: resolved "https://registry.yarnpkg.com/highlight.js/-/highlight.js-10.7.3.tgz#697272e3991356e40c3cac566a74eef681756531" integrity sha512-tzcUFauisWKNHaRkN4Wjl/ZA07gENAjFl3J/c480dprkGTg5EQstgaNFqBfUqCq54kZRIEcreTsAgF/m2quD7A== -highlight.js@^9.15.8: - version "9.18.5" - resolved "https://registry.yarnpkg.com/highlight.js/-/highlight.js-9.18.5.tgz#d18a359867f378c138d6819edfc2a8acd5f29825" - integrity sha512-a5bFyofd/BHCX52/8i8uJkjr9DYwXIPnM/plwI6W7ezItLGqzt7X2G2nXuYSfsIJdkwwj/g9DG1LkcGJI/dDoA== - -highlightjs-solidity@^1.0.18: - 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== - -highlightjs-solidity@^2.0.1: - version "2.0.1" - resolved "https://registry.yarnpkg.com/highlightjs-solidity/-/highlightjs-solidity-2.0.1.tgz#ee1beb6f353d4503aa3a011bbb86577976365b59" - integrity sha512-9YY+HQpXMTrF8HgRByjeQhd21GXAz2ktMPTcs6oWSj5HJR52fgsNoelMOmgigwcpt9j4tu4IVSaWaJB2n2TbvQ== +highlightjs-solidity@^2.0.5: + version "2.0.5" + resolved "https://registry.yarnpkg.com/highlightjs-solidity/-/highlightjs-solidity-2.0.5.tgz#48b945f41886fa49af9f06023e6e87fffc243745" + integrity sha512-ReXxQSGQkODMUgHcWzVSnfDCDrL2HshOYgw3OlIYmfHeRzUPkfJTUIp95pK4CmbiNG2eMTOmNLpfCz9Zq7Cwmg== 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= + integrity sha512-Tti3gMqLdZfhOQY1Mzf/AanLiqh1WTiJgEj26ZuYQ9fbkLomzGchCws4FyrSd4VkpBfiNhaE1On+lOz894jvXg== dependencies: hash.js "^1.0.3" minimalistic-assert "^1.0.0" minimalistic-crypto-utils "^1.0.1" -hoist-non-react-statics@^3.3.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" - home-or-tmp@^2.0.0: version "2.0.0" resolved "https://registry.yarnpkg.com/home-or-tmp/-/home-or-tmp-2.0.0.tgz#e36c3f2d2cae7d746a857e38d18d5f32a7882db8" - integrity sha1-42w/LSyufXRqhX440Y1fMqeILbg= + integrity sha512-ycURW7oUxE2sNiPVw1HVEFsW+ecOpJ5zaj7eC0RlwhibhRBod20muUN8qu/gzx956YrLolVvs1MTXwKgC2rVEg== dependencies: os-homedir "^1.0.0" os-tmpdir "^1.0.1" -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, hosted-git-info@^2.6.0: version "2.8.9" resolved "https://registry.yarnpkg.com/hosted-git-info/-/hosted-git-info-2.8.9.tgz#dffc0bf9a21c02209090f2aa69429e1414daf3f9" integrity sha512-mxIDAb9Lsm6DoOJ7xH+5+X4y1LU/4Hi50L9C5sIswK3JzULS4bwk1FvjdBgvYR4bzT4tuUQiC15FE2f5HbLvYw== -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= +htmlparser2@^8.0.1: + version "8.0.1" + resolved "https://registry.yarnpkg.com/htmlparser2/-/htmlparser2-8.0.1.tgz#abaa985474fcefe269bc761a779b544d7196d010" + integrity sha512-4lVbmc1diZC7GUJQtRQ5yBAeUCL1exyMwmForWkRLnwyzWBFxN633SALPMGYaWZvKe9j1pRZJpauvmxENSp/EA== dependencies: - domelementtype "1" - domhandler "2.3" - domutils "1.5" - entities "1.0" - readable-stream "1.1" + domelementtype "^2.3.0" + domhandler "^5.0.2" + domutils "^3.0.1" + entities "^4.3.0" http-basic@^8.1.1: version "8.1.3" @@ -10378,43 +7761,21 @@ http-cache-semantics@^4.0.0: resolved "https://registry.yarnpkg.com/http-cache-semantics/-/http-cache-semantics-4.1.0.tgz#49e91c5cbf36c9b94bcfcd71c23d5249ec74e390" integrity sha512-carPklcUh7ROWRK7Cv27RPtdhYhUsela/ue5/jKzjegVvXDqM2ILE9Q2BGn9JZJh1g87cp56su/FgQSzcWS8cQ== -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, 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-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== +http-errors@2.0.0: + version "2.0.0" + resolved "https://registry.yarnpkg.com/http-errors/-/http-errors-2.0.0.tgz#b7774a1486ef73cf7667ac9ae0858c012c57b9d3" + integrity sha512-FtwrG/euBzaEjYeRqOgly7G0qviiXoJWnvEH2Z1plBdXgbyjv34pHTSb9zoeHMyDy33+DWy5Wt9Wo+TURtOYSQ== dependencies: - depd "~1.1.2" + depd "2.0.0" inherits "2.0.4" setprototypeof "1.2.0" - statuses ">= 1.5.0 < 2" - toidentifier "1.0.0" + statuses "2.0.1" + toidentifier "1.0.1" http-https@^1.0.0: version "1.0.0" resolved "https://registry.yarnpkg.com/http-https/-/http-https-1.0.0.tgz#2f908dd5f1db4068c058cd6e6d4ce392c913389b" - integrity sha1-L5CN1fHbQGjAWM1ubUzjkskTOJs= + integrity sha512-o0PWwVCSp3O0wS6FvNr6xfBCHgt0m1tvPLFOCc2iFDKTRAXhB7m8klDf7ErowFH8POa6dVdGatKU5I1YYwzUyg== http-response-object@^3.0.1: version "3.0.2" @@ -10426,21 +7787,32 @@ http-response-object@^3.0.1: 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= + integrity sha512-CAbnr6Rz4CYQkLYUtSNXxQPUH2gK8f3iWexVlsnMeD+GjlsQ0Xsy1cOX+mN3dtxYomRy21CiOzU8Uhw6OwncEQ== 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= +http2-wrapper@^1.0.0-beta.5.2: + version "1.0.3" + resolved "https://registry.yarnpkg.com/http2-wrapper/-/http2-wrapper-1.0.3.tgz#b8f55e0c1f25d4ebd08b3b0c2c079f9590800b3d" + integrity sha512-V+23sDMr12Wnz7iTcDeJr3O6AIxlnvT/bmaAAAP/Xda35C90p9599p0F1eHR/N1KILWSoWVAiOMFjBBXaXSMxg== + dependencies: + quick-lru "^5.1.1" + resolve-alpn "^1.0.0" + +http2-wrapper@^2.1.10: + version "2.1.11" + resolved "https://registry.yarnpkg.com/http2-wrapper/-/http2-wrapper-2.1.11.tgz#d7c980c7ffb85be3859b6a96c800b2951ae257ef" + integrity sha512-aNAk5JzLturWEUiuhAN73Jcbq96R7rTitAoXV54FYMatvihnpD2+6PUgU4ce3D/m5VDbw+F5CsyKSF176ptitQ== + dependencies: + quick-lru "^5.1.1" + resolve-alpn "^1.2.0" 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== + version "5.0.1" + resolved "https://registry.yarnpkg.com/https-proxy-agent/-/https-proxy-agent-5.0.1.tgz#c59ef224a04fe8b754f3db0063a25ea30d0005d6" + integrity sha512-dFcAjpTQFgoLMzC2VwU+C/CbS7uRL0lWmxDITmqm7C+7F0Odmj6s9l6alZc6AELXhrnggM2CeWSXHGOdX2YtwA== dependencies: agent-base "6" debug "4" @@ -10455,14 +7827,6 @@ husky@^7.0.4: resolved "https://registry.yarnpkg.com/husky/-/husky-7.0.4.tgz#242048245dc49c8fb1bf0cc7cfb98dd722531535" integrity sha512-vbaCKN2QLtP/vD4yvs6iz6hBEo6wkSzs8HpRah1Z6aGmF2KW5PdYuAd7uX5a+OyBZHBhd+TFLqgjUgytQr4RvQ== -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.24, iconv-lite@^0.4.4: version "0.4.24" resolved "https://registry.yarnpkg.com/iconv-lite/-/iconv-lite-0.4.24.tgz#2022b4b25fbddc21d2f524974a474aafe733908b" @@ -10484,7 +7848,7 @@ idna-uts46-hx@^2.3.1: dependencies: punycode "2.1.0" -ieee754@^1.1.13, ieee754@^1.1.4, ieee754@^1.2.1: +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== @@ -10506,15 +7870,15 @@ ignore@^4.0.6: resolved "https://registry.yarnpkg.com/ignore/-/ignore-4.0.6.tgz#750e3db5862087b4737ebac8207ffd1ef27b25fc" integrity sha512-cyFDKrqc/YdcWFniJhzI42+AzS+gNwmUzOSFcRCQYwySuBBBy/KjuxWLZ/FHEH6Moq1NizMOBWyTcv8O4OZIMg== -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== +ignore@^5.1.1: + version "5.2.0" + resolved "https://registry.yarnpkg.com/ignore/-/ignore-5.2.0.tgz#6d3bac8fa7fe0d45d9f9be7bac2fc279577e345a" + integrity sha512-CmxgYGiEPCLhfLnpPp1MoRmifwEIOgjcHXxOBjv7mY96c+eWScsOP9c112ZyLdWHi0FxHjI+4uVhKYp/gcdRmQ== immediate@3.0.6: version "3.0.6" resolved "https://registry.yarnpkg.com/immediate/-/immediate-3.0.6.tgz#9db1dbd0faf8de6fbe0f5dd5e56bb606280de69b" - integrity sha1-nbHb0Pr43m++D13V5Wu2BigN5ps= + integrity sha512-XXOFtyqDjNDAQxVfYxuF7g9Il/IbWmmlQg2MYKOH8ExIT1qg6xc4zyS3HaEEATgs1btfzxq15ciUiY7gjSXRGQ== immediate@3.3.0, immediate@^3.2.2, immediate@^3.2.3: version "3.3.0" @@ -10524,22 +7888,17 @@ immediate@3.3.0, immediate@^3.2.2, immediate@^3.2.3: immediate@~3.2.3: version "3.2.3" resolved "https://registry.yarnpkg.com/immediate/-/immediate-3.2.3.tgz#d140fa8f614659bd6541233097ddaac25cdd991c" - integrity sha1-0UD6j2FGWb1lQSMwl92qwlzdmRw= + integrity sha512-RrGCXRm/fRVqMIhqXrGEX9rRADavPiDFSoMb/k64i9XMk8uH4r/Omi5Ctierj6XzNecwDbO4WuFbDD1zmpl3Tg== immutable@^4.0.0-rc.12: - version "4.0.0" - resolved "https://registry.yarnpkg.com/immutable/-/immutable-4.0.0.tgz#b86f78de6adef3608395efb269a91462797e2c23" - integrity sha512-zIE9hX70qew5qTUjSS7wi1iwj/l7+m54KWU247nhM3v806UdGj1yDndXj+IOYxxtW9zyLI+xqFNZjTuDaLUqFw== - -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= + version "4.1.0" + resolved "https://registry.yarnpkg.com/immutable/-/immutable-4.1.0.tgz#f795787f0db780183307b9eb2091fcac1f6fafef" + integrity sha512-oNkuqVTA8jqG1Q6c+UglTOD1xhC1BtjKI7XkCXRkZHrN5m18/XsnUp8Q89GkQO/z+0WjonSvl0FLhDYftp46nQ== import-fresh@^2.0.0: version "2.0.0" resolved "https://registry.yarnpkg.com/import-fresh/-/import-fresh-2.0.0.tgz#d81355c15612d386c61f9ddd3922d4304822a546" - integrity sha1-2BNVwVYS04bGH53dOSLUMEgipUY= + integrity sha512-eZ5H8rcgYazHbKC3PG4ClHNykCSxtAhxSSEM+2mb+7evD2CKF5V7c0dNum7AdpDh0ZdICwZY9sRSn8f+KH96sg== dependencies: caller-path "^2.0.0" resolve-from "^3.0.0" @@ -10552,17 +7911,10 @@ import-fresh@^3.0.0: parent-module "^1.0.0" resolve-from "^4.0.0" -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= + integrity sha512-JmXMZ6wuvDmLiHEml9ykzqO6lwFbof0GG4IkcGaENdCRDDmMVnny7s5HsIgHCbaq0w2MyPhDqkhTUgS2LU2PHA== indent-string@^4.0.0: version "4.0.0" @@ -10572,7 +7924,7 @@ indent-string@^4.0.0: inflight@^1.0.4: version "1.0.6" resolved "https://registry.yarnpkg.com/inflight/-/inflight-1.0.6.tgz#49bd6331d7d02d0c09bc910a1075ba8165b56df9" - integrity sha1-Sb1jMdfQLQwJvJEKEHW6gWW1bfk= + integrity sha512-k92I/b08q4wvFscXCLvqfsHCrjrF7yiXsQuIVvVE7N82W3+aqpzuUdBbfhWcy/FZR3/4IgflMgKLOsvPDrGCJA== dependencies: once "^1.3.0" wrappy "1" @@ -10582,15 +7934,15 @@ 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: +inherits@2.0.1: version "2.0.1" resolved "https://registry.yarnpkg.com/inherits/-/inherits-2.0.1.tgz#b17d08d326b4423e568eff719f91b0b1cbdf69f1" - integrity sha1-sX0I0ya0Qj5Wjv9xn5GwscvfafE= + integrity sha512-8nWq2nLTAwd02jTqJExUYFSD/fKq6VH9Y/oG2accc/kdI0V98Bag8d5a4gi3XHz73rDWa2PvTtvcWYquKqSENA== inherits@2.0.3: version "2.0.3" resolved "https://registry.yarnpkg.com/inherits/-/inherits-2.0.3.tgz#633c2c83e3da42a502f52466022480f4208261de" - integrity sha1-Yzwsg+PaQqUC9SRmAiSA9CCCYd4= + integrity sha512-x00IRNXNy63jwGkJmzPigoySHbaqpNuzKbBOmzK+g2OdZpQ9w+sxCN+VSB3ja7IAge2OP2qpfxTjeNcyjmW1uw== ini@^1.3.4, ini@^1.3.5, ini@~1.3.0: version "1.3.8" @@ -10616,20 +7968,7 @@ inquirer@^6.2.2: strip-ansi "^5.1.0" through "^2.3.6" -interface-blockstore@^1.0.0: - version "1.0.2" - resolved "https://registry.yarnpkg.com/interface-blockstore/-/interface-blockstore-1.0.2.tgz#adf35659ac073ffecf33615e051cf7f38ee32626" - integrity sha512-e8rHqaBSOsBPpSaB+wwVa9mR5ntU+t1yzXpOFC16cSKCNsV+h6n8SjekPQcdODVBN2h8t45CsOqRAnUfm1guEw== - dependencies: - err-code "^3.0.1" - interface-store "^1.0.2" - it-all "^1.0.5" - it-drain "^1.0.4" - it-filter "^1.0.2" - it-take "^1.0.1" - multiformats "^9.0.4" - -interface-blockstore@^2.0.2: +interface-blockstore@^2.0.2, interface-blockstore@^2.0.3: version "2.0.3" resolved "https://registry.yarnpkg.com/interface-blockstore/-/interface-blockstore-2.0.3.tgz#b85270eb5180e65e46c9f66980a0fa4d98f5d73e" integrity sha512-OwVUnlNcx7H5HloK0Myv6c/C1q9cNG11HX6afdeU6q6kbuNj8jKCwVnmJHhC94LZaJ+9hvVOk4IUstb3Esg81w== @@ -10638,19 +7977,14 @@ interface-blockstore@^2.0.2: multiformats "^9.0.4" interface-datastore@^6.0.2: - version "6.1.0" - resolved "https://registry.yarnpkg.com/interface-datastore/-/interface-datastore-6.1.0.tgz#e8c4821c50c1b708d07d0ee06a77ecca8c2dd79b" - integrity sha512-oNHdsrWBsI/kDwUtEgt+aaZtQFKtQYN0TGZzc3SGiIA6m+plZ6malhmsygtbmDpfpIsNNC7ce9Gyaj+Tki+gVw== + version "6.1.1" + resolved "https://registry.yarnpkg.com/interface-datastore/-/interface-datastore-6.1.1.tgz#5150a00de2e7513eaadba58bcafd059cb50004c1" + integrity sha512-AmCS+9CT34pp2u0QQVXjKztkuq3y5T+BIciuiHDDtDZucZD8VudosnSdUyXJV6IsRkN5jc4RFDhCk1O6Q3Gxjg== dependencies: - interface-store "^2.0.1" + interface-store "^2.0.2" nanoid "^3.0.2" uint8arrays "^3.0.0" -interface-store@^1.0.2: - version "1.0.2" - resolved "https://registry.yarnpkg.com/interface-store/-/interface-store-1.0.2.tgz#1ebd6cbbae387039a3a2de0cae665da52474800f" - integrity sha512-rUBLYsgoWwxuUpnQoSUr+DR/3dH3reVeIu5aOHFZK31lAexmb++kR6ZECNRgrx6WvoaM3Akdo0A7TDrqgCzZaQ== - interface-store@^2.0.1, interface-store@^2.0.2: version "2.0.2" resolved "https://registry.yarnpkg.com/interface-store/-/interface-store-2.0.2.tgz#83175fd2b0c501585ed96db54bb8ba9d55fce34c" @@ -10673,12 +8007,12 @@ interpret@^1.0.0: into-stream@^3.1.0: version "3.1.0" resolved "https://registry.yarnpkg.com/into-stream/-/into-stream-3.1.0.tgz#96fb0a936c12babd6ff1752a17d05616abd094c6" - integrity sha1-lvsKk2wSur1v8XUqF9BWFqvQlMY= + integrity sha512-TcdjPibTksa1NQximqep2r17ISRiNE9fwlfbg3F8ANdvP5/yrFTew86VcO//jk4QTaMlbjypPBq76HN2zaKfZQ== dependencies: from2 "^2.1.1" p-is-promise "^1.1.0" -invariant@^2.2.2, invariant@^2.2.4: +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== @@ -10688,7 +8022,7 @@ invariant@^2.2.2, invariant@^2.2.4: 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= + integrity sha512-xgs2NH9AE66ucSq4cNG1nhSFghr5l6tdL15Pk+jl46bmmBapgoaY/AacXyaDznAqmGL99TiLSQgO/XazFSKYeQ== invert-kv@^2.0.0: version "2.0.0" @@ -10748,10 +8082,10 @@ ipfs-bitswap@^10.0.1: varint "^6.0.0" varint-decoder "^1.0.0" -ipfs-core-config@^0.3.1: - version "0.3.1" - resolved "https://registry.yarnpkg.com/ipfs-core-config/-/ipfs-core-config-0.3.1.tgz#b3f4efdbe1bfc5eb867ad7324686aa3ba828f484" - integrity sha512-9qAPMlYrxQ6/n59E+v6boiRdqK5FSCKcYHs3YyrCIQYqA0Mq1xqmgzquYSkn0N/xhay59YdzWfiVOu+rb728SA== +ipfs-core-config@^0.3.3: + version "0.3.3" + resolved "https://registry.yarnpkg.com/ipfs-core-config/-/ipfs-core-config-0.3.3.tgz#38d548650008b36289e8dcbce33572f266af493f" + integrity sha512-hF5OE4qKy8vJetI3VYWOYePiW0JSV3i/9ArIrwATT0aJHbPzrRWJFQvvfeAFVEPqRmEBnnIQZCjHyGeVFbYfBg== dependencies: "@chainsafe/libp2p-noise" "^5.0.1" blockstore-datastore-adapter "^2.0.2" @@ -10763,14 +8097,14 @@ ipfs-core-config@^0.3.1: hashlru "^2.3.0" interface-datastore "^6.0.2" ipfs-repo "^14.0.1" - ipfs-utils "^9.0.2" + ipfs-utils "^9.0.6" ipns "^0.16.0" is-ipfs "^6.0.1" it-all "^1.0.4" it-drain "^1.0.3" it-foreach "^0.1.1" libp2p-floodsub "^0.29.0" - libp2p-gossipsub "^0.13.0" + libp2p-gossipsub "0.13.0" libp2p-kad-dht "^0.28.5" libp2p-mdns "^0.18.0" libp2p-mplex "^0.10.2" @@ -10780,37 +8114,30 @@ ipfs-core-config@^0.3.1: p-queue "^6.6.1" uint8arrays "^3.0.0" -ipfs-core-types@^0.10.1: - version "0.10.1" - resolved "https://registry.yarnpkg.com/ipfs-core-types/-/ipfs-core-types-0.10.1.tgz#53c60f589e4e54c2d566f0c856c2fcf0ea4a5577" - integrity sha512-s5+kXXcjkIdWPHblrE0TyiKxROQdL7zfkVI7FpEEwv5rtHCjpI0I4vKSzziZLLzLXf3a2F1qtscOnlaT0ruWBw== +ipfs-core-types@^0.10.3: + version "0.10.3" + resolved "https://registry.yarnpkg.com/ipfs-core-types/-/ipfs-core-types-0.10.3.tgz#89ebe98199d4d829f2b20104bfa3299f808c80fe" + integrity sha512-GNid2lRBjR5qgScCglgk7w9Hk3TZAwPHQXxOLQx72wgyc0jF2U5NXRoKW0GRvX8NPbHmsrFszForIqxd23I1Gw== dependencies: + "@ipld/dag-pb" "^2.1.3" interface-datastore "^6.0.2" + ipfs-unixfs "^6.0.3" multiaddr "^10.0.0" multiformats "^9.5.1" -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.14.1: - version "0.14.1" - resolved "https://registry.yarnpkg.com/ipfs-core-utils/-/ipfs-core-utils-0.14.1.tgz#b2d66f929ca853fc0525dec4043546ebaaa3a627" - integrity sha512-Zm5Ou6zd5W5COaVpE2v7a7QS0KhlYJ4CakxVgoIJWWXSdexLt0M3Z3dTWMlFygWu6QRaKyOURZPdOlPWfqBThQ== +ipfs-core-utils@^0.14.3: + version "0.14.3" + resolved "https://registry.yarnpkg.com/ipfs-core-utils/-/ipfs-core-utils-0.14.3.tgz#d04c631c472507bdefc58d4e8d1d9109efbb411c" + integrity sha512-aBkewVhgAj3NWXPwu6imj0wADGiGVZmJzqKzODOJsibDjkx6FGdMv8kvvqtLnK8LS/dvSk9yk32IDtuDyYoV7Q== dependencies: any-signal "^3.0.0" blob-to-it "^1.0.1" browser-readablestream-to-it "^1.0.1" debug "^4.1.1" err-code "^3.0.1" - ipfs-core-types "^0.10.1" + ipfs-core-types "^0.10.3" ipfs-unixfs "^6.0.3" - ipfs-utils "^9.0.2" + ipfs-utils "^9.0.6" it-all "^1.0.4" it-map "^1.0.4" it-peekable "^1.0.2" @@ -10824,34 +8151,13 @@ ipfs-core-utils@^0.14.1: timeout-abort-controller "^3.0.0" uint8arrays "^3.0.0" -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-core@^0.14.1: - version "0.14.1" - resolved "https://registry.yarnpkg.com/ipfs-core/-/ipfs-core-0.14.1.tgz#62245970d231aef0148928da540b3b83801dfdf8" - integrity sha512-hmIgbRlJoj3frU0R+Ac3ftVAu+Y4ZbnmCOPXXpEIinNMxUTt8/iy4He+69nM0uHz/TZlHMDJEGsnWaR42vcL9g== + version "0.14.3" + resolved "https://registry.yarnpkg.com/ipfs-core/-/ipfs-core-0.14.3.tgz#e2fe617b67d63a839d82a88e1af849181c6453ed" + integrity sha512-2Xxcoesc15IVzIDwAFBaOtLBZo3lKblFQZDX3n4yDckieyHF8TvgBgSgsqp2puTk0szp9lU4xsZA2cRNeJxIbg== dependencies: "@chainsafe/libp2p-noise" "^5.0.0" - "@ipld/car" "^3.1.0" + "@ipld/car" "^4.1.0" "@ipld/dag-cbor" "^7.0.0" "@ipld/dag-json" "^8.0.1" "@ipld/dag-pb" "^2.1.3" @@ -10871,15 +8177,15 @@ ipfs-core@^0.14.1: interface-blockstore "^2.0.2" interface-datastore "^6.0.2" ipfs-bitswap "^10.0.1" - ipfs-core-config "^0.3.1" - ipfs-core-types "^0.10.1" - ipfs-core-utils "^0.14.1" - ipfs-http-client "^56.0.1" + ipfs-core-config "^0.3.3" + ipfs-core-types "^0.10.3" + ipfs-core-utils "^0.14.3" + ipfs-http-client "^56.0.3" ipfs-repo "^14.0.1" ipfs-unixfs "^6.0.3" ipfs-unixfs-exporter "^7.0.3" ipfs-unixfs-importer "^9.0.3" - ipfs-utils "^9.0.2" + ipfs-utils "^9.0.6" ipns "^0.16.0" is-domain-name "^1.0.1" is-ipfs "^6.0.1" @@ -10915,42 +8221,10 @@ ipfs-core@^0.14.1: timeout-abort-controller "^3.0.0" uint8arrays "^3.0.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-http-client@^56.0.1: - version "56.0.1" - resolved "https://registry.yarnpkg.com/ipfs-http-client/-/ipfs-http-client-56.0.1.tgz#aaa40a1bf3e3d07f5a49fadefd8b6017b91e3fb9" - integrity sha512-U0sUyGZndcIluMJL3gDdCSgF7RwShDklJJxfDf9IRcbO72hqSJsib4amYzqcqfetft6vYa8uRIoJFEIWndHwrg== +ipfs-http-client@^56.0.3: + version "56.0.3" + resolved "https://registry.yarnpkg.com/ipfs-http-client/-/ipfs-http-client-56.0.3.tgz#45bbea55347ef13524769d5919cbed84d9d022d6" + integrity sha512-E3L5ylVl6BjyRUsNehvfuRBYp1hj8vQ8in4zskVPMNzXs6JiCFUbif5a6BtcAlSK4xPQyJCeLNNAWLUeFQTLNA== dependencies: "@ipld/dag-cbor" "^7.0.0" "@ipld/dag-json" "^8.0.1" @@ -10959,9 +8233,9 @@ ipfs-http-client@^56.0.1: dag-jose "^1.0.0" debug "^4.1.1" err-code "^3.0.1" - ipfs-core-types "^0.10.1" - ipfs-core-utils "^0.14.1" - ipfs-utils "^9.0.2" + ipfs-core-types "^0.10.3" + ipfs-core-utils "^0.14.3" + ipfs-utils "^9.0.6" it-first "^1.0.6" it-last "^1.0.4" merge-options "^3.0.4" @@ -11023,33 +8297,33 @@ ipfs-repo@^14.0.1: uint8arrays "^3.0.0" ipfs-unixfs-exporter@^7.0.3: - version "7.0.6" - resolved "https://registry.yarnpkg.com/ipfs-unixfs-exporter/-/ipfs-unixfs-exporter-7.0.6.tgz#b7ae19a1355254bd0837b9667d0733cbfae43f83" - integrity sha512-PkKB+hTbHhKLqgj0PqSNQ/n7dKsu/lC29jLK8nUXOX4EM6c+RnedohdCY7khT10/hfC7oADbpFs/QJfuH2DaAg== + version "7.0.11" + resolved "https://registry.yarnpkg.com/ipfs-unixfs-exporter/-/ipfs-unixfs-exporter-7.0.11.tgz#48c4c7605601bddc27cf1de97a2ad81a87e5fe32" + integrity sha512-qTYa69J7HbI2EIYNUddKPg9Y3rHkYZV0bNdmzZKA5+ZbwRVoUEuBW/cguEqTp22zHygh3sMnzYZFm0naVIdMgQ== dependencies: - "@ipld/dag-cbor" "^6.0.4" + "@ipld/dag-cbor" "^7.0.2" "@ipld/dag-pb" "^2.0.2" "@multiformats/murmur3" "^1.0.3" err-code "^3.0.1" hamt-sharding "^2.0.0" - interface-blockstore "^1.0.0" - ipfs-unixfs "^6.0.6" + interface-blockstore "^2.0.3" + ipfs-unixfs "^6.0.0" it-last "^1.0.5" multiformats "^9.4.2" uint8arrays "^3.0.0" ipfs-unixfs-importer@^9.0.3: - version "9.0.6" - resolved "https://registry.yarnpkg.com/ipfs-unixfs-importer/-/ipfs-unixfs-importer-9.0.6.tgz#9d920388e4555f3249136c90a146387e8c88dd8d" - integrity sha512-FgzODqg4pvToEMZ88mFkHcU0s25CljmnqX2VX7K/VQDckiZIxhIiUTQRqQg/C7Em4uCzVp8YCxKUvl++w6kvNg== + version "9.0.10" + resolved "https://registry.yarnpkg.com/ipfs-unixfs-importer/-/ipfs-unixfs-importer-9.0.10.tgz#2527ea0b4e018a9e80fa981101485babcd05c494" + integrity sha512-W+tQTVcSmXtFh7FWYWwPBGXJ1xDgREbIyI1E5JzDcimZLIyT5gGMfxR3oKPxxWj+GKMpP5ilvMQrbsPzWcm3Fw== dependencies: "@ipld/dag-pb" "^2.0.2" "@multiformats/murmur3" "^1.0.3" bl "^5.0.0" err-code "^3.0.1" hamt-sharding "^2.0.0" - interface-blockstore "^1.0.0" - ipfs-unixfs "^6.0.6" + interface-blockstore "^2.0.3" + ipfs-unixfs "^6.0.0" it-all "^1.0.5" it-batch "^1.0.8" it-first "^1.0.6" @@ -11059,40 +8333,18 @@ ipfs-unixfs-importer@^9.0.3: rabin-wasm "^0.1.4" uint8arrays "^3.0.0" -ipfs-unixfs@^6.0.3, ipfs-unixfs@^6.0.6: - version "6.0.6" - resolved "https://registry.yarnpkg.com/ipfs-unixfs/-/ipfs-unixfs-6.0.6.tgz#c44881c1bcd6a474c665e67108cbf31e54c63eec" - integrity sha512-gTkjYKXuHnqIf6EFfS+ESaYEl3I3aaQQ0UX8MhpNzreMLEuMnuqpoI/uLLllTZa31WRplKixabbpRTSmTYRNwA== +ipfs-unixfs@^6.0.0, ipfs-unixfs@^6.0.3: + version "6.0.9" + resolved "https://registry.yarnpkg.com/ipfs-unixfs/-/ipfs-unixfs-6.0.9.tgz#f6613b8e081d83faa43ed96e016a694c615a9374" + integrity sha512-0DQ7p0/9dRB6XCb0mVCTli33GzIzSVx5udpJuVM47tGcD+W+Bl4LsnoLswd3ggNnNEakMv1FdoFITiEnchXDqQ== dependencies: err-code "^3.0.1" protobufjs "^6.10.2" -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" - -ipfs-utils@^9.0.1, ipfs-utils@^9.0.2: - version "9.0.5" - resolved "https://registry.yarnpkg.com/ipfs-utils/-/ipfs-utils-9.0.5.tgz#861c4ae02c71b7f94d0eb7e16b613d91235a96e9" - integrity sha512-GXWfsq/nKtwkcTI4+KGc4CU9EFXjtkWaGcFAsnm177kAhA0Fnn8aWNRaF/C0xFraUIl1wTAUTWkaGKigVyfsTw== +ipfs-utils@^9.0.1, ipfs-utils@^9.0.6: + version "9.0.7" + resolved "https://registry.yarnpkg.com/ipfs-utils/-/ipfs-utils-9.0.7.tgz#b8644b9d053e4dd258f69773b146ac243921aa1f" + integrity sha512-Umvb0Zydy2zZiTmQBGLfLISr8vOmXX8cxEIP+N8zGHrtRShG/j32yl1xd/BtS+Hbg0FIbVm3opwvxB2gmta0YA== dependencies: any-signal "^3.0.0" buffer "^6.0.1" @@ -11109,49 +8361,6 @@ ipfs-utils@^9.0.1, ipfs-utils@^9.0.2: react-native-fetch-api "^2.0.0" stream-to-it "^0.2.2" -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" - ipns@^0.16.0: version "0.16.0" resolved "https://registry.yarnpkg.com/ipns/-/ipns-0.16.0.tgz#656bf36d78a6a9eb829ff798b4ca875ba9a3d0d4" @@ -11172,7 +8381,7 @@ ipns@^0.16.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= + integrity sha512-e1BM1qnDbMRG3ll2U9dSK0UMHuWOs3pY3AtcFsmvwPtKL3MML/Q86i+GilLfvqEs4GW+ExB91tQ3Ig9noDIZ+A== dependencies: kind-of "^3.0.2" @@ -11183,7 +8392,7 @@ is-accessor-descriptor@^1.0.0: dependencies: kind-of "^6.0.0" -is-arguments@^1.0.4, is-arguments@^1.1.0: +is-arguments@^1.0.4: version "1.1.1" resolved "https://registry.yarnpkg.com/is-arguments/-/is-arguments-1.1.1.tgz#15b3f88fda01f2a97fec84ca761a560f123efa9b" integrity sha512-8Q7EARjzEnKpt/PCD7e1cgUS0a6X8u5tdSiMqXhojOdoV9TsMsiO+9VLC5vAmO8N7/GmXn7yjR8qnA6bVAEzfA== @@ -11194,7 +8403,7 @@ is-arguments@^1.0.4, is-arguments@^1.1.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= + integrity sha512-zz06S8t0ozoDXMG+ube26zeCTNXcKIPJZJi8hBrF4idCLms4CG9QtK7qBl1boi5ODzFpjswb5JPmHCbMpjaYzg== is-bigint@^1.0.1: version "1.0.4" @@ -11206,7 +8415,7 @@ is-bigint@^1.0.1: 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= + integrity sha512-9fRVlXc0uCxEDj1nQzaWONSpbTfx0FmJfzHF7pwlI8DkWGoHBBea4Pg5Ky0ojwwxQmnSifgbKkI06Qv0Ljgj+Q== dependencies: binary-extensions "^1.0.0" @@ -11236,36 +8445,21 @@ is-buffer@^2.0.5, is-buffer@~2.0.3: integrity sha512-i2R6zNFDwgEHJyQUtJEk0XFi1i0dPFn/oqjK3/vPCcDeJvW5NQ83V8QbicfF1SupOaB0h8ntgBC2YiE7dfyctQ== is-callable@^1.1.3, is-callable@^1.1.4, is-callable@^1.2.4: - version "1.2.4" - resolved "https://registry.yarnpkg.com/is-callable/-/is-callable-1.2.4.tgz#47301d58dd0259407865547853df6d61fe471945" - integrity sha512-nsuwtxZfMX67Oryl9LCQ+upnC0Z0BgpwntpS89m1H/TLF0zNfzfLMV/9Wa/6MZsj0acpEjAO0KF1xT6ZdLl95w== - -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-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= + version "1.2.6" + resolved "https://registry.yarnpkg.com/is-callable/-/is-callable-1.2.6.tgz#fd6170b0b8c7e2cc73de342ef8284a2202023c44" + integrity sha512-krO72EO2NptOGAX2KYyqbP9vYMlNAXdB53rq6f8LXY6RY7JdSR/3BD6wLUlPHSAesmY9vstNrjvqGaCiRK/91Q== -is-core-module@^2.2.0, is-core-module@^2.8.0: - version "2.8.0" - resolved "https://registry.yarnpkg.com/is-core-module/-/is-core-module-2.8.0.tgz#0321336c3d0925e497fd97f5d95cb114a5ccd548" - integrity sha512-vd15qHsaqrRL7dtH6QNuy0ndJmRDrS9HAM1CAiSifNUFv4x1a0CCVsj18hJ1mShxIG6T2i1sO78MkP56r0nYRw== +is-core-module@^2.8.1, is-core-module@^2.9.0: + version "2.10.0" + resolved "https://registry.yarnpkg.com/is-core-module/-/is-core-module-2.10.0.tgz#9012ede0a91c69587e647514e1d5277019e728ed" + integrity sha512-Erxj2n/LDAZ7H8WNJXd9tw38GYM3dv8rk8Zcs+jJuxYTW7sozH+SS8NtrSjVL1/vpLvWi1hxy96IzjJ3EHTJJg== 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= + integrity sha512-+w9D5ulSoBNlmw9OHn3U2v51SyoCd0he+bB3xMl62oijhrspxowjU+AIcDY0N3iEJbUEkB15IlMASQsxYigvXg== dependencies: kind-of "^3.0.2" @@ -11304,34 +8498,22 @@ is-descriptor@^1.0.0, is-descriptor@^1.0.2: 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= + integrity sha512-yVChGzahRFvbkscn2MlwGismPO12i9+znNruC5gVEntG3qu0xQMzsGg/JFbrsqDOHtHFPci+V5aP5T9I+yeKqw== is-domain-name@^1.0.1: version "1.0.1" resolved "https://registry.yarnpkg.com/is-domain-name/-/is-domain-name-1.0.1.tgz#f6eb33b14a497541dca58335137d4466e0c20da1" - integrity sha1-9uszsUpJdUHcpYM1E31EZuDCDaE= - -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= + integrity sha512-52ToNggHmkZGPl8yLFNrk+cKHUUnkhS0l2jh+yMLq6kj9C5IMLSztvJsW5WO5eMy0OS0jdu4o2tptT9dN0hAFg== 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" + version "2.2.1" + resolved "https://registry.yarnpkg.com/is-electron/-/is-electron-2.2.1.tgz#751b1dd8a74907422faa5c35aaa0cf66d98086e9" + integrity sha512-r8EEQQsqT+Gn0aXFx7lTFygYQhILLCB+wn0WCDL5LZRINeLH/Rvw1j2oKodELLXYNImQ3CRlVsY8wW4cGOsyuw== is-expression@^3.0.0: version "3.0.0" resolved "https://registry.yarnpkg.com/is-expression/-/is-expression-3.0.0.tgz#39acaa6be7fd1f3471dc42c7416e61c24317ac9f" - integrity sha1-Oayqa+f9HzRx3ELHQW5hwkMXrJ8= + integrity sha512-vyMeQMq+AiH5uUnoBfMTwf18tO3bM6k1QXBE9D6ueAAquEfCZe3AJPtud9g6qS0+4X8xA7ndpZiDyeb2l2qOBw== dependencies: acorn "~4.0.2" object-assign "^4.0.1" @@ -11339,7 +8521,7 @@ is-expression@^3.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= + integrity sha512-5BMULNob1vgFX6EjQw5izWDxrecWK9AM72rugNr0TFldMOi0fj6Jk+zeKIt0xGj4cEfQIJth4w3OKWOJ4f+AFw== is-extendable@^1.0.1: version "1.0.1" @@ -11348,15 +8530,10 @@ is-extendable@^1.0.1: 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= + integrity sha512-SbKbANkN603Vi4jEZv49LeVJMn4yGwsbzZworEoyEiutsN3nJYdbO36zfhGJ6QEDpOZIFkDtnq5JRxmvl3jsoQ== is-finite@^1.0.0: version "1.1.0" @@ -11366,19 +8543,19 @@ is-finite@^1.0.0: is-fn@^1.0.0: version "1.0.0" resolved "https://registry.yarnpkg.com/is-fn/-/is-fn-1.0.0.tgz#9543d5de7bcf5b08a22ec8a20bae6e286d510d8c" - integrity sha1-lUPV3nvPWwiiLsiiC65uKG1RDYw= + integrity sha512-XoFPJQmsAShb3jEQRfzf2rqXavq7fIqF/jOekp308JlThqrODnMpweVSGilKTCXELfLhltGP2AGgbQGVP8F1dg== 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= + integrity sha512-1pqUqRjkhPJ9miNq9SwMfdvi6lBJcd6eFxvfaivQhaH3SgisfiuudvFntdKOmxuee/77l+FPjKrQjWvmPjWrRw== 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= + integrity sha512-VHskAKYM8RfSFXwee5t5cbN5PZeq1Wrh6qd5bkyiXIf6UQcN6w/A0eXM9r6t8d+GYOh+o6ZhiEnb88LN/Y8m2w== is-fullwidth-code-point@^3.0.0: version "3.0.0" @@ -11402,24 +8579,10 @@ is-generator-function@^1.0.7: dependencies: has-tostringtag "^1.0.0" -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= + integrity sha512-UFpDDrPgM6qpnFNI+rh/p3bUaq9hKLZN8bMUWzxmcnZVS3omf4IPK+BrewlnWjO1WmUsMYuSjKh4UJuV4+Lqmw== dependencies: is-extglob "^2.1.0" @@ -11433,7 +8596,7 @@ is-glob@^4.0.0, is-glob@^4.0.1, is-glob@^4.0.3, is-glob@~4.0.1: is-hex-prefixed@1.0.0: version "1.0.0" resolved "https://registry.yarnpkg.com/is-hex-prefixed/-/is-hex-prefixed-1.0.0.tgz#7d8d37e6ad77e5d127148913c573e082d777f554" - integrity sha1-fY035q135dEnFIkTxXPggtd39VQ= + integrity sha512-WvtOiug1VFrE9v1Cydwm+FnXd3+w9GaeVUss5W4v/SLy3UW00vP+6iNF2SdnfiBoLy4bTqVdkftNGTUeOFVsbA== is-installed-globally@^0.2.0: version "0.2.0" @@ -11469,51 +8632,34 @@ is-loopback-addr@^1.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= + integrity sha512-+5A1e/WJpLLXZEDlgz4G//WYSHyQBD32qa4Jd3Lw06qQlv3fJHnp3YIHjTQSGzHMgzmVKz2ZP3rBxTHkPw/lxA== 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= + integrity sha512-Y4LTamMe0DDQIIAlaer9eKebAlDSV6huy+TWhJVPlzZh2o4tRP5SQWFlLn5N0To4mDD22/qdOq+veo1cSISLgQ== -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-negative-zero@^2.0.2: + version "2.0.2" + resolved "https://registry.yarnpkg.com/is-negative-zero/-/is-negative-zero-2.0.2.tgz#7bf6f03a28003b8b3965de3ac26f664d765f3150" + integrity sha512-dqJvarLawXsFbNDeJW7zAz8ItJ9cd28YufuuFzh0G8pNHjJMnY08Dv7sYX2uF5UpQOwieAeOExEYAWWfu7ZZUA== is-number-object@^1.0.4: - version "1.0.6" - resolved "https://registry.yarnpkg.com/is-number-object/-/is-number-object-1.0.6.tgz#6a7aaf838c7f0686a50b4553f7e54a96494e89f0" - integrity sha512-bEVOqiRcvo3zO1+G2lVMy+gkkEm9Yh7cDMRusKKu5ZJKPUYSJwICTKZrNKHA2EbSP0Tu0+6B/emsYNHZyn6K8g== + version "1.0.7" + resolved "https://registry.yarnpkg.com/is-number-object/-/is-number-object-1.0.7.tgz#59d50ada4c45251784e9904f5246c742f07a42fc" + integrity sha512-k1U0IRzLMo7ZlYIfzRu23Oh6MiIFasgpb9X76eqfFZAqwH44UI4KTBvBYIZ1dSL9ZzChTB9ShHfLkR4pdW5krQ== dependencies: has-tostringtag "^1.0.0" -is-number@^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= + integrity sha512-4cboCqIpliH+mAvFNegjZQ4kgKc3ZUhQVr3HvWbSh5q3WH2v82ct+T2Y1hdU5Gdtorx/cLifQjqCbL7bpznLTg== 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" @@ -11539,7 +8685,7 @@ is-path-inside@^2.1.0: is-plain-obj@^1.0.0, 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= + integrity sha512-yvkRyxmFKEOQ4pNXCmJG5AEQNlXJS5LaONXo5/cLdTZdWvsZ1ioJEonLGAosKlMWE8lwUy/bJzMjcw8az73+Fg== is-plain-obj@^2.0.0, is-plain-obj@^2.1.0: version "2.1.0" @@ -11553,21 +8699,6 @@ is-plain-object@^2.0.3, is-plain-object@^2.0.4: 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.0.0: version "2.2.2" resolved "https://registry.yarnpkg.com/is-promise/-/is-promise-2.2.2.tgz#39ab959ccbf9a774cf079f7b40c7a26f763135f1" @@ -11586,20 +8717,17 @@ is-retry-allowed@^1.0.0, is-retry-allowed@^1.1.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-shared-array-buffer@^1.0.1: - version "1.0.1" - resolved "https://registry.yarnpkg.com/is-shared-array-buffer/-/is-shared-array-buffer-1.0.1.tgz#97b0c85fbdacb59c9c446fe653b82cf2b5b7cfe6" - integrity sha512-IU0NmyknYZN0rChcKhRO1X8LYz5Isj/Fsqh8NJOSf+N/hCOTwy29F32Ik7a+QszE63IdvmwdTPDd6cZ5pg4cwA== +is-shared-array-buffer@^1.0.2: + version "1.0.2" + resolved "https://registry.yarnpkg.com/is-shared-array-buffer/-/is-shared-array-buffer-1.0.2.tgz#8f259c573b60b6a32d4058a1a07430c0a7344c79" + integrity sha512-sqN2UDu1/0y6uvXyStCOzyhAjCSlHceFoMKJW8W9EU9cvic/QdsZ0kEU93HEy3IUEFZIiH/3w+AH/UQbPHNdhA== + dependencies: + call-bind "^1.0.2" is-stream@^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= + integrity sha512-uQPm8kcs47jx38atAcWTVxyltQYoPT68y9aWYdV6yWXSyW8mzSat0TL6CiWdZeCdF3KrAvpVtnHbTv4RN+rqdQ== is-stream@^2.0.0: version "2.0.1" @@ -11620,47 +8748,47 @@ is-symbol@^1.0.2, is-symbol@^1.0.3: dependencies: has-symbols "^1.0.2" -is-typed-array@^1.1.3, is-typed-array@^1.1.7: - version "1.1.8" - resolved "https://registry.yarnpkg.com/is-typed-array/-/is-typed-array-1.1.8.tgz#cbaa6585dc7db43318bc5b89523ea384a6f65e79" - integrity sha512-HqH41TNZq2fgtGT8WHVFVJhBVGuY3AnP3Q36K8JKXUxSxRgk/d+7NjmwG2vo2mYmXK8UYZKu0qH8bVP5gEisjA== +is-typed-array@^1.1.3, is-typed-array@^1.1.9: + version "1.1.9" + resolved "https://registry.yarnpkg.com/is-typed-array/-/is-typed-array-1.1.9.tgz#246d77d2871e7d9f5aeb1d54b9f52c71329ece67" + integrity sha512-kfrlnTTn8pZkfpJMUgYD7YZ3qzeJgWUn8XfVYBARc4wnmNOmLbmuuaAs3q5fvB0UJOn6yHAKaGTPM7d6ezoD/A== dependencies: available-typed-arrays "^1.0.5" call-bind "^1.0.2" - es-abstract "^1.18.5" - foreach "^2.0.5" + es-abstract "^1.20.0" + for-each "^0.3.3" has-tostringtag "^1.0.0" is-typedarray@^1.0.0, is-typedarray@~1.0.0: version "1.0.0" resolved "https://registry.yarnpkg.com/is-typedarray/-/is-typedarray-1.0.0.tgz#e479c80858df0c1b11ddda6940f96011fcda4a9a" - integrity sha1-5HnICFjfDBsR3dppQPlgEfzaSpo= + integrity sha512-cyA56iCMHAh5CdzjJIa4aohJyeO1YbwLi3Jc35MmRU6poroFjIGZzUzupGiRPOjgHg9TLu43xbpwXk523fMxKA== + +is-unicode-supported@^0.1.0: + version "0.1.0" + resolved "https://registry.yarnpkg.com/is-unicode-supported/-/is-unicode-supported-0.1.0.tgz#3f26c76a809593b52bfa2ecb5710ed2779b522a7" + integrity sha512-knxG2q4UC3u8stRGyAVJCOdxFmv5DZiRcdlIaAQXAbSfJya+OhopNotLQrstBhququ4ZpuKbDc/8S6mgXgPFPw== is-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= + integrity sha512-GQYSJMgfeAmVwh9ixyk888l7OIhNAGKtY6QA+IrWlu9MDTCaXmeozOZ2S9Knj7bQwBO/H6J2kb+pbyTUiMNbsw== 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= + integrity sha512-rMYPYvCzsXywIsldgLaSoPlw5PfoB/ssr7hY4pLfcodrA5M/eArza1a9VmTiNIBNMjOGr1Ow9mTyU2o69U6U9Q== -is-weakref@^1.0.1: - version "1.0.1" - resolved "https://registry.yarnpkg.com/is-weakref/-/is-weakref-1.0.1.tgz#842dba4ec17fa9ac9850df2d6efbc1737274f2a2" - integrity sha512-b2jKc2pQZjaeFYWEf7ScFj+Be1I+PXmlu572Q8coTXZ+LD/QQZ7ShPMst8h16riVgyXTQwUsFEl74mDvc/3MHQ== +is-weakref@^1.0.2: + version "1.0.2" + resolved "https://registry.yarnpkg.com/is-weakref/-/is-weakref-1.0.2.tgz#9529f383a9338205e89765e0392efc2f100f06f2" + integrity sha512-qctsuLZmIQ0+vSSMfoVvyFe2+GSEvnmZ2ezTup1SBse9+twCCeial6EEi3Nc2KFcf6+qz2FBPnjXsk8xhKSaPQ== dependencies: - call-bind "^1.0.0" + call-bind "^1.0.2" -is-windows@^1.0.1, is-windows@^1.0.2: +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== @@ -11673,22 +8801,17 @@ is@^3.2.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= + integrity sha512-D2S+3GLxWH+uhrNEcoh/fnmYeP8E8/zHl644d/jdA0g2uyXvy3sb0qxotE+ne0LtccHknQzWwZEzhak7oJ0COQ== -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= - -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== + integrity sha512-VLghIWNM6ELQzo7zwmcg0NmTVyWKYjvIeM83yjp0wRDTmUnrM678fQbcKBo6n2CJEF0szoG//ytg+TKla89ALQ== isexe@^2.0.0: version "2.0.0" resolved "https://registry.yarnpkg.com/isexe/-/isexe-2.0.0.tgz#e8fbf374dc556ff8947a10dcb0572d633f2cfa10" - integrity sha1-6PvzdNxVb/iUehDcsFctYz8s+hA= + integrity sha512-RHxMLp9lnKHGHRng9QFhRCMbYAcVpn69smSGcq3f36xjgVVWThj4qqLbTLlq7Ssj8B+fIQ1EuCEGI2lKsyQeIw== iso-constants@^0.1.2: version "0.1.2" @@ -11696,41 +8819,31 @@ iso-constants@^0.1.2: 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== + version "2.0.2" + resolved "https://registry.yarnpkg.com/iso-random-stream/-/iso-random-stream-2.0.2.tgz#a24f77c34cfdad9d398707d522a6a0cc640ff27d" + integrity sha512-yJvs+Nnelic1L2vH2JzWvvPQFA4r7kSTnpST/+LkAQjSz0hos2oqLD+qIVi9Qk38Hoe7mNDt3j0S27R58MVjLQ== 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@^1.1.2, iso-url@^1.1.3, iso-url@^1.1.5: version "1.2.1" resolved "https://registry.yarnpkg.com/iso-url/-/iso-url-1.2.1.tgz#db96a49d8d9a64a1c889fc07cc525d093afb1811" integrity sha512-9JPDgCN4B7QPkLtYAAOrEuAWvP9rWvR5offAr0/SeF046wIkglqH3VXgYYP6NcsKslH80UIVgmPqNe3j7tG2ng== -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= + integrity sha512-+OUdGJlgjOBZDfxnDjYYG6zp487z0JGNQq3cYQYg5f5hKR+syHMsaztzGeml/4kGG55CSpKSpWTY+jYGgsHLgA== dependencies: isarray "1.0.0" isobject@^3.0.0, isobject@^3.0.1: version "3.0.1" resolved "https://registry.yarnpkg.com/isobject/-/isobject-3.0.1.tgz#4e431e92b11a9731636aa1f9c8d1ccbcfdab78df" - integrity sha1-TkMekrEalzFjaqH5yNHMvP2reN8= + integrity sha512-WhB9zCku7EGTj/HQQRz5aUQEUeoQZH2bWcltRErOpymJ4boYE6wL9Tbr23krRPSZ+C5zqNSrSw+Cc7sZZ4b7vg== -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== @@ -11738,7 +8851,7 @@ isomorphic-ws@4.0.1, isomorphic-ws@^4.0.1: 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= + integrity sha512-Yljz7ffyPbrLpLngrMtZ7NduUgVvi6wG9RJ9IUcyCd59YQ911PBJphODUcbOVbqYfxe1wuYf/LJ8PauMRwsM/g== isurl@^1.0.0-alpha5: version "1.0.0" @@ -11748,12 +8861,7 @@ 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-all@^1.0.5, it-all@^1.0.6: +it-all@^1.0.4, it-all@^1.0.5, it-all@^1.0.6: version "1.0.6" resolved "https://registry.yarnpkg.com/it-all/-/it-all-1.0.6.tgz#852557355367606295c4c3b7eff0136f07749335" integrity sha512-3cmCc6Heqe3uWi3CVM/k51fa/XbMFpQVzFoDsV0IZNHSQDyAXl3c4MjHkFX5kF3922OGj7Myv1nSEUgRtcuM1A== @@ -11771,13 +8879,6 @@ it-buffer@^0.1.2, it-buffer@^0.1.3: bl "^5.0.0" buffer "^6.0.3" -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-concat@^2.0.0: version "2.0.0" resolved "https://registry.yarnpkg.com/it-concat/-/it-concat-2.0.0.tgz#b4dc02aeb7365bada05b247c1ee50f3bbc147419" @@ -11785,16 +8886,11 @@ it-concat@^2.0.0: dependencies: bl "^5.0.0" -it-drain@^1.0.1, it-drain@^1.0.4: +it-drain@^1.0.1, it-drain@^1.0.3, it-drain@^1.0.4: version "1.0.5" resolved "https://registry.yarnpkg.com/it-drain/-/it-drain-1.0.5.tgz#0466d4e286b37bcd32599d4e99b37a87cb8cfdf6" integrity sha512-r/GjkiW1bZswC04TNmUnLxa6uovme7KKwPhc+cb1hHU65E3AByypHH6Pm91WHuvqfFsm+9ws0kPtDBV3/8vmIg== -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-filter@^1.0.1, it-filter@^1.0.2: version "1.0.3" resolved "https://registry.yarnpkg.com/it-filter/-/it-filter-1.0.3.tgz#66ea0cc4bf84af71bebd353c05a9c5735fcba751" @@ -11810,14 +8906,6 @@ it-foreach@^0.1.1: resolved "https://registry.yarnpkg.com/it-foreach/-/it-foreach-0.1.1.tgz#8dce2d16567cfac007977e2daae7699c82c58d70" integrity sha512-ZLxL651N5w5SL/EIIcrXELgYrrkuEKj/TErG93C4lr6lNZziKsf338ljSG85PjQfu7Frg/1wESl5pLrPSFXI9g== -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-glob@^1.0.1: version "1.0.2" resolved "https://registry.yarnpkg.com/it-glob/-/it-glob-1.0.2.tgz#bab9b04d6aaac42884502f3a0bfee84c7a29e15e" @@ -11835,12 +8923,7 @@ it-handshake@^2.0.0: it-reader "^3.0.0" p-defer "^3.0.0" -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-last@^1.0.5: +it-last@^1.0.4, it-last@^1.0.5: version "1.0.6" resolved "https://registry.yarnpkg.com/it-last/-/it-last-1.0.6.tgz#4106232e5905ec11e16de15a0e9f7037eaecfc45" integrity sha512-aFGeibeiX/lM4bX3JY0OkVCFkAw8+n9lkukkLNivbJRvNz8lI3YXv5xcqhFUV2lDJiraEK3OXRDbGuevnnR67Q== @@ -11859,12 +8942,7 @@ it-length@^1.0.1, it-length@^1.0.3: resolved "https://registry.yarnpkg.com/it-length/-/it-length-1.0.4.tgz#37aebe0aca444801153325bb673fd5b8e64391d2" integrity sha512-KN4jXzp77/GQ4fxUGMbsJx3ALUZ6SP3E79tzs2weGghtImDLFZzua/l3fOK0LN/hMH0M330HJRZWwYZfDNuCIA== -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-map@^1.0.5: +it-map@^1.0.4, it-map@^1.0.5: version "1.0.6" resolved "https://registry.yarnpkg.com/it-map/-/it-map-1.0.6.tgz#6aa547e363eedcf8d4f69d8484b450bc13c9882c" integrity sha512-XT4/RM6UHIFG9IobGlQPFQUrlEKkU4eBUFG3qhWhfAdh1JfF2x11ShCrKCdmZ0OiZppPfoLuzcfA4cey6q3UAQ== @@ -11905,11 +8983,6 @@ it-pb-rpc@^0.2.0: it-handshake "^2.0.0" it-length-prefixed "^5.0.3" -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-peekable@^1.0.2: version "1.0.3" resolved "https://registry.yarnpkg.com/it-peekable/-/it-peekable-1.0.3.tgz#8ebe933767d9c5aa0ae4ef8e9cb3a47389bced8c" @@ -11927,13 +9000,6 @@ it-pushable@^1.4.0, it-pushable@^1.4.1, it-pushable@^1.4.2: dependencies: fast-fifo "^1.0.0" -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-reader@^3.0.0: version "3.0.0" resolved "https://registry.yarnpkg.com/it-reader/-/it-reader-3.0.0.tgz#56596c7742ec7c63b7f7998f6bfa3f712e333d0e" @@ -11948,22 +9014,10 @@ it-sort@^1.0.0, it-sort@^1.0.1: dependencies: it-all "^1.0.6" -it-take@^1.0.0, it-take@^1.0.1, it-take@^1.0.2: - version "1.0.2" - resolved "https://registry.yarnpkg.com/it-take/-/it-take-1.0.2.tgz#b5f1570014db7c3454897898b69bb7ac9c3bffc1" - integrity sha512-u7I6qhhxH7pSevcYNaMECtkvZW365ARqAIt9K+xjdK1B2WUDEjQSfETkOCT8bxFq/59LqrN3cMLUtTgmDBaygw== - -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-take@^1.0.0, it-take@^1.0.1, it-take@^1.0.2: + version "1.0.2" + resolved "https://registry.yarnpkg.com/it-take/-/it-take-1.0.2.tgz#b5f1570014db7c3454897898b69bb7ac9c3bffc1" + integrity sha512-u7I6qhhxH7pSevcYNaMECtkvZW365ARqAIt9K+xjdK1B2WUDEjQSfETkOCT8bxFq/59LqrN3cMLUtTgmDBaygw== it-tar@^4.0.0: version "4.0.0" @@ -11984,18 +9038,6 @@ it-to-buffer@^2.0.0: dependencies: uint8arrays "^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" - it-to-stream@^1.0.0: version "1.0.0" resolved "https://registry.yarnpkg.com/it-to-stream/-/it-to-stream-1.0.0.tgz#6c47f91d5b5df28bda9334c52782ef8e97fe3a4a" @@ -12018,40 +9060,15 @@ it-ws@^4.0.0: iso-url "^1.1.2" ws "^7.3.1" -iter-tools@^7.0.2: - version "7.1.4" - resolved "https://registry.yarnpkg.com/iter-tools/-/iter-tools-7.1.4.tgz#94160bf2c350494ff393f87b9ac96bf029ee656a" - integrity sha512-4dHXdiinrNbDxN+vWAv16CW99JvT86QdNrKgpYWnzuZBXqNsGMA/VWxbAn8ZOOFCf3/R32krMdyye89/7keRcg== - 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.2" - resolved "https://registry.yarnpkg.com/iterate-iterator/-/iterate-iterator-1.0.2.tgz#551b804c9eaa15b847ea6a7cdc2f5bf1ec150f91" - integrity sha512-t91HubM4ZDQ70M9wqp+pcNpu8OyJ9UAtXntT/Bcsvp5tZMnz9vRa+IunKXeI8AnfZMTv0jNuVEmGeLSMjVvfPw== - -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.5: version "0.5.5" resolved "https://registry.yarnpkg.com/js-sha3/-/js-sha3-0.5.5.tgz#baf0c0e8c54ad5903447df96ade7a4a1bca79a4a" - integrity sha1-uvDA6MVK1ZA0R9+Wreekobynmko= + integrity sha512-yLLwn44IVeunwjpDVTDZmQeVbB0h+dZpY2eO68B/Zik8hu6dH+rKeLxwua79GGIvW6xr8NBAcrtiUbYrTjEFTA== 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= + integrity sha512-GII20kjaPX0zJ8wzkTbNDYMY7msuZcTWk8S5UOh6806Jq/wz1J8/bnr8uGU0DAUmYDjj2Mr4X1cW8v/GLYnR+g== js-sha3@0.8.0, js-sha3@^0.8.0: version "0.8.0" @@ -12061,7 +9078,7 @@ js-sha3@0.8.0, js-sha3@^0.8.0: js-stringify@^1.0.1: version "1.0.2" resolved "https://registry.yarnpkg.com/js-stringify/-/js-stringify-1.0.2.tgz#1736fddfd9724f28a3682adc6230ae7e4e9679db" - integrity sha1-Fzb939lyTyijaCrcYjCufk6Weds= + integrity sha512-rtS5ATOo2Q5k1G+DADISilDA6lv79zIiwFd6CcjuIxGKLFm5C+RLImRscVap9k55i+MOZwgliw+NejvkLuGD5g== "js-tokens@^3.0.0 || ^4.0.0", js-tokens@^4.0.0: version "4.0.0" @@ -12071,7 +9088,7 @@ js-stringify@^1.0.1: 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= + integrity sha512-RjTcuD4xjtthQkaWH7dFlH85L+QaVtSoOyGdZ3g6HFhS9dFNDfLyqgm2NFe2X6cQpeFmt0452FJjFG5UameExg== js-yaml@3.13.1: version "3.13.1" @@ -12081,14 +9098,6 @@ js-yaml@3.13.1: 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" - 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" @@ -12097,76 +9106,52 @@ js-yaml@3.x, js-yaml@^3.12.0, js-yaml@^3.13.0, js-yaml@^3.13.1: 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== +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" jsbn@1.1.0: version "1.1.0" resolved "https://registry.yarnpkg.com/jsbn/-/jsbn-1.1.0.tgz#b01307cb29b618a1ed26ec79e911f803c4da0040" - integrity sha1-sBMHyym2GKHtJux56RH4A8TaAEA= + integrity sha512-4bYVV3aAMtDTTu4+xsDYa6sy9GyJ69/amsu9sYF2zqjiEoZA5xJi3BrfX3uY+/IekIu7MwdObdbDWpoZdBv3/A== 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" + integrity sha512-UVU9dibq2JcFWxQPA6KCqj5O42VOmAY3zQUfEKxU0KpTGXwNoCjkX1e13eHNvw/xPynt6pU0rZ1htjWTNTSXsg== 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== + integrity sha512-Mke0DA0QjUWuJlhsE0ZPPhYiJkRap642SmI/4ztCFaUs6V2AiH1sfecc+57NgaryfAA2VR3v6O+CSjC1jZJKOA== jsesc@~0.5.0: version "0.5.0" resolved "https://registry.yarnpkg.com/jsesc/-/jsesc-0.5.0.tgz#e7dee66e35d6fc16f710fe91d5cf69f70f08911d" - integrity sha1-597mbjXW/Bb3EP6R1c9p9w8IkR0= + integrity sha512-uZz5UnB7u4T9LvwmFqXii7pZSouaRPorGs5who1Ip7VO0wxanFvBL7GkM6dTHlgX+jhBApRetaWpnDabOeTcnA== json-buffer@3.0.0: version "3.0.0" resolved "https://registry.yarnpkg.com/json-buffer/-/json-buffer-3.0.0.tgz#5b1f397afc75d677bde8bcfc0e47e1f9a3d9a898" - integrity sha1-Wx85evx11ne96Lz8Dkfh+aPZqJg= + integrity sha512-CuUqjv0FUZIdXkHPI8MezCnFCdaTAacej1TZYulLoAg1h/PhwkdXFN4V/gzY4g+fMBCOV2xF+rp7t2XD2ns/NQ== -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-buffer@3.0.1: + version "3.0.1" + resolved "https://registry.yarnpkg.com/json-buffer/-/json-buffer-3.0.1.tgz#9338802a30d3b6605fbe0613e094008ca8c05a13" + integrity sha512-4bV5BfR2mqfQTJm+V5tPPdf+ZpuhiIvTuAB5g8kcrXOZpTT/QwwVRWBywX1ozr6lEuPdbHxwaJlm9G6mI2sfSQ== json-parse-better-errors@^1.0.1: version "1.0.2" resolved "https://registry.yarnpkg.com/json-parse-better-errors/-/json-parse-better-errors-1.0.2.tgz#bb867cfb3450e69107c131d1c514bab3dc8bcaa9" integrity sha512-mrqyZKfX5EhL7hvqcV6WG1yYjnjeuYDzDhhcAAUrq8Po85NBQBJP+ZDUT75qZQ98IkUoBqdkExkukOU7Ts2wrw== -json-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== +json-pointer@^0.6.1: + version "0.6.2" + resolved "https://registry.yarnpkg.com/json-pointer/-/json-pointer-0.6.2.tgz#f97bd7550be5e9ea901f8c9264c9d436a22a93cd" + integrity sha512-vLWcKbOaXlO+jvRy4qNd+TI1QUPZzfJj1tpJ3vAXDych5XJf93ftpUKe5pKCrzyIIwgBJcOcCVRUfqQP25afBw== dependencies: foreach "^2.0.4" @@ -12181,7 +9166,7 @@ json-rpc-engine@^5.1.3: json-rpc-random-id@^1.0.0, json-rpc-random-id@^1.0.1: version "1.0.1" resolved "https://registry.yarnpkg.com/json-rpc-random-id/-/json-rpc-random-id-1.0.1.tgz#ba49d96aded1444dbb8da3d203748acbbcdec8c8" - integrity sha1-uknZat7RRE27jaPSA3SKy7zeyMg= + integrity sha512-RJ9YYNCkhVDBuP4zN5BBtYAzEl03yq/jIIsyif0JY9qyJuQQZNeDK7anAPKKlyEtLSj2s8h6hNh2F8zO5q7ScA== json-schema-traverse@^0.4.1: version "0.4.1" @@ -12198,47 +9183,32 @@ json-schema-typed@^7.0.3: resolved "https://registry.yarnpkg.com/json-schema-typed/-/json-schema-typed-7.0.3.tgz#23ff481b8b4eebcd2ca123b4fa0409e66469a2d9" integrity sha512-7DE8mpG+/fVw+dTpjbxnx47TaMnDfOI1jwft9g1VybltZCduyRQPJPvc+zzKY9WPHxhPWczyFuYa6I8Mw4iU5A== -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-schema@0.4.0: + version "0.4.0" + resolved "https://registry.yarnpkg.com/json-schema/-/json-schema-0.4.0.tgz#f7de4cf6efab838ebaeb3236474cbba5a1930ab5" + integrity sha512-es94M3nTIfsEPisRafak+HDLfHXnKBhV3vU5eqPcS3flIWqcxJWgXHXiey3YrpaNsanY5ei1VoYEbOzijuq9BA== json-stable-stringify-without-jsonify@^1.0.1: version "1.0.1" resolved "https://registry.yarnpkg.com/json-stable-stringify-without-jsonify/-/json-stable-stringify-without-jsonify-1.0.1.tgz#9db7b59496ad3f3cfef30a75142d2d930ad72651" - integrity sha1-nbe1lJatPzz+8wp1FC0tkwrXJlE= + integrity sha512-Bdboy+l7tA3OGW6FjyFHWkP5LuByj1Tk33Ljyq0axyzdk9//JSi2u3fP1QSmd1KNwq6VOKYGlAu87CisVir6Pw== 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= + integrity sha512-i/J297TW6xyj7sDFa7AmBPkQvLIxWr2kKPWI26tXydnZrzVAocNqn5DMNT1Mzk0vit1V5UkRM7C1KdVNp7Lmcg== dependencies: jsonify "~0.0.0" json-stringify-safe@^5.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.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" + integrity sha512-ZClg6AaYvamvYEE82d3Iyd3vSSIjQ+odgjaTzRuO3s7toCdFKczob2i0zCh7JE8kWn17yvAWhUVxvqGwUalsRA== json5@^0.5.1: version "0.5.1" resolved "https://registry.yarnpkg.com/json5/-/json5-0.5.1.tgz#1eade7acc012034ad84e2396767ead9fa5495821" - integrity sha1-Hq3nrMASA0rYTiOWdn6tn6VJWCE= + integrity sha512-4xrs1aW+6N5DalkqSVA8fxh458CXvR99WU8WLKmq4v8eWAL86Xo3BVqyd3SkA9wEVjCMqyvvRRkshAdOnBp5rw== json5@^1.0.1: version "1.0.1" @@ -12247,32 +9217,17 @@ json5@^1.0.1: 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= + integrity sha512-PKllAqbgLgxHaj8TElYymKCAgrASebJrWpTnEkOaTowt23VKXXN0sUeriJ+eh7y6ufb/CC5ap11pz71/cM0hUw== 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= + integrity sha512-m6F1R3z8jjlf2imQHS2Qez5sjKWQzbuuhuJ/FKYFRZvPE3PuHcSMVZzfsLhGVOkfd20obL5SWEBew5ShlquNxg== optionalDependencies: graceful-fs "^4.1.6" @@ -12288,43 +9243,38 @@ jsonfile@^6.0.1: 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== + integrity sha512-trvBk1ki43VZptdBI5rIlG4YOzyeH/WefQt5rj1grasPn4iiZWKet8nkgc4GlsAylaztn0qZfUYOiTsASJFdNA== 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== + version "1.4.1" + resolved "https://registry.yarnpkg.com/jsonschema/-/jsonschema-1.4.1.tgz#cc4c3f0077fb4542982973d8a083b6b34f482dab" + integrity sha512-S6cATIPVv1z0IlxdN+zUk5EPjkGCdnhN4wVSBlvoUO1tOLJootbo9CquNJmbIh4yikWHiUedhRYrNPn1arpEmQ== jsprim@^1.2.2: - version "1.4.1" - resolved "https://registry.yarnpkg.com/jsprim/-/jsprim-1.4.1.tgz#313e66bc1e5cc06e438bc1b7499c2e5c56acb6a2" - integrity sha1-MT5mvB5cwG5Di8G3SZwuXFastqI= + version "1.4.2" + resolved "https://registry.yarnpkg.com/jsprim/-/jsprim-1.4.2.tgz#712c65533a15c878ba59e9ed5f0e26d5b77c5feb" + integrity sha512-P2bSOMAc/ciLz6DzgjVlGJP9+BrJWu5UDGK70C2iweC5QBIeFf0ZXRvGjEj2uYgrY2MkAAhsSWHDWlFtEroZWw== dependencies: assert-plus "1.0.0" extsprintf "1.3.0" - json-schema "0.2.3" + json-schema "0.4.0" verror "1.10.0" jstransformer@1.0.0: version "1.0.0" resolved "https://registry.yarnpkg.com/jstransformer/-/jstransformer-1.0.0.tgz#ed8bf0921e2f3f1ed4d5c1a44f68709ed24722c3" - integrity sha1-7Yvwkh4vPx7U1cGkT2hwntJHIsM= + integrity sha512-C9YK3Rf8q6VAPDCCU9fnqo3mAfOH6vUGnMcP4AQAYIEpWtfGLpwOTmZ+igtdK5y+VvI2n3CyYSzy4Qh34eq24A== dependencies: is-promise "^2.0.0" promise "^7.0.1" "jsx-ast-utils@^2.4.1 || ^3.0.0": - version "3.2.1" - resolved "https://registry.yarnpkg.com/jsx-ast-utils/-/jsx-ast-utils-3.2.1.tgz#720b97bfe7d901b927d87c3773637ae8ea48781b" - integrity sha512-uP5vu8xfy2F9A6LGC22KO7e2/vGTS1MhP+18f++ZNlf0Ohaxbc9nIEwHAsejlJKyzfZzU5UIhe5ItYkitcZnZA== + version "3.3.3" + resolved "https://registry.yarnpkg.com/jsx-ast-utils/-/jsx-ast-utils-3.3.3.tgz#76b3e6e6cece5c69d49a5792c3d01bd1a0cdc7ea" + integrity sha512-fYQHZTZ8jSfmWZ0iyzfwiU4WDX4HpHbMCZ3gPlWYiCl3BoeOTsqKBqnTVfH2rYT7eP5c3sVbeSPHnnJOaTrWiw== dependencies: - array-includes "^3.1.3" - object.assign "^4.1.2" + array-includes "^3.1.5" + object.assign "^4.1.3" just-debounce-it@^1.1.0: version "1.5.0" @@ -12348,17 +9298,15 @@ k-bucket@^5.1.0: dependencies: randombytes "^2.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== +keccak@3.0.1: + version "3.0.1" + resolved "https://registry.yarnpkg.com/keccak/-/keccak-3.0.1.tgz#ae30a0e94dbe43414f741375cff6d64c8bea0bff" + integrity sha512-epq90L9jlFWCW7+pQa6JOnKn2Xgl2mtI664seYR6MHskvI9agt7AnDqmAlp9TqU4/caMYbA08Hi5DMZAl5zdkA== dependencies: - bindings "^1.5.0" - inherits "^2.0.4" - nan "^2.14.0" - safe-buffer "^5.2.0" + node-addon-api "^2.0.0" + node-gyp-build "^4.2.0" -keccak@^3.0.0: +keccak@^3.0.0, keccak@^3.0.2: version "3.0.2" resolved "https://registry.yarnpkg.com/keccak/-/keccak-3.0.2.tgz#4c2c6e8c54e04f2670ee49fa734eb9da152206e0" integrity sha512-PyKKjkH53wDMLGrvmRGSNWgmSxZOUqbnXwKL9tmgbFYA1iAYqW21kfR7mZXV0MlESiefxQQE9X9fTa3X+2MPDQ== @@ -12367,18 +9315,6 @@ keccak@^3.0.0: node-gyp-build "^4.2.0" readable-stream "^3.6.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.0.0" resolved "https://registry.yarnpkg.com/keyv/-/keyv-3.0.0.tgz#44923ba39e68b12a7cec7df6c3268c031f2ef373" @@ -12393,17 +9329,24 @@ keyv@^3.0.0: dependencies: json-buffer "3.0.0" +keyv@^4.0.0: + version "4.5.0" + resolved "https://registry.yarnpkg.com/keyv/-/keyv-4.5.0.tgz#dbce9ade79610b6e641a9a65f2f6499ba06b9bc6" + integrity sha512-2YvuMsA+jnFGtBareKqgANOEKe1mk3HKiXu2fRmAfyxG0MJAywNhi5ttWA3PMjl4NmpyjZNbFifR2vNjW1znfA== + dependencies: + json-buffer "3.0.1" + 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= + integrity sha512-NOW9QQXMoZGg/oqnVNoNTTIFEIid1627WCffUBJEdMxYApq7mNE7CpzucIPc+ZQg25Phej7IJSmX3hO+oblOtQ== 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= + integrity sha512-24XsCxmEbRwEDbz/qz3stgin8TTzZ1ESR56OMCN0ujYg+vRutNSiOj9bHH9u85DKgXguraugV5sFuvbD4FW/hw== dependencies: is-buffer "^1.1.5" @@ -12420,36 +9363,24 @@ kind-of@^6.0.0, kind-of@^6.0.2: klaw@^1.0.0: version "1.3.1" resolved "https://registry.yarnpkg.com/klaw/-/klaw-1.3.1.tgz#4088433b46b3b1ba259d78785d8e96f73ba02439" - integrity sha1-QIhDO0azsbolnXh4XY6W9zugJDk= + integrity sha512-TED5xi9gGQjGpNnvRWknrwAB1eL5GciPfVFOt3Vk1OJCVDQbzuSfrF3hkUQKlsgKrG1F+0t5W0m+Fje1jIt8rw== 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= + integrity sha512-RE2g0b5VGZsOCFOCgP7omTRYFqydmZkBwl5oNnQ1lDYC57uyO9KqNnNVxT7COSHTxrRCWVcAVOcbjk+tvh/rgQ== lazy@~1.0.11: version "1.0.11" resolved "https://registry.yarnpkg.com/lazy/-/lazy-1.0.11.tgz#daa068206282542c088288e975c297c1ae77b690" - integrity sha1-2qBoIGKCVCwIgojpdcKXwa53tpA= - -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" + integrity sha512-Y+CjUfLmIpoUCCRl0ub4smrYtGGr5AOa2AKOaWelGHOGz33X/Y/KizefGqbkwfz44+cnq/+9habclf8vOmu2LA== lcid@^1.0.0: version "1.0.0" resolved "https://registry.yarnpkg.com/lcid/-/lcid-1.0.0.tgz#308accafa0bc483a3867b4b6f2b9506251d1b835" - integrity sha1-MIrMr6C8SDo4Z7S28rlQYlHRuDU= + integrity sha512-YiGkH6EnGrDGqLMITnGjXtGmNtjoXw9SVUzcaos8RBi7Ps0VBylkq+vOcY9QE5poLasPCR849ucFUkl0UzUyOw== dependencies: invert-kv "^1.0.0" @@ -12460,19 +9391,6 @@ lcid@^2.0.0: dependencies: invert-kv "^2.0.0" -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" @@ -12541,7 +9459,7 @@ level-iterator-stream@^5.0.0: level-iterator-stream@~1.3.0: version "1.3.1" resolved "https://registry.yarnpkg.com/level-iterator-stream/-/level-iterator-stream-1.3.1.tgz#e43b78b1a8143e6fa97a4f485eb8ea530352f2ed" - integrity sha1-5Dt4sagUPm+pek9IXrjqUwNS8u0= + integrity sha512-1qua0RHNtr4nrZBgYlpV0qHHeHpcRRWTxEZJ8xsemoHAXNL5tbooh4tPEEqIqsbWCAJBmUmkwYK/sW5OrFjWWw== dependencies: inherits "^2.0.1" level-errors "^1.0.3" @@ -12566,16 +9484,15 @@ level-iterator-stream@~4.0.0: 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== +level-js@^5.0.0: + version "5.0.2" + resolved "https://registry.yarnpkg.com/level-js/-/level-js-5.0.2.tgz#5e280b8f93abd9ef3a305b13faf0b5397c969b55" + integrity sha512-SnBIDo2pdO5VXh02ZmtAyPP6/+6YTJg2ibLtl9C34pWvmtMEmRTWpra+qO/hifkUtBTOtfx6S9vLDjBsBK4gRg== dependencies: - abstract-leveldown "~6.0.1" - immediate "~3.2.3" + abstract-leveldown "~6.2.3" + buffer "^5.5.0" inherits "^2.0.3" ltgt "^2.1.2" - typedarray-to-buffer "~3.1.5" level-js@^6.1.0: version "6.1.0" @@ -12596,15 +9513,7 @@ level-mem@^3.0.1: level-packager "~4.0.0" memdown "~3.0.0" -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: - level-packager "^5.0.3" - memdown "^5.0.0" - -level-packager@^5.0.0, level-packager@^5.0.3: +level-packager@^5.1.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== @@ -12633,6 +9542,11 @@ level-supports@^2.0.1: resolved "https://registry.yarnpkg.com/level-supports/-/level-supports-2.1.0.tgz#9af908d853597ecd592293b2fad124375be79c5f" integrity sha512-E486g1NCjW5cF78KGPrMDRBYzPuueMZ6VBXHT6gC7A8UYWGiM14fGgp+s/L1oFfDWSPV/+SFkYCmZ0SiESkRKA== +level-supports@^4.0.0: + version "4.0.1" + resolved "https://registry.yarnpkg.com/level-supports/-/level-supports-4.0.1.tgz#431546f9d81f10ff0fea0e74533a0e875c08c66a" + integrity sha512-PbXpve8rKeNcZ9C1mUicC9auIYFyGpkV9/i6g76tLgANwWhtG2v7I4xNBUlkn3lE2/dZF3Pi0ygYGtLc4RXXdA== + level-supports@~1.0.0: version "1.0.1" resolved "https://registry.yarnpkg.com/level-supports/-/level-supports-1.0.1.tgz#2f530a596834c7301622521988e2c36bb77d122d" @@ -12640,17 +9554,25 @@ level-supports@~1.0.0: dependencies: xtend "^4.0.2" +level-transcoder@^1.0.1: + version "1.0.1" + resolved "https://registry.yarnpkg.com/level-transcoder/-/level-transcoder-1.0.1.tgz#f8cef5990c4f1283d4c86d949e73631b0bc8ba9c" + integrity sha512-t7bFwFtsQeD8cl8NIoQ2iwxA0CL/9IFw7/9gAjOonH0PWTTiRfY7Hq+Ejbsxh86tXobDQ6IOiddjNYIfOBs06w== + dependencies: + buffer "^6.0.3" + module-error "^1.0.1" + 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= + integrity sha512-bBNKOEOMl8msO+uIM9YX/gUO6ckokZ/4pCwTm/lwvs46x6Xs8Zy0sn3Vh37eDqse4mhy4fOMIb/JsSM2nyQFtw== dependencies: end-stream "~0.1.0" level-ws@0.0.0: version "0.0.0" resolved "https://registry.yarnpkg.com/level-ws/-/level-ws-0.0.0.tgz#372e512177924a00424b0b43aef2bb42496d228b" - integrity sha1-Ny5RIXeSSgBCSwtDrvK7QkltIos= + integrity sha512-XUTaO/+Db51Uiyp/t7fCMGVFOTdtLS/NIACxE/GHsij15mKzxksZifKVjlXDF41JMUP/oM1Oc4YNGdKnc3dVLw== dependencies: readable-stream "~1.0.15" xtend "~2.1.1" @@ -12664,24 +9586,14 @@ level-ws@^1.0.0: readable-stream "^2.2.8" xtend "^4.0.1" -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: - inherits "^2.0.3" - readable-stream "^3.1.0" - xtend "^4.0.1" - -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== +level@6.0.1: + version "6.0.1" + resolved "https://registry.yarnpkg.com/level/-/level-6.0.1.tgz#dc34c5edb81846a6de5079eac15706334b0d7cd6" + integrity sha512-psRSqJZCsC/irNhfHzrVZbmPYXDcEYhA5TVNwr+V92jF44rbf86hqGp8fiT702FyiArScYIlPSBTDUASCVNSpw== dependencies: - level-js "^4.0.0" - level-packager "^5.0.0" - leveldown "^5.0.0" - opencollective-postinstall "^2.0.0" + level-js "^5.0.0" + level-packager "^5.1.0" + leveldown "^5.4.0" level@^7.0.0: version "7.0.1" @@ -12692,17 +9604,15 @@ level@^7.0.0: level-packager "^6.0.1" leveldown "^6.1.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== +level@^8.0.0: + version "8.0.0" + resolved "https://registry.yarnpkg.com/level/-/level-8.0.0.tgz#41b4c515dabe28212a3e881b61c161ffead14394" + integrity sha512-ypf0jjAk2BWI33yzEaaotpq7fkOPALKAgDBxggO6Q9HGX2MRXn0wbP1Jn/tJv1gtL867+YOjOB49WaUF3UoJNQ== dependencies: - abstract-leveldown "~6.0.0" - fast-future "~1.0.2" - napi-macros "~1.8.1" - node-gyp-build "~3.8.0" + browser-level "^1.0.1" + classic-level "^1.2.0" -leveldown@^5.0.0: +leveldown@5.6.0, leveldown@^5.4.0: version "5.6.0" resolved "https://registry.yarnpkg.com/leveldown/-/leveldown-5.6.0.tgz#16ba937bb2991c6094e13ac5a6898ee66d3eee98" integrity sha512-iB8O/7Db9lPaITU1aA2txU/cBEXAt4vWwKQRrrWuS6XDgbP4QZGj9BL2aNbwb002atoQ/lIotJkfyzz+ygQnUQ== @@ -12711,7 +9621,7 @@ leveldown@^5.0.0: napi-macros "~2.0.0" node-gyp-build "~4.1.0" -leveldown@^6.1.0: +leveldown@6.1.0: version "6.1.0" resolved "https://registry.yarnpkg.com/leveldown/-/leveldown-6.1.0.tgz#7ab1297706f70c657d1a72b31b40323aa612b9ee" integrity sha512-8C7oJDT44JXxh04aSSsfcMI8YiaGRhOFI9/pMEL7nWJLVsWajDPTRxsSHTM2WcTVY5nXM+SuRHzPPi0GbnDX+w== @@ -12720,15 +9630,14 @@ leveldown@^6.1.0: napi-macros "~2.0.0" node-gyp-build "^4.3.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== +leveldown@^6.1.0: + version "6.1.1" + resolved "https://registry.yarnpkg.com/leveldown/-/leveldown-6.1.1.tgz#0f0e480fa88fd807abf94c33cb7e40966ea4b5ce" + integrity sha512-88c+E+Eizn4CkQOBHwqlCJaTNEjGpaEIikn1S+cINc5E9HEvJ77bqY4JY/HxT5u0caWqsc3P3DcFIKBI1vHt+A== dependencies: - deferred-leveldown "~5.0.0" - level-errors "~2.0.0" - level-iterator-stream "~4.0.0" - xtend "~4.0.0" + abstract-leveldown "^7.2.0" + napi-macros "~2.0.0" + node-gyp-build "^4.3.0" levelup@4.4.0, levelup@^4.3.2: version "4.4.0" @@ -12776,15 +9685,10 @@ levelup@^5.1.1: level-supports "^2.0.1" queue-microtask "^1.2.3" -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, levn@~0.3.0: version "0.3.0" resolved "https://registry.yarnpkg.com/levn/-/levn-0.3.0.tgz#3b09924edf9f083c0490fdd4c0bc4421e04764ee" - integrity sha1-OwmSTt+fCDwEkP3UwLxEIeBHZO4= + integrity sha512-0OO4y2iOHix2W6ujICbKIaEQXvFQHue65vUG3pb5EUomzPI90z9hsA1VsO/dbIIpC53J8gxM9Q4Oho0jrCM/yA== dependencies: prelude-ls "~1.1.2" type-check "~0.3.2" @@ -12799,23 +9703,6 @@ libp2p-bootstrap@^0.14.0: multiaddr "^10.0.0" peer-id "^0.16.0" -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" - libp2p-crypto@^0.21.0, libp2p-crypto@^0.21.1, libp2p-crypto@^0.21.2: version "0.21.2" resolved "https://registry.yarnpkg.com/libp2p-crypto/-/libp2p-crypto-0.21.2.tgz#7f9875436f24ca3887b077210b217b702bd72916" @@ -12863,7 +9750,7 @@ libp2p-floodsub@^0.29.0: time-cache "^0.3.0" uint8arrays "^3.0.0" -libp2p-gossipsub@^0.13.0: +libp2p-gossipsub@0.13.0: version "0.13.0" resolved "https://registry.yarnpkg.com/libp2p-gossipsub/-/libp2p-gossipsub-0.13.0.tgz#a70db85139c62d7a8ad273be3ba01d1c9f338f7b" integrity sha512-xy2jRZGmJpjy++Di6f1admtjve8Fx0z5l8NISTQS282egwbRMmTPE6/UeYktb6hNGAgtSTIwXdHjXmMOiTarFA== @@ -13105,53 +9992,49 @@ libp2p@^0.36.2: wherearewe "^1.0.0" xsalsa20 "^1.1.0" -lilconfig@2.0.4: - version "2.0.4" - resolved "https://registry.yarnpkg.com/lilconfig/-/lilconfig-2.0.4.tgz#f4507d043d7058b380b6a8f5cb7bcd4b34cee082" - integrity sha512-bfTIN7lEsiooCocSISTWXkiWJkRqtL9wYtYy+8EK3Y41qh3mpwPU0ycTOgjdY9ErwXCc8QyrQp82bdL0Xkm9yA== - -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= +lilconfig@2.0.5: + version "2.0.5" + resolved "https://registry.yarnpkg.com/lilconfig/-/lilconfig-2.0.5.tgz#19e57fd06ccc3848fd1891655b5a447092225b25" + integrity sha512-xaYmXZtTHPAw5m+xLN8ab9C+3a8YmV3asNSPOATITbtwrfbwaLJj8h66H1WMIpALCkqsIzK3h7oQ+PdX+LQ9Eg== lint-staged@^12.3.4: - version "12.3.4" - resolved "https://registry.yarnpkg.com/lint-staged/-/lint-staged-12.3.4.tgz#4b1ff8c394c3e6da436aaec5afd4db18b5dac360" - integrity sha512-yv/iK4WwZ7/v0GtVkNb3R82pdL9M+ScpIbJLJNyCXkJ1FGaXvRCOg/SeL59SZtPpqZhE7BD6kPKFLIDUhDx2/w== + version "12.5.0" + resolved "https://registry.yarnpkg.com/lint-staged/-/lint-staged-12.5.0.tgz#d6925747480ae0e380d13988522f9dd8ef9126e3" + integrity sha512-BKLUjWDsKquV/JuIcoQW4MSAI3ggwEImF1+sB4zaKvyVx1wBk3FsG7UK9bpnmBTN1pm7EH2BBcMwINJzCRv12g== dependencies: cli-truncate "^3.1.0" colorette "^2.0.16" - commander "^8.3.0" - debug "^4.3.3" + commander "^9.3.0" + debug "^4.3.4" execa "^5.1.1" - lilconfig "2.0.4" - listr2 "^4.0.1" - micromatch "^4.0.4" + lilconfig "2.0.5" + listr2 "^4.0.5" + micromatch "^4.0.5" normalize-path "^3.0.0" - object-inspect "^1.12.0" + object-inspect "^1.12.2" + pidtree "^0.5.0" string-argv "^0.3.1" - supports-color "^9.2.1" + supports-color "^9.2.2" yaml "^1.10.2" -listr2@^4.0.1: - version "4.0.4" - resolved "https://registry.yarnpkg.com/listr2/-/listr2-4.0.4.tgz#d098a1c419284fb26e184b5d5889b235e8912245" - integrity sha512-vJOm5KD6uZXjSsrwajr+mNacIjf87gWvlBEltPWLbTkslUscWAzquyK4xfe9Zd4RDgO5nnwFyV06FC+uVR+5mg== +listr2@^4.0.5: + version "4.0.5" + resolved "https://registry.yarnpkg.com/listr2/-/listr2-4.0.5.tgz#9dcc50221583e8b4c71c43f9c7dfd0ef546b75d5" + integrity sha512-juGHV1doQdpNT3GSTs9IUN43QJb7KHdF9uqg7Vufs/tG9VTzpFphqF4pm/ICdAABGQxsyNn9CiYA3StkI6jpwA== dependencies: cli-truncate "^2.1.0" colorette "^2.0.16" log-update "^4.0.0" p-map "^4.0.0" rfdc "^1.3.0" - rxjs "^7.5.4" + rxjs "^7.5.5" through "^2.3.8" wrap-ansi "^7.0.0" -load-json-file@^1.0.0, load-json-file@^1.1.0: +load-json-file@^1.0.0: version "1.1.0" resolved "https://registry.yarnpkg.com/load-json-file/-/load-json-file-1.1.0.tgz#956905708d58b4bab4c2261b04f59f31c99374c0" - integrity sha1-lWkFcI1YtLq0wiYbBPWfMcmTdMA= + integrity sha512-cy7ZdNRXdablkXYNI049pthVeXFurRyb9+hA/dZzerZ0pGTx42z+y+ssxBaVV2l70t1muq5IdKhn4UtcoGUY9A== dependencies: graceful-fs "^4.1.2" parse-json "^2.2.0" @@ -13159,34 +10042,10 @@ 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" - integrity sha1-K1aLJl7slExtnA3pw9u7ygNUzY4= + integrity sha512-NCI2kiDkyR7VeEKm27Kda/iQHyKJe1Bu0FlTbYp3CqJu+9IFe9bLyAjMxf5ZDDbEg+iMPzB5zYyUTSm8wVTKmA== dependencies: p-locate "^2.0.0" path-exists "^3.0.0" @@ -13218,146 +10077,52 @@ lodash-es@^4.2.1: 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= + integrity sha512-hFuH8TY+Yji7Eja3mGiuAxBqLagejScbG8GbG0j6o9vzn0YL14My+ktnqtZgFTosKymC9/44wP6s7xyuLfnClw== lodash.debounce@^4.0.8: version "4.0.8" resolved "https://registry.yarnpkg.com/lodash.debounce/-/lodash.debounce-4.0.8.tgz#82d79bff30a67c4005ffd5e2515300ad9ca4d7af" - integrity sha1-gteb/zCmfEAF/9XiUVMArZyk168= - -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= + integrity sha512-FT1yDzDYEoYWhnSGnpE/4Kj1fLZkDFyqRb7fNt6FdYOSxlUWAtp42Eh6Wb0rGIv/m9Bgo7x4GhQbm5Ys4SG5ow== lodash.findindex@^4.4.0: version "4.6.0" resolved "https://registry.yarnpkg.com/lodash.findindex/-/lodash.findindex-4.6.0.tgz#a3245dee61fb9b6e0624b535125624bb69c11106" - integrity sha1-oyRd7mH7m24GJLU1ElYku2nBEQY= + integrity sha512-9er6Ccz6sEST3bHFtUrCFWk14nE8cdL/RoW1RRDV1BxqN3qsmsT56L14jhfctAqhVPVcdJw4MRxEaVoAK+JVvw== lodash.flatmap@^4.5.0: version "4.5.0" resolved "https://registry.yarnpkg.com/lodash.flatmap/-/lodash.flatmap-4.5.0.tgz#ef8cbf408f6e48268663345305c6acc0b778702e" - integrity sha1-74y/QI9uSCaGYzRTBcaswLd4cC4= + integrity sha512-/OcpcAGWlrZyoHGeHh3cAoa6nGdX6QYtmzNP84Jqol6UEQQ2gIaU3H+0eICcjcKGl0/XF8LWOujNn9lffsnaOg== 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= + integrity sha512-C5N2Z3DgnnKr0LOpv/hKCgKdb7ZZwafIrsesve6lmzvZIRZRGaZ/l6Q8+2W7NaT+ZwO3fFlSCzCzrDCFdJfZ4g== -lodash.isequal@^4.0.0, lodash.isequal@^4.5.0: +lodash.isequal@^4.0.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= + integrity sha512-pDo3lu8Jhfjqls6GkMgpahsF9kCyayhgykjyLMNFTKWrpVdAQtYyB4muAMWozBB4ig/dtWAmsMxLEI8wuz+DYQ== lodash.merge@^4.6.0, lodash.merge@^4.6.2: version "4.6.2" resolved "https://registry.yarnpkg.com/lodash.merge/-/lodash.merge-4.6.2.tgz#558aa53b43b661e1925a0afdfa36a9a1085fe57a" integrity sha512-0KpjqXRVvrYyCsX1swR/XTK0va6VQkQM6MNo7PqW77ByjAhoARA8EfrP1N4+KlKj8YS0ZUCtRT/YUuhyYDujIQ== -lodash.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" + integrity sha512-HDWXG8isMntAyRF5vZ7xKuEvOhT4AhlRt/3czTSjvGUxjYCBVRQY48ViDHyfYz9VIoBkW4TMGQNapx+l3RUwdA== lodash.throttle@^4.1.1: version "4.1.1" resolved "https://registry.yarnpkg.com/lodash.throttle/-/lodash.throttle-4.1.1.tgz#c23e91b710242ac70c37f1e1cda9274cc39bf2f4" - integrity sha1-wj6RtxAkKscMN/HhzaknTMOb8vQ= + integrity sha512-wIkUCfVKpVsWo3JSZlc+8MB5it+2AN5W8J7YVMST30UrvcQNZ1Okbj+rbVniijTWE6FGYy4XJq/rHkas8qJMLQ== -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.0.0, lodash@^4.1.0, lodash@^4.15.0, lodash@^4.17.11, lodash@^4.17.12, lodash@^4.17.14, lodash@^4.17.15, lodash@^4.17.19, lodash@^4.17.20, lodash@^4.17.21, lodash@^4.17.4, lodash@^4.2.1: +lodash@^4.0.0, lodash@^4.17.11, lodash@^4.17.12, lodash@^4.17.14, lodash@^4.17.15, lodash@^4.17.19, lodash@^4.17.21, 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== @@ -13369,19 +10134,13 @@ log-symbols@3.0.0: 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== +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: - chalk "^2.0.1" + chalk "^4.1.0" + is-unicode-supported "^0.1.0" log-update@^4.0.0: version "4.0.0" @@ -13393,10 +10152,10 @@ log-update@^4.0.0: slice-ansi "^4.0.0" wrap-ansi "^6.2.0" -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== +loglevel@^1.6.8: + version "1.8.0" + resolved "https://registry.yarnpkg.com/loglevel/-/loglevel-1.8.0.tgz#e7ec73a57e1e7b419cb6c6ac06bf050b67356114" + integrity sha512-G6A/nJLRgWOuuwdNuA6koovfEV1YpqqAG4pRUlFaz3jj2QNZ8M4vBqnVA+HBTmU/AMNUtlOsMmSpF6NyOjztbA== long@^4.0.0: version "4.0.0" @@ -13406,7 +10165,7 @@ long@^4.0.0: longest@^1.0.1: version "1.0.1" resolved "https://registry.yarnpkg.com/longest/-/longest-1.0.1.tgz#30a0b2da38f73770e8294a0d22e6625ed77d0097" - integrity sha1-MKCy2jj3N3DoKUoNIuZiXtd9AJc= + integrity sha512-k+yt5n3l48JU4k8ftnKG6V7u32wyH2NfKzeMto9F/QRE0amxy/LayxwlvjjkZEIzqR+19IrtFO8p5kB9QaYUFg== loose-envify@^1.0.0, loose-envify@^1.1.0, loose-envify@^1.4.0: version "1.4.0" @@ -13415,29 +10174,29 @@ loose-envify@^1.0.0, loose-envify@^1.1.0, loose-envify@^1.4.0: dependencies: js-tokens "^3.0.0 || ^4.0.0" +loupe@^2.3.1: + version "2.3.4" + resolved "https://registry.yarnpkg.com/loupe/-/loupe-2.3.4.tgz#7e0b9bffc76f148f9be769cb1321d3dcf3cb25f3" + integrity sha512-OvKfgCC2Ndby6aSTREl5aCCPTNIzlDfQZvZxNUrBrihDhL3xcrYegTblhmEiCrg2kKQz4XsFIaemE5BF4ybSaQ== + dependencies: + get-func-name "^2.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= + integrity sha512-UuxaYakO7XeONbKrZf5FEgkantPf5DUqDayzP5VXZrtRPdH86s4kN47I8B3TW10S4QKiE3ziHNf3kRN//okHjA== 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" + integrity sha512-2Fgx1Ycm599x+WGpIYwJOvsjmXFzTSc34IwDWALRA/8AopUKAVPwfJ+h5+f85BCp0PWmmJcWzEpxOpoXycMpdA== lowercase-keys@1.0.0: version "1.0.0" resolved "https://registry.yarnpkg.com/lowercase-keys/-/lowercase-keys-1.0.0.tgz#4e3366b39e7f5457e35f1324bdf6f88d0bfc7306" - integrity sha1-TjNms55/VFfjXxMkvfb4jQv8cwY= + integrity sha512-RPlX0+PHuvxVDZ7xX+EBVAp4RsVxP/TdDSN2mJYdiq1Lc4Hz7EUSjUI7RZrKKlmrIzVhf6Jo2stj7++gVarS0A== lowercase-keys@^1.0.0, lowercase-keys@^1.0.1: version "1.0.1" @@ -13449,13 +10208,10 @@ 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" +lowercase-keys@^3.0.0: + version "3.0.0" + resolved "https://registry.yarnpkg.com/lowercase-keys/-/lowercase-keys-3.0.0.tgz#c5e7d442e37ead247ae9db117a9d0a467c89d4f2" + integrity sha512-ozCC6gdQ+glXOQsveKD0YsDy8DSQFjDTz4zyzEHNV5+JP5D62LmfDZ6o1cycFx9ouG940M5dE8C8CTewdj2YWQ== lru-cache@^5.1.1: version "5.1.1" @@ -13471,15 +10227,25 @@ lru-cache@^6.0.0: dependencies: yallist "^4.0.0" +lru-cache@^7.10.1: + version "7.14.0" + resolved "https://registry.yarnpkg.com/lru-cache/-/lru-cache-7.14.0.tgz#21be64954a4680e303a09e9468f880b98a0b3c7f" + integrity sha512-EIRtP1GrSJny0dqb50QXRUNBxHJhcpxHC++M5tD7RYbvLLn5KVWKsbyswSSqDuU15UFi3bgTQIY8nhDMeF6aDQ== + 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= + integrity sha512-Pn9cox5CsMYngeDbmChANltQl+5pi6XmTrraMSzhPmMBbmgcxmqWry0U3PGapCU1yB4/LqCcom7qhHZiF/jGfQ== 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= + integrity sha512-AI2r85+4MquTw9ZYqabu4nMwy9Oftlfa/e/52t9IjtfG+mGBbTNdAoZ3RQKLHR6r0wQnwZnPIEh/Ya6XTWAKNA== + +luxon@^1.23.x: + version "1.28.0" + resolved "https://registry.yarnpkg.com/luxon/-/luxon-1.28.0.tgz#e7f96daad3938c06a62de0fb027115d251251fbf" + integrity sha512-TfTiyvZhwBYM/7QdAVDh+7dBTBA29v4ik0Ce9zda3Mnf8on1S5KJI8P2jKFZ8+5C0jhmr0KwJEO/Wdpm0VeWJQ== mafmt@^10.0.0: version "10.0.0" @@ -13513,17 +10279,12 @@ map-age-cleaner@^0.1.1: 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= + integrity sha512-8y/eV9QQZCiyn1SprXSrCmqJN0yNRATe+PO8ztwqrvrbdRLA3eYJF0yaR0YayLWkMbsQSKWS9N2gPcGEc4UsZg== 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= + integrity sha512-4y7uGv8bd2WdM9vpQsiQNo41Ln1NvhvDRuVt0k2JZQ+ezN2uaQes7lZeZ+QQUHOLQAtDaBJ+7wCbi+ab/KFs+w== dependencies: object-visit "^1.0.0" @@ -13532,20 +10293,10 @@ markdown-table@^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== - math@0.0.3: version "0.0.3" resolved "https://registry.yarnpkg.com/math/-/math-0.0.3.tgz#85b020fd54ce10b26abeabfcd7e1f4bdbc46470f" - integrity sha1-hbAg/VTOELJqvqv81+H0vbxGRw8= + integrity sha512-xyNJxsEwpYBabFmCgwg7TFRljf5oGgV2h1TqP0H9RnykScaSKgoVlBaEz+Gov8NOdxFagoTzRg1aEBfayi8qQQ== mcl-wasm@^0.7.1: version "0.7.9" @@ -13564,14 +10315,7 @@ md5.js@^1.3.4: 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" + integrity sha512-dq+qelQ9akHpcOl/gUVRTxVIOkAJ1wR3QAvb4RsVjS8oVoFjDGTc679wJYmUmknUF5HwMLOgb5O+a3KxfWapPQ== mem@^4.0.0: version "4.3.0" @@ -13585,7 +10329,7 @@ mem@^4.0.0: memdown@1.4.1, memdown@^1.0.0: version "1.4.1" resolved "https://registry.yarnpkg.com/memdown/-/memdown-1.4.1.tgz#b4e4e192174664ffbae41361aa500f3119efe215" - integrity sha1-tOThkhdGZP+65BNhqlAPMRnv4hU= + integrity sha512-iVrGHZB8i4OQfM155xx8akvG9FIj+ht14DX5CQkCTG4EHzZ3d3sgckIf/Lm9ivZalEsFuEVnWv2B2WZvbrro2w== dependencies: abstract-leveldown "~2.7.1" functional-red-black-tree "^1.0.1" @@ -13594,18 +10338,6 @@ memdown@1.4.1, memdown@^1.0.0: ltgt "~2.2.0" safe-buffer "~5.1.1" -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" - memdown@~3.0.0: version "3.0.0" resolved "https://registry.yarnpkg.com/memdown/-/memdown-3.0.0.tgz#93aca055d743b20efc37492e9e399784f2958309" @@ -13618,30 +10350,24 @@ memdown@~3.0.0: ltgt "~2.2.0" safe-buffer "~5.1.1" -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= +memory-level@^1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/memory-level/-/memory-level-1.0.0.tgz#7323c3fd368f9af2f71c3cd76ba403a17ac41692" + integrity sha512-UXzwewuWeHBz5krr7EvehKcmLFNoXxGcvuYhC41tRnkrTbJohtS7kVn9akmgirtRygg+f7Yjsfi8Uu5SGSQ4Og== dependencies: - errno "^0.1.3" - readable-stream "^2.0.1" + abstract-level "^1.0.0" + functional-red-black-tree "^1.0.1" + module-error "^1.0.1" memorystream@^0.3.1: version "0.3.1" resolved "https://registry.yarnpkg.com/memorystream/-/memorystream-0.3.1.tgz#86d7090b30ce455d63fbae12dda51a47ddcaf9b2" - integrity sha1-htcJCzDORV1j+64S3aUaR93K+bI= + integrity sha512-S3UwM3yj5mtUSEfP41UZmt/0SCoVYUcU1rkXv+BQ5Ig8ndL4sPoJNBUJERafdPb5jjHJGuMgytgKvKIf58XNBw== 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" + integrity sha512-cCi6g3/Zr1iqQi6ySbseM1Xvooa98N0w31jzUYrXPX2xqObmFGHJ0tQ5u74H3mVh7wLouTseZyYIq39g8cNp1w== merge-options@^3.0.4: version "3.0.4" @@ -13650,13 +10376,6 @@ merge-options@^3.0.4: dependencies: is-plain-obj "^2.1.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" - merge-stream@^2.0.0: version "2.0.0" resolved "https://registry.yarnpkg.com/merge-stream/-/merge-stream-2.0.0.tgz#52823629a14dd00c9770fb6ad47dc6310f2c1f60" @@ -13694,47 +10413,10 @@ merkle-patricia-tree@^2.1.2, merkle-patricia-tree@^2.3.2: rlp "^2.0.0" semaphore ">=1.0.1" -merkle-patricia-tree@^4.2.0, merkle-patricia-tree@^4.2.1: - version "4.2.2" - resolved "https://registry.yarnpkg.com/merkle-patricia-tree/-/merkle-patricia-tree-4.2.2.tgz#6dec17855370172458244c2f42c989dd60b773a3" - integrity sha512-eqZYNTshcYx9aESkSPr71EqwsR/QmpnObDEV4iLxkt/x/IoLYZYjJvKY72voP/27Vy61iMOrfOG6jrn7ttXD+Q== - dependencies: - "@types/levelup" "^4.3.0" - ethereumjs-util "^7.1.2" - 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" - -meros@1.1.4: - version "1.1.4" - resolved "https://registry.yarnpkg.com/meros/-/meros-1.1.4.tgz#c17994d3133db8b23807f62bec7f0cb276cfd948" - integrity sha512-E9ZXfK9iQfG9s73ars9qvvvbSIkJZF5yOo9j4tcwM5tN8mUKfj/EKN5PzOr3ZH0y5wL7dLAHw3RVEfpQV9Q7VQ== - methods@^1.1.1, 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" + integrity sha512-iclAHeNqNm68zFtnZ0e+1L2yUIdvzNoauKU4WBA3VvH/vPFieF7qfRlwUZU+DA9P9bPXIS90ulxoUoCH23sV2w== micromatch@^3.1.10, micromatch@^3.1.4: version "3.1.10" @@ -13755,13 +10437,13 @@ micromatch@^3.1.10, micromatch@^3.1.4: snapdragon "^0.8.1" to-regex "^3.0.2" -micromatch@^4.0.4: - version "4.0.4" - resolved "https://registry.yarnpkg.com/micromatch/-/micromatch-4.0.4.tgz#896d519dfe9db25fce94ceb7a500919bf881ebf9" - integrity sha512-pRmzw/XUcwXGpD9aI9q/0XOwLNygjETJ8y0ao0wdqprrzDa4YnxLcz7fQRZr8voh8V10kGhABbNcHVk5wHgWwg== +micromatch@^4.0.4, micromatch@^4.0.5: + version "4.0.5" + resolved "https://registry.yarnpkg.com/micromatch/-/micromatch-4.0.5.tgz#bc8999a7cbbf77cdc89f132f6e467051b49090c6" + integrity sha512-DMy+ERcEW2q8Z2Po+WNXuw3c5YaUSFjAO5GsJqfEl7UjvtIuFKO6ZrKvcItdy98dwFI2N1tg3zNIdKaQT+aNdA== dependencies: - braces "^3.0.1" - picomatch "^2.2.3" + braces "^3.0.2" + picomatch "^2.3.1" miller-rabin@^4.0.0: version "4.0.1" @@ -13771,29 +10453,17 @@ miller-rabin@^4.0.0: bn.js "^4.0.0" brorand "^1.0.1" -mime-db@1.50.0, mime-db@^1.28.0: - version "1.50.0" - resolved "https://registry.yarnpkg.com/mime-db/-/mime-db-1.50.0.tgz#abd4ac94e98d3c0e185016c67ab45d5fde40c11f" - integrity sha512-9tMZCDlYHqeERXEHO9f/hKfNXhre5dK2eE/krIvUjZbS2KPcqGDfNShIWS1uW9XOTKQKqK6qbeOci18rbfW77A== - -mime-db@1.51.0: - version "1.51.0" - resolved "https://registry.yarnpkg.com/mime-db/-/mime-db-1.51.0.tgz#d9ff62451859b18342d960850dc3cfb77e63fb0c" - integrity sha512-5y8A56jg7XVQx2mbv1lu49NR4dokRnhZYTtL+KGfaa27uq4pSTXkwQkFJl4pkRMyNFz/EtYDSkiiEHx3F7UN6g== +mime-db@1.52.0, mime-db@^1.28.0: + version "1.52.0" + resolved "https://registry.yarnpkg.com/mime-db/-/mime-db-1.52.0.tgz#bbabcdc02859f4987301c856e3387ce5ec43bf70" + integrity sha512-sPU4uV7dYlvtWJxwwxHD0PuihVNiE7TyAbQ5SWxDCB9mUYvOgroQOwYQQOKPJ8CIbE+1ETVlOoK1UC2nU3gYvg== -mime-types@^2.1.12, mime-types@~2.1.19: - version "2.1.34" - resolved "https://registry.yarnpkg.com/mime-types/-/mime-types-2.1.34.tgz#5a712f9ec1503511a945803640fafe09d3793c24" - integrity sha512-6cP692WwGIs9XXdOO4++N+7qjqv0rqxxVvJ3VHPh/Sc9mVZcQP+ZGhkKiTvWMQRr2tbHkJP/Yn7Y0npb3ZBs4A== +mime-types@^2.1.12, mime-types@^2.1.16, mime-types@~2.1.19, mime-types@~2.1.24, mime-types@~2.1.34: + version "2.1.35" + resolved "https://registry.yarnpkg.com/mime-types/-/mime-types-2.1.35.tgz#381a871b62a734450660ae3deee44813f70d959a" + integrity sha512-ZDY+bPm5zTTF+YpCrAU9nK0UgICYPT0QtT1NZWFv4s++TNkcgVaT0g6+4R2uI4MjQjzysHB1zxuWL50hzaeXiw== dependencies: - mime-db "1.51.0" - -mime-types@^2.1.16, mime-types@~2.1.24: - version "2.1.33" - resolved "https://registry.yarnpkg.com/mime-types/-/mime-types-2.1.33.tgz#1fa12a904472fafd068e48d9e8401f74d3f70edb" - integrity sha512-plLElXp7pRDd0bNZHw+nMd52vRYjLwQjygaNg7ddJ2uJtTlmnTCjWuPKxVu6//AdaRuME84SvLW91sIkBqGT0g== - dependencies: - mime-db "1.50.0" + mime-db "1.52.0" mime@1.6.0: version "1.6.0" @@ -13820,18 +10490,18 @@ mimic-response@^1.0.0, mimic-response@^1.0.1: resolved "https://registry.yarnpkg.com/mimic-response/-/mimic-response-1.0.1.tgz#4923538878eef42063cb8a3e3b0798781487ab1b" integrity sha512-j5EctnkH7amfV/q5Hgmoal1g2QHFJRraOtmx0JpIqkxhBhI/lJSl1nMpQ45hVarwNETOoWEimndZ4QK0RHxuxQ== +mimic-response@^3.1.0: + version "3.1.0" + resolved "https://registry.yarnpkg.com/mimic-response/-/mimic-response-3.1.0.tgz#2d1d59af9c1b129815accc2c46a022a5ce1fa3c9" + integrity sha512-z0yWI+4FDrrweS8Zmt4Ej5HdJmky15+L2e6Wgn3+iK5fWzb6T3fhNFq2+MeTRb064c6Wr4N/wv0DzQTjNzHNGQ== + min-document@^2.19.0: version "2.19.0" resolved "https://registry.yarnpkg.com/min-document/-/min-document-2.19.0.tgz#7bd282e3f5842ed295bb748cdd9f1ffa2c824685" - integrity sha1-e9KC4/WELtKVu3SM3Z8f+iyCRoU= + integrity sha512-9Wy1B3m3f66bPPmU5hdA4DR4PB2OfDU/+GS3yAB7IQozE3tqXaVv2zOjgla7MEGSRv95+ILmOuvhLkOK6wJtCQ== dependencies: dom-walk "^0.1.0" -min-indent@^1.0.0: - version "1.0.1" - resolved "https://registry.yarnpkg.com/min-indent/-/min-indent-1.0.1.tgz#a63f681673b30571fbe8bc25686ae746eefa9869" - integrity sha512-I9jwMn07Sy/IwOj3zVkVik2JTvgpaykDZEigL6Rx6N9LbMywwUSMtxET+7lVoDLLd3O3IXwJwvuuns8UB/HeAg== - minimalistic-assert@^1.0.0, minimalistic-assert@^1.0.1: version "1.0.1" resolved "https://registry.yarnpkg.com/minimalistic-assert/-/minimalistic-assert-1.0.1.tgz#2e194de044626d4a10e7f7fbc00ce73e83e4d5c7" @@ -13840,29 +10510,45 @@ minimalistic-assert@^1.0.0, minimalistic-assert@^1.0.1: 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= + integrity sha512-JIYlbt6g8i5jKfJ3xz7rF0LXmv2TkDxBLUkiBeZ7bAx4GnnNMr8xFpGnOxn6GhTEHx3SjRrZEoU+j04prX1ktg== + +"minimatch@2 || 3", minimatch@^3.0.4, minimatch@^3.1.1, minimatch@^3.1.2: + version "3.1.2" + resolved "https://registry.yarnpkg.com/minimatch/-/minimatch-3.1.2.tgz#19cd194bfd3e428f049a70817c038d89ab4be35b" + integrity sha512-J7p63hRiAjw1NDEww1W7i37+ByIrOWO5XQQAzZ3VOcL0PNybwpfmV/N05zFAzwQ9USyEcX6t3UO+K5aqBQOIHw== + dependencies: + brace-expansion "^1.1.7" -minimatch@*, "minimatch@2 || 3", minimatch@3.0.4, 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" +minimatch@4.2.1: + version "4.2.1" + resolved "https://registry.yarnpkg.com/minimatch/-/minimatch-4.2.1.tgz#40d9d511a46bdc4e563c22c3080cde9c0d8299b4" + integrity sha512-9Uq1ChtSZO+Mxa/CL1eGizn2vRn3MlLgzhT0Iz8zaY8NdvxvB0d5QdPFmCKf7JKA9Lerx5vRrnwO03jsSfGG9g== + dependencies: + brace-expansion "^1.1.7" + +minimatch@5.0.1: + version "5.0.1" + resolved "https://registry.yarnpkg.com/minimatch/-/minimatch-5.0.1.tgz#fb9022f7528125187c92bd9e9b6366be1cf3415b" + integrity sha512-nLDxIFRyhDblz3qMuq+SoRZED4+miJ/G+tdDrjkkkRnjAsBexeGpgjLEQ0blJy7rHhR2b93rhQY4SvyWu9v03g== + dependencies: + brace-expansion "^2.0.1" + 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: - version "1.2.0" - resolved "https://registry.yarnpkg.com/minimist/-/minimist-1.2.0.tgz#a35008b20f41383eec1fb914f4cd5df79a264284" - integrity sha1-o1AIsg9BOD7sH7kU9M1d95omQoQ= + integrity sha512-miQKw5Hv4NS1Psg2517mV4e4dYNaO3++hjAvLOAzKqZ61rH8NS1SK+vbfBWZ5PY/Me/bEWhUwqMghEW5Fb9T7Q== -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== +minimist@^1.2.0, minimist@^1.2.5, minimist@^1.2.6: + version "1.2.6" + resolved "https://registry.yarnpkg.com/minimist/-/minimist-1.2.6.tgz#8637a5b759ea0d6e98702cfb3a9283323c93af44" + integrity sha512-Jsjnk4bw3YJqYzbdyBiNsPWHPfO++UGG749Cxs6peCu5Xg4nrena6OVxOYxrQTqww0Jmwt+Ref8rggumkTLz9Q== minipass@^2.6.0, minipass@^2.9.0: version "2.9.0" @@ -13890,7 +10576,7 @@ mixin-deep@^1.2.0: 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= + integrity sha512-Hepn5kb1lJPtVW84RFT40YG1OddBNTOVUZR2bzQUHc+Z03en8/3uX0+060JDhcEzyO08HmipsN9DcnFMxhIL9w== dependencies: mkdirp "*" @@ -13902,54 +10588,88 @@ mkdirp@*, mkdirp@^1.0.4: mkdirp@0.5.1: version "0.5.1" resolved "https://registry.yarnpkg.com/mkdirp/-/mkdirp-0.5.1.tgz#30057438eac6cf7f8c4767f38648d6697d75c903" - integrity sha1-MAV0OOrGz3+MR2fzhkjWaX11yQM= + integrity sha512-SknJC52obPfGQPnjIkXbmA6+5H15E+fR+E4iR2oQ3zzCLbd7/ONua69R/Gw7AgkTLsRG+r5fzksYwWe1AgTyWA== dependencies: minimist "0.0.8" -mkdirp@0.5.5, mkdirp@0.5.x, mkdirp@^0.5.0, mkdirp@^0.5.1, mkdirp@^0.5.5, mkdirp@~0.5.0: +mkdirp@0.5.5: 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@0.5.x, mkdirp@^0.5.1, mkdirp@^0.5.5: + version "0.5.6" + resolved "https://registry.yarnpkg.com/mkdirp/-/mkdirp-0.5.6.tgz#7def03d2432dcae4ba1d611445c48396062255f6" + integrity sha512-FP+p8RB8OWpF3YZBCrP5gtADmtXApB5AMLn+vdyA+PyxCjrCs00mjyUozssO33cwDeT3wNGdLxJ5M//YqtHAJw== + dependencies: + minimist "^1.2.6" + mnemonist@^0.38.0: - version "0.38.4" - resolved "https://registry.yarnpkg.com/mnemonist/-/mnemonist-0.38.4.tgz#5d2f2dc4386aef78bfadeea60ce704dcf0ef8f3d" - integrity sha512-mflgW0gEWmVLbDDE2gJbOh3+RltTN7CgV9jV25qyCnyLN9FtoltWr7ZtAEDeD9u8W4oFAoolR6fBWieXdn3u8Q== + version "0.38.5" + resolved "https://registry.yarnpkg.com/mnemonist/-/mnemonist-0.38.5.tgz#4adc7f4200491237fe0fa689ac0b86539685cade" + integrity sha512-bZTFT5rrPKtPJxj8KSV0WkPyNxl72vQepqqVUAW2ARUpUSF2qXMB6jZj7hW5/k7C1rtpzqbD/IIbJwLXUjCHeg== dependencies: - obliterator "^1.6.1" + obliterator "^2.0.0" -mocha@8.1.2: - version "8.1.2" - resolved "https://registry.yarnpkg.com/mocha/-/mocha-8.1.2.tgz#d67fad13300e4f5cd48135a935ea566f96caf827" - integrity sha512-I8FRAcuACNMLQn3lS4qeWLxXqLvGf6r2CaLstDpZmMUUSmvW6Cnm1AuHxgbc7ctZVRcfwspCRbDHymPsi3dkJw== +mocha@9.2.2: + version "9.2.2" + resolved "https://registry.yarnpkg.com/mocha/-/mocha-9.2.2.tgz#d70db46bdb93ca57402c809333e5a84977a88fb9" + integrity sha512-L6XC3EdwT6YrIk0yXpavvLkn8h+EU+Y5UcCHKECyMbdUIxyMuZj4bX4U9e1nvnvUUvQVsV2VHQr5zLdcUkhW/g== dependencies: + "@ungap/promise-all-settled" "1.1.2" ansi-colors "4.1.1" browser-stdout "1.3.1" - chokidar "3.4.2" - debug "4.1.1" - diff "4.0.2" + chokidar "3.5.3" + debug "4.3.3" + diff "5.0.0" escape-string-regexp "4.0.0" find-up "5.0.0" - glob "7.1.6" + glob "7.2.0" 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" + js-yaml "4.1.0" + log-symbols "4.1.0" + minimatch "4.2.1" + ms "2.1.3" + nanoid "3.3.1" + 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.0.0" - yargs "13.3.2" - yargs-parser "13.1.2" - yargs-unparser "1.6.1" + workerpool "6.2.0" + yargs "16.2.0" + yargs-parser "20.2.4" + yargs-unparser "2.0.0" + +mocha@^10.0.0: + version "10.0.0" + resolved "https://registry.yarnpkg.com/mocha/-/mocha-10.0.0.tgz#205447d8993ec755335c4b13deba3d3a13c4def9" + integrity sha512-0Wl+elVUD43Y0BqPZBzZt8Tnkw9CMUdNYnUsTfOM1vuhJVZL+kiesFYsqwBkEEuEixaiPe5ZQdqDgX2jddhmoA== + dependencies: + "@ungap/promise-all-settled" "1.1.2" + ansi-colors "4.1.1" + browser-stdout "1.3.1" + chokidar "3.5.3" + debug "4.3.4" + diff "5.0.0" + escape-string-regexp "4.0.0" + find-up "5.0.0" + glob "7.2.0" + he "1.2.0" + js-yaml "4.1.0" + log-symbols "4.1.0" + minimatch "5.0.1" + ms "2.1.3" + nanoid "3.3.3" + serialize-javascript "6.0.0" + strip-json-comments "3.1.1" + supports-color "8.1.1" + workerpool "6.2.1" + yargs "16.2.0" + yargs-parser "20.2.4" + yargs-unparser "2.0.0" mocha@^7.1.1, mocha@^7.1.2: version "7.2.0" @@ -13986,30 +10706,15 @@ mock-fs@^4.1.0: resolved "https://registry.yarnpkg.com/mock-fs/-/mock-fs-4.14.0.tgz#ce5124d2c601421255985e6e94da80a7357b1b18" integrity sha512-qYvlv/exQ4+svI3UOvPUpLDF0OMX5euvUH0Ny4N5QyRyhNdgAgUrVH3iUINSzEPLvx0kbo/Bp28GJKIqvE7URw== -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-timezone@^0.5.x: - version "0.5.33" - resolved "https://registry.yarnpkg.com/moment-timezone/-/moment-timezone-0.5.33.tgz#b252fd6bb57f341c9b59a5ab61a8e51a73bbd22c" - integrity sha512-PTc2vcT8K9J5/9rDEPe5czSIKgLoGsH8UNpA4qZTVw0Vd/Uz19geE9abbIOQKaAQFcnQ3v5YEXrbSc5BpshH+w== - dependencies: - moment ">= 2.9.0" +module-error@^1.0.1, module-error@^1.0.2: + version "1.0.2" + resolved "https://registry.yarnpkg.com/module-error/-/module-error-1.0.2.tgz#8d1a48897ca883f47a45816d4fb3e3c6ba404d86" + integrity sha512-0yuvsqSCv8LbaOKhnsQ/T5JhyFlCYLPXK3U2sgV10zoKQwzs/MyfuQUOZQ1V/6OCOJsK/TRgNVrPuPDqtdMFtA== -"moment@>= 2.9.0", moment@^2.19, moment@^2.27.0: - version "2.29.1" - resolved "https://registry.yarnpkg.com/moment/-/moment-2.29.1.tgz#b2be769fa31940be9eeea6469c075e35006fa3d3" - integrity sha512-kHmoybcPV8Sqy59DwNDY3Jefr64lK/by/da0ViFcuA4DH0vQg5Q6Ze5VimxkfQNSC+Mls/Kx53s7TjP1RhFEDQ== +moment@^2.19, moment@^2.27.0: + version "2.29.4" + resolved "https://registry.yarnpkg.com/moment/-/moment-2.29.4.tgz#3dbe052889fe7c1b2ed966fcb3a77328964ef108" + integrity sha512-5LC9SOxjSc2HF6vO2CyuTDNivEdoz2IvyJJGj6X8DJ0eFyfszE0QiEd+iXmBvUP3WHxSjFH/vIsA0EN00cgr8w== mortice@^2.0.0, mortice@^2.0.1: version "2.0.1" @@ -14024,7 +10729,7 @@ mortice@^2.0.0, mortice@^2.0.1: ms@2.0.0: version "2.0.0" resolved "https://registry.yarnpkg.com/ms/-/ms-2.0.0.tgz#5608aeadfc00be6c2901df5f9861788de0d597c8" - integrity sha1-VgiurfwAvmwpAd9fmGF4jeDVl8g= + integrity sha512-Tpp60P6IUJDTuOq/5Z8cdskzJujfwqfOTkrwIwj7IRISpnkJnT6SyJ4PCPnGMoFjC9ddhal5KVIYtAt97ix05A== ms@2.1.1: version "2.1.1" @@ -14036,18 +10741,11 @@ ms@2.1.2: resolved "https://registry.yarnpkg.com/ms/-/ms-2.1.2.tgz#d09d1f357b443f493382a8eb3ccd183872ae6009" integrity sha512-sGkPx+VjMtmA6MX27oA4FBFELFCZZ4S4XqeGOXCv68tT+jb3vk/RyaKWP0PTKyWtmLSM0b+adUTEvbs1PEaH2w== -ms@^2.1.1: +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== -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-to-uri@^8.0.0: version "8.0.0" resolved "https://registry.yarnpkg.com/multiaddr-to-uri/-/multiaddr-to-uri-8.0.0.tgz#65efe4b1f9de5f6b681aa42ff36a7c8db7625e58" @@ -14067,20 +10765,6 @@ multiaddr@^10.0.0, multiaddr@^10.0.1: uint8arrays "^3.0.0" varint "^6.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" @@ -14089,21 +10773,6 @@ 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.6" - resolved "https://registry.yarnpkg.com/multibase/-/multibase-4.0.6.tgz#6e624341483d6123ca1ede956208cb821b440559" - integrity sha512-x23pDe5+svdLz/k5JPGCVdfn7Q5mZVMBETiC+ORfO+sor9Sgs0smJzAjfTbM5tckeCqnaUuMYoz+k3RXMmJClQ== - 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" @@ -14113,9 +10782,9 @@ multibase@~0.6.0: buffer "^5.5.0" multicast-dns@^7.2.0: - version "7.2.4" - resolved "https://registry.yarnpkg.com/multicast-dns/-/multicast-dns-7.2.4.tgz#cf0b115c31e922aeb20b64e6556cbeb34cf0dd19" - integrity sha512-XkCYOU+rr2Ft3LI6w4ye51M3VK31qJXFIxu0XLw169PtKG0Zx47OrXeVW/GCYOfpC9s1yyyf1S+L8/4LY0J9Zw== + version "7.2.5" + resolved "https://registry.yarnpkg.com/multicast-dns/-/multicast-dns-7.2.5.tgz#77eb46057f4d7adbd16d9290fa7299f6fa64cced" + integrity sha512-2eznPJP8z2BFLX50tf0LuODrpINqP1RVIm/CObbTcBRITQgmC/TjcREF1NeTBzIcR5XO/ukWo+YHOjBbFwIupg== dependencies: dns-packet "^5.2.2" thunky "^1.0.2" @@ -14135,40 +10804,10 @@ 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.2.1" - resolved "https://registry.yarnpkg.com/multicodec/-/multicodec-3.2.1.tgz#82de3254a0fb163a107c1aab324f2a91ef51efb2" - integrity sha512-+expTPftro8VAW8kfvcuNNNBgb9gPeNYV9dn+z1kJRWF2vih+/S79f2RVeIwmrJBUJ6NT9IUPWnZDQvegEh5pw== - dependencies: - uint8arrays "^3.0.0" - varint "^6.0.0" - -multiformats@^9.0.0, multiformats@^9.0.2, multiformats@^9.0.4, multiformats@^9.1.0, multiformats@^9.1.2, multiformats@^9.4.7, multiformats@^9.5.1, multiformats@^9.5.4: - version "9.6.4" - resolved "https://registry.yarnpkg.com/multiformats/-/multiformats-9.6.4.tgz#5dce1f11a407dbb69aa612cb7e5076069bb759ca" - integrity sha512-fCCB6XMrr6CqJiHNjfFNGT0v//dxOBMrOMqUIzpPc/mmITweLEyhvMpY9bF+jZ9z3vaMAau5E8B68DW77QMXkg== - -multiformats@^9.4.2, multiformats@^9.4.5: - version "9.4.8" - resolved "https://registry.yarnpkg.com/multiformats/-/multiformats-9.4.8.tgz#46f74ec116f7871f2a334cc6d4ad3d810dbac341" - integrity sha512-EOJL02/kv+FD5hoItMhKgkYUUruJYMYFq4NQ6YkCh3jVQ5CuHo+OKdHeR50hAxEQmXQ9yvrM9BxLIk42xtfwnQ== - -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" +multiformats@^9.0.0, multiformats@^9.0.2, multiformats@^9.0.4, multiformats@^9.1.0, multiformats@^9.1.2, multiformats@^9.4.2, multiformats@^9.4.5, multiformats@^9.4.7, multiformats@^9.5.1, multiformats@^9.5.4: + version "9.9.0" + resolved "https://registry.yarnpkg.com/multiformats/-/multiformats-9.9.0.tgz#c68354e7d21037a8f1f8833c8ccd68618e8f1d37" + integrity sha512-HoMUjhH9T8DDBNT+6xzkrd9ga/XiBI4xLr58LJACwK6G3HTOPeMz4nB4KJs33L2BelrIJa7P0VuNaVF3hMYfjg== multihashes@^0.4.15, multihashes@~0.4.15: version "0.4.21" @@ -14179,27 +10818,6 @@ 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.3" - resolved "https://registry.yarnpkg.com/multihashes/-/multihashes-4.0.3.tgz#426610539cd2551edbf533adeac4c06b3b90fb05" - integrity sha512-0AhMH7Iu95XjDLxIeuCOOE4t9+vQZsACyKZ9Fxw2pcsRmlX4iCn1mby0hS0bb+nQOVpdQYWPpnyusw4da5RPhA== - dependencies: - multibase "^4.0.1" - uint8arrays "^3.0.0" - varint "^5.0.2" - -multihashing-async@^2.0.0: - version "2.1.4" - resolved "https://registry.yarnpkg.com/multihashing-async/-/multihashing-async-2.1.4.tgz#26dce2ec7a40f0e7f9e732fc23ca5f564d693843" - integrity sha512-sB1MiQXPSBTNRVSJc2zM157PXgDtud2nMFUEIvBrsq5Wv96sUclMRK/ecjoP1T/W61UJBqt4tCTwMkUpt2Gbzg== - 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 "^3.0.0" - multistream-select@^3.0.0: version "3.0.2" resolved "https://registry.yarnpkg.com/multistream-select/-/multistream-select-3.0.2.tgz#18919b3c74c8eac6ae9b1ba9b8ac5af79cfab3e8" @@ -14230,42 +10848,42 @@ mutable-proxy@^1.0.0: 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= + integrity sha512-r65nCZhrbXXb6dXOACihYApHw2Q6pV0M3V0PSxd74N0+D8nzAdEAITq2oAjA1jVnKI+tGvEBUpqiMh0+rW6zDQ== mute-stream@~0.0.4: version "0.0.8" resolved "https://registry.yarnpkg.com/mute-stream/-/mute-stream-0.0.8.tgz#1630c42b2251ff81e2a283de96a5497ea92e5e0d" integrity sha512-nnbWWOkoWyUsTjKrhgD0dcz22mdkSnpYqbEjIm2nhwhuxlSkpywJmBo8h0ZqJdkp73mb90SssHkN4rsRaBAfAA== -nan@^2.12.1, nan@^2.13.2, nan@^2.14.0, 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.12.1, nan@^2.14.0: + version "2.16.0" + resolved "https://registry.yarnpkg.com/nan/-/nan-2.16.0.tgz#664f43e45460fb98faf00edca0bb0d7b8dce7916" + integrity sha512-UdAqHyFngu7TfQKsCBgAA6pWDkT8MAO7d0jyOecVhN5354xbLqdn8mV9Tat9gepAupm0bt2DbeaSC8vS52MuFA== 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= + integrity sha512-sxEtoTqAPdjWVGv71Q17koMFGsOMSiHsIFEvzOM7cNp8BXB4AnEwmDabm5dorusJf/v1z7QxaZYxUorU9RKaAw== 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== + integrity sha512-9MqxMH/BSJC7dnLsEMPyfN5Dvoo49IsPFYMcHw3Bcfc2kN0lpHRBSzlMSVx4HGyJ7s9B31CyBTVehWJoQ8Ctew== -nanoid@^3.0.2, nanoid@^3.1.20, nanoid@^3.1.23: +nanoid@3.3.1: version "3.3.1" resolved "https://registry.yarnpkg.com/nanoid/-/nanoid-3.3.1.tgz#6347a18cac88af88f58af0b3594b723d5e99bb35" integrity sha512-n6Vs/3KGyxPQd6uO0eH4Bv0ojGSUvuLlIHtC3Y0kEO23YRge8H9x1GCzLn28YX0H66pMkxuaeESFq4tKISKwdw== -nanoid@^3.1.12, nanoid@^3.1.3: - version "3.1.29" - resolved "https://registry.yarnpkg.com/nanoid/-/nanoid-3.1.29.tgz#214fb2d7a33e1a5bef4757b779dfaeb6a4e5aeb4" - integrity sha512-dW2pUSGZ8ZnCFIlBIA31SV8huOGCHb6OwzVCc7A69rb/a+SgPBwfmLvK5TKQ3INPbRkcI8a/Owo0XbiTNH19wg== +nanoid@3.3.3: + version "3.3.3" + resolved "https://registry.yarnpkg.com/nanoid/-/nanoid-3.3.3.tgz#fd8e8b7aa761fe807dba2d1b98fb7241bb724a25" + integrity sha512-p1sjXuopFs0xg+fPASzQ28agW1oHD7xDsd9Xkf3T15H3c/cifrFHVwrh74PdoklAPi+i7MdRsE47vm2r6JoB+w== + +nanoid@^3.0.2, nanoid@^3.1.20, nanoid@^3.1.23: + version "3.3.4" + resolved "https://registry.yarnpkg.com/nanoid/-/nanoid-3.3.4.tgz#730b67e3cd09e2deacf03c027c81c9d9dbc5e8ab" + integrity sha512-MqBkQh/OHTS2egovRtLk45wEyNXwF+cokD+1YPf9u5VfJiRdAiRwB2froX5Co9Rh20xs4siNPm8naNotSD6RBw== nanomatch@^1.2.9: version "1.2.13" @@ -14284,11 +10902,6 @@ nanomatch@^1.2.9: 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" @@ -14306,25 +10919,6 @@ nat-api@^0.3.1: unordered-array-remove "^1.0.2" xml2js "^0.1.0" -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.4" - resolved "https://registry.yarnpkg.com/native-abort-controller/-/native-abort-controller-1.0.4.tgz#39920155cc0c18209ff93af5bc90be856143f251" - integrity sha512-zp8yev7nxczDJMoP6pDxyD20IU0T22eX8VwN2ztDccKvSZhRaV33yP1BGwKSZfXuqWUzsXopVFjBdau9OOAwMQ== - -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" @@ -14333,7 +10927,7 @@ native-fetch@^3.0.0: natural-compare@^1.4.0: version "1.4.0" resolved "https://registry.yarnpkg.com/natural-compare/-/natural-compare-1.4.0.tgz#4abebfeed7541f2c27acfb29bdbbd15c8d5ba4f7" - integrity sha1-Sr6/7tdUHywnrPspvbvRXI1bpPc= + integrity sha512-OWND8ei3VtNC9h7V60qff3SVobHr996CTwgxubgyQYEpg290h9J0buyECNNJexkFm5sOajh5G116RYA1c8ZMSw== needle@^2.1.0, needle@^2.2.1: version "2.9.1" @@ -14344,32 +10938,25 @@ needle@^2.1.0, needle@^2.2.1: 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== +negotiator@0.6.3: + version "0.6.3" + resolved "https://registry.yarnpkg.com/negotiator/-/negotiator-0.6.3.tgz#58e323a72fedc0d6f9cd4d31fe49f51479590ccd" + integrity sha512-+EUsqGPLsM+j/zdChZjsnX51g4XrHFOIXwfnCVPGlQk/k5giakcKsuxCObBRu6DSm9opw/O6slWbJdghQM4bBg== -neo-async@^2.5.0, neo-async@^2.6.0: +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== -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" - netmask@^2.0.2: version "2.0.2" resolved "https://registry.yarnpkg.com/netmask/-/netmask-2.0.2.tgz#8b01a07644065d536383835823bc52004ebac5e7" integrity sha512-dBpDMdxv9Irdq66304OLfEmQ9tbNRFnFTuZiLo+bD+r332bBmMJ8GBLXklIXXgxd3+v9+KUnZaUR5PJMa75Gsg== -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= +next-tick@^1.1.0: + version "1.1.0" + resolved "https://registry.yarnpkg.com/next-tick/-/next-tick-1.1.0.tgz#1836ee30ad56d67ef281b22bd199f709449b35eb" + integrity sha512-CXdUiJembsNjuToQvxayPZF9Vqht7hewsvy2sOWafLvi2awflj9mOC6bHIg50orX8IJvWKY9wYQ/zB2kogPslQ== nice-try@^1.0.4: version "1.0.5" @@ -14383,13 +10970,10 @@ no-case@^2.2.0, no-case@^2.3.2: 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-abort-controller@^3.0.1: + version "3.0.1" + resolved "https://registry.yarnpkg.com/node-abort-controller/-/node-abort-controller-3.0.1.tgz#f91fa50b1dee3f909afabb7e261b1e1d6b0cb74e" + integrity sha512-/ujIVxthRs+7q6hsdjHMaj8hRG9NuWmwrz+JdRwZ14jdFoKSkm+vDsCbF9PLpnSqjaWQJuTmVtcWHNLr+vrOFw== node-addon-api@^2.0.0: version "2.0.2" @@ -14411,25 +10995,10 @@ node-environment-flags@1.0.6: 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: - version "2.6.1" - resolved "https://registry.yarnpkg.com/node-fetch/-/node-fetch-2.6.1.tgz#045bd323631f76ed2e2b55573394416b639a0052" - integrity sha512-V4aYg89jEoVRxRb2fJdAg8FHvI7cEyYdVAh94HH0UIK8oJxUfkjlDQN9RbMx+bEjP7+ggMiFRprSti032Oipxw== - -node-fetch@^2.6.0, node-fetch@^2.6.1: - version "2.6.5" - resolved "https://registry.yarnpkg.com/node-fetch/-/node-fetch-2.6.5.tgz#42735537d7f080a7e5f78b6c549b7146be1742fd" - integrity sha512-mmlIVHJEu5rnIxgEgez6b9GgWXbkZj5YZ7fx+2r94a2E+Uirsp6HsPTPlomfdHtpt/B0cdKviwkoaM6pyvUOpQ== +node-fetch@2.6.7, node-fetch@^2.6.0, node-fetch@^2.6.1, node-fetch@^2.6.7: + version "2.6.7" + resolved "https://registry.yarnpkg.com/node-fetch/-/node-fetch-2.6.7.tgz#24de9fba827e3b4ae44dc8b20256a379160052ad" + integrity sha512-ZjMPFEfVx5j+y2yF35Kzx5sF7kDzxuDj6ziH4FFbOp87zKDZNx8yExJIb05OGF4Nlt9IHFIMBkRl41VdvcNdbQ== dependencies: whatwg-url "^5.0.0" @@ -14445,36 +11014,26 @@ node-fetch@~1.7.1: encoding "^0.1.11" is-stream "^1.0.1" -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-forge@^1.2.1: - version "1.2.1" - resolved "https://registry.yarnpkg.com/node-forge/-/node-forge-1.2.1.tgz#82794919071ef2eb5c509293325cec8afd0fd53c" - integrity sha512-Fcvtbb+zBcZXbTTVwqGA5W+MKBj56UjVRevvchv5XrcyXbmNdesfZL37nlcWOfpgHhgmxApw3tQbTr4CqNmX4w== + version "1.3.1" + resolved "https://registry.yarnpkg.com/node-forge/-/node-forge-1.3.1.tgz#be8da2af243b2417d5f646a770663a92b7e9ded3" + integrity sha512-dPEtOeMvF9VMcYV/1Wb8CPoVAXtp6MKMlcbAt4ddqmGqUJ6fQZFXkNZNkNlfevtNkGtaSoXf/vNNNSvgrdXwtA== -node-gyp-build@^4.2.0, node-gyp-build@^4.3.0: - version "4.3.0" - resolved "https://registry.yarnpkg.com/node-gyp-build/-/node-gyp-build-4.3.0.tgz#9f256b03e5826150be39c764bf51e993946d71a3" - integrity sha512-iWjXZvmboq0ja1pUGULQBexmxq8CV4xBhX7VDOTbL7ZR4FOowwY/VOtRxBN/yKxmdGoIp4j5ysNT4u3S2pDQ3Q== +node-gyp-build@4.4.0: + version "4.4.0" + resolved "https://registry.yarnpkg.com/node-gyp-build/-/node-gyp-build-4.4.0.tgz#42e99687ce87ddeaf3a10b99dc06abc11021f3f4" + integrity sha512-amJnQCcgtRVw9SvoebO3BKGESClrfXGCUTX9hSn1OuGQTQBOZmVd0Z0OlecpuRksKvbsUqALE8jls/ErClAPuQ== -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.2.0, node-gyp-build@^4.3.0: + version "4.5.0" + resolved "https://registry.yarnpkg.com/node-gyp-build/-/node-gyp-build-4.5.0.tgz#7a64eefa0b21112f89f58379da128ac177f20e40" + integrity sha512-2iGbaQBV+ITgCz76ZEjmhUKAKVf7xfY1sRl4UiKQspfZMH2h06SyhNsnSVy50cwkFQDGLyif6m/6uFXHkOZ6rg== node-gyp-build@~4.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" @@ -14482,35 +11041,6 @@ 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" @@ -14527,10 +11057,10 @@ node-pre-gyp@^0.11.0: semver "^5.3.0" tar "^4" -node-releases@^2.0.1: - version "2.0.1" - resolved "https://registry.yarnpkg.com/node-releases/-/node-releases-2.0.1.tgz#3d1d395f204f1f2f29a54358b9fb678765ad2fc5" - integrity sha512-CqyzN6z7Q6aMeF/ktcMVTzhAHCEpf8SOarwpzpf8pNBY2k5/oM34UHldUwp8VKI7uxct2HxSRdJjBaZeESzcxA== +node-releases@^2.0.6: + version "2.0.6" + resolved "https://registry.yarnpkg.com/node-releases/-/node-releases-2.0.6.tgz#8a7088c63a55e493845683ebf3c828d8c51c5503" + integrity sha512-PiVXnNuFm5+iYkLBNeq5211hvO38y63T0i2KKh2KnUs3RpzJ+JtODFjkD8yjLwnDkTYF1eKXheUwdssR+NRZdg== nofilter@^1.0.4: version "1.0.4" @@ -14545,12 +11075,12 @@ nofilter@^3.1.0: 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= + integrity sha512-pQ8vODlgXt2e7A3mIbFDlizkr46r75V+BJxVAyat8Jl7YmI513gG5cfyRL0FedKraoZ+VAouI1h4/IWpus5pcQ== nopt@3.x: version "3.0.6" resolved "https://registry.yarnpkg.com/nopt/-/nopt-3.0.6.tgz#c6465dbf08abcd4db359317f79ac68a646b28ff9" - integrity sha1-xkZdvwirzU2zWTF/eaxopkayj/k= + integrity sha512-4GUt3kSEYmk4ITxzB/b9vaIDfUVWN/Ml1Fwl11IlnIG2iaJ9O6WXZ9SrYM9NLI8OCBieN2Y8SWC2oJV0RQ7qYg== dependencies: abbrev "1" @@ -14572,10 +11102,10 @@ normalize-package-data@^2.3.2: semver "2 || 3 || 4 || 5" validate-npm-package-license "^3.0.1" -normalize-path@^2.0.1, normalize-path@^2.1.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= + integrity sha512-3pKJwH184Xo/lnH6oyP1q2pMd7HcypqqmRs91/6/i2CGtWwIKGCkOOMTm/zXbgTEWHw1uNpNi/igc3ePOYHb6w== dependencies: remove-trailing-separator "^1.0.1" @@ -14598,6 +11128,11 @@ normalize-url@^4.1.0: resolved "https://registry.yarnpkg.com/normalize-url/-/normalize-url-4.5.1.tgz#0dd90cf1288ee1d1313b87081c9a5932ee48518a" integrity sha512-9UZCFRHQdNrfTpGg8+1INIg93B6zE0aXMVFkw1WFwvO4SlZywU6aLg5Of0Ap/PgcbSw4LNxvMWXMeugwMCX0AA== +normalize-url@^6.0.1: + version "6.1.0" + resolved "https://registry.yarnpkg.com/normalize-url/-/normalize-url-6.1.0.tgz#40d0885b535deffe3f3147bec877d05fe4c5668a" + integrity sha512-DlL+XwOy3NxAQ8xuC0okPgK46iuVNAK01YN7RueYBqqFeGsBjV9XmCAzAdgt+667bCl5kPh9EqKKDwnaPG1I7A== + npm-bundled@^1.0.1: version "1.1.2" resolved "https://registry.yarnpkg.com/npm-bundled/-/npm-bundled-1.1.2.tgz#944c78789bd739035b70baa2ca5cc32b8d860bc1" @@ -14630,7 +11165,7 @@ npm-packlist@^1.1.6: 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= + integrity sha512-lJxZYlT4DW/bRUtFh1MQIWqmLwQfAxnqWG4HhEdjMlkrJYnJn0Jrr2u3mgxqaWsdiBc76TYkTG/mhrnYTuzfHw== dependencies: path-key "^2.0.0" @@ -14654,83 +11189,56 @@ npmlog@^4.0.2: nssocket@0.6.0: version "0.6.0" resolved "https://registry.yarnpkg.com/nssocket/-/nssocket-0.6.0.tgz#59f96f6ff321566f33c70f7dbeeecdfdc07154fa" - integrity sha1-Wflvb/MhVm8zxw99vu7N/cBxVPo= + integrity sha512-a9GSOIql5IqgWJR3F/JXG4KpJTA3Z53Cj0MeMvGpglytB1nxE4PdFNC0jINe27CS7cGivoynwc054EzCcT3M3w== dependencies: eventemitter2 "~0.4.14" lazy "~1.0.11" -nth-check@^2.0.0: - version "2.0.1" - resolved "https://registry.yarnpkg.com/nth-check/-/nth-check-2.0.1.tgz#2efe162f5c3da06a28959fbd3db75dbeea9f0fc2" - integrity sha512-it1vE95zF6dTT9lBsYbxvqh0Soy4SPowchj0UBGj/V6cTPnXXtQOPUbhZ6CmGzAD/rW22LQK6E96pcdJXk4A4w== +nth-check@^2.0.1: + version "2.1.1" + resolved "https://registry.yarnpkg.com/nth-check/-/nth-check-2.1.1.tgz#c9eab428effce36cd6b92c924bdb000ef1f1ed1d" + integrity sha512-lqjrjmaOoAnWfMmBPL+XNnynZh2+swxiX3WUE0s4yEHI6m+AwrK2UZOimIRl3X/4QctVqS8AiZjFqyOGrMXb/w== dependencies: boolbase "^1.0.0" -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== - 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= + integrity sha512-4jbtZXNAsfZbAHiiqjLPBiCl16dES1zI4Hpzzxw61Tk+loF+sBDBKx1ICKKKwIqQ7M0mFn1TmkN7euSncWgHiQ== 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= + integrity sha512-wsJ9gfSz1/s4ZsJN01lyonwuxA1tml6X1yBDnfpMglypcBRFZZkus26EdPSlqS5GJfYddVZa22p3VNb3z5m5Ig== dependencies: bn.js "4.11.6" strip-hex-prefix "1.0.0" -"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== - oauth-sign@~0.9.0: version "0.9.0" resolved "https://registry.yarnpkg.com/oauth-sign/-/oauth-sign-0.9.0.tgz#47a7b016baa68b5fa0ecf3dee08a85c679ac6455" integrity sha512-fexhUFFPTGV8ybAtSIGbV6gOkSv8UtRbDBnAyLQw4QPKkgNlsH2ByPGtMUqdWkos6YCRmAqViwgZrJc/mRDzZQ== -object-assign@4.1.0: - version "4.1.0" - resolved "https://registry.yarnpkg.com/object-assign/-/object-assign-4.1.0.tgz#7a3b3d0e98063d43f4c03f2e8ae6cd51a86883a0" - integrity sha1-ejs9DpgGPUP0wD8uiubNUahog6A= - -object-assign@^4, object-assign@^4.0.0, object-assign@^4.0.1, object-assign@^4.1.0, object-assign@^4.1.1: +object-assign@^4, object-assign@^4.0.1, object-assign@^4.1.0, object-assign@^4.1.1: version "4.1.1" resolved "https://registry.yarnpkg.com/object-assign/-/object-assign-4.1.1.tgz#2109adc7965887cfc05cbbd442cac8bfbb360863" - integrity sha1-IQmtx5ZYh8/AXLvUQsrIv7s2CGM= + integrity sha512-rJgTQnkUnH1sFw8yT6VSU3zD3sWmu6sZhIseY8VX+GRu3P6F7Fu+JNDoXfklElbLJSnc3FUQHVe4cU5hj+BcUg== object-copy@^0.1.0: version "0.1.0" resolved "https://registry.yarnpkg.com/object-copy/-/object-copy-0.1.0.tgz#7e7d858b781bd7c991a41ba975ed3812754e998c" - integrity sha1-fn2Fi3gb18mRpBupde04EnVOmYw= + integrity sha512-79LYn6VAb63zgtmAteVOWo9Vdj71ZVBy3Pbse+VqxDpEP83XuujMrGqHIwAXJ5I/aM0zU7dIyIAhifVTPrNItQ== dependencies: copy-descriptor "^0.1.0" define-property "^0.2.5" kind-of "^3.0.3" -object-inspect@^1.11.0, object-inspect@^1.9.0: - version "1.11.0" - resolved "https://registry.yarnpkg.com/object-inspect/-/object-inspect-1.11.0.tgz#9dceb146cedd4148a0d9e51ab88d34cf509922b1" - integrity sha512-jp7ikS6Sd3GxQfZJPyH3cjcbJF6GZPClgdV+EFygjFLQ5FmW/dRUnTd9PQ9k0JhoNDabWFbpF1yCdSWCC6gexg== - -object-inspect@^1.12.0: - version "1.12.0" - resolved "https://registry.yarnpkg.com/object-inspect/-/object-inspect-1.12.0.tgz#6e2c120e868fd1fd18cb4f18c31741d0d6e776f0" - integrity sha512-Ho2z80bVIvJloH+YzRmpZVQe87+qASmBUKZDWgx9cu+KDrX2ZDH/3tMy+gXbZETVGs2M8YdxObOh7XAtim9Y0g== +object-inspect@^1.12.2, object-inspect@^1.9.0: + version "1.12.2" + resolved "https://registry.yarnpkg.com/object-inspect/-/object-inspect-1.12.2.tgz#c0641f26394532f28ab8d796ab954e43c009a8ea" + integrity sha512-z+cPxW0QGUp0mcqcsgQyLVRDoXFQbXOwBaqyF7VIgI4TWNQsDHrBpUQslRmIfAoYWdYzs6UlKJtB2XJpTaNSpQ== -object-keys@^1.0.11, object-keys@^1.0.12, object-keys@^1.1.1: +object-keys@^1.0.11, 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== @@ -14738,17 +11246,12 @@ object-keys@^1.0.11, object-keys@^1.0.12, object-keys@^1.1.1: object-keys@~0.4.0: version "0.4.0" resolved "https://registry.yarnpkg.com/object-keys/-/object-keys-0.4.0.tgz#28a6aae7428dd2c3a92f3d95f21335dd204e0336" - integrity sha1-KKaq50KN0sOpLz2V8hM13SBOAzY= - -object-path@^0.11.4: - version "0.11.8" - resolved "https://registry.yarnpkg.com/object-path/-/object-path-0.11.8.tgz#ed002c02bbdd0070b78a27455e8ae01fc14d4742" - integrity sha512-YJjNZrlXJFM42wTBn6zgOJVar9KFJvzx6sTWDte8sWZF//cnjl0BxHNpfZx+ZffXX63A9q0b1zsFiBX4g4X5KA== + integrity sha512-ncrLw+X55z7bkl5PnUvHwFK9FcGuFYo9gtjws2XtSzL+aZ8tm830P60WJ0dSmFVaSalWieW5MD7kEdnXda9yJw== 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= + integrity sha512-GBaMwwAVK9qbQN3Scdo0OyvgPW7l3lnaVMj84uTOZlswkX0KpF6fyDBJhtTthf7pymztoN36/KEr1DyhF96zEA== dependencies: isobject "^3.0.0" @@ -14762,14 +11265,14 @@ object.assign@4.1.0: has-symbols "^1.0.0" object-keys "^1.0.11" -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== +object.assign@^4.1.3, object.assign@^4.1.4: + version "4.1.4" + resolved "https://registry.yarnpkg.com/object.assign/-/object.assign-4.1.4.tgz#9673c7c7c351ab8c4d0b516f4343ebf4dfb7799f" + integrity sha512-1mxKf0e58bvyjSCtKYY4sRe9itRk3PJpquJOjeIkz885CczcI4IvJJDLPS72oowuSh+pBxUFROpX+TU++hxhZQ== dependencies: - call-bind "^1.0.0" - define-properties "^1.1.3" - has-symbols "^1.0.1" + call-bind "^1.0.2" + define-properties "^1.1.4" + has-symbols "^1.0.3" object-keys "^1.1.1" object.entries@^1.1.5: @@ -14791,34 +11294,27 @@ object.fromentries@^2.0.5: es-abstract "^1.19.1" object.getownpropertydescriptors@^2.0.3, object.getownpropertydescriptors@^2.1.1: - version "2.1.3" - resolved "https://registry.yarnpkg.com/object.getownpropertydescriptors/-/object.getownpropertydescriptors-2.1.3.tgz#b223cf38e17fefb97a63c10c91df72ccb386df9e" - integrity sha512-VdDoCwvJI4QdC6ndjpqFmoL3/+HxffFBbcJzKi5hwLLqqx3mdbedRpfZDdK0SrOSauj8X4GzBvnDZl4vTN7dOw== + version "2.1.4" + resolved "https://registry.yarnpkg.com/object.getownpropertydescriptors/-/object.getownpropertydescriptors-2.1.4.tgz#7965e6437a57278b587383831a9b829455a4bc37" + integrity sha512-sccv3L/pMModT6dJAYF3fzGMVcb38ysQ0tEE6ixv2yXJDtEIPph268OlAdJj5/qZMZDq2g/jqvwppt36uS/uQQ== dependencies: + array.prototype.reduce "^1.0.4" call-bind "^1.0.2" - define-properties "^1.1.3" - es-abstract "^1.19.1" - -object.hasown@^1.1.0: - version "1.1.0" - resolved "https://registry.yarnpkg.com/object.hasown/-/object.hasown-1.1.0.tgz#7232ed266f34d197d15cac5880232f7a4790afe5" - integrity sha512-MhjYRfj3GBlhSkDHo6QmvgjRLXQ2zndabdf3nX0yTyZK9rPfxb6uRpAac8HXNLy1GpqWtZ81Qh4v3uOls2sRAg== - dependencies: - define-properties "^1.1.3" - es-abstract "^1.19.1" + define-properties "^1.1.4" + es-abstract "^1.20.1" -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= +object.hasown@^1.1.1: + version "1.1.1" + resolved "https://registry.yarnpkg.com/object.hasown/-/object.hasown-1.1.1.tgz#ad1eecc60d03f49460600430d97f23882cf592a3" + integrity sha512-LYLe4tivNQzq4JdaWW6WO3HMZZJWzkkH8fnI6EebWl0VZth2wL2Lovm74ep2/gZzlaTdV62JZHEqHQ2yVn8Q/A== dependencies: - for-own "^0.1.4" - is-extendable "^0.1.1" + define-properties "^1.1.4" + es-abstract "^1.19.5" 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= + integrity sha512-tqa/UMy/CCoYmj+H5qc07qvSL9dqcs/WZENZ1JbtWBlATP+iVOe778gE6MSijnyCnORzDuX6hU+LA4SZ09YjFQ== dependencies: isobject "^3.0.1" @@ -14831,22 +11327,22 @@ object.values@^1.1.5: define-properties "^1.1.3" es-abstract "^1.19.1" -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== +obliterator@^2.0.0: + version "2.0.4" + resolved "https://registry.yarnpkg.com/obliterator/-/obliterator-2.0.4.tgz#fa650e019b2d075d745e44f1effeb13a2adbe816" + integrity sha512-lgHwxlxV1qIg1Eap7LgIeoBWIMFibOjbrYPIPJZcI1mmGAI2m3lNYpK12Y+GBdPQ0U1hRwSord7GIaawz962qQ== oboe@2.1.4: version "2.1.4" resolved "https://registry.yarnpkg.com/oboe/-/oboe-2.1.4.tgz#20c88cdb0c15371bb04119257d4fdd34b0aa49f6" - integrity sha1-IMiM2wwVNxuwQRklfU/dNLCqSfY= + integrity sha512-ymBJ4xSC6GBXLT9Y7lirj+xbqBLa+jADGJldGEYG7u8sZbS9GyG+u1Xk9c5cbriKwSpCg41qUhPjvU5xOpvIyQ== dependencies: http-https "^1.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= + integrity sha512-zRFWiF+FoicxEs3jNI/WYUrVEgA7DeET/InK0XQuudGHRg8iIob3cNPrJTKaz4004uaA9Pbe+Dwa8iluhjLZWA== dependencies: http-https "^1.0.0" @@ -14855,24 +11351,24 @@ observable-webworkers@^1.0.0: resolved "https://registry.yarnpkg.com/observable-webworkers/-/observable-webworkers-1.0.0.tgz#dcbd484a9644d512accc351962c6e710313fbb68" integrity sha512-+cECwCR8IEh8UY5nefQVLO9Cydqpk1izO+o7BABmKjXfJZyEOzBWY3ss5jbOPM6KmEa9aQExvAtTW6tVTOsNAQ== -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= +on-finished@2.4.1: + version "2.4.1" + resolved "https://registry.yarnpkg.com/on-finished/-/on-finished-2.4.1.tgz#58c8c44116e54845ad57f14ab10b03533184ac3f" + integrity sha512-oVlzkg3ENAhCk2zdv7IJwd/QUD4z2RxRwpkcGY8psCVcCYZNq4wYnVWALHM+brtuJjePWiYF/ClmuDr8Ch5+kg== dependencies: ee-first "1.1.1" once@1.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= + integrity sha512-lNaJgI+2Q5URQBkccEKHTQOPaXdUxnZZElQTZY0MFUAuaEqe1E+Nyvgdz/aIyNi6Z9MzO5dv1H8n58/GELp3+w== dependencies: wrappy "1" onetime@^2.0.0: version "2.0.1" resolved "https://registry.yarnpkg.com/onetime/-/onetime-2.0.1.tgz#067428230fd67443b2794b22bba528b6867962d4" - integrity sha1-BnQoIw/WdEOyeUsiu6UotoZ5YtQ= + integrity sha512-oyyPpiMaKARvvcgip+JV+7zci5L8D1W9RZIz2l1o08AM3pfspitVWnPt3mzHcBPp12oYMTy0pqrFs/C+m3EwsQ== dependencies: mimic-fn "^1.0.0" @@ -14883,24 +11379,11 @@ onetime@^5.1.0, onetime@^5.1.2: dependencies: mimic-fn "^2.1.0" -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== - openzeppelin-solidity@2.4.0: version "2.4.0" resolved "https://registry.yarnpkg.com/openzeppelin-solidity/-/openzeppelin-solidity-2.4.0.tgz#5f0a7b30571c45493449166e57b947203415349d" integrity sha512-533gc5jkspxW5YT0qJo02Za5q1LHwXK9CJCc48jNj/22ncNM/3M/3JfWLqfpB90uqLwOKOovpl0JfaMQTR+gXQ== -optimism@^0.16.1: - version "0.16.1" - resolved "https://registry.yarnpkg.com/optimism/-/optimism-0.16.1.tgz#7c8efc1f3179f18307b887e18c15c5b7133f6e7d" - integrity sha512-64i+Uw3otrndfq5kaoGNoY7pvOhSsjFEN4bdEFh80MWVk/dbgJfMv7VFDeCT8LxNAlEVhQmdVEbfE7X2nWNIIg== - dependencies: - "@wry/context" "^0.6.0" - "@wry/trie" "^0.3.0" - optionator@^0.8.1, optionator@^0.8.2: version "0.8.3" resolved "https://registry.yarnpkg.com/optionator/-/optionator-0.8.3.tgz#84fa1d036fe9d3c7e21d99884b601167ec8fb495" @@ -14913,56 +11396,22 @@ optionator@^0.8.1, optionator@^0.8.2: type-check "~0.3.2" word-wrap "~1.2.3" -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" - -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= - dependencies: - is-stream "^1.0.1" - readable-stream "^2.0.1" - 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= - -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= + integrity sha512-5vdKMbE58WaE61uVD+PKyh8xdM398UnjPBLotW2sjG5MzHARwta/+NtMBCBA0t2WQblGYBvq5vsiZpWokwno+A== 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= + integrity sha512-B5JU3cabzk8c67mRRd3ECmROafjYMXbuzlwtqdM8IbS8ktlTix8aFGb2bAGKrSRIlnfKwovGUUr72JUPyOb6kQ== 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= - 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== + integrity sha512-PRT7ZORmwu2MEFt4/fv3Q+mEfN4zetKxufQrkShY2oGvUms9r8otu5HfdyIFHkYXjO7laNsoVGmM2MANfuTA8g== dependencies: - execa "^0.7.0" lcid "^1.0.0" - mem "^1.1.0" os-locale@^3.1.0: version "3.1.0" @@ -14976,7 +11425,7 @@ os-locale@^3.1.0: os-tmpdir@^1.0.0, os-tmpdir@^1.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= + integrity sha512-D2FR03Vir7FIu45XBY20mTb+/ZSWB00sjU9jdQXt83gDrI4Ztz5Fs7/yy74g2N5SVQY4xY1qDr4rNddwYRVX0g== osenv@^0.1.4: version "0.1.5" @@ -15014,10 +11463,15 @@ p-cancelable@^2.0.0: resolved "https://registry.yarnpkg.com/p-cancelable/-/p-cancelable-2.1.1.tgz#aab7fbd416582fa32a3db49859c122487c5ed2cf" integrity sha512-BZOr3nRQHOntUjTrH8+Lh54smKHoHyur8We1V8DSMVrl5A2malOOwuJRnKRDjSnkoeBh4at6BwEnb5I7Jl31wg== +p-cancelable@^3.0.0: + version "3.0.0" + resolved "https://registry.yarnpkg.com/p-cancelable/-/p-cancelable-3.0.0.tgz#63826694b54d61ca1c20ebcb6d3ecf5e14cd8050" + integrity sha512-mlVgR3PGuzlo0MmTdk4cXqXWlwQDLnONTAg6sm62XkMJEiRxN3GL3SffkYvqwonbkJBcrI7Uvv5Zh9yjvn2iUw== + p-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= + integrity sha512-wB3wfAxZpk2AzOfUMJNL+d36xothRSyj8EXOa4f6GMqYDN9BJaaSISbsk+wS9abmnebVw95C2Kb5t85UmpCxuw== p-defer@^3.0.0: version "3.0.0" @@ -15042,25 +11496,18 @@ p-fifo@^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= + integrity sha512-LICb2p9CB7FS+0eR1oqWnHhp0FljGLZCWBE9aix0Uye9W8LTQPwMTYVGWQWIw9RdQiDg4+epXQODwIYJtSJaow== p-is-promise@^1.1.0: version "1.1.0" resolved "https://registry.yarnpkg.com/p-is-promise/-/p-is-promise-1.1.0.tgz#9c9456989e9f6588017b0434d56097675c3da05e" - integrity sha1-nJRWmJ6fZYgBewQ01WCXZ1w9oF4= + integrity sha512-zL7VE4JVS2IFSkR2GQKDSPEVxkoH43/p7oEnwpdCndKYJO0HVeRB7fA8TJwuLOTBREtK0ea8eHaxdwcpob5dmg== 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== -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== - dependencies: - yocto-queue "^0.1.0" - p-limit@^1.1.0: version "1.3.0" resolved "https://registry.yarnpkg.com/p-limit/-/p-limit-1.3.0.tgz#b86bd5f0c25690911c7590fcbfc2010d54b3ccb8" @@ -15075,10 +11522,17 @@ p-limit@^2.0.0, p-limit@^2.2.0, p-limit@^2.2.2: dependencies: p-try "^2.0.0" +p-limit@^3.0.2: + version "3.1.0" + resolved "https://registry.yarnpkg.com/p-limit/-/p-limit-3.1.0.tgz#e1daccbe78d0d1388ca18c64fea38e3e57e3706b" + integrity sha512-TYOanM3wGwNGsZN2cVTYPArw454xnXj5qmWF1bEoAc4+cU/ol7GVh7odevjp1FNHduHc3KZMcFduxU5Xc6uJRQ== + dependencies: + yocto-queue "^0.1.0" + p-locate@^2.0.0: version "2.0.0" resolved "https://registry.yarnpkg.com/p-locate/-/p-locate-2.0.0.tgz#20a0103b222a70c8fd39cc2e580680f3dde5ec43" - integrity sha1-IKAQOyIqcMj9OcwuWAaA893l7EM= + integrity sha512-nQja7m7gSKuewoVRen45CtVfODR3crN3goVQ0DDZ9N3yHxgpkuBhZqsaiotSQRrADUrne346peY7kT3TSACykg== dependencies: p-limit "^1.1.0" @@ -15124,11 +11578,11 @@ p-reflect@^2.1.0: integrity sha512-paHV8NUz8zDHu5lhr/ngGWQiW067DK/+IbJ+RfZ4k+s8y4EKyYCz8pGYWjxCg35eHztpJAt+NUgvN4L+GCbPlg== p-retry@^4.4.0: - version "4.6.1" - resolved "https://registry.yarnpkg.com/p-retry/-/p-retry-4.6.1.tgz#8fcddd5cdf7a67a0911a9cf2ef0e5df7f602316c" - integrity sha512-e2xXGNhZOZ0lfgR9kL34iGlU8N/KO0xZnQxVEwdeOvpqNDQfdnxIYizvWtK8RglUa3bGqI8g0R/BdfzLMxRkiA== + version "4.6.2" + resolved "https://registry.yarnpkg.com/p-retry/-/p-retry-4.6.2.tgz#9baae7184057edd4e17231cee04264106e092a16" + integrity sha512-312Id396EbJdvRONlngUx0NydfrIQ5lsYu0znKVUzVvArzEIt08V1qhtyESbGVd1FGX7UKtiFp5uwKZdM8wIuQ== dependencies: - "@types/retry" "^0.12.0" + "@types/retry" "0.12.0" retry "^0.13.1" p-settle@^4.1.1: @@ -15150,7 +11604,7 @@ p-some@^5.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= + integrity sha512-gb0ryzr+K2qFqFv6qi3khoeqMZF/+ajxQipEF6NteZVnvz9tzdsfAVj3lYtn1gAXvH5lfLwfxEII799gt/mRIA== dependencies: p-finally "^1.0.0" @@ -15176,14 +11630,14 @@ p-timeout@^4.1.0: 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= + integrity sha512-U1etNYuMJoIz3ZXSrrySFjsXQTWOx2/jdi86L+2pRvph/qMKL6sbcCYdH23fqsbm8TH2Gn0OybpT4eSFlCVHww== 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== -pako@^1.0.2, pako@^1.0.4, pako@~1.0.5: +pako@^1.0.2, pako@^1.0.4: version "1.0.11" resolved "https://registry.yarnpkg.com/pako/-/pako-1.0.11.tgz#6c9599d340d54dfd3946380252a35705a6b992bf" integrity sha512-4hLB8Py4zZce5s4yd9XzopqwVv/yGNhV1Bl8NTmCq1763HeK2+EwVTv+leGeL13Dnh2wfbqowVPXCIO0z4taYw== @@ -15191,17 +11645,10 @@ pako@^1.0.2, pako@^1.0.4, pako@~1.0.5: 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= + integrity sha512-eQE845L6ot89sk2N8liD8HAuH4ca6Vvr7VWAWwt7+kvvG5aBcPmmphQ68JsEG2qa9n1TykS2DLeMt363AAH8/w== 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" - parent-module@^1.0.0: version "1.0.1" resolved "https://registry.yarnpkg.com/parent-module/-/parent-module-1.0.1.tgz#691d2709e78c79fae3a156622452d00762caaaa2" @@ -15223,88 +11670,49 @@ parse-asn1@^5.0.0, parse-asn1@^5.1.5: 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== + integrity sha512-60zvsJReQPX5/QP0Kzfd/VrpjScIQ7SHBW6bFCYfEP+fp0Eppr1SHhIO5nd1PjZtvclzSzES9D/p5nFJurwfWg== parse-duration@^1.0.0: version "1.0.2" resolved "https://registry.yarnpkg.com/parse-duration/-/parse-duration-1.0.2.tgz#b9aa7d3a1363cc7e8845bea8fd3baf8a11df5805" integrity sha512-Dg27N6mfok+ow1a2rj/nRjtCfaKrHUZV2SJpEn/s8GaVUSlf4GGRCRP1c13Hj+wfPKVMrFDqLMLITkYKgKxyyg== -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= - 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.4" - resolved "https://registry.yarnpkg.com/parse-headers/-/parse-headers-2.0.4.tgz#9eaf2d02bed2d1eff494331ce3df36d7924760bf" - integrity sha512-psZ9iZoCNFLrgRjZ1d8mn0h9WRqJwFxM9q3x7iUjN/YT2OksthDJ5TiPCu2F38kS4zutqfW+YdVVkBZZx3/1aw== + version "2.0.5" + resolved "https://registry.yarnpkg.com/parse-headers/-/parse-headers-2.0.5.tgz#069793f9356a54008571eb7f9761153e6c770da9" + integrity sha512-ft3iAoLOB/MlwbNXgzy43SWGP6sQki2jQvAyBg/zDFAgr9bfNWZIUj42Kw2eJIl8kEi4PbgE6U1Zau/HwI75HA== 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= + integrity sha512-QR/GGaKCkhwk1ePQNYDRKYZ3mwU9ypsKhB0XyFnLQdomyEqk3e8wpW3V5Jp88zbxK4n5ST1nqo+g9juTpownhQ== dependencies: error-ex "^1.2.0" parse-json@^4.0.0: version "4.0.0" resolved "https://registry.yarnpkg.com/parse-json/-/parse-json-4.0.0.tgz#be35f5425be1f7f6c747184f98a788cb99477ee0" - integrity sha1-vjX1Qlvh9/bHRxhPmKeIy5lHfuA= + integrity sha512-aOIos8bujGN93/8Ox/jPLh7RwVnPEysynVFE+fQZyg6jKELEHwzgKdLRFHUgXJL6kylijVSBC4BvN9OmsB48Rw== dependencies: error-ex "^1.3.1" json-parse-better-errors "^1.0.1" -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== +parse5-htmlparser2-tree-adapter@^7.0.0: + version "7.0.0" + resolved "https://registry.yarnpkg.com/parse5-htmlparser2-tree-adapter/-/parse5-htmlparser2-tree-adapter-7.0.0.tgz#23c2cc233bcf09bb7beba8b8a69d46b08c62c2f1" + integrity sha512-B77tOZrqqfUfnVcOrUvfdLbz4pu4RopLD/4vmu3HUPswwTA8OH0EMW9BlWR2B0RCoiZRAHEUu7IxeP1Pd1UU+g== dependencies: - parse5 "^6.0.1" + domhandler "^5.0.2" + parse5 "^7.0.0" -parse5@^1.5.1: - version "1.5.1" - resolved "https://registry.yarnpkg.com/parse5/-/parse5-1.5.1.tgz#9b7f3b0de32be78dc2401b17573ccaf0f6f59d94" - integrity sha1-m387DeMr543CQBsXVzzK8Pb1nZQ= - -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== +parse5@^7.0.0: + version "7.1.1" + resolved "https://registry.yarnpkg.com/parse5/-/parse5-7.1.1.tgz#4649f940ccfb95d8754f37f73078ea20afe0c746" + integrity sha512-kwpuwzB+px5WUg9pyK0IcK/shltJN5/OVhQagxhCQNtT9Y9QRZqNY2e1cmbu/paRh5LMnz/oVTVLBpjFmMZhSg== 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== - -parseqs@0.0.6: - version "0.0.6" - resolved "https://registry.yarnpkg.com/parseqs/-/parseqs-0.0.6.tgz#8e4bb5a19d1cdc844a08ac974d34e273afa670d5" - integrity sha512-jeAGzMDbfSHHA091hr0r31eYfTig+29g3GKKE/PPbEQ65X0lmMwlEoqmhzu0iztID5uJpZsFlUPDP8ThPL7M8w== + entities "^4.4.0" -parseuri@0.0.6: - version "0.0.6" - resolved "https://registry.yarnpkg.com/parseuri/-/parseuri-0.0.6.tgz#e1496e829e3ac2ff47f39a4dd044b32823c4a25a" - integrity sha512-AUjen8sAkGgao7UyCX6Ahv0gIK2fABKmYjvP4xmy5JaKvcbTRueIqIPHLAfq30xJddqSE033IOMUSOMCcK3Sow== - -parseurl@^1.3.2, parseurl@~1.3.3: +parseurl@^1.3.3, 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== @@ -15312,52 +11720,39 @@ parseurl@^1.3.2, parseurl@~1.3.3: 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= + integrity sha512-qjS4s8rBOJa2Xm0jmxXiyh1+OFf6ekCWOvUaRgAQSktzlTbMotS0nmG9gyYAybCWBcuP4fsBeRCKNwGBnMe2OQ== dependencies: camel-case "^3.0.0" upper-case-first "^1.1.0" -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== - 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= - -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== + integrity sha512-XHXfu/yOQRy9vYOtUDVMN60OEJjW013GoObG1o+xwQTpB9eYJX/BjXMsdW13ZDPruFhYYn0AG22w0xgQMwl3Nw== 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= + integrity sha512-Ou0N05MioItesaLr9q8TtHVWmJ6fxWdqKB2RohFmNWVyJ+2zeKIeDNWAN6B/Pe7wpzWChhZX6nONYmOnMeJQ/Q== 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= + integrity sha512-ALzNPpyNq9AqXMBjeymIjFDAkAFH06mHJH/cSBHAgU0s4vfpBn6b2nf8tiRLvagKD8RbTpq2FKTBg7cl9l3c7Q== 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= + integrity sha512-yTltuKuhtNeFJKa1PiRzfLAU5182q1y4Eb4XCJ3PBqyzEDkAZRzBrKKBct682ls9reBVHf9udYLN5Nd+K1B9BQ== 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= + integrity sha512-bpC7GYwiDYQ4wYLe+FA8lhRjhQCMcQGuSgGGqDkg/QerRWw9CmGRT0iSOVRSZJ29NMLZgIzqaljJ63oaL4NIJQ== path-exists@^4.0.0: version "4.0.0" @@ -15367,24 +11762,24 @@ path-exists@^4.0.0: path-is-absolute@^1.0.0, path-is-absolute@^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= + integrity sha512-AVbw3UJ2e9bq64vSaS9Am0fje1Pa8pbGqTTsmXfaIiMpnr5DlDhfJOuLj9Sf95ZPVDAUerDfEk88MPmPe7UCQg== path-is-inside@^1.0.2: version "1.0.2" resolved "https://registry.yarnpkg.com/path-is-inside/-/path-is-inside-1.0.2.tgz#365417dede44430d1c11af61027facf074bdfc53" - integrity sha1-NlQX3t5EQw0cEa9hAn+s8HS9/FM= + integrity sha512-DUWJr3+ULp4zXmol/SZkFf3JGsS9/SIv+Y3Rt93/UjPpDpklB5f1er4O3POIbUuUJ3FXgqte2Q7SrU6zAqwk8w== 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= + integrity sha512-fEHGKCSmUSDPv4uoj8AlD+joPlq3peND+HRYyxFz4KPw4z926S/b8rIuFs2FYJg3BwsxJf6A9/3eIdLaYC+9Dw== path-key@^3.0.0, path-key@^3.1.0: version "3.1.1" resolved "https://registry.yarnpkg.com/path-key/-/path-key-3.1.1.tgz#581f6ade658cbba65a0d3380de7753295054f375" integrity sha512-ojmeN0qd+y0jszEtoY48r0Peq5dwMEkIlCOu6Q5f41lfkswXuKtYrhgoTpLnyIcHm24Uhqx+5Tqm2InSwLhE6Q== -path-parse@^1.0.6: +path-parse@^1.0.6, path-parse@^1.0.7: version "1.0.7" resolved "https://registry.yarnpkg.com/path-parse/-/path-parse-1.0.7.tgz#fbc114b60ca42b30d9daf5858e4bd68bbedb6735" integrity sha512-LDJzPVEEEPR+y48z93A0Ed0yXb8pAByGWo/k5YYdYgpY2/2EsOsksJrq7lOHxryrVOn1ejG6oAp8ahvOIQD8sw== @@ -15392,24 +11787,17 @@ path-parse@^1.0.6: 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= + integrity sha512-5DFkuoqlv1uYQKxy8omFBeJPQcdoE07Kv2sferDCrAq1ohOU+MSDswDIbnx3YAM60qIOnYa53wBhXW0EbMonrQ== 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= + integrity sha512-S4eENJz1pkiQn9Znv33Q+deTOKmbl+jj1Fl+qiP/vYezj+S8x+J3Uo0ISrx/QoEvIlOaDWJhPaRd1flJ9HXZqg== dependencies: graceful-fs "^4.1.2" pify "^2.0.0" pinkie-promise "^2.0.0" -path-type@^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" @@ -15420,7 +11808,7 @@ pathval@^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, pbkdf2@^3.0.9: +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== @@ -15431,19 +11819,6 @@ pbkdf2@^3.0.17, pbkdf2@^3.0.3, pbkdf2@^3.0.9: 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" - peer-id@^0.16.0: version "0.16.0" resolved "https://registry.yarnpkg.com/peer-id/-/peer-id-0.16.0.tgz#0913062cfa4378707fe69c949b5720b3efadbf32" @@ -15455,32 +11830,30 @@ peer-id@^0.16.0: protobufjs "^6.10.2" uint8arrays "^3.0.0" -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" - integrity sha1-elfrVQpng/kRUzH89GY9XI4AelA= + integrity sha512-F3asv42UuXchdzt+xXqfW1OGlVBe+mxa2mqI0pg5yAHZPvFmY3Y6drSf/GQ1A86WgWEN9Kzh/WrgKa6iGcHXLg== performance-now@^2.1.0: version "2.1.0" resolved "https://registry.yarnpkg.com/performance-now/-/performance-now-2.1.0.tgz#6309f4e0e5fa913ec1c69307ae364b4b377c9e7b" - integrity sha1-Ywn04OX6kT7BxpMHrjZLSzd8nns= + integrity sha512-7EAHlyLHI56VEIdK57uwHdHKIaAGbnXPiw0yWbarQZOKaKpvUIgW0jWRVLiatnM+XXlSwsanIBH/hzGMJulMow== picocolors@^1.0.0: version "1.0.0" resolved "https://registry.yarnpkg.com/picocolors/-/picocolors-1.0.0.tgz#cb5bdc74ff3f51892236eaf79d68bc44564ab81c" integrity sha512-1fygroTLlHu66zi26VoTDv8yRgm0Fccecssto+MhsZ0D/DGW2sm8E8AjW7NU5VVTRt5GxbeZ5qBuJr+HyLYkjQ== -picomatch@^2.0.4, picomatch@^2.2.1, picomatch@^2.2.3: - version "2.3.0" - resolved "https://registry.yarnpkg.com/picomatch/-/picomatch-2.3.0.tgz#f1f061de8f6a4bf022892e2d128234fb98302972" - integrity sha512-lY1Q/PiJGC2zOv/z391WOTD+Z02bCgsFfvxoXXf6h7kv9o+WmsmzYqrAwY63sNgOxE4xEdq0WyUnXfKeBrSvYw== +picomatch@^2.0.4, picomatch@^2.2.1, picomatch@^2.3.1: + version "2.3.1" + resolved "https://registry.yarnpkg.com/picomatch/-/picomatch-2.3.1.tgz#3ba3833733646d9d3e4995946c1365a67fb07a42" + integrity sha512-JU3teHTNjmE2VCGFzuY8EXzCDVwEqB2a8fsIvwaStHhAWJEeVd1o1QD80CU6+ZdEXXSLbSsuLwJjkCBWqRQUVA== + +pidtree@^0.5.0: + version "0.5.0" + resolved "https://registry.yarnpkg.com/pidtree/-/pidtree-0.5.0.tgz#ad5fbc1de78b8a5f99d6fbdd4f6e4eee21d1aca1" + integrity sha512-9nxspIM7OpZuhBxPg73Zvyq7j1QMPMPsGKTqRc2XOaFQauDvoNz9fM1Wdkjmeo7l9GXOZiRs97sPkuayl39wjA== pidusage@^1.2.0: version "1.2.0" @@ -15490,12 +11863,12 @@ pidusage@^1.2.0: 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= + integrity sha512-udgsAY+fTnvv7kI7aaxbqwWNb0AHiB0qBO89PZKPkoTmGOgdbrHDKD+0B2X4uTfJ/FT1R09r9gTsjUjNJotuog== pify@^3.0.0: version "3.0.0" resolved "https://registry.yarnpkg.com/pify/-/pify-3.0.0.tgz#e5a4acd2c101fdf3d9a4d07f0dbc4db49dd28176" - integrity sha1-5aSs0sEB/fPZpNB/DbxNtJ3SgXY= + integrity sha512-C3FsVNH1udSEX48gGX1xfvwTWfsYWj5U+8/uK15BGzIGrKoUpghX8hWZwa/OFnakBiiVNmBvemTJR5mcy7iPcg== pify@^4.0.1: version "4.0.1" @@ -15505,31 +11878,14 @@ pify@^4.0.1: 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= + integrity sha512-0Gni6D4UcLTbv9c57DfxDGdr41XfgUjqWZu492f0cIGr16zDU06BWP/RAEvOuo7CQ0CNjHaLlM59YJJFm3NWlw== dependencies: pinkie "^2.0.0" pinkie@^2.0.0: version "2.0.4" resolved "https://registry.yarnpkg.com/pinkie/-/pinkie-2.0.4.tgz#72556b80cfa0d48a974e80e77248e80ed4f7f870" - integrity sha1-clVrgM+g1IqXToDnckjoDtT3+HA= - -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= - dependencies: - find-up "^1.0.0" - load-json-file "^1.1.0" - object-assign "^4.0.1" - symbol "^0.2.1" - -pkg-dir@^2.0.0: - version "2.0.0" - resolved "https://registry.yarnpkg.com/pkg-dir/-/pkg-dir-2.0.0.tgz#f6d5d1109e19d63edf428e0bd57e12777615334b" - integrity sha1-9tXREJ4Z1j7fQo4L1X4Sd3YVM0s= - dependencies: - find-up "^2.1.0" + integrity sha512-MnUuEycAemtSaeFSjXKW/aroV7akBbY+Sv+RkyqFjgAe73F+MR0TBWKBRDkmfWq/HiFmdavfZ1G7h4SPZXaCSg== pkg-up@^3.1.0: version "3.1.0" @@ -15571,7 +11927,7 @@ pm2-deploy@^0.3.9: pm2-multimeter@^0.1.2: version "0.1.2" resolved "https://registry.yarnpkg.com/pm2-multimeter/-/pm2-multimeter-0.1.2.tgz#1a1e55153d41a05534cea23cfe860abaa0eb4ace" - integrity sha1-Gh5VFT1BoFU0zqI8/oYKuqDrSs4= + integrity sha512-S+wT6XfyKfd7SJIBqRgOctGxaBzUOmVQzTAS+cg04TsEUObJVreha7lvCfX8zzGVr871XwCSnHUU7DQQ5xEsfA== dependencies: charm "~0.1.1" @@ -15625,50 +11981,50 @@ pmx@^1.6: 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== + integrity sha512-xTgYBc3fuo7Yt7JbiuFxSYGToMoz8fLoE6TC9Wx1P/u+LfeThMOAqmuyECnlBaaJb+u1m9hHiXUEtwW4OzfUJg== + +pouchdb-abstract-mapreduce@7.3.0: + version "7.3.0" + resolved "https://registry.yarnpkg.com/pouchdb-abstract-mapreduce/-/pouchdb-abstract-mapreduce-7.3.0.tgz#cc178cb5d07f73b7c3f0f47a7f963defd4872b1c" + integrity sha512-+2fVt3SDh7D776lIGbYZOsKX5js1aUyUw7iJaTGitxSdQ2ObWSTrr3SUrj5Qo1CkgPXwRM3Tdoq/53JYAa2qCA== + dependencies: + pouchdb-binary-utils "7.3.0" + pouchdb-collate "7.3.0" + pouchdb-collections "7.3.0" + pouchdb-errors "7.3.0" + pouchdb-fetch "7.3.0" + pouchdb-mapreduce-utils "7.3.0" + pouchdb-md5 "7.3.0" + pouchdb-utils "7.3.0" + +pouchdb-adapter-leveldb-core@7.3.0: + version "7.3.0" + resolved "https://registry.yarnpkg.com/pouchdb-adapter-leveldb-core/-/pouchdb-adapter-leveldb-core-7.3.0.tgz#91fa1fbc35e744252ae73f9e88911883c1841c9a" + integrity sha512-OyUsEae1JlqR2jSGMohP03gj6VANh9fDR/3nPIa1vYyoQWlwQzOS7knKqDaJm7Nui3JC5q/lWos7/FGZBFuF5Q== dependencies: argsarray "0.0.1" - buffer-from "1.1.1" + buffer-from "1.1.2" 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" + pouchdb-adapter-utils "7.3.0" + pouchdb-binary-utils "7.3.0" + pouchdb-collections "7.3.0" + pouchdb-errors "7.3.0" + pouchdb-json "7.3.0" + pouchdb-md5 "7.3.0" + pouchdb-merge "7.3.0" + pouchdb-utils "7.3.0" + sublevel-pouchdb "7.3.0" 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== + version "7.3.0" + resolved "https://registry.yarnpkg.com/pouchdb-adapter-memory/-/pouchdb-adapter-memory-7.3.0.tgz#ddd5b9ab9d30209d066374648abc761c68444db3" + integrity sha512-nUdYi5KpbUa0uv0L3IJorpiUnIOBPxX9qplCX9i7JE8OtLPeLyKuX3WC+3M1//8Lmmxg3b1wXSNIod6FJy4wAQ== dependencies: memdown "1.4.1" - pouchdb-adapter-leveldb-core "7.2.2" - pouchdb-utils "7.2.2" + pouchdb-adapter-leveldb-core "7.3.0" + pouchdb-utils "7.3.0" pouchdb-adapter-node-websql@^7.0.0: version "7.0.0" @@ -15691,17 +12047,17 @@ pouchdb-adapter-utils@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== +pouchdb-adapter-utils@7.3.0: + version "7.3.0" + resolved "https://registry.yarnpkg.com/pouchdb-adapter-utils/-/pouchdb-adapter-utils-7.3.0.tgz#1747e4ea0b519a9d817c6eda0e2f0ebc3dc18c41" + integrity sha512-mU1+smcagWSpInVx/VQk7VVjjnJlyagKtusUS3OdCMFZY35L6RbXC8eIhoNVDbkBfEv3cIwqQ3t7fdvkaa1odQ== 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-binary-utils "7.3.0" + pouchdb-collections "7.3.0" + pouchdb-errors "7.3.0" + pouchdb-md5 "7.3.0" + pouchdb-merge "7.3.0" + pouchdb-utils "7.3.0" pouchdb-adapter-websql-core@7.0.0: version "7.0.0" @@ -15723,27 +12079,27 @@ pouchdb-binary-utils@7.0.0: dependencies: buffer-from "1.1.0" -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== +pouchdb-binary-utils@7.3.0: + version "7.3.0" + resolved "https://registry.yarnpkg.com/pouchdb-binary-utils/-/pouchdb-binary-utils-7.3.0.tgz#ecc235d28e7f226c168affcf53959675f78d5aaf" + integrity sha512-xvBH/XGHGcou2vkEzszJxkCc7YElfRUrkLUg51Jbdmh1mogLDUO0bU3Tj6TOIIJfRkQrU/HV+dDkMAhsil0amQ== dependencies: - buffer-from "1.1.1" + buffer-from "1.1.2" -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== +pouchdb-collate@7.3.0: + version "7.3.0" + resolved "https://registry.yarnpkg.com/pouchdb-collate/-/pouchdb-collate-7.3.0.tgz#9276de7459a21a6aded71e3090d9b5d5488be19f" + integrity sha512-ys7rXKtEr6cfghgUjknwFJiOkITebV6JmeTybJKCzMV0r2luXu0OoPQsKVpE/wbM/3F5LxfpbFKGFpPcfGMvTA== 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== -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== +pouchdb-collections@7.3.0: + version "7.3.0" + resolved "https://registry.yarnpkg.com/pouchdb-collections/-/pouchdb-collections-7.3.0.tgz#3197dfbee8d69c3760229705fc5a73d0c8a896f1" + integrity sha512-Xr54m2+fErShXn+qAT4xwqJ+8NwddNPeTMJT4z4k1sZsrwfHmZsWbsKAyGPMF04eQaaU+7DDRMciu2VzaBUXyg== pouchdb-debug@^7.1.1: version "7.2.1" @@ -15759,34 +12115,34 @@ pouchdb-errors@7.0.0: dependencies: inherits "2.0.3" -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== +pouchdb-errors@7.3.0: + version "7.3.0" + resolved "https://registry.yarnpkg.com/pouchdb-errors/-/pouchdb-errors-7.3.0.tgz#23bc328108778be0bfe22d69c0df67eab94aeca5" + integrity sha512-dTBbIC1BbCy6J9W/Csg5xROgb3wJN3HpbgAJHHSEtAkb8oA45KZmU3ZwEpNhf0AfPuQm4XgW1936PvlDlGgJiw== dependencies: inherits "2.0.4" -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== +pouchdb-fetch@7.3.0: + version "7.3.0" + resolved "https://registry.yarnpkg.com/pouchdb-fetch/-/pouchdb-fetch-7.3.0.tgz#92b5d3b067d79ecbb9a61cbd52dce36e94dbbf28" + integrity sha512-8/lcg8iMDG+GVs1dHNXA4ktJSEpH71dHU3xesMJ25tNQOqfAaaWrkfz9j71ZYDDkveLYE6UjUzl/sDacu2hSjw== dependencies: abort-controller "3.0.0" - fetch-cookie "0.10.1" - node-fetch "2.6.0" + fetch-cookie "0.11.0" + node-fetch "2.6.7" 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" + version "7.3.0" + resolved "https://registry.yarnpkg.com/pouchdb-find/-/pouchdb-find-7.3.0.tgz#27291c3d069f4f1a1a4913f63b1a148dac1b345b" + integrity sha512-EwhnfyxCAkKf8PG4tfndTTygEmtuz+o1LiZkxfPrflfXA3m1jo1ithib0hwBYtEwEYWuZxH6B8pRZutbLoQCGA== + dependencies: + pouchdb-abstract-mapreduce "7.3.0" + pouchdb-collate "7.3.0" + pouchdb-errors "7.3.0" + pouchdb-fetch "7.3.0" + pouchdb-md5 "7.3.0" + pouchdb-selector-core "7.3.0" + pouchdb-utils "7.3.0" pouchdb-json@7.0.0: version "7.0.0" @@ -15795,22 +12151,22 @@ pouchdb-json@7.0.0: dependencies: vuvuzela "1.0.3" -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== +pouchdb-json@7.3.0: + version "7.3.0" + resolved "https://registry.yarnpkg.com/pouchdb-json/-/pouchdb-json-7.3.0.tgz#94c2d876202c6879cb525db05e7633b926346e5d" + integrity sha512-D4wyi20ltyiFpuziQeMk3CbXs/Q58VoGTYTJQY8MWBw37OidtHGQAt1Kh5yJ435wJqDzJZyxMA5RxGZxEOBDVg== dependencies: vuvuzela "1.0.3" -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== +pouchdb-mapreduce-utils@7.3.0: + version "7.3.0" + resolved "https://registry.yarnpkg.com/pouchdb-mapreduce-utils/-/pouchdb-mapreduce-utils-7.3.0.tgz#21d42ea9a376b0fa2e61c8c1ac53f886ffdf3409" + integrity sha512-KDVSd+H2r+XWTrQfKWV71SknDDYRjYXoeWs0ZQl3xITHCcTl+fIgqyagg/XN+Zy/U9LeLPGMe2JdgPx9H8lJgw== dependencies: argsarray "0.0.1" inherits "2.0.4" - pouchdb-collections "7.2.2" - pouchdb-utils "7.2.2" + pouchdb-collections "7.3.0" + pouchdb-utils "7.3.0" pouchdb-md5@7.0.0: version "7.0.0" @@ -15820,31 +12176,31 @@ pouchdb-md5@7.0.0: pouchdb-binary-utils "7.0.0" spark-md5 "3.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== +pouchdb-md5@7.3.0: + version "7.3.0" + resolved "https://registry.yarnpkg.com/pouchdb-md5/-/pouchdb-md5-7.3.0.tgz#3a094e45ccce87271530ad3f37d7e82c53562bb0" + integrity sha512-wL04QgoKyd/L/TV5gxgcvlEyCJiZoXCOEFJklTzkdza/kBQNJGPH7i0ZhKa7Sb+AvZYoWZHddf1Zgv7rBScHkA== dependencies: - pouchdb-binary-utils "7.2.2" - spark-md5 "3.0.1" + pouchdb-binary-utils "7.3.0" + spark-md5 "3.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== -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== +pouchdb-merge@7.3.0: + version "7.3.0" + resolved "https://registry.yarnpkg.com/pouchdb-merge/-/pouchdb-merge-7.3.0.tgz#dfde5b54aa6dd203ac62d768fe33e7bdbd56e38e" + integrity sha512-E7LmchMzwYFm6V8OBxejzARLisanpksOju2LEfuiYnotGfNDeW7MByP0qBH0/zF8BfUyyjA1cl7ByaEpsapkeQ== -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== +pouchdb-selector-core@7.3.0: + version "7.3.0" + resolved "https://registry.yarnpkg.com/pouchdb-selector-core/-/pouchdb-selector-core-7.3.0.tgz#1860afeec069ba4d5b79583b4b520dd2b643e3a3" + integrity sha512-sK/cCrIGeL9ImcMhKGcwa54+bzX7Wv4hhVV+oUW3T1Nasaoxh+Muem1GuA+x1+SbTCE8y37rUg8i6DIOhX51ew== dependencies: - pouchdb-collate "7.2.2" - pouchdb-utils "7.2.2" + pouchdb-collate "7.3.0" + pouchdb-utils "7.3.0" pouchdb-utils@7.0.0: version "7.0.0" @@ -15860,69 +12216,65 @@ pouchdb-utils@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== +pouchdb-utils@7.3.0: + version "7.3.0" + resolved "https://registry.yarnpkg.com/pouchdb-utils/-/pouchdb-utils-7.3.0.tgz#782df5ab3309edd5dc8c0f8ae4663bf0e67962e2" + integrity sha512-HH+5IXXWn/ZgVCSnrlydBMYn6MabT7RS7SNoo9w8qVH9efpZSp3eLchw6yMQNLw8LQefWmbbskiHV9VgJmSVWQ== 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-collections "7.3.0" + pouchdb-errors "7.3.0" + pouchdb-md5 "7.3.0" + uuid "8.3.2" -pouchdb@7.1.1: - version "7.1.1" - resolved "https://registry.yarnpkg.com/pouchdb/-/pouchdb-7.1.1.tgz#f5f8dcd1fc440fb76651cb26f6fc5d97a39cd6ce" - integrity sha512-8bXWclixNJZqokvxGHRsG19zehSJiaZaz4dVYlhXhhUctz7gMcNTElHjPBzBdZlKKvt9aFDndmXN1VVE53Co8g== +pouchdb@7.3.0: + version "7.3.0" + resolved "https://registry.yarnpkg.com/pouchdb/-/pouchdb-7.3.0.tgz#440fbef12dfd8f9002320802528665e883a3b7f8" + integrity sha512-OwsIQGXsfx3TrU1pLruj6PGSwFH+h5k4hGNxFkZ76Um7/ZI8F5TzUHFrpldVVIhfXYi2vP31q0q7ot1FSLFYOw== dependencies: + abort-controller "3.0.0" argsarray "0.0.1" - buffer-from "1.1.0" + buffer-from "1.1.2" 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" + fetch-cookie "0.11.0" + immediate "3.3.0" + inherits "2.0.4" + level "6.0.1" + level-codec "9.0.2" level-write-stream "1.0.0" - leveldown "5.0.2" - levelup "4.0.2" + leveldown "5.6.0" + levelup "4.4.0" 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" + node-fetch "2.6.7" + readable-stream "1.1.14" + spark-md5 "3.0.2" + through2 "3.0.2" + uuid "8.3.2" vuvuzela "1.0.3" precond@0.2: version "0.2.3" resolved "https://registry.yarnpkg.com/precond/-/precond-0.2.3.tgz#aa9591bcaa24923f1e0f4849d240f47efc1075ac" - integrity sha1-qpWRvKokkj8eD0hJ0kD0fvwQdaw= + integrity sha512-QCYG84SgGyGzqJ/vlMsxeXd/pgL/I94ixdNFyh1PusWmTCyVfPJjZ1K1jvHtsbfnXQs2TSkEP2fR7QiMZAnKFQ== 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= + integrity sha512-ESF23V4SKG6lVSGZgYNpbsiaAkdab6ZgOxe52p7+Kid3W3u3bxR4Vfd/o21dmN7jSt0IwgZ4v5MUd26FEtXE9w== prepend-http@^1.0.1: version "1.0.4" resolved "https://registry.yarnpkg.com/prepend-http/-/prepend-http-1.0.4.tgz#d4f4562b0ce3696e41ac52d0e002e57a635dc6dc" - integrity sha1-1PRWKwzjaW5BrFLQ4ALlemNdxtw= + integrity sha512-PhmXi5XmoyKw1Un4E+opM2KcsJInDvKyuOumcjjw3waw86ZNjHwVUOOWLc4bCzLdcKNaWBH9e99sbWzDQsVaYg== 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= - -preserve@^0.2.0: - version "0.2.0" - resolved "https://registry.yarnpkg.com/preserve/-/preserve-0.2.0.tgz#815ed1f6ebc65926f865b310c0713bcb3315ce4b" - integrity sha1-gV7R9uvGWSb4ZbMQwHE7yzMVzks= + integrity sha512-ravE6m9Atw9Z/jjttRUZ+clIXogdghyZAuWJ3qEzjT+jI/dL1ifAqhZeC5VHzQp1MSt1+jxKkFNemj/iO7tVUA== prettier-linter-helpers@^1.0.0: version "1.0.0" @@ -15931,27 +12283,15 @@ prettier-linter-helpers@^1.0.0: dependencies: fast-diff "^1.1.2" -prettier-plugin-solidity@^1.0.0-alpha.59: - version "1.0.0-beta.18" - resolved "https://registry.yarnpkg.com/prettier-plugin-solidity/-/prettier-plugin-solidity-1.0.0-beta.18.tgz#9705453bacd55b3242110d472f23f624ae6777fc" - integrity sha512-ezWdsG/jIeClmYBzg8V9Voy8jujt+VxWF8OS3Vld+C3c+3cPVib8D9l8ahTod7O5Df1anK9zo+WiiS5wb1mLmg== - 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-plugin-solidity@^1.0.0-beta.19: - version "1.0.0-beta.19" - resolved "https://registry.yarnpkg.com/prettier-plugin-solidity/-/prettier-plugin-solidity-1.0.0-beta.19.tgz#7c3607fc4028f5e6a425259ff03e45eedf733df3" - integrity sha512-xxRQ5ZiiZyUoMFLE9h7HnUDXI/daf1tnmL1msEdcKmyh7ZGQ4YklkYLC71bfBpYU2WruTb5/SFLUaEb3RApg5g== + version "1.0.0-beta.24" + resolved "https://registry.yarnpkg.com/prettier-plugin-solidity/-/prettier-plugin-solidity-1.0.0-beta.24.tgz#67573ca87098c14f7ccff3639ddd8a4cab2a87eb" + integrity sha512-6JlV5BBTWzmDSq4kZ9PTXc3eLOX7DF5HpbqmmaF+kloyUwOZbJ12hIYsUaZh2fVgZdV2t0vWcvY6qhILhlzgqg== dependencies: - "@solidity-parser/parser" "^0.14.0" - emoji-regex "^10.0.0" + "@solidity-parser/parser" "^0.14.3" + emoji-regex "^10.1.0" escape-string-regexp "^4.0.0" - semver "^7.3.5" + semver "^7.3.7" solidity-comments-extractor "^0.0.7" string-width "^4.2.3" @@ -15960,20 +12300,15 @@ prettier@^1.14.3: resolved "https://registry.yarnpkg.com/prettier/-/prettier-1.19.1.tgz#f7d7f5ff8a9cd872a7be4ca142095956a60797cb" integrity sha512-s7PoyDv/II1ObgQunCbB9PdLmUcBZcnWOcxDh7O0N/UwDEsHyqkW+Qh28jW+mVuCdx7gLB0BotYI1Y6uI9iyew== -prettier@^2.0.5, prettier@^2.1.2: - version "2.4.1" - resolved "https://registry.yarnpkg.com/prettier/-/prettier-2.4.1.tgz#671e11c89c14a4cfc876ce564106c4a6726c9f5c" - integrity sha512-9fbDAXSBcc6Bs1mZrDYb3XKzDLm4EXXL9sC1LqKP5rZkT6KRr/rf9amVUcODVXgguK/isJz0d0hP72WeaKWsvA== - -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== +prettier@^2.0.5: + version "2.7.1" + resolved "https://registry.yarnpkg.com/prettier/-/prettier-2.7.1.tgz#e235806850d057f97bb08368a4f7d899f7760c64" + integrity sha512-ujppO+MkdPqoVINuDFDRLClm7D78qbDt0/NR+wp5FqEZOoTNAjPHWj17QRhu7geIHJfcNhRk1XVQmF8Bp3ye+g== private-ip@^2.1.0, private-ip@^2.1.1, private-ip@^2.3.3: - version "2.3.3" - resolved "https://registry.yarnpkg.com/private-ip/-/private-ip-2.3.3.tgz#1e80ff8443e5ac78f555631aec3ea6ff027fa6aa" - integrity sha512-5zyFfekIVUOTVbL92hc8LJOtE/gyGHeREHkJ2yTyByP8Q2YZVoBqLg3EfYLeF0oVvGqtaEX2t2Qovja0/gStXw== + version "2.3.4" + resolved "https://registry.yarnpkg.com/private-ip/-/private-ip-2.3.4.tgz#e2944f2a7a0142ec6640efda323af4b96307524e" + integrity sha512-ts/YFVwfBeLq61f9+KsOhXW6RH0wvY0gU50R6QZYzgFhggyyLK6WDFeYdjfi/HMnBm2hecLvsR3PB3JcRxDk+A== dependencies: ip-regex "^4.3.0" ipaddr.js "^2.0.1" @@ -15985,11 +12320,6 @@ private@^0.1.6, private@^0.1.8: resolved "https://registry.yarnpkg.com/private/-/private-0.1.8.tgz#2381edb3689f7a53d653190060fcf822d2f368ff" integrity sha512-VvivMrbvd2nKkiG38qjULzlc+4Vx4wm/whI9pQD35YrARNnhxeiRktSOhSukRLFNlzg6Br/cJPet5J/u19r/mg== -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= - 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" @@ -15998,7 +12328,7 @@ process-nextick-args@~2.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= + integrity sha512-cdGef/drWFoydD1JsMzuFf8100nZl+GT+yacc2bEced5f9Rjk4z+WtFUTBu9PhOi9j/jfmBPu0mMEY4wIdAF8A== progress@^2.0.0: version "2.0.3" @@ -16013,23 +12343,12 @@ promise-timeout@^1.3.0: promise-to-callback@^1.0.0: version "1.0.0" resolved "https://registry.yarnpkg.com/promise-to-callback/-/promise-to-callback-1.0.0.tgz#5d2a749010bfb67d963598fcd3960746a68feef7" - integrity sha1-XSp0kBC/tn2WNZj805YHRqaP7vc= + integrity sha512-uhMIZmKM5ZteDMfLgJnoSq9GCwsNKrYau73Awf1jIy6/eUcuuZ3P+CD9zUv0kJsIUbU+x6uLNIhXhLHDs1pNPA== dependencies: is-fn "^1.0.0" set-immediate-shim "^1.0.1" -promise.allsettled@1.0.2: - 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" - -promise@^7.0.1, promise@^7.1.1: +promise@^7.0.1: version "7.3.1" resolved "https://registry.yarnpkg.com/promise/-/promise-7.3.1.tgz#064b72602b18f90f29192b8b1bc418ffd1ebd3bf" integrity sha512-nolQXZ/4L+bP/UGlkfaIujX9BKxGwmQ9OT4mOt5yvy8iK1h3wqTEJCijzGANTCCl9nWjY41juyAn2K3Q1hLLTg== @@ -16037,34 +12356,34 @@ promise@^7.0.1, promise@^7.1.1: asap "~2.0.3" 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== + version "8.2.0" + resolved "https://registry.yarnpkg.com/promise/-/promise-8.2.0.tgz#a1f6280ab67457fbfc8aad2b198c9497e9e5c806" + integrity sha512-+CMAlLHqwRYwBMXKCP+o8ns7DN+xHDUiI+0nArsiJ9y+kJVPLFxEaSw6Ha9s9H0tftxg2Yzl25wqj9G7m5wLZg== dependencies: asap "~2.0.6" promisify@^0.0.3: version "0.0.3" resolved "https://registry.yarnpkg.com/promisify/-/promisify-0.0.3.tgz#754db61f29ee6476ab543c45b464d21f5ef55686" - integrity sha1-dU22HynuZHarVDxFtGTSH171VoY= + integrity sha512-CcBGsRhhq466fsZVyHfptuKqon6eih0CqMsJE0kWIIjbpVNEyDoaKLELm2WVs//W/WXRBHip+6xhTExTkHUwtA== dependencies: when "" promptly@2.2.0: version "2.2.0" resolved "https://registry.yarnpkg.com/promptly/-/promptly-2.2.0.tgz#2a13fa063688a2a5983b161fff0108a07d26fc74" - integrity sha1-KhP6BjaIoqWYOxYf/wEIoH0m/HQ= + integrity sha512-aC9j+BZsRSSzEsXBNBwDnAxujdx19HycZoKgRgzWnS8eOHg1asuf9heuLprfbe739zY3IdUQx+Egv6Jn135WHA== dependencies: read "^1.0.4" -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== +prop-types@^15.8.1: + version "15.8.1" + resolved "https://registry.yarnpkg.com/prop-types/-/prop-types-15.8.1.tgz#67d87bf1a694f48435cf332c24af10214a3140b5" + integrity sha512-oj87CgZICdulUohogVAR7AjlC0327U4el4L6eAvOqCeudMDVU0NThNaV+b9Df4dXgSP1gXMTnPdhfe/2qDH5cg== dependencies: loose-envify "^1.4.0" object-assign "^4.1.1" - react-is "^16.8.1" + react-is "^16.13.1" proper-lockfile@^4.0.0, proper-lockfile@^4.1.1: version "4.1.2" @@ -16078,12 +12397,12 @@ proper-lockfile@^4.0.0, proper-lockfile@^4.1.1: proto-list@~1.2.1: version "1.2.4" resolved "https://registry.yarnpkg.com/proto-list/-/proto-list-1.2.4.tgz#212d5bfe1318306a420f6402b8e26ff39647a849" - integrity sha1-IS1b/hMYMGpCD2QCuOJv85ZHqEk= + integrity sha512-vtK/94akxsTMhe0/cbfpR+syPuszcuwhqVjJq26CuNDgFGj682oRBXOP5MJpv2r7JtE8MsiepGIqvvOTBwn2vA== 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== + version "6.11.3" + resolved "https://registry.yarnpkg.com/protobufjs/-/protobufjs-6.11.3.tgz#637a527205a35caa4f3e2a9a4a13ddffe0e7af74" + integrity sha512-xL96WDdCZYdU7Slin569tFX712BxsxslWwAfAhCYjQKGTq7dAU91Lomy6nLLhh/dyGhk/YH4TwTSRxTzhuHyZg== dependencies: "@protobufjs/aspromise" "^1.1.2" "@protobufjs/base64" "^1.1.2" @@ -16099,22 +12418,7 @@ protobufjs@^6.10.2, protobufjs@^6.11.2: "@types/node" ">=13.7.0" long "^4.0.0" -protocol-buffers-schema@^3.3.1: - version "3.6.0" - resolved "https://registry.yarnpkg.com/protocol-buffers-schema/-/protocol-buffers-schema-3.6.0.tgz#77bc75a48b2ff142c1ad5b5b90c94cd0fa2efd03" - integrity sha512-TdDRD+/QNdrCGCE7v8340QyuXd4kIWIgapsE2+n/SaGiSSbomYl4TjHlvIoCWRpE7wFt02EpB35VVA2ImcBVqw== - -protons@^2.0.0: - version "2.0.3" - resolved "https://registry.yarnpkg.com/protons/-/protons-2.0.3.tgz#94f45484d04b66dfedc43ad3abff1e8907994bb2" - integrity sha512-j6JikP/H7gNybNinZhAHMN07Vjr1i4lVupg598l4I9gSTjJqOvKnwjzYX2PzvBTSVf2eZ2nWv4vG+mtW8L6tpA== - dependencies: - protocol-buffers-schema "^3.3.1" - signed-varint "^2.0.1" - uint8arrays "^3.0.0" - varint "^5.0.0" - -proxy-addr@~2.0.5: +proxy-addr@~2.0.7: version "2.0.7" resolved "https://registry.yarnpkg.com/proxy-addr/-/proxy-addr-2.0.7.tgz#f19fe69ceab311eeb94b42e70e8c2070f9ba1025" integrity sha512-llQsMLSUDUPT44jdrU/O37qlnifitDP+ZwrmmZcoSKyLKvtZxpyV0n2/bD/N4tBAAZ/gJEdZU7KMraoK1+XYAg== @@ -16125,17 +12429,12 @@ proxy-addr@~2.0.5: 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= - -pseudomap@^1.0.2: - version "1.0.2" - resolved "https://registry.yarnpkg.com/pseudomap/-/pseudomap-1.0.2.tgz#f052a28da70e618917ef0a8ac34c1ae5a68286b3" - integrity sha1-8FKijacOYYkX7wqKw0wa5aaChrM= + integrity sha512-yPw4Sng1gWghHQWj0B3ZggWUm4qVbPwPFcRG8KyxiU7J2OHFSoEHKS+EZ3fv5l1t9CyCiop6l/ZYeWbrgoQejw== psl@^1.1.28, 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== + version "1.9.0" + resolved "https://registry.yarnpkg.com/psl/-/psl-1.9.0.tgz#d0df2a137f00794565fcaf3b2c00cd09f8d5a5a7" + integrity sha512-E/ZsdU4HLs/68gYzgGTkMicWTLPdAftJLfJFlLUAAKZGkStNU72sZjT66SnMDVOfOWY/YAoiD7Jxa9iHvngcag== public-encrypt@^4.0.0: version "4.0.3" @@ -16262,47 +12561,39 @@ 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= + integrity sha512-Yxz2kRwT90aPiWEMHVYnEf4+rhwF1tBmmZ4KepCP+Wkium9JxtWnUm1nqGwpiAHr/tnTSeHqr3wb++jgSkXjhA== punycode@^2.1.0, punycode@^2.1.1: version "2.1.1" resolved "https://registry.yarnpkg.com/punycode/-/punycode-2.1.1.tgz#b58b010ac40c22c5657616c8d2c2c02c7bf479ec" integrity sha512-XRsRjdf+j5ml+y/6GKHPZbrF/8p2Yga0JPtdqTIY2Xe5ohJPD9saDJJLPvp9+NSBprVvevdXZybnj2cv8OEd0A== -pure-rand@^5.0.0: - version "5.0.0" - resolved "https://registry.yarnpkg.com/pure-rand/-/pure-rand-5.0.0.tgz#87f5bdabeadbd8904e316913a5c0b8caac517b37" - integrity sha512-lD2/y78q+7HqBx2SaT6OT4UcwtvXNRfEpzYEzl0EQ+9gZq2Qi3fa0HDnYPeqQwhlHJFBUhT7AO3mLU3+8bynHA== +pure-rand@^5.0.1: + version "5.0.3" + resolved "https://registry.yarnpkg.com/pure-rand/-/pure-rand-5.0.3.tgz#a2f15dfbc3be8433d1d8ed67ee411aa83fb90406" + integrity sha512-9N8x1h8dptBQpHyC7aZMS+iNOAm97WMGY0AFrguU1cpfW3I5jINkWe5BIY5md0ofy+1TCIELsVcm/GJXZSaPbw== -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== +qs@6.10.3: + version "6.10.3" + resolved "https://registry.yarnpkg.com/qs/-/qs-6.10.3.tgz#d6cde1b2ffca87b5aa57889816c5f81535e22e8e" + integrity sha512-wr7M2E0OFRfIfJZjKGieI8lBKb7fRCH4Fv5KNPEs7gJ8jadvotdsS08PzOKR7opXhZ/Xkjtt3WF9g38drmyRqQ== + dependencies: + side-channel "^1.0.4" qs@^6.4.0, qs@^6.7.0: - version "6.10.1" - resolved "https://registry.yarnpkg.com/qs/-/qs-6.10.1.tgz#4931482fa8d647a5aab799c5271d2133b981fb6a" - integrity sha512-M528Hph6wsSVOBiYUnGf+K/7w0hNshs/duGsNXPUCLH5XAqjEtiPGwNONLV0tBH8NoGb0mvD5JubnUTrujKDTg== + version "6.11.0" + resolved "https://registry.yarnpkg.com/qs/-/qs-6.11.0.tgz#fd0d963446f7a65e1367e01abd85429453f0c37a" + integrity sha512-MvjoMCJwEarSbUYk5O+nmoSzSutSsTwF85zcHPQ9OrlFoZOYIjaqBAJIqIXjptyD5vThxGq52Xu/MaJzRkIk4Q== dependencies: side-channel "^1.0.4" qs@~6.5.2: - version "6.5.2" - resolved "https://registry.yarnpkg.com/qs/-/qs-6.5.2.tgz#cb3ae806e8740444584ef154ce8ee98d403f3e36" - integrity sha512-N5ZAX4/LxJmF+7wN74pUD6qAh9/wnvdQcjq9TZjevvXzSUo7bfmw91saqMjzGS2xq91/odN2dW/WOl7qQHNDGA== + version "6.5.3" + resolved "https://registry.yarnpkg.com/qs/-/qs-6.5.3.tgz#3aeeffc91967ef6e35c0e488ef46fb296ab76aad" + integrity sha512-qxXIEh4pCGfHICj1mAJQ2/2XVZkjCDTcEgfoSQxc/fYivUZxTkk7L3bDBJSoNrEzXI17oUO5Dp07ktqE5KzczA== query-string@^5.0.1: version "5.1.1" @@ -16313,26 +12604,21 @@ 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: - version "0.2.1" - resolved "https://registry.yarnpkg.com/querystring/-/querystring-0.2.1.tgz#40d77615bb09d16902a85c3e38aa8b5ed761c2dd" - integrity sha512-wkvS7mL/JMugcup3/rMitHmd9ecIGd2lhFhK9N3UUQ450h66d1r3Y9nvXzQAW1Lq+wyx61k/1pfKS5KuKiyEbg== +querystringify@^2.1.1: + version "2.2.0" + resolved "https://registry.yarnpkg.com/querystringify/-/querystringify-2.2.0.tgz#3345941b4153cb9d082d8eee4cda2016a9aef7f6" + integrity sha512-FIqgj2EUvTa7R50u0rGsyTftzjYmv/a3hO345bZNrqabNqjtgiDMgmo4mkUjd+nzU5oF3dClKqFIPUKybUyqoQ== queue-microtask@^1.1.0, queue-microtask@^1.2.2, queue-microtask@^1.2.3: version "1.2.3" resolved "https://registry.yarnpkg.com/queue-microtask/-/queue-microtask-1.2.3.tgz#4929228bbc724dfac43e0efb058caf7b6cfb6243" integrity sha512-NuaNSa6flKT5JaSYQzJok04JzTL1CA6aGhv5rfLW3PgqA+M2ChpZQnAC8h8i4ZFkBS8X5RqkDBHA7r4hej3K9A== +quick-lru@^5.1.1: + version "5.1.1" + resolved "https://registry.yarnpkg.com/quick-lru/-/quick-lru-5.1.1.tgz#366493e6b3e42a3a6885e2e99d18f80fb7a8c932" + integrity sha512-WuyALRjWPDGtt/wzJiadO5AXY+8hZ80hVpe6MyivgraREW751X3SbhRvG3eLKOYN+8VEvqLcf3wdnt44Z4S4SA== + rabin-wasm@^0.1.4: version "0.1.5" resolved "https://registry.yarnpkg.com/rabin-wasm/-/rabin-wasm-0.1.5.tgz#5b625ca007d6a2cbc1456c78ae71d550addbc9c9" @@ -16345,15 +12631,6 @@ rabin-wasm@^0.1.4: node-fetch "^2.6.1" readable-stream "^3.6.0" -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" - randombytes@^2.0.0, randombytes@^2.0.1, randombytes@^2.0.3, randombytes@^2.0.5, randombytes@^2.1.0: version "2.1.0" resolved "https://registry.yarnpkg.com/randombytes/-/randombytes-2.1.0.tgz#df6f84372f0270dc65cdf6291349ab7a473d4f2a" @@ -16372,30 +12649,20 @@ randomfill@^1.0.3: randomhex@0.1.5: version "0.1.5" resolved "https://registry.yarnpkg.com/randomhex/-/randomhex-0.1.5.tgz#baceef982329091400f2a2912c6cd02f1094f585" - integrity sha1-us7vmCMpCRQA8qKRLGzQLxCU9YU= + integrity sha512-2+Kkw7UiZGQWOz7rw8hPW44utkBYMEciQfziaZ71RcyDu+refQWzS/0DgfUSa5MwclrOD3sf3vI5vmrTYjwpjQ== range-parser@~1.2.1: version "1.2.1" resolved "https://registry.yarnpkg.com/range-parser/-/range-parser-1.2.1.tgz#3cf37023d199e1c24d1a55b84800c2f3e6468031" integrity sha512-Hrgsx+orqoygnmhFbKaHE6c296J+HTAQXoxEF6gNupROmmGJRoyzfG3ccAveqCBrwr/2yxQ5BVd/GTl5agOwSg== -raw-body@2.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: - bytes "3.1.0" - http-errors "1.7.2" - iconv-lite "0.4.24" - unpipe "1.0.0" - -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== +raw-body@2.5.1, raw-body@^2.4.1: + version "2.5.1" + resolved "https://registry.yarnpkg.com/raw-body/-/raw-body-2.5.1.tgz#fe1b1628b181b700215e5fd42389f98b71392857" + integrity sha512-qqJBtEyVgS0ZmPGdCFPWJ3FreoqvG4MVQln/kCgF7Olq95IbOp0/BWyMwbdtn4VTvkM8Y7khCQ2Xgk/tcrCXig== dependencies: - bytes "3.1.0" - http-errors "1.7.3" + bytes "3.1.2" + http-errors "2.0.0" iconv-lite "0.4.24" unpipe "1.0.0" @@ -16409,7 +12676,7 @@ rc@^1.2.7: minimist "^1.2.0" strip-json-comments "~2.0.1" -react-is@^16.7.0, react-is@^16.8.1: +react-is@^16.13.1: version "16.13.1" resolved "https://registry.yarnpkg.com/react-is/-/react-is-16.13.1.tgz#789729a4dc36de2999dc156dd6c1d9c18cea56a4" integrity sha512-24e6ynE2H+OKt4kqsOvNd8kBpV65zoxbA4BVsEOB3ARVWQki/DHzaUoC5KuON/BiccDaCCTZBuOcfZs70kR8bQ== @@ -16424,75 +12691,38 @@ react-native-fetch-api@^2.0.0: 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= + integrity sha512-WD9MTlNtI55IwYUS27iHh9tK3YoIVhxis8yKhLpTqWtml739uXc9NWTpxoHkfZf3+DkCCsXox94/VWZniuZm6A== dependencies: 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" - integrity sha1-9f+qXs0pyzHAR0vKfXVra7KePyg= + integrity sha512-7BGwRHqt4s/uVbuyoeejRn4YmFnYZiFl4AuaeXHlgZf3sONF0SOGlxs2Pw8g6hCKupo08RafIO5YXFNOKTfwsQ== dependencies: load-json-file "^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" - read@^1.0.4: version "1.0.7" resolved "https://registry.yarnpkg.com/read/-/read-1.0.7.tgz#b3da19bd052431a97671d44a42634adf710b40c4" - integrity sha1-s9oZvQUkMal2cdRKQmNK33ELQMQ= + integrity sha512-rSOKNYUmaxy0om1BNjMN4ezNT6VKK+2xF4GBhc81mkH7L60i6dp8qPYrkndNLT3QPphoII3maL9PVC9XmhHwVQ== dependencies: mute-stream "~0.0.4" -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= - dependencies: - core-util-is "~1.0.0" - inherits "~2.0.1" - isarray "0.0.1" - string_decoder "~0.10.x" - -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" - readable-stream@1.1.14, readable-stream@^1.0.33: version "1.1.14" resolved "https://registry.yarnpkg.com/readable-stream/-/readable-stream-1.1.14.tgz#7cf4c54ef648e3813084c636dd2079e166c081d9" - integrity sha1-fPTFTvZI44EwhMY23SB54WbAgdk= + integrity sha512-+MeVjFf4L44XUkhM1eYbD8fyEsxcV81pqMSR5gblfcLCHfZvbrqy4/qYHE+/R5HoBUT11WV5O08Cr1n3YXkWVQ== dependencies: core-util-is "~1.0.0" inherits "~2.0.1" isarray "0.0.1" string_decoder "~0.10.x" -"readable-stream@2 || 3", readable-stream@^3.0.6, readable-stream@^3.1.0, readable-stream@^3.1.1, readable-stream@^3.4.0, readable-stream@^3.6.0: +"readable-stream@2 || 3", readable-stream@^3.0.6, 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== @@ -16501,17 +12731,7 @@ readable-stream@1.1.14, readable-stream@^1.0.33: string_decoder "^1.1.1" util-deprecate "^1.0.1" -"readable-stream@>=1.0.33-1 <1.1.0-0", readable-stream@~1.0.15: - version "1.0.34" - resolved "https://registry.yarnpkg.com/readable-stream/-/readable-stream-1.0.34.tgz#125820e34bc842d2f2aaafafe4c2916ee32c157c" - integrity sha1-Elgg40vIQtLyqq+v5MKRbuMsFXw= - dependencies: - core-util-is "~1.0.0" - inherits "~2.0.1" - isarray "0.0.1" - string_decoder "~0.10.x" - -readable-stream@^2.0.0, readable-stream@^2.0.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.2.8, readable-stream@^2.2.9, 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: +readable-stream@^2.0.0, readable-stream@^2.0.2, readable-stream@^2.0.6, readable-stream@^2.2.2, readable-stream@^2.2.8, readable-stream@^2.2.9, readable-stream@^2.3.0, readable-stream@^2.3.5, 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== @@ -16527,19 +12747,17 @@ readable-stream@^2.0.0, readable-stream@^2.0.1, readable-stream@^2.0.2, readable 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= + integrity sha512-azrivNydKRYt7zwLV5wWUK7YzKTWs3q87xSmY6DlHapPrCvaT6ZrukvM5erV+yCSSPmZT8zkSdttOHQpWWm9zw== -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= +readable-stream@~1.0.15: + version "1.0.34" + resolved "https://registry.yarnpkg.com/readable-stream/-/readable-stream-1.0.34.tgz#125820e34bc842d2f2aaafafe4c2916ee32c157c" + integrity sha512-ok1qVCJuRkNmvebYikljxJA/UEsKwLl2nI1OmaqAu4/UE+h0wKCHok4XkL/gvi39OacXvw59RJUOFUkDib2rHg== dependencies: core-util-is "~1.0.0" inherits "~2.0.1" - isarray "~1.0.0" - process-nextick-args "~1.0.6" + isarray "0.0.1" string_decoder "~0.10.x" - util-deprecate "~1.0.1" readdirp@^2.2.1: version "2.2.1" @@ -16557,13 +12775,6 @@ readdirp@~3.2.0: 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" - integrity sha512-0xe001vZBnJEK+uKcj8qOhyAKPzIT+gStxWr3LCB0DwcXR5NZJ3IaC+yGnHCYzB/S7ov3m3EEbZI2zeNvX+hGQ== - 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" @@ -16581,7 +12792,7 @@ receptacle@^1.3.2: rechoir@^0.6.2: version "0.6.2" resolved "https://registry.yarnpkg.com/rechoir/-/rechoir-0.6.2.tgz#85204b54dba82d5742e28c96756ef43af50e3384" - integrity sha1-hSBLVNuoLVdC4oyWdW70OvUOM4Q= + integrity sha512-HFM8rkZ+i3zrV+4LQjwQ0W+ez98pApMGM3HUrN04j3CqzPOzl9nmP15Y8YXNm8QHGv/eacOVEjqhmWpkRV0NAw== dependencies: resolve "^1.1.6" @@ -16592,25 +12803,6 @@ recursive-readdir@^2.2.2: dependencies: minimatch "3.0.4" -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== - dependencies: - get-params "^0.1.2" - jsan "^3.1.13" - lodash "^4.17.11" - nanoid "^2.0.0" - remotedev-serialize "^0.1.8" - -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== - dependencies: - lodash "^4.17.19" - symbol-observable "^1.2.0" - redux-saga@1.0.0: version "1.0.0" resolved "https://registry.yarnpkg.com/redux-saga/-/redux-saga-1.0.0.tgz#acb8b3ed9180fecbe75f342011d75af3ac11045b" @@ -16629,9 +12821,9 @@ redux@^3.7.2: symbol-observable "^1.0.3" redux@^4.0.4: - version "4.1.1" - resolved "https://registry.yarnpkg.com/redux/-/redux-4.1.1.tgz#76f1c439bb42043f985fbd9bf21990e60bd67f47" - integrity sha512-hZQZdDEM25UY2P493kPYuKqviVwZ58lEmGQNeQ+gXa+U0gYPUBf7NKYazbe3m+bs/DzM/ahN12DbF+NG8i0CWw== + version "4.2.0" + resolved "https://registry.yarnpkg.com/redux/-/redux-4.2.0.tgz#46f10d6e29b6666df758780437651eeb2b969f13" + integrity sha512-oSBmcKKIuIR4ME29/AeNUnl5L+hvBq7OaJWzaptTQJAntaPvxIJqfnjbaEiCzzaIz+XmVILfqAM3Ob0aXLPfjA== dependencies: "@babel/runtime" "^7.9.2" @@ -16643,7 +12835,7 @@ regenerate@^1.2.1: regenerator-runtime@^0.10.5: version "0.10.5" resolved "https://registry.yarnpkg.com/regenerator-runtime/-/regenerator-runtime-0.10.5.tgz#336c3efc1220adcedda2c9fab67b5a7955a33658" - integrity sha1-M2w+/BIgrc7dosn6tntaeVWjNlg= + integrity sha512-02YopEIhAgiBHWeoTiA8aitHDt8z6w+rQqNuIftlM+ZtvSl/brTouaU7DW6GO/cHtvxJvS4Hwv2ibKdxIRi24w== regenerator-runtime@^0.11.0: version "0.11.1" @@ -16664,13 +12856,6 @@ regenerator-transform@^0.10.0: babel-types "^6.19.0" private "^0.1.6" -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" - 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" @@ -16679,13 +12864,14 @@ regex-not@^1.0.0, regex-not@^1.0.2: extend-shallow "^3.0.2" safe-regex "^1.1.0" -regexp.prototype.flags@^1.3.1: - version "1.3.1" - resolved "https://registry.yarnpkg.com/regexp.prototype.flags/-/regexp.prototype.flags-1.3.1.tgz#7ef352ae8d159e758c0eadca6f8fcb4eef07be26" - integrity sha512-JiBdRBq91WlY7uRJ0ds7R+dU02i6LKi8r3BuQhNXn+kmeLN+EfHhfjqMRis1zJxnlu88hq/4dx0P2OP3APRTOA== +regexp.prototype.flags@^1.4.1, regexp.prototype.flags@^1.4.3: + version "1.4.3" + resolved "https://registry.yarnpkg.com/regexp.prototype.flags/-/regexp.prototype.flags-1.4.3.tgz#87cab30f80f66660181a3bb7bf5981a872b367ac" + integrity sha512-fjggEOO3slI6Wvgjwflkc4NFRCTZAu5CnNfBd5qOMYhWdn67nJBBu34/TkD++eeFmd8C9r9jfXJ27+nSiRkSUA== dependencies: call-bind "^1.0.2" define-properties "^1.1.3" + functions-have-names "^1.2.2" regexpp@^2.0.1: version "2.0.1" @@ -16695,7 +12881,7 @@ regexpp@^2.0.1: regexpu-core@^2.0.0: version "2.0.0" resolved "https://registry.yarnpkg.com/regexpu-core/-/regexpu-core-2.0.0.tgz#49d038837b8dcf8bfa5b9a42139938e6ea2ae240" - integrity sha1-SdA4g3uNz4v6W5pCE5k45uoq4kA= + integrity sha512-tJ9+S4oKjxY8IZ9jmjnp/mtytu1u3iyIQAfmI51IKWH6bFf7XR1ybtaO6j7INhZKXOTYADk7V5qxaqLkmNxiZQ== dependencies: regenerate "^1.2.1" regjsgen "^0.2.0" @@ -16704,70 +12890,19 @@ regexpu-core@^2.0.0: regjsgen@^0.2.0: version "0.2.0" resolved "https://registry.yarnpkg.com/regjsgen/-/regjsgen-0.2.0.tgz#6c016adeac554f75823fe37ac05b92d5a4edb1f7" - integrity sha1-bAFq3qxVT3WCP+N6wFuS1aTtsfc= + integrity sha512-x+Y3yA24uF68m5GA+tBjbGYo64xXVJpbToBaWCoSNSc1hdk6dfctaRWrNFTVJZIIhL5GxW8zwjoixbnifnK59g== regjsparser@^0.1.4: version "0.1.5" resolved "https://registry.yarnpkg.com/regjsparser/-/regjsparser-0.1.5.tgz#7ee8f84dc6fa792d3fd0ae228d24bd949ead205c" - integrity sha1-fuj4Tcb6eS0/0K4ijSS9lJ6tIFw= + integrity sha512-jlQ9gYLfk2p3V5Ag5fYhA7fv7OHzd1KUH0PRP46xc3TgwjwgROIW572AfYg/X9kaNq/LJnu6oJcFRXlIrGoTRw== dependencies: jsesc "~0.5.0" -relay-compiler@11.0.2: - version "11.0.2" - resolved "https://registry.yarnpkg.com/relay-compiler/-/relay-compiler-11.0.2.tgz#e1e09a1c881d169a7a524ead728ad6a89c7bd4af" - integrity sha512-nDVAURT1YncxSiDOKa39OiERkAr0DUcPmlHlg+C8zD+EiDo2Sgczf2R6cDsN4UcDvucYtkLlDLFErPwgLs8WzA== - 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" - invariant "^2.2.4" - nullthrows "^1.1.1" - relay-runtime "11.0.2" - signedsource "^1.0.0" - yargs "^15.3.1" - -relay-runtime@11.0.2: - version "11.0.2" - resolved "https://registry.yarnpkg.com/relay-runtime/-/relay-runtime-11.0.2.tgz#c3650477d45665b9628b852b35f203e361ad55e8" - integrity sha512-xxZkIRnL8kNE1cxmwDXX8P+wSeWLR+0ACFyAiAhvfWWAyjXb+bhjJ2FSsRGlNYfkqaTNEuDqpnodQV1/fF7Idw== - dependencies: - "@babel/runtime" "^7.0.0" - fbjs "^3.0.0" - invariant "^2.2.4" - -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= + integrity sha512-/hS+Y0u3aOfIETiaiirUFwDBDzmXPvO+jAfKTitUngIPzdKc6Z0LoFjM/CK5PL4C+eKwHohlHAb6H0VFfmmUsw== repeat-element@^1.1.2: version "1.1.4" @@ -16777,31 +12912,26 @@ repeat-element@^1.1.2: 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= + integrity sha512-PV0dzCYDNfRi1jCDbJzpW7jNNDRuCOG/jI5ctQcGKt/clZD+YcPS3yIlWuTJMmESC8aevCFmWJy5wjAFgNqN6w== repeating@^2.0.0: version "2.0.1" resolved "https://registry.yarnpkg.com/repeating/-/repeating-2.0.1.tgz#5214c53a926d3552707527fbab415dbc08d06dda" - integrity sha1-UhTFOpJtNVJwdSf7q0FdvAjQbdo= + integrity sha512-ZqtSMuVybkISo2OWvqvm7iHSWngvdaW3IpsT9/uP8v4gMi591LY6h35wdOfvQdWCKFWZWm2Y1Opp4kV7vQKT6A== 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= - 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= + integrity sha512-ueoIoLo1OfB6b05COxAA9UpeoscNpYyM+BqYlA7H6LVF4hKGPXQQSSaD2YmvDVJMkk4UDpAHIeU1zG53IqjvlQ== dependencies: req-from "^2.0.0" 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= + integrity sha512-LzTfEVDVQHBRfjOUMgNBA+V6DWsSnoeKzf42J7l0xa/B4jyPOuuF5MlNSmomLNGemWTnV2TIdjSSLnEn95fOQA== dependencies: resolve-from "^3.0.0" @@ -16821,7 +12951,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.88.2: +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== @@ -16850,12 +12980,12 @@ request@^2.55.0, request@^2.79.0, request@^2.85.0, request@^2.88.0, request@^2.8 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= + integrity sha512-fGxEI7+wsG9xrvdjsrlmL22OMTTiHRwAMroiEeMgq8gzoLC/PQr7RsRDSTLUg/bZAZtF+TVIkHc6/4RIKrui+Q== require-from-string@^1.1.0: version "1.2.1" resolved "https://registry.yarnpkg.com/require-from-string/-/require-from-string-1.2.1.tgz#529c9ccef27380adfec9a2f965b649bbee636418" - integrity sha1-UpyczvJzgK3+yaL5ZbZJu+5jZBg= + integrity sha512-H7AkJWMobeskkttHyhTVtS0fxpFLjxhbfMa6Bk3wimP7sdPRGL3EyCg3sAQenFfAe+xQ+oAc85Nmtvq0ROM83Q== require-from-string@^2.0.0, require-from-string@^2.0.2: version "2.0.2" @@ -16865,51 +12995,41 @@ require-from-string@^2.0.0, require-from-string@^2.0.2: 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= + integrity sha512-IqSUtOVP4ksd1C/ej5zeEh/BIP2ajqpn8c5x+q99gvcIG/Qf0cud5raVnE/Dwd0ua9TXYDoDc0RE5hBSdz22Ug== 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== -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== +requires-port@^1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/requires-port/-/requires-port-1.0.0.tgz#925d2601d39ac485e091cf0da5c6e694dc3dcaff" + integrity sha512-KigOCHcocU3XODJxsu8i/j8T9tzT4adHiecwORRQ0ZZFcp7ahwXuRU1m+yuO90C5ZUyGeGfocHDI14M3L3yDAQ== + +reselect-tree@^1.3.7: + version "1.3.7" + resolved "https://registry.yarnpkg.com/reselect-tree/-/reselect-tree-1.3.7.tgz#c3eca58765d9df96bae0017f6ff3504c304cdea0" + integrity sha512-kZN+C1cVJ6fFN2smSb0l4UvYZlRzttgnu183svH4NrU22cBY++ikgr2QT75Uuk4MYpv5gXSVijw4c5U6cx6GKg== dependencies: debug "^3.1.0" - esdoc "^1.0.4" - json-pointer "^0.6.0" + json-pointer "^0.6.1" reselect "^4.0.0" - source-map-support "^0.5.3" reselect@^4.0.0: - version "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" + version "4.1.6" + resolved "https://registry.yarnpkg.com/reselect/-/reselect-4.1.6.tgz#19ca2d3d0b35373a74dc1c98692cdaffb6602656" + integrity sha512-ZovIuXqto7elwnxyXbBtCPo9YFEr3uJqj2rRbcOOog1bmu2Ag85M4hixSwFWyaBMKXNgvPaJ9OSu9SkBPIeJHQ== -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== +resolve-alpn@^1.0.0, resolve-alpn@^1.2.0: + version "1.2.1" + resolved "https://registry.yarnpkg.com/resolve-alpn/-/resolve-alpn-1.2.1.tgz#b7adbdac3546aaaec20b45e7d8265927072726f9" + integrity sha512-0a1F4l73/ZFZOakJnQ3FvkJ2+gSTQWz/r2KE5OdDY0TxPm5h4GkqkWWfM47T7HsbnOtcJVEF4epCVy6u7Q3K+g== resolve-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= + integrity sha512-GnlH6vxLymXJNMBo7XP1fJIzBFbdYt49CuTwmB/6N53t+kMPRMFKz783LlQ4tv28XoQfMWinAJX6WCGf2IlaIw== resolve-from@^4.0.0: version "4.0.0" @@ -16919,12 +13039,12 @@ resolve-from@^4.0.0: 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= + integrity sha512-ZuF55hVUQaaczgOIwqWzkEcEidmlD/xl44x1UZnhOXcYuFN2S6+rcxpG+C1N3So0wvNI3DmJICUFfu2SxhBmvg== resolve@1.1.x: version "1.1.7" resolved "https://registry.yarnpkg.com/resolve/-/resolve-1.1.7.tgz#203114d82ad2c5ed9e8e0411b3932875e889e97b" - integrity sha1-IDEU2CrSxe2ejgQRs5ModeiJ6Xs= + integrity sha512-9znBF0vBcaSN3W2j7wKvdERPwqTxSpCq+if5C0WoTCyV9n24rua28jeuQ2pL/HOf+yUe/Mef+H/5p60K0Id3bg== resolve@1.17.0: version "1.17.0" @@ -16933,33 +13053,42 @@ resolve@1.17.0: dependencies: path-parse "^1.0.6" -resolve@^1.1.6, resolve@^1.10.0, resolve@^1.14.2, resolve@^1.20.0, resolve@^1.3.3: - version "1.20.0" - resolved "https://registry.yarnpkg.com/resolve/-/resolve-1.20.0.tgz#629a013fb3f70755d6f0b7935cc1c2c5378b1975" - integrity sha512-wENBPt4ySzg4ybFQW2TT1zMQucPK95HSh/nq2CFTZVOGut2+pQvSsgtda4d26YrYcr067wjbmzOG8byDPBX63A== +resolve@^1.1.6, resolve@^1.10.0, resolve@^1.14.2, resolve@^1.20.0, resolve@^1.22.0, resolve@^1.3.3: + version "1.22.1" + resolved "https://registry.yarnpkg.com/resolve/-/resolve-1.22.1.tgz#27cb2ebb53f91abb49470a928bba7558066ac177" + integrity sha512-nBpuuYuY5jFsli/JIs1oldw6fOQCBioohqWZg/2hiaOybXOft4lonv85uDOKXdf8rhyK159cxU5cDcK/NKk8zw== dependencies: - is-core-module "^2.2.0" - path-parse "^1.0.6" + is-core-module "^2.9.0" + path-parse "^1.0.7" + supports-preserve-symlinks-flag "^1.0.0" resolve@^2.0.0-next.3: - version "2.0.0-next.3" - resolved "https://registry.yarnpkg.com/resolve/-/resolve-2.0.0-next.3.tgz#d41016293d4a8586a39ca5d9b5f15cbea1f55e46" - integrity sha512-W8LucSynKUIDu9ylraa7ueVZ7hc0uAgJBxVsQSKOXOyle8a93qXhcz+XAXZ8bIq2d6i4Ehddn6Evt+0/UwKk6Q== + version "2.0.0-next.4" + resolved "https://registry.yarnpkg.com/resolve/-/resolve-2.0.0-next.4.tgz#3d37a113d6429f496ec4752d2a2e58efb1fd4660" + integrity sha512-iMDbmAWtfU+MHpxt/I5iWI7cY6YVEZUQ3MBgPQ++XD1PELuJHIl82xBmObyP2KyQmkNB2dsqF7seoQQiAn5yDQ== dependencies: - is-core-module "^2.2.0" - path-parse "^1.0.6" + is-core-module "^2.9.0" + path-parse "^1.0.7" + supports-preserve-symlinks-flag "^1.0.0" responselike@1.0.2, responselike@^1.0.2: version "1.0.2" resolved "https://registry.yarnpkg.com/responselike/-/responselike-1.0.2.tgz#918720ef3b631c5642be068f15ade5a46f4ba1e7" - integrity sha1-kYcg7ztjHFZCvgaPFa3lpG9Loec= + integrity sha512-/Fpe5guzJk1gPqdJLJR5u7eG/gNY4nImjbRDaVWVMRhne55TCmj2i9Q+54PBRfatRC8v/rIiv9BN0pMd9OV5EQ== dependencies: lowercase-keys "^1.0.0" +responselike@^2.0.0: + version "2.0.1" + resolved "https://registry.yarnpkg.com/responselike/-/responselike-2.0.1.tgz#9a0bc8fdc252f3fb1cca68b016591059ba1422bc" + integrity sha512-4gl03wn3hj1HP3yzgdI7d3lCkF95F21Pz4BPGvKHinyQzALR5CapwC8yIi0Rh58DEMQ/SguC03wFj2k0M/mHhw== + dependencies: + lowercase-keys "^2.0.0" + 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= + integrity sha512-6IzJLuGi4+R14vwagDHX+JrXmPVtPpn4mffDJ1UdR7/Edm87fl6yi8mMBIVvFtJaNTUvjughmW4hwLhRG7gC1Q== dependencies: onetime "^2.0.0" signal-exit "^3.0.2" @@ -16977,11 +13106,6 @@ 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== - retimer@^3.0.0: version "3.0.0" resolved "https://registry.yarnpkg.com/retimer/-/retimer-3.0.0.tgz#98b751b1feaf1af13eb0228f8ea68b8f9da530df" @@ -16995,7 +13119,7 @@ retry@0.13.1, retry@^0.13.1: retry@^0.12.0: version "0.12.0" resolved "https://registry.yarnpkg.com/retry/-/retry-0.12.0.tgz#1b42a6266a21f07421d1b0b54b7dc167b01c013b" - integrity sha1-G0KmJmoh8HQh0bC1S33BZ7AcATs= + integrity sha512-9LkiTwjUh6rT555DtE9rTX+BKByPfrMzEAtnlEtdEwr3Nkffwiihqe2bWADg+OQRjt9gl6ICdmB/ZFDCGAtSow== reusify@^1.0.4: version "1.0.4" @@ -17010,7 +13134,7 @@ rfdc@^1.3.0: 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= + integrity sha512-yqINtL/G7vs2v+dFIZmFUDbnVyFUJFKd6gK22Kgo6R4jfJGFtisKyncWDDULgjfqf4ASQuIQyjJ7XZ+3aWpsAg== dependencies: align-text "^0.1.1" @@ -17048,24 +13172,6 @@ rlp@^2.0.0, rlp@^2.2.1, rlp@^2.2.2, rlp@^2.2.3, rlp@^2.2.4: dependencies: bn.js "^5.2.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== - -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-async@^2.2.0: version "2.4.1" resolved "https://registry.yarnpkg.com/run-async/-/run-async-2.4.1.tgz#8440eccf99ea3e70bd409d49aab88e10c189a455" @@ -17088,47 +13194,40 @@ run-parallel@^1.1.9: run-with-ganache@^0.1.1: version "0.1.1" resolved "https://registry.yarnpkg.com/run-with-ganache/-/run-with-ganache-0.1.1.tgz#55393006db4f18e2dca8084221aa4f8a10bf31fb" - integrity sha1-VTkwBttPGOLcqAhCIapPihC/Mfs= + integrity sha512-C9EFIRNhc8weUxZjuxOTiK3BFD2/6+1gtrjOTBqLJNw0SYeWOmLLR6xeeaM2HJk564hy4B42zoKSHoegU3gtbA== dependencies: colors "^1.1.2" ganache-cli "^6.0.3" -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 "*" - 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== -rxjs@6, rxjs@^6.4.0: +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: tslib "^1.9.0" -rxjs@^7.5.4: - version "7.5.4" - resolved "https://registry.yarnpkg.com/rxjs/-/rxjs-7.5.4.tgz#3d6bd407e6b7ce9a123e76b1e770dc5761aa368d" - integrity sha512-h5M3Hk78r6wAheJF0a5YahB1yRQKCsZ4MsGdZ5O9ETbVtjPcScGfrMmoOq7EBsCRzd4BDkvDJ7ogP8Sz5tTFiQ== +rxjs@^7.5.5: + version "7.5.6" + resolved "https://registry.yarnpkg.com/rxjs/-/rxjs-7.5.6.tgz#0446577557862afd6903517ce7cae79ecb9662bc" + integrity sha512-dnyv2/YsXhnm461G+R/Pe5bWP41Nm6LBXEYWI6eiFP4fiwx6WRI/CD0zbdVAudd9xwLEF2IDcKXLHit0FYjUzw== dependencies: tslib "^2.1.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== - -safe-buffer@^5.0.1, safe-buffer@^5.1.0, safe-buffer@^5.1.1, safe-buffer@^5.1.2, safe-buffer@^5.2.0, safe-buffer@^5.2.1, safe-buffer@~5.2.0: +safe-buffer@5.2.1, safe-buffer@^5.0.1, safe-buffer@^5.1.0, safe-buffer@^5.1.1, safe-buffer@^5.1.2, safe-buffer@^5.2.0, safe-buffer@^5.2.1, safe-buffer@~5.2.0: version "5.2.1" resolved "https://registry.yarnpkg.com/safe-buffer/-/safe-buffer-5.2.1.tgz#1eaf9fa9bdb1fdd4ec75f58f9cdb4e6b7827eec6" integrity sha512-rp3So07KcdmmKbGvgaNxQSJr7bGVSVk5S9Eq1F+ppbRo70+YeaDxkw5Dd8NPN+GD6bjnYm2VuPuCXmpuYvmCXQ== +safe-buffer@~5.1.0, safe-buffer@~5.1.1: + version "5.1.2" + resolved "https://registry.yarnpkg.com/safe-buffer/-/safe-buffer-5.1.2.tgz#991ec69d296e0313747d59bdfd2b745c35f8828d" + integrity sha512-Gd2UZBJDkXlY7GbJxfsE8/nvKkUEU1G38c1siN6QP6a9PT9MmHB8GnpscSmMJSoF8LOIrt8ud/wPtojys4G6+g== + safe-event-emitter@^1.0.1: version "1.0.1" resolved "https://registry.yarnpkg.com/safe-event-emitter/-/safe-event-emitter-1.0.1.tgz#5b692ef22329ed8f69fdce607e50ca734f6f20af" @@ -17139,7 +13238,7 @@ safe-event-emitter@^1.0.1: 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= + integrity sha512-aJXcif4xnaNUzvUuC5gcb46oTS7zvg4jpMTnuqtrEPlR3vFr4pxtdTwaF1Qs3Enjn9HK+ZlwQui+a7z0SywIzg== dependencies: ret "~0.1.10" @@ -17155,28 +13254,11 @@ sanitize-filename@^1.6.3: dependencies: truncate-utf8-bytes "^1.0.0" -sax@>=0.1.1, sax@^1.1.4, sax@^1.2.4: +sax@>=0.1.1, 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== -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== - 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== - -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== - sc-istanbul@^0.4.5: version "0.4.6" resolved "https://registry.yarnpkg.com/sc-istanbul/-/sc-istanbul-0.4.6.tgz#cf6784355ff2076f92d70d59047d71c13703e839" @@ -17197,15 +13279,10 @@ 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" - integrity sha1-uwBAvgMEPamgEqLOqfyfhSz8h9Q= + integrity sha512-d8DzQxNivoNDogyYmb/9RD5mEQE/Q7vG2dLDUgvfPmKL9xCVzgqUntOdS0me9Cq9Sh9VxIZuoNEFcsfyXRnyUw== scrypt-js@2.0.4: version "2.0.4" @@ -17222,21 +13299,7 @@ scryptsy@2.1.0: resolved "https://registry.yarnpkg.com/scryptsy/-/scryptsy-2.1.0.tgz#8d1e8d0c025b58fdd25b6fa9a0dc905ee8faa790" integrity sha512-1CdSqHQowJBnMAFyPEBRfqag/YP9OF394FV+4YREIJX4ljD7OxvQRDayyoyyCk+senRjSkP6VnUNQmVQqB6g7w== -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" - -secp256k1@^4.0.0, secp256k1@^4.0.1: +secp256k1@4.0.2: version "4.0.2" resolved "https://registry.yarnpkg.com/secp256k1/-/secp256k1-4.0.2.tgz#15dd57d0f0b9fdb54ac1fa1694f40e5e9a54f4a1" integrity sha512-UDar4sKvWAksIlfX3xIaQReADn+WFnHvbVujpcbr+9Sf/69odMwy2MUsz5CKLQgX9nsIyrjuxL2imVyoNHa3fg== @@ -17245,10 +13308,14 @@ secp256k1@^4.0.0, 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== +secp256k1@^4.0.1: + version "4.0.3" + resolved "https://registry.yarnpkg.com/secp256k1/-/secp256k1-4.0.3.tgz#c4559ecd1b8d3c1827ed2d1b94190d69ce267303" + integrity sha512-NLZVf+ROMxwtEj3Xa562qgv2BK5e2WNmXPiOdVIPLgs6lyTzMvBq0aWTYMI5XCP9jZMVKOcqZLw/Wc4vDkuxhA== + dependencies: + elliptic "^6.5.4" + node-addon-api "^2.0.0" + node-gyp-build "^4.2.0" seek-bzip@^1.0.5: version "1.0.6" @@ -17257,11 +13324,6 @@ seek-bzip@^1.0.5: dependencies: commander "^2.8.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= - semaphore@>=1.0.1, semaphore@^1.0.3, semaphore@^1.1.0: version "1.1.0" resolved "https://registry.yarnpkg.com/semaphore/-/semaphore-1.1.0.tgz#aaad8b86b20fe8e9b32b16dc2ee682a8cd26a8aa" @@ -17275,78 +13337,73 @@ semaphore@>=1.0.1, semaphore@^1.0.3, semaphore@^1.1.0: semver@5.3.0: version "5.3.0" resolved "https://registry.yarnpkg.com/semver/-/semver-5.3.0.tgz#9b2ce5d3de02d17c6012ad326aa6b4d0cf54f94f" - integrity sha1-myzl094C0XxgEq0yaqa00M9U+U8= + integrity sha512-mfmm3/H9+67MCVix1h+IXTpDwL6710LyHuk7+cWC9T1mE0qz4iHhh6r4hU2wrIT9iTsAAC2XQRvfblL028cpLw== 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== -semver@7.0.0: - version "7.0.0" - resolved "https://registry.yarnpkg.com/semver/-/semver-7.0.0.tgz#5f3ca35761e47e05b206c6daff2cf814f0316b8e" - integrity sha512-+GB6zVA9LWh6zovYQLALHwv5rb2PHGlJi3lfiqIHxR0uuwCgefcOJc59v9fv1w8GbStwxuuqqAjI9NMAOOgq1A== +semver@7.3.7, semver@^7.3.4, semver@^7.3.5, semver@^7.3.7: + version "7.3.7" + resolved "https://registry.yarnpkg.com/semver/-/semver-7.3.7.tgz#12c5b649afdbf9049707796e22a4028814ce523f" + integrity sha512-QlYTucUYOews+WeEujDoEGziz4K6c47V/Bd+LjSSYcA94p+DmINdf7ncaUinThfvZyu13lN9OY1XDxt8C0Tw0g== + dependencies: + lru-cache "^6.0.0" semver@^6.1.1, semver@^6.1.2, semver@^6.3.0: version "6.3.0" resolved "https://registry.yarnpkg.com/semver/-/semver-6.3.0.tgz#ee0a64c8af5e8ceea67687b133761e1becbd1d3d" integrity sha512-b39TBaTSfV6yBrapU89p5fKekE2m/NwnDocOVruQFS1/veMgdzuPcnOM34M6CwxW8jH/lxEa5rBoDeUwu5HHTw== -semver@^7.3.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" - semver@~5.4.1: version "5.4.1" resolved "https://registry.yarnpkg.com/semver/-/semver-5.4.1.tgz#e059c09d8571f0540823733433505d3a2f00b18e" integrity sha512-WfG/X9+oATh81XtllIo/I8gOiY9EXRdv1cQdyykeXK17YcUW3EXUAi2To4pcH6nZtJPr7ZOpM5OMyWJZm+8Rsg== -send@0.17.1: - version "0.17.1" - resolved "https://registry.yarnpkg.com/send/-/send-0.17.1.tgz#c1d8b059f7900f7466dd4938bdc44e11ddb376c8" - integrity sha512-BsVKsiGcQMFwT8UxypobUKyv7irCNRHk1T0G680vk88yf6LBByGcZJOTJCrTP2xVN6yI+XjPJcNuE3V4fT9sAg== +send@0.18.0: + version "0.18.0" + resolved "https://registry.yarnpkg.com/send/-/send-0.18.0.tgz#670167cc654b05f5aa4a767f9113bb371bc706be" + integrity sha512-qqWzuOjSFOuqPjFe4NOsMLafToQQwBSOEpS+FwEt3A2V3vKubTquT3vmLTQpFgMXp8AlFWFuP1qKaJZOtPpVXg== dependencies: debug "2.6.9" - depd "~1.1.2" - destroy "~1.0.4" + depd "2.0.0" + destroy "1.2.0" encodeurl "~1.0.2" escape-html "~1.0.3" etag "~1.8.1" fresh "0.5.2" - http-errors "~1.7.2" + http-errors "2.0.0" mime "1.6.0" - ms "2.1.1" - on-finished "~2.3.0" + ms "2.1.3" + on-finished "2.4.1" range-parser "~1.2.1" - statuses "~1.5.0" + statuses "2.0.1" 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= + integrity sha512-ENl7cYHaK/Ktwk5OTD+aDbQ3uC8IByu/6Bkg+HDv8Mm+XnBnppVNalcfJTNsp1ibstKh030/JKQQWglDvtKwEQ== dependencies: no-case "^2.2.0" upper-case-first "^1.1.2" -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== +serialize-javascript@6.0.0: + version "6.0.0" + resolved "https://registry.yarnpkg.com/serialize-javascript/-/serialize-javascript-6.0.0.tgz#efae5d88f45d7924141da8b5c3a7a7e663fefeb8" + integrity sha512-Qr3TosvguFt8ePWqsvRfrKyQXIiW+nGbYpy8XK24NQHE83caxWt+mIymTT19DGFbNWNLfEwsrkSmN64lVWB9ag== dependencies: randombytes "^2.1.0" -serve-static@1.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== +serve-static@1.15.0: + version "1.15.0" + resolved "https://registry.yarnpkg.com/serve-static/-/serve-static-1.15.0.tgz#faaef08cffe0a1a62f60cad0c4e513cff0ac9540" + integrity sha512-XGuRDNjXUijsUL0vl6nSD7cwURuzEgglbOaFuZM9g3kwDXOWVTck0jLzjPzGD+TazWbboZYu52/9/XPdUgne9g== dependencies: encodeurl "~1.0.2" escape-html "~1.0.3" parseurl "~1.3.3" - send "0.17.1" + send "0.18.0" servify@^0.1.12: version "0.1.12" @@ -17362,7 +13419,7 @@ servify@^0.1.12: 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= + integrity sha512-KiKBS8AnWGEyLzofFfmvKwpdPzqiy16LvQfK3yv/fVH7Bj13/wl3JSR1J+rfgRE9q7xUJK4qvgS8raSOeLUehw== set-delayed-interval@^1.0.0: version "1.0.0" @@ -17372,7 +13429,7 @@ set-delayed-interval@^1.0.0: set-immediate-shim@^1.0.1: version "1.0.1" resolved "https://registry.yarnpkg.com/set-immediate-shim/-/set-immediate-shim-1.0.1.tgz#4b2b1b27eb808a9f8dcc481a58e5e56f599f3f61" - integrity sha1-SysbJ+uAip+NzEgaWOXlb1mfP2E= + integrity sha512-Li5AOqrZWCVA2n5kryzEmqai6bKSIvpz5oUJHPVj6+dsbD3X1ixtsY5tEnsaNpH3pFAHmG8eIHUrtEtohrg+UQ== set-value@^2.0.0, set-value@^2.0.1: version "2.0.1" @@ -17387,17 +13444,12 @@ set-value@^2.0.0, set-value@^2.0.1: setimmediate@1.0.4: version "1.0.4" resolved "https://registry.yarnpkg.com/setimmediate/-/setimmediate-1.0.4.tgz#20e81de622d4a02588ce0c8da8973cbcf1d3138f" - integrity sha1-IOgd5iLUoCWIzgyNqJc8vPHTE48= + integrity sha512-/TjEmXQVEzdod/FFskf3o7oOAsGhHf2j1dZqRFbDzq4F3mvvxflIIi4Hd3bLQE9y/CpwqfSQam5JakI/mi3Pog== -setimmediate@^1.0.4, setimmediate@^1.0.5: +setimmediate@^1.0.5: version "1.0.5" resolved "https://registry.yarnpkg.com/setimmediate/-/setimmediate-1.0.5.tgz#290cbb232e306942d7d7ea9b83732ab7856f8285" - integrity sha1-KQy7Iy4waULX1+qbg3Mqt4VvgoU= - -setprototypeof@1.1.1: - version "1.1.1" - resolved "https://registry.yarnpkg.com/setprototypeof/-/setprototypeof-1.1.1.tgz#7e95acb24aa92f5885e0abef5ba131330d4ae683" - integrity sha512-JvdAWfbXeIGaZ9cILp38HntZSFSo3mWg6xGcJJsd+d4aRMOqauag1C63dJfDw7OaMYwEbHMOxEZ1lqVRYP2OAw== + integrity sha512-MATJdZp8sLqDl/68LfQmbP8zKPLQNV6BIZoIgrscFDQ+RsvK/BxeDQOgyxKKoh0y/8h3BqVFnCqQ/gd+reiIXA== setprototypeof@1.2.0: version "1.2.0" @@ -17415,7 +13467,7 @@ sha.js@^2.4.0, sha.js@^2.4.11, sha.js@^2.4.8: sha1@^1.1.1: version "1.1.1" resolved "https://registry.yarnpkg.com/sha1/-/sha1-1.1.1.tgz#addaa7a93168f393f19eb2b15091618e2700f848" - integrity sha1-rdqnqTFo85PxnrKxUJFhjicA+Eg= + integrity sha512-dZBS6OrMjtgVkopB1Gmo4RQCDKiZsqcpAQpkV/aaj+FCrCg8r4I4qMkDPQjBgLIxlmu9k4nUbWq6ohXahOneYA== dependencies: charenc ">= 0.0.1" crypt ">= 0.0.1" @@ -17435,7 +13487,7 @@ shallowequal@^1.0.2: 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= + integrity sha512-EV3L1+UQWGor21OmnvojK36mhg+TyIKDh3iFBKBohr5xeXIhNBcx8oWdgkTEEQ+BEFFYdLRuqMfd5L84N1V5Vg== dependencies: shebang-regex "^1.0.0" @@ -17449,7 +13501,7 @@ shebang-command@^2.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= + integrity sha512-wpoSFAxys6b2a2wHZ1XpDSgD7N9iVjg29Ph9uV/uaP9Ex/KXlkTZTeddxDPSYQpgvzKLGJke2UU0AzoGCjNIvQ== shebang-regex@^3.0.0: version "3.0.0" @@ -17459,16 +13511,16 @@ shebang-regex@^3.0.0: shelljs@0.7.8: version "0.7.8" resolved "https://registry.yarnpkg.com/shelljs/-/shelljs-0.7.8.tgz#decbcf874b0d1e5fb72e14b164a9683048e9acb3" - integrity sha1-3svPh0sNHl+3LhSxZKloMEjprLM= + integrity sha512-/YF5Uk8hcwi7ima04ppkbA4RaRMdPMBfwAvAf8sufYOxsJRtbdoBsT8vGvlb+799BrlGdYrd+oczIA2eN2JdWA== dependencies: glob "^7.0.0" interpret "^1.0.0" rechoir "^0.6.2" shelljs@^0.8.3: - version "0.8.4" - resolved "https://registry.yarnpkg.com/shelljs/-/shelljs-0.8.4.tgz#de7684feeb767f8716b326078a8a00875890e3c2" - integrity sha512-7gk3UZ9kOfPLIAbslLzyWeGiEqx9e3rxwZM0KE6EL8GlGwjym9Mrlx5/p33bWTu9YG6vcS4MBxYZDHYr5lr8BQ== + version "0.8.5" + resolved "https://registry.yarnpkg.com/shelljs/-/shelljs-0.8.5.tgz#de055408d8361bed66c669d2f000538ced8ee20c" + integrity sha512-TiwcRcrkhHvbrZbnRcFYMLl30Dfov3HKqzp5tO5b4pt6G/SezKcYhmDg15zXVBswHmctSAQKznqNW2LO5tTDow== dependencies: glob "^7.0.0" interpret "^1.0.0" @@ -17488,37 +13540,20 @@ side-channel@^1.0.4: get-intrinsic "^1.0.2" object-inspect "^1.9.0" -signal-exit@^3.0.0, signal-exit@^3.0.2: - version "3.0.5" - resolved "https://registry.yarnpkg.com/signal-exit/-/signal-exit-3.0.5.tgz#9e3e8cc0c75a99472b44321033a7702e7738252f" - integrity sha512-KWcOiKeQj6ZyXx7zq4YxSMgHRlod4czeBQZrPb8OKcohcqAXShm7E20kEMle9WBt26hFcAf0qLOcp5zmY7kOqQ== - -signal-exit@^3.0.3: +signal-exit@^3.0.0, signal-exit@^3.0.2, signal-exit@^3.0.3: version "3.0.7" resolved "https://registry.yarnpkg.com/signal-exit/-/signal-exit-3.0.7.tgz#a9a1767f8af84155114eaabd73f99273c8f59ad9" integrity sha512-wnD2ZE+l+SPC/uoS0vXeE9L1+0wuaMqKlfz9AMUo38JsyLSBWSFcHR1Rri62LZc12vLr1gb3jl7iwQhgwpAbGQ== -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" - integrity sha1-HdrOSYF5j5O9gzlzgD2A1S6TrWo= - simple-concat@^1.0.0: version "1.0.1" resolved "https://registry.yarnpkg.com/simple-concat/-/simple-concat-1.0.1.tgz#f46976082ba35c2263f1c8ab5edfe26c41c9552f" integrity sha512-cSFtAPtRhljv69IK0hTVZQ+OfE9nePi/rtJmw5UjHeVyVroEqJXP1sFztKUy1qU+xvz3u/sfYJLa947b7nAN2Q== simple-get@^2.7.0: - version "2.8.1" - resolved "https://registry.yarnpkg.com/simple-get/-/simple-get-2.8.1.tgz#0e22e91d4575d87620620bc91308d57a77f44b5d" - integrity sha512-lSSHRSw3mQNUGPAYRqo7xy9dhKmxFXIjLjp4KHpf99GEH2VH7C3AM+Qfx6du6jhfUi6Vm7XnbEVEf7Wb6N8jRw== + version "2.8.2" + resolved "https://registry.yarnpkg.com/simple-get/-/simple-get-2.8.2.tgz#5708fb0919d440657326cd5fe7d2599d07705019" + integrity sha512-Ijd/rV5o+mSBBs4F/x9oDPtTx9Zb6X9brmnXvMW4J7IR15ngi9q5xxqWBKU744jTZiaXtxaPL7uHG6vtN8kUkw== dependencies: decompress-response "^3.3.0" once "^1.3.1" @@ -17527,7 +13562,7 @@ simple-get@^2.7.0: slash@^1.0.0: version "1.0.0" resolved "https://registry.yarnpkg.com/slash/-/slash-1.0.0.tgz#c41f2f6c39fc16d1cd17ad4b5d896114ae470d55" - integrity sha1-xB8vbDn8FtHNF61LXYlhFK5HDVU= + integrity sha512-3TYDR7xWt4dIqV2JauJr+EJeW356RXijHeUlO+8djJ+uBXPn8/2dpzBc8yQhh583sVvc9CvFAeQVgijsH+PNNg== slash@^2.0.0: version "2.0.0" @@ -17577,7 +13612,7 @@ slice-ansi@^5.0.0: 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= + integrity sha512-FMR5YoPFwOLuh4rRz92dywJjyKYZNLpMn1R5ujVpIYkbA9p01fq8RMg0FkO4M+Yobt4MjHeLTJVm5xFFBHSV2Q== dependencies: no-case "^2.2.0" @@ -17612,41 +13647,23 @@ snapdragon@^0.8.1: use "^3.1.0" socket.io-client@^4.1.2: - version "4.4.1" - resolved "https://registry.yarnpkg.com/socket.io-client/-/socket.io-client-4.4.1.tgz#b6aa9448149d09b8d0b2bbf3d2fac310631fdec9" - integrity sha512-N5C/L5fLNha5Ojd7Yeb/puKcPWWcoB/A09fEjjNsg91EDVr5twk/OEyO6VT9dlLSUNY85NpW6KBhVMvaLKQ3vQ== + version "4.5.2" + resolved "https://registry.yarnpkg.com/socket.io-client/-/socket.io-client-4.5.2.tgz#9481518c560388c980c88b01e3cf62f367f04c96" + integrity sha512-naqYfFu7CLDiQ1B7AlLhRXKX3gdeaIMfgigwavDzgJoIUYulc1qHH5+2XflTsXTPY7BlPH5rppJyUjhjrKQKLg== dependencies: - "@socket.io/component-emitter" "~3.0.0" - backo2 "~1.0.2" + "@socket.io/component-emitter" "~3.1.0" debug "~4.3.2" - engine.io-client "~6.1.1" - parseuri "0.0.6" - socket.io-parser "~4.1.1" + engine.io-client "~6.2.1" + socket.io-parser "~4.2.0" -socket.io-parser@~4.1.1: - version "4.1.2" - resolved "https://registry.yarnpkg.com/socket.io-parser/-/socket.io-parser-4.1.2.tgz#0a97d4fb8e67022158a568450a6e41887e42035e" - integrity sha512-j3kk71QLJuyQ/hh5F/L2t1goqzdTL0gvDzuhTuNSwihfuFUrcSji0qFZmJJPtG6Rmug153eOPsUizeirf1IIog== +socket.io-parser@~4.2.0: + version "4.2.1" + resolved "https://registry.yarnpkg.com/socket.io-parser/-/socket.io-parser-4.2.1.tgz#01c96efa11ded938dcb21cbe590c26af5eff65e5" + integrity sha512-V4GrkLy+HeF1F/en3SpUaM+7XxYXpuMUWLGde1kSSh5nQMN4hLrbPIkD+otwh6q9R6NOQBN4AMaOZ2zVjui82g== dependencies: - "@socket.io/component-emitter" "~3.0.0" + "@socket.io/component-emitter" "~3.1.0" debug "~4.3.1" -socketcluster-client@^14.2.1: - version "14.3.2" - resolved "https://registry.yarnpkg.com/socketcluster-client/-/socketcluster-client-14.3.2.tgz#c0d245233b114a4972857dc81049c710b7691fb7" - integrity sha512-xDtgW7Ss0ARlfhx53bJ5GY5THDdEOeJnT+/C9Rmrj/vnZr54xeiQfrCZJbcglwe732nK3V+uZq87IvrRl7Hn4g== - 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.5.0" - solc@0.6.8: version "0.6.8" resolved "https://registry.yarnpkg.com/solc/-/solc-0.6.8.tgz#accf03634554938e166ba9b9853d17ca5c728131" @@ -17695,11 +13712,11 @@ solhint-plugin-prettier@^0.0.5: prettier-linter-helpers "^1.0.0" solhint@^3.3.5: - version "3.3.6" - resolved "https://registry.yarnpkg.com/solhint/-/solhint-3.3.6.tgz#abe9af185a9a7defefba480047b3e42cbe9a1210" - integrity sha512-HWUxTAv2h7hx3s3hAab3ifnlwb02ZWhwFU/wSudUHqteMS3ll9c+m1FlGn9V8ztE2rf3Z82fQZA005Wv7KpcFA== + version "3.3.7" + resolved "https://registry.yarnpkg.com/solhint/-/solhint-3.3.7.tgz#b5da4fedf7a0fee954cb613b6c55a5a2b0063aa7" + integrity sha512-NjjjVmXI3ehKkb3aNtRJWw55SUVJ8HMKKodwe0HnejA+k0d2kmhw7jvpa+MCTbcEgt8IWSwx0Hu6aCo/iYOZzQ== dependencies: - "@solidity-parser/parser" "^0.13.2" + "@solidity-parser/parser" "^0.14.1" ajv "^6.6.1" antlr4 "4.7.1" ast-parents "0.0.1" @@ -17717,9 +13734,9 @@ solhint@^3.3.5: prettier "^1.14.3" solidity-ast@^0.4.15: - version "0.4.28" - resolved "https://registry.yarnpkg.com/solidity-ast/-/solidity-ast-0.4.28.tgz#5589998512b9a3602e6ba612cbe7fed7401294f4" - integrity sha512-RtZCP5tSvZMadVtg9/IfLmAMKDOnQEvG2HA6VnPuoTMxqxsbbn4lQy8jgH3RVbqW0eO1hd7cSCKecb72/OeOIw== + version "0.4.35" + resolved "https://registry.yarnpkg.com/solidity-ast/-/solidity-ast-0.4.35.tgz#82e064b14dc989338123264bde2235cad751f128" + integrity sha512-F5bTDLh3rmDxRmLSrs3qt3nvxJprWSEkS7h2KmuXDx7XTfJ6ZKVTV1rtPIYCqJAuPsU/qa8YUeFn7jdOAZcTPA== solidity-comments-extractor@^0.0.7: version "0.0.7" @@ -17727,17 +13744,16 @@ solidity-comments-extractor@^0.0.7: integrity sha512-wciNMLg/Irp8OKGrh3S2tfvZiZ0NEyILfcRCXCD4mp7SgK/i9gzLfhY2hY7VMCQJ3kH9UB9BzNdibIVMchzyYw== solidity-coverage@^0.7.16: - version "0.7.17" - resolved "https://registry.yarnpkg.com/solidity-coverage/-/solidity-coverage-0.7.17.tgz#5139de8f6666d4755d88f453d8e35632a7bb3444" - integrity sha512-Erw2hd2xdACAvDX8jUdYkmgJlIIazGznwDJA5dhRaw4def2SisXN9jUjneeyOZnl/E7j6D3XJYug4Zg9iwodsg== + version "0.7.22" + resolved "https://registry.yarnpkg.com/solidity-coverage/-/solidity-coverage-0.7.22.tgz#168f414be4c0f5303addcf3ab9714cf64f72c080" + integrity sha512-I6Zd5tsFY+gmj1FDIp6w7OrUePx6ZpMgKQZg7dWgPaQHePLi3Jk+iJ8lwZxsWEoNy2Lcv91rMxATWHqRaFdQpw== dependencies: - "@solidity-parser/parser" "^0.13.2" + "@solidity-parser/parser" "^0.14.0" "@truffle/provider" "^0.2.24" chalk "^2.4.2" death "^1.1.0" detect-port "^1.3.0" fs-extra "^8.1.0" - ganache-cli "^6.12.2" ghost-testrpc "^0.0.2" global-modules "^2.0.0" globby "^10.0.1" @@ -17754,21 +13770,21 @@ solidity-coverage@^0.7.16: sort-keys-length@^1.0.0: version "1.0.1" resolved "https://registry.yarnpkg.com/sort-keys-length/-/sort-keys-length-1.0.1.tgz#9cb6f4f4e9e48155a6aa0671edd336ff1479a188" - integrity sha1-nLb09OnkgVWmqgZx7dM2/xR5oYg= + integrity sha512-GRbEOUqCxemTAk/b32F2xa8wDTs+Z1QHOkbhJDQTvv/6G3ZkbJ+frYWsTcc7cBB3Fu4wy4XlLCuNtJuMn7Gsvw== dependencies: sort-keys "^1.0.0" sort-keys@^1.0.0: version "1.1.2" resolved "https://registry.yarnpkg.com/sort-keys/-/sort-keys-1.1.2.tgz#441b6d4d346798f1b4e49e8920adfba0e543f9ad" - integrity sha1-RBttTTRnmPG05J6JIK37oOVD+a0= + integrity sha512-vzn8aSqKgytVik0iwdBEi+zevbTYZogewTUM6dtpmGwEcdzbub/TX4bCzRhebDCRC3QzXgJsLRKB2V/Oof7HXg== dependencies: is-plain-obj "^1.0.0" sort-keys@^2.0.0: version "2.0.0" resolved "https://registry.yarnpkg.com/sort-keys/-/sort-keys-2.0.0.tgz#658535584861ec97d730d6cf41822e1f56684128" - integrity sha1-ZYU1WEhh7JfXMNbPQYIuH1ZoQSg= + integrity sha512-/dPCrG1s3ePpWm6yBbxZq5Be1dXGLyLn9Z791chDC3NFrpkVbWGzkBwPN1knaciexFXgRJ7hzdnwZ4stHSDmjg== dependencies: is-plain-obj "^1.0.0" @@ -17779,12 +13795,7 @@ sort-keys@^4.2.0: dependencies: is-plain-obj "^2.0.0" -source-list-map@^2.0.0: - version "2.0.1" - resolved "https://registry.yarnpkg.com/source-list-map/-/source-list-map-2.0.1.tgz#3993bd873bfc48479cca9ea3a547835c7c154b34" - integrity sha512-qnQ7gVMxGNxsiL4lEuJwe/To8UnK7fAnmbGEEH8RpLouuKbeEm0lhbQVFIrNSuB+G7tVrAlVsZgETT5nljf+Iw== - -source-map-resolve@^0.5.0, source-map-resolve@^0.5.2: +source-map-resolve@^0.5.0: 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== @@ -17810,10 +13821,10 @@ source-map-support@^0.4.15: dependencies: source-map "^0.5.6" -source-map-support@^0.5, source-map-support@^0.5.13, source-map-support@^0.5.19, source-map-support@^0.5.3: - version "0.5.20" - resolved "https://registry.yarnpkg.com/source-map-support/-/source-map-support-0.5.20.tgz#12166089f8f5e5e8c56926b377633392dd2cb6c9" - integrity sha512-n1lZZ8Ve4ksRqizaBQgxXDgKwttHDhyfQjA6YZZn8+AroHbsIz+JjwxQDxbp+7y5OYCI8t1Yk7etjD9CRd2hIw== +source-map-support@^0.5, source-map-support@^0.5.13, source-map-support@^0.5.19: + version "0.5.21" + resolved "https://registry.yarnpkg.com/source-map-support/-/source-map-support-0.5.21.tgz#04fe7c7f9e1ed2d662233c28cb2b35b9f63f6e4f" + integrity sha512-uBHU3L3czsIyYXKX88fdrGovxdSCoTGDRZ6SYXtSRxLZUzHg5P/66Ht6uoUlHu9EZod+inXhKo3qQgwXUT/y1w== dependencies: buffer-from "^1.0.0" source-map "^0.6.0" @@ -17823,12 +13834,12 @@ source-map-url@^0.4.0: resolved "https://registry.yarnpkg.com/source-map-url/-/source-map-url-0.4.1.tgz#0af66605a745a5a2f91cf1bbf8a7afbc283dec56" integrity sha512-cPiFOTLUKvJFIg4SKVScy4ilPPW6rFgMgfuZJPNoDuMs3nC1HbMUycBoJw77xFIp6z1UJQJOfx6C9GMH80DiTw== -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: +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= + integrity sha512-LbrmJOMUSdEVxIKvdcJzQC+nQhe8FUZQTXQy6+I75skNgn3OoQ0DZA8YnFa7gp8tqtL3KPf1kmo0R5DoApeSGQ== -source-map@^0.6.0, source-map@^0.6.1, source-map@~0.6.0, source-map@~0.6.1: +source-map@^0.6.0, source-map@^0.6.1, source-map@~0.6.0: version "0.6.1" resolved "https://registry.yarnpkg.com/source-map/-/source-map-0.6.1.tgz#74722af32e9614e9c287a8d0bbde48b5e2f1a263" integrity sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g== @@ -17836,19 +13847,19 @@ source-map@^0.6.0, source-map@^0.6.1, source-map@~0.6.0, source-map@~0.6.1: 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= + integrity sha512-CBdZ2oa/BHhS4xj5DlhjWNHcan57/5YuvfdLf17iVmIpd9KRm+DFLmC6nBNj+6Ua7Kt3TmOjDpQT1aTYOQtoUA== dependencies: amdefine ">=0.0.4" 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= + integrity sha512-BpPFB0Oh83mi+6DRcFwxPx96f3OL8Tkq3hdvaHuXaQUsy5F3saI3zIPNQ/UsTQgyAXIHnML1waeCe1WoCPXbpQ== -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== +spark-md5@3.0.2: + version "3.0.2" + resolved "https://registry.yarnpkg.com/spark-md5/-/spark-md5-3.0.2.tgz#7952c4a30784347abcee73268e473b9c0167e3fc" + integrity sha512-wcFzz9cDfbuqe0FZzfi2or1sgyIrsDwmPwfZC4hiNidPdPINjeUwNfv5kldczoEAcjl9Y1L3SM7Uz2PUEQzxQw== sparse-array@^1.3.1: version "1.3.2" @@ -17877,18 +13888,9 @@ spdx-expression-parse@^3.0.0: spdx-license-ids "^3.0.0" spdx-license-ids@^3.0.0: - version "3.0.11" - resolved "https://registry.yarnpkg.com/spdx-license-ids/-/spdx-license-ids-3.0.11.tgz#50c0d8c40a14ec1bf449bae69a0ea4685a9d9f95" - integrity sha512-Ctl2BrFiM0X3MANYgj3CkygxhRmr9mi6xhejbdO960nF6EDJApTYpn0BQnDKlnNBULKiCN1n3w9EBkHK8ZWg+g== - -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" + version "3.0.12" + resolved "https://registry.yarnpkg.com/spdx-license-ids/-/spdx-license-ids-3.0.12.tgz#69077835abe2710b65f03969898b6637b505a779" + integrity sha512-rr+VVSXtRhO4OHbXUiAF7xW3Bo9DuuF6C5jH+q/x15j2jniycgKbxU09Hr0WqlSLUs4i4ltHGXqTe7VHclYWyA== split-string@^3.0.1, split-string@^3.0.2: version "3.1.0" @@ -17900,7 +13902,7 @@ split-string@^3.0.1, split-string@^3.0.2: sprintf-js@1.1.1: version "1.1.1" resolved "https://registry.yarnpkg.com/sprintf-js/-/sprintf-js-1.1.1.tgz#36be78320afe5801f6cea3ee78b6e5aab940ea0c" - integrity sha1-Nr54Mgr+WAH2zqPueLblqrlA6gw= + integrity sha512-h/U+VScR2Ft+aXDjGTLtguUEIrYuOjTj79BAOElUvdahYMaaa7SNLjJpOIn+Uzt0hsgHfYvlbcno3e9yXOSo8Q== sprintf-js@1.1.2: version "1.1.2" @@ -17910,7 +13912,7 @@ sprintf-js@1.1.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= + integrity sha512-D9cPgkvLlV3t3IzL0D0YLvGA9Ahk4PcvVwUbN0dSGr1aP0Nrt4AEnTUbuGvquEC0mA64Gqt1fzirlRs5ibXx8g== sqlite3@^4.0.0: version "4.2.0" @@ -17921,9 +13923,9 @@ sqlite3@^4.0.0: node-pre-gyp "^0.11.0" sshpk@^1.7.0: - version "1.16.1" - resolved "https://registry.yarnpkg.com/sshpk/-/sshpk-1.16.1.tgz#fb661c0bef29b39db40769ee39fa70093d6f6877" - integrity sha512-HXXqVUq7+pcKeLqqZj6mHFUMvXtOJt1uoUx09pFW6011inTMxqI8BA8PM95myrIyyKwdnzjdFjLiE6KBPVtJIg== + version "1.17.0" + resolved "https://registry.yarnpkg.com/sshpk/-/sshpk-1.17.0.tgz#578082d92d4fe612b13007496e543fa0fbcbe4c5" + integrity sha512-/9HIEs1ZXGhSPE8X6Ccm7Nam1z8KcoCqPdI7ecm1N33EzAetWahvQWVqLZtaZQ+IDKX4IyA2o0gBzqIMkAagHQ== dependencies: asn1 "~0.2.3" assert-plus "^1.0.0" @@ -17935,11 +13937,6 @@ 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== - stacktrace-parser@^0.1.10: version "0.1.10" resolved "https://registry.yarnpkg.com/stacktrace-parser/-/stacktrace-parser-0.1.10.tgz#29fb0cae4e0d0b85155879402857a1639eb6051a" @@ -17950,51 +13947,22 @@ stacktrace-parser@^0.1.10: 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= + integrity sha512-72E9+uLc27Mt718pMHt9VMNiAL4LMsmDbBva8mxWUCkT07fSzEGMYUCk0XWY6lp0j6RBAG4cJ3mWuZv2OE3s0g== dependencies: define-property "^0.2.5" object-copy "^0.1.0" -"statuses@>= 1.5.0 < 2", statuses@~1.5.0: - version "1.5.0" - resolved "https://registry.yarnpkg.com/statuses/-/statuses-1.5.0.tgz#161c7dac177659fd9811f43771fa99381478628c" - integrity sha1-Fhx9rBd2Wf2YEfQ3cfqZOBR4Yow= +statuses@2.0.1: + version "2.0.1" + resolved "https://registry.yarnpkg.com/statuses/-/statuses-2.0.1.tgz#55cb000ccf1d48728bd23c685a063998cf1a1b63" + integrity sha512-RwNA9Z/7PrK06rYLIzFMlaF+l73iwpzsqRIFgbMLbTcLD6cOao82TaWefPXQvB2fOC4AjuYSEndS7N/mTCbkdQ== 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= - -stoppable@^1.1.0: - version "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" + integrity sha512-ZnWpYnYugiOVEY5GkcuJK1io5V8QmNYChG62gSit9pQVGErXtrKuPC55ITaVSukmMta5qpMU7vqLt2Lnni4f/g== -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: +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== @@ -18006,15 +13974,10 @@ streaming-iterables@^6.0.0: resolved "https://registry.yarnpkg.com/streaming-iterables/-/streaming-iterables-6.2.0.tgz#e8079bc56272335b287e2f13274602fbef008e56" integrity sha512-3AYC8oB60WyD1ic7uHmN/vm2oRGzRnQ3XFBl/bFMDi1q1+nc5/vjMmiE4vroIya3jG59t87VpyAj/iXYxyw9AA== -streamsearch@0.1.2: - version "0.1.2" - resolved "https://registry.yarnpkg.com/streamsearch/-/streamsearch-0.1.2.tgz#808b9d0e56fc273d809ba57338e929919a1a9f1a" - integrity sha1-gIudDlb8Jz2Am6VzOOkpkZoanxo= - 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= + integrity sha512-R3f198pcvnB+5IpnBlRkphuE9n46WyVl8I39W/ZUTZLz4nqSP/oLYUrcnJrw462Ds8he4YKMov2efsTIw1BDGQ== string-argv@^0.3.1: version "0.3.1" @@ -18024,13 +13987,13 @@ string-argv@^0.3.1: 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= + integrity sha512-0XsVpQLnVCXHJfyEs8tC0zpTVIr5PKKsQtkT29IwupnPTjtPmQ3xT/4yCREF9hYkV/3M3kzcUTSAZT6a6h81tw== dependencies: code-point-at "^1.0.0" is-fullwidth-code-point "^1.0.0" strip-ansi "^3.0.0" -"string-width@^1.0.2 || 2", string-width@^2.0.0, string-width@^2.1.0, string-width@^2.1.1: +"string-width@^1.0.2 || 2", string-width@^2.1.0, string-width@^2.1.1: version "2.1.1" resolved "https://registry.yarnpkg.com/string-width/-/string-width-2.1.1.tgz#ab93f27a8dc13d28cac815c462143a6d9012ae9e" integrity sha512-nOqH59deCq9SRHlxq1Aw85Jnt4w6KvLKqWVik6oA9ZklXLNIOlqg4F2yrT1MVaTjAqvVwdfeZ7w7aCvJD7ugkw== @@ -18038,6 +14001,15 @@ string-width@^1.0.1: is-fullwidth-code-point "^2.0.0" strip-ansi "^4.0.0" +"string-width@^1.0.2 || 2 || 3 || 4", string-width@^4.1.0, string-width@^4.2.0, string-width@^4.2.3: + version "4.2.3" + resolved "https://registry.yarnpkg.com/string-width/-/string-width-4.2.3.tgz#269c7117d27b05ad2e536830a8ec895ef9c6d010" + integrity sha512-wKyQRQpjJ0sIp62ErSZdGsjMJWsap5oRNihHhu6G7JVO/9jIB6UyevL+tXuOqrng8j/cxKTWyWUwvSTriiZz/g== + dependencies: + emoji-regex "^8.0.0" + is-fullwidth-code-point "^3.0.0" + strip-ansi "^6.0.1" + string-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" @@ -18047,55 +14019,48 @@ 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.2.2, string-width@^4.2.3: - version "4.2.3" - resolved "https://registry.yarnpkg.com/string-width/-/string-width-4.2.3.tgz#269c7117d27b05ad2e536830a8ec895ef9c6d010" - integrity sha512-wKyQRQpjJ0sIp62ErSZdGsjMJWsap5oRNihHhu6G7JVO/9jIB6UyevL+tXuOqrng8j/cxKTWyWUwvSTriiZz/g== - dependencies: - emoji-regex "^8.0.0" - is-fullwidth-code-point "^3.0.0" - strip-ansi "^6.0.1" - string-width@^5.0.0: - version "5.1.0" - resolved "https://registry.yarnpkg.com/string-width/-/string-width-5.1.0.tgz#5ab00980cfb29f43e736b113a120a73a0fb569d3" - integrity sha512-7x54QnN21P+XL/v8SuNKvfgsUre6PXpN7mc77N3HlZv+f1SBRGmjxtOud2Z6FZ8DmdkD/IdjCaf9XXbnqmTZGQ== + version "5.1.2" + resolved "https://registry.yarnpkg.com/string-width/-/string-width-5.1.2.tgz#14f8daec6d81e7221d2a357e668cab73bdbca794" + integrity sha512-HnLOCR3vjcY8beoNLtcjZ5/nxn2afmME6lhrDrebokqMap+XbeW8n9TXpPDOqdGK5qcI3oT0GKTW6wC7EMiVqA== dependencies: eastasianwidth "^0.2.0" emoji-regex "^9.2.2" strip-ansi "^7.0.1" -string.prototype.matchall@^4.0.6: - version "4.0.6" - resolved "https://registry.yarnpkg.com/string.prototype.matchall/-/string.prototype.matchall-4.0.6.tgz#5abb5dabc94c7b0ea2380f65ba610b3a544b15fa" - integrity sha512-6WgDX8HmQqvEd7J+G6VtAahhsQIssiZ8zl7zKh1VDMFyL3hRTJP4FTNA3RbIp2TOQ9AYNDcc7e3fH0Qbup+DBg== +string.prototype.matchall@^4.0.7: + version "4.0.7" + resolved "https://registry.yarnpkg.com/string.prototype.matchall/-/string.prototype.matchall-4.0.7.tgz#8e6ecb0d8a1fb1fda470d81acecb2dba057a481d" + integrity sha512-f48okCX7JiwVi1NXCVWcFnZgADDC/n2vePlQ/KUCNqCikLLilQvwjMO8+BHVKvgzH0JB0J9LEPgxOGT02RoETg== dependencies: call-bind "^1.0.2" define-properties "^1.1.3" es-abstract "^1.19.1" get-intrinsic "^1.1.1" - has-symbols "^1.0.2" + has-symbols "^1.0.3" internal-slot "^1.0.3" - regexp.prototype.flags "^1.3.1" + regexp.prototype.flags "^1.4.1" side-channel "^1.0.4" -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== +string.prototype.trimend@^1.0.5: + version "1.0.5" + resolved "https://registry.yarnpkg.com/string.prototype.trimend/-/string.prototype.trimend-1.0.5.tgz#914a65baaab25fbdd4ee291ca7dde57e869cb8d0" + integrity sha512-I7RGvmjV4pJ7O3kdf+LXFpVfdNOxtCW/2C8f6jNiW4+PQchwxkCDzlk1/7p+Wl4bqFIZeF47qAHXLuHHWKAxog== dependencies: call-bind "^1.0.2" - define-properties "^1.1.3" + define-properties "^1.1.4" + es-abstract "^1.19.5" -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== +string.prototype.trimstart@^1.0.5: + version "1.0.5" + resolved "https://registry.yarnpkg.com/string.prototype.trimstart/-/string.prototype.trimstart-1.0.5.tgz#5466d93ba58cfa2134839f81d7f42437e8c01fef" + integrity sha512-THx16TJCGlsN0o6dl2o6ncWUsdgnLRSA23rRE5pyGBw/mLr3Ej/R2LaqCtgP8VNMGZsvMWnf9ooZPyY2bHvUFg== dependencies: call-bind "^1.0.2" - define-properties "^1.1.3" + define-properties "^1.1.4" + es-abstract "^1.19.5" -string_decoder@^1.0.0, string_decoder@^1.1.1: +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== @@ -18105,7 +14070,7 @@ string_decoder@^1.0.0, string_decoder@^1.1.1: 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= + integrity sha512-ev2QzSzWPYmy9GuqfIVildA4OdcGLeFZQrq5ys6RtiuF+RQQiZWr8TZNyAcuVXyQRYfEO+MsoB/1BuQVhOJuoQ== string_decoder@~1.1.1: version "1.1.1" @@ -18117,14 +14082,14 @@ string_decoder@~1.1.1: 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= + integrity sha512-VhumSSbBqDTP8p2ZLKj40UjBCV4+v8bUSEpUb4KjRgWk9pbqGF4REFj6KEagidb2f/M6AzC0EmFyDNGaw9OCzg== dependencies: ansi-regex "^2.0.0" 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= + integrity sha512-4XaJ2zQdCzROZDivEVIDPkcQn8LMFSa8kj8Gxb/Lnwzv9A8VctNZ+lfivC/sV3ivW8ElJTERXZoPBRrZKkNKow== dependencies: ansi-regex "^3.0.0" @@ -18149,25 +14114,17 @@ strip-ansi@^7.0.1: dependencies: ansi-regex "^6.0.1" -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= - dependencies: - first-chunk-stream "^1.0.0" - strip-bom "^2.0.0" - -strip-bom@2.X, strip-bom@^2.0.0: +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= + integrity sha512-kwrX1y7czp1E69n2ajbG65mIo9dqvJ+8aBQXOGVxqwvNbsXdFM6Lq37dLAY3mknUwru8CfcCbfOLL/gMo+fi3g== 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= + integrity sha512-vavAMRXOgBVNF6nyEEmL3DBK19iRpDcoIwW+swQ+CbGiu7lju6t+JklA1MHweoWtadgt4ISVUsXLyDq34ddcwA== strip-dirs@^2.0.0: version "2.1.0" @@ -18179,7 +14136,7 @@ strip-dirs@^2.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= + integrity sha512-7FCwGGmx8mD5xQd3RPUvnSpUXHM3BWuzjtpD4TXsfcZ9EL4azvVVUscFYwD9nx8Kh+uCBC00XBtAykoMHwTh8Q== strip-final-newline@^2.0.0: version "2.0.0" @@ -18189,24 +14146,24 @@ strip-final-newline@^2.0.0: 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= + integrity sha512-q8d4ue7JGEiVcypji1bALTos+0pWtyGlivAWyPuTkHzuTCJqrK9sWxYQZUq6Nq3cuyv3bm734IhHvHtGGURU6A== dependencies: is-hex-prefixed "1.0.0" 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= + integrity sha512-RsSNPLpq6YUL7QYy44RnPVTn/lcVZtb48Uof3X5JLbF4zD/Gs7ZFDv2HWol+leoQN2mT86LAzSshGfkTlSOpsA== 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= + integrity sha512-4gB8na07fecVVkOI6Rs4e7T6NOTki5EmL7TUduTs6bu3EdnSycntVJ4re8kgZA+wx9IueI2Y11bfbgwtzuE0KQ== -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-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== strip-outer@^1.0.0: version "1.0.1" @@ -18215,32 +14172,16 @@ strip-outer@^1.0.0: dependencies: escape-string-regexp "^1.0.2" -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== +sublevel-pouchdb@7.3.0: + version "7.3.0" + resolved "https://registry.yarnpkg.com/sublevel-pouchdb/-/sublevel-pouchdb-7.3.0.tgz#d27138c34d98c3d5c8c3ee85c1662add3ad04525" + integrity sha512-zp7u4jmv2N/s+dXZkWTtL4BjREs3SZ1nGBNNJ8RWX4yqN59oHgKmti4CfVOqfsAW9RMasmTqQAEPxL9hX8+CIA== dependencies: inherits "2.0.4" level-codec "9.0.2" ltgt "2.2.1" readable-stream "1.1.14" -subscriptions-transport-ws@^0.9.18, subscriptions-transport-ws@^0.9.19: - version "0.9.19" - resolved "https://registry.yarnpkg.com/subscriptions-transport-ws/-/subscriptions-transport-ws-0.9.19.tgz#10ca32f7e291d5ee8eb728b9c02e43c52606cdcf" - integrity sha512-dxdemxFFB0ppCLg10FTtRqH/31FNRL1y1BQv8209MK5I4CwALb7iihQg+7p65lFcIl8MHatINWBLOqpgU4Kyyw== - dependencies: - backo2 "^1.0.2" - eventemitter3 "^3.1.0" - iterall "^1.2.1" - symbol-observable "^1.0.4" - ws "^5.2.0 || ^6.0.0 || ^7.0.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== - supports-color@6.0.0: version "6.0.0" resolved "https://registry.yarnpkg.com/supports-color/-/supports-color-6.0.0.tgz#76cfe742cf1f41bb9b1c29ad03068c05b4c0e40a" @@ -18248,32 +14189,25 @@ supports-color@6.0.0: dependencies: has-flag "^3.0.0" -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== +supports-color@8.1.1: + version "8.1.1" + resolved "https://registry.yarnpkg.com/supports-color/-/supports-color-8.1.1.tgz#cd6fc17e28500cff56c1b86c0a7fd4a54a73005c" + integrity sha512-MpUEN2OodtUzxvKQl72cUF7RQ5EiHsGvSsVG0ia9c5RbWGL2CI4C7EpPS8UTBIplnlzZiNuV56w+FuNxy3ty2Q== dependencies: has-flag "^4.0.0" supports-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= + integrity sha512-KKNVtd6pCYgPIKU4cp2733HWYCpplQhddZLBUryaAHou723x+FRzQ5Df824Fj+IyyuiQTRoub4SnIFfIcrp70g== 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= + integrity sha512-Jds2VIYDrlp5ui7t8abHN2bjAu4LV/q4N2KivFPpGH0lrka0BMq/33AmECUXlKPcHigkNaqfXRENFju+rlcy+A== 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" @@ -18288,15 +14222,20 @@ supports-color@^7.1.0: dependencies: has-flag "^4.0.0" -supports-color@^9.2.1: - version "9.2.1" - resolved "https://registry.yarnpkg.com/supports-color/-/supports-color-9.2.1.tgz#599dc9d45acf74c6176e0d880bab1d7d718fe891" - integrity sha512-Obv7ycoCTG51N7y175StI9BlAXrmgZrFhZOb0/PyjHBher/NmsdBgbbQ1Inhq+gIhz6+7Gb+jWF2Vqi7Mf1xnQ== +supports-color@^9.2.2: + version "9.2.3" + resolved "https://registry.yarnpkg.com/supports-color/-/supports-color-9.2.3.tgz#a6e2c97fc20c80abecd69e50aebe4783ff77d45a" + integrity sha512-aszYUX/DVK/ed5rFLb/dDinVJrQjG/vmU433wtqVSD800rYsJNWxh2R3USV90aLSU+UsyQkbNeffVLzc6B6foA== + +supports-preserve-symlinks-flag@^1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/supports-preserve-symlinks-flag/-/supports-preserve-symlinks-flag-1.0.0.tgz#6eda4bd344a3c94aea376d4cc31bc77311039e09" + integrity sha512-ot0WnXS9fgdkgIcePe6RHNk1WA8+muPa6cSjeR3V8K27q9BB1rTE3R1p7Hv0z1ZyAc8s6Vvv8DIyWf681MAt0w== 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= + integrity sha512-BAmWG6/bx8syfc6qXPprof3Mn5vQgf5dwdUNJhsNqU9WdPt5P+ES/wQ5bxfijy8zwZgZZHslC3iAsxsuQMCzJQ== dependencies: lower-case "^1.1.1" upper-case "^1.1.1" @@ -18320,15 +14259,15 @@ swarm-js@0.1.39: xhr-request-promise "^0.1.2" 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== + version "0.1.42" + resolved "https://registry.yarnpkg.com/swarm-js/-/swarm-js-0.1.42.tgz#497995c62df6696f6e22372f457120e43e727979" + integrity sha512-BV7c/dVlA3R6ya1lMlSSNPLYrntt0LUq4YMgy3iwpCIc6rZnS5W2wUoctarZ5pXlpKtxDDf9hNziEkcfrxdhqQ== dependencies: bluebird "^3.5.0" buffer "^5.0.5" eth-lib "^0.1.26" fs-extra "^4.0.2" - got "^7.1.0" + got "^11.8.5" mime-types "^2.1.16" mkdirp-promise "^5.0.1" mock-fs "^4.1.0" @@ -18336,34 +14275,11 @@ swarm-js@^0.1.40: tar "^4.0.2" xhr-request "^1.0.1" -symbol-observable@^1.0.3, symbol-observable@^1.0.4, symbol-observable@^1.2.0: +symbol-observable@^1.0.3: 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@^4.0.0: - version "4.0.0" - resolved "https://registry.yarnpkg.com/symbol-observable/-/symbol-observable-4.0.0.tgz#5b425f192279e87f2f9b937ac8540d1984b39205" - integrity sha512-b19dMThMV4HVFynSAM1++gBHAbk2Tc/osgLIBZMKsyqh34jb2e8Os7T6ZW/Bt3pJFdBTd2JwAnAAEQV7rSNvcQ== - -"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= - -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== - dependencies: - buffer "^5.7.0" - node-fetch "^2.6.1" - sync-request@^6.0.0: version "6.1.0" resolved "https://registry.yarnpkg.com/sync-request/-/sync-request-6.1.0.tgz#e96217565b5e50bbffe179868ba75532fb597e68" @@ -18390,16 +14306,6 @@ table@^5.2.3: slice-ansi "^2.1.0" string-width "^3.0.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" @@ -18434,7 +14340,7 @@ testrpc@0.0.1: 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= + integrity sha512-N+8UisAXDGk8PFXP4HAzVR9nbfmVJ3zYLAWiTIoqC5v5isinhr+r5uaO8+7r3BMfuNIufIsA7RdpVgacC2cSpw== then-request@^6.0.0: version "6.0.2" @@ -18453,37 +14359,6 @@ then-request@^6.0.0: promise "^8.0.0" qs "^6.4.0" -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" - -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== - dependencies: - through2 "~2.0.0" - xtend "~4.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== - dependencies: - readable-stream "~2.3.6" - xtend "~4.0.1" - -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== - dependencies: - readable-stream "2 || 3" - through2@3.0.2: version "3.0.2" resolved "https://registry.yarnpkg.com/through2/-/through2-3.0.2.tgz#99f88931cfc761ec7678b41d5d7336b5b6a07bf4" @@ -18492,50 +14367,27 @@ through2@3.0.2: inherits "^2.0.4" readable-stream "2 || 3" -through2@^0.6.0: - version "0.6.5" - resolved "https://registry.yarnpkg.com/through2/-/through2-0.6.5.tgz#41ab9c67b29d57209071410e1d7a7a968cd3ad48" - integrity sha1-QaucZ7KdVyCQcUEOHXp6lozTrUg= - dependencies: - readable-stream ">=1.0.33-1 <1.1.0-0" - xtend ">=4.0.0 <4.1.0-0" - through@^2.3.6, 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= + integrity sha512-w89qg7PI8wAdvX60bMDP+bFoD5Dvhm9oLheFp5O4a2QF0cSBGsBX4qZmadPMvVqlLJBBci+WqGGOAPvcDeNSVg== thunky@^1.0.2: version "1.1.0" resolved "https://registry.yarnpkg.com/thunky/-/thunky-1.1.0.tgz#5abaf714a9405db0504732bbccd2cedd9ef9537d" integrity sha512-eHY7nBftgThBqOyHGVN+l8gF0BucP09fMo0oO/Lb0w1OF80dJv+lDVpXG60WMQvkcxAkNybKsrEIE3ZtKGmPrA== -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" - time-cache@^0.3.0: version "0.3.0" resolved "https://registry.yarnpkg.com/time-cache/-/time-cache-0.3.0.tgz#ed0dfcf0fda45cdc95fbd601fda830ebf1bd5d8b" - integrity sha1-7Q388P2kXNyV+9YB/agw6/G9XYs= + integrity sha512-/vreKr4tHo8bcgcRF0WzedPiiErDpX8FmBN8ddq5OhX7JmWtZVMp8HdwvHz9Fh/ZWZKX2ket8l/JaNVeL16Tew== dependencies: lodash.throttle "^4.1.1" 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= - -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" + integrity sha512-G7r3AhovYtr5YKOWQkta8RKAPb+J9IsO4uVmzjl8AZwfhs8UcUwTiD6gcJYSgOtzyjvQKrKYn41syHbUWMkafA== timeout-abort-controller@^3.0.0: version "3.0.0" @@ -18544,13 +14396,6 @@ timeout-abort-controller@^3.0.0: dependencies: retimer "^3.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" - timestamp-nano@^1.0.0: version "1.0.0" resolved "https://registry.yarnpkg.com/timestamp-nano/-/timestamp-nano-1.0.0.tgz#03bf0b43c2bdcb913a6a02fbaae6f97d68650f3a" @@ -18559,23 +14404,17 @@ timestamp-nano@^1.0.0: 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= + integrity sha512-EijGsv7kzd9I9g0ByCl6h42BWNGUZrlCSejfrb3AKeHC33SGbASu1VDf5O3rRiiUOhAC9CHdZxFPbZu0HmR70A== -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" +tiny-typed-emitter@^2.1.0: + version "2.1.0" + resolved "https://registry.yarnpkg.com/tiny-typed-emitter/-/tiny-typed-emitter-2.1.0.tgz#b3b027fdd389ff81a152c8e847ee2f5be9fad7b5" + integrity sha512-qVtvMxeXbVej0cQWKqVSSAHmKZEHAvxdF8HEUBFWts8h+xEo5m/lEiPakuyZ3BnCBjOD8i24kzNOiOLLgsSxhA== 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= + integrity sha512-EkJoZ2O3zdCz3zJsYCsxyq2OC5hrxR9mfdd5I+w8h/tmFfeOxJ+vvkxsKxdmN0WtS9zLdHEgfgVOiMVgv+Po4Q== dependencies: no-case "^2.2.0" upper-case "^1.0.3" @@ -18587,54 +14426,25 @@ tmp@0.0.33, tmp@^0.0.33: dependencies: os-tmpdir "~1.0.2" -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= - 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" - integrity sha1-uDVx+k2MJbguIxsG46MFXeTKGkc= + integrity sha512-lxrWP8ejsq+7E3nNjwYmUBMAgjMTZoTI+sdBOpvNyijeDLa29LUn9QaoXAHv4+Z578hbmHHJKZknzxVtvo77og== 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= - -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" + integrity sha512-/OaKK0xYrs3DmxRYqL/yDc+FxFUVYhDlXMhRmv3z915w2HF1tnN1omB354j8VUGO/hbRzyD6Y3sA7v7GS/ceog== 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= + integrity sha512-9mWHdnGRuh3onocaHzukyvCZhzvr6tiflAy/JRFXcJX0TjgfWA9pk9t8CMbzmBE4Jfw58pXbkngtBtqYxzNEyg== dependencies: kind-of "^3.0.2" @@ -18646,7 +14456,7 @@ to-readable-stream@^1.0.0: 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= + integrity sha512-ZZWNfCjUokXXDGXFpZehJIkZqq91BcULFq/Pi7M5i4JnxXdhMKAK682z8bCW3o8Hj1wuuzoKcW3DfVzaP6VuNg== dependencies: is-number "^3.0.0" repeat-string "^1.6.1" @@ -18668,17 +14478,17 @@ to-regex@^3.0.1, to-regex@^3.0.2: regex-not "^1.0.2" safe-regex "^1.1.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== +toidentifier@1.0.1: + version "1.0.1" + resolved "https://registry.yarnpkg.com/toidentifier/-/toidentifier-1.0.1.tgz#3be34321a88a820ed1bd80dfaa33e479fbb8dd35" + integrity sha512-o5sSPKEkg/DIQNmH43V0/uerLrpzVedkUh8tGNvaeXpfpuwjKenlSox/2O/BTlZUtEe+JG7s5YhEz608PlAHRA== token-stream@0.0.1: version "0.0.1" resolved "https://registry.yarnpkg.com/token-stream/-/token-stream-0.0.1.tgz#ceeefc717a76c4316f126d0b9dbaa55d7e7df01a" - integrity sha1-zu78cXp2xDFvEm0LnbqlXX598Bo= + integrity sha512-nfjOAu/zAWmX9tgwi5NRp7O7zTDUD1miHiB40klUnAh9qnL1iXdgzcz/i5dMaL5jahcBAaSfmNOBBJBLJW8TEg== -tough-cookie@^2.2.0, tough-cookie@^2.3.1, tough-cookie@^2.3.3, tough-cookie@~2.5.0: +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== @@ -18687,43 +14497,39 @@ tough-cookie@^2.2.0, tough-cookie@^2.3.1, tough-cookie@^2.3.3, tough-cookie@~2.5 punycode "^2.1.1" "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== + version "4.1.2" + resolved "https://registry.yarnpkg.com/tough-cookie/-/tough-cookie-4.1.2.tgz#e53e84b85f24e0b65dd526f46628db6c85f6b874" + integrity sha512-G9fqXWoYFZgTc2z8Q5zaHy/vJMjm+WV0AkAeHxVCQiEB1b+dGvWzFW6QV07cY5jQ5gRkeid2qIkzkxUnmoQZUQ== dependencies: psl "^1.1.33" punycode "^2.1.1" - universalify "^0.1.2" + universalify "^0.2.0" + url-parse "^1.5.3" -tr46@~0.0.1, tr46@~0.0.3: +tr46@~0.0.3: version "0.0.3" resolved "https://registry.yarnpkg.com/tr46/-/tr46-0.0.3.tgz#8184fd347dac9cdc185992f3a6622e14b9d9ab6a" - integrity sha1-gYT9NH2snNwYWZLzpmIuFLnZq2o= + integrity sha512-N3WMsuqV66lT30CrXNbEjx4GEwlow3v6rr4mCcv6prnfwhS01rkgyFdjPNBYd9br7LpXV1+Emh01fHnq2Gdgrw== trim-repeated@^1.0.0: version "1.0.0" resolved "https://registry.yarnpkg.com/trim-repeated/-/trim-repeated-1.0.0.tgz#e3646a2ea4e891312bf7eace6cfb05380bc01c21" - integrity sha1-42RqLqTokTEr9+rObPsFOAvAHCE= + integrity sha512-pkonvlKk8/ZuR0D5tLW8ljt5I8kmxp2XKymhepUeOdCEfKpZaktSArkLHZt76OB1ZvO9bssUsDty4SWhLvZpLg== dependencies: escape-string-regexp "^1.0.2" 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= - -"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== + integrity sha512-WZGXGstmCWgeevgTL54hrCuw1dyMQIzWy7ZfqRJfSmJZBwklI15egmQytFP6bPidmw3M8d5yEowl1niq4vmqZw== truffle-flattener@^1.4.4: - version "1.5.0" - resolved "https://registry.yarnpkg.com/truffle-flattener/-/truffle-flattener-1.5.0.tgz#c358fa3e5cb0a663429f7912a58c4f0879414e64" - integrity sha512-vmzWG/L5OXoNruMV6u2l2IaheI091e+t+fFCOR9sl46EE3epkSRIwGCmIP/EYDtPsFBIG7e6exttC9/GlfmxEQ== + version "1.6.0" + resolved "https://registry.yarnpkg.com/truffle-flattener/-/truffle-flattener-1.6.0.tgz#abb64488b711e6cca0a9d3e449f6a85e35964c5d" + integrity sha512-scS5Bsi4CZyvlrmD4iQcLHTiG2RQFUXVheTgWeH6PuafmI+Lk5U87Es98loM3w3ImqC9/fPHq+3QIXbcPuoJ1Q== dependencies: "@resolver-engine/imports-fs" "^0.2.2" - "@solidity-parser/parser" "^0.8.0" + "@solidity-parser/parser" "^0.14.1" find-up "^2.1.0" mkdirp "^1.0.4" tsort "0.0.1" @@ -18739,26 +14545,23 @@ truffle-hdwallet-provider@^1.0.17: websocket "^1.0.28" truffle@^5.1.28: - version "5.4.14" - resolved "https://registry.yarnpkg.com/truffle/-/truffle-5.4.14.tgz#ecc9d263e15f98fc9e7736c34800a161729b25b9" - integrity sha512-upCCheE1H/p4AV7suISyJ45HnPgolnXEHVMqonRsbiNn9aKpmyrhNqF5grtMC95B1AVV9TtccKCCTozxkL/9Mg== + version "5.5.30" + resolved "https://registry.yarnpkg.com/truffle/-/truffle-5.5.30.tgz#f2c095d5d0a5bd0a0fd1e5665cf17a75a6209575" + integrity sha512-XJ+qQkQ4ulDCp7Losf5tnIPUzJxmQfFrYceiSfRxvgCjBByzP4EpzQVywlkBQo49t0lEgOWiWrbf+9p2ZE+s5Q== dependencies: - "@truffle/db-loader" "^0.0.13" - "@truffle/debugger" "^9.1.19" + "@truffle/db-loader" "^0.1.32" + "@truffle/debugger" "^11.0.8" app-module-path "^2.2.0" - mocha "8.1.2" + ganache "7.4.0" + mocha "9.2.2" original-require "^1.0.1" optionalDependencies: - "@truffle/db" "^0.5.34" - "@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" + "@truffle/db" "^1.0.22" truncate-utf8-bytes@^1.0.0: version "1.0.2" resolved "https://registry.yarnpkg.com/truncate-utf8-bytes/-/truncate-utf8-bytes-1.0.2.tgz#405923909592d56f78a5818434b0b78489ca5f2b" - integrity sha1-QFkjkJWS1W94pYGENLC3hInKXys= + integrity sha512-95Pu1QXQvruGEhv62XCMO3Mm90GscOCClvrIUwCM0PYOXK3kaF3l3sIHxx71ThJfcbM2O5Au6SO3AWCSEfW4mQ== dependencies: utf8-byte-length "^1.0.1" @@ -18767,104 +14570,65 @@ ts-essentials@^2.0.7: resolved "https://registry.yarnpkg.com/ts-essentials/-/ts-essentials-2.0.12.tgz#c9303f3d74f75fa7528c3d49b80e089ab09d8745" integrity sha512-3IVX4nI6B5cc31/GFFE+i8ey/N2eA0CZDbo6n0yrz0zDX8ZJ8djmU1p+XRz7G3is0F3bB3pu2pAroFdAWQKU3w== -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== - dependencies: - tslib "^1.9.3" - -ts-invariant@^0.9.0: - version "0.9.3" - resolved "https://registry.yarnpkg.com/ts-invariant/-/ts-invariant-0.9.3.tgz#4b41e0a80c2530a56ce4b8fd4e14183aaac0efa8" - integrity sha512-HinBlTbFslQI0OHP07JLsSXPibSegec6r9ai5xxq/qHYCsIQbzpymLpDhAUsnXcSrDEcd0L62L8vsOEdzM0qlA== - dependencies: - tslib "^2.1.0" - -tsconfig-paths@^3.11.0: - version "3.11.0" - resolved "https://registry.yarnpkg.com/tsconfig-paths/-/tsconfig-paths-3.11.0.tgz#954c1fe973da6339c78e06b03ce2e48810b65f36" - integrity sha512-7ecdYDnIdmv639mmDwslG6KQg1Z9STTz1j7Gcz0xa+nshh/gKDAHcPxRbWOsA3SPp0tXP2leTcY9Kw+NAkfZzA== +tsconfig-paths@^3.14.1: + version "3.14.1" + resolved "https://registry.yarnpkg.com/tsconfig-paths/-/tsconfig-paths-3.14.1.tgz#ba0734599e8ea36c862798e920bcf163277b137a" + integrity sha512-fxDhWnFSLt3VuTwtvJt5fpwxBHg5AdKWMsgcPOOIilyjymcYVZoCQF8fvFRezCNfblEXmi+PcM1eYHeOAgXCOQ== dependencies: "@types/json5" "^0.0.29" json5 "^1.0.1" - minimist "^1.2.0" + minimist "^1.2.6" strip-bom "^3.0.0" -tslib@^1.10.0, tslib@^1.9.0, tslib@^1.9.3: +tslib@^1.9.0, tslib@^1.9.3: version "1.14.1" resolved "https://registry.yarnpkg.com/tslib/-/tslib-1.14.1.tgz#cf2d38bdc34a134bcaf1091c41f6619e2f672d00" integrity sha512-Xni35NKzjgMrwevysHTCArtLDpPvye8zV/0E4EyYn43P7/7qvQwPh9BGkHewbMulVntbigmcT7rdX3BNo9wRJg== -tslib@^2.0.3, tslib@^2.1.0, tslib@^2.2.0, tslib@^2.3.0, tslib@~2.3.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== - -tslib@~2.1.0: - version "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.2.0" - resolved "https://registry.yarnpkg.com/tslib/-/tslib-2.2.0.tgz#fb2c475977e35e241311ede2693cee1ec6698f5c" - integrity sha512-gS9GVHRU+RGn5KQM2rllAlR3dU6m7AcpJKdtH8gFvQiC4Otgk98XnmMU+nZenHt/+VhnBPWwgrJsyrdcw6i23w== +tslib@^2.1.0, tslib@^2.4.0, tslib@~2.4.0: + version "2.4.0" + resolved "https://registry.yarnpkg.com/tslib/-/tslib-2.4.0.tgz#7cecaa7f073ce680a05847aa77be941098f36dc3" + integrity sha512-d6xOpEDfsi2CZVlPQzGeux8XMwLT9hssAsaPYExaQMuYskwb+x1x7J371tWlbBdWHroy99KnVB6qIkUbs5X3UQ== 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= - -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= + integrity sha512-Tyrf5mxF8Ofs1tNoxA13lFeZ2Zrbd6cKbuH3V+MQ5sb6DtBj5FjrXVsRWT8YvNAQTqNoz66dz1WsbigI22aEnw== 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= + integrity sha512-McnNiV1l8RYeY8tBgEpuodCC1mLUdbSN+CYBL7kJsJNInOP8UjDDEwdk6Mw60vdLLrr5NHKZhMAOSrR2NZuQ+w== dependencies: safe-buffer "^5.0.1" tv4@^1.3: version "1.3.0" resolved "https://registry.yarnpkg.com/tv4/-/tv4-1.3.0.tgz#d020c846fadd50c855abb25ebaecc68fc10f7963" - integrity sha1-0CDIRvrdUMhVq7JeuuzGj8EPeWM= + integrity sha512-afizzfpJgvPr+eDkREK4MxJ/+r8nEEHcmitwgnPUqpaP+FpwQyadnxNoSACbgc/b1LsZYtODGoPiFxQrgJgjvw== tweetnacl-util@^0.15.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== -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" - integrity sha1-WuaBd/GS1EViadEIr6k/+HQ/T2Q= + integrity sha512-KXXFFdAbFXY4geFIwoyNK+f5Z1b7swfXABfL7HXCmoIWMKU3dmS26672A4EeQtDzLKy7SXmfBu51JolvEKwtGA== + +tweetnacl@^1.0.3: + version "1.0.3" + resolved "https://registry.yarnpkg.com/tweetnacl/-/tweetnacl-1.0.3.tgz#ac0af71680458d8a6378d0d0d050ab1407d35596" + integrity sha512-6rt+RN7aOi1nGMyC4Xa5DdYiukl2UWCbcJft7YhxReBGQD7OAM8Pbxw6YMo4r2diNEA8FEmu32YOn9rhaiE5yw== type-check@~0.3.2: version "0.3.2" resolved "https://registry.yarnpkg.com/type-check/-/type-check-0.3.2.tgz#5884cab512cf1d355e3fb784f30804b2b520db72" - integrity sha1-WITKtRLPHTVeP7eE8wgEsrUg23I= + integrity sha512-ZCmOJdvOWDBYJlzAoFkC+Q0+bUyEOS1ltgp1MGU03fqHG+dbi9tBFU2Rd9QKiDZFAYrhPh2JUf7rZRIuHRKtOg== 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" @@ -18880,7 +14644,7 @@ type-fest@^0.7.1: resolved "https://registry.yarnpkg.com/type-fest/-/type-fest-0.7.1.tgz#8dda65feaf03ed78f0a3f9678f1869147f7c5c48" integrity sha512-Ne2YiiGN8bmrmJJEuTWTLJR32nh/JdL1+PSicowtNb0WFpn59GK8/lfD61bVtzguz7b3PBt74nxpv/Pw5po5Rg== -type-is@^1.6.16, type-is@~1.6.17, type-is@~1.6.18: +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== @@ -18893,27 +14657,22 @@ type@^1.0.1: resolved "https://registry.yarnpkg.com/type/-/type-1.2.0.tgz#848dd7698dafa3e54a6c479e759c4bc3f18847a0" integrity sha512-+5nt5AAniqsCnu2cEQQdpzCAh33kVx8n0VoFidKpB1dVVLAN/F+bgVOqOJqOnEnrhp222clB5p3vUlD+1QAnfg== -type@^2.5.0: - version "2.5.0" - resolved "https://registry.yarnpkg.com/type/-/type-2.5.0.tgz#0a2e78c2e77907b252abe5f298c1b01c63f0db3d" - integrity sha512-180WMDQaIMm3+7hGXWf12GtdniDEy7nYcyFMKJn/eZz/6tSLXrUN9V0wKSbMjej0I1WHWbpREDEKHtqPQa9NNw== +type@^2.7.2: + version "2.7.2" + resolved "https://registry.yarnpkg.com/type/-/type-2.7.2.tgz#2376a15a3a28b1efa0f5350dcf72d24df6ef98d0" + integrity sha512-dzlvlNlt6AXU7EBSfpAscydQ7gXB+pPGsPnfJnZpiNJBDj7IaJzQlBZYGdEi4R9HmPdBv2XmWJ6YUtoTa7lmCw== -typedarray-to-buffer@^3.1.5, typedarray-to-buffer@~3.1.5: +typedarray-to-buffer@^3.1.5: version "3.1.5" resolved "https://registry.yarnpkg.com/typedarray-to-buffer/-/typedarray-to-buffer-3.1.5.tgz#a97ee7a9ff42691b9f783ff1bc5112fe3fca9080" integrity sha512-zdu8XMNEDepKKR+XYOXAVPtWui0ly0NtohUscw+UmaHiAWT8hrV1rr//H6V+0DvJ3OQ19S979M0laLfX8rm82Q== dependencies: is-typedarray "^1.0.0" -typedarray@^0.0.6, typedarray@~0.0.5: +typedarray@^0.0.6: 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== + integrity sha512-/aCDEGatGvZ2BIk+HmLf4ifCJFwvKFNb9/JeZPMulfgFracn9QFcAf5GO8B/mweUjSoblS5In0cWhqpfs/5PQA== typescript-compare@^0.0.2: version "0.0.2" @@ -18934,15 +14693,10 @@ typescript-tuple@^2.2.1: dependencies: typescript-compare "^0.0.2" -ua-parser-js@^0.7.18: - version "0.7.28" - resolved "https://registry.yarnpkg.com/ua-parser-js/-/ua-parser-js-0.7.28.tgz#8ba04e653f35ce210239c64661685bf9121dec31" - integrity sha512-6Gurc1n//gjp9eQNXjD9O3M/sMwVtN5S8Lv9bvOYBfKfDNiIIhqiyi01vMBO45u4zkDE420w/e0se7Vs+sIg+g== - -uglify-js@^2.6.1, uglify-js@^2.8.29: +uglify-js@^2.6.1: version "2.8.29" resolved "https://registry.yarnpkg.com/uglify-js/-/uglify-js-2.8.29.tgz#29c5733148057bb4e1f75df35b7a9cb72e6a59dd" - integrity sha1-KcVzMUgFe7Th913zW3qcty5qWd0= + integrity sha512-qLq/4y2pjcU3vhlhseXGGJ7VbFO4pBANu0kwl8VCa9KEI0V8VfZIx2Fy3w01iSTA/pGwKZSmu/+I4etLNDdt5w== dependencies: source-map "~0.5.1" yargs "~3.10.0" @@ -18950,48 +14704,24 @@ uglify-js@^2.6.1, uglify-js@^2.8.29: uglify-to-browserify "~1.0.0" uglify-js@^3.1.4: - version "3.14.2" - resolved "https://registry.yarnpkg.com/uglify-js/-/uglify-js-3.14.2.tgz#d7dd6a46ca57214f54a2d0a43cad0f35db82ac99" - integrity sha512-rtPMlmcO4agTUfz10CbgJ1k6UAoXM2gWb3GoMPPZB/+/Ackf8lNWk11K4rYi2D0apgoFRLtQOZhb+/iGNJq26A== + version "3.17.1" + resolved "https://registry.yarnpkg.com/uglify-js/-/uglify-js-3.17.1.tgz#1258a2a488147a8266b3034499ce6959978ba7f4" + integrity sha512-+juFBsLLw7AqMaqJ0GFvlsGZwdQfI2ooKQB39PSBgMnMakcFosi9O8jCwE+2/2nMNcc0z63r9mwjoDG8zr+q0Q== 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" + integrity sha512-vb2s1lYx2xBtUgy+ta+b2J/GLVUR+wmpINwHePmPRhOsIVCG2wDzKJ0n14GslH1BifsqVzSOwQhRaCAsZ/nI4Q== uint32@^0.2.1: version "0.2.1" resolved "https://registry.yarnpkg.com/uint32/-/uint32-0.2.1.tgz#e618d802d7fffd28b708fccecc7315608bac47f2" - integrity sha1-5hjYAtf//Si3CPzOzHMVYIusR/I= - -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: - 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" + integrity sha512-d3i8kc/4s1CFW5g3FctmF1Bu2GVXGBMTn82JY2BW0ZtTtI8pRx1YWGPCFBwRF4uYVSJ7ua4y+qYEPqS+x+3w7Q== 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== + version "3.1.0" + resolved "https://registry.yarnpkg.com/uint8arrays/-/uint8arrays-3.1.0.tgz#8186b8eafce68f28bd29bd29d683a311778901e2" + integrity sha512-ei5rfKtoRO8OyOIor2Rz5fhzjThwIHJZ3uyDPnDHTXbP0aMQ1RN/6AI5B5d9dBxJOU+BvOAk7ZQ1xphsX8Lrog== dependencies: multiformats "^9.4.2" @@ -19000,14 +14730,14 @@ ultron@~1.1.0: resolved "https://registry.yarnpkg.com/ultron/-/ultron-1.1.1.tgz#9fe1536a10a664a65266a1e3ccf85fd36302bc9c" integrity sha512-UIEXBNeYmKptWH6z8ZnqTeS8fV74zG0/eRU9VGkpzz+LIJNs8W/zM/L+7ctCkRrgbNnnR0xxw4bKOr0cW0N0Og== -unbox-primitive@^1.0.1: - version "1.0.1" - resolved "https://registry.yarnpkg.com/unbox-primitive/-/unbox-primitive-1.0.1.tgz#085e215625ec3162574dc8859abee78a59b14471" - integrity sha512-tZU/3NqK3dA5gpE1KtyiJUrEB0lxnGkMFHptJ7q6ewdZ8s12QrODwNbhIJStmJkd1QDXa1NRA8aF2A1zk/Ypyw== +unbox-primitive@^1.0.2: + version "1.0.2" + resolved "https://registry.yarnpkg.com/unbox-primitive/-/unbox-primitive-1.0.2.tgz#29032021057d5e6cdbd08c5129c226dff8ed6f9e" + integrity sha512-61pPlCD9h51VoreyJ0BReideM3MDKMKnh6+V9L08331ipq6Q8OFXZYiqP6n/tbHx4s5I9uRhcye6BrbkizkBDw== dependencies: - function-bind "^1.1.1" - has-bigints "^1.0.1" - has-symbols "^1.0.2" + call-bind "^1.0.2" + has-bigints "^1.0.2" + has-symbols "^1.0.3" which-boxed-primitive "^1.0.2" unbzip2-stream@^1.0.9: @@ -19018,20 +14748,20 @@ unbzip2-stream@^1.0.9: buffer "^5.2.1" through "^2.3.8" -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== - 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== underscore@^1.8.3: - version "1.13.1" - resolved "https://registry.yarnpkg.com/underscore/-/underscore-1.13.1.tgz#0c1c6bd2df54b6b69f2314066d65b6cde6fcf9d1" - integrity sha512-hzSoAVtJF+3ZtiFX0VgfFPHEDRm7Y/QPjGyNo4TVdnDTdft3tr8hEkD25a1jC+TjTuE7tkHGKkhwCgs9dgBB2g== + version "1.13.4" + resolved "https://registry.yarnpkg.com/underscore/-/underscore-1.13.4.tgz#7886b46bbdf07f768e0052f1828e1dcab40c0dee" + integrity sha512-BQFnUDuAQ4Yf/cYY5LNrK9NCJFKriaRbD9uR1fTeXnBeoa97W0i41qkZfGO9pSo8I5KzjAcSY2XYtdf0oKd7KQ== + +undici@^5.4.0: + version "5.10.0" + resolved "https://registry.yarnpkg.com/undici/-/undici-5.10.0.tgz#dd9391087a90ccfbd007568db458674232ebf014" + integrity sha512-c8HsD3IbwmjjbLvoZuRI26TZic+TSEe8FPMLLOkN1AfYRhdjnKBU6yL+IwcSCbdZiX4e5t0lfMDLDCqj4Sq70g== union-value@^1.0.0: version "1.0.1" @@ -19043,50 +14773,35 @@ union-value@^1.0.0: is-extendable "^0.1.1" set-value "^2.0.1" -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== - dependencies: - json-stable-stringify-without-jsonify "^1.0.1" - through2-filter "^3.0.0" - -universalify@^0.1.0, universalify@^0.1.2: +universalify@^0.1.0: version "0.1.2" resolved "https://registry.yarnpkg.com/universalify/-/universalify-0.1.2.tgz#b646f69be3942dabcecc9d6639c80dc105efaa66" integrity sha512-rBJeI5CXAlmy1pV+617WB9J63U6XcazHHF2f2dbJix4XzpUF0RS3Zbj0FGIOCAva5P/d/GBOYaACQ1w+0azUkg== +universalify@^0.2.0: + version "0.2.0" + resolved "https://registry.yarnpkg.com/universalify/-/universalify-0.2.0.tgz#6451760566fa857534745ab1dde952d1b1761be0" + integrity sha512-CJ1QgKmNg3CwvAv/kOFmtnEN05f0D/cn9QntgNOQlQF9dgvVTHj3t+8JPdjqawCHk7V/KA+fbUqzZ9XWhcqPUg== + universalify@^2.0.0: version "2.0.0" resolved "https://registry.yarnpkg.com/universalify/-/universalify-2.0.0.tgz#75a4984efedc4b08975c5aeb73f530d02df25717" integrity sha512-hAZsKq7Yy11Zu1DE0OzWjw7nnLZmJZYTDZZyEFHZdUhV8FkH5MCfoU1XMaxXovpyW5nq5scPqq0ZDP9Zyl04oQ== -unixify@1.0.0: - version "1.0.0" - resolved "https://registry.yarnpkg.com/unixify/-/unixify-1.0.0.tgz#3a641c8c2ffbce4da683a5c70f03a462940c2090" - integrity sha1-OmQcjC/7zk2mg6XHDwOkYpQMIJA= - dependencies: - normalize-path "^2.1.1" - unordered-array-remove@^1.0.2: version "1.0.2" resolved "https://registry.yarnpkg.com/unordered-array-remove/-/unordered-array-remove-1.0.2.tgz#c546e8f88e317a0cf2644c97ecb57dba66d250ef" - integrity sha1-xUbo+I4xegzyZEyX7LV9umbSUO8= - -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== + integrity sha512-45YsfD6svkgaCBNyvD+dFHm4qFX9g3wRSIVgWVPtm2OCnphvPxzJoe20ATsiNpNJrmzHifnxm+BN5F7gFT/4gw== 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= + integrity sha512-pjy2bYhSsufwWlKwPc+l3cN7+wuJlK6uz0YdJEOlQDbl6jo/YlPi4mb8agUkVC8BF7V8NuzeyPNqRksA3hztKQ== 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= + integrity sha512-PcA2tsuGSF9cnySLHTLSh2qrQiJ70mn+r+Glzxv2TWZblxsxCC52BDlZoPCsz7STd9pN7EZetkWZBAvk4cgZdQ== dependencies: has-value "^0.3.1" isobject "^3.0.0" @@ -19096,17 +14811,25 @@ upath@^1.1.1: resolved "https://registry.yarnpkg.com/upath/-/upath-1.2.0.tgz#8f66dbcd55a883acdae4408af8b035a5044c1894" integrity sha512-aZwGpamFO61g3OlfT7OQCHqhGnW43ieH9WZeP7QxN/G/jS4jfqUkZxoryvJgVPEcrl5NL/ggHsSmLMHuH64Lhg== +update-browserslist-db@^1.0.9: + version "1.0.9" + resolved "https://registry.yarnpkg.com/update-browserslist-db/-/update-browserslist-db-1.0.9.tgz#2924d3927367a38d5c555413a7ce138fc95fcb18" + integrity sha512-/xsqn21EGVdXI3EXSum1Yckj3ZVZugqyOZQ/CxYPBD/R+ko9NSUScf8tFF4dOKY+2pvSSJA/S+5B8s4Zr4kyvg== + dependencies: + escalade "^3.1.1" + picocolors "^1.0.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= + integrity sha512-wINKYvI3Db8dtjikdAqoBbZoP6Q+PZUyfMR7pmwHzjC2quzSkUq5DmPrTtPEqHaz8AGtmsB4TqwapMTM1QAQOQ== 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= + integrity sha512-WRbjgmYzgXkCV7zNVpy5YgrHgbBv126rMALQQMrmzOVC4GM2waQ9x7xtm8VU+1yF2kWyPzI9zbZ48n4vSxwfSA== uri-js@^4.2.2: version "4.4.1" @@ -19118,64 +14841,63 @@ uri-js@^4.2.2: 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= + integrity sha512-Am1ousAhSLBeB9cG/7k7r2R0zj50uDRlZHPGbazid5s9rlF1F/QKYObEKSIunSjIOkJZqwRRLpvewjEkM7pSqg== 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= + integrity sha512-BVA4lR5PIviy2PMseNd2jbFQ+jwSwQGdJejf5ctd1rEXt0Ypd7yanUK9+lYechVlN5VaTJGsu2U/3MDDu6KgBA== dependencies: prepend-http "^1.0.1" 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= + integrity sha512-NjFKA0DidqPa5ciFcSrXnAltTtzz84ogy+NebPvfEgAck0+TNg4UJ4IN+fB7zRZfbgUf0syOo9MDxFkDSMuFaQ== dependencies: prepend-http "^2.0.0" +url-parse@^1.5.3: + version "1.5.10" + resolved "https://registry.yarnpkg.com/url-parse/-/url-parse-1.5.10.tgz#9d3c2f736c1d75dd3bd2be507dcc111f1e2ea9c1" + integrity sha512-WypcfiRhfeUP9vvF0j6rw0J3hrWrw6iZv3+22h6iRMJ/8z1Tj6XfLP4DsUix5MhMPnXpiHDoKyoZ/bdCkwBCiQ== + dependencies: + querystringify "^2.1.1" + requires-port "^1.0.0" + url-set-query@^1.0.0: version "1.0.0" resolved "https://registry.yarnpkg.com/url-set-query/-/url-set-query-1.0.0.tgz#016e8cfd7c20ee05cafe7795e892bd0702faa339" - integrity sha1-AW6M/Xwg7gXK/neV6JK9BwL6ozk= + integrity sha512-3AChu4NiXquPfeckE5R5cGdiHCMWJx1dwCWOmWIL4KHAziJNOFIYJlpGFeKDvwLPHovZRCxK3cYlwzqI9Vp+Gg== 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= - -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" + integrity sha512-0kQLIzG4fdk/G5NONku64rSH/x32NOA39LVQqlK8Le6lvTF6GGRJpqaQFGgU+CLwySIqBSMdwYM0sYcW9f6P4A== 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== +utf-8-validate@5.0.7: + version "5.0.7" + resolved "https://registry.yarnpkg.com/utf-8-validate/-/utf-8-validate-5.0.7.tgz#c15a19a6af1f7ad9ec7ddc425747ca28c3644922" + integrity sha512-vLt1O5Pp+flcArHGIyKEQq883nBt8nN8tVBcoL0qUXj2XT1n7p70yGIq2VK98I5FdZ1YHc0wk/koOnHjnXWk1Q== + dependencies: + node-gyp-build "^4.3.0" + utf-8-validate@^5.0.2: - version "5.0.6" - resolved "https://registry.yarnpkg.com/utf-8-validate/-/utf-8-validate-5.0.6.tgz#e1b3e0a5cc8648a3b44c1799fbb170d1aaaffe80" - integrity sha512-hoY0gOf9EkCw+nimK21FVKHUIG1BMqSiRwxB/q3A9yKZOrOI99PP77BxmarDqWz6rG3vVYiBWfhG8z2Tl+7fZA== + version "5.0.9" + resolved "https://registry.yarnpkg.com/utf-8-validate/-/utf-8-validate-5.0.9.tgz#ba16a822fbeedff1a58918f2a6a6b36387493ea3" + integrity sha512-Yek7dAy0v3Kl0orwMlvi7TPtiCNrdfHNd7Gcc/pLq4BLXqfAmd0J7OWMizUQnTTJsyjKn02mU7anqwfmUP4J8Q== dependencies: - node-gyp-build "^4.2.0" + node-gyp-build "^4.3.0" utf8-byte-length@^1.0.1: version "1.0.4" resolved "https://registry.yarnpkg.com/utf8-byte-length/-/utf8-byte-length-1.0.4.tgz#f45f150c4c66eee968186505ab93fcbb8ad6bf61" - integrity sha1-9F8VDExm7uloGGUFq5P8u4rWv2E= + integrity sha512-4+wkEYLBbWxqTahEsWrhxepcoVOJ+1z5PGIjPZxRkytcdSUaNjIjBM7Xn8E+pdSuV7SzvWovBFA54FO0JSoqhA== utf8@3.0.0, utf8@^3.0.0: version "3.0.0" @@ -19185,9 +14907,9 @@ utf8@3.0.0, utf8@^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= + integrity sha512-EPD5q1uXyFxJpCrLnCc1nHnq3gOa6DZBocAIiI2TaSCA7VCJ1UJDMagCzIkXNsUYfD1daK//LTEQ8xiIbrHtcw== -util.promisify@^1.0.0, util.promisify@^1.0.1: +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== @@ -19198,21 +14920,7 @@ util.promisify@^1.0.0, util.promisify@^1.0.1: 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, util@^0.12.3: +util@^0.12.0: version "0.12.4" resolved "https://registry.yarnpkg.com/util/-/util-0.12.4.tgz#66121a31420df8f01ca0c464be15dfa1d1850253" integrity sha512-bxZ9qtSlGUWSOy9Qa9Xgk11kSslpuZwaxCg4sNIDj6FLucDab2JxnHwyNTCpHMtK1MjoQiWQ6DiUMZYbSrO+Sw== @@ -19227,12 +14935,12 @@ util@^0.12.0, util@^0.12.3: 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= + integrity sha512-pMZTvIkT1d+TFGvDOqodOclx0QWkkgi6Tdoa8gC8ffGAAqz9pzPTZWAybbsHHoED/ztMtkv/VoYTYyShUn81hA== uuid@2.0.1: version "2.0.1" resolved "https://registry.yarnpkg.com/uuid/-/uuid-2.0.1.tgz#c2a30dedb3e535d72ccf82e343941a50ba8533ac" - integrity sha1-wqMN7bPlNdcsz4LjQ5QaULqFM6w= + integrity sha512-nWg9+Oa3qD2CQzHIP4qKUqwNfzKn8P0LtFhotaCTFchsV7ZfDhAybeip/HZVeMIpZi9JgY1E3nUlwaCmZT1sEg== uuid@3.2.1: version "3.2.1" @@ -19244,36 +14952,21 @@ uuid@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@8.3.2, uuid@^8.0.0, uuid@^8.3.2: + version "8.3.2" + resolved "https://registry.yarnpkg.com/uuid/-/uuid-8.3.2.tgz#80d5b5ced271bb9af6c445f21a1a04c606cefbe2" + integrity sha512-+NYs2QeMWy+GWFOEm9xnn6HCDp0l7QBD7ml8zLUmJ+93Q5NF0NocErnwkTkXVFNiX3/fpC6afS8Dhb/gz7R7eg== -uuid@^3.0.1, uuid@^3.1.0, uuid@^3.3.2, uuid@^3.4.0: +uuid@^3.0.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== -uuid@^8.0.0, uuid@^8.3.2: - version "8.3.2" - resolved "https://registry.yarnpkg.com/uuid/-/uuid-8.3.2.tgz#80d5b5ced271bb9af6c445f21a1a04c606cefbe2" - integrity sha512-+NYs2QeMWy+GWFOEm9xnn6HCDp0l7QBD7ml8zLUmJ+93Q5NF0NocErnwkTkXVFNiX3/fpC6afS8Dhb/gz7R7eg== - v8-compile-cache@^1.1.0: version "1.1.2" resolved "https://registry.yarnpkg.com/v8-compile-cache/-/v8-compile-cache-1.1.2.tgz#8d32e4f16974654657e676e0e467a348e89b0dc4" integrity sha512-ejdrifsIydN1XDH7EuR2hn8ZrkRKUYF7tUcBjBy/lhrCvs2K+zRlbW9UHc0IQ9RsYFZJFqJrieoIHfkCa0DBRA== -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= - -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= - 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" @@ -19282,15 +14975,10 @@ validate-npm-package-license@^3.0.1: spdx-correct "^3.0.0" spdx-expression-parse "^3.0.0" -value-or-promise@1.0.10: - version "1.0.10" - resolved "https://registry.yarnpkg.com/value-or-promise/-/value-or-promise-1.0.10.tgz#5bf041f1e9a8e7043911875547636768a836e446" - integrity sha512-1OwTzvcfXkAfabk60UVr5NdjtjJ0Fg0T5+B1bhxtrOEwSH2fe8y4DnLgoksfCyd8yZCOQQHB0qLMQnwgCjbXLQ== - -value-or-promise@1.0.6: - version "1.0.6" - resolved "https://registry.yarnpkg.com/value-or-promise/-/value-or-promise-1.0.6.tgz#218aa4794aa2ee24dcf48a29aba4413ed584747f" - integrity sha512-9r0wQsWD8z/BxPOvnwbPf05ZvFngXyouE9EKB+5GbYix+BYnAwrIChCUyFIinfbf2FL/U71z+CPpbnmTdxrwBg== +value-or-promise@1.0.11: + version "1.0.11" + resolved "https://registry.yarnpkg.com/value-or-promise/-/value-or-promise-1.0.11.tgz#3e90299af31dd014fe843fe309cefa7c1d94b140" + integrity sha512-41BrgH+dIbCFXClcSapVs5M6GkENd3gQOJpEfPDNa71LsUGMXDL0jMWpI/Rh7WhX+Aalfz2TTS3Zt5pUsbnhLg== varint-decoder@^1.0.0: version "1.0.0" @@ -19299,7 +14987,7 @@ varint-decoder@^1.0.0: dependencies: varint "^5.0.0" -varint@^5.0.0, varint@^5.0.2, varint@~5.0.0: +varint@^5.0.0: version "5.0.2" resolved "https://registry.yarnpkg.com/varint/-/varint-5.0.2.tgz#5b47f8a947eb668b848e034dcfa87d0ff8a7f7a4" integrity sha512-lKxKYG6H03yCZUpAGOPOsMcGxd1RHCu1iKvEHYDPmTyq2HueGhD73ssNBqqQWfvYs04G9iUFRvmAVLW20Jw6ow== @@ -19312,75 +15000,38 @@ varint@^6.0.0: 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= + integrity sha512-BNGbWLfd0eUPabhkXUVm0j8uuvREyTh5ovRa/dyow/BqAbZJyC+5fU+IzQOzmAKzYqYRAISoRhdQr3eIZ/PXqg== verror@1.10.0: version "1.10.0" resolved "https://registry.yarnpkg.com/verror/-/verror-1.10.0.tgz#3a105ca17053af55d6e270c1f8288682e18da400" - integrity sha1-OhBcoXBTr1XW4nDB+CiGguGNpAA= + integrity sha512-ZZKSmDAEFOijERBLkmYfJ+vmk3w+7hOLYDNkRCuRuMJGEmqYNCNLyBBFwWKVMhfwaEF3WOd0Zlw86U/WC/+nYw== dependencies: assert-plus "^1.0.0" core-util-is "1.0.2" extsprintf "^1.2.0" -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= - dependencies: - clone "^1.0.0" - clone-stats "^0.0.1" - replace-ext "0.0.1" - vizion@^0.2: version "0.2.13" resolved "https://registry.yarnpkg.com/vizion/-/vizion-0.2.13.tgz#1314cdee2b34116f9f5b1248536f95dbfcd6ef5f" - integrity sha1-ExTN7is0EW+fWxJIU2+V2/zW718= + integrity sha512-pDK351YiXu1f5K3PF+/ix8hu9DwWGaWUGU1hjPbLbmmCnt9fPsFmkEJoBrssAGH9r2NX+I1F7NF9HD/6CtcLqQ== dependencies: async "1.5" -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== - void-elements@^2.0.1: version "2.0.1" resolved "https://registry.yarnpkg.com/void-elements/-/void-elements-2.0.1.tgz#c066afb582bb1cb4128d60ea92392e94d5e9dbec" - integrity sha1-wGavtYK7HLQSjWDqkjkulNXp2+w= + integrity sha512-qZKX4RnBzH2ugr8Lxa7x+0V6XD9Sb/ouARtiasEQCHB1EVU4NXtmHsDDrx1dO4ne5fc3J6EW05BP1Dl0z0iung== vuvuzela@1.0.3: version "1.0.3" resolved "https://registry.yarnpkg.com/vuvuzela/-/vuvuzela-1.0.3.tgz#3be145e58271c73ca55279dd851f12a682114b0b" - integrity sha1-O+FF5YJxxzylUnndhR8SpoIRSws= + integrity sha512-Tm7jR1xTzBbPW+6y1tknKiEhz04Wf/1iZkcTJjSFcpNko43+dFW6+OOeQe9taJIug3NdfUAjFKgUSyQrIKaDvQ== vxx@^1.2.0: version "1.2.2" resolved "https://registry.yarnpkg.com/vxx/-/vxx-1.2.2.tgz#741fb51c6f11d3383da6f9b92018a5d7ba807611" - integrity sha1-dB+1HG8R0zg9pvm5IBil17qAdhE= + integrity sha512-qtvep4hGo0DmEAeLhycBYotM8+S6eL86/HebORc/214jyYIb64o0vad8k0OXwt0XfFErqQ3ap2lWvP3M4UjmhQ== dependencies: continuation-local-storage "^3.1.4" debug "^2.6.3" @@ -19394,40 +15045,6 @@ vxx@^1.2.0: shimmer "^1.0.0" uuid "^3.0.1" -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" - integrity sha1-8LDc+RW8X/FSivrbLA4XtTLaL+g= - 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" @@ -19437,32 +15054,22 @@ web3-bzz@1.2.1: swarm-js "0.1.39" underscore "1.9.1" -web3-bzz@1.3.6: - version "1.3.6" - resolved "https://registry.yarnpkg.com/web3-bzz/-/web3-bzz-1.3.6.tgz#95f370aecc3ff6ad07f057e6c0c916ef09b04dde" - integrity sha512-ibHdx1wkseujFejrtY7ZyC0QxQ4ATXjzcNUpaLrvM6AEae8prUiyT/OloG9FWDgFD2CPLwzKwfSQezYQlANNlw== - dependencies: - "@types/node" "^12.12.6" - got "9.6.0" - swarm-js "^0.1.40" - underscore "1.12.1" - -web3-bzz@1.5.3: - version "1.5.3" - resolved "https://registry.yarnpkg.com/web3-bzz/-/web3-bzz-1.5.3.tgz#e36456905ce051138f9c3ce3623cbc73da088c2b" - integrity sha512-SlIkAqG0eS6cBS9Q2eBOTI1XFzqh83RqGJWnyrNZMDxUwsTVHL+zNnaPShVPvrWQA1Ub5b0bx1Kc5+qJVxsTJg== +web3-bzz@1.7.4: + version "1.7.4" + resolved "https://registry.yarnpkg.com/web3-bzz/-/web3-bzz-1.7.4.tgz#9419e606e38a9777443d4ce40506ebd796e06075" + integrity sha512-w9zRhyEqTK/yi0LGRHjZMcPCfP24LBjYXI/9YxFw9VqsIZ9/G0CRCnUt12lUx0A56LRAMpF7iQ8eA73aBcO29Q== dependencies: "@types/node" "^12.12.6" got "9.6.0" swarm-js "^0.1.40" -web3-bzz@1.6.0: - version "1.6.0" - resolved "https://registry.yarnpkg.com/web3-bzz/-/web3-bzz-1.6.0.tgz#584b51339f21eedff159abc9239b4b7ef6ded840" - integrity sha512-ugYV6BsinwhIi0CsLWINBz4mqN9wR9vNG0WmyEbdECjxcPyr6vkaWt4qi0zqlUxEnYAwGj4EJXNrbjPILntQTQ== +web3-bzz@1.8.0: + version "1.8.0" + resolved "https://registry.yarnpkg.com/web3-bzz/-/web3-bzz-1.8.0.tgz#2023676d7c17ea36512bf76eb310755a02a3d464" + integrity sha512-caDtdKeLi7+2Vb+y+cq2yyhkNjnxkFzVW0j1DtemarBg3dycG1iEl75CVQMLNO6Wkg+HH9tZtRnUyFIe5LIUeQ== dependencies: "@types/node" "^12.12.6" - got "9.6.0" + got "12.1.0" swarm-js "^0.1.40" web3-core-helpers@1.2.1: @@ -19474,30 +15081,21 @@ web3-core-helpers@1.2.1: web3-eth-iban "1.2.1" web3-utils "1.2.1" -web3-core-helpers@1.3.6: - version "1.3.6" - resolved "https://registry.yarnpkg.com/web3-core-helpers/-/web3-core-helpers-1.3.6.tgz#c478246a9abe4e5456acf42657dac2f7c330be74" - integrity sha512-nhtjA2ZbkppjlxTSwG0Ttu6FcPkVu1rCN5IFAOVpF/L0SEt+jy+O5l90+cjDq0jAYvlBwUwnbh2mR9hwDEJCNA== - dependencies: - underscore "1.12.1" - web3-eth-iban "1.3.6" - web3-utils "1.3.6" - -web3-core-helpers@1.5.3: - version "1.5.3" - resolved "https://registry.yarnpkg.com/web3-core-helpers/-/web3-core-helpers-1.5.3.tgz#099030235c477aadf39a94199ef40092151d563c" - integrity sha512-Ip1IjB3S8vN7Kf1PPjK41U5gskmMk6IJQlxIVuS8/1U7n/o0jC8krqtpRwiMfAgYyw3TXwBFtxSRTvJtnLyXZw== +web3-core-helpers@1.7.4: + version "1.7.4" + resolved "https://registry.yarnpkg.com/web3-core-helpers/-/web3-core-helpers-1.7.4.tgz#f8f808928560d3e64e0c8d7bdd163aa4766bcf40" + integrity sha512-F8PH11qIkE/LpK4/h1fF/lGYgt4B6doeMi8rukeV/s4ivseZHHslv1L6aaijLX/g/j4PsFmR42byynBI/MIzFg== dependencies: - web3-eth-iban "1.5.3" - web3-utils "1.5.3" + web3-eth-iban "1.7.4" + web3-utils "1.7.4" -web3-core-helpers@1.6.0: - version "1.6.0" - resolved "https://registry.yarnpkg.com/web3-core-helpers/-/web3-core-helpers-1.6.0.tgz#77e161b6ba930a4008a0df804ab379e0aa7e1e7f" - integrity sha512-H/IAH/0mrgvad/oxVKiAMC7qDzMrPPe/nRKmJOoIsupRg9/frvL62kZZiHhqVD1HMyyswbQFC69QRl7JqWzvxg== +web3-core-helpers@1.8.0: + version "1.8.0" + resolved "https://registry.yarnpkg.com/web3-core-helpers/-/web3-core-helpers-1.8.0.tgz#5dcfdda1a4ea277041d912003198f1334ca29d7c" + integrity sha512-nMAVwZB3rEp/khHI2BvFy0e/xCryf501p5NGjswmJtEM+Zrd3Biaw52JrB1qAZZIzCA8cmLKaOgdfamoDOpWdw== dependencies: - web3-eth-iban "1.6.0" - web3-utils "1.6.0" + web3-eth-iban "1.8.0" + web3-utils "1.8.0" web3-core-method@1.2.1: version "1.2.1" @@ -19510,41 +15108,27 @@ web3-core-method@1.2.1: web3-core-subscriptions "1.2.1" web3-utils "1.2.1" -web3-core-method@1.3.6: - version "1.3.6" - resolved "https://registry.yarnpkg.com/web3-core-method/-/web3-core-method-1.3.6.tgz#4b0334edd94b03dfec729d113c69a4eb6ebc68ae" - integrity sha512-RyegqVGxn0cyYW5yzAwkPlsSEynkdPiegd7RxgB4ak1eKk2Cv1q2x4C7D2sZjeeCEF+q6fOkVmo2OZNqS2iQxg== - dependencies: - "@ethersproject/transactions" "^5.0.0-beta.135" - underscore "1.12.1" - web3-core-helpers "1.3.6" - web3-core-promievent "1.3.6" - web3-core-subscriptions "1.3.6" - web3-utils "1.3.6" - -web3-core-method@1.5.3: - version "1.5.3" - resolved "https://registry.yarnpkg.com/web3-core-method/-/web3-core-method-1.5.3.tgz#6cff97ed19fe4ea2e9183d6f703823a079f5132c" - integrity sha512-8wJrwQ2qD9ibWieF9oHXwrJsUGrv3XAtEkNeyvyNMpktNTIjxJ2jaFGQUuLiyUrMubD18XXgLk4JS6PJU4Loeg== +web3-core-method@1.7.4: + version "1.7.4" + resolved "https://registry.yarnpkg.com/web3-core-method/-/web3-core-method-1.7.4.tgz#3873c6405e1a0a8a1efc1d7b28de8b7550b00c15" + integrity sha512-56K7pq+8lZRkxJyzf5MHQPI9/VL3IJLoy4L/+q8HRdZJ3CkB1DkXYaXGU2PeylG1GosGiSzgIfu1ljqS7CP9xQ== dependencies: - "@ethereumjs/common" "^2.4.0" - "@ethersproject/transactions" "^5.0.0-beta.135" - web3-core-helpers "1.5.3" - web3-core-promievent "1.5.3" - web3-core-subscriptions "1.5.3" - web3-utils "1.5.3" + "@ethersproject/transactions" "^5.6.2" + web3-core-helpers "1.7.4" + web3-core-promievent "1.7.4" + web3-core-subscriptions "1.7.4" + web3-utils "1.7.4" -web3-core-method@1.6.0: - version "1.6.0" - resolved "https://registry.yarnpkg.com/web3-core-method/-/web3-core-method-1.6.0.tgz#ebe4ea51f5a4fa809bb68185576186359d3982e9" - integrity sha512-cHekyEil4mtcCOk6Q1Zh4y+2o5pTwsLIxP6Bpt4BRtZgdsyPiadYJpkLAVT/quch5xN7Qs5ZwG5AvRCS3VwD2g== +web3-core-method@1.8.0: + version "1.8.0" + resolved "https://registry.yarnpkg.com/web3-core-method/-/web3-core-method-1.8.0.tgz#9c2da8896808917d1679c319f19e2174ba17086c" + integrity sha512-c94RAzo3gpXwf2rf8rL8C77jOzNWF4mXUoUfZYYsiY35cJFd46jQDPI00CB5+ZbICTiA5mlVzMj4e7jAsTqiLA== dependencies: - "@ethereumjs/common" "^2.4.0" - "@ethersproject/transactions" "^5.0.0-beta.135" - web3-core-helpers "1.6.0" - web3-core-promievent "1.6.0" - web3-core-subscriptions "1.6.0" - web3-utils "1.6.0" + "@ethersproject/transactions" "^5.6.2" + web3-core-helpers "1.8.0" + web3-core-promievent "1.8.0" + web3-core-subscriptions "1.8.0" + web3-utils "1.8.0" web3-core-promievent@1.2.1: version "1.2.1" @@ -19554,24 +15138,17 @@ web3-core-promievent@1.2.1: any-promise "1.3.0" eventemitter3 "3.1.2" -web3-core-promievent@1.3.6: - version "1.3.6" - resolved "https://registry.yarnpkg.com/web3-core-promievent/-/web3-core-promievent-1.3.6.tgz#6c27dc79de8f71b74f5d17acaf9aaf593d3cb0c9" - integrity sha512-Z+QzfyYDTXD5wJmZO5wwnRO8bAAHEItT1XNSPVb4J1CToV/I/SbF7CuF8Uzh2jns0Cm1109o666H7StFFvzVKw== - dependencies: - eventemitter3 "4.0.4" - -web3-core-promievent@1.5.3: - version "1.5.3" - resolved "https://registry.yarnpkg.com/web3-core-promievent/-/web3-core-promievent-1.5.3.tgz#3f11833c3dc6495577c274350b61144e0a4dba01" - integrity sha512-CFfgqvk3Vk6PIAxtLLuX+pOMozxkKCY+/GdGr7weMh033mDXEPvwyVjoSRO1PqIKj668/hMGQsVoIgbyxkJ9Mg== +web3-core-promievent@1.7.4: + version "1.7.4" + resolved "https://registry.yarnpkg.com/web3-core-promievent/-/web3-core-promievent-1.7.4.tgz#80a75633fdfe21fbaae2f1e38950edb2f134868c" + integrity sha512-o4uxwXKDldN7ER7VUvDfWsqTx9nQSP1aDssi1XYXeYC2xJbVo0n+z6ryKtmcoWoRdRj7uSpVzal3nEmlr480mA== dependencies: eventemitter3 "4.0.4" -web3-core-promievent@1.6.0: - version "1.6.0" - resolved "https://registry.yarnpkg.com/web3-core-promievent/-/web3-core-promievent-1.6.0.tgz#8b6053ae83cb47164540167fc361469fc604d2dd" - integrity sha512-ZzsevjMXWkhqW9dnVfTfb1OUcK7jKcKPvPIbQ4boJccNgvNZPZKlo8xB4pkAX38n4c59O5mC7Lt/z2QL/M5CeQ== +web3-core-promievent@1.8.0: + version "1.8.0" + resolved "https://registry.yarnpkg.com/web3-core-promievent/-/web3-core-promievent-1.8.0.tgz#979765fd4d37ab0f158f0ee54037b279b737bd53" + integrity sha512-FGLyjAuOaAQ+ZhV6iuw9tg/9WvIkSZXKHQ4mdTyQ8MxVraOtFivOCbuLLsGgapfHYX+RPxsc1j1YzQjKoupagQ== dependencies: eventemitter3 "4.0.4" @@ -19586,39 +15163,27 @@ web3-core-requestmanager@1.2.1: web3-providers-ipc "1.2.1" web3-providers-ws "1.2.1" -web3-core-requestmanager@1.3.6: - version "1.3.6" - resolved "https://registry.yarnpkg.com/web3-core-requestmanager/-/web3-core-requestmanager-1.3.6.tgz#4fea269fe913fd4fca464b4f7c65cb94857b5b2a" - integrity sha512-2rIaeuqeo7QN1Eex7aXP0ZqeteJEPWXYFS/M3r3LXMiV8R4STQBKE+//dnHJXoo2ctzEB5cgd+7NaJM8S3gPyA== - dependencies: - underscore "1.12.1" - util "^0.12.0" - web3-core-helpers "1.3.6" - web3-providers-http "1.3.6" - web3-providers-ipc "1.3.6" - web3-providers-ws "1.3.6" - -web3-core-requestmanager@1.5.3: - version "1.5.3" - resolved "https://registry.yarnpkg.com/web3-core-requestmanager/-/web3-core-requestmanager-1.5.3.tgz#b339525815fd40e3a2a81813c864ddc413f7b6f7" - integrity sha512-9k/Bze2rs8ONix5IZR+hYdMNQv+ark2Ek2kVcrFgWO+LdLgZui/rn8FikPunjE+ub7x7pJaKCgVRbYFXjo3ZWg== +web3-core-requestmanager@1.7.4: + version "1.7.4" + resolved "https://registry.yarnpkg.com/web3-core-requestmanager/-/web3-core-requestmanager-1.7.4.tgz#2dc8a526dab8183dca3fef54658621801b1d0469" + integrity sha512-IuXdAm65BQtPL4aI6LZJJOrKAs0SM5IK2Cqo2/lMNvVMT9Kssq6qOk68Uf7EBDH0rPuINi+ReLP+uH+0g3AnPA== dependencies: util "^0.12.0" - web3-core-helpers "1.5.3" - web3-providers-http "1.5.3" - web3-providers-ipc "1.5.3" - web3-providers-ws "1.5.3" + web3-core-helpers "1.7.4" + web3-providers-http "1.7.4" + web3-providers-ipc "1.7.4" + web3-providers-ws "1.7.4" -web3-core-requestmanager@1.6.0: - version "1.6.0" - resolved "https://registry.yarnpkg.com/web3-core-requestmanager/-/web3-core-requestmanager-1.6.0.tgz#8ef3a3b89cd08983bd94574f9c5893f70a8a6aea" - integrity sha512-CY5paPdiDXKTXPWaEUZekDfUXSuoE2vPxolwqzsvKwFWH5+H1NaXgrc+D5HpufgSvTXawTw0fy7IAicg8+PWqA== +web3-core-requestmanager@1.8.0: + version "1.8.0" + resolved "https://registry.yarnpkg.com/web3-core-requestmanager/-/web3-core-requestmanager-1.8.0.tgz#06189df80cf52d24a195a7ef655031afe8192df3" + integrity sha512-2AoYCs3Owl5foWcf4uKPONyqFygSl9T54L8b581U16nsUirjhoTUGK/PBhMDVcLCmW4QQmcY5A8oPFpkQc1TTg== dependencies: util "^0.12.0" - web3-core-helpers "1.6.0" - web3-providers-http "1.6.0" - web3-providers-ipc "1.6.0" - web3-providers-ws "1.6.0" + web3-core-helpers "1.8.0" + web3-providers-http "1.8.0" + web3-providers-ipc "1.8.0" + web3-providers-ws "1.8.0" web3-core-subscriptions@1.2.1: version "1.2.1" @@ -19629,30 +15194,21 @@ web3-core-subscriptions@1.2.1: underscore "1.9.1" web3-core-helpers "1.2.1" -web3-core-subscriptions@1.3.6: - version "1.3.6" - resolved "https://registry.yarnpkg.com/web3-core-subscriptions/-/web3-core-subscriptions-1.3.6.tgz#ee24e7974d1d72ff6c992c599deba4ef9b308415" - integrity sha512-wi9Z9X5X75OKvxAg42GGIf81ttbNR2TxzkAsp1g+nnp5K8mBwgZvXrIsDuj7Z7gx72Y45mWJADCWjk/2vqNu8g== - dependencies: - eventemitter3 "4.0.4" - underscore "1.12.1" - web3-core-helpers "1.3.6" - -web3-core-subscriptions@1.5.3: - version "1.5.3" - resolved "https://registry.yarnpkg.com/web3-core-subscriptions/-/web3-core-subscriptions-1.5.3.tgz#d7d69c4caad65074212028656e9dc56ca5c2159d" - integrity sha512-L2m9vG1iRN6thvmv/HQwO2YLhOQlmZU8dpLG6GSo9FBN14Uch868Swk0dYVr3rFSYjZ/GETevSXU+O+vhCummA== +web3-core-subscriptions@1.7.4: + version "1.7.4" + resolved "https://registry.yarnpkg.com/web3-core-subscriptions/-/web3-core-subscriptions-1.7.4.tgz#cfbd3fa71081a8c8c6f1a64577a1a80c5bd9826f" + integrity sha512-VJvKWaXRyxk2nFWumOR94ut9xvjzMrRtS38c4qj8WBIRSsugrZr5lqUwgndtj0qx4F+50JhnU++QEqUEAtKm3g== dependencies: eventemitter3 "4.0.4" - web3-core-helpers "1.5.3" + web3-core-helpers "1.7.4" -web3-core-subscriptions@1.6.0: - version "1.6.0" - resolved "https://registry.yarnpkg.com/web3-core-subscriptions/-/web3-core-subscriptions-1.6.0.tgz#8c23b15b434a7c9f937652ecca45d7108e2c54df" - integrity sha512-kY9WZUY/m1URSOv3uTLshoZD9ZDiFKReIzHuPUkxFpD5oYNmr1/aPQNPCrrMxKODR7UVX/D90FxWwCYqHhLaxQ== +web3-core-subscriptions@1.8.0: + version "1.8.0" + resolved "https://registry.yarnpkg.com/web3-core-subscriptions/-/web3-core-subscriptions-1.8.0.tgz#ff66ae4467c8cb4716367248bcefb1845c0f8b83" + integrity sha512-7lHVRzDdg0+Gcog55lG6Q3D8JV+jN+4Ly6F8cSn9xFUAwOkdbgdWsjknQG7t7CDWy21DQkvdiY2BJF8S68AqOA== dependencies: eventemitter3 "4.0.4" - web3-core-helpers "1.6.0" + web3-core-helpers "1.8.0" web3-core@1.2.1: version "1.2.1" @@ -19664,44 +15220,31 @@ web3-core@1.2.1: web3-core-requestmanager "1.2.1" web3-utils "1.2.1" -web3-core@1.3.6: - version "1.3.6" - resolved "https://registry.yarnpkg.com/web3-core/-/web3-core-1.3.6.tgz#a6a761d1ff2f3ee462b8dab679229d2f8e267504" - integrity sha512-gkLDM4T1Sc0T+HZIwxrNrwPg0IfWI0oABSglP2X5ZbBAYVUeEATA0o92LWV8BeF+okvKXLK1Fek/p6axwM/h3Q== - dependencies: - "@types/bn.js" "^4.11.5" - "@types/node" "^12.12.6" - bignumber.js "^9.0.0" - web3-core-helpers "1.3.6" - web3-core-method "1.3.6" - web3-core-requestmanager "1.3.6" - web3-utils "1.3.6" - -web3-core@1.5.3: - version "1.5.3" - resolved "https://registry.yarnpkg.com/web3-core/-/web3-core-1.5.3.tgz#59f8728b27c8305b349051326aa262b9b7e907bf" - integrity sha512-ACTbu8COCu+0eUNmd9pG7Q9EVsNkAg2w3Y7SqhDr+zjTgbSHZV01jXKlapm9z+G3AN/BziV3zGwudClJ4u4xXQ== +web3-core@1.7.4: + version "1.7.4" + resolved "https://registry.yarnpkg.com/web3-core/-/web3-core-1.7.4.tgz#943fff99134baedafa7c65b4a0bbd424748429ff" + integrity sha512-L0DCPlIh9bgIED37tYbe7bsWrddoXYc897ANGvTJ6MFkSNGiMwDkTLWSgYd9Mf8qu8b4iuPqXZHMwIo4atoh7Q== dependencies: - "@types/bn.js" "^4.11.5" + "@types/bn.js" "^5.1.0" "@types/node" "^12.12.6" bignumber.js "^9.0.0" - web3-core-helpers "1.5.3" - web3-core-method "1.5.3" - web3-core-requestmanager "1.5.3" - web3-utils "1.5.3" + web3-core-helpers "1.7.4" + web3-core-method "1.7.4" + web3-core-requestmanager "1.7.4" + web3-utils "1.7.4" -web3-core@1.6.0: - version "1.6.0" - resolved "https://registry.yarnpkg.com/web3-core/-/web3-core-1.6.0.tgz#144eb00f651c9812faf7176abd7ee99d5f45e212" - integrity sha512-o0WsLrJ2yD+HAAc29lGMWJef/MutTyuzpJC0UzLJtIAQJqtpDalzWINEu4j8XYXGk34N/V6vudtzRPo23QEE6g== +web3-core@1.8.0: + version "1.8.0" + resolved "https://registry.yarnpkg.com/web3-core/-/web3-core-1.8.0.tgz#90afce527ac1b1dff8cbed2acbc0336530b8aacf" + integrity sha512-9sCA+Z02ci6zoY2bAquFiDjujRwmSKHiSGi4B8IstML8okSytnzXk1izHYSynE7ahIkguhjWAuXFvX76F5rAbA== dependencies: - "@types/bn.js" "^4.11.5" + "@types/bn.js" "^5.1.0" "@types/node" "^12.12.6" bignumber.js "^9.0.0" - web3-core-helpers "1.6.0" - web3-core-method "1.6.0" - web3-core-requestmanager "1.6.0" - web3-utils "1.6.0" + web3-core-helpers "1.8.0" + web3-core-method "1.8.0" + web3-core-requestmanager "1.8.0" + web3-utils "1.8.0" web3-eth-abi@1.2.1: version "1.2.1" @@ -19712,30 +15255,21 @@ web3-eth-abi@1.2.1: underscore "1.9.1" web3-utils "1.2.1" -web3-eth-abi@1.3.6: - version "1.3.6" - resolved "https://registry.yarnpkg.com/web3-eth-abi/-/web3-eth-abi-1.3.6.tgz#4272ca48d817aa651bbf97b269f5ff10abc2b8a9" - integrity sha512-Or5cRnZu6WzgScpmbkvC6bfNxR26hqiKK4i8sMPFeTUABQcb/FU3pBj7huBLYbp9dH+P5W79D2MqwbWwjj9DoQ== - dependencies: - "@ethersproject/abi" "5.0.7" - underscore "1.12.1" - web3-utils "1.3.6" - -web3-eth-abi@1.5.3: - version "1.5.3" - resolved "https://registry.yarnpkg.com/web3-eth-abi/-/web3-eth-abi-1.5.3.tgz#5aea9394d797f99ca0d9bd40c3417eb07241c96c" - integrity sha512-i/qhuFsoNrnV130CSRYX/z4SlCfSQ4mHntti5yTmmQpt70xZKYZ57BsU0R29ueSQ9/P+aQrL2t2rqkQkAloUxg== +web3-eth-abi@1.7.4: + version "1.7.4" + resolved "https://registry.yarnpkg.com/web3-eth-abi/-/web3-eth-abi-1.7.4.tgz#3fee967bafd67f06b99ceaddc47ab0970f2a614a" + integrity sha512-eMZr8zgTbqyL9MCTCAvb67RbVyN5ZX7DvA0jbLOqRWCiw+KlJKTGnymKO6jPE8n5yjk4w01e165Qb11hTDwHgg== dependencies: - "@ethersproject/abi" "5.0.7" - web3-utils "1.5.3" + "@ethersproject/abi" "^5.6.3" + web3-utils "1.7.4" -web3-eth-abi@1.6.0: - version "1.6.0" - resolved "https://registry.yarnpkg.com/web3-eth-abi/-/web3-eth-abi-1.6.0.tgz#4225608f61ebb0607d80849bb2b20f910780253d" - integrity sha512-fImomGE9McuTMJLwK8Tp0lTUzXqCkWeMm00qPVIwpJ/h7lCw9UFYV9+4m29wSqW6FF+FIZKwc6UBEf9dlx3orA== +web3-eth-abi@1.8.0: + version "1.8.0" + resolved "https://registry.yarnpkg.com/web3-eth-abi/-/web3-eth-abi-1.8.0.tgz#47fdff00bfdfa72064c9c612ff6369986598196d" + integrity sha512-xPeMb2hS9YLQK/Q5YZpkcmzoRGM+/R8bogSrYHhNC3hjZSSU0YRH+1ZKK0f9YF4qDZaPMI8tKWIMSCDIpjG6fg== dependencies: - "@ethersproject/abi" "5.0.7" - web3-utils "1.6.0" + "@ethersproject/abi" "^5.6.3" + web3-utils "1.8.0" web3-eth-accounts@1.2.1: version "1.2.1" @@ -19754,56 +15288,39 @@ web3-eth-accounts@1.2.1: web3-core-method "1.2.1" web3-utils "1.2.1" -web3-eth-accounts@1.3.6: - version "1.3.6" - resolved "https://registry.yarnpkg.com/web3-eth-accounts/-/web3-eth-accounts-1.3.6.tgz#f9fcb50b28ee58090ab292a10d996155caa2b474" - integrity sha512-Ilr0hG6ONbCdSlVKffasCmNwftD5HsNpwyQASevocIQwHdTlvlwO0tb3oGYuajbKOaDzNTwXfz25bttAEoFCGA== +web3-eth-accounts@1.7.4: + version "1.7.4" + resolved "https://registry.yarnpkg.com/web3-eth-accounts/-/web3-eth-accounts-1.7.4.tgz#7a24a4dfe947f7e9d1bae678529e591aa146167a" + integrity sha512-Y9vYLRKP7VU7Cgq6wG1jFaG2k3/eIuiTKAG8RAuQnb6Cd9k5BRqTm5uPIiSo0AP/u11jDomZ8j7+WEgkU9+Btw== 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.12.1" - uuid "3.3.2" - web3-core "1.3.6" - web3-core-helpers "1.3.6" - web3-core-method "1.3.6" - web3-utils "1.3.6" - -web3-eth-accounts@1.5.3: - version "1.5.3" - resolved "https://registry.yarnpkg.com/web3-eth-accounts/-/web3-eth-accounts-1.5.3.tgz#076c816ff4d68c9dffebdc7fd2bfaddcfc163d77" - integrity sha512-pdGhXgeBaEJENMvRT6W9cmji3Zz/46ugFSvmnLLw79qi5EH7XJhKISNVb41eWCrs4am5GhI67GLx5d2s2a72iw== - dependencies: - "@ethereumjs/common" "^2.3.0" - "@ethereumjs/tx" "^3.2.1" + "@ethereumjs/common" "^2.5.0" + "@ethereumjs/tx" "^3.3.2" crypto-browserify "3.12.0" eth-lib "0.2.8" ethereumjs-util "^7.0.10" scrypt-js "^3.0.1" uuid "3.3.2" - web3-core "1.5.3" - web3-core-helpers "1.5.3" - web3-core-method "1.5.3" - web3-utils "1.5.3" + web3-core "1.7.4" + web3-core-helpers "1.7.4" + web3-core-method "1.7.4" + web3-utils "1.7.4" -web3-eth-accounts@1.6.0: - version "1.6.0" - resolved "https://registry.yarnpkg.com/web3-eth-accounts/-/web3-eth-accounts-1.6.0.tgz#530927f4c5b78df93b3ea1203abbb467de29cd04" - integrity sha512-2f6HS4KIH4laAsNCOfbNX3dRiQosqSY2TRK86C8jtAA/QKGdx+5qlPfYzbI2RjG81iayb2+mVbHIaEaBGZ8sGw== +web3-eth-accounts@1.8.0: + version "1.8.0" + resolved "https://registry.yarnpkg.com/web3-eth-accounts/-/web3-eth-accounts-1.8.0.tgz#960d947ee87a49d6c706dc6312334fbfbd6ff812" + integrity sha512-HQ/MDSv4bexwJLvnqsM6xpGE7c2NVOqyhzOZFyMUKXbIwIq85T3TaLnM9pCN7XqMpDcfxqiZ3q43JqQVkzHdmw== dependencies: - "@ethereumjs/common" "^2.3.0" - "@ethereumjs/tx" "^3.2.1" + "@ethereumjs/common" "^2.5.0" + "@ethereumjs/tx" "^3.3.2" crypto-browserify "3.12.0" eth-lib "0.2.8" ethereumjs-util "^7.0.10" scrypt-js "^3.0.1" uuid "3.3.2" - web3-core "1.6.0" - web3-core-helpers "1.6.0" - web3-core-method "1.6.0" - web3-utils "1.6.0" + web3-core "1.8.0" + web3-core-helpers "1.8.0" + web3-core-method "1.8.0" + web3-utils "1.8.0" web3-eth-contract@1.2.1: version "1.2.1" @@ -19819,48 +15336,33 @@ web3-eth-contract@1.2.1: web3-eth-abi "1.2.1" web3-utils "1.2.1" -web3-eth-contract@1.3.6: - version "1.3.6" - resolved "https://registry.yarnpkg.com/web3-eth-contract/-/web3-eth-contract-1.3.6.tgz#cccf4d32dc56917fb6923e778498a9ba2a5ba866" - integrity sha512-8gDaRrLF2HCg+YEZN1ov0zN35vmtPnGf3h1DxmJQK5Wm2lRMLomz9rsWsuvig3UJMHqZAQKD7tOl3ocJocQsmA== - dependencies: - "@types/bn.js" "^4.11.5" - underscore "1.12.1" - web3-core "1.3.6" - web3-core-helpers "1.3.6" - web3-core-method "1.3.6" - web3-core-promievent "1.3.6" - web3-core-subscriptions "1.3.6" - web3-eth-abi "1.3.6" - web3-utils "1.3.6" - -web3-eth-contract@1.5.3: - version "1.5.3" - resolved "https://registry.yarnpkg.com/web3-eth-contract/-/web3-eth-contract-1.5.3.tgz#12b03a4a16ce583a945f874bea2ff2fb4c5b81ad" - integrity sha512-Gdlt1L6cdHe83k7SdV6xhqCytVtOZkjD0kY/15x441AuuJ4JLubCHuqu69k2Dr3tWifHYVys/vG8QE/W16syGg== +web3-eth-contract@1.7.4: + version "1.7.4" + resolved "https://registry.yarnpkg.com/web3-eth-contract/-/web3-eth-contract-1.7.4.tgz#e5761cfb43d453f57be4777b2e5e7e1082078ff7" + integrity sha512-ZgSZMDVI1pE9uMQpK0T0HDT2oewHcfTCv0osEqf5qyn5KrcQDg1GT96/+S0dfqZ4HKj4lzS5O0rFyQiLPQ8LzQ== dependencies: - "@types/bn.js" "^4.11.5" - web3-core "1.5.3" - web3-core-helpers "1.5.3" - web3-core-method "1.5.3" - web3-core-promievent "1.5.3" - web3-core-subscriptions "1.5.3" - web3-eth-abi "1.5.3" - web3-utils "1.5.3" - -web3-eth-contract@1.6.0: - version "1.6.0" - resolved "https://registry.yarnpkg.com/web3-eth-contract/-/web3-eth-contract-1.6.0.tgz#deb946867ad86d32bcbba899d733b681b25ea674" - integrity sha512-ZUtO77zFnxuFtrc+D+iJ3AzNgFXAVcKnhEYN7f1PNz/mFjbtE6dJ+ujO0mvMbxIZF02t9IZv0CIXRpK0rDvZAw== + "@types/bn.js" "^5.1.0" + web3-core "1.7.4" + web3-core-helpers "1.7.4" + web3-core-method "1.7.4" + web3-core-promievent "1.7.4" + web3-core-subscriptions "1.7.4" + web3-eth-abi "1.7.4" + web3-utils "1.7.4" + +web3-eth-contract@1.8.0: + version "1.8.0" + resolved "https://registry.yarnpkg.com/web3-eth-contract/-/web3-eth-contract-1.8.0.tgz#58f4ce0bde74e5ce87663502e409a92abad7b2c5" + integrity sha512-6xeXhW2YoCrz2Ayf2Vm4srWiMOB6LawkvxWJDnUWJ8SMATg4Pgu42C/j8rz/enXbYWt2IKuj0kk8+QszxQbK+Q== dependencies: - "@types/bn.js" "^4.11.5" - web3-core "1.6.0" - web3-core-helpers "1.6.0" - web3-core-method "1.6.0" - web3-core-promievent "1.6.0" - web3-core-subscriptions "1.6.0" - web3-eth-abi "1.6.0" - web3-utils "1.6.0" + "@types/bn.js" "^5.1.0" + web3-core "1.8.0" + web3-core-helpers "1.8.0" + web3-core-method "1.8.0" + web3-core-promievent "1.8.0" + web3-core-subscriptions "1.8.0" + web3-eth-abi "1.8.0" + web3-utils "1.8.0" web3-eth-ens@1.2.1: version "1.2.1" @@ -19876,48 +15378,33 @@ web3-eth-ens@1.2.1: web3-eth-contract "1.2.1" web3-utils "1.2.1" -web3-eth-ens@1.3.6: - version "1.3.6" - resolved "https://registry.yarnpkg.com/web3-eth-ens/-/web3-eth-ens-1.3.6.tgz#0d28c5d4ea7b4462ef6c077545a77956a6cdf175" - integrity sha512-n27HNj7lpSkRxTgSx+Zo7cmKAgyg2ElFilaFlUu/X2CNH23lXfcPm2bWssivH9z0ndhg0OyR4AYFZqPaqDHkJA== - dependencies: - content-hash "^2.5.2" - eth-ens-namehash "2.0.8" - underscore "1.12.1" - web3-core "1.3.6" - web3-core-helpers "1.3.6" - web3-core-promievent "1.3.6" - web3-eth-abi "1.3.6" - web3-eth-contract "1.3.6" - web3-utils "1.3.6" - -web3-eth-ens@1.5.3: - version "1.5.3" - resolved "https://registry.yarnpkg.com/web3-eth-ens/-/web3-eth-ens-1.5.3.tgz#ef6eee1ddf32b1ff9536fc7c599a74f2656bafe1" - integrity sha512-QmGFFtTGElg0E+3xfCIFhiUF+1imFi9eg/cdsRMUZU4F1+MZCC/ee+IAelYLfNTGsEslCqfAusliKOT9DdGGnw== +web3-eth-ens@1.7.4: + version "1.7.4" + resolved "https://registry.yarnpkg.com/web3-eth-ens/-/web3-eth-ens-1.7.4.tgz#346720305379c0a539e226141a9602f1da7bc0c8" + integrity sha512-Gw5CVU1+bFXP5RVXTCqJOmHn71X2ghNk9VcEH+9PchLr0PrKbHTA3hySpsPco1WJAyK4t8SNQVlNr3+bJ6/WZA== dependencies: content-hash "^2.5.2" eth-ens-namehash "2.0.8" - web3-core "1.5.3" - web3-core-helpers "1.5.3" - web3-core-promievent "1.5.3" - web3-eth-abi "1.5.3" - web3-eth-contract "1.5.3" - web3-utils "1.5.3" - -web3-eth-ens@1.6.0: - version "1.6.0" - resolved "https://registry.yarnpkg.com/web3-eth-ens/-/web3-eth-ens-1.6.0.tgz#af13852168d56fa71b9198eb097e96fb93831c2a" - integrity sha512-AG24PNv9qbYHSpjHcU2pViOII0jvIR7TeojJ2bxXSDqfcgHuRp3NZGKv6xFvT4uNI4LEQHUhSC7bzHoNF5t8CA== + web3-core "1.7.4" + web3-core-helpers "1.7.4" + web3-core-promievent "1.7.4" + web3-eth-abi "1.7.4" + web3-eth-contract "1.7.4" + web3-utils "1.7.4" + +web3-eth-ens@1.8.0: + version "1.8.0" + resolved "https://registry.yarnpkg.com/web3-eth-ens/-/web3-eth-ens-1.8.0.tgz#f1937371eac54b087ebe2e871780c2710d39998d" + integrity sha512-/eFbQEwvsMOEiOhw9/iuRXCsPkqAmHHWuFOrThQkozRgcnSTRnvxkkRC/b6koiT5/HaKeUs4yQDg+/ixsIxZxA== dependencies: content-hash "^2.5.2" eth-ens-namehash "2.0.8" - web3-core "1.6.0" - web3-core-helpers "1.6.0" - web3-core-promievent "1.6.0" - web3-eth-abi "1.6.0" - web3-eth-contract "1.6.0" - web3-utils "1.6.0" + web3-core "1.8.0" + web3-core-helpers "1.8.0" + web3-core-promievent "1.8.0" + web3-eth-abi "1.8.0" + web3-eth-contract "1.8.0" + web3-utils "1.8.0" web3-eth-iban@1.2.1: version "1.2.1" @@ -19927,29 +15414,21 @@ web3-eth-iban@1.2.1: bn.js "4.11.8" web3-utils "1.2.1" -web3-eth-iban@1.3.6: - version "1.3.6" - resolved "https://registry.yarnpkg.com/web3-eth-iban/-/web3-eth-iban-1.3.6.tgz#0d6ba21fe78f190af8919e9cd5453882457209e0" - integrity sha512-nfMQaaLA/zsg5W4Oy/EJQbs8rSs1vBAX6b/35xzjYoutXlpHMQadujDx2RerTKhSHqFXSJeQAfE+2f6mdhYkRQ== - dependencies: - bn.js "^4.11.9" - web3-utils "1.3.6" - -web3-eth-iban@1.5.3: - version "1.5.3" - resolved "https://registry.yarnpkg.com/web3-eth-iban/-/web3-eth-iban-1.5.3.tgz#91b1475893a877b10eac1de5cce6eb379fb81b5d" - integrity sha512-vMzmGqolYZvRHwP9P4Nf6G8uYM5aTLlQu2a34vz78p0KlDC+eV1th3+90Qeaupa28EG7OO0IT1F0BejiIauOPw== +web3-eth-iban@1.7.4: + version "1.7.4" + resolved "https://registry.yarnpkg.com/web3-eth-iban/-/web3-eth-iban-1.7.4.tgz#711fb2547fdf0f988060027331b2b6c430505753" + integrity sha512-XyrsgWlZQMv5gRcjXMsNvAoCRvV5wN7YCfFV5+tHUCqN8g9T/o4XUS20vDWD0k4HNiAcWGFqT1nrls02MGZ08w== dependencies: - bn.js "^4.11.9" - web3-utils "1.5.3" + bn.js "^5.2.1" + web3-utils "1.7.4" -web3-eth-iban@1.6.0: - version "1.6.0" - resolved "https://registry.yarnpkg.com/web3-eth-iban/-/web3-eth-iban-1.6.0.tgz#edbe46cedc5b148d53fa455edea6b4eef53b2be7" - integrity sha512-HM/bKBS/e8qg0+Eh7B8C/JVG+GkR4AJty17DKRuwMtrh78YsonPj7GKt99zS4n5sDLFww1Imu/ZIk3+K5uJCjw== +web3-eth-iban@1.8.0: + version "1.8.0" + resolved "https://registry.yarnpkg.com/web3-eth-iban/-/web3-eth-iban-1.8.0.tgz#3af8a0c95b5f7b0b81ab0bcd2075c1e5dda31520" + integrity sha512-4RbvUxcMpo/e5811sE3a6inJ2H4+FFqUVmlRYs0RaXaxiHweahSRBNcpO0UWgmlePTolj0rXqPT2oEr0DuC8kg== dependencies: - bn.js "^4.11.9" - web3-utils "1.6.0" + bn.js "^5.2.1" + web3-utils "1.8.0" web3-eth-personal@1.2.1: version "1.2.1" @@ -19962,41 +15441,29 @@ web3-eth-personal@1.2.1: web3-net "1.2.1" web3-utils "1.2.1" -web3-eth-personal@1.3.6: - version "1.3.6" - resolved "https://registry.yarnpkg.com/web3-eth-personal/-/web3-eth-personal-1.3.6.tgz#226137916754c498f0284f22c55924c87a2efcf0" - integrity sha512-pOHU0+/h1RFRYoh1ehYBehRbcKWP4OSzd4F7mDljhHngv6W8ewMHrAN8O1ol9uysN2MuCdRE19qkRg5eNgvzFQ== - dependencies: - "@types/node" "^12.12.6" - web3-core "1.3.6" - web3-core-helpers "1.3.6" - web3-core-method "1.3.6" - web3-net "1.3.6" - web3-utils "1.3.6" - -web3-eth-personal@1.5.3: - version "1.5.3" - resolved "https://registry.yarnpkg.com/web3-eth-personal/-/web3-eth-personal-1.5.3.tgz#4ebe09e9a77dd49d23d93b36b36cfbf4a6dae713" - integrity sha512-JzibJafR7ak/Icas8uvos3BmUNrZw1vShuNR5Cxjo+vteOC8XMqz1Vr7RH65B4bmlfb3bm9xLxetUHO894+Sew== +web3-eth-personal@1.7.4: + version "1.7.4" + resolved "https://registry.yarnpkg.com/web3-eth-personal/-/web3-eth-personal-1.7.4.tgz#22c399794cb828a75703df8bb4b3c1331b471546" + integrity sha512-O10C1Hln5wvLQsDhlhmV58RhXo+GPZ5+W76frSsyIrkJWLtYQTCr5WxHtRC9sMD1idXLqODKKgI2DL+7xeZ0/g== dependencies: "@types/node" "^12.12.6" - web3-core "1.5.3" - web3-core-helpers "1.5.3" - web3-core-method "1.5.3" - web3-net "1.5.3" - web3-utils "1.5.3" + web3-core "1.7.4" + web3-core-helpers "1.7.4" + web3-core-method "1.7.4" + web3-net "1.7.4" + web3-utils "1.7.4" -web3-eth-personal@1.6.0: - version "1.6.0" - resolved "https://registry.yarnpkg.com/web3-eth-personal/-/web3-eth-personal-1.6.0.tgz#b75a61c0737b8b8bcc11d05db2ed7bfce7e4b262" - integrity sha512-8ohf4qAwbShf4RwES2tLHVqa+pHZnS5Q6tV80sU//bivmlZeyO1W4UWyNn59vu9KPpEYvLseOOC6Muxuvr8mFQ== +web3-eth-personal@1.8.0: + version "1.8.0" + resolved "https://registry.yarnpkg.com/web3-eth-personal/-/web3-eth-personal-1.8.0.tgz#433c35e2e042844402a12d543c4126ea1494b478" + integrity sha512-L7FT4nR3HmsfZyIAhFpEctKkYGOjRC2h6iFKs9gnFCHZga8yLcYcGaYOBIoYtaKom99MuGBoosayWt/Twh7F5A== dependencies: "@types/node" "^12.12.6" - web3-core "1.6.0" - web3-core-helpers "1.6.0" - web3-core-method "1.6.0" - web3-net "1.6.0" - web3-utils "1.6.0" + web3-core "1.8.0" + web3-core-helpers "1.8.0" + web3-core-method "1.8.0" + web3-net "1.8.0" + web3-utils "1.8.0" web3-eth@1.2.1: version "1.2.1" @@ -20017,60 +15484,41 @@ web3-eth@1.2.1: web3-net "1.2.1" web3-utils "1.2.1" -web3-eth@1.3.6: - version "1.3.6" - resolved "https://registry.yarnpkg.com/web3-eth/-/web3-eth-1.3.6.tgz#2c650893d540a7a0eb1365dd5b2dca24ac919b7c" - integrity sha512-9+rnywRRpyX3C4hfsAQXPQh6vHh9XzQkgLxo3gyeXfbhbShUoq2gFVuy42vsRs//6JlsKdyZS7Z3hHPHz2wreA== - dependencies: - underscore "1.12.1" - web3-core "1.3.6" - web3-core-helpers "1.3.6" - web3-core-method "1.3.6" - web3-core-subscriptions "1.3.6" - web3-eth-abi "1.3.6" - web3-eth-accounts "1.3.6" - web3-eth-contract "1.3.6" - web3-eth-ens "1.3.6" - web3-eth-iban "1.3.6" - web3-eth-personal "1.3.6" - web3-net "1.3.6" - web3-utils "1.3.6" - -web3-eth@1.5.3: - version "1.5.3" - resolved "https://registry.yarnpkg.com/web3-eth/-/web3-eth-1.5.3.tgz#d7d1ac7198f816ab8a2088c01e0bf1eda45862fe" - integrity sha512-saFurA1L23Bd7MEf7cBli6/jRdMhD4X/NaMiO2mdMMCXlPujoudlIJf+VWpRWJpsbDFdu7XJ2WHkmBYT5R3p1Q== - dependencies: - web3-core "1.5.3" - web3-core-helpers "1.5.3" - web3-core-method "1.5.3" - web3-core-subscriptions "1.5.3" - web3-eth-abi "1.5.3" - web3-eth-accounts "1.5.3" - web3-eth-contract "1.5.3" - web3-eth-ens "1.5.3" - web3-eth-iban "1.5.3" - web3-eth-personal "1.5.3" - web3-net "1.5.3" - web3-utils "1.5.3" - -web3-eth@1.6.0: - version "1.6.0" - resolved "https://registry.yarnpkg.com/web3-eth/-/web3-eth-1.6.0.tgz#4c9d5fb4eccf9f8744828281757e6ea76af58cbd" - integrity sha512-qJMvai//r0be6I9ghU24/152f0zgJfYC23TMszN3Y6jse1JtjCBP2TlTibFcvkUN1RRdIUY5giqO7ZqAYAmp7w== - dependencies: - web3-core "1.6.0" - web3-core-helpers "1.6.0" - web3-core-method "1.6.0" - web3-core-subscriptions "1.6.0" - web3-eth-abi "1.6.0" - web3-eth-accounts "1.6.0" - web3-eth-contract "1.6.0" - web3-eth-ens "1.6.0" - web3-eth-iban "1.6.0" - web3-eth-personal "1.6.0" - web3-net "1.6.0" - web3-utils "1.6.0" +web3-eth@1.7.4: + version "1.7.4" + resolved "https://registry.yarnpkg.com/web3-eth/-/web3-eth-1.7.4.tgz#a7c1d3ccdbba4de4a82df7e3c4db716e4a944bf2" + integrity sha512-JG0tTMv0Ijj039emXNHi07jLb0OiWSA9O24MRSk5vToTQyDNXihdF2oyq85LfHuF690lXZaAXrjhtLNlYqb7Ug== + dependencies: + web3-core "1.7.4" + web3-core-helpers "1.7.4" + web3-core-method "1.7.4" + web3-core-subscriptions "1.7.4" + web3-eth-abi "1.7.4" + web3-eth-accounts "1.7.4" + web3-eth-contract "1.7.4" + web3-eth-ens "1.7.4" + web3-eth-iban "1.7.4" + web3-eth-personal "1.7.4" + web3-net "1.7.4" + web3-utils "1.7.4" + +web3-eth@1.8.0: + version "1.8.0" + resolved "https://registry.yarnpkg.com/web3-eth/-/web3-eth-1.8.0.tgz#006974a5d5e30644d05814111f9e162a72e4a09c" + integrity sha512-hist52os3OT4TQFB/GxPSMxTh3995sz6LPvQpPvj7ktSbpg9RNSFaSsPlCT63wUAHA3PZb1FemkAIeQM5t72Lw== + dependencies: + web3-core "1.8.0" + web3-core-helpers "1.8.0" + web3-core-method "1.8.0" + web3-core-subscriptions "1.8.0" + web3-eth-abi "1.8.0" + web3-eth-accounts "1.8.0" + web3-eth-contract "1.8.0" + web3-eth-ens "1.8.0" + web3-eth-iban "1.8.0" + web3-eth-personal "1.8.0" + web3-net "1.8.0" + web3-utils "1.8.0" web3-net@1.2.1: version "1.2.1" @@ -20081,32 +15529,23 @@ web3-net@1.2.1: web3-core-method "1.2.1" web3-utils "1.2.1" -web3-net@1.3.6: - version "1.3.6" - resolved "https://registry.yarnpkg.com/web3-net/-/web3-net-1.3.6.tgz#a56492e2227475e38db29394f8bac305a2446e41" - integrity sha512-KhzU3wMQY/YYjyMiQzbaLPt2kut88Ncx2iqjy3nw28vRux3gVX0WOCk9EL/KVJBiAA/fK7VklTXvgy9dZnnipw== - dependencies: - web3-core "1.3.6" - web3-core-method "1.3.6" - web3-utils "1.3.6" - -web3-net@1.5.3: - version "1.5.3" - resolved "https://registry.yarnpkg.com/web3-net/-/web3-net-1.5.3.tgz#545fee49b8e213b0c55cbe74ffd0295766057463" - integrity sha512-0W/xHIPvgVXPSdLu0iZYnpcrgNnhzHMC888uMlGP5+qMCt8VuflUZHy7tYXae9Mzsg1kxaJAS5lHVNyeNw4CoQ== +web3-net@1.7.4: + version "1.7.4" + resolved "https://registry.yarnpkg.com/web3-net/-/web3-net-1.7.4.tgz#3153dfd3423262dd6fbec7aae5467202c4cad431" + integrity sha512-d2Gj+DIARHvwIdmxFQ4PwAAXZVxYCR2lET0cxz4KXbE5Og3DNjJi+MoPkX+WqoUXqimu/EOd4Cd+7gefqVAFDg== dependencies: - web3-core "1.5.3" - web3-core-method "1.5.3" - web3-utils "1.5.3" + web3-core "1.7.4" + web3-core-method "1.7.4" + web3-utils "1.7.4" -web3-net@1.6.0: - version "1.6.0" - resolved "https://registry.yarnpkg.com/web3-net/-/web3-net-1.6.0.tgz#2c28f8787073110a7c2310336889d2dad647e500" - integrity sha512-LFfG95ovTT2sNHkO1TEfsaKpYcxOSUtbuwHQ0K3G0e5nevKDJkPEFIqIcob40yiwcWoqEjENJP9Bjk8CRrZ99Q== +web3-net@1.8.0: + version "1.8.0" + resolved "https://registry.yarnpkg.com/web3-net/-/web3-net-1.8.0.tgz#9acff92d7c647d801bc68df0ff4416f104dbe789" + integrity sha512-kX6EAacK7QrOe7DOh0t5yHS5q2kxZmTCxPVwSz9io9xBeE4n4UhmzGJ/VfhP2eM3OPKYeypcR3LEO6zZ8xn2vw== dependencies: - web3-core "1.6.0" - web3-core-method "1.6.0" - web3-utils "1.6.0" + web3-core "1.8.0" + web3-core-method "1.8.0" + web3-utils "1.8.0" web3-providers-http@1.2.1: version "1.2.1" @@ -20116,29 +15555,23 @@ web3-providers-http@1.2.1: web3-core-helpers "1.2.1" xhr2-cookies "1.1.0" -web3-providers-http@1.3.6: - version "1.3.6" - resolved "https://registry.yarnpkg.com/web3-providers-http/-/web3-providers-http-1.3.6.tgz#36e8724a7424d52827819d53fd75dbf31f5422c2" - integrity sha512-OQkT32O1A06dISIdazpGLveZcOXhEo5cEX6QyiSQkiPk/cjzDrXMw4SKZOGQbbS1+0Vjizm1Hrp7O8Vp2D1M5Q== - dependencies: - web3-core-helpers "1.3.6" - xhr2-cookies "1.1.0" - -web3-providers-http@1.5.3: - version "1.5.3" - resolved "https://registry.yarnpkg.com/web3-providers-http/-/web3-providers-http-1.5.3.tgz#74f170fc3d79eb7941d9fbc34e2a067d61ced0b2" - integrity sha512-5DpUyWGHtDAr2RYmBu34Fu+4gJuBAuNx2POeiJIooUtJ+Mu6pIx4XkONWH6V+Ez87tZAVAsFOkJRTYuzMr3rPw== +web3-providers-http@1.7.4: + version "1.7.4" + resolved "https://registry.yarnpkg.com/web3-providers-http/-/web3-providers-http-1.7.4.tgz#8209cdcb115db5ccae1f550d1c4e3005e7538d02" + integrity sha512-AU+/S+49rcogUER99TlhW+UBMk0N2DxvN54CJ2pK7alc2TQ7+cprNPLHJu4KREe8ndV0fT6JtWUfOMyTvl+FRA== dependencies: - web3-core-helpers "1.5.3" + web3-core-helpers "1.7.4" xhr2-cookies "1.1.0" -web3-providers-http@1.6.0: - version "1.6.0" - resolved "https://registry.yarnpkg.com/web3-providers-http/-/web3-providers-http-1.6.0.tgz#8db4e589abf7197f5d65b12af1bf9726c45f4160" - integrity sha512-sNxHFNv3lnxpmULt34AS6M36IYB/Hzm2Et4yPNzdP1XE644D8sQBZQZaJQdTaza5HfrlwoqU6AOK935armqGuA== +web3-providers-http@1.8.0: + version "1.8.0" + resolved "https://registry.yarnpkg.com/web3-providers-http/-/web3-providers-http-1.8.0.tgz#3fd1e569ead2095343fac17d53160a3bae674c23" + integrity sha512-/MqxwRzExohBWW97mqlCSW/+NHydGRyoEDUS1bAIF2YjfKFwyRtHgrEzOojzkC9JvB+8LofMvbXk9CcltpZapw== dependencies: - web3-core-helpers "1.6.0" - xhr2-cookies "1.1.0" + abortcontroller-polyfill "^1.7.3" + cross-fetch "^3.1.4" + es6-promise "^4.2.8" + web3-core-helpers "1.8.0" web3-providers-ipc@1.2.1: version "1.2.1" @@ -20149,30 +15582,21 @@ web3-providers-ipc@1.2.1: underscore "1.9.1" web3-core-helpers "1.2.1" -web3-providers-ipc@1.3.6: - version "1.3.6" - resolved "https://registry.yarnpkg.com/web3-providers-ipc/-/web3-providers-ipc-1.3.6.tgz#cef8d12c1ebb47adce5ebf597f553c623362cb4a" - integrity sha512-+TVsSd2sSVvVgHG4s6FXwwYPPT91boKKcRuEFXqEfAbUC5t52XOgmyc2LNiD9LzPhed65FbV4LqICpeYGUvSwA== - dependencies: - oboe "2.1.5" - underscore "1.12.1" - web3-core-helpers "1.3.6" - -web3-providers-ipc@1.5.3: - version "1.5.3" - resolved "https://registry.yarnpkg.com/web3-providers-ipc/-/web3-providers-ipc-1.5.3.tgz#4bd7f5e445c2f3c2595fce0929c72bb879320a3f" - integrity sha512-JmeAptugVpmXI39LGxUSAymx0NOFdgpuI1hGQfIhbEAcd4sv7fhfd5D+ZU4oLHbRI8IFr4qfGU0uhR8BXhDzlg== +web3-providers-ipc@1.7.4: + version "1.7.4" + resolved "https://registry.yarnpkg.com/web3-providers-ipc/-/web3-providers-ipc-1.7.4.tgz#02e85e99e48f432c9d34cee7d786c3685ec9fcfa" + integrity sha512-jhArOZ235dZy8fS8090t60nTxbd1ap92ibQw5xIrAQ9m7LcZKNfmLAQUVsD+3dTFvadRMi6z1vCO7zRi84gWHw== dependencies: oboe "2.1.5" - web3-core-helpers "1.5.3" + web3-core-helpers "1.7.4" -web3-providers-ipc@1.6.0: - version "1.6.0" - resolved "https://registry.yarnpkg.com/web3-providers-ipc/-/web3-providers-ipc-1.6.0.tgz#6a3410fd47a67c4a36719fb97f99534ae12aac98" - integrity sha512-ETYdfhpGiGoWpmmSJnONvnPfd3TPivHEGjXyuX+L5FUsbMOVZj9MFLNIS19Cx/YGL8UWJ/8alLJoTcWSIdz/aA== +web3-providers-ipc@1.8.0: + version "1.8.0" + resolved "https://registry.yarnpkg.com/web3-providers-ipc/-/web3-providers-ipc-1.8.0.tgz#d339a24c4d764e459e425d3ac868a551ac33e3ea" + integrity sha512-tAXHtVXNUOgehaBU8pzAlB3qhjn/PRpjdzEjzHNFqtRRTwzSEKOJxFeEhaUA4FzHnTlbnrs8ujHWUitcp1elfg== dependencies: oboe "2.1.5" - web3-core-helpers "1.6.0" + web3-core-helpers "1.8.0" web3-providers-ws@1.2.1: version "1.2.1" @@ -20183,32 +15607,22 @@ web3-providers-ws@1.2.1: web3-core-helpers "1.2.1" websocket "github:web3-js/WebSocket-Node#polyfill/globalThis" -web3-providers-ws@1.3.6: - version "1.3.6" - resolved "https://registry.yarnpkg.com/web3-providers-ws/-/web3-providers-ws-1.3.6.tgz#e1df617bc89d66165abdf2191da0014c505bfaac" - integrity sha512-bk7MnJf5or0Re2zKyhR3L3CjGululLCHXx4vlbc/drnaTARUVvi559OI5uLytc/1k5HKUUyENAxLvetz2G1dnQ== - dependencies: - eventemitter3 "4.0.4" - underscore "1.12.1" - web3-core-helpers "1.3.6" - websocket "^1.0.32" - -web3-providers-ws@1.5.3: - version "1.5.3" - resolved "https://registry.yarnpkg.com/web3-providers-ws/-/web3-providers-ws-1.5.3.tgz#eec6cfb32bb928a4106de506f13a49070a21eabf" - integrity sha512-6DhTw4Q7nm5CFYEUHOJM0gAb3xFx+9gWpVveg3YxJ/ybR1BUvEWo3bLgIJJtX56cYX0WyY6DS35a7f0LOI1kVg== +web3-providers-ws@1.7.4: + version "1.7.4" + resolved "https://registry.yarnpkg.com/web3-providers-ws/-/web3-providers-ws-1.7.4.tgz#6e60bcefb456f569a3e766e386d7807a96f90595" + integrity sha512-g72X77nrcHMFU8hRzQJzfgi/072n8dHwRCoTw+WQrGp+XCQ71fsk2qIu3Tp+nlp5BPn8bRudQbPblVm2uT4myQ== dependencies: eventemitter3 "4.0.4" - web3-core-helpers "1.5.3" + web3-core-helpers "1.7.4" websocket "^1.0.32" -web3-providers-ws@1.6.0: - version "1.6.0" - resolved "https://registry.yarnpkg.com/web3-providers-ws/-/web3-providers-ws-1.6.0.tgz#dc15dc18c30089efda992015fd5254bd2b77af5f" - integrity sha512-eNRmlhOPCpuVYwBrKBBQRLGPFb4U1Uo44r9EWV69Cpo4gP6XeBTl6nkawhLz6DS0fq79apyPfItJVuSfAy77pA== +web3-providers-ws@1.8.0: + version "1.8.0" + resolved "https://registry.yarnpkg.com/web3-providers-ws/-/web3-providers-ws-1.8.0.tgz#a0a73e0606981ea32bed40d215000a64753899de" + integrity sha512-bcZtSifsqyJxwkfQYamfdIRp4nhj9eJd7cxHg1uUkfLJK125WP96wyJL1xbPt7qt0MpfnTFn8/UuIqIB6nFENg== dependencies: eventemitter3 "4.0.4" - web3-core-helpers "1.6.0" + web3-core-helpers "1.8.0" websocket "^1.0.32" web3-shh@1.2.1: @@ -20221,35 +15635,25 @@ web3-shh@1.2.1: web3-core-subscriptions "1.2.1" web3-net "1.2.1" -web3-shh@1.3.6: - version "1.3.6" - resolved "https://registry.yarnpkg.com/web3-shh/-/web3-shh-1.3.6.tgz#4e3486c7eca5cbdb87f88910948223a5b7ea6c20" - integrity sha512-9zRo415O0iBslxBnmu9OzYjNErzLnzOsy+IOvSpIreLYbbAw0XkDWxv3SfcpKnTIWIACBR4AYMIxmmyi5iB3jw== - dependencies: - web3-core "1.3.6" - web3-core-method "1.3.6" - web3-core-subscriptions "1.3.6" - web3-net "1.3.6" - -web3-shh@1.5.3: - version "1.5.3" - resolved "https://registry.yarnpkg.com/web3-shh/-/web3-shh-1.5.3.tgz#3c04aa4cda9ba0b746d7225262401160f8e38b13" - integrity sha512-COfEXfsqoV/BkcsNLRxQqnWc1Teb8/9GxdGag5GtPC5gQC/vsN+7hYVJUwNxY9LtJPKYTij2DHHnx6UkITng+Q== +web3-shh@1.7.4: + version "1.7.4" + resolved "https://registry.yarnpkg.com/web3-shh/-/web3-shh-1.7.4.tgz#bee91cce2737c529fd347274010b548b6ea060f1" + integrity sha512-mlSZxSYcMkuMCxqhTYnZkUdahZ11h+bBv/8TlkXp/IHpEe4/Gg+KAbmfudakq3EzG/04z70XQmPgWcUPrsEJ+A== dependencies: - web3-core "1.5.3" - web3-core-method "1.5.3" - web3-core-subscriptions "1.5.3" - web3-net "1.5.3" + web3-core "1.7.4" + web3-core-method "1.7.4" + web3-core-subscriptions "1.7.4" + web3-net "1.7.4" -web3-shh@1.6.0: - version "1.6.0" - resolved "https://registry.yarnpkg.com/web3-shh/-/web3-shh-1.6.0.tgz#838a3435dce1039f669a48e53e948062de197931" - integrity sha512-ymN0OFL81WtEeSyb+PFpuUv39fR3frGwsZnIg5EVPZvrOIdaDSFcGSLDmafUt0vKSubvLMVYIBOCskRD6YdtEQ== +web3-shh@1.8.0: + version "1.8.0" + resolved "https://registry.yarnpkg.com/web3-shh/-/web3-shh-1.8.0.tgz#b4abbf4f59d097ce2f74360e61e2e5c0bd6507c7" + integrity sha512-DNRgSa9Jf9xYFUGKSMylrf+zt3MPjhI2qF+UWX07o0y3+uf8zalDGiJOWvIS4upAsdPiKKVJ7co+Neof47OMmg== dependencies: - web3-core "1.6.0" - web3-core-method "1.6.0" - web3-core-subscriptions "1.6.0" - web3-net "1.6.0" + web3-core "1.8.0" + web3-core-method "1.8.0" + web3-core-subscriptions "1.8.0" + web3-net "1.8.0" web3-utils@1.2.1: version "1.2.1" @@ -20264,53 +15668,25 @@ web3-utils@1.2.1: underscore "1.9.1" utf8 "3.0.0" -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== - 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-utils@1.3.6: - 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" - ethereum-bloom-filters "^1.0.6" - 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@1.5.3: - version "1.5.3" - resolved "https://registry.yarnpkg.com/web3-utils/-/web3-utils-1.5.3.tgz#e914c9320cd663b2a09a5cb920ede574043eb437" - integrity sha512-56nRgA+Ad9SEyCv39g36rTcr5fpsd4L9LgV3FK0aB66nAMazLAA6Qz4lH5XrUKPDyBIPGJIR+kJsyRtwcu2q1Q== +web3-utils@1.7.4: + version "1.7.4" + resolved "https://registry.yarnpkg.com/web3-utils/-/web3-utils-1.7.4.tgz#eb6fa3706b058602747228234453811bbee017f5" + integrity sha512-acBdm6Evd0TEZRnChM/MCvGsMwYKmSh7OaUfNf5OKG0CIeGWD/6gqLOWIwmwSnre/2WrA1nKGId5uW2e5EfluA== dependencies: - bn.js "^4.11.9" - eth-lib "0.2.8" + bn.js "^5.2.1" ethereum-bloom-filters "^1.0.6" + ethereumjs-util "^7.1.0" ethjs-unit "0.1.6" number-to-bn "1.7.0" randombytes "^2.1.0" utf8 "3.0.0" -web3-utils@1.6.0, web3-utils@^1.0.0-beta.31, web3-utils@^1.2.5, web3-utils@^1.3.0: - version "1.6.0" - resolved "https://registry.yarnpkg.com/web3-utils/-/web3-utils-1.6.0.tgz#1975c5ee5b7db8a0836eb7004848a7cd962d1ddc" - integrity sha512-bgCAWAeQnJF035YTFxrcHJ5mGEfTi/McsjqldZiXRwlHK7L1PyOqvXiQLE053dlzvy1kdAxWl/sSSfLMyNUAXg== +web3-utils@1.8.0, web3-utils@^1.0.0-beta.31, web3-utils@^1.2.5, web3-utils@^1.3.0: + version "1.8.0" + resolved "https://registry.yarnpkg.com/web3-utils/-/web3-utils-1.8.0.tgz#0a506f8c6af9a2ad6ba79689892662769534fc03" + integrity sha512-7nUIl7UWpLVka2f09CMbKOSEvorvHnaugIabU4mj7zfMvm0tSByLcEu3eyV9qgS11qxxLuOkzBIwCstTflhmpQ== dependencies: - bn.js "^4.11.9" + bn.js "^5.2.1" ethereum-bloom-filters "^1.0.6" ethereumjs-util "^7.1.0" ethjs-unit "0.1.6" @@ -20331,92 +15707,38 @@ web3@1.2.1: web3-shh "1.2.1" web3-utils "1.2.1" -web3@1.3.6: - version "1.3.6" - resolved "https://registry.yarnpkg.com/web3/-/web3-1.3.6.tgz#599425461c3f9a8cbbefa70616438995f4a064cc" - integrity sha512-jEpPhnL6GDteifdVh7ulzlPrtVQeA30V9vnki9liYlUvLV82ZM7BNOQJiuzlDePuE+jZETZSP/0G/JlUVt6pOA== - dependencies: - web3-bzz "1.3.6" - web3-core "1.3.6" - web3-eth "1.3.6" - web3-eth-personal "1.3.6" - web3-net "1.3.6" - web3-shh "1.3.6" - web3-utils "1.3.6" - -web3@1.5.3: - version "1.5.3" - resolved "https://registry.yarnpkg.com/web3/-/web3-1.5.3.tgz#11882679453c645bf33620fbc255a243343075aa" - integrity sha512-eyBg/1K44flfv0hPjXfKvNwcUfIVDI4NX48qHQe6wd7C8nPSdbWqo9vLy6ksZIt9NLa90HjI8HsGYgnMSUxn6w== - dependencies: - web3-bzz "1.5.3" - web3-core "1.5.3" - web3-eth "1.5.3" - web3-eth-personal "1.5.3" - web3-net "1.5.3" - web3-shh "1.5.3" - web3-utils "1.5.3" - -web3@^1.0.0-beta.34, web3@^1.2.5: - version "1.6.0" - resolved "https://registry.yarnpkg.com/web3/-/web3-1.6.0.tgz#d8fa0cd9e7bf252f9fe43bb77dc42bc6671affde" - integrity sha512-rWpXnO88MiVX5yTRqMBCVKASxc7QDkXZZUl1D48sKlbX4dt3BAV+nVMVUKCBKiluZ5Bp8pDrVCUdPx/jIYai5Q== - dependencies: - web3-bzz "1.6.0" - web3-core "1.6.0" - web3-eth "1.6.0" - web3-eth-personal "1.6.0" - web3-net "1.6.0" - web3-shh "1.6.0" - web3-utils "1.6.0" - -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= +web3@1.7.4: + version "1.7.4" + resolved "https://registry.yarnpkg.com/web3/-/web3-1.7.4.tgz#00c9aef8e13ade92fd773d845fff250535828e93" + integrity sha512-iFGK5jO32vnXM/ASaJBaI0+gVR6uHozvYdxkdhaeOCD6HIQ4iIXadbO2atVpE9oc/H8l2MovJ4LtPhG7lIBN8A== + dependencies: + web3-bzz "1.7.4" + web3-core "1.7.4" + web3-eth "1.7.4" + web3-eth-personal "1.7.4" + web3-net "1.7.4" + web3-shh "1.7.4" + web3-utils "1.7.4" + +web3@^1.0.0-beta.34, web3@^1.2.5, web3@^1.8.0: + version "1.8.0" + resolved "https://registry.yarnpkg.com/web3/-/web3-1.8.0.tgz#3ca5f0b32de6a1f626407740411219035b5fde64" + integrity sha512-sldr9stK/SALSJTgI/8qpnDuBJNMGjVR84hJ+AcdQ+MLBGLMGsCDNubCoyO6qgk1/Y9SQ7ignegOI/7BPLoiDA== + dependencies: + web3-bzz "1.8.0" + web3-core "1.8.0" + web3-eth "1.8.0" + web3-eth-personal "1.8.0" + web3-net "1.8.0" + web3-shh "1.8.0" + web3-utils "1.8.0" webidl-conversions@^3.0.0: version "3.0.1" resolved "https://registry.yarnpkg.com/webidl-conversions/-/webidl-conversions-3.0.1.tgz#24534275e2a7bc6be7bc86611cc16ae0a5654871" - integrity sha1-JFNCdeKnvGvnvIZhHMFq4KVlSHE= + integrity sha512-2JAn3z8AR6rjK8Sm8orRC0h/bcl/DqL7tRPdGZ4I1CjdF+EaMLmYxBHyXuKL849eucPFhvBoxMsflfOb8kxaeQ== -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, websocket@^1.0.31, websocket@^1.0.32: +websocket@^1.0.28, 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== @@ -20449,22 +15771,20 @@ websql@1.0.0: sqlite3 "^4.0.0" tiny-queue "^0.2.1" -whatwg-fetch@2.0.4: +whatwg-fetch@^2.0.4: version "2.0.4" resolved "https://registry.yarnpkg.com/whatwg-fetch/-/whatwg-fetch-2.0.4.tgz#dde6a5df315f9d39991aa17621853d720b85566f" integrity sha512-dcQ1GWpOD/eEQ97k66aiEVpNnapVj90/+R+SXTPYGHpYBBypfKJEQjLrvMZ7YXbKm21gXd4NcuxUTjiv1YtLng== -whatwg-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" +whatwg-mimetype@^3.0.0: + version "3.0.0" + resolved "https://registry.yarnpkg.com/whatwg-mimetype/-/whatwg-mimetype-3.0.0.tgz#5fa1a7623867ff1af6ca3dc72ad6b8a4208beba7" + integrity sha512-nt+N2dzIutVRxARx1nghPKGv1xHikU7HKdfafKkLNLindmPU/ch3U31NOCGGA/dmPcmb1VlofO0vnKAcsm0o/Q== whatwg-url@^5.0.0: version "5.0.0" resolved "https://registry.yarnpkg.com/whatwg-url/-/whatwg-url-5.0.0.tgz#966454e8765462e37644d3626f6742ce8b70965d" - integrity sha1-lmRU6HZUYuN2RNNib2dCzotwll0= + integrity sha512-saE57nupxk6v3HY35+jzBwYa0rKSy0XR8JSxZPwgLr7ys0IBzhGviA1/TUGJLmSVqs8pb9AnvICXEuOHLprYTw== dependencies: tr46 "~0.0.3" webidl-conversions "^3.0.0" @@ -20472,12 +15792,12 @@ whatwg-url@^5.0.0: when@: version "3.7.8" resolved "https://registry.yarnpkg.com/when/-/when-3.7.8.tgz#c7130b6a7ea04693e842cdc9e7a1f2aa39a39f82" - integrity sha1-xxMLan6gRpPoQs3J56Hyqjmjn4I= + integrity sha512-5cZ7mecD3eYcMiCH4wtRPA5iFJZ50BJYDfckI5RRpQiktMiYTcn0ccLTZOvcbBume+1304fQztxeNzNS9Gvrnw== wherearewe@^1.0.0: - version "1.0.1" - resolved "https://registry.yarnpkg.com/wherearewe/-/wherearewe-1.0.1.tgz#6e5959d29231bea3b87b18bb96ad50e3a8217352" - integrity sha512-K77B01OHS3MqBQAMh1o51g0hwKJpj+NgF9YLZPnqgK0xhKSexxlvCXVt3sL/0+0V73Qwni2n0licJv9KpFbtOw== + version "1.0.2" + resolved "https://registry.yarnpkg.com/wherearewe/-/wherearewe-1.0.2.tgz#6129a5c5a4c90bdb5c0840d75906884c8420e423" + integrity sha512-HyLZ7n1Yox+w1qWaFEgP/sMs5D7ka2UXmoVNaY0XzbEHLGljo4ScBchYm6cWRYNO33tmFX3Mgg4BiZkDOjihyw== dependencies: is-electron "^2.2.0" @@ -20495,26 +15815,26 @@ which-boxed-primitive@^1.0.2: which-module@^1.0.0: version "1.0.0" resolved "https://registry.yarnpkg.com/which-module/-/which-module-1.0.0.tgz#bba63ca861948994ff307736089e3b96026c2a4f" - integrity sha1-u6Y8qGGUiZT/MHc2CJ47lgJsKk8= + integrity sha512-F6+WgncZi/mJDrammbTuHe1q0R5hOXv/mBaiNA2TCNT/LTHusX0V+CJnj9XT8ki5ln2UZyyddDgHfCzyrOH7MQ== which-module@^2.0.0: version "2.0.0" resolved "https://registry.yarnpkg.com/which-module/-/which-module-2.0.0.tgz#d9ef07dce77b9902b8a3a8fa4b31c3e3f7e6e87a" - integrity sha1-2e8H3Od7mQK4o6j6SzHD4/fm6Ho= + integrity sha512-B+enWhmw6cjfVC7kS8Pj9pCrKSc5txArRyaYGe088shv/FGWH+0Rjx/xPgtsWfsUtS27FkP697E4DDhgrgoc0Q== which-typed-array@^1.1.2: - version "1.1.7" - resolved "https://registry.yarnpkg.com/which-typed-array/-/which-typed-array-1.1.7.tgz#2761799b9a22d4b8660b3c1b40abaa7739691793" - integrity sha512-vjxaB4nfDqwKI0ws7wZpxIlde1XrLX5uB0ZjpfshgmapJMD7jJWhZI+yToJTqaFByF0eNBcYxbjmCzoRP7CfEw== + version "1.1.8" + resolved "https://registry.yarnpkg.com/which-typed-array/-/which-typed-array-1.1.8.tgz#0cfd53401a6f334d90ed1125754a42ed663eb01f" + integrity sha512-Jn4e5PItbcAHyLoRDwvPj1ypu27DJbtdYXUa5zsinrUx77Uvfb0cXwwnGMTn7cjUfhhqgVQnVJCwF+7cgU7tpw== dependencies: available-typed-arrays "^1.0.5" call-bind "^1.0.2" - es-abstract "^1.18.5" - foreach "^2.0.5" + es-abstract "^1.20.0" + for-each "^0.3.3" has-tostringtag "^1.0.0" - is-typed-array "^1.1.7" + is-typed-array "^1.1.9" -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== @@ -20528,34 +15848,34 @@ which@2.0.2, which@^2.0.1: 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= +wide-align@^1.1.0: + version "1.1.5" + resolved "https://registry.yarnpkg.com/wide-align/-/wide-align-1.1.5.tgz#df1d4c206854369ecf3c9a4898f1b23fbd9d15d3" + integrity sha512-eDMORYaPNZ4sQIuuYPDHdQvf4gyCF9rEEV/yPxGfwPkRodwEgiMUUXTx/dex+Me0wxx53S+NgUHaP7y3MGlDmg== dependencies: - bs58check "<3.0.0" + string-width "^1.0.2 || 2 || 3 || 4" 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= + integrity sha512-1pTPQDKTdd61ozlKGNCjhNRd+KPmgLSGa3mZTHoOliaGcESD8G1PXhh7c1fgiPjVbNVfgy2Faw4BI8/m0cC8Mg== 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= + integrity sha512-UD7d8HFA2+PZsbKyaOCEy8gMh1oDtHgJh1LfgjQ4zVXmYjAT/kvz3PueITKuqDiIXQe7yzpPnxX3lNc+AhQMyw== with@^5.0.0: version "5.1.1" resolved "https://registry.yarnpkg.com/with/-/with-5.1.1.tgz#fa4daa92daf32c4ea94ed453c81f04686b575dfe" - integrity sha1-+k2qktrzLE6pTtRTyB8EaGtXXf4= + integrity sha512-uAnSsFGfSpF6DNhBXStvlZILfHJfJu4eUkfbRGk94kGO1Ta7bg6FwfvoOhhyHAJuFbCw+0xk4uJ3u57jLvlCJg== dependencies: acorn "^3.1.0" acorn-globals "^3.0.0" @@ -20568,22 +15888,27 @@ word-wrap@~1.2.3: wordwrap@0.0.2: version "0.0.2" resolved "https://registry.yarnpkg.com/wordwrap/-/wordwrap-0.0.2.tgz#b79669bb42ecb409f83d583cad52ca17eaa1643f" - integrity sha1-t5Zpu0LstAn4PVg8rVLKF+qhZD8= + integrity sha512-xSBsCeh+g+dinoBv3GAOWM4LcVVO68wLXRanibtBSdUvkGWQRGeE9P7IwU9EmDDi4jA6L44lz15CGMwdw9N5+Q== wordwrap@^1.0.0: version "1.0.0" resolved "https://registry.yarnpkg.com/wordwrap/-/wordwrap-1.0.0.tgz#27584810891456a4171c8d0226441ade90cbcaeb" - integrity sha1-J1hIEIkUVqQXHI0CJkQa3pDLyus= + integrity sha512-gvVzJFlPycKc5dZN4yPkP8w7Dc37BtP1yczEneOb4uq34pXZcvrtRTmWV8W+Ume+XCxKgbjM+nevkyFPMybd4Q== -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== +workerpool@6.2.0: + version "6.2.0" + resolved "https://registry.yarnpkg.com/workerpool/-/workerpool-6.2.0.tgz#827d93c9ba23ee2019c3ffaff5c27fccea289e8b" + integrity sha512-Rsk5qQHJ9eowMH28Jwhe8HEbmdYDX4lwoMWshiCXugjtHqMD9ZbiqSDLxcsfdqsETPzVUtX5s1Z5kStiIM6l4A== + +workerpool@6.2.1: + version "6.2.1" + resolved "https://registry.yarnpkg.com/workerpool/-/workerpool-6.2.1.tgz#46fc150c17d826b86a008e5a4508656777e9c343" + integrity sha512-ILEIE97kDZvF9Wb9f6h5aXK4swSlKGUcOEGiIYb2OOu/IrDU9iwj0fD//SsA6E5ibwJxpEvhullJY4Sl4GcpAw== 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= + integrity sha512-vAaEaDM946gbNpH5pLVNR+vX2ht6n0Bt3GXwVB1AuAqZosOvHNF3P7wDnh8KLkSqgUh0uh77le7Owgoz+Z9XBw== dependencies: string-width "^1.0.1" strip-ansi "^3.0.1" @@ -20618,12 +15943,12 @@ wrap-ansi@^7.0.0: wrappy@1: version "1.0.2" resolved "https://registry.yarnpkg.com/wrappy/-/wrappy-1.0.2.tgz#b5243d8f3ec1aa35f1364605bc0d1036e30ab69f" - integrity sha1-tSQ9jz7BqjXxNkYFvA0QNuMKtp8= + integrity sha512-l4Sp/DRseor9wL6EvV2+TuQn63dMkPjZ/sp9XkghTEbV9KlPS1xUsZ3u7/IQO4wxtcFB4bgpQPRcR3QCvezPcQ== 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= + integrity sha512-IJrvkhbAnj89W/GAVdVgbnPiVw5Ntg/B4tc/MUCIEwj/g6JIww1DWJyB/yBMT3yw2/TkT6IUZ0+IYef3flEw8A== dependencies: readable-stream "~0.0.2" @@ -20634,11 +15959,6 @@ write@1.0.3: dependencies: mkdirp "^0.5.1" -ws@7.4.5: - version "7.4.5" - resolved "https://registry.yarnpkg.com/ws/-/ws-7.4.5.tgz#a484dd851e9beb6fdb420027e3885e8ce48986c1" - integrity sha512-xzyu3hFvomRfXKH8vOFMU3OguG6oOvhXMo3xsGy3xWExqaM2dxBbVxuD99O7m3ZUFMvvscsZDqxfgMaRr/Nr1g== - ws@7.4.6: version "7.4.6" resolved "https://registry.yarnpkg.com/ws/-/ws-7.4.6.tgz#5654ca8ecdeee47c33a9a4bf6d28e2be2980377c" @@ -20653,17 +15973,17 @@ ws@^3.0.0: safe-buffer "~5.1.0" ultron "~1.1.0" -ws@^5.1.1, ws@^5.2.2: +ws@^5.1.1: version "5.2.3" resolved "https://registry.yarnpkg.com/ws/-/ws-5.2.3.tgz#05541053414921bc29c63bee14b8b0dd50b07b3d" integrity sha512-jZArVERrMsKUatIdnLzqvcfydI85dvd/Fp1u/VOpfdDWQ4c9qWXe+VIeAbQ5FrDwciAkr+lzofXLz3Kuf26AOA== dependencies: async-limiter "~1.0.0" -"ws@^5.2.0 || ^6.0.0 || ^7.0.0", ws@^7.2.1, ws@^7.3.1, ws@^7.4.3, ws@^7.4.6, ws@^7.5.0: - version "7.5.5" - resolved "https://registry.yarnpkg.com/ws/-/ws-7.5.5.tgz#8b4bc4af518cfabd0473ae4f99144287b33eb881" - integrity sha512-BAkMFcAzl8as1G/hArkxOxq3G7pjUqQ3gzYbLL0/5zNkph70e+lCoxBGnm6AW1+/aiNeV4fnKqZ8m4GZewmH2w== +ws@^7.2.0, ws@^7.2.1, ws@^7.3.1, ws@^7.4.6: + version "7.5.9" + resolved "https://registry.yarnpkg.com/ws/-/ws-7.5.9.tgz#54fa7db29f4c7cec68b1ddd3a89de099942bb591" + integrity sha512-F+P9Jil7UiSKSkppIiD94dN07AwvFixvLIj1Og1Rl9GGMuNipJnV9JzjD6XuqmAeiswGvUmNLjr5cFuXwNS77Q== ws@~8.2.3: version "8.2.3" @@ -20693,7 +16013,7 @@ xhr-request@^1.0.1, xhr-request@^1.1.0: xhr2-cookies@1.1.0: version "1.1.0" resolved "https://registry.yarnpkg.com/xhr2-cookies/-/xhr2-cookies-1.1.0.tgz#7d77449d0999197f155cb73b23df72505ed89d48" - integrity sha1-fXdEnQmZGX8VXLc7I99yUF7YnUg= + integrity sha512-hjXUA6q+jl/bd8ADHcVfFsSPIf+tyLIjuO9TwJC9WI6JP2zKcS7C+p56I9kCLLsaCiNT035iYvEUUzdEFj/8+g== dependencies: cookiejar "^2.1.1" @@ -20707,15 +16027,10 @@ xhr@^2.0.4, xhr@^2.2.0, xhr@^2.3.3: 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= - xml2js@^0.1.0: version "0.1.14" resolved "https://registry.yarnpkg.com/xml2js/-/xml2js-0.1.14.tgz#5274e67f5a64c5f92974cd85139e0332adc6b90c" - integrity sha1-UnTmf1pkxfkpdM2FE54DMq3GuQw= + integrity sha512-pbdws4PPPNc1HPluSUKamY4GWMk592K7qwcj6BExbVOhhubub8+pMda/ql68b6L3luZs/OGjGSB5goV7SnmgnA== dependencies: sax ">=0.1.1" @@ -20727,7 +16042,7 @@ xmlhttprequest-ssl@~2.0.0: 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= + integrity sha512-58Im/U0mlVBLM38NdZjHyhuMtCqa61469k2YP/AaPbvCoV9aQGUpbJBj1QRm2ytRiVQBD/fsw7L2bJGDVQswBA== xsalsa20@^1.1.0: version "1.2.0" @@ -20735,14 +16050,14 @@ xsalsa20@^1.1.0: integrity sha512-FIr/DEeoHfj7ftfylnoFt3rAIRoWXpx2AoDfrT2qD2wtp7Dp+COajvs/Icb7uHqRW9m60f5iXZwdsJJO3kvb7w== xss@^1.0.8: - version "1.0.10" - resolved "https://registry.yarnpkg.com/xss/-/xss-1.0.10.tgz#5cd63a9b147a755a14cb0455c7db8866120eb4d2" - integrity sha512-qmoqrRksmzqSKvgqzN0055UFWY7OKx1/9JWeRswwEVX9fCG5jcYRxa/A2DHcmZX6VJvjzHRQ2STeeVcQkrmLSw== + version "1.0.14" + resolved "https://registry.yarnpkg.com/xss/-/xss-1.0.14.tgz#4f3efbde75ad0d82e9921cc3c95e6590dd336694" + integrity sha512-og7TEJhXvn1a7kzZGQ7ETjdQVS2UfZyTlsEdDOqvQF7GoxNfY+0YLCzBy1kPdsDDx4QuNAonQPddpsn6Xl/7sw== dependencies: commander "^2.20.3" cssfilter "0.0.10" -"xtend@>=4.0.0 <4.1.0-0", xtend@^4.0.0, xtend@^4.0.1, 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== @@ -20750,7 +16065,7 @@ xss@^1.0.8: xtend@~2.1.1: version "2.1.2" resolved "https://registry.yarnpkg.com/xtend/-/xtend-2.1.2.tgz#6efecc2a4dad8e6962c4901b337ce7ba87b5d28b" - integrity sha1-bv7MKk2tjmlixJAbM3znuoe10os= + integrity sha512-vMNKzr2rHP9Dp/e1NQFnLQlwlhp9L/LfvnsVdHxN1f+uggyVI3i08uD14GPvCToPkdsRfyPqIyYGmIk58V98ZQ== dependencies: object-keys "~0.4.0" @@ -20764,15 +16079,15 @@ y18n@^4.0.0: 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= + integrity sha512-MvQa//+KcZCUkBTIC9blM+CU9J2GzuTytsOUwf2lidtvkx/6gnEp1QvJv34t9vdjhFmha/mUiNDbN0D0mJWdug== yallist@^3.0.0, yallist@^3.0.2, yallist@^3.1.1: version "3.1.1" @@ -20805,36 +16120,23 @@ yargs-parser@13.1.2, yargs-parser@^13.1.0, yargs-parser@^13.1.2: camelcase "^5.0.0" decamelize "^1.2.0" -yargs-parser@^15.0.1: - version "15.0.3" - resolved "https://registry.yarnpkg.com/yargs-parser/-/yargs-parser-15.0.3.tgz#316e263d5febe8b38eef61ac092b33dfcc9b1115" - integrity sha512-/MVEVjTXy/cGAjdtQf8dW3V9b97bPN7rNn8ETj6BmAQL7ibC7O1Q9SPJbGjgh3SlwoBNXMzj/ZGIj8mBgl12YA== - 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@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@^2.4.0, yargs-parser@^2.4.1: +yargs-parser@^2.4.1: version "2.4.1" resolved "https://registry.yarnpkg.com/yargs-parser/-/yargs-parser-2.4.1.tgz#85568de3cf150ff49fa51825f03a8c880ddcc5c4" - integrity sha1-hVaN488VD/SfpRgl8DqMiA3cxcQ= + integrity sha512-9pIKIJhnI5tonzG6OnCFlz/yln8xHYcGl+pn3xR0Vzff0vzN1PbNRaelgfgRUwZ3s4i3jvxT9WhmUGL4whnasA== dependencies: 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-parser@^20.2.2: + version "20.2.9" + resolved "https://registry.yarnpkg.com/yargs-parser/-/yargs-parser-20.2.9.tgz#2eb7dc3b0289718fc295f362753845c41a0c94ee" + integrity sha512-y11nGElTIV+CT3Zv9t7VKl+Q3hTQoT9a1Qzezhhl6Rp21gJ/IVTW7Z3y9EWXhuUBC2Shnf+DX0antecpAwSP8w== yargs-unparser@1.6.0: version "1.6.0" @@ -20845,16 +16147,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" @@ -20889,62 +16190,23 @@ 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" + y18n "^5.0.5" + yargs-parser "^20.2.2" yargs@^4.7.1: version "4.8.1" resolved "https://registry.yarnpkg.com/yargs/-/yargs-4.8.1.tgz#c0c42924ca4aaa6b0e6da1739dfb216439f9ddc0" - integrity sha1-wMQpJMpKqmsObaFznfshZDn53cA= + integrity sha512-LqodLrnIDM3IFT+Hf/5sxBnEGECrfdC1uIbgZeJmESCSo4HoCAaKEus8MylXHAkdacGc0ye+Qa+dpkuom8uVYA== dependencies: cliui "^3.2.0" decamelize "^1.1.1" @@ -20961,29 +16223,10 @@ yargs@^4.7.1: y18n "^3.2.1" yargs-parser "^2.4.1" -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= + integrity sha512-QFzUah88GAGy9lyDKGBqZdkYApt63rCXYBGYnEP4xDJPXNqXXnBDACnbrXnViV6jRSqAePwrATi2i8mfYm4L1A== dependencies: camelcase "^1.0.2" cliui "^2.1.0" @@ -20993,38 +16236,12 @@ yargs@~3.10.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= + integrity sha512-p4a9I6X6nu6IhoGmBqAcbJy1mlC4j27vEPZX9F4L4/vZT3Lyq1VkFHw/V/PUcB9Buo+DG3iHkT0x3Qya58zc3g== dependencies: buffer-crc32 "~0.2.3" fd-slicer "~1.1.0" -yeast@0.1.2: - version "0.1.2" - resolved "https://registry.yarnpkg.com/yeast/-/yeast-0.1.2.tgz#008e06d8094320c372dbc2f8ed76a0ca6c8ac419" - integrity sha1-AI4G2AlDIMNy28L47XagymyKxBk= - 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-ts@~1.1.0: - version "1.1.0" - resolved "https://registry.yarnpkg.com/zen-observable-ts/-/zen-observable-ts-1.1.0.tgz#2d1aa9d79b87058e9b75698b92791c1838551f83" - integrity sha512-1h4zlLSqI2cRLPJUHJFL8bCWHhkpuXkF+dbGkRaWjgDIG26DmzyshUMrdV/rL3UnR+mhaX4fRq8LPouq0MYYIA== - dependencies: - "@types/zen-observable" "0.8.3" - zen-observable "0.8.15" - -zen-observable@0.8.15, zen-observable@^0.8.0: - version "0.8.15" - resolved "https://registry.yarnpkg.com/zen-observable/-/zen-observable-0.8.15.tgz#96415c512d8e3ffd920afd3889604e30b9eaac15" - integrity sha512-PQ2PC7R9rslx84ndNBZB/Dkv8V8fZEpk83RLgXtYd0fwUgEjseMn1Dgajh2x6S8QbZAFa9p2qVCEuYZNgve0dQ== From 9ada690f5c481ee91da2a003874cddb00b1e5357 Mon Sep 17 00:00:00 2001 From: AugustoL Date: Thu, 22 Sep 2022 11:45:43 -0300 Subject: [PATCH 12/33] refactor(contracts): use solc 0.8.17, removed not needed contracts, change needed ones Only use solidity version 0.8.17, done necessary changes in all contracts to use this version, removed the old openzeppelin-solidity contracts, removed not needed GnosisProxya nd some old tests contracts used for daostack. --- contracts/dao/DAOAvatar.sol | 2 +- contracts/dao/DAOController.sol | 3 +- contracts/dao/DAOReputation.sol | 2 +- contracts/dao/schemes/WalletScheme.sol | 2 +- .../dao/votingMachine/DXDVotingMachine.sol | 2 +- .../DXDVotingMachineCallbacks.sol | 3 +- .../DXDVotingMachineCallbacksInterface.sol | 3 +- .../ProposalExecuteInterface.sol | 3 +- contracts/erc20guild/BaseERC20Guild.sol | 2 +- contracts/erc20guild/ERC20Guild.sol | 2 +- .../erc20guild/ERC20GuildUpgradeable.sol | 2 +- contracts/erc20guild/IERC20Guild.sol | 2 +- .../erc20guild/implementations/DXDGuild.sol | 2 +- .../implementations/ERC20GuildWithERC1271.sol | 2 +- .../implementations/GuardedERC20Guild.sol | 2 +- .../implementations/MigratableERC20Guild.sol | 2 +- .../implementations/SnapshotERC20Guild.sol | 2 +- .../implementations/SnapshotRepERC20Guild.sol | 2 +- contracts/erc20guild/utils/GuildRegistry.sol | 2 +- contracts/test/ActionMock.sol | 9 +- contracts/test/ERC20Mock.sol | 19 +- contracts/test/GlobalConstraintMock.sol | 78 -- contracts/test/TokenVaultThief.sol | 2 +- contracts/test/Wallet.sol | 17 - contracts/utils/Arrays.sol | 2 +- contracts/utils/Create2Deployer.sol | 3 +- contracts/utils/ERC20/ERC20SnapshotRep.sol | 2 +- contracts/utils/ERC20/ERC20Token.sol | 2 +- contracts/utils/ERC20/ERC20TokenVesting.sol | 2 +- contracts/utils/ERC20VestingFactory.sol | 6 +- contracts/utils/ERC721Factory.sol | 2 +- contracts/utils/ETHRelayer.sol | 23 - contracts/utils/GnosisSafe/GnosisProxy.sol | 41 - contracts/utils/GnosisSafe/GnosisSafe.sol | 1023 ----------------- contracts/utils/PermissionRegistry.sol | 2 +- contracts/utils/RealMath.sol | 2 +- contracts/utils/TokenVault.sol | 2 +- contracts/utils/TokenVesting.sol | 181 +++ hardhat.config.js | 49 +- package.json | 1 - yarn.lock | 5 - 41 files changed, 232 insertions(+), 1283 deletions(-) delete mode 100644 contracts/test/GlobalConstraintMock.sol delete mode 100644 contracts/test/Wallet.sol delete mode 100644 contracts/utils/ETHRelayer.sol delete mode 100644 contracts/utils/GnosisSafe/GnosisProxy.sol delete mode 100644 contracts/utils/GnosisSafe/GnosisSafe.sol create mode 100644 contracts/utils/TokenVesting.sol diff --git a/contracts/dao/DAOAvatar.sol b/contracts/dao/DAOAvatar.sol index 6a9c28c1..68ffb514 100644 --- a/contracts/dao/DAOAvatar.sol +++ b/contracts/dao/DAOAvatar.sol @@ -1,5 +1,5 @@ // SPDX-License-Identifier: AGPL-3.0 -pragma solidity ^0.8.8; +pragma solidity ^0.8.17; import "@openzeppelin/contracts-upgradeable/access/OwnableUpgradeable.sol"; diff --git a/contracts/dao/DAOController.sol b/contracts/dao/DAOController.sol index 13289ea8..f89d2161 100644 --- a/contracts/dao/DAOController.sol +++ b/contracts/dao/DAOController.sol @@ -1,4 +1,5 @@ -pragma solidity ^0.8.8; +// SPDX-License-Identifier: AGPL-3.0 +pragma solidity ^0.8.17; import "@openzeppelin/contracts-upgradeable/proxy/utils/Initializable.sol"; import "@openzeppelin/contracts-upgradeable/utils/math/SafeMathUpgradeable.sol"; diff --git a/contracts/dao/DAOReputation.sol b/contracts/dao/DAOReputation.sol index d3cee1c4..1051e6ae 100644 --- a/contracts/dao/DAOReputation.sol +++ b/contracts/dao/DAOReputation.sol @@ -1,5 +1,5 @@ // SPDX-License-Identifier: AGPL-3.0 -pragma solidity 0.8.8; +pragma solidity 0.8.17; import "@openzeppelin/contracts-upgradeable/access/OwnableUpgradeable.sol"; import "@openzeppelin/contracts-upgradeable/token/ERC20/extensions/ERC20SnapshotUpgradeable.sol"; diff --git a/contracts/dao/schemes/WalletScheme.sol b/contracts/dao/schemes/WalletScheme.sol index 2a23c6be..90630586 100644 --- a/contracts/dao/schemes/WalletScheme.sol +++ b/contracts/dao/schemes/WalletScheme.sol @@ -1,5 +1,5 @@ // SPDX-License-Identifier: AGPL-3.0 -pragma solidity ^0.8.8; +pragma solidity ^0.8.17; import "@openzeppelin/contracts/utils/math/SafeMath.sol"; import "@openzeppelin/contracts/utils/Address.sol"; diff --git a/contracts/dao/votingMachine/DXDVotingMachine.sol b/contracts/dao/votingMachine/DXDVotingMachine.sol index 9f1c6900..0529b6a6 100644 --- a/contracts/dao/votingMachine/DXDVotingMachine.sol +++ b/contracts/dao/votingMachine/DXDVotingMachine.sol @@ -1,5 +1,5 @@ // SPDX-License-Identifier: AGPL-3.0 -pragma solidity ^0.8.8; +pragma solidity ^0.8.17; import {RealMath} from "../../utils/RealMath.sol"; import "@openzeppelin/contracts/utils/math/SafeMath.sol"; diff --git a/contracts/dao/votingMachine/DXDVotingMachineCallbacks.sol b/contracts/dao/votingMachine/DXDVotingMachineCallbacks.sol index 2e9a6de8..2d3353e9 100644 --- a/contracts/dao/votingMachine/DXDVotingMachineCallbacks.sol +++ b/contracts/dao/votingMachine/DXDVotingMachineCallbacks.sol @@ -1,4 +1,5 @@ -pragma solidity ^0.8.8; +// SPDX-License-Identifier: AGPL-3.0 +pragma solidity ^0.8.17; import "@openzeppelin/contracts/token/ERC20/IERC20.sol"; import "../DAOController.sol"; diff --git a/contracts/dao/votingMachine/DXDVotingMachineCallbacksInterface.sol b/contracts/dao/votingMachine/DXDVotingMachineCallbacksInterface.sol index 1e9fa78d..87d6c3cb 100644 --- a/contracts/dao/votingMachine/DXDVotingMachineCallbacksInterface.sol +++ b/contracts/dao/votingMachine/DXDVotingMachineCallbacksInterface.sol @@ -1,4 +1,5 @@ -pragma solidity ^0.8.8; +// SPDX-License-Identifier: AGPL-3.0 +pragma solidity ^0.8.17; interface DXDVotingMachineCallbacksInterface { function mintReputation( diff --git a/contracts/dao/votingMachine/ProposalExecuteInterface.sol b/contracts/dao/votingMachine/ProposalExecuteInterface.sol index 219be474..46b9e4e2 100644 --- a/contracts/dao/votingMachine/ProposalExecuteInterface.sol +++ b/contracts/dao/votingMachine/ProposalExecuteInterface.sol @@ -1,4 +1,5 @@ -pragma solidity ^0.8.8; +// SPDX-License-Identifier: AGPL-3.0 +pragma solidity ^0.8.17; interface ProposalExecuteInterface { function executeProposal(bytes32 _proposalId, uint256 _decision) external returns (bool); diff --git a/contracts/erc20guild/BaseERC20Guild.sol b/contracts/erc20guild/BaseERC20Guild.sol index a9d5372d..390bca7d 100644 --- a/contracts/erc20guild/BaseERC20Guild.sol +++ b/contracts/erc20guild/BaseERC20Guild.sol @@ -1,5 +1,5 @@ // SPDX-License-Identifier: AGPL-3.0 -pragma solidity ^0.8.8; +pragma solidity ^0.8.17; import "@openzeppelin/contracts-upgradeable/proxy/utils/Initializable.sol"; import "@openzeppelin/contracts-upgradeable/utils/math/SafeMathUpgradeable.sol"; diff --git a/contracts/erc20guild/ERC20Guild.sol b/contracts/erc20guild/ERC20Guild.sol index c017e5ec..57973a00 100644 --- a/contracts/erc20guild/ERC20Guild.sol +++ b/contracts/erc20guild/ERC20Guild.sol @@ -1,5 +1,5 @@ // SPDX-License-Identifier: AGPL-3.0 -pragma solidity ^0.8.8; +pragma solidity ^0.8.17; import "./BaseERC20Guild.sol"; diff --git a/contracts/erc20guild/ERC20GuildUpgradeable.sol b/contracts/erc20guild/ERC20GuildUpgradeable.sol index 8c43a3da..42313bf5 100644 --- a/contracts/erc20guild/ERC20GuildUpgradeable.sol +++ b/contracts/erc20guild/ERC20GuildUpgradeable.sol @@ -1,5 +1,5 @@ // SPDX-License-Identifier: AGPL-3.0 -pragma solidity ^0.8.8; +pragma solidity ^0.8.17; import "@openzeppelin/contracts-upgradeable/proxy/utils/Initializable.sol"; import "@openzeppelin/contracts-upgradeable/token/ERC20/IERC20Upgradeable.sol"; diff --git a/contracts/erc20guild/IERC20Guild.sol b/contracts/erc20guild/IERC20Guild.sol index df57ddc4..c9d64fc9 100644 --- a/contracts/erc20guild/IERC20Guild.sol +++ b/contracts/erc20guild/IERC20Guild.sol @@ -1,5 +1,5 @@ // SPDX-License-Identifier: AGPL-3.0 -pragma solidity ^0.8.8; +pragma solidity ^0.8.17; interface IERC20Guild { event ProposalStateChanged(bytes32 indexed proposalId, uint256 newState); diff --git a/contracts/erc20guild/implementations/DXDGuild.sol b/contracts/erc20guild/implementations/DXDGuild.sol index 25ceecf7..d2580465 100644 --- a/contracts/erc20guild/implementations/DXDGuild.sol +++ b/contracts/erc20guild/implementations/DXDGuild.sol @@ -1,5 +1,5 @@ // SPDX-License-Identifier: AGPL-3.0 -pragma solidity ^0.8.8; +pragma solidity ^0.8.17; import "../ERC20GuildUpgradeable.sol"; import "@openzeppelin/contracts-upgradeable/access/OwnableUpgradeable.sol"; diff --git a/contracts/erc20guild/implementations/ERC20GuildWithERC1271.sol b/contracts/erc20guild/implementations/ERC20GuildWithERC1271.sol index f3345daa..e6a271cc 100644 --- a/contracts/erc20guild/implementations/ERC20GuildWithERC1271.sol +++ b/contracts/erc20guild/implementations/ERC20GuildWithERC1271.sol @@ -1,5 +1,5 @@ // SPDX-License-Identifier: AGPL-3.0 -pragma solidity ^0.8.8; +pragma solidity ^0.8.17; import "@openzeppelin/contracts-upgradeable/utils/math/SafeMathUpgradeable.sol"; import "@openzeppelin/contracts-upgradeable/utils/cryptography/ECDSAUpgradeable.sol"; diff --git a/contracts/erc20guild/implementations/GuardedERC20Guild.sol b/contracts/erc20guild/implementations/GuardedERC20Guild.sol index ff6d8a67..e5785e94 100644 --- a/contracts/erc20guild/implementations/GuardedERC20Guild.sol +++ b/contracts/erc20guild/implementations/GuardedERC20Guild.sol @@ -1,5 +1,5 @@ // SPDX-License-Identifier: AGPL-3.0 -pragma solidity ^0.8.8; +pragma solidity ^0.8.17; import "../ERC20GuildUpgradeable.sol"; import "@openzeppelin/contracts-upgradeable/access/OwnableUpgradeable.sol"; diff --git a/contracts/erc20guild/implementations/MigratableERC20Guild.sol b/contracts/erc20guild/implementations/MigratableERC20Guild.sol index eb963b2c..4b306b18 100644 --- a/contracts/erc20guild/implementations/MigratableERC20Guild.sol +++ b/contracts/erc20guild/implementations/MigratableERC20Guild.sol @@ -1,5 +1,5 @@ // SPDX-License-Identifier: AGPL-3.0 -pragma solidity ^0.8.8; +pragma solidity ^0.8.17; import "../ERC20Guild.sol"; diff --git a/contracts/erc20guild/implementations/SnapshotERC20Guild.sol b/contracts/erc20guild/implementations/SnapshotERC20Guild.sol index ee0f5f2d..e2169193 100644 --- a/contracts/erc20guild/implementations/SnapshotERC20Guild.sol +++ b/contracts/erc20guild/implementations/SnapshotERC20Guild.sol @@ -1,5 +1,5 @@ // SPDX-License-Identifier: AGPL-3.0 -pragma solidity ^0.8.8; +pragma solidity ^0.8.17; import "../ERC20GuildUpgradeable.sol"; import "../../utils/Arrays.sol"; diff --git a/contracts/erc20guild/implementations/SnapshotRepERC20Guild.sol b/contracts/erc20guild/implementations/SnapshotRepERC20Guild.sol index 3e8fc199..47fdba0b 100644 --- a/contracts/erc20guild/implementations/SnapshotRepERC20Guild.sol +++ b/contracts/erc20guild/implementations/SnapshotRepERC20Guild.sol @@ -1,5 +1,5 @@ // SPDX-License-Identifier: AGPL-3.0 -pragma solidity ^0.8.8; +pragma solidity ^0.8.17; import "../ERC20GuildUpgradeable.sol"; import "@openzeppelin/contracts-upgradeable/access/OwnableUpgradeable.sol"; diff --git a/contracts/erc20guild/utils/GuildRegistry.sol b/contracts/erc20guild/utils/GuildRegistry.sol index bc4e4691..e7b92bda 100644 --- a/contracts/erc20guild/utils/GuildRegistry.sol +++ b/contracts/erc20guild/utils/GuildRegistry.sol @@ -1,5 +1,5 @@ // SPDX-License-Identifier: AGPL-3.0 -pragma solidity ^0.8.8; +pragma solidity ^0.8.17; import "@openzeppelin/contracts/access/Ownable.sol"; import "@openzeppelin/contracts/utils/Counters.sol"; diff --git a/contracts/test/ActionMock.sol b/contracts/test/ActionMock.sol index 30984848..1e5d9d07 100644 --- a/contracts/test/ActionMock.sol +++ b/contracts/test/ActionMock.sol @@ -1,10 +1,11 @@ -pragma solidity 0.5.17; +// SPDX-License-Identifier: AGPL-3.0 +pragma solidity 0.8.17; contract ActionMock { event ReceivedEther(address indexed _sender, uint256 _value); event LogNumber(uint256 number); - function() external payable { + receive() external payable { emit ReceivedEther(msg.sender, msg.value); } @@ -30,7 +31,7 @@ contract ActionMock { bytes memory data, uint256 value ) public returns (bool, bytes memory) { - return address(to).call.value(value)(data); + return address(to).call{value: value}(data); } function executeCallWithRequiredSuccess( @@ -38,7 +39,7 @@ contract ActionMock { bytes memory data, uint256 value ) public returns (bool, bytes memory) { - (bool success, bytes memory result) = address(to).call.value(value)(data); + (bool success, bytes memory result) = address(to).call{value: value}(data); require(success, "ActionMock: Call execution failed"); return (success, result); } diff --git a/contracts/test/ERC20Mock.sol b/contracts/test/ERC20Mock.sol index 1ee0ad8e..9703e23e 100644 --- a/contracts/test/ERC20Mock.sol +++ b/contracts/test/ERC20Mock.sol @@ -1,19 +1,16 @@ -pragma solidity 0.5.17; +// SPDX-License-Identifier: AGPL-3.0 +pragma solidity 0.8.17; -import "openzeppelin-solidity/contracts/token/ERC20/ERC20.sol"; -import "openzeppelin-solidity/contracts/token/ERC20/ERC20Detailed.sol"; +import "@openzeppelin/contracts/token/ERC20/presets/ERC20PresetFixedSupply.sol"; // mock class using ERC20 -contract ERC20Mock is ERC20, ERC20Detailed { +contract ERC20Mock is ERC20PresetFixedSupply { constructor( - address initialAccount, - uint256 initialBalance, - string memory symbol, string memory name, - uint8 decimals - ) public ERC20Detailed(symbol, name, decimals) { - _mint(initialAccount, initialBalance); - } + string memory symbol, + uint256 initialBalance, + address initialAccount + ) public ERC20PresetFixedSupply(name, symbol, initialBalance, initialAccount) {} function nonStandardTransfer(address recipient, uint256 amount) public returns (bool success) { return transfer(recipient, amount); diff --git a/contracts/test/GlobalConstraintMock.sol b/contracts/test/GlobalConstraintMock.sol deleted file mode 100644 index 4256f00f..00000000 --- a/contracts/test/GlobalConstraintMock.sol +++ /dev/null @@ -1,78 +0,0 @@ -pragma solidity 0.5.17; - -contract GlobalConstraintInterface { - enum CallPhase { - Pre, - Post, - PreAndPost - } - - function pre( - address _scheme, - bytes32 _params, - bytes32 _method - ) public returns (bool); - - function post( - address _scheme, - bytes32 _params, - bytes32 _method - ) public returns (bool); - - /** - * @dev when return if this globalConstraints is pre, post or both. - * @return CallPhase enum indication Pre, Post or PreAndPost. - */ - function when() public returns (CallPhase); -} - -contract GlobalConstraintMock { - struct TestParam { - bool pre; - bool post; - } - - mapping(bytes32 => TestParam) public testParams; - - GlobalConstraintInterface.CallPhase public currentCallPhase; - - function setConstraint( - bytes32 method, - bool pre, - bool post - ) public returns (bool) { - testParams[method].pre = pre; - testParams[method].post = post; - - if (!pre && !post) { - currentCallPhase = GlobalConstraintInterface.CallPhase.PreAndPost; - } else { - if (!pre) { - currentCallPhase = GlobalConstraintInterface.CallPhase.Pre; - } else if (!post) { - currentCallPhase = GlobalConstraintInterface.CallPhase.Post; - } - } - return true; - } - - function pre( - address, - bytes32, - bytes32 method - ) public view returns (bool) { - return testParams[method].pre; - } - - function post( - address, - bytes32, - bytes32 method - ) public view returns (bool) { - return testParams[method].post; - } - - function when() public view returns (GlobalConstraintInterface.CallPhase) { - return currentCallPhase; - } -} diff --git a/contracts/test/TokenVaultThief.sol b/contracts/test/TokenVaultThief.sol index 2bcef9e7..31818c5a 100644 --- a/contracts/test/TokenVaultThief.sol +++ b/contracts/test/TokenVaultThief.sol @@ -1,5 +1,5 @@ // SPDX-License-Identifier: AGPL-3.0 -pragma solidity ^0.8.8; +pragma solidity ^0.8.17; import "@openzeppelin/contracts-upgradeable/utils/math/SafeMathUpgradeable.sol"; import "@openzeppelin/contracts-upgradeable/token/ERC20/IERC20Upgradeable.sol"; diff --git a/contracts/test/Wallet.sol b/contracts/test/Wallet.sol deleted file mode 100644 index 36cac887..00000000 --- a/contracts/test/Wallet.sol +++ /dev/null @@ -1,17 +0,0 @@ -pragma solidity 0.5.17; -import "openzeppelin-solidity/contracts/ownership/Ownable.sol"; - -contract Wallet is Ownable { - event ReceiveEther(address indexed _sender, uint256 _value); - event Pay(address indexed _sender, uint256 _value); - - function() external payable { - emit ReceiveEther(msg.sender, msg.value); - } - - function pay(address payable _beneficiary) public onlyOwner { - uint256 amount = address(this).balance; - _beneficiary.transfer(amount); - emit Pay(_beneficiary, amount); - } -} diff --git a/contracts/utils/Arrays.sol b/contracts/utils/Arrays.sol index 5ea9fbc2..97aa1f03 100644 --- a/contracts/utils/Arrays.sol +++ b/contracts/utils/Arrays.sol @@ -1,5 +1,5 @@ // SPDX-License-Identifier: AGPL-3.0 -pragma solidity ^0.8.8; +pragma solidity ^0.8.17; library Arrays { function average(uint256 a, uint256 b) internal pure returns (uint256) { diff --git a/contracts/utils/Create2Deployer.sol b/contracts/utils/Create2Deployer.sol index 1b8e499f..fc0a411d 100644 --- a/contracts/utils/Create2Deployer.sol +++ b/contracts/utils/Create2Deployer.sol @@ -1,4 +1,5 @@ -pragma solidity ^0.5.17; +// SPDX-License-Identifier: AGPL-3.0 +pragma solidity ^0.8.17; contract Create2Deployer { event Deployed(address addr, uint256 salt); diff --git a/contracts/utils/ERC20/ERC20SnapshotRep.sol b/contracts/utils/ERC20/ERC20SnapshotRep.sol index c62e6641..6aaada06 100644 --- a/contracts/utils/ERC20/ERC20SnapshotRep.sol +++ b/contracts/utils/ERC20/ERC20SnapshotRep.sol @@ -1,5 +1,5 @@ // SPDX-License-Identifier: AGPL-3.0 -pragma solidity ^0.8.8; +pragma solidity ^0.8.17; import "@openzeppelin/contracts-upgradeable/token/ERC20/extensions/ERC20SnapshotUpgradeable.sol"; import "@openzeppelin/contracts-upgradeable/proxy/utils/Initializable.sol"; diff --git a/contracts/utils/ERC20/ERC20Token.sol b/contracts/utils/ERC20/ERC20Token.sol index 8ec95419..acc75c31 100644 --- a/contracts/utils/ERC20/ERC20Token.sol +++ b/contracts/utils/ERC20/ERC20Token.sol @@ -1,5 +1,5 @@ // SPDX-License-Identifier: AGPL-3.0 -pragma solidity ^0.8.8; +pragma solidity ^0.8.17; import "@openzeppelin/contracts-upgradeable/token/ERC20/ERC20Upgradeable.sol"; import "@openzeppelin/contracts-upgradeable/proxy/utils/Initializable.sol"; diff --git a/contracts/utils/ERC20/ERC20TokenVesting.sol b/contracts/utils/ERC20/ERC20TokenVesting.sol index c9b6d11e..38b9eb53 100644 --- a/contracts/utils/ERC20/ERC20TokenVesting.sol +++ b/contracts/utils/ERC20/ERC20TokenVesting.sol @@ -1,5 +1,5 @@ // SPDX-License-Identifier: AGPL-3.0 -pragma solidity ^0.8.8; +pragma solidity ^0.8.17; import "@openzeppelin/contracts/token/ERC20/IERC20.sol"; import "@openzeppelin/contracts/token/ERC20/utils/SafeERC20.sol"; diff --git a/contracts/utils/ERC20VestingFactory.sol b/contracts/utils/ERC20VestingFactory.sol index 5d721b2c..b8cc4f67 100644 --- a/contracts/utils/ERC20VestingFactory.sol +++ b/contracts/utils/ERC20VestingFactory.sol @@ -1,8 +1,8 @@ // SPDX-License-Identifier: AGPL-3.0 -pragma solidity ^0.5.4; +pragma solidity ^0.8.17; -import "openzeppelin-solidity/contracts/drafts/TokenVesting.sol"; -import "openzeppelin-solidity/contracts/token/ERC20/SafeERC20.sol"; +import "./TokenVesting.sol"; +import "@openzeppelin/contracts/token/ERC20/utils/SafeERC20.sol"; contract ERC20VestingFactory { using SafeERC20 for IERC20; diff --git a/contracts/utils/ERC721Factory.sol b/contracts/utils/ERC721Factory.sol index 7e4020d6..091d4094 100644 --- a/contracts/utils/ERC721Factory.sol +++ b/contracts/utils/ERC721Factory.sol @@ -1,5 +1,5 @@ // SPDX-License-Identifier: AGPL-3.0 -pragma solidity ^0.8.8; +pragma solidity ^0.8.17; import "@openzeppelin/contracts/token/ERC721/extensions/ERC721URIStorage.sol"; import "@openzeppelin/contracts/utils/Counters.sol"; diff --git a/contracts/utils/ETHRelayer.sol b/contracts/utils/ETHRelayer.sol deleted file mode 100644 index ca5144c3..00000000 --- a/contracts/utils/ETHRelayer.sol +++ /dev/null @@ -1,23 +0,0 @@ -// SPDX-License-Identifier: AGPL-3.0 -pragma solidity ^0.8.8; - -/** - * @title ETHRelayer - * @dev Ether relayer used to relay all ether received in this contract to the receiver address. - * Receives ETH via legacy .transfer function using defualt 23000 gas limit and relay it using 100k gas limit to - * contracts that have enabled the fallback payable funciton. - */ -contract ETHRelayer { - address payable public receiver; - - constructor(address payable _receiver) { - receiver = _receiver; - } - - receive() external payable {} - - function relay() public { - (bool success, ) = receiver.call{gas: 100000, value: address(this).balance}(""); - require(success, "ETHRelayer: Relay transfer failed"); - } -} diff --git a/contracts/utils/GnosisSafe/GnosisProxy.sol b/contracts/utils/GnosisSafe/GnosisProxy.sol deleted file mode 100644 index 1b744ea2..00000000 --- a/contracts/utils/GnosisSafe/GnosisProxy.sol +++ /dev/null @@ -1,41 +0,0 @@ -/** - * Taken from https://etherscan.io/address/0x5f239a6671bc6d2baef6d7cd892296e678810882#code - */ - -pragma solidity ^0.5.3; - -// @title GnosisProxy - Generic proxy contract allows to execute all transactions applying the code of a master contract. -// @author Stefan George - -// @author Richard Meissner - -contract GnosisProxy { - // masterCopy always needs to be first declared variable, to ensure that it is at the same location in the contracts to which calls are delegated. - // To reduce deployment costs this variable is internal and needs to be retrieved via `getStorageAt` - address internal masterCopy; - - // @dev Constructor function sets address of master copy contract. - // @param _masterCopy Master copy address. - constructor(address _masterCopy) public { - require(_masterCopy != address(0), "Invalid master copy address provided"); - masterCopy = _masterCopy; - } - - // @dev Fallback function forwards all transactions and returns all received return data. - function() external payable { - // solium-disable-next-line security/no-inline-assembly - assembly { - let masterCopy := and(sload(0), 0xffffffffffffffffffffffffffffffffffffffff) - // 0xa619486e == keccak("masterCopy()"). The value is right padded to 32-bytes with 0s - if eq(calldataload(0), 0xa619486e00000000000000000000000000000000000000000000000000000000) { - mstore(0, masterCopy) - return(0, 0x20) - } - calldatacopy(0, 0, calldatasize()) - let success := delegatecall(gas, masterCopy, 0, calldatasize(), 0, 0) - returndatacopy(0, 0, returndatasize()) - if eq(success, 0) { - revert(0, returndatasize()) - } - return(0, returndatasize()) - } - } -} diff --git a/contracts/utils/GnosisSafe/GnosisSafe.sol b/contracts/utils/GnosisSafe/GnosisSafe.sol deleted file mode 100644 index ec5d8a09..00000000 --- a/contracts/utils/GnosisSafe/GnosisSafe.sol +++ /dev/null @@ -1,1023 +0,0 @@ -/** - * Taken from https://etherscan.io/address/0x34cfac646f301356faa8b21e94227e3583fe3f5f#code - */ - -pragma solidity >=0.5.0 <0.7.0; - -// @title SelfAuthorized - authorizes current contract to perform actions -// @author Richard Meissner - -contract SelfAuthorized { - modifier authorized() { - require(msg.sender == address(this), "Method can only be called from this contract"); - _; - } -} - -// @title MasterCopy - Base for master copy contracts (should always be first super contract) -// This contract is tightly coupled to our proxy contract (see `proxies/Proxy.sol`) -// @author Richard Meissner - -contract MasterCopy is SelfAuthorized { - event ChangedMasterCopy(address masterCopy); - - // masterCopy always needs to be first declared variable, to ensure that it is at the same location as in the Proxy contract. - // It should also always be ensured that the address is stored alone (uses a full word) - address private masterCopy; - - // @dev Allows to upgrade the contract. This can only be done via a Safe transaction. - // @param _masterCopy New contract address. - function changeMasterCopy(address _masterCopy) public authorized { - // Master copy address cannot be null. - require(_masterCopy != address(0), "Invalid master copy address provided"); - masterCopy = _masterCopy; - emit ChangedMasterCopy(_masterCopy); - } -} - -// @title Module - Base class for modules. -// @author Stefan George - -// @author Richard Meissner - -contract Module is MasterCopy { - ModuleManager public manager; - - modifier authorized() { - require(msg.sender == address(manager), "Method can only be called from manager"); - _; - } - - function setManager() internal { - // manager can only be 0 at initalization of contract. - // Check ensures that setup function can only be called once. - require(address(manager) == address(0), "Manager has already been set"); - manager = ModuleManager(msg.sender); - } -} - -// @title Enum - Collection of enums -// @author Richard Meissner - -contract Enum { - enum Operation { - Call, - DelegateCall - } -} - -// @title Executor - A contract that can execute transactions -// @author Richard Meissner - -contract Executor { - function execute( - address to, - uint256 value, - bytes memory data, - Enum.Operation operation, - uint256 txGas - ) internal returns (bool success) { - if (operation == Enum.Operation.Call) success = executeCall(to, value, data, txGas); - else if (operation == Enum.Operation.DelegateCall) success = executeDelegateCall(to, data, txGas); - else success = false; - } - - function executeCall( - address to, - uint256 value, - bytes memory data, - uint256 txGas - ) internal returns (bool success) { - // solium-disable-next-line security/no-inline-assembly - assembly { - success := call(txGas, to, value, add(data, 0x20), mload(data), 0, 0) - } - } - - function executeDelegateCall( - address to, - bytes memory data, - uint256 txGas - ) internal returns (bool success) { - // solium-disable-next-line security/no-inline-assembly - assembly { - success := delegatecall(txGas, to, add(data, 0x20), mload(data), 0, 0) - } - } -} - -// @title SecuredTokenTransfer - Secure token transfer -// @author Richard Meissner - -contract SecuredTokenTransfer { - // @dev Transfers a token and returns if it was a success - // @param token Token that should be transferred - // @param receiver Receiver to whom the token should be transferred - // @param amount The amount of tokens that should be transferred - function transferToken( - address token, - address receiver, - uint256 amount - ) internal returns (bool transferred) { - bytes memory data = abi.encodeWithSignature("transfer(address,uint256)", receiver, amount); - // solium-disable-next-line security/no-inline-assembly - assembly { - let success := call(sub(gas, 10000), token, 0, add(data, 0x20), mload(data), 0, 0) - let ptr := mload(0x40) - mstore(0x40, add(ptr, returndatasize())) - returndatacopy(ptr, 0, returndatasize()) - switch returndatasize() - case 0 { - transferred := success - } - case 0x20 { - transferred := iszero(or(iszero(success), iszero(mload(ptr)))) - } - default { - transferred := 0 - } - } - } -} - -// @title Module Manager - A contract that manages modules that can execute transactions via this contract -// @author Stefan George - -// @author Richard Meissner - -contract ModuleManager is SelfAuthorized, Executor { - event EnabledModule(Module module); - event DisabledModule(Module module); - event ExecutionFromModuleSuccess(address indexed module); - event ExecutionFromModuleFailure(address indexed module); - - address internal constant SENTINEL_MODULES = address(0x1); - - mapping(address => address) internal modules; - - function setupModules(address to, bytes memory data) internal { - require(modules[SENTINEL_MODULES] == address(0), "Modules have already been initialized"); - modules[SENTINEL_MODULES] = SENTINEL_MODULES; - if (to != address(0)) - // Setup has to complete successfully or transaction fails. - require(executeDelegateCall(to, data, gasleft()), "Could not finish initialization"); - } - - // @dev Allows to add a module to the whitelist. - // This can only be done via a Safe transaction. - // @param module Module to be whitelisted. - function enableModule(Module module) public authorized { - // Module address cannot be null or sentinel. - require( - address(module) != address(0) && address(module) != SENTINEL_MODULES, - "Invalid module address provided" - ); - // Module cannot be added twice. - require(modules[address(module)] == address(0), "Module has already been added"); - modules[address(module)] = modules[SENTINEL_MODULES]; - modules[SENTINEL_MODULES] = address(module); - emit EnabledModule(module); - } - - // @dev Allows to remove a module from the whitelist. - // This can only be done via a Safe transaction. - // @param prevModule Module that pointed to the module to be removed in the linked list - // @param module Module to be removed. - function disableModule(Module prevModule, Module module) public authorized { - // Validate module address and check that it corresponds to module index. - require( - address(module) != address(0) && address(module) != SENTINEL_MODULES, - "Invalid module address provided" - ); - require(modules[address(prevModule)] == address(module), "Invalid prevModule, module pair provided"); - modules[address(prevModule)] = modules[address(module)]; - modules[address(module)] = address(0); - emit DisabledModule(module); - } - - // @dev Allows a Module to execute a Safe transaction without any further confirmations. - // @param to Destination address of module transaction. - // @param value Ether value of module transaction. - // @param data Data payload of module transaction. - // @param operation Operation type of module transaction. - function execTransactionFromModule( - address to, - uint256 value, - bytes memory data, - Enum.Operation operation - ) public returns (bool success) { - // Only whitelisted modules are allowed. - require( - msg.sender != SENTINEL_MODULES && modules[msg.sender] != address(0), - "Method can only be called from an enabled module" - ); - // Execute transaction without further confirmations. - success = execute(to, value, data, operation, gasleft()); - if (success) emit ExecutionFromModuleSuccess(msg.sender); - else emit ExecutionFromModuleFailure(msg.sender); - } - - // @dev Allows a Module to execute a Safe transaction without any further confirmations and return data - // @param to Destination address of module transaction. - // @param value Ether value of module transaction. - // @param data Data payload of module transaction. - // @param operation Operation type of module transaction. - function execTransactionFromModuleReturnData( - address to, - uint256 value, - bytes memory data, - Enum.Operation operation - ) public returns (bool success, bytes memory returnData) { - success = execTransactionFromModule(to, value, data, operation); - // solium-disable-next-line security/no-inline-assembly - assembly { - // Load free memory location - let ptr := mload(0x40) - // We allocate memory for the return data by setting the free memory location to - // current free memory location + data size + 32 bytes for data size value - mstore(0x40, add(ptr, add(returndatasize(), 0x20))) - // Store the size - mstore(ptr, returndatasize()) - // Store the data - returndatacopy(add(ptr, 0x20), 0, returndatasize()) - // Point the return data to the correct memory location - returnData := ptr - } - } - - // @dev Returns array of first 10 modules. - // @return Array of modules. - function getModules() public view returns (address[] memory) { - (address[] memory array, ) = getModulesPaginated(SENTINEL_MODULES, 10); - return array; - } - - // @dev Returns array of modules. - // @param start Start of the page. - // @param pageSize Maximum number of modules that should be returned. - // @return Array of modules. - function getModulesPaginated(address start, uint256 pageSize) - public - view - returns (address[] memory array, address next) - { - // Init array with max page size - array = new address[](pageSize); - - // Populate return array - uint256 moduleCount = 0; - address currentModule = modules[start]; - while (currentModule != address(0x0) && currentModule != SENTINEL_MODULES && moduleCount < pageSize) { - array[moduleCount] = currentModule; - currentModule = modules[currentModule]; - moduleCount++; - } - next = currentModule; - // Set correct size of returned array - // solium-disable-next-line security/no-inline-assembly - assembly { - mstore(array, moduleCount) - } - } -} - -// @title OwnerManager - Manages a set of owners and a threshold to perform actions. -// @author Stefan George - -// @author Richard Meissner - -contract OwnerManager is SelfAuthorized { - event AddedOwner(address owner); - event RemovedOwner(address owner); - event ChangedThreshold(uint256 threshold); - - address internal constant SENTINEL_OWNERS = address(0x1); - - mapping(address => address) internal owners; - uint256 ownerCount; - uint256 internal threshold; - - // @dev Setup function sets initial storage of contract. - // @param _owners List of Safe owners. - // @param _threshold Number of required confirmations for a Safe transaction. - function setupOwners(address[] memory _owners, uint256 _threshold) internal { - // Threshold can only be 0 at initialization. - // Check ensures that setup function can only be called once. - require(threshold == 0, "Owners have already been setup"); - // Validate that threshold is smaller than number of added owners. - require(_threshold <= _owners.length, "Threshold cannot exceed owner count"); - // There has to be at least one Safe owner. - require(_threshold >= 1, "Threshold needs to be greater than 0"); - // Initializing Safe owners. - address currentOwner = SENTINEL_OWNERS; - for (uint256 i = 0; i < _owners.length; i++) { - // Owner address cannot be null. - address owner = _owners[i]; - require(owner != address(0) && owner != SENTINEL_OWNERS, "Invalid owner address provided"); - // No duplicate owners allowed. - require(owners[owner] == address(0), "Duplicate owner address provided"); - owners[currentOwner] = owner; - currentOwner = owner; - } - owners[currentOwner] = SENTINEL_OWNERS; - ownerCount = _owners.length; - threshold = _threshold; - } - - // @dev Allows to add a new owner to the Safe and update the threshold at the same time. - // This can only be done via a Safe transaction. - // @param owner New owner address. - // @param _threshold New threshold. - function addOwnerWithThreshold(address owner, uint256 _threshold) public authorized { - // Owner address cannot be null. - require(owner != address(0) && owner != SENTINEL_OWNERS, "Invalid owner address provided"); - // No duplicate owners allowed. - require(owners[owner] == address(0), "Address is already an owner"); - owners[owner] = owners[SENTINEL_OWNERS]; - owners[SENTINEL_OWNERS] = owner; - ownerCount++; - emit AddedOwner(owner); - // Change threshold if threshold was changed. - if (threshold != _threshold) changeThreshold(_threshold); - } - - // @dev Allows to remove an owner from the Safe and update the threshold at the same time. - // This can only be done via a Safe transaction. - // @param prevOwner Owner that pointed to the owner to be removed in the linked list - // @param owner Owner address to be removed. - // @param _threshold New threshold. - function removeOwner( - address prevOwner, - address owner, - uint256 _threshold - ) public authorized { - // Only allow to remove an owner, if threshold can still be reached. - require(ownerCount - 1 >= _threshold, "New owner count needs to be larger than new threshold"); - // Validate owner address and check that it corresponds to owner index. - require(owner != address(0) && owner != SENTINEL_OWNERS, "Invalid owner address provided"); - require(owners[prevOwner] == owner, "Invalid prevOwner, owner pair provided"); - owners[prevOwner] = owners[owner]; - owners[owner] = address(0); - ownerCount--; - emit RemovedOwner(owner); - // Change threshold if threshold was changed. - if (threshold != _threshold) changeThreshold(_threshold); - } - - // @dev Allows to swap/replace an owner from the Safe with another address. - // This can only be done via a Safe transaction. - // @param prevOwner Owner that pointed to the owner to be replaced in the linked list - // @param oldOwner Owner address to be replaced. - // @param newOwner New owner address. - function swapOwner( - address prevOwner, - address oldOwner, - address newOwner - ) public authorized { - // Owner address cannot be null. - require(newOwner != address(0) && newOwner != SENTINEL_OWNERS, "Invalid owner address provided"); - // No duplicate owners allowed. - require(owners[newOwner] == address(0), "Address is already an owner"); - // Validate oldOwner address and check that it corresponds to owner index. - require(oldOwner != address(0) && oldOwner != SENTINEL_OWNERS, "Invalid owner address provided"); - require(owners[prevOwner] == oldOwner, "Invalid prevOwner, owner pair provided"); - owners[newOwner] = owners[oldOwner]; - owners[prevOwner] = newOwner; - owners[oldOwner] = address(0); - emit RemovedOwner(oldOwner); - emit AddedOwner(newOwner); - } - - // @dev Allows to update the number of required confirmations by Safe owners. - // This can only be done via a Safe transaction. - // @param _threshold New threshold. - function changeThreshold(uint256 _threshold) public authorized { - // Validate that threshold is smaller than number of owners. - require(_threshold <= ownerCount, "Threshold cannot exceed owner count"); - // There has to be at least one Safe owner. - require(_threshold >= 1, "Threshold needs to be greater than 0"); - threshold = _threshold; - emit ChangedThreshold(threshold); - } - - function getThreshold() public view returns (uint256) { - return threshold; - } - - function isOwner(address owner) public view returns (bool) { - return owner != SENTINEL_OWNERS && owners[owner] != address(0); - } - - // @dev Returns array of owners. - // @return Array of Safe owners. - function getOwners() public view returns (address[] memory) { - address[] memory array = new address[](ownerCount); - - // populate return array - uint256 index = 0; - address currentOwner = owners[SENTINEL_OWNERS]; - while (currentOwner != SENTINEL_OWNERS) { - array[index] = currentOwner; - currentOwner = owners[currentOwner]; - index++; - } - return array; - } -} - -// @title Fallback Manager - A contract that manages fallback calls made to this contract -// @author Richard Meissner - -contract FallbackManager is SelfAuthorized { - // keccak256("fallback_manager.handler.address") - bytes32 internal constant FALLBACK_HANDLER_STORAGE_SLOT = - 0x6c9a6c4a39284e37ed1cf53d337577d14212a4870fb976a4366c693b939918d5; - - function internalSetFallbackHandler(address handler) internal { - bytes32 slot = FALLBACK_HANDLER_STORAGE_SLOT; - // solium-disable-next-line security/no-inline-assembly - assembly { - sstore(slot, handler) - } - } - - // @dev Allows to add a contract to handle fallback calls. - // Only fallback calls without value and with data will be forwarded. - // This can only be done via a Safe transaction. - // @param handler contract to handle fallbacks calls. - function setFallbackHandler(address handler) public authorized { - internalSetFallbackHandler(handler); - } - - function() external payable { - // Only calls without value and with data will be forwarded - if (msg.value > 0 || msg.data.length == 0) { - return; - } - bytes32 slot = FALLBACK_HANDLER_STORAGE_SLOT; - address handler; - // solium-disable-next-line security/no-inline-assembly - assembly { - handler := sload(slot) - } - - if (handler != address(0)) { - // solium-disable-next-line security/no-inline-assembly - assembly { - calldatacopy(0, 0, calldatasize()) - let success := call(gas, handler, 0, 0, calldatasize(), 0, 0) - returndatacopy(0, 0, returndatasize()) - if eq(success, 0) { - revert(0, returndatasize()) - } - return(0, returndatasize()) - } - } - } -} - -// @title SignatureDecoder - Decodes signatures that a encoded as bytes -// @author Ricardo Guilherme Schmidt (Status Research & Development GmbH) -// @author Richard Meissner - -contract SignatureDecoder { - // @dev Recovers address who signed the message - // @param messageHash operation ethereum signed message hash - // @param messageSignature message `txHash` signature - // @param pos which signature to read - function recoverKey( - bytes32 messageHash, - bytes memory messageSignature, - uint256 pos - ) internal pure returns (address) { - uint8 v; - bytes32 r; - bytes32 s; - (v, r, s) = signatureSplit(messageSignature, pos); - return ecrecover(messageHash, v, r, s); - } - - // @dev divides bytes signature into `uint8 v, bytes32 r, bytes32 s`. - // @notice Make sure to peform a bounds check for @param pos, to avoid out of bounds access on @param signatures - // @param pos which signature to read. A prior bounds check of this parameter should be performed, to avoid out of bounds access - // @param signatures concatenated rsv signatures - function signatureSplit(bytes memory signatures, uint256 pos) - internal - pure - returns ( - uint8 v, - bytes32 r, - bytes32 s - ) - { - // The signature format is a compact form of: - // {bytes32 r}{bytes32 s}{uint8 v} - // Compact means, uint8 is not padded to 32 bytes. - // solium-disable-next-line security/no-inline-assembly - assembly { - let signaturePos := mul(0x41, pos) - r := mload(add(signatures, add(signaturePos, 0x20))) - s := mload(add(signatures, add(signaturePos, 0x40))) - // Here we are loading the last 32 bytes, including 31 bytes - // of 's'. There is no 'mload8' to do this. - // - // 'byte' is not working due to the Solidity parser, so lets - // use the second best option, 'and' - v := and(mload(add(signatures, add(signaturePos, 0x41))), 0xff) - } - } -} - -contract ISignatureValidatorConstants { - // bytes4(keccak256("isValidSignature(bytes,bytes)") - bytes4 internal constant EIP1271_MAGIC_VALUE = 0x20c13b0b; -} - -contract ISignatureValidator is ISignatureValidatorConstants { - /** - * @dev Should return whether the signature provided is valid for the provided data - * @param _data Arbitrary length data signed on the behalf of address(this) - * @param _signature Signature byte array associated with _data - * - * MUST return the bytes4 magic value 0x20c13b0b when function passes. - * MUST NOT modify state (using STATICCALL for solc < 0.5, view modifier for solc > 0.5) - * MUST allow external calls - */ - function isValidSignature(bytes memory _data, bytes memory _signature) public view returns (bytes4); -} - -/** - * @title SafeMath - * @dev Math operations with safety checks that revert on error - * TODO: remove once open zeppelin update to solc 0.5.0 - */ -library SafeMath { - /** - * @dev Multiplies two numbers, reverts on overflow. - */ - function mul(uint256 a, uint256 b) internal pure returns (uint256) { - // Gas optimization: this is cheaper than requiring 'a' not being zero, but the - // benefit is lost if 'b' is also tested. - // See: https://github.com/OpenZeppelin/openzeppelin-solidity/pull/522 - if (a == 0) { - return 0; - } - - uint256 c = a * b; - require(c / a == b); - - return c; - } - - /** - * @dev Integer division of two numbers truncating the quotient, reverts on division by zero. - */ - function div(uint256 a, uint256 b) internal pure returns (uint256) { - require(b > 0); // Solidity only automatically asserts when dividing by 0 - uint256 c = a / b; - // assert(a == b * c + a % b); // There is no case in which this doesn't hold - - return c; - } - - /** - * @dev Subtracts two numbers, reverts on overflow (i.e. if subtrahend is greater than minuend). - */ - function sub(uint256 a, uint256 b) internal pure returns (uint256) { - require(b <= a); - uint256 c = a - b; - - return c; - } - - /** - * @dev Adds two numbers, reverts on overflow. - */ - function add(uint256 a, uint256 b) internal pure returns (uint256) { - uint256 c = a + b; - require(c >= a); - - return c; - } - - /** - * @dev Divides two numbers and returns the remainder (unsigned integer modulo), - * reverts when dividing by zero. - */ - function mod(uint256 a, uint256 b) internal pure returns (uint256) { - require(b != 0); - return a % b; - } -} - -// @title Gnosis Safe - A multisignature wallet with support for confirmations using signed messages based on ERC191. -// @author Stefan George - -// @author Richard Meissner - -// @author Ricardo Guilherme Schmidt - (Status Research & Development GmbH) - Gas Token Payment -contract GnosisSafe is - MasterCopy, - ModuleManager, - OwnerManager, - SignatureDecoder, - SecuredTokenTransfer, - ISignatureValidatorConstants, - FallbackManager -{ - using SafeMath for uint256; - - string public constant NAME = "Gnosis Safe"; - string public constant VERSION = "1.1.1"; - - //keccak256( - // "EIP712Domain(address verifyingContract)" - //); - bytes32 private constant DOMAIN_SEPARATOR_TYPEHASH = - 0x035aff83d86937d35b32e04f0ddc6ff469290eef2f1b692d8a815c89404d4749; - - //keccak256( - // "SafeTx(address to,uint256 value,bytes data,uint8 operation,uint256 safeTxGas,uint256 baseGas,uint256 gasPrice,address gasToken,address refundReceiver,uint256 nonce)" - //); - bytes32 private constant SAFE_TX_TYPEHASH = 0xbb8310d486368db6bd6f849402fdd73ad53d316b5a4b2644ad6efe0f941286d8; - - //keccak256( - // "SafeMessage(bytes message)" - //); - bytes32 private constant SAFE_MSG_TYPEHASH = 0x60b3cbf8b4a223d68d641b3b6ddf9a298e7f33710cf3d3a9d1146b5a6150fbca; - - event ApproveHash(bytes32 indexed approvedHash, address indexed owner); - event SignMsg(bytes32 indexed msgHash); - event ExecutionFailure(bytes32 txHash, uint256 payment); - event ExecutionSuccess(bytes32 txHash, uint256 payment); - - uint256 public nonce; - bytes32 public domainSeparator; - // Mapping to keep track of all message hashes that have been approve by ALL REQUIRED owners - mapping(bytes32 => uint256) public signedMessages; - // Mapping to keep track of all hashes (message or transaction) that have been approve by ANY owners - mapping(address => mapping(bytes32 => uint256)) public approvedHashes; - - // This constructor ensures that this contract can only be used as a master copy for Proxy contracts - constructor() public { - // By setting the threshold it is not possible to call setup anymore, - // so we create a Safe with 0 owners and threshold 1. - // This is an unusable Safe, perfect for the mastercopy - threshold = 1; - } - - // @dev Setup function sets initial storage of contract. - // @param _owners List of Safe owners. - // @param _threshold Number of required confirmations for a Safe transaction. - // @param to Contract address for optional delegate call. - // @param data Data payload for optional delegate call. - // @param fallbackHandler Handler for fallback calls to this contract - // @param paymentToken Token that should be used for the payment (0 is ETH) - // @param payment Value that should be paid - // @param paymentReceiver Adddress that should receive the payment (or 0 if tx.origin) - function setup( - address[] calldata _owners, - uint256 _threshold, - address to, - bytes calldata data, - address fallbackHandler, - address paymentToken, - uint256 payment, - address payable paymentReceiver - ) external { - require(domainSeparator == 0, "Domain Separator already set!"); - domainSeparator = keccak256(abi.encode(DOMAIN_SEPARATOR_TYPEHASH, this)); - setupOwners(_owners, _threshold); - if (fallbackHandler != address(0)) internalSetFallbackHandler(fallbackHandler); - // As setupOwners can only be called if the contract has not been initialized we don't need a check for setupModules - setupModules(to, data); - - if (payment > 0) { - // To avoid running into issues with EIP-170 we reuse the handlePayment function (to avoid adjusting code of that has been verified we do not adjust the method itself) - // baseGas = 0, gasPrice = 1 and gas = payment => amount = (payment + 0) * 1 = payment - handlePayment(payment, 0, 1, paymentToken, paymentReceiver); - } - } - - // @dev Allows to execute a Safe transaction confirmed by required number of owners and then pays the account that submitted the transaction. - // Note: The fees are always transfered, even if the user transaction fails. - // @param to Destination address of Safe transaction. - // @param value Ether value of Safe transaction. - // @param data Data payload of Safe transaction. - // @param operation Operation type of Safe transaction. - // @param safeTxGas Gas that should be used for the Safe transaction. - // @param baseGas Gas costs for that are indipendent of the transaction execution(e.g. base transaction fee, signature check, payment of the refund) - // @param gasPrice Gas price that should be used for the payment calculation. - // @param gasToken Token address (or 0 if ETH) that is used for the payment. - // @param refundReceiver Address of receiver of gas payment (or 0 if tx.origin). - // @param signatures Packed signature data ({bytes32 r}{bytes32 s}{uint8 v}) - function execTransaction( - address to, - uint256 value, - bytes calldata data, - Enum.Operation operation, - uint256 safeTxGas, - uint256 baseGas, - uint256 gasPrice, - address gasToken, - address payable refundReceiver, - bytes calldata signatures - ) external returns (bool success) { - bytes32 txHash; - // Use scope here to limit variable lifetime and prevent `stack too deep` errors - { - bytes memory txHashData = encodeTransactionData( - to, - value, - data, - operation, // Transaction info - safeTxGas, - baseGas, - gasPrice, - gasToken, - refundReceiver, // Payment info - nonce - ); - // Increase nonce and execute transaction. - nonce++; - txHash = keccak256(txHashData); - checkSignatures(txHash, txHashData, signatures, true); - } - require(gasleft() >= safeTxGas, "Not enough gas to execute safe transaction"); - // Use scope here to limit variable lifetime and prevent `stack too deep` errors - { - uint256 gasUsed = gasleft(); - // If no safeTxGas has been set and the gasPrice is 0 we assume that all available gas can be used - success = execute(to, value, data, operation, safeTxGas == 0 && gasPrice == 0 ? gasleft() : safeTxGas); - gasUsed = gasUsed.sub(gasleft()); - // We transfer the calculated tx costs to the tx.origin to avoid sending it to intermediate contracts that have made calls - uint256 payment = 0; - if (gasPrice > 0) { - payment = handlePayment(gasUsed, baseGas, gasPrice, gasToken, refundReceiver); - } - if (success) emit ExecutionSuccess(txHash, payment); - else emit ExecutionFailure(txHash, payment); - } - } - - function handlePayment( - uint256 gasUsed, - uint256 baseGas, - uint256 gasPrice, - address gasToken, - address payable refundReceiver - ) private returns (uint256 payment) { - // solium-disable-next-line security/no-tx-origin - address payable receiver = refundReceiver == address(0) ? tx.origin : refundReceiver; - if (gasToken == address(0)) { - // For ETH we will only adjust the gas price to not be higher than the actual used gas price - payment = gasUsed.add(baseGas).mul(gasPrice < tx.gasprice ? gasPrice : tx.gasprice); - // solium-disable-next-line security/no-send - require(receiver.send(payment), "Could not pay gas costs with ether"); - } else { - payment = gasUsed.add(baseGas).mul(gasPrice); - require(transferToken(gasToken, receiver, payment), "Could not pay gas costs with token"); - } - } - - /** - * @dev Checks whether the signature provided is valid for the provided data, hash. Will revert otherwise. - * @param dataHash Hash of the data (could be either a message hash or transaction hash) - * @param data That should be signed (this is passed to an external validator contract) - * @param signatures Signature data that should be verified. Can be ECDSA signature, contract signature (EIP-1271) or approved hash. - * @param consumeHash Indicates that in case of an approved hash the storage can be freed to save gas - */ - function checkSignatures( - bytes32 dataHash, - bytes memory data, - bytes memory signatures, - bool consumeHash - ) internal { - // Load threshold to avoid multiple storage loads - uint256 _threshold = threshold; - // Check that a threshold is set - require(_threshold > 0, "Threshold needs to be defined!"); - // Check that the provided signature data is not too short - require(signatures.length >= _threshold.mul(65), "Signatures data too short"); - // There cannot be an owner with address 0. - address lastOwner = address(0); - address currentOwner; - uint8 v; - bytes32 r; - bytes32 s; - uint256 i; - for (i = 0; i < _threshold; i++) { - (v, r, s) = signatureSplit(signatures, i); - // If v is 0 then it is a contract signature - if (v == 0) { - // When handling contract signatures the address of the contract is encoded into r - currentOwner = address(uint256(r)); - - // Check that signature data pointer (s) is not pointing inside the static part of the signatures bytes - // This check is not completely accurate, since it is possible that more signatures than the threshold are send. - // Here we only check that the pointer is not pointing inside the part that is being processed - require(uint256(s) >= _threshold.mul(65), "Invalid contract signature location: inside static part"); - - // Check that signature data pointer (s) is in bounds (points to the length of data -> 32 bytes) - require( - uint256(s).add(32) <= signatures.length, - "Invalid contract signature location: length not present" - ); - - // Check if the contract signature is in bounds: start of data is s + 32 and end is start + signature length - uint256 contractSignatureLen; - // solium-disable-next-line security/no-inline-assembly - assembly { - contractSignatureLen := mload(add(add(signatures, s), 0x20)) - } - require( - uint256(s).add(32).add(contractSignatureLen) <= signatures.length, - "Invalid contract signature location: data not complete" - ); - - // Check signature - bytes memory contractSignature; - // solium-disable-next-line security/no-inline-assembly - assembly { - // The signature data for contract signatures is appended to the concatenated signatures and the offset is stored in s - contractSignature := add(add(signatures, s), 0x20) - } - require( - ISignatureValidator(currentOwner).isValidSignature(data, contractSignature) == EIP1271_MAGIC_VALUE, - "Invalid contract signature provided" - ); - // If v is 1 then it is an approved hash - } else if (v == 1) { - // When handling approved hashes the address of the approver is encoded into r - currentOwner = address(uint256(r)); - // Hashes are automatically approved by the sender of the message or when they have been pre-approved via a separate transaction - require( - msg.sender == currentOwner || approvedHashes[currentOwner][dataHash] != 0, - "Hash has not been approved" - ); - // Hash has been marked for consumption. If this hash was pre-approved free storage - if (consumeHash && msg.sender != currentOwner) { - approvedHashes[currentOwner][dataHash] = 0; - } - } else if (v > 30) { - // To support eth_sign and similar we adjust v and hash the messageHash with the Ethereum message prefix before applying ecrecover - currentOwner = ecrecover( - keccak256(abi.encodePacked("\x19Ethereum Signed Message:\n32", dataHash)), - v - 4, - r, - s - ); - } else { - // Use ecrecover with the messageHash for EOA signatures - currentOwner = ecrecover(dataHash, v, r, s); - } - require( - currentOwner > lastOwner && owners[currentOwner] != address(0) && currentOwner != SENTINEL_OWNERS, - "Invalid owner provided" - ); - lastOwner = currentOwner; - } - } - - // @dev Allows to estimate a Safe transaction. - // This method is only meant for estimation purpose, therefore two different protection mechanism against execution in a transaction have been made: - // 1.) The method can only be called from the safe itself - // 2.) The response is returned with a revert - // When estimating set `from` to the address of the safe. - // Since the `estimateGas` function includes refunds, call this method to get an estimated of the costs that are deducted from the safe with `execTransaction` - // @param to Destination address of Safe transaction. - // @param value Ether value of Safe transaction. - // @param data Data payload of Safe transaction. - // @param operation Operation type of Safe transaction. - // @return Estimate without refunds and overhead fees (base transaction and payload data gas costs). - function requiredTxGas( - address to, - uint256 value, - bytes calldata data, - Enum.Operation operation - ) external authorized returns (uint256) { - uint256 startGas = gasleft(); - // We don't provide an error message here, as we use it to return the estimate - // solium-disable-next-line error-reason - require(execute(to, value, data, operation, gasleft())); - uint256 requiredGas = startGas - gasleft(); - // Convert response to string and return via error message - revert(string(abi.encodePacked(requiredGas))); - } - - /** - * @dev Marks a hash as approved. This can be used to validate a hash that is used by a signature. - * @param hashToApprove The hash that should be marked as approved for signatures that are verified by this contract. - */ - function approveHash(bytes32 hashToApprove) external { - require(owners[msg.sender] != address(0), "Only owners can approve a hash"); - approvedHashes[msg.sender][hashToApprove] = 1; - emit ApproveHash(hashToApprove, msg.sender); - } - - /** - * @dev Marks a message as signed - * @param _data Arbitrary length data that should be marked as signed on the behalf of address(this) - */ - function signMessage(bytes calldata _data) external authorized { - bytes32 msgHash = getMessageHash(_data); - signedMessages[msgHash] = 1; - emit SignMsg(msgHash); - } - - /** - * Implementation of ISignatureValidator (see `interfaces/ISignatureValidator.sol`) - * @dev Should return whether the signature provided is valid for the provided data. - * The save does not implement the interface since `checkSignatures` is not a view method. - * The method will not perform any state changes (see parameters of `checkSignatures`) - * @param _data Arbitrary length data signed on the behalf of address(this) - * @param _signature Signature byte array associated with _data - * @return a bool upon valid or invalid signature with corresponding _data - */ - function isValidSignature(bytes calldata _data, bytes calldata _signature) external returns (bytes4) { - bytes32 messageHash = getMessageHash(_data); - if (_signature.length == 0) { - require(signedMessages[messageHash] != 0, "Hash not approved"); - } else { - // consumeHash needs to be false, as the state should not be changed - checkSignatures(messageHash, _data, _signature, false); - } - return EIP1271_MAGIC_VALUE; - } - - // @dev Returns hash of a message that can be signed by owners. - // @param message Message that should be hashed - // @return Message hash. - function getMessageHash(bytes memory message) public view returns (bytes32) { - bytes32 safeMessageHash = keccak256(abi.encode(SAFE_MSG_TYPEHASH, keccak256(message))); - return keccak256(abi.encodePacked(bytes1(0x19), bytes1(0x01), domainSeparator, safeMessageHash)); - } - - // @dev Returns the bytes that are hashed to be signed by owners. - // @param to Destination address. - // @param value Ether value. - // @param data Data payload. - // @param operation Operation type. - // @param safeTxGas Fas that should be used for the safe transaction. - // @param baseGas Gas costs for data used to trigger the safe transaction. - // @param gasPrice Maximum gas price that should be used for this transaction. - // @param gasToken Token address (or 0 if ETH) that is used for the payment. - // @param refundReceiver Address of receiver of gas payment (or 0 if tx.origin). - // @param _nonce Transaction nonce. - // @return Transaction hash bytes. - function encodeTransactionData( - address to, - uint256 value, - bytes memory data, - Enum.Operation operation, - uint256 safeTxGas, - uint256 baseGas, - uint256 gasPrice, - address gasToken, - address refundReceiver, - uint256 _nonce - ) public view returns (bytes memory) { - bytes32 safeTxHash = keccak256( - abi.encode( - SAFE_TX_TYPEHASH, - to, - value, - keccak256(data), - operation, - safeTxGas, - baseGas, - gasPrice, - gasToken, - refundReceiver, - _nonce - ) - ); - return abi.encodePacked(bytes1(0x19), bytes1(0x01), domainSeparator, safeTxHash); - } - - // @dev Returns hash to be signed by owners. - // @param to Destination address. - // @param value Ether value. - // @param data Data payload. - // @param operation Operation type. - // @param safeTxGas Fas that should be used for the safe transaction. - // @param baseGas Gas costs for data used to trigger the safe transaction. - // @param gasPrice Maximum gas price that should be used for this transaction. - // @param gasToken Token address (or 0 if ETH) that is used for the payment. - // @param refundReceiver Address of receiver of gas payment (or 0 if tx.origin). - // @param _nonce Transaction nonce. - // @return Transaction hash. - function getTransactionHash( - address to, - uint256 value, - bytes memory data, - Enum.Operation operation, - uint256 safeTxGas, - uint256 baseGas, - uint256 gasPrice, - address gasToken, - address refundReceiver, - uint256 _nonce - ) public view returns (bytes32) { - return - keccak256( - encodeTransactionData( - to, - value, - data, - operation, - safeTxGas, - baseGas, - gasPrice, - gasToken, - refundReceiver, - _nonce - ) - ); - } -} diff --git a/contracts/utils/PermissionRegistry.sol b/contracts/utils/PermissionRegistry.sol index e7e40459..baaea226 100644 --- a/contracts/utils/PermissionRegistry.sol +++ b/contracts/utils/PermissionRegistry.sol @@ -1,5 +1,5 @@ // SPDX-License-Identifier: AGPL-3.0 -pragma solidity ^0.8.8; +pragma solidity ^0.8.17; import "@openzeppelin/contracts-upgradeable/utils/math/SafeMathUpgradeable.sol"; import "@openzeppelin/contracts-upgradeable/access/OwnableUpgradeable.sol"; diff --git a/contracts/utils/RealMath.sol b/contracts/utils/RealMath.sol index f715d111..00291f6e 100644 --- a/contracts/utils/RealMath.sol +++ b/contracts/utils/RealMath.sol @@ -1,5 +1,5 @@ // SPDX-License-Identifier: AGPL-3.0 -pragma solidity ^0.8.8; +pragma solidity ^0.8.17; /** * RealMath: fixed-point math library, based on fractional and integer parts. diff --git a/contracts/utils/TokenVault.sol b/contracts/utils/TokenVault.sol index 69dfaf6e..3a79cf41 100644 --- a/contracts/utils/TokenVault.sol +++ b/contracts/utils/TokenVault.sol @@ -1,5 +1,5 @@ // SPDX-License-Identifier: AGPL-3.0 -pragma solidity ^0.8.8; +pragma solidity ^0.8.17; import "@openzeppelin/contracts-upgradeable/utils/math/SafeMathUpgradeable.sol"; import "@openzeppelin/contracts-upgradeable/token/ERC20/utils/SafeERC20Upgradeable.sol"; diff --git a/contracts/utils/TokenVesting.sol b/contracts/utils/TokenVesting.sol new file mode 100644 index 00000000..b5022943 --- /dev/null +++ b/contracts/utils/TokenVesting.sol @@ -0,0 +1,181 @@ +// SPDX-License-Identifier: AGPL-3.0 +pragma solidity ^0.8.17; + +import "@openzeppelin/contracts/token/ERC20/utils/SafeERC20.sol"; +import "@openzeppelin/contracts/access/Ownable.sol"; +import "@openzeppelin/contracts/utils/math/SafeMath.sol"; + +/** + * @title TokenVesting + * @dev A token holder contract that can release its token balance gradually like a + * typical vesting scheme, with a cliff and vesting period. Optionally revocable by the + * owner. + */ +contract TokenVesting is Ownable { + // The vesting schedule is time-based (i.e. using block timestamps as opposed to e.g. block numbers), and is + // therefore sensitive to timestamp manipulation (which is something miners can do, to a certain degree). Therefore, + // it is recommended to avoid using short time durations (less than a minute). Typical vesting schemes, with a + // cliff period of a year and a duration of four years, are safe to use. + // solhint-disable not-rely-on-time + + using SafeMath for uint256; + using SafeERC20 for IERC20; + + event TokensReleased(address token, uint256 amount); + event TokenVestingRevoked(address token); + + // beneficiary of tokens after they are released + address private _beneficiary; + + // Durations and timestamps are expressed in UNIX time, the same units as block.timestamp. + uint256 private _cliff; + uint256 private _start; + uint256 private _duration; + + bool private _revocable; + + mapping(address => uint256) private _released; + mapping(address => bool) private _revoked; + + /** + * @dev Creates a vesting contract that vests its balance of any ERC20 token to the + * beneficiary, gradually in a linear fashion until start + duration. By then all + * of the balance will have vested. + * @param beneficiary address of the beneficiary to whom vested tokens are transferred + * @param cliffDuration duration in seconds of the cliff in which tokens will begin to vest + * @param start the time (as Unix time) at which point vesting starts + * @param duration duration in seconds of the period in which the tokens will vest + * @param revocable whether the vesting is revocable or not + */ + constructor( + address beneficiary, + uint256 start, + uint256 cliffDuration, + uint256 duration, + bool revocable + ) public { + require(beneficiary != address(0), "TokenVesting: beneficiary is the zero address"); + // solhint-disable-next-line max-line-length + require(cliffDuration <= duration, "TokenVesting: cliff is longer than duration"); + require(duration > 0, "TokenVesting: duration is 0"); + // solhint-disable-next-line max-line-length + require(start.add(duration) > block.timestamp, "TokenVesting: final time is before current time"); + + _beneficiary = beneficiary; + _revocable = revocable; + _duration = duration; + _cliff = start.add(cliffDuration); + _start = start; + } + + /** + * @return the beneficiary of the tokens. + */ + function beneficiary() public view returns (address) { + return _beneficiary; + } + + /** + * @return the cliff time of the token vesting. + */ + function cliff() public view returns (uint256) { + return _cliff; + } + + /** + * @return the start time of the token vesting. + */ + function start() public view returns (uint256) { + return _start; + } + + /** + * @return the duration of the token vesting. + */ + function duration() public view returns (uint256) { + return _duration; + } + + /** + * @return true if the vesting is revocable. + */ + function revocable() public view returns (bool) { + return _revocable; + } + + /** + * @return the amount of the token released. + */ + function released(address token) public view returns (uint256) { + return _released[token]; + } + + /** + * @return true if the token is revoked. + */ + function revoked(address token) public view returns (bool) { + return _revoked[token]; + } + + /** + * @notice Transfers vested tokens to beneficiary. + * @param token ERC20 token which is being vested + */ + function release(IERC20 token) public { + uint256 unreleased = _releasableAmount(token); + + require(unreleased > 0, "TokenVesting: no tokens are due"); + + _released[address(token)] = _released[address(token)].add(unreleased); + + token.safeTransfer(_beneficiary, unreleased); + + emit TokensReleased(address(token), unreleased); + } + + /** + * @notice Allows the owner to revoke the vesting. Tokens already vested + * remain in the contract, the rest are returned to the owner. + * @param token ERC20 token which is being vested + */ + function revoke(IERC20 token) public onlyOwner { + require(_revocable, "TokenVesting: cannot revoke"); + require(!_revoked[address(token)], "TokenVesting: token already revoked"); + + uint256 balance = token.balanceOf(address(this)); + + uint256 unreleased = _releasableAmount(token); + uint256 refund = balance.sub(unreleased); + + _revoked[address(token)] = true; + + token.safeTransfer(owner(), refund); + + emit TokenVestingRevoked(address(token)); + } + + /** + * @dev Calculates the amount that has already vested but hasn't been released yet. + * @param token ERC20 token which is being vested + */ + function _releasableAmount(IERC20 token) private view returns (uint256) { + return _vestedAmount(token).sub(_released[address(token)]); + } + + /** + * @dev Calculates the amount that has already vested. + * @param token ERC20 token which is being vested + */ + function _vestedAmount(IERC20 token) private view returns (uint256) { + uint256 currentBalance = token.balanceOf(address(this)); + uint256 totalBalance = currentBalance.add(_released[address(token)]); + + if (block.timestamp < _cliff) { + return 0; + } else if (block.timestamp >= _start.add(_duration) || _revoked[address(token)]) { + return totalBalance; + } else { + return totalBalance.mul(block.timestamp.sub(_start)).div(_duration); + } + } +} diff --git a/hardhat.config.js b/hardhat.config.js index 80bed4f1..75a29f53 100644 --- a/hardhat.config.js +++ b/hardhat.config.js @@ -131,43 +131,7 @@ module.exports = { solidity: { compilers: [ { - version: "0.4.25", - settings: { - optimizer: { - enabled: true, - runs: 200, - }, - }, - }, - { - version: "0.5.17", - settings: { - optimizer: { - enabled: true, - runs: 200, - }, - }, - }, - { - version: "0.6.8", - settings: { - optimizer: { - enabled: true, - runs: 200, - }, - }, - }, - { - version: "0.7.6", - settings: { - optimizer: { - enabled: true, - runs: 200, - }, - }, - }, - { - version: "0.8.8", + version: "0.8.17", settings: { optimizer: { enabled: true, @@ -179,17 +143,6 @@ module.exports = { }, }, ], - overrides: { - "contracts/utils/GnosisSafe/GnosisProxy.sol": { version: "0.5.14" }, - "contracts/utils/GnosisSafe/GnosisSafe.sol": { version: "0.5.14" }, - "contracts/utils/Create2Deployer.sol": { - version: "0.5.17", - evmVersion: "istanbul", - optimizer: { enabled: false, runs: 200 }, - }, - "contracts/omen/OMNToken.sol": { version: "0.8.8" }, - "contracts/erc20guild/IERC20Guild.sol": { version: "0.8.8" }, - }, }, gasReporter: { enabled: process.env.REPORT_GAS ? true : false, diff --git a/package.json b/package.json index 67d79905..44caece6 100644 --- a/package.json +++ b/package.json @@ -90,7 +90,6 @@ "ipfs-core": "^0.14.1", "math": "0.0.3", "moment": "^2.27.0", - "openzeppelin-solidity": "2.4.0", "prettier": "^2.0.5", "prettier-plugin-solidity": "^1.0.0-beta.19", "truffle-flattener": "^1.4.4", diff --git a/yarn.lock b/yarn.lock index 6abbfafe..52feb44f 100644 --- a/yarn.lock +++ b/yarn.lock @@ -11379,11 +11379,6 @@ onetime@^5.1.0, onetime@^5.1.2: dependencies: mimic-fn "^2.1.0" -openzeppelin-solidity@2.4.0: - version "2.4.0" - resolved "https://registry.yarnpkg.com/openzeppelin-solidity/-/openzeppelin-solidity-2.4.0.tgz#5f0a7b30571c45493449166e57b947203415349d" - integrity sha512-533gc5jkspxW5YT0qJo02Za5q1LHwXK9CJCc48jNj/22ncNM/3M/3JfWLqfpB90uqLwOKOovpl0JfaMQTR+gXQ== - optionator@^0.8.1, optionator@^0.8.2: version "0.8.3" resolved "https://registry.yarnpkg.com/optionator/-/optionator-0.8.3.tgz#84fa1d036fe9d3c7e21d99884b601167ec8fb495" From c33d195610fecd5bd1b1077009d5db55db0d05b9 Mon Sep 17 00:00:00 2001 From: AugustoL Date: Thu, 22 Sep 2022 11:46:38 -0300 Subject: [PATCH 13/33] test(all): remove deleted contracts, do some changes to get most of the tests work --- test/dao/dxdao.js | 5 +-- test/dao/schemes/WalletScheme.js | 43 +-------------------- test/dao/votingMachines/DXDVotingMachine.js | 19 ++++----- test/dxvote/Utils.js | 5 +-- test/erc20guild/ERC20Guild.js | 8 +--- test/erc20guild/implementations/DXDGuild.js | 5 +-- test/helpers/guild.js | 5 +-- test/utils/ERC20VestingFactory.js | 2 +- test/utils/PermissionRegistry.js | 8 +--- 9 files changed, 21 insertions(+), 79 deletions(-) diff --git a/test/dao/dxdao.js b/test/dao/dxdao.js index 4b628842..157d0659 100644 --- a/test/dao/dxdao.js +++ b/test/dao/dxdao.js @@ -13,11 +13,10 @@ contract("DXdao", function (accounts) { beforeEach(async function () { const votingMachineToken = await ERC20Mock.new( - accounts[0], - 1000, "DXDao", "DXD", - "18" + 1000, + accounts[0] ); dxDao = await helpers.deployDao({ diff --git a/test/dao/schemes/WalletScheme.js b/test/dao/schemes/WalletScheme.js index af0417cc..c82a8c70 100644 --- a/test/dao/schemes/WalletScheme.js +++ b/test/dao/schemes/WalletScheme.js @@ -7,9 +7,6 @@ const WalletScheme = artifacts.require("./WalletScheme.sol"); const PermissionRegistry = artifacts.require("./PermissionRegistry.sol"); const ERC20Mock = artifacts.require("./ERC20Mock.sol"); const ActionMock = artifacts.require("./ActionMock.sol"); -const Wallet = artifacts.require("./Wallet.sol"); -const GnosisProxy = artifacts.require("./GnosisProxy.sol"); -const GnosisSafe = artifacts.require("./GnosisSafe.sol"); contract("WalletScheme", function (accounts) { let standardTokenMock, @@ -27,8 +24,8 @@ contract("WalletScheme", function (accounts) { beforeEach(async function () { actionMock = await ActionMock.new(); - testToken = await ERC20Mock.new(accounts[1], 1000, "", "", "18"); - standardTokenMock = await ERC20Mock.new(accounts[1], 1000, "", "", "18"); + testToken = await ERC20Mock.new("", "", 1000, accounts[1]); + standardTokenMock = await ERC20Mock.new(accounts[1], 1000, "", ""); org = await helpers.setupOrganization( [accounts[0], accounts[1], accounts[2]], [1000, 1000, 1000], @@ -839,42 +836,6 @@ contract("WalletScheme", function (accounts) { assert.equal(organizationProposal.value[0], 0); }); - it("MasterWalletScheme - proposal with value to gnosisSafe - positive decision - proposal executed", async () => { - await web3.eth.sendTransaction({ - from: accounts[0], - to: org.avatar.address, - value: 1000, - }); - - var gnosisSafe = await GnosisSafe.new(); - var gnosisProxy = await GnosisProxy.new(gnosisSafe.address); - const tx = await masterWalletScheme.proposeCalls( - [gnosisProxy.address], - ["0x0"], - [666], - constants.TEST_TITLE, - constants.SOME_HASH - ); - const proposalId = await helpers.getValueFromLogs(tx, "_proposalId"); - await votingMachine.contract.vote( - proposalId, - 1, - 0, - constants.NULL_ADDRESS, - { from: accounts[2] } - ); - - const organizationProposal = - await masterWalletScheme.getOrganizationProposal(proposalId); - assert.equal( - organizationProposal.state, - constants.WALLET_SCHEME_PROPOSAL_STATES.executionSuccedd - ); - assert.equal(organizationProposal.callData[0], "0x00"); - assert.equal(organizationProposal.to[0], gnosisProxy.address); - assert.equal(organizationProposal.value[0], 666); - }); - it("MasterWalletScheme - proposal with data - positive decision - proposal executed", async function () { const callData = helpers.testCallFrom(org.avatar.address); diff --git a/test/dao/votingMachines/DXDVotingMachine.js b/test/dao/votingMachines/DXDVotingMachine.js index 134b0598..b799a8be 100644 --- a/test/dao/votingMachines/DXDVotingMachine.js +++ b/test/dao/votingMachines/DXDVotingMachine.js @@ -13,7 +13,6 @@ const PermissionRegistry = artifacts.require("./PermissionRegistry.sol"); const WalletScheme = artifacts.require("./WalletScheme.sol"); const ERC20Mock = artifacts.require("./ERC20Mock.sol"); const ActionMock = artifacts.require("./ActionMock.sol"); -const Wallet = artifacts.require("./Wallet.sol"); const DXDVotingMachine = artifacts.require("./DXDVotingMachine.sol"); contract("DXDVotingMachine", function (accounts) { @@ -39,11 +38,10 @@ contract("DXDVotingMachine", function (accounts) { beforeEach(async function () { actionMock = await ActionMock.new(); const standardTokenMock = await ERC20Mock.new( - accounts[1], - constants.MAX_UINT_256, "", "", - "18" + constants.MAX_UINT_256, + accounts[1] ); await standardTokenMock.transfer(accounts[0], 2000, { from: accounts[1] }); org = await helpers.setupOrganization( @@ -762,16 +760,15 @@ contract("DXDVotingMachine", function (accounts) { describe("Signed Votes", function () { beforeEach(async function () { - const wallet = await Wallet.new(); + const actionMock = await ActionMock.new(); await web3.eth.sendTransaction({ from: accounts[0], to: org.avatar.address, value: constants.TEST_VALUE, }); - await wallet.transferOwnership(org.avatar.address); - const payCallData = await new web3.eth.Contract(wallet.abi).methods - .pay(accounts[1]) + const payCallData = await new web3.eth.Contract(actionMock.abi).methods + .executeCall(accounts[1], "0x0", 10) .encodeABI(); const callDataMintRep = await org.controller.contract.methods @@ -780,21 +777,21 @@ contract("DXDVotingMachine", function (accounts) { await permissionRegistry.setETHPermission( org.avatar.address, - wallet.address, + actionMock.address, payCallData.substring(0, 10), 0, true ); await permissionRegistry.setETHPermission( org.avatar.address, - wallet.address, + actionMock.address, constants.NULL_SIGNATURE, constants.TEST_VALUE, true ); const tx = await cheapVoteWalletScheme.proposeCalls( - [wallet.address, wallet.address, org.controller.address], + [actionMock.address, actionMock.address, org.controller.address], ["0x0", payCallData, callDataMintRep], [constants.TEST_VALUE, 0, 0], constants.TEST_TITLE, diff --git a/test/dxvote/Utils.js b/test/dxvote/Utils.js index e412ef28..1aa56905 100644 --- a/test/dxvote/Utils.js +++ b/test/dxvote/Utils.js @@ -24,11 +24,10 @@ contract("Dxvote Utils", function (accounts) { beforeEach(async function () { standardTokenMock = await ERC20Mock.new( - accounts[1], - web3.utils.toWei("100"), "", "", - "18" + web3.utils.toWei("100"), + accounts[1] ); org = await helpers.setupOrganization( [accounts[0], accounts[1], accounts[2]], diff --git a/test/erc20guild/ERC20Guild.js b/test/erc20guild/ERC20Guild.js index 7ea59958..06e76746 100644 --- a/test/erc20guild/ERC20Guild.js +++ b/test/erc20guild/ERC20Guild.js @@ -1295,13 +1295,7 @@ contract("ERC20Guild", function (accounts) { await lockTokens(); await allowActionMockA(); - testToken = await ERC20Mock.new( - accounts[1], - 1000, - "TestToken", - "TTT", - "18" - ); + testToken = await ERC20Mock.new("TestToken", "TTT", 1000, accounts[1]); await testToken.transfer(erc20Guild.address, 300, { from: accounts[1] }); const setTestPermissions = await createProposal({ diff --git a/test/erc20guild/implementations/DXDGuild.js b/test/erc20guild/implementations/DXDGuild.js index 3f3ad104..a20ed4cb 100644 --- a/test/erc20guild/implementations/DXDGuild.js +++ b/test/erc20guild/implementations/DXDGuild.js @@ -40,11 +40,10 @@ contract("DXDGuild", function (accounts) { dxdGuild = await DXDGuild.new(); const votingMachineToken = await ERC20Mock.new( - accounts[0], - 1000, "DXDao", "DXD", - "18" + 1000, + accounts[0] ); dxDao = await helpers.deployDao({ diff --git a/test/helpers/guild.js b/test/helpers/guild.js index e44acb73..43ee40b3 100644 --- a/test/helpers/guild.js +++ b/test/helpers/guild.js @@ -7,11 +7,10 @@ export async function createAndSetupGuildToken(accounts, balances) { const [, ...restOfBalances] = balances; const totalSupply = balances.reduce((a, b) => a + b, 0); const guildToken = await ERC20Mock.new( - firstAccount, - totalSupply, "Test Token", "TT", - "18" + totalSupply, + firstAccount ); await Promise.all( diff --git a/test/utils/ERC20VestingFactory.js b/test/utils/ERC20VestingFactory.js index 31fcf9ff..6a639d5d 100644 --- a/test/utils/ERC20VestingFactory.js +++ b/test/utils/ERC20VestingFactory.js @@ -16,7 +16,7 @@ contract("ERC20VestingFactory", function (accounts) { describe("Create Vesting Contracts", function () { beforeEach(async function () { - dxdTokenMock = await ERC20Mock.new(dao, 1000, "", "", "18"); + dxdTokenMock = await ERC20Mock.new("", "", 1000, dao); vestingFactory = await ERC20VestingFactory.new(dxdTokenMock.address, dao); }); diff --git a/test/utils/PermissionRegistry.js b/test/utils/PermissionRegistry.js index 15218165..5f6f56e6 100644 --- a/test/utils/PermissionRegistry.js +++ b/test/utils/PermissionRegistry.js @@ -20,13 +20,7 @@ contract("PermissionRegistry", function (accounts) { beforeEach(async function () { actionMock = await ActionMock.new(); - const standardTokenMock = await ERC20Mock.new( - accounts[1], - 1000, - "", - "", - "18" - ); + const standardTokenMock = await ERC20Mock.new("", "", 1000, accounts[1]); org = await helpers.setupOrganization( [accounts[0], accounts[1], accounts[2]], [1000, 1000, 1000], From 7e10cb6092a1d1cd5dc19e9c98e38d031a2d641f Mon Sep 17 00:00:00 2001 From: AugustoL Date: Thu, 22 Sep 2022 14:19:06 -0300 Subject: [PATCH 14/33] refactor(contracts/dao/schemes): refactor WalletScheme into Scheme, WalletScheme and AvatarScheme --- contracts/dao/schemes/AvatarScheme.sol | 121 +++++++++ contracts/dao/schemes/Scheme.sol | 285 +++++++++++++++++++++ contracts/dao/schemes/WalletScheme.sol | 328 ++----------------------- 3 files changed, 432 insertions(+), 302 deletions(-) create mode 100644 contracts/dao/schemes/AvatarScheme.sol create mode 100644 contracts/dao/schemes/Scheme.sol diff --git a/contracts/dao/schemes/AvatarScheme.sol b/contracts/dao/schemes/AvatarScheme.sol new file mode 100644 index 00000000..e94c504c --- /dev/null +++ b/contracts/dao/schemes/AvatarScheme.sol @@ -0,0 +1,121 @@ +// SPDX-License-Identifier: AGPL-3.0 +pragma solidity ^0.8.17; + +import "@openzeppelin/contracts/utils/math/SafeMath.sol"; +import "@openzeppelin/contracts/utils/Address.sol"; +import "./Scheme.sol"; + +/** + * @title AvatarScheme. + * @dev A scheme for proposing and executing calls to any contract from the DAO avatar + * It has a value call controller address, in case of the controller address ot be set the scheme will be doing + * generic calls to the dao controller. If the controller address is not set it will e executing raw calls form the + * scheme itself. + * The scheme can only execute calls allowed to in the permission registry, if the controller address is set + * the permissions will be checked using the avatar address as sender, if not the scheme address will be used as + * sender. + */ +contract AvatarScheme is Scheme { + using SafeMath for uint256; + using Address for address; + + /** + * @dev execution of proposals, can only be called by the voting machine in which the vote is held. + REQUIRE FROM "../daostack/votingMachines/ProposalExecuteInterface.sol" DONT REMOVE + * @param _proposalId the ID of the voting in the voting machine + * @param _winningOption The winning option in the voting machine + * @return bool success + */ + function executeProposal(bytes32 _proposalId, uint256 _winningOption) + external + override + onlyVotingMachine + returns (bool) + { + // We use isExecutingProposal variable to avoid re-entrancy in proposal execution + require(!executingProposal, "AvatarScheme: proposal execution already running"); + executingProposal = true; + + Proposal storage proposal = proposals[_proposalId]; + require(proposal.state == ProposalState.Submitted, "AvatarScheme: must be a submitted proposal"); + + require( + controller.getSchemeCanMakeAvatarCalls(address(this)), + "AvatarScheme: scheme have to make avatar calls" + ); + + if (_winningOption == 0) { + proposal.state = ProposalState.Rejected; + emit ProposalStateChange(_proposalId, uint256(ProposalState.Rejected)); + } else if (proposal.submittedTime.add(maxSecondsForExecution) < block.timestamp) { + // If the amount of time passed since submission plus max proposal time is lower than block timestamp + // the proposal timeout execution is reached and proposal cant be executed from now on + + proposal.state = ProposalState.ExecutionTimeout; + emit ProposalStateChange(_proposalId, uint256(ProposalState.ExecutionTimeout)); + } else { + uint256 oldRepSupply = getNativeReputationTotalSupply(); + + // proposal.to.length.div( proposal.totalOptions ) == Calls per option + // We dont assign it as variable to avoid hitting stack too deep error + uint256 callIndex = proposal.to.length.div(proposal.totalOptions).mul(_winningOption.sub(1)); + uint256 lastCallIndex = callIndex.add(proposal.to.length.div(proposal.totalOptions)); + + controller.avatarCall( + address(permissionRegistry), + abi.encodeWithSignature("setERC20Balances()"), + avatar, + 0 + ); + + for (callIndex; callIndex < lastCallIndex; callIndex++) { + bytes memory _data = proposal.callData[callIndex]; + bytes4 callDataFuncSignature; + assembly { + callDataFuncSignature := mload(add(_data, 32)) + } + + bool callsSucessResult = false; + // The permission registry keeps track of all value transferred and checks call permission + (callsSucessResult, ) = controller.avatarCall( + address(permissionRegistry), + abi.encodeWithSignature( + "setETHPermissionUsed(address,address,bytes4,uint256)", + avatar, + proposal.to[callIndex], + callDataFuncSignature, + proposal.value[callIndex] + ), + avatar, + 0 + ); + require(callsSucessResult, "AvatarScheme: setETHPermissionUsed failed"); + + (callsSucessResult, ) = controller.avatarCall( + proposal.to[callIndex], + proposal.callData[callIndex], + avatar, + proposal.value[callIndex] + ); + require(callsSucessResult, "AvatarScheme: Proposal call failed"); + + proposal.state = ProposalState.ExecutionSucceeded; + } + + // Cant mint or burn more REP than the allowed percentaged set in the wallet scheme initialization + require( + (oldRepSupply.mul(uint256(100).add(maxRepPercentageChange)).div(100) >= + getNativeReputationTotalSupply()) && + (oldRepSupply.mul(uint256(100).sub(maxRepPercentageChange)).div(100) <= + getNativeReputationTotalSupply()), + "AvatarScheme: maxRepPercentageChange passed" + ); + + require(permissionRegistry.checkERC20Limits(address(avatar)), "AvatarScheme: ERC20 limits passed"); + + emit ProposalStateChange(_proposalId, uint256(ProposalState.ExecutionSucceeded)); + } + executingProposal = false; + return true; + } +} diff --git a/contracts/dao/schemes/Scheme.sol b/contracts/dao/schemes/Scheme.sol new file mode 100644 index 00000000..ebb81fd8 --- /dev/null +++ b/contracts/dao/schemes/Scheme.sol @@ -0,0 +1,285 @@ +// SPDX-License-Identifier: AGPL-3.0 +pragma solidity ^0.8.17; + +import "@openzeppelin/contracts/utils/math/SafeMath.sol"; +import "@openzeppelin/contracts/utils/Address.sol"; +import "@openzeppelin/contracts/token/ERC20/IERC20.sol"; +import "../../utils/PermissionRegistry.sol"; +import "../DAOReputation.sol"; +import "../DAOAvatar.sol"; +import "../DAOController.sol"; +import "../votingMachine/DXDVotingMachineCallbacks.sol"; + +/** + * @title WalletScheme. + * @dev A scheme for proposing and executing calls to any contract except itself + * It has a value call controller address, in case of the controller address ot be set the scheme will be doing + * generic calls to the dao controller. If the controller address is not set it will e executing raw calls form the + * scheme itself. + * The scheme can only execute calls allowed to in the permission registry, if the controller address is set + * the permissions will be checked using the avatar address as sender, if not the scheme address will be used as + * sender. + */ +abstract contract Scheme is DXDVotingMachineCallbacks { + using SafeMath for uint256; + using Address for address; + + string public constant SCHEME_TYPE = "Wallet Scheme v1.3"; + bytes4 public constant ERC20_TRANSFER_SIGNATURE = bytes4(keccak256("transfer(address,uint256)")); + bytes4 public constant ERC20_APPROVE_SIGNATURE = bytes4(keccak256("approve(address,uint256)")); + bytes4 public constant SET_MAX_SECONDS_FOR_EXECUTION_SIGNATURE = + bytes4(keccak256("setMaxSecondsForExecution(uint256)")); + + enum ProposalState { + None, + Submitted, + Rejected, + ExecutionSucceeded, + ExecutionTimeout + } + + struct Proposal { + address[] to; + bytes[] callData; + uint256[] value; + uint256 totalOptions; + ProposalState state; + string title; + string descriptionHash; + uint256 submittedTime; + } + + mapping(bytes32 => Proposal) public proposals; + bytes32[] public proposalsList; + + DAOController public controller; + PermissionRegistry public permissionRegistry; + string public schemeName; + uint256 public maxSecondsForExecution; + uint256 public maxRepPercentageChange; + + // Boolean that is true when is executing a proposal, to avoid re-entrancy attacks. + bool internal executingProposal; + + event ProposalStateChange(bytes32 indexed _proposalId, uint256 indexed _state); + + /** + * @dev initialize + * @param _avatar the avatar address + * @param _votingMachine the voting machine address + * @param _controller The controller address + * @param _permissionRegistry The address of the permission registry contract + * @param _maxSecondsForExecution The maximum amount of time in seconds for a proposal without executed since + * submitted time + * @param _maxRepPercentageChange The maximum percentage allowed to be changed in REP total supply after proposal + * execution + */ + function initialize( + address payable _avatar, + address _votingMachine, + address _controller, + address _permissionRegistry, + string calldata _schemeName, + uint256 _maxSecondsForExecution, + uint256 _maxRepPercentageChange + ) external { + require(address(avatar) == address(0), "WalletScheme: cannot init twice"); + require(_avatar != address(0), "WalletScheme: avatar cannot be zero"); + require(_controller != address(0), "WalletScheme: controller cannot be zero"); + require( + _maxSecondsForExecution >= 86400, + "WalletScheme: _maxSecondsForExecution cant be less than 86400 seconds" + ); + avatar = DAOAvatar(_avatar); + votingMachine = _votingMachine; + controller = DAOController(_controller); + permissionRegistry = PermissionRegistry(_permissionRegistry); + schemeName = _schemeName; + maxSecondsForExecution = _maxSecondsForExecution; + maxRepPercentageChange = _maxRepPercentageChange; + } + + /** + * @dev Set the max amount of seconds that a proposal has to be executed, only callable from the avatar address + * @param _maxSecondsForExecution New max proposal time in seconds to be used + */ + function setMaxSecondsForExecution(uint256 _maxSecondsForExecution) external { + require( + msg.sender == address(avatar), + "WalletScheme: setMaxSecondsForExecution is callable only form the avatar" + ); + require( + _maxSecondsForExecution >= 86400, + "WalletScheme: _maxSecondsForExecution cant be less than 86400 seconds" + ); + maxSecondsForExecution = _maxSecondsForExecution; + } + + /** + * @dev execution of proposals, can only be called by the voting machine in which the vote is held. + REQUIRE FROM "../daostack/votingMachines/ProposalExecuteInterface.sol" DONT REMOVE + * @param _proposalId the ID of the voting in the voting machine + * @param _winningOption The winning option in the voting machine + * @return bool success + */ + function executeProposal(bytes32 _proposalId, uint256 _winningOption) + external + virtual + onlyVotingMachine + returns (bool) + {} + + /** + * @dev Propose calls to be executed, the calls have to be allowed by the permission registry + * @param _to - The addresses to call + * @param _callData - The abi encode data for the calls + * @param _value value(ETH) to transfer with the calls + * @param _totalOptions The amount of options to be voted on + * @param _title title of proposal + * @param _descriptionHash proposal description hash + * @return an id which represents the proposal + */ + function proposeCalls( + address[] calldata _to, + bytes[] calldata _callData, + uint256[] calldata _value, + uint256 _totalOptions, + string calldata _title, + string calldata _descriptionHash + ) external returns (bytes32) { + // Check the proposal calls + for (uint256 i = 0; i < _to.length; i++) { + bytes4 callDataFuncSignature = getFuncSignature(_callData[i]); + + // Only allow proposing calls to this address to call setMaxSecondsForExecution function + require( + _to[i] != address(this) || + (callDataFuncSignature == SET_MAX_SECONDS_FOR_EXECUTION_SIGNATURE && _value[i] == 0), + "WalletScheme: invalid proposal caller" + ); + + // This will fail only when and ERC20 transfer or approve with ETH value is proposed + require( + (callDataFuncSignature != ERC20_TRANSFER_SIGNATURE && + callDataFuncSignature != ERC20_APPROVE_SIGNATURE) || _value[i] == 0, + "WalletScheme: cant propose ERC20 transfers with value" + ); + } + require(_to.length == _callData.length, "WalletScheme: invalid _callData length"); + require(_to.length == _value.length, "WalletScheme: invalid _value length"); + require( + _totalOptions <= _to.length && _value.length.mod(_totalOptions) == 0, + "WalletScheme: Invalid _totalOptions or action calls length" + ); + require(_totalOptions == 2, "WalletScheme: The total amount of options should be 2"); + + bytes32 voteParams = controller.getSchemeParameters(address(this)); + + // Get the proposal id that will be used from the voting machine + // bytes32 proposalId = votingMachine.propose(_totalOptions, voteParams, msg.sender, address(avatar)); + bytes32 proposalId = abi.decode( + votingMachine.functionCall( + abi.encodeWithSignature( + "propose(uint256,bytes32,address,address)", + _totalOptions, + voteParams, + msg.sender, + avatar + ), + "WalletScheme: DXDVotingMachine callback propose error" + ), + (bytes32) + ); + + // Add the proposal to the proposals mapping, proposals list and proposals information mapping + proposals[proposalId] = Proposal({ + to: _to, + callData: _callData, + value: _value, + state: ProposalState.Submitted, + totalOptions: _totalOptions, + title: _title, + descriptionHash: _descriptionHash, + submittedTime: block.timestamp + }); + // slither-disable-next-line all + proposalsList.push(proposalId); + proposalSnapshots[proposalId] = DAOReputation(getReputation()).getCurrentSnapshotId(); + emit ProposalStateChange(proposalId, uint256(ProposalState.Submitted)); + return proposalId; + } + + /** + * @dev Get the information of a proposal by id + * @param proposalId the ID of the proposal + */ + function getOrganizationProposal(bytes32 proposalId) + public + view + returns ( + address[] memory to, + bytes[] memory callData, + uint256[] memory value, + ProposalState state, + string memory title, + string memory descriptionHash, + uint256 submittedTime + ) + { + return ( + proposals[proposalId].to, + proposals[proposalId].callData, + proposals[proposalId].value, + proposals[proposalId].state, + proposals[proposalId].title, + proposals[proposalId].descriptionHash, + proposals[proposalId].submittedTime + ); + } + + /** + * @dev Get the information of a proposal by index + * @param proposalIndex the index of the proposal in the proposals list + */ + function getOrganizationProposalByIndex(uint256 proposalIndex) + external + view + returns ( + address[] memory to, + bytes[] memory callData, + uint256[] memory value, + ProposalState state, + string memory title, + string memory descriptionHash, + uint256 submittedTime + ) + { + return getOrganizationProposal(proposalsList[proposalIndex]); + } + + /** + * @dev Get call data signature + * @param data The bytes data of the data to get the signature + */ + function getFuncSignature(bytes calldata data) public pure returns (bytes4) { + if (data.length >= 4) { + return bytes4(data[:4]); + } else { + return bytes4(0); + } + } + + /** + * @dev Get the proposals length + */ + function getOrganizationProposalsLength() external view returns (uint256) { + return proposalsList.length; + } + + /** + * @dev Get the proposals ids + */ + function getOrganizationProposals() external view returns (bytes32[] memory) { + return proposalsList; + } +} diff --git a/contracts/dao/schemes/WalletScheme.sol b/contracts/dao/schemes/WalletScheme.sol index 90630586..ecfe1312 100644 --- a/contracts/dao/schemes/WalletScheme.sol +++ b/contracts/dao/schemes/WalletScheme.sol @@ -3,12 +3,7 @@ pragma solidity ^0.8.17; import "@openzeppelin/contracts/utils/math/SafeMath.sol"; import "@openzeppelin/contracts/utils/Address.sol"; -import "@openzeppelin/contracts/token/ERC20/IERC20.sol"; -import "../../utils/PermissionRegistry.sol"; -import "../DAOReputation.sol"; -import "../DAOAvatar.sol"; -import "../DAOController.sol"; -import "../votingMachine/DXDVotingMachineCallbacks.sol"; +import "./Scheme.sol"; /** * @title WalletScheme. @@ -20,111 +15,14 @@ import "../votingMachine/DXDVotingMachineCallbacks.sol"; * the permissions will be checked using the avatar address as sender, if not the scheme address will be used as * sender. */ -contract WalletScheme is DXDVotingMachineCallbacks { +contract WalletScheme is Scheme { using SafeMath for uint256; using Address for address; - string public constant SCHEME_TYPE = "Wallet Scheme v1.3"; - bytes4 public constant ERC20_TRANSFER_SIGNATURE = bytes4(keccak256("transfer(address,uint256)")); - bytes4 public constant ERC20_APPROVE_SIGNATURE = bytes4(keccak256("approve(address,uint256)")); - bytes4 public constant SET_MAX_SECONDS_FOR_EXECUTION_SIGNATURE = - bytes4(keccak256("setMaxSecondsForExecution(uint256)")); - - enum ProposalState { - None, - Submitted, - Rejected, - ExecutionSucceeded, - ExecutionTimeout - } - - struct Proposal { - address[] to; - bytes[] callData; - uint256[] value; - uint256 totalOptions; - ProposalState state; - string title; - string descriptionHash; - uint256 submittedTime; - } - - mapping(bytes32 => Proposal) public proposals; - bytes32[] public proposalsList; - - bool public doAvatarGenericCalls; - DAOController public controller; - PermissionRegistry public permissionRegistry; - string public schemeName; - uint256 public maxSecondsForExecution; - uint256 public maxRepPercentageChange; - - // Boolean that is true when is executing a proposal, to avoid re-entrancy attacks. - bool internal executingProposal; - - event ProposalStateChange(bytes32 indexed _proposalId, uint256 indexed _state); - - /** - * @dev initialize - * @param _avatar the avatar address - * @param _votingMachine the voting machine address - * @param _doAvatarGenericCalls will the scheme do generic calls from the avatar - * @param _controller The controller address - * @param _permissionRegistry The address of the permission registry contract - * @param _maxSecondsForExecution The maximum amount of time in seconds for a proposal without executed since - * submitted time - * @param _maxRepPercentageChange The maximum percentage allowed to be changed in REP total supply after proposal - * execution - */ - function initialize( - address payable _avatar, - address _votingMachine, - bool _doAvatarGenericCalls, - address _controller, - address _permissionRegistry, - string calldata _schemeName, - uint256 _maxSecondsForExecution, - uint256 _maxRepPercentageChange - ) external { - require(address(avatar) == address(0), "WalletScheme: cannot init twice"); - require(_avatar != address(0), "WalletScheme: avatar cannot be zero"); - require(_controller != address(0), "WalletScheme: controller cannot be zero"); - require( - _maxSecondsForExecution >= 86400, - "WalletScheme: _maxSecondsForExecution cant be less than 86400 seconds" - ); - avatar = DAOAvatar(_avatar); - votingMachine = _votingMachine; - doAvatarGenericCalls = _doAvatarGenericCalls; - controller = DAOController(_controller); - permissionRegistry = PermissionRegistry(_permissionRegistry); - schemeName = _schemeName; - maxSecondsForExecution = _maxSecondsForExecution; - maxRepPercentageChange = _maxRepPercentageChange; - } - /** - * @dev Fallback function that allows the wallet to receive ETH when the controller address is not set + * @dev Receive function that allows the wallet to receive ETH when the controller address is not set */ - receive() external payable { - require(!doAvatarGenericCalls, "WalletScheme: Cant receive if it will make generic calls to avatar"); - } - - /** - * @dev Set the max amount of seconds that a proposal has to be executed, only callable from the avatar address - * @param _maxSecondsForExecution New max proposal time in seconds to be used - */ - function setMaxSecondsForExecution(uint256 _maxSecondsForExecution) external { - require( - msg.sender == address(avatar), - "WalletScheme: setMaxSecondsForExecution is callable only form the avatar" - ); - require( - _maxSecondsForExecution >= 86400, - "WalletScheme: _maxSecondsForExecution cant be less than 86400 seconds" - ); - maxSecondsForExecution = _maxSecondsForExecution; - } + receive() external payable {} /** * @dev execution of proposals, can only be called by the voting machine in which the vote is held. @@ -133,7 +31,12 @@ contract WalletScheme is DXDVotingMachineCallbacks { * @param _winningOption The winning option in the voting machine * @return bool success */ - function executeProposal(bytes32 _proposalId, uint256 _winningOption) external onlyVotingMachine returns (bool) { + function executeProposal(bytes32 _proposalId, uint256 _winningOption) + external + override + onlyVotingMachine + returns (bool) + { // We use isExecutingProposal variable to avoid re-entrancy in proposal execution require(!executingProposal, "WalletScheme: proposal execution already running"); executingProposal = true; @@ -141,6 +44,11 @@ contract WalletScheme is DXDVotingMachineCallbacks { Proposal storage proposal = proposals[_proposalId]; require(proposal.state == ProposalState.Submitted, "WalletScheme: must be a submitted proposal"); + require( + !controller.getSchemeCanMakeAvatarCalls(address(this)), + "WalletScheme: scheme cannot make avatar calls" + ); + if (_winningOption == 0) { proposal.state = ProposalState.Rejected; emit ProposalStateChange(_proposalId, uint256(ProposalState.Rejected)); @@ -158,16 +66,7 @@ contract WalletScheme is DXDVotingMachineCallbacks { uint256 callIndex = proposal.to.length.div(proposal.totalOptions).mul(_winningOption.sub(1)); uint256 lastCallIndex = callIndex.add(proposal.to.length.div(proposal.totalOptions)); - if (doAvatarGenericCalls) { - controller.avatarCall( - address(permissionRegistry), - abi.encodeWithSignature("setERC20Balances()"), - avatar, - 0 - ); - } else { - permissionRegistry.setERC20Balances(); - } + permissionRegistry.setERC20Balances(); for (callIndex; callIndex < lastCallIndex; callIndex++) { bytes memory _data = proposal.callData[callIndex]; @@ -178,36 +77,15 @@ contract WalletScheme is DXDVotingMachineCallbacks { bool callsSucessResult = false; // The permission registry keeps track of all value transferred and checks call permission - if (doAvatarGenericCalls) { - controller.avatarCall( - address(permissionRegistry), - abi.encodeWithSignature( - "setETHPermissionUsed(address,address,bytes4,uint256)", - avatar, - proposal.to[callIndex], - callDataFuncSignature, - proposal.value[callIndex] - ), - avatar, - 0 - ); - (callsSucessResult, ) = controller.avatarCall( - proposal.to[callIndex], - proposal.callData[callIndex], - avatar, - proposal.value[callIndex] - ); - } else { - permissionRegistry.setETHPermissionUsed( - address(this), - proposal.to[callIndex], - callDataFuncSignature, - proposal.value[callIndex] - ); - (callsSucessResult, ) = proposal.to[callIndex].call{value: proposal.value[callIndex]}( - proposal.callData[callIndex] - ); - } + permissionRegistry.setETHPermissionUsed( + address(this), + proposal.to[callIndex], + callDataFuncSignature, + proposal.value[callIndex] + ); + (callsSucessResult, ) = proposal.to[callIndex].call{value: proposal.value[callIndex]}( + proposal.callData[callIndex] + ); require(callsSucessResult, "WalletScheme: Proposal call failed"); @@ -223,165 +101,11 @@ contract WalletScheme is DXDVotingMachineCallbacks { "WalletScheme: maxRepPercentageChange passed" ); - require(permissionRegistry.checkERC20Limits(doAvatarGenericCalls ? address(avatar) : address(this))); + require(permissionRegistry.checkERC20Limits(address(this)), "WalletScheme: ERC20 limits passed"); emit ProposalStateChange(_proposalId, uint256(ProposalState.ExecutionSucceeded)); } executingProposal = false; return true; } - - /** - * @dev Propose calls to be executed, the calls have to be allowed by the permission registry - * @param _to - The addresses to call - * @param _callData - The abi encode data for the calls - * @param _value value(ETH) to transfer with the calls - * @param _totalOptions The amount of options to be voted on - * @param _title title of proposal - * @param _descriptionHash proposal description hash - * @return an id which represents the proposal - */ - function proposeCalls( - address[] calldata _to, - bytes[] calldata _callData, - uint256[] calldata _value, - uint256 _totalOptions, - string calldata _title, - string calldata _descriptionHash - ) external returns (bytes32) { - // Check the proposal calls - for (uint256 i = 0; i < _to.length; i++) { - bytes4 callDataFuncSignature = getFuncSignature(_callData[i]); - - // Only allow proposing calls to this address to call setMaxSecondsForExecution function - require( - _to[i] != address(this) || - (callDataFuncSignature == SET_MAX_SECONDS_FOR_EXECUTION_SIGNATURE && _value[i] == 0), - "WalletScheme: invalid proposal caller" - ); - - // This will fail only when and ERC20 transfer or approve with ETH value is proposed - require( - (callDataFuncSignature != ERC20_TRANSFER_SIGNATURE && - callDataFuncSignature != ERC20_APPROVE_SIGNATURE) || _value[i] == 0, - "WalletScheme: cant propose ERC20 transfers with value" - ); - } - require(_to.length == _callData.length, "WalletScheme: invalid _callData length"); - require(_to.length == _value.length, "WalletScheme: invalid _value length"); - require( - _totalOptions <= _to.length && _value.length.mod(_totalOptions) == 0, - "WalletScheme: Invalid _totalOptions or action calls length" - ); - require(_totalOptions == 2, "WalletScheme: The total amount of options should be 2"); - - bytes32 voteParams = controller.getSchemeParameters(address(this)); - - // Get the proposal id that will be used from the voting machine - // bytes32 proposalId = votingMachine.propose(_totalOptions, voteParams, msg.sender, address(avatar)); - bytes32 proposalId = abi.decode( - votingMachine.functionCall( - abi.encodeWithSignature( - "propose(uint256,bytes32,address,address)", - _totalOptions, - voteParams, - msg.sender, - avatar - ), - "WalletScheme: DXDVotingMachine callback propose error" - ), - (bytes32) - ); - - // Add the proposal to the proposals mapping, proposals list and proposals information mapping - proposals[proposalId] = Proposal({ - to: _to, - callData: _callData, - value: _value, - state: ProposalState.Submitted, - totalOptions: _totalOptions, - title: _title, - descriptionHash: _descriptionHash, - submittedTime: block.timestamp - }); - // slither-disable-next-line all - proposalsList.push(proposalId); - proposalSnapshots[proposalId] = DAOReputation(getReputation()).getCurrentSnapshotId(); - emit ProposalStateChange(proposalId, uint256(ProposalState.Submitted)); - return proposalId; - } - - /** - * @dev Get the information of a proposal by id - * @param proposalId the ID of the proposal - */ - function getOrganizationProposal(bytes32 proposalId) - public - view - returns ( - address[] memory to, - bytes[] memory callData, - uint256[] memory value, - ProposalState state, - string memory title, - string memory descriptionHash, - uint256 submittedTime - ) - { - return ( - proposals[proposalId].to, - proposals[proposalId].callData, - proposals[proposalId].value, - proposals[proposalId].state, - proposals[proposalId].title, - proposals[proposalId].descriptionHash, - proposals[proposalId].submittedTime - ); - } - - /** - * @dev Get the information of a proposal by index - * @param proposalIndex the index of the proposal in the proposals list - */ - function getOrganizationProposalByIndex(uint256 proposalIndex) - external - view - returns ( - address[] memory to, - bytes[] memory callData, - uint256[] memory value, - ProposalState state, - string memory title, - string memory descriptionHash, - uint256 submittedTime - ) - { - return getOrganizationProposal(proposalsList[proposalIndex]); - } - - /** - * @dev Get call data signature - * @param data The bytes data of the data to get the signature - */ - function getFuncSignature(bytes calldata data) public pure returns (bytes4) { - if (data.length >= 4) { - return bytes4(data[:4]); - } else { - return bytes4(0); - } - } - - /** - * @dev Get the proposals length - */ - function getOrganizationProposalsLength() external view returns (uint256) { - return proposalsList.length; - } - - /** - * @dev Get the proposals ids - */ - function getOrganizationProposals() external view returns (bytes32[] memory) { - return proposalsList; - } } From 9eb873a0cd5f485a93bec9e300fb076bc56abc6b Mon Sep 17 00:00:00 2001 From: AugustoL Date: Thu, 22 Sep 2022 14:20:14 -0300 Subject: [PATCH 15/33] test(walletschemes): remove doAvatarGenericCalls parameter from WalletScheme.initialize --- test/dao/dxdao.js | 7 +++---- test/dao/schemes/WalletScheme.js | 7 ------- 2 files changed, 3 insertions(+), 11 deletions(-) diff --git a/test/dao/dxdao.js b/test/dao/dxdao.js index 157d0659..9793aa92 100644 --- a/test/dao/dxdao.js +++ b/test/dao/dxdao.js @@ -3,7 +3,7 @@ import { assert } from "chai"; import * as helpers from "../helpers"; const PermissionRegistry = artifacts.require("./PermissionRegistry.sol"); -const WalletScheme = artifacts.require("./WalletScheme.sol"); +const AvatarScheme = artifacts.require("./AvatarScheme.sol"); const ERC20Mock = artifacts.require("./ERC20Mock.sol"); contract("DXdao", function (accounts) { @@ -97,12 +97,11 @@ contract("DXdao", function (accounts) { true ); - const masterWalletScheme = await WalletScheme.new(); + const masterWalletScheme = await AvatarScheme.new(); await masterWalletScheme.initialize( dxDao.avatar.address, dxDao.votingMachine.address, - true, dxDao.controller.address, permissionRegistry.address, "Master Scheme", @@ -129,7 +128,7 @@ contract("DXdao", function (accounts) { proposalId = createProposalTx.logs[0].args._proposalId; }); - it("Deploy DXvote", function (done) { + it.skip("Deploy DXvote", function (done) { // TODO: See how this tests can be run in github CI, the use the setTimeout breaks the tests if (!process.env.CI) hre.run("deploy-dxvote-develop").then(done); else done(); diff --git a/test/dao/schemes/WalletScheme.js b/test/dao/schemes/WalletScheme.js index c82a8c70..49b7718e 100644 --- a/test/dao/schemes/WalletScheme.js +++ b/test/dao/schemes/WalletScheme.js @@ -55,7 +55,6 @@ contract("WalletScheme", function (accounts) { await registrarWalletScheme.initialize( org.avatar.address, votingMachine.address, - true, org.controller.address, permissionRegistry.address, "Wallet Scheme Registrar", @@ -67,7 +66,6 @@ contract("WalletScheme", function (accounts) { await masterWalletScheme.initialize( org.avatar.address, votingMachine.address, - true, org.controller.address, permissionRegistry.address, "Master Wallet", @@ -79,7 +77,6 @@ contract("WalletScheme", function (accounts) { await quickWalletScheme.initialize( org.avatar.address, votingMachine.address, - false, org.controller.address, permissionRegistry.address, "Quick Wallet", @@ -248,7 +245,6 @@ contract("WalletScheme", function (accounts) { await newWalletScheme.initialize( org.avatar.address, votingMachine.address, - false, org.controller.address, permissionRegistry.address, "New Wallet", @@ -1799,7 +1795,6 @@ contract("WalletScheme", function (accounts) { unitializedWalletScheme.initialize( org.avatar.address, accounts[0], - false, org.controller.address, permissionRegistry.address, "Master Wallet", @@ -1812,7 +1807,6 @@ contract("WalletScheme", function (accounts) { unitializedWalletScheme.initialize( constants.NULL_ADDRESS, accounts[0], - false, org.controller.address, permissionRegistry.address, "Master Wallet", @@ -1828,7 +1822,6 @@ contract("WalletScheme", function (accounts) { masterWalletScheme.initialize( org.avatar.address, accounts[0], - false, org.controller.address, permissionRegistry.address, "Master Wallet", From c6279967f3de8a83449a9664fb725bfc49d91276 Mon Sep 17 00:00:00 2001 From: Milton Tulli Date: Thu, 22 Sep 2022 17:18:37 -0300 Subject: [PATCH 16/33] fix deployment script --- scripts/deploymentTemplates/dxvote-develop.js | 19 -- scripts/utils/deploy-dao.js | 190 ++++-------------- test/dao/dxdao.js | 8 +- 3 files changed, 38 insertions(+), 179 deletions(-) diff --git a/scripts/deploymentTemplates/dxvote-develop.js b/scripts/deploymentTemplates/dxvote-develop.js index f6d87aa5..2ffcf460 100644 --- a/scripts/deploymentTemplates/dxvote-develop.js +++ b/scripts/deploymentTemplates/dxvote-develop.js @@ -2,16 +2,12 @@ require("@nomiclabs/hardhat-web3"); const moment = require("moment"); const { NULL_SIGNATURE } = require("../../test/helpers/constants"); const NULL_ADDRESS = "0x0000000000000000000000000000000000000000"; -const ANY_ADDRESS = "0xaAaAaAaaAaAaAaaAaAAAAAAAAaaaAaAaAaaAaaAa"; -const ANY_FUNC_SIGNATURE = "0xaaaaaaaa"; task("deploy-dxvote-develop", "Deploy dxvote with develop config").setAction( async () => { const PermissionRegistry = await hre.artifacts.require( "PermissionRegistry" ); - const ERC20Guild = await hre.artifacts.require("ERC20Guild"); - const accounts = await web3.eth.getAccounts(); const deployconfig = { @@ -30,23 +26,10 @@ task("deploy-dxvote-develop", "Deploy dxvote with develop config").setAction( amount: 1000, }, ], - contributionReward: { - queuedVoteRequiredPercentage: 50, - queuedVotePeriodLimit: moment.duration(10, "minutes").asSeconds(), - boostedVotePeriodLimit: moment.duration(3, "minutes").asSeconds(), - preBoostedVotePeriodLimit: moment.duration(1, "minutes").asSeconds(), - thresholdConst: 2000, - quietEndingPeriod: moment.duration(0.5, "minutes").asSeconds(), - proposingRepReward: 10, - votersReputationLossRatio: 100, - minimumDaoBounty: web3.utils.toWei("1"), - daoBountyConst: 100, - }, walletSchemes: [ { name: "RegistrarWalletScheme", - doAvatarGenericCalls: true, maxSecondsForExecution: moment.duration(31, "days").asSeconds(), maxRepPercentageChange: 0, controllerPermissions: { @@ -71,7 +54,6 @@ task("deploy-dxvote-develop", "Deploy dxvote with develop config").setAction( }, { name: "MasterWalletScheme", - doAvatarGenericCalls: true, maxSecondsForExecution: moment.duration(31, "days").asSeconds(), maxRepPercentageChange: 40, controllerPermissions: { @@ -122,7 +104,6 @@ task("deploy-dxvote-develop", "Deploy dxvote with develop config").setAction( }, { name: "QuickWalletScheme", - doAvatarGenericCalls: false, maxSecondsForExecution: moment.duration(31, "days").asSeconds(), maxRepPercentageChange: 1, controllerPermissions: { diff --git a/scripts/utils/deploy-dao.js b/scripts/utils/deploy-dao.js index bd75252d..737c85da 100644 --- a/scripts/utils/deploy-dao.js +++ b/scripts/utils/deploy-dao.js @@ -10,11 +10,9 @@ const { waitBlocks } = require("../utils/wait"); const deployDao = async function (daoConfig, networkContracts) { // Import contracts - const DxAvatar = await hre.artifacts.require("DXAvatar"); - const DxReputation = await hre.artifacts.require("DxReputation"); - const DxController = await hre.artifacts.require("DxController"); - const ContributionReward = await hre.artifacts.require("ContributionReward"); - const Redeemer = await hre.artifacts.require("Redeemer"); + const DAOAvatar = await hre.artifacts.require("DAOAvatar"); + const DAOReputation = await hre.artifacts.require("DAOReputation"); + const DAOController = await hre.artifacts.require("DAOController"); const WalletScheme = await hre.artifacts.require("WalletScheme"); const PermissionRegistry = await hre.artifacts.require("PermissionRegistry"); const DXDVotingMachine = await hre.artifacts.require("DXDVotingMachine"); @@ -45,8 +43,9 @@ const deployDao = async function (daoConfig, networkContracts) { // Deploy Reputation let reputation; - console.log("Deploying DxReputation..."); - reputation = await DxReputation.new(); + console.log("Deploying DAOReputation..."); + reputation = await DAOReputation.new(); + await reputation.initialize("DxDAO Reputation", "REP"); console.log("DX Reputation deployed to:", reputation.address); networkContracts.reputation = reputation.address; networkContracts.addresses["Reputation"] = reputation.address; @@ -59,12 +58,12 @@ const deployDao = async function (daoConfig, networkContracts) { // Deploy Avatar let avatar; console.log( - "Deploying DxAvatar...", + "Deploying DAOAvatar...", networkContracts.addresses["DXD"], reputation.address ); - avatar = await DxAvatar.new( - "DXdao", + avatar = await DAOAvatar.new(); + await avatar.initialize( networkContracts.addresses["DXD"], reputation.address ); @@ -76,8 +75,9 @@ const deployDao = async function (daoConfig, networkContracts) { // Deploy Controller and transfer avatar to controller let controller; - console.log("Deploying DxController..."); - controller = await DxController.new(avatar.address); + console.log("Deploying DAOController..."); + controller = await DAOController.new(avatar.address); + await controller.initialize(avatar.address); console.log("DXdao Controller deployed to:", controller.address); await avatar.transferOwnership(controller.address); await reputation.transferOwnership(controller.address); @@ -107,43 +107,29 @@ const deployDao = async function (daoConfig, networkContracts) { // Only allow the functions mintReputation, burnReputation, genericCall, registerScheme and unregisterScheme to be // called to in the controller contract from a scheme that calls the controller. // This permissions makes the other functions inaccessible - const notAllowedControllerFunctions = [ - controller.contract._jsonInterface.find( - method => method.name === "mintTokens" - ).signature, - controller.contract._jsonInterface.find( - method => method.name === "unregisterSelf" - ).signature, - controller.contract._jsonInterface.find( - method => method.name === "addGlobalConstraint" - ).signature, - controller.contract._jsonInterface.find( - method => method.name === "removeGlobalConstraint" - ).signature, - controller.contract._jsonInterface.find( - method => method.name === "upgradeController" - ).signature, - controller.contract._jsonInterface.find( - method => method.name === "sendEther" - ).signature, - controller.contract._jsonInterface.find( - method => method.name === "externalTokenTransfer" - ).signature, - controller.contract._jsonInterface.find( - method => method.name === "externalTokenTransferFrom" - ).signature, - controller.contract._jsonInterface.find( - method => method.name === "externalTokenApproval" - ).signature, - controller.contract._jsonInterface.find( - method => method.name === "metaData" - ).signature, - ]; - for (var i = 0; i < notAllowedControllerFunctions.length; i++) { + + const notAllowedControllerFunctionSignatures = [ + "mintTokens", + "unregisterSelf", + "addGlobalConstraint", + "removeGlobalConstraint", + "upgradeController", + "sendEther", + "externalTokenTransfer", + "externalTokenTransferFrom", + "externalTokenApproval", + "metaData", + ].map( + fnName => + controller.contract._jsonInterface.find(method => method.name === fnName) + .signature + ); + + for (let notAllowedFunctionSignature of notAllowedControllerFunctionSignatures) { await permissionRegistry.setETHPermission( avatar.address, controller.address, - notAllowedControllerFunctions[i], + notAllowedFunctionSignature, MAX_UINT_256, false ); @@ -162,110 +148,6 @@ const deployDao = async function (daoConfig, networkContracts) { networkContracts.addresses["PermissionRegistry"] = permissionRegistry.address; await waitBlocks(1); - // Deploy ContributionReward Scheme - console.log("Deploying ContributionReward scheme"); - const contributionReward = await ContributionReward.new(); - const redeemer = await Redeemer.new(); - - /* - The ContributionReward scheme was designed by DAOstack to be used as an universal scheme, - which means that index the voting params used in the voting machine hash by voting machine - So the voting parameters are set in the voting machine, and that voting parameters hash is - registered in the ContributionReward and then other voting parameter hash is calculated - for that voting machine and contribution reward, and that is the one used in the controller - */ - const contributionRewardParamsHash = await votingMachine.getParametersHash( - [ - daoConfig.contributionReward.queuedVoteRequiredPercentage.toString(), - daoConfig.contributionReward.queuedVotePeriodLimit.toString(), - daoConfig.contributionReward.boostedVotePeriodLimit.toString(), - daoConfig.contributionReward.preBoostedVotePeriodLimit.toString(), - daoConfig.contributionReward.thresholdConst.toString(), - daoConfig.contributionReward.quietEndingPeriod.toString(), - daoConfig.contributionReward.proposingRepReward.toString(), - daoConfig.contributionReward.votersReputationLossRatio.toString(), - daoConfig.contributionReward.minimumDaoBounty.toString(), - daoConfig.contributionReward.daoBountyConst.toString(), - 0, - ], - NULL_ADDRESS, - { from: accounts[0], gasPrice: 0 } - ); - await votingMachine.setParameters( - [ - daoConfig.contributionReward.queuedVoteRequiredPercentage.toString(), - daoConfig.contributionReward.queuedVotePeriodLimit.toString(), - daoConfig.contributionReward.boostedVotePeriodLimit.toString(), - daoConfig.contributionReward.preBoostedVotePeriodLimit.toString(), - daoConfig.contributionReward.thresholdConst.toString(), - daoConfig.contributionReward.quietEndingPeriod.toString(), - daoConfig.contributionReward.proposingRepReward.toString(), - daoConfig.contributionReward.votersReputationLossRatio.toString(), - daoConfig.contributionReward.minimumDaoBounty.toString(), - daoConfig.contributionReward.daoBountyConst.toString(), - 0, - ], - NULL_ADDRESS - ); - await contributionReward.setParameters( - contributionRewardParamsHash, - votingMachine.address - ); - const contributionRewardVotingmachineParamsHash = - await contributionReward.getParametersHash( - contributionRewardParamsHash, - votingMachine.address - ); - await controller.registerScheme( - contributionReward.address, - contributionRewardVotingmachineParamsHash, - "0x0", - avatar.address - ); - - networkContracts.daostack = { - [contributionReward.address]: { - contractToCall: controller.address, - creationLogEncoding: [ - [ - { - name: "_descriptionHash", - type: "string", - }, - { - name: "_reputationChange", - type: "int256", - }, - { - name: "_rewards", - type: "uint256[5]", - }, - { - name: "_externalToken", - type: "address", - }, - { - name: "_beneficiary", - type: "address", - }, - ], - ], - name: "ContributionReward", - newProposalTopics: [ - [ - "0xcbdcbf9aaeb1e9eff0f75d74e1c1e044bc87110164baec7d18d825b0450d97df", - "0x000000000000000000000000519b70055af55a007110b4ff99b0ea33071c720a", - ], - ], - redeemer: redeemer.address, - supported: true, - type: "ContributionReward", - voteParams: contributionRewardVotingmachineParamsHash, - votingMachine: votingMachine.address, - }, - }; - networkContracts.addresses["ContributionReward"] = contributionReward.address; - // Deploy Wallet Schemes for (var s = 0; s < daoConfig.walletSchemes.length; s++) { const schemeConfiguration = daoConfig.walletSchemes[s]; @@ -276,8 +158,7 @@ const deployDao = async function (daoConfig, networkContracts) { `${schemeConfiguration.name} deployed to: ${newScheme.address}` ); - /* This is simpler than the ContributionReward, just register the params in the - VotingMachine and use that ones for the schem registration */ + /* Register the params in the VotingMachine and use that ones for the schem registration */ let schemeParamsHash = await votingMachine.getParametersHash( [ schemeConfiguration.queuedVoteRequiredPercentage.toString(), @@ -318,7 +199,6 @@ const deployDao = async function (daoConfig, networkContracts) { await newScheme.initialize( avatar.address, votingMachine.address, - schemeConfiguration.doAvatarGenericCalls, controller.address, permissionRegistry.address, schemeConfiguration.name, @@ -336,9 +216,7 @@ const deployDao = async function (daoConfig, networkContracts) { if (permission.asset === NULL_ADDRESS) await permissionRegistry.setETHPermission( - schemeConfiguration.doAvatarGenericCalls - ? avatar.address - : newScheme.address, + newScheme.address, networkContracts.addresses[permission.to] || permission.to, permission.functionSignature, permission.value.toString(), diff --git a/test/dao/dxdao.js b/test/dao/dxdao.js index 9793aa92..2f6e0ec1 100644 --- a/test/dao/dxdao.js +++ b/test/dao/dxdao.js @@ -97,9 +97,9 @@ contract("DXdao", function (accounts) { true ); - const masterWalletScheme = await AvatarScheme.new(); + const avatarScheme = await AvatarScheme.new(); - await masterWalletScheme.initialize( + await avatarScheme.initialize( dxDao.avatar.address, dxDao.votingMachine.address, dxDao.controller.address, @@ -110,13 +110,13 @@ contract("DXdao", function (accounts) { ); await dxDao.controller.registerScheme( - masterWalletScheme.address, + avatarScheme.address, paramsHash, true, true ); - const createProposalTx = await masterWalletScheme.proposeCalls( + const createProposalTx = await avatarScheme.proposeCalls( [accounts[1], accounts[1]], ["0x0", "0x0"], [10, 5], From 0826077f23ba0acb2debc94888e94ea126ed4578 Mon Sep 17 00:00:00 2001 From: Dino Date: Fri, 23 Sep 2022 11:00:12 -0300 Subject: [PATCH 17/33] fix: fixed WalletScheme test - proposal to change max proposal time --- contracts/dao/DAOController.sol | 30 ++++ contracts/dao/schemes/Scheme.sol | 4 - .../DXDVotingMachineCallbacks.sol | 14 +- test/dao/schemes/WalletScheme.js | 160 +++++++++--------- 4 files changed, 118 insertions(+), 90 deletions(-) diff --git a/contracts/dao/DAOController.sol b/contracts/dao/DAOController.sol index f89d2161..69a3fe6b 100644 --- a/contracts/dao/DAOController.sol +++ b/contracts/dao/DAOController.sol @@ -149,6 +149,36 @@ contract DAOController is Initializable { return _avatar.executeCall(_contract, _data, _value); } + function burnReputation( + DAOAvatar _avatar, + address _contract, + uint256 _amount, + address _beneficiary, + uint256 _value + ) external onlyRegisteredScheme returns (bool, bytes memory) { + return + _avatar.executeCall( + _contract, + abi.encodeWithSignature("burn(address,uint256)", _beneficiary, _amount), + _value + ); + } + + function mintReputation( + DAOAvatar _avatar, + address _contract, + uint256 _amount, + address _beneficiary, + uint256 _value + ) external onlyRegisteredScheme returns (bool, bytes memory) { + return + _avatar.executeCall( + _contract, + abi.encodeWithSignature("mint(address,uint256)", _beneficiary, _amount), + _value + ); + } + function isSchemeRegistered(address _scheme) external view returns (bool) { return _isSchemeRegistered(_scheme); } diff --git a/contracts/dao/schemes/Scheme.sol b/contracts/dao/schemes/Scheme.sol index ebb81fd8..c8052179 100644 --- a/contracts/dao/schemes/Scheme.sol +++ b/contracts/dao/schemes/Scheme.sol @@ -104,10 +104,6 @@ abstract contract Scheme is DXDVotingMachineCallbacks { * @param _maxSecondsForExecution New max proposal time in seconds to be used */ function setMaxSecondsForExecution(uint256 _maxSecondsForExecution) external { - require( - msg.sender == address(avatar), - "WalletScheme: setMaxSecondsForExecution is callable only form the avatar" - ); require( _maxSecondsForExecution >= 86400, "WalletScheme: _maxSecondsForExecution cant be less than 86400 seconds" diff --git a/contracts/dao/votingMachine/DXDVotingMachineCallbacks.sol b/contracts/dao/votingMachine/DXDVotingMachineCallbacks.sol index 2d3353e9..b9bed8d6 100644 --- a/contracts/dao/votingMachine/DXDVotingMachineCallbacks.sol +++ b/contracts/dao/votingMachine/DXDVotingMachineCallbacks.sol @@ -24,10 +24,11 @@ contract DXDVotingMachineCallbacks { address _beneficiary, bytes32 ) external onlyVotingMachine returns (bool success) { - (success, ) = DAOController(avatar.owner()).avatarCall( - address(avatar.reputationToken()), - abi.encodeWithSignature("mint(address,uint256)", _beneficiary, _amount), + (success, ) = DAOController(avatar.owner()).mintReputation( avatar, + address(avatar.reputationToken()), + _amount, + _beneficiary, 0 ); } @@ -37,10 +38,11 @@ contract DXDVotingMachineCallbacks { address _beneficiary, bytes32 ) external onlyVotingMachine returns (bool success) { - (success, ) = DAOController(avatar.owner()).avatarCall( - address(avatar.reputationToken()), - abi.encodeWithSignature("burn(address,uint256)", _beneficiary, _amount), + (success, ) = DAOController(avatar.owner()).burnReputation( avatar, + address(avatar.reputationToken()), + _amount, + _beneficiary, 0 ); } diff --git a/test/dao/schemes/WalletScheme.js b/test/dao/schemes/WalletScheme.js index 49b7718e..5c29fdb1 100644 --- a/test/dao/schemes/WalletScheme.js +++ b/test/dao/schemes/WalletScheme.js @@ -1,3 +1,4 @@ +import { ZERO_ADDRESS } from "@openzeppelin/test-helpers/src/constants"; import { assert } from "chai"; import * as helpers from "../../helpers"; const { fixSignature } = require("../../helpers/sign"); @@ -25,27 +26,64 @@ contract("WalletScheme", function (accounts) { beforeEach(async function () { actionMock = await ActionMock.new(); testToken = await ERC20Mock.new("", "", 1000, accounts[1]); - standardTokenMock = await ERC20Mock.new(accounts[1], 1000, "", ""); - org = await helpers.setupOrganization( - [accounts[0], accounts[1], accounts[2]], - [1000, 1000, 1000], - [20000, 10000, 70000] - ); - votingMachine = await helpers.setUpVotingMachine( - standardTokenMock.address, - "dxd", - constants.NULL_ADDRESS, // voteOnBehalf - 50, // queuedVoteRequiredPercentage - 172800, // queuedVotePeriodLimit - 86400, // boostedVotePeriodLimit - 3600, // preBoostedVotePeriodLimit - 2000, // thresholdConst - 0, // quietEndingPeriod - 0, // proposingRepReward - 0, // votersReputationLossRatio - 15, // minimumDaoBounty - 10, // daoBountyConst - 0 // activationTime + standardTokenMock = await ERC20Mock.new("", "", 1000, accounts[1]); + + org = await helpers.deployDao({ + owner: accounts[0], + votingMachineToken: standardTokenMock.address, + repHolders: [ + { address: accounts[0], amount: 20000 }, + { address: accounts[1], amount: 10000 }, + { address: accounts[2], amount: 70000 }, + ], + }); + + // Parameters + const voteOnBehalf = constants.NULL_ADDRESS; + const _queuedVoteRequiredPercentage = 50; + const _queuedVotePeriodLimit = 172800; + const _boostedVotePeriodLimit = 86400; + const _preBoostedVotePeriodLimit = 3600; + const _thresholdConst = 2000; + const _quietEndingPeriod = 0; + const _proposingRepReward = 0; + const _votersReputationLossRatio = 10; + const _minimumDaoBounty = 15; + const _daoBountyConst = 10; + const _activationTime = 0; + + await org.votingMachine.setParameters( + [ + _queuedVoteRequiredPercentage, + _queuedVotePeriodLimit, + _boostedVotePeriodLimit, + _preBoostedVotePeriodLimit, + _thresholdConst, + _quietEndingPeriod, + _proposingRepReward, + _votersReputationLossRatio, + _minimumDaoBounty, + _daoBountyConst, + _activationTime, + ], + voteOnBehalf + ); + + const paramsHash = await org.votingMachine.getParametersHash( + [ + _queuedVoteRequiredPercentage, + _queuedVotePeriodLimit, + _boostedVotePeriodLimit, + _preBoostedVotePeriodLimit, + _thresholdConst, + _quietEndingPeriod, + _proposingRepReward, + _votersReputationLossRatio, + _minimumDaoBounty, + _daoBountyConst, + _activationTime, + ], + voteOnBehalf ); permissionRegistry = await PermissionRegistry.new(accounts[0], 30); @@ -54,7 +92,7 @@ contract("WalletScheme", function (accounts) { registrarWalletScheme = await WalletScheme.new(); await registrarWalletScheme.initialize( org.avatar.address, - votingMachine.address, + org.votingMachine.address, org.controller.address, permissionRegistry.address, "Wallet Scheme Registrar", @@ -65,7 +103,7 @@ contract("WalletScheme", function (accounts) { masterWalletScheme = await WalletScheme.new(); await masterWalletScheme.initialize( org.avatar.address, - votingMachine.address, + org.votingMachine.address, org.controller.address, permissionRegistry.address, "Master Wallet", @@ -76,7 +114,7 @@ contract("WalletScheme", function (accounts) { quickWalletScheme = await WalletScheme.new(); await quickWalletScheme.initialize( org.avatar.address, - votingMachine.address, + org.votingMachine.address, org.controller.address, permissionRegistry.address, "Quick Wallet", @@ -100,19 +138,6 @@ contract("WalletScheme", function (accounts) { true ); - // Only allow genericCall, mintReputation, burnReputation, registerScheme and removeScheme - // functions to be called in the controller by Wallet Schemes - await helpers.setDefaultControllerPermissions( - permissionRegistry, - org.avatar.address, - org.controller - ); - await helpers.setDefaultControllerPermissions( - permissionRegistry, - quickWalletScheme.address, - org.controller - ); - await permissionRegistry.setETHPermission( org.avatar.address, registrarWalletScheme.address, @@ -202,35 +227,11 @@ contract("WalletScheme", function (accounts) { await time.increase(30); - await org.daoCreator.setSchemes( - org.avatar.address, - [ - registrarWalletScheme.address, - masterWalletScheme.address, - quickWalletScheme.address, - ], - [votingMachine.params, votingMachine.params, votingMachine.params], - [ - helpers.encodePermission({ - canGenericCall: true, - canUpgrade: true, - canChangeConstraints: true, - canRegisterSchemes: true, - }), - helpers.encodePermission({ - canGenericCall: true, - canUpgrade: false, - canChangeConstraints: false, - canRegisterSchemes: false, - }), - helpers.encodePermission({ - canGenericCall: false, - canUpgrade: false, - canChangeConstraints: false, - canRegisterSchemes: false, - }), - ], - "metaData" + await org.controller.registerScheme( + masterWalletScheme.address, + paramsHash, + true, + false ); }); @@ -244,7 +245,7 @@ contract("WalletScheme", function (accounts) { const newWalletScheme = await WalletScheme.new(); await newWalletScheme.initialize( org.avatar.address, - votingMachine.address, + org.votingMachine.address, org.controller.address, permissionRegistry.address, "New Wallet", @@ -629,9 +630,10 @@ contract("WalletScheme", function (accounts) { expectRevert( masterWalletScheme.proposeCalls( - [masterWalletScheme.address], - [setMaxSecondsForExecutionData], - [1], + [masterWalletScheme.address, ZERO_ADDRESS], + [setMaxSecondsForExecutionData, "0x0"], + [1, 0], + 2, constants.TEST_TITLE, constants.SOME_HASH ), @@ -639,20 +641,18 @@ contract("WalletScheme", function (accounts) { ); const tx = await masterWalletScheme.proposeCalls( - [masterWalletScheme.address], - [setMaxSecondsForExecutionData], - [0], + [masterWalletScheme.address, ZERO_ADDRESS], + [setMaxSecondsForExecutionData, "0x0"], + [0, 0], + 2, constants.TEST_TITLE, constants.SOME_HASH ); const proposalId = await helpers.getValueFromLogs(tx, "_proposalId"); - await votingMachine.contract.vote( - proposalId, - 1, - 0, - constants.NULL_ADDRESS, - { from: accounts[2] } - ); + + await org.votingMachine.vote(proposalId, 1, 0, constants.NULL_ADDRESS, { + from: accounts[2], + }); const organizationProposal = await masterWalletScheme.getOrganizationProposal(proposalId); From e9aa6939175bdab7264087997b2ae759976b3398 Mon Sep 17 00:00:00 2001 From: Dino Date: Fri, 23 Sep 2022 11:08:05 -0300 Subject: [PATCH 18/33] fix: fixed test MasterWalletScheme - proposal to change max proposal time fails- positive decision - proposal fails --- test/dao/schemes/WalletScheme.js | 27 ++++++++++++--------------- 1 file changed, 12 insertions(+), 15 deletions(-) diff --git a/test/dao/schemes/WalletScheme.js b/test/dao/schemes/WalletScheme.js index 5c29fdb1..79fbdcfb 100644 --- a/test/dao/schemes/WalletScheme.js +++ b/test/dao/schemes/WalletScheme.js @@ -690,9 +690,9 @@ contract("WalletScheme", function (accounts) { expectRevert( masterWalletScheme.proposeCalls( - [masterWalletScheme.address], - [setMaxSecondsForExecutionData], - [1], + [masterWalletScheme.address, ZERO_ADDRESS], + [setMaxSecondsForExecutionData, "0x0"], + [1, 0], constants.TEST_TITLE, constants.SOME_HASH ), @@ -700,29 +700,26 @@ contract("WalletScheme", function (accounts) { ); const tx = await masterWalletScheme.proposeCalls( - [masterWalletScheme.address], - [setMaxSecondsForExecutionData], - [0], + [masterWalletScheme.address, ZERO_ADDRESS], + [setMaxSecondsForExecutionData, "0x0"], + [0, 0], + 2, constants.TEST_TITLE, constants.SOME_HASH ); const proposalId = await helpers.getValueFromLogs(tx, "_proposalId"); await expectRevert( - votingMachine.contract.vote(proposalId, 1, 0, constants.NULL_ADDRESS, { + org.votingMachine.vote(proposalId, 1, 0, constants.NULL_ADDRESS, { from: accounts[2], }), - "call execution failed" + "Proposal call failed" ); await time.increase(executionTimeout); - await votingMachine.contract.vote( - proposalId, - 1, - 0, - constants.NULL_ADDRESS, - { from: accounts[2] } - ); + await org.votingMachine.vote(proposalId, 1, 0, constants.NULL_ADDRESS, { + from: accounts[2], + }); const organizationProposal = await masterWalletScheme.getOrganizationProposal(proposalId); From fc19269ee7e7b8f62ee41d499cbd60e1f2994e22 Mon Sep 17 00:00:00 2001 From: AugustoL Date: Fri, 23 Sep 2022 11:53:40 -0300 Subject: [PATCH 19/33] feat(contracts/dao): dAOController now keeps track of active/inactive proposals --- contracts/dao/DAOController.sol | 53 ++++++++++++++++++++++++++ contracts/dao/schemes/AvatarScheme.sol | 1 + contracts/dao/schemes/Scheme.sol | 2 + contracts/dao/schemes/WalletScheme.sol | 1 + 4 files changed, 57 insertions(+) diff --git a/contracts/dao/DAOController.sol b/contracts/dao/DAOController.sol index f89d2161..d624372b 100644 --- a/contracts/dao/DAOController.sol +++ b/contracts/dao/DAOController.sol @@ -3,6 +3,7 @@ pragma solidity ^0.8.17; import "@openzeppelin/contracts-upgradeable/proxy/utils/Initializable.sol"; import "@openzeppelin/contracts-upgradeable/utils/math/SafeMathUpgradeable.sol"; +import "@openzeppelin/contracts-upgradeable/utils/structs/EnumerableSetUpgradeable.sol"; import "./DAOAvatar.sol"; /** @@ -13,6 +14,17 @@ import "./DAOAvatar.sol"; */ contract DAOController is Initializable { using SafeMathUpgradeable for uint256; + using EnumerableSetUpgradeable for EnumerableSetUpgradeable.AddressSet; + using EnumerableSetUpgradeable for EnumerableSetUpgradeable.Bytes32Set; + + EnumerableSetUpgradeable.Bytes32Set private activeProposals; + EnumerableSetUpgradeable.Bytes32Set private inactiveProposals; + mapping(bytes32 => address) public schemeOfProposal; + + struct ProposalAndScheme { + bytes32 proposalId; + address scheme; + } struct Scheme { bytes32 paramsHash; // a hash voting parameters of the scheme @@ -149,6 +161,29 @@ contract DAOController is Initializable { return _avatar.executeCall(_contract, _data, _value); } + /** + * @dev Adds a proposal to the active proposals list + * @param _proposalId the proposalId + */ + function startProposal(bytes32 _proposalId) external onlyRegisteredScheme { + activeProposals.add(_proposalId); + schemeOfProposal[_proposalId] = msg.sender; + } + + /** + * @dev Moves a proposal from the active proposals list to the inactive list + * @param _proposalId the proposalId + */ + function endProposal(bytes32 _proposalId) external { + require( + schemes[msg.sender].isRegistered || + (!schemes[schemeOfProposal[_proposalId]].isRegistered && activeProposals.contains(_proposalId)), + "DAOController: Sender is not a registered scheme or proposal is not active" + ); + activeProposals.remove(_proposalId); + inactiveProposals.add(_proposalId); + } + function isSchemeRegistered(address _scheme) external view returns (bool) { return _isSchemeRegistered(_scheme); } @@ -172,4 +207,22 @@ contract DAOController is Initializable { function _isSchemeRegistered(address _scheme) private view returns (bool) { return (schemes[_scheme].isRegistered); } + + function getActiveProposals() external view returns (ProposalAndScheme[] memory activeProposalsArray) { + activeProposalsArray = new ProposalAndScheme[](activeProposals.length()); + for (uint256 i = 0; i < activeProposals.length(); i++) { + activeProposalsArray[i].proposalId = activeProposals.at(i); + activeProposalsArray[i].scheme = schemeOfProposal[activeProposals.at(i)]; + } + return activeProposalsArray; + } + + function getInactiveProposals() external view returns (ProposalAndScheme[] memory inactiveProposalsArray) { + inactiveProposalsArray = new ProposalAndScheme[](inactiveProposals.length()); + for (uint256 i = 0; i < inactiveProposals.length(); i++) { + inactiveProposalsArray[i].proposalId = inactiveProposals.at(i); + inactiveProposalsArray[i].scheme = schemeOfProposal[inactiveProposals.at(i)]; + } + return inactiveProposalsArray; + } } diff --git a/contracts/dao/schemes/AvatarScheme.sol b/contracts/dao/schemes/AvatarScheme.sol index e94c504c..f2cf35f9 100644 --- a/contracts/dao/schemes/AvatarScheme.sol +++ b/contracts/dao/schemes/AvatarScheme.sol @@ -115,6 +115,7 @@ contract AvatarScheme is Scheme { emit ProposalStateChange(_proposalId, uint256(ProposalState.ExecutionSucceeded)); } + controller.endProposal(_proposalId); executingProposal = false; return true; } diff --git a/contracts/dao/schemes/Scheme.sol b/contracts/dao/schemes/Scheme.sol index ebb81fd8..21c340f9 100644 --- a/contracts/dao/schemes/Scheme.sol +++ b/contracts/dao/schemes/Scheme.sol @@ -191,6 +191,8 @@ abstract contract Scheme is DXDVotingMachineCallbacks { (bytes32) ); + controller.startProposal(proposalId); + // Add the proposal to the proposals mapping, proposals list and proposals information mapping proposals[proposalId] = Proposal({ to: _to, diff --git a/contracts/dao/schemes/WalletScheme.sol b/contracts/dao/schemes/WalletScheme.sol index ecfe1312..70dd0cbd 100644 --- a/contracts/dao/schemes/WalletScheme.sol +++ b/contracts/dao/schemes/WalletScheme.sol @@ -105,6 +105,7 @@ contract WalletScheme is Scheme { emit ProposalStateChange(_proposalId, uint256(ProposalState.ExecutionSucceeded)); } + controller.endProposal(_proposalId); executingProposal = false; return true; } From b10d5f4dde0fccca4d170dac22e49114027d9f9e Mon Sep 17 00:00:00 2001 From: AugustoL Date: Fri, 23 Sep 2022 11:54:36 -0300 Subject: [PATCH 20/33] test(dao): check active/inactive proposals in DAOController --- test/dao/dxdao.js | 25 +++++++++++++++++++------ 1 file changed, 19 insertions(+), 6 deletions(-) diff --git a/test/dao/dxdao.js b/test/dao/dxdao.js index 9793aa92..16958848 100644 --- a/test/dao/dxdao.js +++ b/test/dao/dxdao.js @@ -8,8 +8,7 @@ const ERC20Mock = artifacts.require("./ERC20Mock.sol"); contract("DXdao", function (accounts) { const constants = helpers.constants; - let dxDao; - let proposalId; + let dxDao, proposalId, masterAvatarScheme; beforeEach(async function () { const votingMachineToken = await ERC20Mock.new( @@ -97,9 +96,9 @@ contract("DXdao", function (accounts) { true ); - const masterWalletScheme = await AvatarScheme.new(); + masterAvatarScheme = await AvatarScheme.new(); - await masterWalletScheme.initialize( + await masterAvatarScheme.initialize( dxDao.avatar.address, dxDao.votingMachine.address, dxDao.controller.address, @@ -110,13 +109,13 @@ contract("DXdao", function (accounts) { ); await dxDao.controller.registerScheme( - masterWalletScheme.address, + masterAvatarScheme.address, paramsHash, true, true ); - const createProposalTx = await masterWalletScheme.proposeCalls( + const createProposalTx = await masterAvatarScheme.proposeCalls( [accounts[1], accounts[1]], ["0x0", "0x0"], [10, 5], @@ -126,6 +125,10 @@ contract("DXdao", function (accounts) { ); proposalId = createProposalTx.logs[0].args._proposalId; + + const activeProposals = await dxDao.controller.getActiveProposals(); + assert.equal(activeProposals[0].proposalId, proposalId); + assert.equal(activeProposals[0].scheme, masterAvatarScheme.address); }); it.skip("Deploy DXvote", function (done) { @@ -152,6 +155,11 @@ contract("DXdao", function (accounts) { await dxDao.votingMachine.vote(proposalId, 1, 0, constants.NULL_ADDRESS, { from: accounts[2], }); + + const inactiveProposals = await dxDao.controller.getInactiveProposals(); + assert.equal(inactiveProposals[0].proposalId, proposalId); + assert.equal(inactiveProposals[0].scheme, masterAvatarScheme.address); + assert.deepEqual(await dxDao.controller.getActiveProposals(), []); assert.equal(await web3.eth.getBalance(dxDao.avatar.address), "90"); }); @@ -161,6 +169,11 @@ contract("DXdao", function (accounts) { await dxDao.votingMachine.vote(proposalId, 2, 0, constants.NULL_ADDRESS, { from: accounts[2], }); + + const inactiveProposals = await dxDao.controller.getInactiveProposals(); + assert.equal(inactiveProposals[0].proposalId, proposalId); + assert.equal(inactiveProposals[0].scheme, masterAvatarScheme.address); + assert.deepEqual(await dxDao.controller.getActiveProposals(), []); assert.equal(await web3.eth.getBalance(dxDao.avatar.address), "95"); }); }); From 4fa9a75abf1c5b17ebe8adaa94899c1f82a161b6 Mon Sep 17 00:00:00 2001 From: Dino Date: Fri, 23 Sep 2022 13:44:52 -0300 Subject: [PATCH 21/33] feat: ownership of REP is now transferred to controller instead of avatar --- contracts/dao/DAOAvatar.sol | 5 +-- contracts/dao/DAOController.sol | 42 +++++++------------ contracts/dao/schemes/Scheme.sol | 5 +++ .../DXDVotingMachineCallbacks.sol | 21 +++------- test/helpers/index.js | 10 ++--- 5 files changed, 32 insertions(+), 51 deletions(-) diff --git a/contracts/dao/DAOAvatar.sol b/contracts/dao/DAOAvatar.sol index 68ffb514..c38ef400 100644 --- a/contracts/dao/DAOAvatar.sol +++ b/contracts/dao/DAOAvatar.sol @@ -11,14 +11,11 @@ import "@openzeppelin/contracts-upgradeable/access/OwnableUpgradeable.sol"; contract DAOAvatar is OwnableUpgradeable { event CallExecuted(address indexed _to, bytes _data, uint256 _value, bool _success); - address public reputationToken; - receive() external payable {} - function initialize(address _owner, address _reputationToken) public initializer { + function initialize(address _owner) public initializer { __Ownable_init(); transferOwnership(_owner); - reputationToken = _reputationToken; } /** diff --git a/contracts/dao/DAOController.sol b/contracts/dao/DAOController.sol index 69a3fe6b..24e03a48 100644 --- a/contracts/dao/DAOController.sol +++ b/contracts/dao/DAOController.sol @@ -4,6 +4,7 @@ pragma solidity ^0.8.17; import "@openzeppelin/contracts-upgradeable/proxy/utils/Initializable.sol"; import "@openzeppelin/contracts-upgradeable/utils/math/SafeMathUpgradeable.sol"; import "./DAOAvatar.sol"; +import "./DAOReputation.sol"; /** * @title DAO Controller @@ -14,6 +15,8 @@ import "./DAOAvatar.sol"; contract DAOController is Initializable { using SafeMathUpgradeable for uint256; + DAOReputation public daoreputation; + struct Scheme { bytes32 paramsHash; // a hash voting parameters of the scheme bool isRegistered; @@ -28,7 +31,7 @@ contract DAOController is Initializable { event RegisterScheme(address indexed _sender, address indexed _scheme); event UnregisterScheme(address indexed _sender, address indexed _scheme); - function initialize(address _scheme) public initializer { + function initialize(address _scheme, address _reputationAddress) public initializer { schemes[_scheme] = Scheme({ paramsHash: bytes32(0), isRegistered: true, @@ -36,6 +39,7 @@ contract DAOController is Initializable { canMakeAvatarCalls: true }); schemesWithManageSchemesPermission = 1; + daoreputation = DAOReputation(_reputationAddress); } modifier onlyRegisteredScheme() { @@ -149,34 +153,14 @@ contract DAOController is Initializable { return _avatar.executeCall(_contract, _data, _value); } - function burnReputation( - DAOAvatar _avatar, - address _contract, - uint256 _amount, - address _beneficiary, - uint256 _value - ) external onlyRegisteredScheme returns (bool, bytes memory) { - return - _avatar.executeCall( - _contract, - abi.encodeWithSignature("burn(address,uint256)", _beneficiary, _amount), - _value - ); + function burnReputation(uint256 _amount, address _beneficiary) external onlyRegisteredScheme returns (bool) { + bool success = daoreputation.burn(_beneficiary, _amount); + return (success); } - function mintReputation( - DAOAvatar _avatar, - address _contract, - uint256 _amount, - address _beneficiary, - uint256 _value - ) external onlyRegisteredScheme returns (bool, bytes memory) { - return - _avatar.executeCall( - _contract, - abi.encodeWithSignature("mint(address,uint256)", _beneficiary, _amount), - _value - ); + function mintReputation(uint256 _amount, address _beneficiary) external onlyRegisteredScheme returns (bool) { + bool success = daoreputation.mint(_beneficiary, _amount); + return (success); } function isSchemeRegistered(address _scheme) external view returns (bool) { @@ -202,4 +186,8 @@ contract DAOController is Initializable { function _isSchemeRegistered(address _scheme) private view returns (bool) { return (schemes[_scheme].isRegistered); } + + function getDaoReputation() external view returns (DAOReputation) { + return daoreputation; + } } diff --git a/contracts/dao/schemes/Scheme.sol b/contracts/dao/schemes/Scheme.sol index c8052179..a89836c9 100644 --- a/contracts/dao/schemes/Scheme.sol +++ b/contracts/dao/schemes/Scheme.sol @@ -104,6 +104,11 @@ abstract contract Scheme is DXDVotingMachineCallbacks { * @param _maxSecondsForExecution New max proposal time in seconds to be used */ function setMaxSecondsForExecution(uint256 _maxSecondsForExecution) external { + require( + msg.sender == address(votingMachine) || msg.sender == address(this), + "WalletScheme: setMaxSecondsForExecution is callable only form the avatar or the scheme" + ); + require( _maxSecondsForExecution >= 86400, "WalletScheme: _maxSecondsForExecution cant be less than 86400 seconds" diff --git a/contracts/dao/votingMachine/DXDVotingMachineCallbacks.sol b/contracts/dao/votingMachine/DXDVotingMachineCallbacks.sol index b9bed8d6..f7e22bde 100644 --- a/contracts/dao/votingMachine/DXDVotingMachineCallbacks.sol +++ b/contracts/dao/votingMachine/DXDVotingMachineCallbacks.sol @@ -5,6 +5,7 @@ import "@openzeppelin/contracts/token/ERC20/IERC20.sol"; import "../DAOController.sol"; import "../DAOAvatar.sol"; import "../DAOReputation.sol"; +import "hardhat/console.sol"; contract DXDVotingMachineCallbacks { address public votingMachine; @@ -24,13 +25,8 @@ contract DXDVotingMachineCallbacks { address _beneficiary, bytes32 ) external onlyVotingMachine returns (bool success) { - (success, ) = DAOController(avatar.owner()).mintReputation( - avatar, - address(avatar.reputationToken()), - _amount, - _beneficiary, - 0 - ); + DAOController(avatar.owner()).mintReputation(_amount, _beneficiary); + return success; } function burnReputation( @@ -38,13 +34,8 @@ contract DXDVotingMachineCallbacks { address _beneficiary, bytes32 ) external onlyVotingMachine returns (bool success) { - (success, ) = DAOController(avatar.owner()).burnReputation( - avatar, - address(avatar.reputationToken()), - _amount, - _beneficiary, - 0 - ); + DAOController(avatar.owner()).burnReputation(_amount, _beneficiary); + return success; } function stakingTokenTransfer( @@ -62,7 +53,7 @@ contract DXDVotingMachineCallbacks { } function getReputation() public view returns (DAOReputation) { - return DAOReputation(avatar.reputationToken()); + return DAOController(avatar.owner()).getDaoReputation(); } function getNativeReputationTotalSupply() public view returns (uint256) { diff --git a/test/helpers/index.js b/test/helpers/index.js index 4732e14b..fd182b11 100644 --- a/test/helpers/index.js +++ b/test/helpers/index.js @@ -55,14 +55,14 @@ export function getValueFromLogs(tx, arg, eventName, index = 0) { } export const deployDao = async function (deployConfig) { - const controller = await DAOController.new(); - await controller.initialize(deployConfig.owner); - const reputation = await DAOReputation.new(); await reputation.initialize("DXDaoReputation", "DXRep"); + const controller = await DAOController.new(); + await controller.initialize(deployConfig.owner, reputation.address); + const avatar = await DAOAvatar.new(); - await avatar.initialize(controller.address, reputation.address); + await avatar.initialize(controller.address); for (let i = 0; i < deployConfig.repHolders.length; i++) { await reputation.mint( @@ -70,7 +70,7 @@ export const deployDao = async function (deployConfig) { deployConfig.repHolders[i].amount ); } - await reputation.transferOwnership(avatar.address); + await reputation.transferOwnership(controller.address); const votingMachine = await DXDVotingMachine.new( deployConfig.votingMachineToken From 28a3edbafb0517828eb5a473b03d44cc8c714eae Mon Sep 17 00:00:00 2001 From: AugustoL Date: Fri, 23 Sep 2022 14:23:44 -0300 Subject: [PATCH 22/33] refactor(contracts/dao): rename daoreputation in DAOController and add comments --- contracts/dao/DAOController.sol | 28 ++++++++++++++++--------- contracts/dao/DAOReputation.sol | 36 ++++++++++++++++----------------- test/dao/DAOAvatar.js | 12 ++--------- 3 files changed, 38 insertions(+), 38 deletions(-) diff --git a/contracts/dao/DAOController.sol b/contracts/dao/DAOController.sol index f5e1177a..b13171b6 100644 --- a/contracts/dao/DAOController.sol +++ b/contracts/dao/DAOController.sol @@ -27,7 +27,7 @@ contract DAOController is Initializable { address scheme; } - DAOReputation public daoreputation; + DAOReputation public reputationToken; struct Scheme { bytes32 paramsHash; // a hash voting parameters of the scheme @@ -43,7 +43,7 @@ contract DAOController is Initializable { event RegisterScheme(address indexed _sender, address indexed _scheme); event UnregisterScheme(address indexed _sender, address indexed _scheme); - function initialize(address _scheme, address _reputationAddress) public initializer { + function initialize(address _scheme, address _reputationToken) public initializer { schemes[_scheme] = Scheme({ paramsHash: bytes32(0), isRegistered: true, @@ -51,7 +51,7 @@ contract DAOController is Initializable { canMakeAvatarCalls: true }); schemesWithManageSchemesPermission = 1; - daoreputation = DAOReputation(_reputationAddress); + reputationToken = DAOReputation(_reputationToken); } modifier onlyRegisteredScheme() { @@ -188,14 +188,22 @@ contract DAOController is Initializable { inactiveProposals.add(_proposalId); } - function burnReputation(uint256 _amount, address _beneficiary) external onlyRegisteredScheme returns (bool) { - bool success = daoreputation.burn(_beneficiary, _amount); - return (success); + /** + * @dev Burns dao reputation + * @param _amount the amount of reputation to burn + * @param _account the account to burn reputation from + */ + function burnReputation(uint256 _amount, address _account) external onlyRegisteredScheme returns (bool) { + return reputationToken.burn(_account, _amount); } - function mintReputation(uint256 _amount, address _beneficiary) external onlyRegisteredScheme returns (bool) { - bool success = daoreputation.mint(_beneficiary, _amount); - return (success); + /** + * @dev Mints dao reputation + * @param _amount the amount of reputation to mint + * @param _account the account to mint reputation from + */ + function mintReputation(uint256 _amount, address _account) external onlyRegisteredScheme returns (bool) { + return reputationToken.mint(_account, _amount); } function isSchemeRegistered(address _scheme) external view returns (bool) { @@ -241,6 +249,6 @@ contract DAOController is Initializable { } function getDaoReputation() external view returns (DAOReputation) { - return daoreputation; + return reputationToken; } } diff --git a/contracts/dao/DAOReputation.sol b/contracts/dao/DAOReputation.sol index 1051e6ae..94f94a51 100644 --- a/contracts/dao/DAOReputation.sol +++ b/contracts/dao/DAOReputation.sol @@ -28,42 +28,42 @@ contract DAOReputation is OwnableUpgradeable, ERC20SnapshotUpgradeable { revert("DAOReputation: Reputation tokens are non-transferable"); } - // @notice Generates `_amount` reputation that are assigned to `_user` - // @param _user The address that will be assigned the new reputation + // @notice Generates `_amount` reputation that are assigned to `_account` + // @param _account The address that will be assigned the new reputation // @param _amount The quantity of reputation generated // @return True if the reputation are generated correctly - function mint(address _user, uint256 _amount) external onlyOwner returns (bool) { - _mint(_user, _amount); + function mint(address _account, uint256 _amount) external onlyOwner returns (bool) { + _mint(_account, _amount); _snapshot(); - emit Mint(_user, _amount); + emit Mint(_account, _amount); return true; } - function mintMultiple(address[] memory _user, uint256[] memory _amount) external onlyOwner returns (bool) { - for (uint256 i = 0; i < _user.length; i++) { - _mint(_user[i], _amount[i]); + function mintMultiple(address[] memory _accounts, uint256[] memory _amount) external onlyOwner returns (bool) { + for (uint256 i = 0; i < _accounts.length; i++) { + _mint(_accounts[i], _amount[i]); _snapshot(); - emit Mint(_user[i], _amount[i]); + emit Mint(_accounts[i], _amount[i]); } return true; } - // @notice Burns `_amount` reputation from `_user` - // @param _user The address that will lose the reputation + // @notice Burns `_amount` reputation from `_account` + // @param _account The address that will lose the reputation // @param _amount The quantity of reputation to burn // @return True if the reputation are burned correctly - function burn(address _user, uint256 _amount) external onlyOwner returns (bool) { - _burn(_user, _amount); + function burn(address _account, uint256 _amount) external onlyOwner returns (bool) { + _burn(_account, _amount); _snapshot(); - emit Burn(_user, _amount); + emit Burn(_account, _amount); return true; } - function burnMultiple(address[] memory _user, uint256 _amount) external onlyOwner returns (bool) { - for (uint256 i = 0; i < _user.length; i++) { - _burn(_user[i], _amount); + function burnMultiple(address[] memory _accounts, uint256 _amount) external onlyOwner returns (bool) { + for (uint256 i = 0; i < _accounts.length; i++) { + _burn(_accounts[i], _amount); _snapshot(); - emit Burn(_user[i], _amount); + emit Burn(_accounts[i], _amount); } return true; } diff --git a/test/dao/DAOAvatar.js b/test/dao/DAOAvatar.js index ffba4922..8dbb2e89 100644 --- a/test/dao/DAOAvatar.js +++ b/test/dao/DAOAvatar.js @@ -1,17 +1,14 @@ import * as helpers from "../helpers"; const { expectRevert, expectEvent } = require("@openzeppelin/test-helpers"); const DAOAvatar = artifacts.require("./DAOAvatar.sol"); -const DAOReputation = artifacts.require("./DAOReputation.sol"); const BigNumber = require("bignumber.js"); contract("DAOAvatar", function (accounts) { it("Should revert call", async function () { const owner = accounts[0]; - const reputation = await DAOReputation.new(); - await reputation.initialize("DXDaoReputation", "DXRep"); const avatar = await DAOAvatar.new(); - await avatar.initialize(owner, reputation.address); + await avatar.initialize(owner); const callData = helpers.testCallFrom(owner); const ANY_ADDRESS = "0xaAaAaAaaAaAaAaaAaAAAAAAAAaaaAaAaAaaAaaAa"; @@ -26,14 +23,9 @@ contract("DAOAvatar", function (accounts) { it("Should transferOwnership on initialize and execute call", async function () { const owner = accounts[1]; - const reputation = await DAOReputation.new(); - await reputation.initialize("DXDaoReputation", "DXRep"); const avatar = await DAOAvatar.new(); - const transferOwnershipTx = await avatar.initialize( - owner, - reputation.address - ); + const transferOwnershipTx = await avatar.initialize(owner); await expectEvent(transferOwnershipTx.receipt, "OwnershipTransferred", { previousOwner: accounts[0], From 5f4e803102e6977ad5ff06de175e95a7cb57c56a Mon Sep 17 00:00:00 2001 From: AugustoL Date: Fri, 23 Sep 2022 14:24:27 -0300 Subject: [PATCH 23/33] fix(contracts/dao): walletScheme option 2 is rejected and dont execute any call --- contracts/dao/schemes/AvatarScheme.sol | 2 +- contracts/dao/schemes/WalletScheme.sol | 2 +- test/dao/dxdao.js | 10 +++++++++- 3 files changed, 11 insertions(+), 3 deletions(-) diff --git a/contracts/dao/schemes/AvatarScheme.sol b/contracts/dao/schemes/AvatarScheme.sol index f2cf35f9..8d807651 100644 --- a/contracts/dao/schemes/AvatarScheme.sol +++ b/contracts/dao/schemes/AvatarScheme.sol @@ -44,7 +44,7 @@ contract AvatarScheme is Scheme { "AvatarScheme: scheme have to make avatar calls" ); - if (_winningOption == 0) { + if (_winningOption == 2) { proposal.state = ProposalState.Rejected; emit ProposalStateChange(_proposalId, uint256(ProposalState.Rejected)); } else if (proposal.submittedTime.add(maxSecondsForExecution) < block.timestamp) { diff --git a/contracts/dao/schemes/WalletScheme.sol b/contracts/dao/schemes/WalletScheme.sol index 70dd0cbd..bd654d75 100644 --- a/contracts/dao/schemes/WalletScheme.sol +++ b/contracts/dao/schemes/WalletScheme.sol @@ -49,7 +49,7 @@ contract WalletScheme is Scheme { "WalletScheme: scheme cannot make avatar calls" ); - if (_winningOption == 0) { + if (_winningOption == 2) { proposal.state = ProposalState.Rejected; emit ProposalStateChange(_proposalId, uint256(ProposalState.Rejected)); } else if (proposal.submittedTime.add(maxSecondsForExecution) < block.timestamp) { diff --git a/test/dao/dxdao.js b/test/dao/dxdao.js index 16958848..01932950 100644 --- a/test/dao/dxdao.js +++ b/test/dao/dxdao.js @@ -156,6 +156,10 @@ contract("DXdao", function (accounts) { from: accounts[2], }); + assert.equal( + (await masterAvatarScheme.getOrganizationProposal(proposalId)).state, + 3 + ); const inactiveProposals = await dxDao.controller.getInactiveProposals(); assert.equal(inactiveProposals[0].proposalId, proposalId); assert.equal(inactiveProposals[0].scheme, masterAvatarScheme.address); @@ -170,10 +174,14 @@ contract("DXdao", function (accounts) { from: accounts[2], }); + assert.equal( + (await masterAvatarScheme.getOrganizationProposal(proposalId)).state, + 2 + ); const inactiveProposals = await dxDao.controller.getInactiveProposals(); assert.equal(inactiveProposals[0].proposalId, proposalId); assert.equal(inactiveProposals[0].scheme, masterAvatarScheme.address); assert.deepEqual(await dxDao.controller.getActiveProposals(), []); - assert.equal(await web3.eth.getBalance(dxDao.avatar.address), "95"); + assert.equal(await web3.eth.getBalance(dxDao.avatar.address), "100"); }); }); From 127c3de47dd26d64a4f1278034783f6b98ad80f7 Mon Sep 17 00:00:00 2001 From: Dino Date: Fri, 23 Sep 2022 18:05:10 -0300 Subject: [PATCH 24/33] test: fixed tests --- test/dao/schemes/WalletScheme.js | 110 ++++++++++++++----------------- test/helpers/index.js | 18 +++++ 2 files changed, 67 insertions(+), 61 deletions(-) diff --git a/test/dao/schemes/WalletScheme.js b/test/dao/schemes/WalletScheme.js index 79fbdcfb..7aca2566 100644 --- a/test/dao/schemes/WalletScheme.js +++ b/test/dao/schemes/WalletScheme.js @@ -172,6 +172,15 @@ contract("WalletScheme", function (accounts) { 0, true ); + + // await permissionRegistry.setETHPermission( + // org.controller.address, + // actionMock.address, + // web3.eth.abi.encodeFunctionSignature("test(address,uint256)"), + // 0, + // true + // ); + await permissionRegistry.setETHPermission( org.avatar.address, actionMock.address, @@ -614,24 +623,14 @@ contract("WalletScheme", function (accounts) { }); it("MasterWalletScheme - proposal to change max proposal time - positive decision - proposal executed", async () => { - const setMaxSecondsForExecutionData = web3.eth.abi.encodeFunctionCall( - { - name: "setMaxSecondsForExecution", - type: "function", - inputs: [ - { - type: "uint256", - name: "_maxSecondsForExecution", - }, - ], - }, - [executionTimeout + 666] + const callData = helpers.encodeMaxSecondsForExecution( + executionTimeout + 666 ); expectRevert( masterWalletScheme.proposeCalls( [masterWalletScheme.address, ZERO_ADDRESS], - [setMaxSecondsForExecutionData, "0x0"], + [callData, "0x0"], [1, 0], 2, constants.TEST_TITLE, @@ -642,7 +641,7 @@ contract("WalletScheme", function (accounts) { const tx = await masterWalletScheme.proposeCalls( [masterWalletScheme.address, ZERO_ADDRESS], - [setMaxSecondsForExecutionData, "0x0"], + [callData, "0x0"], [0, 0], 2, constants.TEST_TITLE, @@ -660,10 +659,7 @@ contract("WalletScheme", function (accounts) { organizationProposal.state, constants.WALLET_SCHEME_PROPOSAL_STATES.executionSuccedd ); - assert.equal( - organizationProposal.callData[0], - setMaxSecondsForExecutionData - ); + assert.equal(organizationProposal.callData[0], callData); assert.equal(organizationProposal.to[0], masterWalletScheme.address); assert.equal(organizationProposal.value[0], 0); assert.equal( @@ -674,24 +670,12 @@ contract("WalletScheme", function (accounts) { // eslint-disable-next-line max-len it("MasterWalletScheme - proposal to change max proposal time fails- positive decision - proposal fails", async () => { - const setMaxSecondsForExecutionData = web3.eth.abi.encodeFunctionCall( - { - name: "setMaxSecondsForExecution", - type: "function", - inputs: [ - { - type: "uint256", - name: "_maxSecondsForExecution", - }, - ], - }, - [86400 - 1] - ); + const callData = helpers.encodeMaxSecondsForExecution(86400 - 1); expectRevert( masterWalletScheme.proposeCalls( [masterWalletScheme.address, ZERO_ADDRESS], - [setMaxSecondsForExecutionData, "0x0"], + [callData, "0x0"], [1, 0], constants.TEST_TITLE, constants.SOME_HASH @@ -701,7 +685,7 @@ contract("WalletScheme", function (accounts) { const tx = await masterWalletScheme.proposeCalls( [masterWalletScheme.address, ZERO_ADDRESS], - [setMaxSecondsForExecutionData, "0x0"], + [callData, "0x0"], [0, 0], 2, constants.TEST_TITLE, @@ -830,43 +814,45 @@ contract("WalletScheme", function (accounts) { }); it("MasterWalletScheme - proposal with data - positive decision - proposal executed", async function () { - const callData = helpers.testCallFrom(org.avatar.address); + const callData = helpers.encodeMaxSecondsForExecution( + executionTimeout + 666 + ); const tx = await masterWalletScheme.proposeCalls( - [actionMock.address], - [callData], - [0], + [masterWalletScheme.address, ZERO_ADDRESS], + [callData, "0x0"], + [0, 0], + 2, constants.TEST_TITLE, constants.SOME_HASH ); const proposalId = await helpers.getValueFromLogs(tx, "_proposalId"); - await votingMachine.contract.vote( - proposalId, - 1, - 0, - constants.NULL_ADDRESS, - { from: accounts[2] } - ); + + await org.votingMachine.vote(proposalId, 1, 0, constants.NULL_ADDRESS, { + from: accounts[2], + }); const organizationProposal = await masterWalletScheme.getOrganizationProposal(proposalId); + assert.equal( organizationProposal.state, constants.WALLET_SCHEME_PROPOSAL_STATES.executionSuccedd ); - assert.equal(organizationProposal.callData[0], callData); - assert.equal(organizationProposal.to[0], actionMock.address); + // assert.equal(organizationProposal.callData[0], callData); + assert.equal(organizationProposal.to[0], masterWalletScheme.address); assert.equal(organizationProposal.value[0], 0); }); it("MasterWalletScheme - proposal with data - positive decision - proposal executed", async function () { - const callData = helpers.testCallFrom(org.avatar.address); + const callData = helpers.encodeMaxSecondsForExecution(executionTimeout); const proposalId1 = helpers.getValueFromLogs( await masterWalletScheme.proposeCalls( - [actionMock.address], - [callData], - [0], + [actionMock.address, ZERO_ADDRESS], + [callData, "0x0"], + [0, 0], + 2, constants.TEST_TITLE, constants.SOME_HASH ), @@ -874,8 +860,8 @@ contract("WalletScheme", function (accounts) { ); // Use signed votes to try to execute a proposal inside a proposal execution - const voteHash = await votingMachine.contract.hashVote( - votingMachine.address, + const voteHash = await org.votingMachine.hashVote( + org.votingMachine.address, proposalId1, accounts[2], 1, @@ -885,9 +871,9 @@ contract("WalletScheme", function (accounts) { await web3.eth.sign(voteHash, accounts[2]) ); - const executeSignedVoteData = await votingMachine.contract.contract.methods + const executeSignedVoteData = await org.votingMachine.contract.methods .executeSignedVote( - votingMachine.address, + org.votingMachine.address, proposalId1, accounts[2], 1, @@ -913,9 +899,10 @@ contract("WalletScheme", function (accounts) { // setMaxSecondsForExecution function. await expectRevert( masterWalletScheme.proposeCalls( - [masterWalletScheme.address], - [executeSignedVoteData], - [0], + [masterWalletScheme.address, ZERO_ADDRESS], + [executeSignedVoteData, "0x0"], + [0, 0], + 2, constants.TEST_TITLE, constants.SOME_HASH ), @@ -927,9 +914,10 @@ contract("WalletScheme", function (accounts) { // executed const proposalId2 = await helpers.getValueFromLogs( await masterWalletScheme.proposeCalls( - [actionMock.address], - [actionMockExecuteCallWithRequiredData], - [0], + [actionMock.address, ZERO_ADDRESS], + [actionMockExecuteCallWithRequiredData, "0x0"], + [0, 0], + 2, constants.TEST_TITLE, constants.SOME_HASH ), @@ -937,7 +925,7 @@ contract("WalletScheme", function (accounts) { ); await expectRevert( - votingMachine.contract.vote(proposalId2, 1, 0, constants.NULL_ADDRESS, { + org.votingMachine.vote(proposalId2, 1, 0, constants.NULL_ADDRESS, { from: accounts[2], }), "call execution failed" diff --git a/test/helpers/index.js b/test/helpers/index.js index fd182b11..7053ec98 100644 --- a/test/helpers/index.js +++ b/test/helpers/index.js @@ -167,4 +167,22 @@ export function getEventFromTx(tx, eventName) { return logs.find(event => event.name === eventName); } +export function encodeMaxSecondsForExecution(executionTimeout) { + const setMaxSecondsForExecutionData = web3.eth.abi.encodeFunctionCall( + { + name: "setMaxSecondsForExecution", + type: "function", + inputs: [ + { + type: "uint256", + name: "_maxSecondsForExecution", + }, + ], + }, + [executionTimeout] + ); + + return setMaxSecondsForExecutionData; +} + export { constants }; From 1cd82ac796835a45bfa469f76832470af6814ef0 Mon Sep 17 00:00:00 2001 From: Dino Date: Fri, 23 Sep 2022 18:11:11 -0300 Subject: [PATCH 25/33] fix: switched checks for executionTimeout and winningOption being the NO option --- contracts/dao/schemes/AvatarScheme.sol | 8 ++++---- contracts/dao/schemes/WalletScheme.sol | 8 ++++---- test/dao/schemes/WalletScheme.js | 5 +---- 3 files changed, 9 insertions(+), 12 deletions(-) diff --git a/contracts/dao/schemes/AvatarScheme.sol b/contracts/dao/schemes/AvatarScheme.sol index 8d807651..59189741 100644 --- a/contracts/dao/schemes/AvatarScheme.sol +++ b/contracts/dao/schemes/AvatarScheme.sol @@ -44,15 +44,15 @@ contract AvatarScheme is Scheme { "AvatarScheme: scheme have to make avatar calls" ); - if (_winningOption == 2) { - proposal.state = ProposalState.Rejected; - emit ProposalStateChange(_proposalId, uint256(ProposalState.Rejected)); - } else if (proposal.submittedTime.add(maxSecondsForExecution) < block.timestamp) { + if (proposal.submittedTime.add(maxSecondsForExecution) < block.timestamp) { // If the amount of time passed since submission plus max proposal time is lower than block timestamp // the proposal timeout execution is reached and proposal cant be executed from now on proposal.state = ProposalState.ExecutionTimeout; emit ProposalStateChange(_proposalId, uint256(ProposalState.ExecutionTimeout)); + } else if (_winningOption == 2) { + proposal.state = ProposalState.Rejected; + emit ProposalStateChange(_proposalId, uint256(ProposalState.Rejected)); } else { uint256 oldRepSupply = getNativeReputationTotalSupply(); diff --git a/contracts/dao/schemes/WalletScheme.sol b/contracts/dao/schemes/WalletScheme.sol index bd654d75..66bb11a0 100644 --- a/contracts/dao/schemes/WalletScheme.sol +++ b/contracts/dao/schemes/WalletScheme.sol @@ -49,15 +49,15 @@ contract WalletScheme is Scheme { "WalletScheme: scheme cannot make avatar calls" ); - if (_winningOption == 2) { - proposal.state = ProposalState.Rejected; - emit ProposalStateChange(_proposalId, uint256(ProposalState.Rejected)); - } else if (proposal.submittedTime.add(maxSecondsForExecution) < block.timestamp) { + if (proposal.submittedTime.add(maxSecondsForExecution) < block.timestamp) { // If the amount of time passed since submission plus max proposal time is lower than block timestamp // the proposal timeout execution is reached and proposal cant be executed from now on proposal.state = ProposalState.ExecutionTimeout; emit ProposalStateChange(_proposalId, uint256(ProposalState.ExecutionTimeout)); + } else if (_winningOption == 2) { + proposal.state = ProposalState.Rejected; + emit ProposalStateChange(_proposalId, uint256(ProposalState.Rejected)); } else { uint256 oldRepSupply = getNativeReputationTotalSupply(); diff --git a/test/dao/schemes/WalletScheme.js b/test/dao/schemes/WalletScheme.js index 7aca2566..4bd4e24f 100644 --- a/test/dao/schemes/WalletScheme.js +++ b/test/dao/schemes/WalletScheme.js @@ -711,10 +711,7 @@ contract("WalletScheme", function (accounts) { organizationProposal.state, constants.WALLET_SCHEME_PROPOSAL_STATES.executionTimeout ); - assert.equal( - organizationProposal.callData[0], - setMaxSecondsForExecutionData - ); + assert.equal(organizationProposal.callData[0], callData); assert.equal(organizationProposal.to[0], masterWalletScheme.address); assert.equal(organizationProposal.value[0], 0); assert.equal( From 037dad41c84e6c596e5ca0592a5c5071d3459d40 Mon Sep 17 00:00:00 2001 From: AugustoL Date: Fri, 23 Sep 2022 19:10:19 -0300 Subject: [PATCH 26/33] fix(contracts/dao): remove check of permissions allowed for registering schemes Since the register scheme can register schemes, we assume that it has complete control over the dao and we wont use the AvatarScheme as RegistrarScheme, so since we dont use avatar calls we cant require the registrar schemes to do avatar calls --- contracts/dao/DAOController.sol | 8 -------- 1 file changed, 8 deletions(-) diff --git a/contracts/dao/DAOController.sol b/contracts/dao/DAOController.sol index b13171b6..078d27b9 100644 --- a/contracts/dao/DAOController.sol +++ b/contracts/dao/DAOController.sol @@ -85,14 +85,6 @@ contract DAOController is Initializable { ) external onlyRegisteredScheme onlyRegisteringSchemes returns (bool) { Scheme memory scheme = schemes[_scheme]; - // produces non-zero if sender does not have permissions that are being updated - require( - (_canMakeAvatarCalls || scheme.canMakeAvatarCalls != _canMakeAvatarCalls) - ? schemes[msg.sender].canMakeAvatarCalls - : true, - "DAOController: Sender cannot add permissions sender doesn't have to a new scheme" - ); - // Add or change the scheme: if ((!scheme.isRegistered || !scheme.canManageSchemes) && _canManageSchemes) { schemesWithManageSchemesPermission = schemesWithManageSchemesPermission.add(1); From 98893ba8dda5876bc3c6de5af1e310ec99f25764 Mon Sep 17 00:00:00 2001 From: AugustoL Date: Fri, 23 Sep 2022 19:11:01 -0300 Subject: [PATCH 27/33] fix(contracts/dao): remove not necessary _avatar parameter for unregisterScheme --- contracts/dao/DAOController.sol | 7 +------ 1 file changed, 1 insertion(+), 6 deletions(-) diff --git a/contracts/dao/DAOController.sol b/contracts/dao/DAOController.sol index 078d27b9..a4744416 100644 --- a/contracts/dao/DAOController.sol +++ b/contracts/dao/DAOController.sol @@ -107,12 +107,7 @@ contract DAOController is Initializable { * @param _scheme the address of the scheme * @return bool success of the operation */ - function unregisterScheme(address _scheme, address _avatar) - external - onlyRegisteredScheme - onlyRegisteringSchemes - returns (bool) - { + function unregisterScheme(address _scheme) external onlyRegisteredScheme onlyRegisteringSchemes returns (bool) { Scheme memory scheme = schemes[_scheme]; //check if the scheme is registered From ca13065cb7486ffe391dafd1c93106d1cecf1784 Mon Sep 17 00:00:00 2001 From: AugustoL Date: Fri, 23 Sep 2022 19:12:43 -0300 Subject: [PATCH 28/33] refactor(contracts/dao): take in count all proposed calls for option 1 --- contracts/dao/schemes/AvatarScheme.sol | 9 +++------ contracts/dao/schemes/Scheme.sol | 5 +---- contracts/dao/schemes/WalletScheme.sol | 9 +++------ 3 files changed, 7 insertions(+), 16 deletions(-) diff --git a/contracts/dao/schemes/AvatarScheme.sol b/contracts/dao/schemes/AvatarScheme.sol index 8d807651..d62cb1d7 100644 --- a/contracts/dao/schemes/AvatarScheme.sol +++ b/contracts/dao/schemes/AvatarScheme.sol @@ -56,11 +56,6 @@ contract AvatarScheme is Scheme { } else { uint256 oldRepSupply = getNativeReputationTotalSupply(); - // proposal.to.length.div( proposal.totalOptions ) == Calls per option - // We dont assign it as variable to avoid hitting stack too deep error - uint256 callIndex = proposal.to.length.div(proposal.totalOptions).mul(_winningOption.sub(1)); - uint256 lastCallIndex = callIndex.add(proposal.to.length.div(proposal.totalOptions)); - controller.avatarCall( address(permissionRegistry), abi.encodeWithSignature("setERC20Balances()"), @@ -68,7 +63,9 @@ contract AvatarScheme is Scheme { 0 ); - for (callIndex; callIndex < lastCallIndex; callIndex++) { + uint256 callIndex = 0; + + for (callIndex; callIndex < proposal.to.length; callIndex++) { bytes memory _data = proposal.callData[callIndex]; bytes4 callDataFuncSignature; assembly { diff --git a/contracts/dao/schemes/Scheme.sol b/contracts/dao/schemes/Scheme.sol index f29caf30..afb14f8a 100644 --- a/contracts/dao/schemes/Scheme.sol +++ b/contracts/dao/schemes/Scheme.sol @@ -168,10 +168,7 @@ abstract contract Scheme is DXDVotingMachineCallbacks { } require(_to.length == _callData.length, "WalletScheme: invalid _callData length"); require(_to.length == _value.length, "WalletScheme: invalid _value length"); - require( - _totalOptions <= _to.length && _value.length.mod(_totalOptions) == 0, - "WalletScheme: Invalid _totalOptions or action calls length" - ); + require(_totalOptions == 2, "WalletScheme: The total amount of options should be 2"); bytes32 voteParams = controller.getSchemeParameters(address(this)); diff --git a/contracts/dao/schemes/WalletScheme.sol b/contracts/dao/schemes/WalletScheme.sol index bd654d75..b2bd383a 100644 --- a/contracts/dao/schemes/WalletScheme.sol +++ b/contracts/dao/schemes/WalletScheme.sol @@ -61,14 +61,11 @@ contract WalletScheme is Scheme { } else { uint256 oldRepSupply = getNativeReputationTotalSupply(); - // proposal.to.length.div( proposal.totalOptions ) == Calls per option - // We dont assign it as variable to avoid hitting stack too deep error - uint256 callIndex = proposal.to.length.div(proposal.totalOptions).mul(_winningOption.sub(1)); - uint256 lastCallIndex = callIndex.add(proposal.to.length.div(proposal.totalOptions)); - permissionRegistry.setERC20Balances(); - for (callIndex; callIndex < lastCallIndex; callIndex++) { + uint256 callIndex = 0; + + for (callIndex; callIndex < proposal.to.length; callIndex++) { bytes memory _data = proposal.callData[callIndex]; bytes4 callDataFuncSignature; assembly { From e6fb3655bc1f3952aa3be9e98c05917595ed6425 Mon Sep 17 00:00:00 2001 From: AugustoL Date: Fri, 23 Sep 2022 19:17:34 -0300 Subject: [PATCH 29/33] test(dao): update name of main variables used for dao tests and fixed RegistrarScheme test --- test/dao/schemes/WalletScheme.js | 838 ++++++++++++------------------- 1 file changed, 310 insertions(+), 528 deletions(-) diff --git a/test/dao/schemes/WalletScheme.js b/test/dao/schemes/WalletScheme.js index 7aca2566..f629f58b 100644 --- a/test/dao/schemes/WalletScheme.js +++ b/test/dao/schemes/WalletScheme.js @@ -4,6 +4,7 @@ import * as helpers from "../../helpers"; const { fixSignature } = require("../../helpers/sign"); const { time, expectRevert } = require("@openzeppelin/test-helpers"); +const AvatarScheme = artifacts.require("./AvatarScheme.sol"); const WalletScheme = artifacts.require("./WalletScheme.sol"); const PermissionRegistry = artifacts.require("./PermissionRegistry.sol"); const ERC20Mock = artifacts.require("./ERC20Mock.sol"); @@ -12,12 +13,13 @@ const ActionMock = artifacts.require("./ActionMock.sol"); contract("WalletScheme", function (accounts) { let standardTokenMock, permissionRegistry, - registrarWalletScheme, - masterWalletScheme, - quickWalletScheme, + registrarScheme, + avatarScheme, + walletScheme, org, actionMock, votingMachine, + defaultParamsHash, testToken; const constants = helpers.constants; @@ -69,7 +71,7 @@ contract("WalletScheme", function (accounts) { voteOnBehalf ); - const paramsHash = await org.votingMachine.getParametersHash( + defaultParamsHash = await org.votingMachine.getParametersHash( [ _queuedVoteRequiredPercentage, _queuedVotePeriodLimit, @@ -89,8 +91,8 @@ contract("WalletScheme", function (accounts) { permissionRegistry = await PermissionRegistry.new(accounts[0], 30); await permissionRegistry.initialize(); - registrarWalletScheme = await WalletScheme.new(); - await registrarWalletScheme.initialize( + registrarScheme = await WalletScheme.new(); + await registrarScheme.initialize( org.avatar.address, org.votingMachine.address, org.controller.address, @@ -100,8 +102,8 @@ contract("WalletScheme", function (accounts) { 0 ); - masterWalletScheme = await WalletScheme.new(); - await masterWalletScheme.initialize( + avatarScheme = await AvatarScheme.new(); + await avatarScheme.initialize( org.avatar.address, org.votingMachine.address, org.controller.address, @@ -111,8 +113,8 @@ contract("WalletScheme", function (accounts) { 5 ); - quickWalletScheme = await WalletScheme.new(); - await quickWalletScheme.initialize( + walletScheme = await WalletScheme.new(); + await walletScheme.initialize( org.avatar.address, org.votingMachine.address, org.controller.address, @@ -131,7 +133,25 @@ contract("WalletScheme", function (accounts) { ); await permissionRegistry.setETHPermission( - quickWalletScheme.address, + registrarScheme.address, + org.controller.address, + web3.eth.abi.encodeFunctionSignature( + "registerScheme(address,bytes32,bool,bool)" + ), + 0, + true + ); + + await permissionRegistry.setETHPermission( + registrarScheme.address, + org.controller.address, + web3.eth.abi.encodeFunctionSignature("unregisterScheme(address)"), + 0, + true + ); + + await permissionRegistry.setETHPermission( + walletScheme.address, constants.NULL_ADDRESS, constants.NULL_SIGNATURE, constants.MAX_UINT_256, @@ -140,7 +160,7 @@ contract("WalletScheme", function (accounts) { await permissionRegistry.setETHPermission( org.avatar.address, - registrarWalletScheme.address, + registrarScheme.address, web3.eth.abi.encodeFunctionSignature( "setMaxSecondsForExecution(uint256)" ), @@ -149,7 +169,7 @@ contract("WalletScheme", function (accounts) { ); await permissionRegistry.setETHPermission( org.avatar.address, - masterWalletScheme.address, + avatarScheme.address, web3.eth.abi.encodeFunctionSignature( "setMaxSecondsForExecution(uint256)" ), @@ -158,7 +178,7 @@ contract("WalletScheme", function (accounts) { ); await permissionRegistry.setETHPermission( org.avatar.address, - quickWalletScheme.address, + walletScheme.address, web3.eth.abi.encodeFunctionSignature( "setMaxSecondsForExecution(uint256)" ), @@ -173,14 +193,6 @@ contract("WalletScheme", function (accounts) { true ); - // await permissionRegistry.setETHPermission( - // org.controller.address, - // actionMock.address, - // web3.eth.abi.encodeFunctionSignature("test(address,uint256)"), - // 0, - // true - // ); - await permissionRegistry.setETHPermission( org.avatar.address, actionMock.address, @@ -209,7 +221,7 @@ contract("WalletScheme", function (accounts) { true ); await permissionRegistry.setETHPermission( - quickWalletScheme.address, + walletScheme.address, actionMock.address, web3.eth.abi.encodeFunctionSignature( "testWithoutReturnValue(address,uint256)" @@ -218,14 +230,14 @@ contract("WalletScheme", function (accounts) { true ); await permissionRegistry.setETHPermission( - quickWalletScheme.address, + walletScheme.address, actionMock.address, web3.eth.abi.encodeFunctionSignature("test(address,uint256)"), 0, true ); await permissionRegistry.setETHPermission( - quickWalletScheme.address, + walletScheme.address, actionMock.address, web3.eth.abi.encodeFunctionSignature( "executeCall(address,bytes,uint256)" @@ -237,14 +249,26 @@ contract("WalletScheme", function (accounts) { await time.increase(30); await org.controller.registerScheme( - masterWalletScheme.address, - paramsHash, + registrarScheme.address, + defaultParamsHash, true, false ); + await org.controller.registerScheme( + avatarScheme.address, + defaultParamsHash, + false, + true + ); + await org.controller.registerScheme( + walletScheme.address, + defaultParamsHash, + false, + false + ); }); - it("Registrar Wallet Scheme", async function () { + it("Registrar Scheme", async function () { await web3.eth.sendTransaction({ from: accounts[0], to: org.avatar.address, @@ -257,369 +281,131 @@ contract("WalletScheme", function (accounts) { org.votingMachine.address, org.controller.address, permissionRegistry.address, - "New Wallet", + "New Wallet Scheme", executionTimeout, 0 ); - // Check that calls to controller that were set as not allowed are not executable in schemes that calls the - // controller - const callsToController = [ - await org.controller.contract.methods - .mintTokens(1, accounts[5], org.avatar.address) - .encodeABI(), - await org.controller.contract.methods - .unregisterSelf(org.avatar.address) - .encodeABI(), - await org.controller.contract.methods - .addGlobalConstraint( - accounts[5], - constants.SOME_HASH, - org.avatar.address - ) - .encodeABI(), - await org.controller.contract.methods - .removeGlobalConstraint(accounts[5], org.avatar.address) - .encodeABI(), - await org.controller.contract.methods - .upgradeController(accounts[5], org.avatar.address) - .encodeABI(), - await org.controller.contract.methods - .sendEther(1, accounts[5], org.avatar.address) - .encodeABI(), - await org.controller.contract.methods - .externalTokenTransfer( - standardTokenMock.address, - accounts[5], - 1, - org.avatar.address - ) - .encodeABI(), - await org.controller.contract.methods - .externalTokenTransferFrom( - standardTokenMock.address, - org.avatar.address, - accounts[5], - 1, - org.avatar.address - ) - .encodeABI(), - await org.controller.contract.methods - .externalTokenApproval( - standardTokenMock.address, - accounts[5], - 1, - org.avatar.address - ) - .encodeABI(), - await org.controller.contract.methods - .metaData("test", org.avatar.address) - .encodeABI(), - ]; - await Promise.all( - callsToController.map(async callToControllerData => { - const callToControllerProposal = await helpers.getValueFromLogs( - await registrarWalletScheme.proposeCalls( - [org.controller.address], - [callToControllerData], - [0], - constants.TEST_TITLE, - constants.SOME_HASH - ), - "_proposalId" - ); - await expectRevert.unspecified( - votingMachine.contract.vote( - callToControllerProposal, - 1, - 0, - constants.NULL_ADDRESS, - { from: accounts[2] } - ) - ); - }) - ); - await Promise.all( - callsToController.map(async callToControllerData => { - const callToControllerProposal = await helpers.getValueFromLogs( - await masterWalletScheme.proposeCalls( - [org.controller.address], - [callToControllerData], - [0], - constants.TEST_TITLE, - constants.SOME_HASH - ), - "_proposalId" - ); - await expectRevert.unspecified( - votingMachine.contract.vote( - callToControllerProposal, - 1, - 0, - constants.NULL_ADDRESS, - { from: accounts[2] } - ) - ); - }) - ); - - const registerSchemeData = await org.controller.contract.methods - .registerScheme( - newWalletScheme.address, - votingMachine.params, - helpers.encodePermission({ - canGenericCall: false, - canUpgrade: false, - canChangeConstraints: false, - canRegisterSchemes: false, - }), - org.avatar.address - ) - .encodeABI(); - - await votingMachine.contract.setParameters( + await org.votingMachine.setParameters( [60, 86400, 3600, 1800, 1050, 0, 60, 10, 15, 10, 0], constants.NULL_ADDRESS ); - const newVotingParamsHash = await votingMachine.contract.getParametersHash( + const newParamsHash = await org.votingMachine.getParametersHash( [60, 86400, 3600, 1800, 1050, 0, 60, 10, 15, 10, 0], constants.NULL_ADDRESS ); - const updateSchemeParamsData = await org.controller.contract.methods - .registerScheme( - masterWalletScheme.address, - newVotingParamsHash, - helpers.encodePermission({ - canGenericCall: true, - canUpgrade: false, - canChangeConstraints: false, - canRegisterSchemes: false, - }), - org.avatar.address - ) - .encodeABI(); - - const unregisterSchemeData = await org.controller.contract.methods - .unregisterScheme(quickWalletScheme.address, org.avatar.address) - .encodeABI(); - - const proposalId1 = await helpers.getValueFromLogs( - await masterWalletScheme.proposeCalls( - [org.controller.address], - [registerSchemeData], - [0], - constants.TEST_TITLE, - constants.SOME_HASH - ), - "_proposalId" - ); - await expectRevert( - votingMachine.contract.vote(proposalId1, 1, 0, constants.NULL_ADDRESS, { - from: accounts[2], - }), - "call execution failed" + const registerSchemeData = web3.eth.abi.encodeFunctionCall( + org.controller.abi.find(x => x.name === "registerScheme"), + [newWalletScheme.address, defaultParamsHash, false, false] ); - const proposalId2 = await helpers.getValueFromLogs( - await masterWalletScheme.proposeCalls( - [org.controller.address], - [unregisterSchemeData], - [0], - constants.TEST_TITLE, - constants.SOME_HASH - ), - "_proposalId" - ); - await expectRevert( - votingMachine.contract.vote(proposalId2, 1, 0, constants.NULL_ADDRESS, { - from: accounts[2], - }), - "call execution failed" + const updateSchemeParamsData = web3.eth.abi.encodeFunctionCall( + org.controller.abi.find(x => x.name === "registerScheme"), + [avatarScheme.address, newParamsHash, false, true] ); - const proposalId3 = await helpers.getValueFromLogs( - await registrarWalletScheme.proposeCalls( - [org.controller.address], - [registerSchemeData], - [0], - constants.TEST_TITLE, - constants.SOME_HASH - ), - "_proposalId" - ); - await votingMachine.contract.vote( - proposalId3, - 1, - 0, - constants.NULL_ADDRESS, - { from: accounts[2] } + const unregisterSchemeData = web3.eth.abi.encodeFunctionCall( + org.controller.abi.find(x => x.name === "unregisterScheme"), + [walletScheme.address] ); - const proposalId4 = await helpers.getValueFromLogs( - await registrarWalletScheme.proposeCalls( - [org.controller.address], - [unregisterSchemeData], - [0], + const proposalId1 = await helpers.getValueFromLogs( + await registrarScheme.proposeCalls( + [ + org.controller.address, + org.controller.address, + org.controller.address, + ], + [registerSchemeData, updateSchemeParamsData, unregisterSchemeData], + [0, 0, 0], + 2, constants.TEST_TITLE, constants.SOME_HASH ), "_proposalId" ); - await votingMachine.contract.vote( - proposalId4, - 1, - 0, - constants.NULL_ADDRESS, - { from: accounts[2] } - ); + await org.votingMachine.vote(proposalId1, 1, 0, constants.NULL_ADDRESS, { + from: accounts[2], + }); - const proposalId5 = await helpers.getValueFromLogs( - await registrarWalletScheme.proposeCalls( - [org.controller.address], - [updateSchemeParamsData], - [0], - constants.TEST_TITLE, - constants.SOME_HASH - ), - "_proposalId" + const organizationProposal1 = await registrarScheme.getOrganizationProposal( + proposalId1 ); - await votingMachine.contract.vote( - proposalId5, - 1, - 0, - constants.NULL_ADDRESS, - { from: accounts[2] } - ); - - const organizationProposal1 = - await registrarWalletScheme.getOrganizationProposal(proposalId3); assert.equal( organizationProposal1.state, constants.WALLET_SCHEME_PROPOSAL_STATES.executionSuccedd ); - assert.equal(organizationProposal1.callData[0], registerSchemeData); - assert.equal(organizationProposal1.to[0], org.controller.address); - assert.equal(organizationProposal1.value[0], 0); - - const organizationProposal2 = - await registrarWalletScheme.getOrganizationProposal(proposalId4); - assert.equal( - organizationProposal2.state, - constants.WALLET_SCHEME_PROPOSAL_STATES.executionSuccedd - ); - assert.equal(organizationProposal2.callData[0], unregisterSchemeData); - assert.equal(organizationProposal2.to[0], org.controller.address); - assert.equal(organizationProposal2.value[0], 0); + assert.deepEqual(organizationProposal1.to, [ + org.controller.address, + org.controller.address, + org.controller.address, + ]); + assert.deepEqual(organizationProposal1.callData, [ + registerSchemeData, + updateSchemeParamsData, + unregisterSchemeData, + ]); + // assert.deepEqual(organizationProposal1.value, ["0", "0", "0"]); - const organizationProposal3 = - await registrarWalletScheme.getOrganizationProposal(proposalId5); assert.equal( - organizationProposal3.state, - constants.WALLET_SCHEME_PROPOSAL_STATES.executionSuccedd + await org.controller.isSchemeRegistered(newWalletScheme.address), + true ); - assert.equal(organizationProposal3.callData[0], updateSchemeParamsData); - assert.equal(organizationProposal3.to[0], org.controller.address); - assert.equal(organizationProposal3.value[0], 0); - assert.equal( - await org.controller.isSchemeRegistered( - newWalletScheme.address, - org.avatar.address - ), - true + await org.controller.getSchemeParameters(newWalletScheme.address), + defaultParamsHash ); assert.equal( - await org.controller.getSchemeParameters( - newWalletScheme.address, - org.avatar.address - ), - votingMachine.params + await org.controller.getSchemeCanManageSchemes(newWalletScheme.address), + false ); assert.equal( - await org.controller.getSchemePermissions( - newWalletScheme.address, - org.avatar.address - ), - helpers.encodePermission({ - canGenericCall: false, - canUpgrade: false, - canChangeConstraints: false, - canRegisterSchemes: false, - }) + await org.controller.getSchemeCanMakeAvatarCalls(newWalletScheme.address), + false ); + assert.equal( - await org.controller.isSchemeRegistered( - quickWalletScheme.address, - org.avatar.address - ), + await org.controller.isSchemeRegistered(walletScheme.address), false ); assert.equal( - await org.controller.getSchemeParameters( - quickWalletScheme.address, - org.avatar.address - ), + await org.controller.getSchemeParameters(walletScheme.address), "0x0000000000000000000000000000000000000000000000000000000000000000" ); assert.equal( - await org.controller.getSchemePermissions( - quickWalletScheme.address, - org.avatar.address - ), - "0x00000000" + await org.controller.getSchemeCanManageSchemes(walletScheme.address), + false ); assert.equal( - await org.controller.getSchemePermissions( - masterWalletScheme.address, - org.avatar.address - ), - helpers.encodePermission({ - canGenericCall: true, - canUpgrade: false, - canChangeConstraints: false, - canRegisterSchemes: false, - }) + await org.controller.getSchemeCanMakeAvatarCalls(walletScheme.address), + false ); + assert.equal( - await org.controller.isSchemeRegistered( - masterWalletScheme.address, - org.avatar.address - ), + await org.controller.isSchemeRegistered(avatarScheme.address), true ); assert.equal( - await org.controller.getSchemeParameters( - masterWalletScheme.address, - org.avatar.address - ), - newVotingParamsHash + await org.controller.getSchemeParameters(avatarScheme.address), + newParamsHash ); - - // Test that the masterWalletScheme now will submit proposals with new voting configuration - const submitProposalTx = await masterWalletScheme.proposeCalls( - [accounts[1]], - ["0x00"], - [1], - constants.TEST_TITLE, - constants.SOME_HASH + assert.equal( + await org.controller.getSchemeCanManageSchemes(avatarScheme.address), + false ); assert.equal( - helpers.logDecoder.decodeLogs(submitProposalTx.receipt.rawLogs)[0].args - ._paramsHash, - newVotingParamsHash + await org.controller.getSchemeCanMakeAvatarCalls(avatarScheme.address), + true ); }); it("MasterWalletScheme - setMaxSecondsForExecution is callable only form the avatar", async function () { expectRevert( - masterWalletScheme.setMaxSecondsForExecution(executionTimeout + 666), + avatarScheme.setMaxSecondsForExecution(executionTimeout + 666), "setMaxSecondsForExecution is callable only form the avatar" ); - assert.equal( - await masterWalletScheme.maxSecondsForExecution(), - executionTimeout - ); + assert.equal(await avatarScheme.maxSecondsForExecution(), executionTimeout); }); it("MasterWalletScheme - proposal to change max proposal time - positive decision - proposal executed", async () => { @@ -628,8 +414,8 @@ contract("WalletScheme", function (accounts) { ); expectRevert( - masterWalletScheme.proposeCalls( - [masterWalletScheme.address, ZERO_ADDRESS], + avatarScheme.proposeCalls( + [avatarScheme.address, ZERO_ADDRESS], [callData, "0x0"], [1, 0], 2, @@ -639,8 +425,8 @@ contract("WalletScheme", function (accounts) { "invalid proposal caller" ); - const tx = await masterWalletScheme.proposeCalls( - [masterWalletScheme.address, ZERO_ADDRESS], + const tx = await avatarScheme.proposeCalls( + [avatarScheme.address, ZERO_ADDRESS], [callData, "0x0"], [0, 0], 2, @@ -653,17 +439,18 @@ contract("WalletScheme", function (accounts) { from: accounts[2], }); - const organizationProposal = - await masterWalletScheme.getOrganizationProposal(proposalId); + const organizationProposal = await avatarScheme.getOrganizationProposal( + proposalId + ); assert.equal( organizationProposal.state, constants.WALLET_SCHEME_PROPOSAL_STATES.executionSuccedd ); assert.equal(organizationProposal.callData[0], callData); - assert.equal(organizationProposal.to[0], masterWalletScheme.address); + assert.equal(organizationProposal.to[0], avatarScheme.address); assert.equal(organizationProposal.value[0], 0); assert.equal( - await masterWalletScheme.maxSecondsForExecution(), + await avatarScheme.maxSecondsForExecution(), executionTimeout + 666 ); }); @@ -673,8 +460,8 @@ contract("WalletScheme", function (accounts) { const callData = helpers.encodeMaxSecondsForExecution(86400 - 1); expectRevert( - masterWalletScheme.proposeCalls( - [masterWalletScheme.address, ZERO_ADDRESS], + avatarScheme.proposeCalls( + [avatarScheme.address, ZERO_ADDRESS], [callData, "0x0"], [1, 0], constants.TEST_TITLE, @@ -683,8 +470,8 @@ contract("WalletScheme", function (accounts) { "invalid proposal caller" ); - const tx = await masterWalletScheme.proposeCalls( - [masterWalletScheme.address, ZERO_ADDRESS], + const tx = await avatarScheme.proposeCalls( + [avatarScheme.address, ZERO_ADDRESS], [callData, "0x0"], [0, 0], 2, @@ -705,8 +492,9 @@ contract("WalletScheme", function (accounts) { from: accounts[2], }); - const organizationProposal = - await masterWalletScheme.getOrganizationProposal(proposalId); + const organizationProposal = await avatarScheme.getOrganizationProposal( + proposalId + ); assert.equal( organizationProposal.state, constants.WALLET_SCHEME_PROPOSAL_STATES.executionTimeout @@ -715,18 +503,15 @@ contract("WalletScheme", function (accounts) { organizationProposal.callData[0], setMaxSecondsForExecutionData ); - assert.equal(organizationProposal.to[0], masterWalletScheme.address); + assert.equal(organizationProposal.to[0], avatarScheme.address); assert.equal(organizationProposal.value[0], 0); - assert.equal( - await masterWalletScheme.maxSecondsForExecution(), - executionTimeout - ); + assert.equal(await avatarScheme.maxSecondsForExecution(), executionTimeout); }); it("MasterWalletScheme - proposal with data or value to wallet scheme address fail", async function () { expectRevert( - masterWalletScheme.proposeCalls( - [masterWalletScheme.address], + avatarScheme.proposeCalls( + [avatarScheme.address], ["0x00000000"], [1], constants.TEST_TITLE, @@ -735,8 +520,8 @@ contract("WalletScheme", function (accounts) { "invalid proposal caller" ); expectRevert( - masterWalletScheme.proposeCalls( - [masterWalletScheme.address], + avatarScheme.proposeCalls( + [avatarScheme.address], ["0x00000000"], [1], constants.TEST_TITLE, @@ -745,14 +530,14 @@ contract("WalletScheme", function (accounts) { "invalid proposal caller" ); - assert.equal(await masterWalletScheme.getOrganizationProposalsLength(), 0); + assert.equal(await avatarScheme.getOrganizationProposalsLength(), 0); }); it("MasterWalletScheme - proposing proposal with different length of to and value fail", async function () { const callData = helpers.testCallFrom(org.avatar.address); expectRevert( - masterWalletScheme.proposeCalls( + avatarScheme.proposeCalls( [actionMock.address], [callData], [0, 0], @@ -762,7 +547,7 @@ contract("WalletScheme", function (accounts) { "invalid _value length" ); expectRevert( - masterWalletScheme.proposeCalls( + avatarScheme.proposeCalls( [actionMock.address], [callData, callData], [0], @@ -772,17 +557,14 @@ contract("WalletScheme", function (accounts) { "invalid _callData length" ); - assert.equal(await masterWalletScheme.getOrganizationProposalsLength(), 0); - assert.equal( - (await masterWalletScheme.getOrganizationProposals()).length, - 0 - ); + assert.equal(await avatarScheme.getOrganizationProposalsLength(), 0); + assert.equal((await avatarScheme.getOrganizationProposals()).length, 0); }); it("MasterWalletScheme - proposal with data - negative decision - proposal rejected", async function () { const callData = helpers.testCallFrom(org.avatar.address); - let tx = await masterWalletScheme.proposeCalls( + let tx = await avatarScheme.proposeCalls( [actionMock.address], [callData], [0], @@ -800,8 +582,9 @@ contract("WalletScheme", function (accounts) { const stateChangeEvent = helpers.getEventFromTx(tx, "ProposalStateChange"); assert.equal(stateChangeEvent.args._state, 2); - const organizationProposal = - await masterWalletScheme.getOrganizationProposal(proposalId); + const organizationProposal = await avatarScheme.getOrganizationProposal( + proposalId + ); assert.equal( organizationProposal.state, constants.WALLET_SCHEME_PROPOSAL_STATES.rejected @@ -818,8 +601,8 @@ contract("WalletScheme", function (accounts) { executionTimeout + 666 ); - const tx = await masterWalletScheme.proposeCalls( - [masterWalletScheme.address, ZERO_ADDRESS], + const tx = await avatarScheme.proposeCalls( + [avatarScheme.address, ZERO_ADDRESS], [callData, "0x0"], [0, 0], 2, @@ -832,15 +615,16 @@ contract("WalletScheme", function (accounts) { from: accounts[2], }); - const organizationProposal = - await masterWalletScheme.getOrganizationProposal(proposalId); + const organizationProposal = await avatarScheme.getOrganizationProposal( + proposalId + ); assert.equal( organizationProposal.state, constants.WALLET_SCHEME_PROPOSAL_STATES.executionSuccedd ); // assert.equal(organizationProposal.callData[0], callData); - assert.equal(organizationProposal.to[0], masterWalletScheme.address); + assert.equal(organizationProposal.to[0], avatarScheme.address); assert.equal(organizationProposal.value[0], 0); }); @@ -848,7 +632,7 @@ contract("WalletScheme", function (accounts) { const callData = helpers.encodeMaxSecondsForExecution(executionTimeout); const proposalId1 = helpers.getValueFromLogs( - await masterWalletScheme.proposeCalls( + await avatarScheme.proposeCalls( [actionMock.address, ZERO_ADDRESS], [callData, "0x0"], [0, 0], @@ -885,21 +669,21 @@ contract("WalletScheme", function (accounts) { const actionMockExecuteCallWithRequiredData = await actionMock.contract.methods .executeCallWithRequiredSuccess( - masterWalletScheme.address, + avatarScheme.address, executeSignedVoteData, 0 ) .encodeABI(); const actionMockExecuteCallData = await actionMock.contract.methods - .executeCall(masterWalletScheme.address, executeSignedVoteData, 0) + .executeCall(avatarScheme.address, executeSignedVoteData, 0) .encodeABI(); // It wont allow submitting a proposal to call the wallet scheme itself, the scheme itself is only callable to call // setMaxSecondsForExecution function. await expectRevert( - masterWalletScheme.proposeCalls( - [masterWalletScheme.address, ZERO_ADDRESS], + avatarScheme.proposeCalls( + [avatarScheme.address, ZERO_ADDRESS], [executeSignedVoteData, "0x0"], [0, 0], 2, @@ -913,7 +697,7 @@ contract("WalletScheme", function (accounts) { // of a proposal when another is on the way, the revert will happen in the voting action when the proposal is // executed const proposalId2 = await helpers.getValueFromLogs( - await masterWalletScheme.proposeCalls( + await avatarScheme.proposeCalls( [actionMock.address, ZERO_ADDRESS], [actionMockExecuteCallWithRequiredData, "0x0"], [0, 0], @@ -932,12 +716,12 @@ contract("WalletScheme", function (accounts) { ); assert.equal( - (await masterWalletScheme.getOrganizationProposal(proposalId1)).state, + (await avatarScheme.getOrganizationProposal(proposalId1)).state, constants.WALLET_SCHEME_PROPOSAL_STATES.submitted ); assert.equal( - (await masterWalletScheme.getOrganizationProposal(proposalId2)).state, + (await avatarScheme.getOrganizationProposal(proposalId2)).state, constants.WALLET_SCHEME_PROPOSAL_STATES.submitted ); @@ -945,7 +729,7 @@ contract("WalletScheme", function (accounts) { // The proposal trying to execute propoposalId1 will success but proposal1 wont be exeucted sucessfuly, it will // still be submitted state. const proposalId3 = await helpers.getValueFromLogs( - await masterWalletScheme.proposeCalls( + await avatarScheme.proposeCalls( [actionMock.address], [actionMockExecuteCallData], [0], @@ -963,12 +747,12 @@ contract("WalletScheme", function (accounts) { ); assert.equal( - (await masterWalletScheme.getOrganizationProposal(proposalId1)).state, + (await avatarScheme.getOrganizationProposal(proposalId1)).state, constants.WALLET_SCHEME_PROPOSAL_STATES.submitted ); assert.equal( - (await masterWalletScheme.getOrganizationProposal(proposalId3)).state, + (await avatarScheme.getOrganizationProposal(proposalId3)).state, constants.WALLET_SCHEME_PROPOSAL_STATES.executionSuccedd ); }); @@ -984,7 +768,7 @@ contract("WalletScheme", function (accounts) { const callData = helpers.testCallFrom(org.avatar.address); - const tx = await masterWalletScheme.proposeCalls( + const tx = await avatarScheme.proposeCalls( [accounts[1]], [callData], [0], @@ -1000,7 +784,7 @@ contract("WalletScheme", function (accounts) { ); assert.equal( - (await masterWalletScheme.getOrganizationProposal(proposalId)).state, + (await avatarScheme.getOrganizationProposal(proposalId)).state, constants.WALLET_SCHEME_PROPOSAL_STATES.submitted ); @@ -1015,7 +799,7 @@ contract("WalletScheme", function (accounts) { ); assert.equal( - (await masterWalletScheme.getOrganizationProposal(proposalId)).state, + (await avatarScheme.getOrganizationProposal(proposalId)).state, constants.WALLET_SCHEME_PROPOSAL_STATES.executionTimeout ); }); @@ -1039,7 +823,7 @@ contract("WalletScheme", function (accounts) { await permissionRegistry.setETHPermission( org.avatar.address, - masterWalletScheme.address, + avatarScheme.address, constants.NULL_SIGNATURE, 100, true @@ -1047,7 +831,7 @@ contract("WalletScheme", function (accounts) { const callData = helpers.testCallFrom(org.avatar.address); - const tx = await masterWalletScheme.proposeCalls( + const tx = await avatarScheme.proposeCalls( [actionMock.address], [callData], [101], @@ -1063,7 +847,7 @@ contract("WalletScheme", function (accounts) { ); assert.equal( - (await masterWalletScheme.getOrganizationProposal(proposalId)).state, + (await avatarScheme.getOrganizationProposal(proposalId)).state, constants.WALLET_SCHEME_PROPOSAL_STATES.submitted ); @@ -1078,7 +862,7 @@ contract("WalletScheme", function (accounts) { ); assert.equal( - (await masterWalletScheme.getOrganizationProposal(proposalId)).state, + (await avatarScheme.getOrganizationProposal(proposalId)).state, constants.WALLET_SCHEME_PROPOSAL_STATES.executionTimeout ); }); @@ -1101,7 +885,7 @@ contract("WalletScheme", function (accounts) { const callData = helpers.testCallFrom(org.avatar.address); - const tx = await masterWalletScheme.proposeCalls( + const tx = await avatarScheme.proposeCalls( [actionMock.address, actionMock.address], [callData, callData], [50, 3], @@ -1117,7 +901,7 @@ contract("WalletScheme", function (accounts) { ); assert.equal( - (await masterWalletScheme.getOrganizationProposal(proposalId)).state, + (await avatarScheme.getOrganizationProposal(proposalId)).state, constants.WALLET_SCHEME_PROPOSAL_STATES.submitted ); @@ -1132,7 +916,7 @@ contract("WalletScheme", function (accounts) { ); assert.equal( - (await masterWalletScheme.getOrganizationProposal(proposalId)).state, + (await avatarScheme.getOrganizationProposal(proposalId)).state, constants.WALLET_SCHEME_PROPOSAL_STATES.executionTimeout ); }); @@ -1175,7 +959,7 @@ contract("WalletScheme", function (accounts) { await time.increase(1); // Proposal to allow calling actionMock - const tx = await masterWalletScheme.proposeCalls( + const tx = await avatarScheme.proposeCalls( [permissionRegistry.address], [setPermissionData], [0], @@ -1206,7 +990,7 @@ contract("WalletScheme", function (accounts) { await time.increase(1); - const tx2 = await masterWalletScheme.proposeCalls( + const tx2 = await avatarScheme.proposeCalls( [actionMock.address], [callData], [0], @@ -1222,8 +1006,9 @@ contract("WalletScheme", function (accounts) { { from: accounts[2] } ); - const organizationProposal = - await masterWalletScheme.getOrganizationProposal(proposalId2); + const organizationProposal = await avatarScheme.getOrganizationProposal( + proposalId2 + ); assert.equal( organizationProposal.state, constants.WALLET_SCHEME_PROPOSAL_STATES.executionSuccedd @@ -1264,7 +1049,7 @@ contract("WalletScheme", function (accounts) { await time.increase(30); - const tx = await masterWalletScheme.proposeCalls( + const tx = await avatarScheme.proposeCalls( [wallet.address, wallet.address], ["0x0", payCallData], [constants.TEST_VALUE, 0], @@ -1293,8 +1078,9 @@ contract("WalletScheme", function (accounts) { Number(balanceBeforePay) + constants.TEST_VALUE ); - const organizationProposal = - await masterWalletScheme.getOrganizationProposal(proposalId); + const organizationProposal = await avatarScheme.getOrganizationProposal( + proposalId + ); assert.equal( organizationProposal.state, constants.WALLET_SCHEME_PROPOSAL_STATES.executionSuccedd @@ -1310,7 +1096,7 @@ contract("WalletScheme", function (accounts) { it("MasterWalletScheme - positive decision - proposal execute and show revert in return", async function () { const callData = helpers.testCallFrom(constants.NULL_ADDRESS); - let tx = await masterWalletScheme.proposeCalls( + let tx = await avatarScheme.proposeCalls( [actionMock.address], [callData], [0], @@ -1327,7 +1113,7 @@ contract("WalletScheme", function (accounts) { ); assert.equal( - (await masterWalletScheme.getOrganizationProposal(proposalId)).state, + (await avatarScheme.getOrganizationProposal(proposalId)).state, constants.WALLET_SCHEME_PROPOSAL_STATES.submitted ); @@ -1342,7 +1128,7 @@ contract("WalletScheme", function (accounts) { ); assert.equal( - (await masterWalletScheme.getOrganizationProposal(proposalId)).state, + (await avatarScheme.getOrganizationProposal(proposalId)).state, constants.WALLET_SCHEME_PROPOSAL_STATES.executionTimeout ); }); @@ -1350,7 +1136,7 @@ contract("WalletScheme", function (accounts) { it("MasterWalletScheme - positive decision - proposal executed without return value", async function () { const callData = helpers.testCallWithoutReturnValueFrom(org.avatar.address); - let tx = await masterWalletScheme.proposeCalls( + let tx = await avatarScheme.proposeCalls( [actionMock.address], [callData], [0], @@ -1373,8 +1159,9 @@ contract("WalletScheme", function (accounts) { assert.equal(returnValue["0"], true); assert.equal(returnValue["1"], null); - const organizationProposal = - await masterWalletScheme.getOrganizationProposal(proposalId); + const organizationProposal = await avatarScheme.getOrganizationProposal( + proposalId + ); assert.equal( organizationProposal.state, constants.WALLET_SCHEME_PROPOSAL_STATES.executionSuccedd @@ -1392,7 +1179,7 @@ contract("WalletScheme", function (accounts) { .burnReputation(constants.TEST_VALUE, accounts[4], org.avatar.address) .encodeABI(); - var tx = await masterWalletScheme.proposeCalls( + var tx = await avatarScheme.proposeCalls( [org.controller.address], [callDataMintRep], [0], @@ -1400,7 +1187,7 @@ contract("WalletScheme", function (accounts) { constants.NULL_HASH ); const proposalIdMintRep = await helpers.getValueFromLogs(tx, "_proposalId"); - tx = await masterWalletScheme.proposeCalls( + tx = await avatarScheme.proposeCalls( [org.controller.address], [callDataBurnRep], [0], @@ -1432,8 +1219,9 @@ contract("WalletScheme", function (accounts) { ); assert.equal(await org.reputation.balanceOf(accounts[4]), 0); - const mintRepProposal = - await masterWalletScheme.getOrganizationProposalByIndex(0); + const mintRepProposal = await avatarScheme.getOrganizationProposalByIndex( + 0 + ); assert.equal( mintRepProposal.state, constants.WALLET_SCHEME_PROPOSAL_STATES.executionSuccedd @@ -1442,8 +1230,9 @@ contract("WalletScheme", function (accounts) { assert.equal(mintRepProposal.to[0], org.controller.address); assert.equal(mintRepProposal.value[0], 0); - const burnRepProposal = - await masterWalletScheme.getOrganizationProposalByIndex(1); + const burnRepProposal = await avatarScheme.getOrganizationProposalByIndex( + 1 + ); assert.equal( burnRepProposal.state, constants.WALLET_SCHEME_PROPOSAL_STATES.executionSuccedd @@ -1465,7 +1254,7 @@ contract("WalletScheme", function (accounts) { const data1 = await org.controller.contract.methods .mintReputation(maxRepAmountToChange, accounts[4], org.avatar.address) .encodeABI(); - var tx = await masterWalletScheme.proposeCalls( + var tx = await avatarScheme.proposeCalls( [org.controller.address], [data0], [0], @@ -1477,7 +1266,7 @@ contract("WalletScheme", function (accounts) { "_proposalId" ); - tx = await masterWalletScheme.proposeCalls( + tx = await avatarScheme.proposeCalls( [org.controller.address], [data1], [0], @@ -1511,16 +1300,12 @@ contract("WalletScheme", function (accounts) { ); assert.equal( - ( - await masterWalletScheme.getOrganizationProposal( - proposalIdMintRepToFail - ) - ).state, + (await avatarScheme.getOrganizationProposal(proposalIdMintRepToFail)) + .state, constants.WALLET_SCHEME_PROPOSAL_STATES.submitted ); assert.equal( - (await masterWalletScheme.getOrganizationProposal(proposalIdMintRep)) - .state, + (await avatarScheme.getOrganizationProposal(proposalIdMintRep)).state, constants.WALLET_SCHEME_PROPOSAL_STATES.executionSuccedd ); }); @@ -1540,7 +1325,7 @@ contract("WalletScheme", function (accounts) { const data1 = await org.controller.contract.methods .burnReputation(maxRepAmountToChange, accounts[2], org.avatar.address) .encodeABI(); - var tx = await masterWalletScheme.proposeCalls( + var tx = await avatarScheme.proposeCalls( [org.controller.address], [data0], [0], @@ -1552,7 +1337,7 @@ contract("WalletScheme", function (accounts) { "_proposalId" ); - tx = await masterWalletScheme.proposeCalls( + tx = await avatarScheme.proposeCalls( [org.controller.address], [data1], [0], @@ -1587,16 +1372,12 @@ contract("WalletScheme", function (accounts) { ); assert.equal( - ( - await masterWalletScheme.getOrganizationProposal( - proposalIdMintRepToFail - ) - ).state, + (await avatarScheme.getOrganizationProposal(proposalIdMintRepToFail)) + .state, constants.WALLET_SCHEME_PROPOSAL_STATES.submitted ); assert.equal( - (await masterWalletScheme.getOrganizationProposal(proposalIdMintRep)) - .state, + (await avatarScheme.getOrganizationProposal(proposalIdMintRep)).state, constants.WALLET_SCHEME_PROPOSAL_STATES.executionSuccedd ); }); @@ -1612,9 +1393,9 @@ contract("WalletScheme", function (accounts) { ) .encodeABI(); const callDataRemoveScheme = await org.controller.contract.methods - .unregisterScheme(quickWalletScheme.address, org.avatar.address) + .unregisterScheme(walletScheme.address, org.avatar.address) .encodeABI(); - var tx = await masterWalletScheme.proposeCalls( + var tx = await avatarScheme.proposeCalls( [org.controller.address], [callDataRegisterScheme], [0], @@ -1625,7 +1406,7 @@ contract("WalletScheme", function (accounts) { tx, "_proposalId" ); - tx = await masterWalletScheme.proposeCalls( + tx = await avatarScheme.proposeCalls( [org.controller.address], [callDataRemoveScheme], [0], @@ -1668,16 +1449,14 @@ contract("WalletScheme", function (accounts) { "call execution failed" ); - const removedScheme = await org.controller.schemes( - quickWalletScheme.address - ); + const removedScheme = await org.controller.schemes(walletScheme.address); assert.equal(removedScheme.paramsHash, votingMachine.params); assert.equal(removedScheme.permissions, "0x00000001"); }); it("MasterWalletScheme - execute should fail if not passed/executed from votingMachine", async function () { const callData = helpers.testCallFrom(org.avatar.address); - var tx = await masterWalletScheme.proposeCalls( + var tx = await avatarScheme.proposeCalls( [actionMock.address], [callData], [0], @@ -1686,8 +1465,9 @@ contract("WalletScheme", function (accounts) { ); const proposalId = await helpers.getValueFromLogs(tx, "_proposalId"); await votingMachine.contract.execute(proposalId); - const organizationProposal = - await masterWalletScheme.getOrganizationProposal(proposalId); + const organizationProposal = await avatarScheme.getOrganizationProposal( + proposalId + ); assert.equal( organizationProposal.state, constants.WALLET_SCHEME_PROPOSAL_STATES.submitted @@ -1721,7 +1501,7 @@ contract("WalletScheme", function (accounts) { await time.increase(100); - const tx = await masterWalletScheme.proposeCalls( + const tx = await avatarScheme.proposeCalls( [wallet.address, wallet.address, org.controller.address], ["0x0", payCallData, callDataMintRep], [constants.TEST_VALUE, 0, 0], @@ -1755,8 +1535,9 @@ contract("WalletScheme", function (accounts) { constants.TEST_VALUE ); - const organizationProposal = - await masterWalletScheme.getOrganizationProposal(proposalId); + const organizationProposal = await avatarScheme.getOrganizationProposal( + proposalId + ); assert.equal( organizationProposal.state, constants.WALLET_SCHEME_PROPOSAL_STATES.executionSuccedd @@ -1804,7 +1585,7 @@ contract("WalletScheme", function (accounts) { it("MasterWalletScheme - cannot initialize twice", async function () { await expectRevert( - masterWalletScheme.initialize( + avatarScheme.initialize( org.avatar.address, accounts[0], org.controller.address, @@ -1821,7 +1602,7 @@ contract("WalletScheme", function (accounts) { await expectRevert( web3.eth.sendTransaction({ from: accounts[0], - to: masterWalletScheme.address, + to: avatarScheme.address, value: constants.TEST_VALUE, }), "Cant receive if it will make generic calls to avatar" @@ -1831,15 +1612,15 @@ contract("WalletScheme", function (accounts) { it("QuickWalletScheme can receive value in contract", async function () { await web3.eth.sendTransaction({ from: accounts[0], - to: quickWalletScheme.address, + to: walletScheme.address, value: constants.TEST_VALUE, }); }); it("QuickWalletScheme - proposal with data - negative decision - proposal rejected", async function () { - const callData = helpers.testCallFrom(quickWalletScheme.address); + const callData = helpers.testCallFrom(walletScheme.address); - let tx = await quickWalletScheme.proposeCalls( + let tx = await walletScheme.proposeCalls( [actionMock.address], [callData], [0], @@ -1857,8 +1638,9 @@ contract("WalletScheme", function (accounts) { const stateChangeEvent = helpers.getEventFromTx(tx, "ProposalStateChange"); assert.equal(stateChangeEvent.args._state, 2); - const organizationProposal = - await quickWalletScheme.getOrganizationProposal(proposalId); + const organizationProposal = await walletScheme.getOrganizationProposal( + proposalId + ); assert.equal( organizationProposal.state, constants.WALLET_SCHEME_PROPOSAL_STATES.rejected @@ -1869,9 +1651,9 @@ contract("WalletScheme", function (accounts) { }); it("QuickWalletScheme - proposal with data - positive decision - proposal executed", async function () { - const callData = helpers.testCallFrom(quickWalletScheme.address); + const callData = helpers.testCallFrom(walletScheme.address); - const tx = await quickWalletScheme.proposeCalls( + const tx = await walletScheme.proposeCalls( [actionMock.address], [callData], [0], @@ -1887,8 +1669,9 @@ contract("WalletScheme", function (accounts) { { from: accounts[2] } ); - const organizationProposal = - await quickWalletScheme.getOrganizationProposal(proposalId); + const organizationProposal = await walletScheme.getOrganizationProposal( + proposalId + ); assert.equal( organizationProposal.state, constants.WALLET_SCHEME_PROPOSAL_STATES.executionSuccedd @@ -1903,17 +1686,17 @@ contract("WalletScheme", function (accounts) { var wallet = await Wallet.new(); await web3.eth.sendTransaction({ from: accounts[0], - to: quickWalletScheme.address, + to: walletScheme.address, value: constants.TEST_VALUE, }); - await wallet.transferOwnership(quickWalletScheme.address); + await wallet.transferOwnership(walletScheme.address); const payCallData = await new web3.eth.Contract(wallet.abi).methods .pay(accounts[1]) .encodeABI(); await permissionRegistry.setETHPermission( - quickWalletScheme.address, + walletScheme.address, wallet.address, payCallData.substring(0, 10), constants.TEST_VALUE, @@ -1921,7 +1704,7 @@ contract("WalletScheme", function (accounts) { ); await time.increase(100); - const tx = await quickWalletScheme.proposeCalls( + const tx = await walletScheme.proposeCalls( [wallet.address, wallet.address], ["0x0", payCallData], [constants.TEST_VALUE, 0], @@ -1931,7 +1714,7 @@ contract("WalletScheme", function (accounts) { true; const proposalId = await helpers.getValueFromLogs(tx, "_proposalId"); assert.equal( - await web3.eth.getBalance(quickWalletScheme.address), + await web3.eth.getBalance(walletScheme.address), constants.TEST_VALUE ); assert.equal(await web3.eth.getBalance(wallet.address), 0); @@ -1943,15 +1726,16 @@ contract("WalletScheme", function (accounts) { constants.NULL_ADDRESS, { from: accounts[2] } ); - assert.equal(await web3.eth.getBalance(quickWalletScheme.address), 0); + assert.equal(await web3.eth.getBalance(walletScheme.address), 0); assert.equal(await web3.eth.getBalance(wallet.address), 0); assert.equal( await web3.eth.getBalance(accounts[1]), Number(balanceBeforePay) + constants.TEST_VALUE ); - const organizationProposal = - await quickWalletScheme.getOrganizationProposal(proposalId); + const organizationProposal = await walletScheme.getOrganizationProposal( + proposalId + ); assert.equal( organizationProposal.state, constants.WALLET_SCHEME_PROPOSAL_STATES.executionSuccedd @@ -1967,7 +1751,7 @@ contract("WalletScheme", function (accounts) { it("QuickWalletScheme - proposal with data - positive decision - proposal execution fail and timeout", async () => { const callData = helpers.testCallFrom(constants.NULL_ADDRESS); - let tx = await quickWalletScheme.proposeCalls( + let tx = await walletScheme.proposeCalls( [actionMock.address], [callData], [0], @@ -1984,7 +1768,7 @@ contract("WalletScheme", function (accounts) { ); assert.equal( - (await quickWalletScheme.getOrganizationProposal(proposalId)).state, + (await walletScheme.getOrganizationProposal(proposalId)).state, constants.WALLET_SCHEME_PROPOSAL_STATES.submitted ); @@ -1999,7 +1783,7 @@ contract("WalletScheme", function (accounts) { ); assert.equal( - (await quickWalletScheme.getOrganizationProposal(proposalId)).state, + (await walletScheme.getOrganizationProposal(proposalId)).state, constants.WALLET_SCHEME_PROPOSAL_STATES.executionTimeout ); }); @@ -2007,10 +1791,10 @@ contract("WalletScheme", function (accounts) { // eslint-disable-next-line max-len it("QuickWalletScheme - proposal with data - positive decision - proposal executed without return value", async function () { const callData = helpers.testCallWithoutReturnValueFrom( - quickWalletScheme.address + walletScheme.address ); - let tx = await quickWalletScheme.proposeCalls( + let tx = await walletScheme.proposeCalls( [actionMock.address], [callData], [0], @@ -2030,8 +1814,9 @@ contract("WalletScheme", function (accounts) { const returnValues = executionEvent.args._callsDataResult[0]; assert.equal(returnValues, "0x"); - const organizationProposal = - await quickWalletScheme.getOrganizationProposal(proposalId); + const organizationProposal = await walletScheme.getOrganizationProposal( + proposalId + ); assert.equal( organizationProposal.state, constants.WALLET_SCHEME_PROPOSAL_STATES.executionSuccedd @@ -2049,7 +1834,7 @@ contract("WalletScheme", function (accounts) { .burnReputation(constants.TEST_VALUE, accounts[4], org.avatar.address) .encodeABI(); - var tx = await quickWalletScheme.proposeCalls( + var tx = await walletScheme.proposeCalls( [org.controller.address], [callDataMintRep], [0], @@ -2057,7 +1842,7 @@ contract("WalletScheme", function (accounts) { constants.NULL_HASH ); const proposalIdMintRep = await helpers.getValueFromLogs(tx, "_proposalId"); - tx = await quickWalletScheme.proposeCalls( + tx = await walletScheme.proposeCalls( [org.controller.address], [callDataBurnRep], [0], @@ -2093,7 +1878,7 @@ contract("WalletScheme", function (accounts) { // eslint-disable-next-line max-len it("QuickWalletScheme - proposals adding/removing schemes - should fail on registerScheme & removeScheme", async function () { await permissionRegistry.setETHPermission( - quickWalletScheme.address, + walletScheme.address, org.controller.address, web3.eth.abi.encodeFunctionSignature( "registerScheme(address,bytes32,bytes4,address)" @@ -2102,7 +1887,7 @@ contract("WalletScheme", function (accounts) { true ); await permissionRegistry.setETHPermission( - quickWalletScheme.address, + walletScheme.address, org.controller.address, web3.eth.abi.encodeFunctionSignature("unregisterScheme(address,address)"), 0, @@ -2118,10 +1903,10 @@ contract("WalletScheme", function (accounts) { ) .encodeABI(); const callDataRemoveScheme = await org.controller.contract.methods - .unregisterScheme(masterWalletScheme.address, org.avatar.address) + .unregisterScheme(avatarScheme.address, org.avatar.address) .encodeABI(); - var tx = await quickWalletScheme.proposeCalls( + var tx = await walletScheme.proposeCalls( [org.controller.address], [callDataRegisterScheme], [0], @@ -2132,7 +1917,7 @@ contract("WalletScheme", function (accounts) { tx, "_proposalId" ); - tx = await quickWalletScheme.proposeCalls( + tx = await walletScheme.proposeCalls( [org.controller.address], [callDataRemoveScheme], [0], @@ -2156,8 +1941,7 @@ contract("WalletScheme", function (accounts) { "call execution failed" ); assert.equal( - (await quickWalletScheme.getOrganizationProposal(proposalIdAddScheme)) - .state, + (await walletScheme.getOrganizationProposal(proposalIdAddScheme)).state, constants.WALLET_SCHEME_PROPOSAL_STATES.submitted ); @@ -2180,14 +1964,12 @@ contract("WalletScheme", function (accounts) { "call execution failed" ); assert.equal( - (await quickWalletScheme.getOrganizationProposal(proposalIdRemoveScheme)) + (await walletScheme.getOrganizationProposal(proposalIdRemoveScheme)) .state, constants.WALLET_SCHEME_PROPOSAL_STATES.submitted ); - const removedScheme = await org.controller.schemes( - masterWalletScheme.address - ); + const removedScheme = await org.controller.schemes(avatarScheme.address); assert.equal(removedScheme.paramsHash, votingMachine.params); assert.equal(removedScheme.permissions, "0x00000011"); @@ -2200,8 +1982,7 @@ contract("WalletScheme", function (accounts) { { from: accounts[2] } ); assert.equal( - (await quickWalletScheme.getOrganizationProposal(proposalIdAddScheme)) - .state, + (await walletScheme.getOrganizationProposal(proposalIdAddScheme)).state, constants.WALLET_SCHEME_PROPOSAL_STATES.executionTimeout ); @@ -2213,7 +1994,7 @@ contract("WalletScheme", function (accounts) { { from: accounts[2] } ); assert.equal( - (await quickWalletScheme.getOrganizationProposal(proposalIdRemoveScheme)) + (await walletScheme.getOrganizationProposal(proposalIdRemoveScheme)) .state, constants.WALLET_SCHEME_PROPOSAL_STATES.executionTimeout ); @@ -2221,12 +2002,12 @@ contract("WalletScheme", function (accounts) { // eslint-disable-next-line max-len it("QuickWalletScheme - positive decision - proposal executed - allowed by permission registry from scheme", async function () { - const callData = helpers.testCallFrom(quickWalletScheme.address); + const callData = helpers.testCallFrom(walletScheme.address); assert.notEqual( ( await permissionRegistry.getETHPermission( - quickWalletScheme.address, + walletScheme.address, actionMock.address, callData.substring(0, 10) ) @@ -2235,7 +2016,7 @@ contract("WalletScheme", function (accounts) { ); await permissionRegistry.setETHPermission( - quickWalletScheme.address, + walletScheme.address, actionMock.address, callData.substring(0, 10), 0, @@ -2245,7 +2026,7 @@ contract("WalletScheme", function (accounts) { assert.equal( ( await permissionRegistry.getETHPermission( - quickWalletScheme.address, + walletScheme.address, actionMock.address, callData.substring(0, 10) ) @@ -2257,7 +2038,7 @@ contract("WalletScheme", function (accounts) { PermissionRegistry.abi ).methods .setETHPermission( - quickWalletScheme.address, + walletScheme.address, actionMock.address, callData.substring(0, 10), constants.MAX_UINT_256, @@ -2268,7 +2049,7 @@ contract("WalletScheme", function (accounts) { await time.increase(1); // Proposal to allow calling actionMock - const tx = await quickWalletScheme.proposeCalls( + const tx = await walletScheme.proposeCalls( [permissionRegistry.address], [setPermissionData], [0], @@ -2288,7 +2069,7 @@ contract("WalletScheme", function (accounts) { assert.equal( ( await permissionRegistry.getETHPermission( - quickWalletScheme.address, + walletScheme.address, actionMock.address, callData.substring(0, 10) ) @@ -2298,7 +2079,7 @@ contract("WalletScheme", function (accounts) { await time.increase(1); - const tx2 = await quickWalletScheme.proposeCalls( + const tx2 = await walletScheme.proposeCalls( [actionMock.address], [callData], [0], @@ -2314,8 +2095,9 @@ contract("WalletScheme", function (accounts) { { from: accounts[2] } ); - const organizationProposal = - await quickWalletScheme.getOrganizationProposal(proposalId2); + const organizationProposal = await walletScheme.getOrganizationProposal( + proposalId2 + ); assert.equal( organizationProposal.state, constants.WALLET_SCHEME_PROPOSAL_STATES.executionSuccedd @@ -2329,10 +2111,10 @@ contract("WalletScheme", function (accounts) { var wallet = await Wallet.new(); await web3.eth.sendTransaction({ from: accounts[0], - to: quickWalletScheme.address, + to: walletScheme.address, value: 100000000, }); - await wallet.transferOwnership(quickWalletScheme.address); + await wallet.transferOwnership(walletScheme.address); const payCallData = await new web3.eth.Contract(wallet.abi).methods .pay(accounts[1]) @@ -2342,14 +2124,14 @@ contract("WalletScheme", function (accounts) { .encodeABI(); await permissionRegistry.setETHPermission( - quickWalletScheme.address, + walletScheme.address, wallet.address, payCallData.substring(0, 10), constants.TEST_VALUE, true ); - let tx = await quickWalletScheme.proposeCalls( + let tx = await walletScheme.proposeCalls( [wallet.address, wallet.address, org.controller.address], ["0x0", payCallData, callDataMintRep], [constants.TEST_VALUE, 0, 0], @@ -2357,10 +2139,7 @@ contract("WalletScheme", function (accounts) { constants.SOME_HASH ); const proposalId = await helpers.getValueFromLogs(tx, "_proposalId"); - assert.equal( - await web3.eth.getBalance(quickWalletScheme.address), - 100000000 - ); + assert.equal(await web3.eth.getBalance(walletScheme.address), 100000000); assert.equal(await web3.eth.getBalance(wallet.address), 0); assert.equal(await org.reputation.balanceOf(accounts[4]), 0); @@ -2394,8 +2173,9 @@ contract("WalletScheme", function (accounts) { constants.TEST_VALUE ); - const organizationProposal = - await quickWalletScheme.getOrganizationProposal(proposalId); + const organizationProposal = await walletScheme.getOrganizationProposal( + proposalId + ); assert.equal( organizationProposal.state, constants.WALLET_SCHEME_PROPOSAL_STATES.executionSuccedd @@ -2429,13 +2209,13 @@ contract("WalletScheme", function (accounts) { const addERC20LimitData = new web3.eth.Contract( PermissionRegistry.abi ).methods - .addERC20Limit(masterWalletScheme.address, testToken.address, 100, 0) + .addERC20Limit(avatarScheme.address, testToken.address, 100, 0) .encodeABI(); await time.increase(1); // Proposal to allow calling actionMock - const tx = await masterWalletScheme.proposeCalls( + const tx = await avatarScheme.proposeCalls( [permissionRegistry.address], [addERC20LimitData], [0], @@ -2452,7 +2232,7 @@ contract("WalletScheme", function (accounts) { ); const erc20TransferPermission = await permissionRegistry.getERC20Limit( - masterWalletScheme.address, + avatarScheme.address, testToken.address ); @@ -2465,7 +2245,7 @@ contract("WalletScheme", function (accounts) { .encodeABI(); assert.equal(await testToken.balanceOf(org.avatar.address), "200"); - const tx2 = await masterWalletScheme.proposeCalls( + const tx2 = await avatarScheme.proposeCalls( [testToken.address], [transferData], [0], @@ -2482,8 +2262,9 @@ contract("WalletScheme", function (accounts) { ); assert.equal(await testToken.balanceOf(org.avatar.address), "150"); - const organizationProposal = - await masterWalletScheme.getOrganizationProposal(proposalId2); + const organizationProposal = await avatarScheme.getOrganizationProposal( + proposalId2 + ); assert.equal( organizationProposal.state, constants.WALLET_SCHEME_PROPOSAL_STATES.executionSuccedd @@ -2523,7 +2304,7 @@ contract("WalletScheme", function (accounts) { .transfer(actionMock.address, "101") .encodeABI(); - const tx = await masterWalletScheme.proposeCalls( + const tx = await avatarScheme.proposeCalls( [testToken.address], [transferData], [0], @@ -2539,7 +2320,7 @@ contract("WalletScheme", function (accounts) { ); assert.equal( - (await masterWalletScheme.getOrganizationProposal(proposalId)).state, + (await avatarScheme.getOrganizationProposal(proposalId)).state, constants.WALLET_SCHEME_PROPOSAL_STATES.submitted ); @@ -2553,26 +2334,26 @@ contract("WalletScheme", function (accounts) { ); assert.equal( - (await masterWalletScheme.getOrganizationProposal(proposalId)).state, + (await avatarScheme.getOrganizationProposal(proposalId)).state, constants.WALLET_SCHEME_PROPOSAL_STATES.executionTimeout ); }); // eslint-disable-next-line max-len it("QuickWalletScheme - positive decision - proposal executed - not allowed ERC20 value by permission registry in multiple calls", async function () { - await testToken.transfer(quickWalletScheme.address, 200, { + await testToken.transfer(walletScheme.address, 200, { from: accounts[1], }); await permissionRegistry.setETHPermission( - quickWalletScheme.address, + walletScheme.address, testToken.address, web3.eth.abi.encodeFunctionSignature("transfer(address,uint256)"), 0, true ); await permissionRegistry.addERC20Limit( - quickWalletScheme.address, + walletScheme.address, testToken.address, 100, 0 @@ -2580,7 +2361,7 @@ contract("WalletScheme", function (accounts) { assert.equal( await permissionRegistry.getERC20Limit( - quickWalletScheme.address, + walletScheme.address, testToken.address ), 100 @@ -2590,7 +2371,7 @@ contract("WalletScheme", function (accounts) { .transfer(actionMock.address, "101") .encodeABI(); - const tx = await quickWalletScheme.proposeCalls( + const tx = await walletScheme.proposeCalls( [testToken.address], [transferData], [0], @@ -2606,7 +2387,7 @@ contract("WalletScheme", function (accounts) { ); assert.equal( - (await quickWalletScheme.getOrganizationProposal(proposalId)).state, + (await walletScheme.getOrganizationProposal(proposalId)).state, constants.WALLET_SCHEME_PROPOSAL_STATES.submitted ); @@ -2621,7 +2402,7 @@ contract("WalletScheme", function (accounts) { ); assert.equal( - (await quickWalletScheme.getOrganizationProposal(proposalId)).state, + (await walletScheme.getOrganizationProposal(proposalId)).state, constants.WALLET_SCHEME_PROPOSAL_STATES.executionTimeout ); }); @@ -2640,7 +2421,7 @@ contract("WalletScheme", function (accounts) { .encodeABI(); await expectRevert( - masterWalletScheme.proposeCalls( + avatarScheme.proposeCalls( [testToken.address], [transferData], [1], @@ -2653,12 +2434,12 @@ contract("WalletScheme", function (accounts) { // eslint-disable-next-line max-len it("QuickWalletScheme - positive decision - proposal executed - ERC20 transfer allowed by permission registry from scheme", async function () { - await testToken.transfer(quickWalletScheme.address, 200, { + await testToken.transfer(walletScheme.address, 200, { from: accounts[1], }); await permissionRegistry.setETHPermission( - quickWalletScheme.address, + walletScheme.address, testToken.address, web3.eth.abi.encodeFunctionSignature("transfer(address,uint256)"), 0, @@ -2668,11 +2449,11 @@ contract("WalletScheme", function (accounts) { const addERC20LimitData = new web3.eth.Contract( PermissionRegistry.abi ).methods - .addERC20Limit(quickWalletScheme.address, testToken.address, 100, 0) + .addERC20Limit(walletScheme.address, testToken.address, 100, 0) .encodeABI(); // Proposal to allow calling actionMock - const tx = await quickWalletScheme.proposeCalls( + const tx = await walletScheme.proposeCalls( [permissionRegistry.address], [addERC20LimitData], [0], @@ -2690,7 +2471,7 @@ contract("WalletScheme", function (accounts) { assert.equal( await permissionRegistry.getERC20Limit( - quickWalletScheme.address, + walletScheme.address, testToken.address ), 100 @@ -2700,9 +2481,9 @@ contract("WalletScheme", function (accounts) { const transferData = await new web3.eth.Contract(testToken.abi).methods .transfer(actionMock.address, "50") .encodeABI(); - assert.equal(await testToken.balanceOf(quickWalletScheme.address), "200"); + assert.equal(await testToken.balanceOf(walletScheme.address), "200"); - const tx2 = await quickWalletScheme.proposeCalls( + const tx2 = await walletScheme.proposeCalls( [testToken.address], [transferData], [0], @@ -2718,10 +2499,11 @@ contract("WalletScheme", function (accounts) { constants.NULL_ADDRESS, { from: accounts[2] } ); - assert.equal(await testToken.balanceOf(quickWalletScheme.address), "150"); + assert.equal(await testToken.balanceOf(walletScheme.address), "150"); - const organizationProposal = - await quickWalletScheme.getOrganizationProposal(proposalId2); + const organizationProposal = await walletScheme.getOrganizationProposal( + proposalId2 + ); assert.equal( organizationProposal.state, constants.WALLET_SCHEME_PROPOSAL_STATES.executionSuccedd From 749a9d416103bfc2630e0a01c2e59a946024d352 Mon Sep 17 00:00:00 2001 From: AugustoL Date: Sun, 25 Sep 2022 10:33:54 -0300 Subject: [PATCH 30/33] refactor(contracts/dao): final refactor to Schemes contracts --- contracts/dao/schemes/AvatarScheme.sol | 26 +++++++++++++- contracts/dao/schemes/Scheme.sol | 35 ++++++++----------- contracts/dao/schemes/WalletScheme.sol | 24 ++++++++++++- .../DXDVotingMachineCallbacks.sol | 11 +++--- 4 files changed, 67 insertions(+), 29 deletions(-) diff --git a/contracts/dao/schemes/AvatarScheme.sol b/contracts/dao/schemes/AvatarScheme.sol index d62cb1d7..9efd34fd 100644 --- a/contracts/dao/schemes/AvatarScheme.sol +++ b/contracts/dao/schemes/AvatarScheme.sol @@ -19,9 +19,26 @@ contract AvatarScheme is Scheme { using SafeMath for uint256; using Address for address; + /** + * @dev Set the max amount of seconds that a proposal has to be executed + * only callable from the avatar address + * @param _maxSecondsForExecution New max proposal time in seconds to be used + */ + function setMaxSecondsForExecution(uint256 _maxSecondsForExecution) external override { + require( + msg.sender == address(avatar), + "WalletScheme: setMaxSecondsForExecution is callable only from the avatar" + ); + + require( + _maxSecondsForExecution >= 86400, + "WalletScheme: _maxSecondsForExecution cant be less than 86400 seconds" + ); + maxSecondsForExecution = _maxSecondsForExecution; + } + /** * @dev execution of proposals, can only be called by the voting machine in which the vote is held. - REQUIRE FROM "../daostack/votingMachines/ProposalExecuteInterface.sol" DONT REMOVE * @param _proposalId the ID of the voting in the voting machine * @param _winningOption The winning option in the voting machine * @return bool success @@ -116,4 +133,11 @@ contract AvatarScheme is Scheme { executingProposal = false; return true; } + + /** + * @dev Get the scheme type + */ + function getSchemeType() external view override returns (string memory) { + return "AvatarScheme_v1"; + } } diff --git a/contracts/dao/schemes/Scheme.sol b/contracts/dao/schemes/Scheme.sol index afb14f8a..58030f36 100644 --- a/contracts/dao/schemes/Scheme.sol +++ b/contracts/dao/schemes/Scheme.sol @@ -24,12 +24,6 @@ abstract contract Scheme is DXDVotingMachineCallbacks { using SafeMath for uint256; using Address for address; - string public constant SCHEME_TYPE = "Wallet Scheme v1.3"; - bytes4 public constant ERC20_TRANSFER_SIGNATURE = bytes4(keccak256("transfer(address,uint256)")); - bytes4 public constant ERC20_APPROVE_SIGNATURE = bytes4(keccak256("approve(address,uint256)")); - bytes4 public constant SET_MAX_SECONDS_FOR_EXECUTION_SIGNATURE = - bytes4(keccak256("setMaxSecondsForExecution(uint256)")); - enum ProposalState { None, Submitted, @@ -52,7 +46,7 @@ abstract contract Scheme is DXDVotingMachineCallbacks { mapping(bytes32 => Proposal) public proposals; bytes32[] public proposalsList; - DAOController public controller; + DAOAvatar public avatar; PermissionRegistry public permissionRegistry; string public schemeName; uint256 public maxSecondsForExecution; @@ -103,12 +97,11 @@ abstract contract Scheme is DXDVotingMachineCallbacks { * @dev Set the max amount of seconds that a proposal has to be executed, only callable from the avatar address * @param _maxSecondsForExecution New max proposal time in seconds to be used */ - function setMaxSecondsForExecution(uint256 _maxSecondsForExecution) external { + function setMaxSecondsForExecution(uint256 _maxSecondsForExecution) external virtual { require( - msg.sender == address(votingMachine) || msg.sender == address(this), - "WalletScheme: setMaxSecondsForExecution is callable only form the avatar or the scheme" + msg.sender == address(avatar) || msg.sender == address(this), + "WalletScheme: setMaxSecondsForExecution is callable only from the avatar or the scheme" ); - require( _maxSecondsForExecution >= 86400, "WalletScheme: _maxSecondsForExecution cant be less than 86400 seconds" @@ -118,7 +111,6 @@ abstract contract Scheme is DXDVotingMachineCallbacks { /** * @dev execution of proposals, can only be called by the voting machine in which the vote is held. - REQUIRE FROM "../daostack/votingMachines/ProposalExecuteInterface.sol" DONT REMOVE * @param _proposalId the ID of the voting in the voting machine * @param _winningOption The winning option in the voting machine * @return bool success @@ -152,17 +144,10 @@ abstract contract Scheme is DXDVotingMachineCallbacks { for (uint256 i = 0; i < _to.length; i++) { bytes4 callDataFuncSignature = getFuncSignature(_callData[i]); - // Only allow proposing calls to this address to call setMaxSecondsForExecution function - require( - _to[i] != address(this) || - (callDataFuncSignature == SET_MAX_SECONDS_FOR_EXECUTION_SIGNATURE && _value[i] == 0), - "WalletScheme: invalid proposal caller" - ); - // This will fail only when and ERC20 transfer or approve with ETH value is proposed require( - (callDataFuncSignature != ERC20_TRANSFER_SIGNATURE && - callDataFuncSignature != ERC20_APPROVE_SIGNATURE) || _value[i] == 0, + (callDataFuncSignature != bytes4(keccak256("transfer(address,uint256)")) && + callDataFuncSignature != bytes4(keccak256("approve(address,uint256)"))) || _value[i] == 0, "WalletScheme: cant propose ERC20 transfers with value" ); } @@ -221,6 +206,7 @@ abstract contract Scheme is DXDVotingMachineCallbacks { bytes[] memory callData, uint256[] memory value, ProposalState state, + uint256 totalOptions, string memory title, string memory descriptionHash, uint256 submittedTime @@ -231,6 +217,7 @@ abstract contract Scheme is DXDVotingMachineCallbacks { proposals[proposalId].callData, proposals[proposalId].value, proposals[proposalId].state, + proposals[proposalId].totalOptions, proposals[proposalId].title, proposals[proposalId].descriptionHash, proposals[proposalId].submittedTime @@ -249,6 +236,7 @@ abstract contract Scheme is DXDVotingMachineCallbacks { bytes[] memory callData, uint256[] memory value, ProposalState state, + uint256 totalOptions, string memory title, string memory descriptionHash, uint256 submittedTime @@ -282,4 +270,9 @@ abstract contract Scheme is DXDVotingMachineCallbacks { function getOrganizationProposals() external view returns (bytes32[] memory) { return proposalsList; } + + /** + * @dev Get the scheme type + */ + function getSchemeType() external view virtual returns (string memory) {} } diff --git a/contracts/dao/schemes/WalletScheme.sol b/contracts/dao/schemes/WalletScheme.sol index b2bd383a..dd045219 100644 --- a/contracts/dao/schemes/WalletScheme.sol +++ b/contracts/dao/schemes/WalletScheme.sol @@ -24,9 +24,24 @@ contract WalletScheme is Scheme { */ receive() external payable {} + /** + * @dev Set the max amount of seconds that a proposal has to be executed, only callable from the avatar address + * @param _maxSecondsForExecution New max proposal time in seconds to be used + */ + function setMaxSecondsForExecution(uint256 _maxSecondsForExecution) external override { + require( + msg.sender == address(this), + "WalletScheme: setMaxSecondsForExecution is callable only from the scheme" + ); + require( + _maxSecondsForExecution >= 86400, + "WalletScheme: _maxSecondsForExecution cant be less than 86400 seconds" + ); + maxSecondsForExecution = _maxSecondsForExecution; + } + /** * @dev execution of proposals, can only be called by the voting machine in which the vote is held. - REQUIRE FROM "../daostack/votingMachines/ProposalExecuteInterface.sol" DONT REMOVE * @param _proposalId the ID of the voting in the voting machine * @param _winningOption The winning option in the voting machine * @return bool success @@ -106,4 +121,11 @@ contract WalletScheme is Scheme { executingProposal = false; return true; } + + /** + * @dev Get the scheme type + */ + function getSchemeType() external view override returns (string memory) { + return "WalletScheme_v1"; + } } diff --git a/contracts/dao/votingMachine/DXDVotingMachineCallbacks.sol b/contracts/dao/votingMachine/DXDVotingMachineCallbacks.sol index f7e22bde..bb5c612a 100644 --- a/contracts/dao/votingMachine/DXDVotingMachineCallbacks.sol +++ b/contracts/dao/votingMachine/DXDVotingMachineCallbacks.sol @@ -3,14 +3,13 @@ pragma solidity ^0.8.17; import "@openzeppelin/contracts/token/ERC20/IERC20.sol"; import "../DAOController.sol"; -import "../DAOAvatar.sol"; import "../DAOReputation.sol"; import "hardhat/console.sol"; contract DXDVotingMachineCallbacks { address public votingMachine; - DAOAvatar public avatar; + DAOController public controller; modifier onlyVotingMachine() { require(msg.sender == address(votingMachine), "DXDVotingMachineCallbacks: only VotingMachine"); @@ -25,7 +24,7 @@ contract DXDVotingMachineCallbacks { address _beneficiary, bytes32 ) external onlyVotingMachine returns (bool success) { - DAOController(avatar.owner()).mintReputation(_amount, _beneficiary); + controller.mintReputation(_amount, _beneficiary); return success; } @@ -34,7 +33,7 @@ contract DXDVotingMachineCallbacks { address _beneficiary, bytes32 ) external onlyVotingMachine returns (bool success) { - DAOController(avatar.owner()).burnReputation(_amount, _beneficiary); + controller.burnReputation(_amount, _beneficiary); return success; } @@ -44,7 +43,7 @@ contract DXDVotingMachineCallbacks { uint256 _amount, bytes32 ) external onlyVotingMachine returns (bool success) { - (success, ) = DAOController(avatar.owner()).avatarCall( + (success, ) = controller.avatarCall( address(_stakingToken), abi.encodeWithSignature("transferFrom(address,address,uint256)", avatar, _beneficiary, _amount), avatar, @@ -53,7 +52,7 @@ contract DXDVotingMachineCallbacks { } function getReputation() public view returns (DAOReputation) { - return DAOController(avatar.owner()).getDaoReputation(); + return controller.getDaoReputation(); } function getNativeReputationTotalSupply() public view returns (uint256) { From 60278724bbca1e3b1a848d9f88d5bd4dcb8ed31c Mon Sep 17 00:00:00 2001 From: AugustoL Date: Sun, 25 Sep 2022 10:44:26 -0300 Subject: [PATCH 31/33] feat(hardhat): add viaIR compiler setting to improve compile optimization --- hardhat.config.js | 1 + 1 file changed, 1 insertion(+) diff --git a/hardhat.config.js b/hardhat.config.js index 75a29f53..ebbdecdc 100644 --- a/hardhat.config.js +++ b/hardhat.config.js @@ -133,6 +133,7 @@ module.exports = { { version: "0.8.17", settings: { + viaIR: true, optimizer: { enabled: true, runs: 200, From 12142f8145b80bd00137c60a8e4ca94e9abc4916 Mon Sep 17 00:00:00 2001 From: AugustoL Date: Sun, 25 Sep 2022 10:45:29 -0300 Subject: [PATCH 32/33] refactor(contracts/dao): remove staking token callbacks and let voting machine hold staking tokens --- .../dao/votingMachine/DXDVotingMachine.sol | 29 +++++++++---------- .../DXDVotingMachineCallbacks.sol | 18 ------------ 2 files changed, 13 insertions(+), 34 deletions(-) diff --git a/contracts/dao/votingMachine/DXDVotingMachine.sol b/contracts/dao/votingMachine/DXDVotingMachine.sol index 0529b6a6..18d8cba9 100644 --- a/contracts/dao/votingMachine/DXDVotingMachine.sol +++ b/contracts/dao/votingMachine/DXDVotingMachine.sol @@ -220,6 +220,7 @@ contract DXDVotingMachine { IERC20 public stakingToken; address private constant GEN_TOKEN_ADDRESS = 0x543Ff227F64Aa17eA132Bf9886cAb5DB55DCAddf; uint256 private constant MAX_BOOSTED_PROPOSALS = 4096; + address public avatarOwner; // Digest describing the data the user signs according EIP 712. // Needs to match what is passed to Metamask. @@ -273,7 +274,7 @@ contract DXDVotingMachine { /** * @dev Constructor */ - constructor(IERC20 _stakingToken) { + constructor(IERC20 _stakingToken, address _avatarOwner) { //The GEN token (staking token) address is hard coded in the contract by GEN_TOKEN_ADDRESS . //This will work for a network which already hosted the GEN token on this address (e.g mainnet). //If such contract address does not exist in the network (e.g ganache) @@ -286,6 +287,7 @@ contract DXDVotingMachine { } else { stakingToken = _stakingToken; } + avatarOwner = _avatarOwner; } /** @@ -299,6 +301,14 @@ contract DXDVotingMachine { organizationRefunds[msg.sender].balance = organizationRefunds[msg.sender].balance.add(msg.value); } + /** + * @dev Allows the avatarOwner to claim staking tokens from the voting machine + */ + function claimStakingTokens() external { + require(msg.sender == avatarOwner, "DXDVotingMachine: Only avatar owner can claim staking tokens"); + stakingToken.transfer(avatarOwner, stakingToken.balanceOf(address(this))); + } + /** * @dev executeBoosted try to execute a boosted or QuietEndingPeriod proposal if it is expired * it rewards the msg.sender with P % of the proposal's upstakes upon a successful call to this function. @@ -509,23 +519,10 @@ contract DXDVotingMachine { //as staker potentialAmount = (staker.amount4Bounty * proposal.daoBounty) / totalWinningStakes; } - if ( - (potentialAmount != 0) && - (DXDVotingMachineCallbacksInterface(proposal.callbacks).balanceOfStakingToken( - address(stakingToken), - _proposalId - ) >= potentialAmount) - ) { + if ((potentialAmount != 0) && (stakingToken.balanceOf(address(this)) >= potentialAmount)) { staker.amount4Bounty = 0; proposal.daoBountyRemain = proposal.daoBountyRemain.sub(potentialAmount); - require( - DXDVotingMachineCallbacksInterface(proposal.callbacks).stakingTokenTransfer( - address(stakingToken), - _beneficiary, - potentialAmount, - _proposalId - ) - ); + require(stakingToken.transfer(_beneficiary, potentialAmount), "fail transfer of daoBounty"); redeemedAmount = potentialAmount; emit RedeemDaoBounty(_proposalId, organizations[proposal.organizationId], _beneficiary, redeemedAmount); } diff --git a/contracts/dao/votingMachine/DXDVotingMachineCallbacks.sol b/contracts/dao/votingMachine/DXDVotingMachineCallbacks.sol index bb5c612a..d1223a78 100644 --- a/contracts/dao/votingMachine/DXDVotingMachineCallbacks.sol +++ b/contracts/dao/votingMachine/DXDVotingMachineCallbacks.sol @@ -37,20 +37,6 @@ contract DXDVotingMachineCallbacks { return success; } - function stakingTokenTransfer( - IERC20 _stakingToken, - address _beneficiary, - uint256 _amount, - bytes32 - ) external onlyVotingMachine returns (bool success) { - (success, ) = controller.avatarCall( - address(_stakingToken), - abi.encodeWithSignature("transferFrom(address,address,uint256)", avatar, _beneficiary, _amount), - avatar, - 0 - ); - } - function getReputation() public view returns (DAOReputation) { return controller.getDaoReputation(); } @@ -59,10 +45,6 @@ contract DXDVotingMachineCallbacks { return getReputation().totalSupply(); } - function balanceOfStakingToken(IERC20 _stakingToken, bytes32) external view returns (uint256) { - return _stakingToken.balanceOf(address(avatar)); - } - function getTotalReputationSupply(bytes32 _proposalId) external view returns (uint256) { return getReputation().totalSupplyAt(proposalSnapshots[_proposalId]); } From 786da34f16f4d7cb43f1001e244abcc4d3aa8feb Mon Sep 17 00:00:00 2001 From: AugustoL Date: Mon, 26 Sep 2022 09:00:49 -0300 Subject: [PATCH 33/33] test(test/all): change test helpers and test cases to work with new contracts --- test/dao/dxdao.js | 238 ++-- test/dao/schemes/WalletScheme.js | 48 +- test/dao/votingMachines/DXDVotingMachine.js | 1223 +++++++------------ test/dxvote/Utils.js | 200 --- test/erc20guild/ERC20Guild.js | 7 +- test/erc20guild/implementations/DXDGuild.js | 53 +- test/helpers/index.js | 45 +- test/utils/PermissionRegistry.js | 146 +-- 8 files changed, 696 insertions(+), 1264 deletions(-) delete mode 100644 test/dxvote/Utils.js diff --git a/test/dao/dxdao.js b/test/dao/dxdao.js index 01932950..44776d34 100644 --- a/test/dao/dxdao.js +++ b/test/dao/dxdao.js @@ -1,22 +1,28 @@ import { expectRevert } from "@openzeppelin/test-helpers"; import { assert } from "chai"; import * as helpers from "../helpers"; +const moment = require("moment"); +const { time } = require("@openzeppelin/test-helpers"); const PermissionRegistry = artifacts.require("./PermissionRegistry.sol"); const AvatarScheme = artifacts.require("./AvatarScheme.sol"); const ERC20Mock = artifacts.require("./ERC20Mock.sol"); +const ERC721Factory = artifacts.require("./ERC721Factory.sol"); +const ERC20VestingFactory = artifacts.require("./ERC20VestingFactory.sol"); +const TokenVesting = artifacts.require("./TokenVesting.sol"); contract("DXdao", function (accounts) { const constants = helpers.constants; - let dxDao, proposalId, masterAvatarScheme; + let dxDao, + proposalId, + masterAvatarScheme, + nftMinter, + vestingFactory, + votingMachineToken, + vestingStart; beforeEach(async function () { - const votingMachineToken = await ERC20Mock.new( - "DXDao", - "DXD", - 1000, - accounts[0] - ); + votingMachineToken = await ERC20Mock.new("DXDao", "DXD", 1000, accounts[0]); dxDao = await helpers.deployDao({ owner: accounts[0], @@ -33,53 +39,12 @@ contract("DXdao", function (accounts) { from: accounts[0], value: 100, }); + await votingMachineToken.transfer(dxDao.avatar.address, 500, { + from: accounts[0], + }); - // Parameters - const voteOnBehalf = constants.NULL_ADDRESS; - const _queuedVoteRequiredPercentage = 50; - const _queuedVotePeriodLimit = 60; - const _boostedVotePeriodLimit = 60; - const _preBoostedVotePeriodLimit = 0; - const _thresholdConst = 2000; - const _quietEndingPeriod = 0; - const _proposingRepReward = 0; - const _votersReputationLossRatio = 10; - const _minimumDaoBounty = 15; - const _daoBountyConst = 10; - const _activationTime = 0; - - await dxDao.votingMachine.setParameters( - [ - _queuedVoteRequiredPercentage, - _queuedVotePeriodLimit, - _boostedVotePeriodLimit, - _preBoostedVotePeriodLimit, - _thresholdConst, - _quietEndingPeriod, - _proposingRepReward, - _votersReputationLossRatio, - _minimumDaoBounty, - _daoBountyConst, - _activationTime, - ], - voteOnBehalf - ); - - const paramsHash = await dxDao.votingMachine.getParametersHash( - [ - _queuedVoteRequiredPercentage, - _queuedVotePeriodLimit, - _boostedVotePeriodLimit, - _preBoostedVotePeriodLimit, - _thresholdConst, - _quietEndingPeriod, - _proposingRepReward, - _votersReputationLossRatio, - _minimumDaoBounty, - _daoBountyConst, - _activationTime, - ], - voteOnBehalf + const defaultParamsHash = await helpers.setDefaultParameters( + dxDao.votingMachine ); const permissionRegistry = await PermissionRegistry.new( @@ -88,14 +53,6 @@ contract("DXdao", function (accounts) { ); await permissionRegistry.initialize(); - await permissionRegistry.setETHPermission( - dxDao.avatar.address, - constants.NULL_ADDRESS, - constants.NULL_SIGNATURE, - 10, - true - ); - masterAvatarScheme = await AvatarScheme.new(); await masterAvatarScheme.initialize( @@ -110,21 +67,98 @@ contract("DXdao", function (accounts) { await dxDao.controller.registerScheme( masterAvatarScheme.address, - paramsHash, + defaultParamsHash, true, true ); - const createProposalTx = await masterAvatarScheme.proposeCalls( - [accounts[1], accounts[1]], - ["0x0", "0x0"], - [10, 5], + nftMinter = await ERC721Factory.new("DXDAO NFT", "DXNFT", { + from: accounts[0], + }); + await nftMinter.transferOwnership(dxDao.avatar.address); + vestingFactory = await ERC20VestingFactory.new( + votingMachineToken.address, + dxDao.avatar.address + ); + + const approveToVestingFactoryData = web3.eth.abi.encodeFunctionCall( + votingMachineToken.abi.find(x => x.name === "approve"), + [vestingFactory.address, constants.MAX_UINT_256] + ); + vestingStart = moment().unix(); + + const createVestingData = web3.eth.abi.encodeFunctionCall( + vestingFactory.abi.find(x => x.name === "create"), + [ + accounts[3], + vestingStart, + moment.duration(1, "years").asSeconds(), + moment.duration(2, "years").asSeconds(), + 500, + ] + ); + + const mintNFTData = web3.eth.abi.encodeFunctionCall( + nftMinter.abi.find(x => x.name === "mint"), + [accounts[3], "tokenURIHere"] + ); + + await permissionRegistry.addERC20Limit( + dxDao.avatar.address, + votingMachineToken.address, + constants.MAX_UINT_256, + 0 + ); + + await permissionRegistry.setETHPermission( + dxDao.avatar.address, + votingMachineToken.address, + approveToVestingFactoryData.substring(0, 10), + 0, + true + ); + + await permissionRegistry.setETHPermission( + dxDao.avatar.address, + vestingFactory.address, + createVestingData.substring(0, 10), + 0, + true + ); + + await permissionRegistry.setETHPermission( + dxDao.avatar.address, + nftMinter.address, + mintNFTData.substring(0, 10), + 0, + true + ); + + await permissionRegistry.setETHPermission( + dxDao.avatar.address, + constants.NULL_ADDRESS, + constants.NULL_SIGNATURE, + 10, + true + ); + + await time.increase(30); + + const tx = await masterAvatarScheme.proposeCalls( + [ + votingMachineToken.address, + vestingFactory.address, + nftMinter.address, + accounts[3], + ], + [approveToVestingFactoryData, createVestingData, mintNFTData, "0x0"], + [0, 0, 0, 5], 2, - "Test Proposal", - constants.NULL_HASH + constants.TEST_TITLE, + constants.SOME_HASH ); - proposalId = createProposalTx.logs[0].args._proposalId; + proposalId = await helpers.getValueFromLogs(tx, "_proposalId"); const activeProposals = await dxDao.controller.getActiveProposals(); assert.equal(activeProposals[0].proposalId, proposalId); @@ -149,39 +183,85 @@ contract("DXdao", function (accounts) { assert.equal(await web3.eth.getBalance(dxDao.avatar.address), "100"); }); - it("Wallet - execute proposeVote -option 1 - check action - with DXDVotingMachine", async function () { + it("Wallet - execute proposeVote -option 2 - check action - with DXDVotingMachine", async function () { assert.equal(await web3.eth.getBalance(dxDao.avatar.address), "100"); - await dxDao.votingMachine.vote(proposalId, 1, 0, constants.NULL_ADDRESS, { + await dxDao.votingMachine.vote(proposalId, 2, 0, constants.NULL_ADDRESS, { from: accounts[2], }); assert.equal( (await masterAvatarScheme.getOrganizationProposal(proposalId)).state, - 3 + 2 ); const inactiveProposals = await dxDao.controller.getInactiveProposals(); assert.equal(inactiveProposals[0].proposalId, proposalId); assert.equal(inactiveProposals[0].scheme, masterAvatarScheme.address); assert.deepEqual(await dxDao.controller.getActiveProposals(), []); - assert.equal(await web3.eth.getBalance(dxDao.avatar.address), "90"); + assert.equal(await web3.eth.getBalance(dxDao.avatar.address), "100"); }); - it("Wallet - execute proposeVote -option 2 - check action - with DXDVotingMachine", async function () { + it("Wallet - execute proposeVote -option 1 - check action - with DXDVotingMachine", async function () { assert.equal(await web3.eth.getBalance(dxDao.avatar.address), "100"); - await dxDao.votingMachine.vote(proposalId, 2, 0, constants.NULL_ADDRESS, { - from: accounts[2], - }); + const executionProposalTx = await dxDao.votingMachine.vote( + proposalId, + 1, + 0, + constants.NULL_ADDRESS, + { + from: accounts[2], + } + ); assert.equal( (await masterAvatarScheme.getOrganizationProposal(proposalId)).state, - 2 + 3 ); const inactiveProposals = await dxDao.controller.getInactiveProposals(); assert.equal(inactiveProposals[0].proposalId, proposalId); assert.equal(inactiveProposals[0].scheme, masterAvatarScheme.address); assert.deepEqual(await dxDao.controller.getActiveProposals(), []); - assert.equal(await web3.eth.getBalance(dxDao.avatar.address), "100"); + assert.equal(await web3.eth.getBalance(dxDao.avatar.address), "95"); + + const executionTxEvents = helpers.logDecoder.decodeLogs( + executionProposalTx.receipt.rawLogs + ); + const vestingCreatedEvent = executionTxEvents.find( + event => + event.name === "VestingCreated" && + web3.utils.toChecksumAddress(event.address) === vestingFactory.address + ); + const nftMintedEvent = executionTxEvents.find( + event => + event.name === "Transfer" && + web3.utils.toChecksumAddress(event.address) === nftMinter.address + ); + const vestingContract = await TokenVesting.at( + vestingCreatedEvent.args.vestingContractAddress + ); + assert.equal( + await nftMinter.ownerOf(nftMintedEvent.args.tokenId), + accounts[3] + ); + assert.equal( + await nftMinter.tokenURI(nftMintedEvent.args.tokenId), + "tokenURIHere" + ); + assert.equal(await vestingContract.start(), vestingStart); + assert.equal( + (await vestingContract.cliff()).toNumber(), + vestingStart + moment.duration(1, "years").asSeconds() + ); + assert.equal( + (await vestingContract.duration()).toNumber(), + moment.duration(2, "years").asSeconds() + ); + assert.equal(await vestingContract.revocable(), true); + assert.equal(await vestingContract.beneficiary(), accounts[3]); + assert.equal( + await votingMachineToken.balanceOf(vestingContract.address), + 500 + ); }); }); diff --git a/test/dao/schemes/WalletScheme.js b/test/dao/schemes/WalletScheme.js index f629f58b..1b7b1cdf 100644 --- a/test/dao/schemes/WalletScheme.js +++ b/test/dao/schemes/WalletScheme.js @@ -40,52 +40,8 @@ contract("WalletScheme", function (accounts) { ], }); - // Parameters - const voteOnBehalf = constants.NULL_ADDRESS; - const _queuedVoteRequiredPercentage = 50; - const _queuedVotePeriodLimit = 172800; - const _boostedVotePeriodLimit = 86400; - const _preBoostedVotePeriodLimit = 3600; - const _thresholdConst = 2000; - const _quietEndingPeriod = 0; - const _proposingRepReward = 0; - const _votersReputationLossRatio = 10; - const _minimumDaoBounty = 15; - const _daoBountyConst = 10; - const _activationTime = 0; - - await org.votingMachine.setParameters( - [ - _queuedVoteRequiredPercentage, - _queuedVotePeriodLimit, - _boostedVotePeriodLimit, - _preBoostedVotePeriodLimit, - _thresholdConst, - _quietEndingPeriod, - _proposingRepReward, - _votersReputationLossRatio, - _minimumDaoBounty, - _daoBountyConst, - _activationTime, - ], - voteOnBehalf - ); - - defaultParamsHash = await org.votingMachine.getParametersHash( - [ - _queuedVoteRequiredPercentage, - _queuedVotePeriodLimit, - _boostedVotePeriodLimit, - _preBoostedVotePeriodLimit, - _thresholdConst, - _quietEndingPeriod, - _proposingRepReward, - _votersReputationLossRatio, - _minimumDaoBounty, - _daoBountyConst, - _activationTime, - ], - voteOnBehalf + const defaultParamsHash = await helpers.setDefaultParameters( + org.votingMachine ); permissionRegistry = await PermissionRegistry.new(accounts[0], 30); diff --git a/test/dao/votingMachines/DXDVotingMachine.js b/test/dao/votingMachines/DXDVotingMachine.js index b799a8be..0ce8740e 100644 --- a/test/dao/votingMachines/DXDVotingMachine.js +++ b/test/dao/votingMachines/DXDVotingMachine.js @@ -1,3 +1,4 @@ +import { web3 } from "@openzeppelin/test-helpers/src/setup"; import * as helpers from "../../helpers"; const { fixSignature } = require("../../helpers/sign"); @@ -11,17 +12,17 @@ const { const PermissionRegistry = artifacts.require("./PermissionRegistry.sol"); const WalletScheme = artifacts.require("./WalletScheme.sol"); +const AvatarScheme = artifacts.require("./AvatarScheme.sol"); const ERC20Mock = artifacts.require("./ERC20Mock.sol"); const ActionMock = artifacts.require("./ActionMock.sol"); const DXDVotingMachine = artifacts.require("./DXDVotingMachine.sol"); contract("DXDVotingMachine", function (accounts) { let permissionRegistry, - expensiveVoteWalletScheme, - cheapVoteWalletScheme, + masterAvatarScheme, + registrarScheme, org, actionMock, - genVotingMachine, dxdVotingMachine, proposalId; @@ -29,12 +30,6 @@ contract("DXDVotingMachine", function (accounts) { const VOTE_GAS = 360000; const TOTAL_GAS_REFUND = VOTE_GAS * constants.GAS_PRICE; - function testCallFrom(address) { - return new web3.eth.Contract(ActionMock.abi).methods - .test(address, 1) - .encodeABI(); - } - beforeEach(async function () { actionMock = await ActionMock.new(); const standardTokenMock = await ERC20Mock.new( @@ -44,47 +39,22 @@ contract("DXDVotingMachine", function (accounts) { accounts[1] ); await standardTokenMock.transfer(accounts[0], 2000, { from: accounts[1] }); - org = await helpers.setupOrganization( - [accounts[0], accounts[1], accounts[2], accounts[3]], - [0, 0, 0, 0], - [10000, 10000, 10000, 70000] - ); - genVotingMachine = await helpers.setUpVotingMachine( - standardTokenMock.address, - "gen", - constants.NULL_ADDRESS - ); - await standardTokenMock.approve( - genVotingMachine.contract.address, - constants.MAX_UINT_256, - { - from: accounts[1], - } - ); + org = await helpers.deployDao({ + owner: accounts[0], + votingMachineToken: standardTokenMock.address, + repHolders: [ + { address: accounts[0], amount: 10000 }, + { address: accounts[1], amount: 10000 }, + { address: accounts[2], amount: 10000 }, + { address: accounts[3], amount: 70000 }, + ], + }); - await standardTokenMock.approve( - genVotingMachine.contract.address, - constants.MAX_UINT_256, - { - from: accounts[0], - } - ); + dxdVotingMachine = org.votingMachine; await standardTokenMock.approve( - genVotingMachine.contract.address, - constants.MAX_UINT_256, - { - from: accounts[2], - } - ); - dxdVotingMachine = await helpers.setUpVotingMachine( - standardTokenMock.address, - "dxd", - constants.NULL_ADDRESS - ); - await standardTokenMock.approve( - dxdVotingMachine.contract.address, + dxdVotingMachine.address, constants.MAX_UINT_256, { from: accounts[1], @@ -92,7 +62,7 @@ contract("DXDVotingMachine", function (accounts) { ); await standardTokenMock.approve( - dxdVotingMachine.contract.address, + dxdVotingMachine.address, constants.MAX_UINT_256, { from: accounts[0], @@ -100,7 +70,7 @@ contract("DXDVotingMachine", function (accounts) { ); await standardTokenMock.approve( - dxdVotingMachine.contract.address, + dxdVotingMachine.address, constants.MAX_UINT_256, { from: accounts[2], @@ -111,55 +81,43 @@ contract("DXDVotingMachine", function (accounts) { await time.increase(10); - expensiveVoteWalletScheme = await WalletScheme.new(); - await expensiveVoteWalletScheme.initialize( + masterAvatarScheme = await AvatarScheme.new(); + await masterAvatarScheme.initialize( org.avatar.address, - genVotingMachine.address, - true, + dxdVotingMachine.address, org.controller.address, permissionRegistry.address, - "Expensive Scheme", + "Cheap Scheme", 172800, 5 ); - cheapVoteWalletScheme = await WalletScheme.new(); - await cheapVoteWalletScheme.initialize( + registrarScheme = await WalletScheme.new(); + await registrarScheme.initialize( org.avatar.address, dxdVotingMachine.address, - true, org.controller.address, permissionRegistry.address, - "Cheap Scheme", + "Registrar Scheme", 172800, 5 ); - await org.daoCreator.setSchemes( - org.avatar.address, - [expensiveVoteWalletScheme.address, cheapVoteWalletScheme.address], - [genVotingMachine.params, dxdVotingMachine.params], - [ - helpers.encodePermission({ - canGenericCall: true, - canUpgrade: true, - canChangeConstraints: true, - canRegisterSchemes: true, - }), - helpers.encodePermission({ - canGenericCall: true, - canUpgrade: true, - canChangeConstraints: true, - canRegisterSchemes: true, - }), - ], - "metaData" + const defaultParamsHash = await helpers.setDefaultParameters( + org.votingMachine ); - await helpers.setDefaultControllerPermissions( - permissionRegistry, - org.avatar.address, - org.controller + await org.controller.registerScheme( + masterAvatarScheme.address, + defaultParamsHash, + false, + true + ); + await org.controller.registerScheme( + registrarScheme.address, + defaultParamsHash, + true, + false ); await permissionRegistry.setETHPermission( org.avatar.address, @@ -168,6 +126,29 @@ contract("DXDVotingMachine", function (accounts) { constants.TEST_VALUE, true ); + await permissionRegistry.setETHPermission( + org.avatar.address, + dxdVotingMachine.address, + constants.NULL_SIGNATURE, + constants.MAX_UINT_256, + true + ); + await permissionRegistry.setETHPermission( + registrarScheme.address, + org.controller.address, + web3.eth.abi.encodeFunctionSignature( + "registerScheme(address,bytes32,bool,bool)" + ), + 0, + true + ); + await permissionRegistry.setETHPermission( + registrarScheme.address, + org.controller.address, + web3.eth.abi.encodeFunctionSignature("unregisterScheme(address)"), + 0, + true + ); }); describe("Voting", function () { @@ -180,11 +161,10 @@ contract("DXDVotingMachine", function (accounts) { value: web3.utils.toWei("1"), }); - const setRefundConfData = new web3.eth.Contract( - DXDVotingMachine.abi - ).methods - .setOrganizationRefund(VOTE_GAS, constants.GAS_PRICE) - .encodeABI(); + const setRefundConfData = web3.eth.abi.encodeFunctionCall( + DXDVotingMachine.abi.find(x => x.name === "setOrganizationRefund"), + [VOTE_GAS, constants.GAS_PRICE] + ); await permissionRegistry.setETHPermission( org.avatar.address, @@ -207,10 +187,11 @@ contract("DXDVotingMachine", function (accounts) { web3.utils.toWei("1"), true ); - const setRefundConfTx = await cheapVoteWalletScheme.proposeCalls( + const setRefundConfTx = await masterAvatarScheme.proposeCalls( [dxdVotingMachine.address], [setRefundConfData], [0], + 2, constants.TEST_TITLE, constants.SOME_HASH ); @@ -221,15 +202,15 @@ contract("DXDVotingMachine", function (accounts) { ); const organizationId = ( - await dxdVotingMachine.contract.proposals(setRefundConfProposalId) + await dxdVotingMachine.proposals(setRefundConfProposalId) ).organizationId; assert.equal( - await dxdVotingMachine.contract.organizations(organizationId), + await dxdVotingMachine.organizations(organizationId), org.avatar.address ); - await dxdVotingMachine.contract.vote( + await dxdVotingMachine.vote( setRefundConfProposalId, 1, 0, @@ -238,9 +219,7 @@ contract("DXDVotingMachine", function (accounts) { ); const organizationRefundConf = - await dxdVotingMachine.contract.organizationRefunds( - org.avatar.address - ); + await dxdVotingMachine.organizationRefunds(org.avatar.address); assert.equal(0, organizationRefundConf.balance); assert.equal(VOTE_GAS, organizationRefundConf.voteGas); assert.equal(constants.GAS_PRICE, organizationRefundConf.maxGasPrice); @@ -248,150 +227,21 @@ contract("DXDVotingMachine", function (accounts) { await permissionRegistry.setETHPermission( org.avatar.address, actionMock.address, - testCallFrom(org.avatar.address).substring(0, 10), + helpers.testCallFrom(org.avatar.address).substring(0, 10), 0, true ); }); - it("gas spent in PayableGenesisProtocol vote is less than GenesisProtocol vote", async function () { - await web3.eth.sendTransaction({ - from: accounts[0], - to: org.avatar.address, - value: web3.utils.toWei("1"), - }); - const fundVotingMachineTx = await cheapVoteWalletScheme.proposeCalls( - [dxdVotingMachine.address], - ["0x0"], - [web3.utils.toWei("1")], - constants.TEST_TITLE, - constants.SOME_HASH - ); - const fundVotingMachineProposalId = await helpers.getValueFromLogs( - fundVotingMachineTx, - "_proposalId" - ); - - await dxdVotingMachine.contract.vote( - fundVotingMachineProposalId, - 1, - 0, - constants.NULL_ADDRESS, - { from: accounts[3] } - ); - - let tx = await expensiveVoteWalletScheme.proposeCalls( - [actionMock.address], - [testCallFrom(org.avatar.address)], - [0], - constants.TEST_TITLE, - constants.SOME_HASH - ); - const expensiveProposalId = await helpers.getValueFromLogs( - tx, - "_proposalId" - ); - let balanceBeforeVote = new BN(await web3.eth.getBalance(accounts[3])); - tx = await genVotingMachine.contract.vote( - expensiveProposalId, - 1, - 0, - constants.NULL_ADDRESS, - { from: accounts[3], gasPrice: constants.GAS_PRICE } - ); - let balanceAfterVote = new BN(await web3.eth.getBalance(accounts[3])); - const gastVoteWithoutRefund = parseInt( - balanceBeforeVote - .sub(balanceAfterVote) - .div(new BN(constants.GAS_PRICE)) - .toString() - ); - expect(tx.receipt.gasUsed).to.be.closeTo(gastVoteWithoutRefund, 1); - - let organizationProposal = - await expensiveVoteWalletScheme.getOrganizationProposal( - expensiveProposalId - ); - assert.equal( - organizationProposal.state, - constants.WALLET_SCHEME_PROPOSAL_STATES.executionSuccedd - ); - assert.equal( - organizationProposal.callData[0], - testCallFrom(org.avatar.address) - ); - assert.equal(organizationProposal.to[0], actionMock.address); - assert.equal(organizationProposal.value[0], 0); - - // Vote with refund configured - tx = await cheapVoteWalletScheme.proposeCalls( - [actionMock.address], - [testCallFrom(org.avatar.address)], - [0], - constants.TEST_TITLE, - constants.SOME_HASH - ); - const cheapProposalId = await helpers.getValueFromLogs( - tx, - "_proposalId" - ); - balanceBeforeVote = new BN(await web3.eth.getBalance(accounts[3])); - tx = await dxdVotingMachine.contract.vote( - cheapProposalId, - 1, - 0, - constants.NULL_ADDRESS, - { from: accounts[3], gasPrice: constants.GAS_PRICE } - ); - balanceAfterVote = new BN(await web3.eth.getBalance(accounts[3])); - const gasVoteWithRefund = parseInt( - balanceBeforeVote - .sub(balanceAfterVote) - .div(new BN(constants.GAS_PRICE)) - .toString() - ); - - // Gas was taken from the organization refund balance and used to pay most of vote gas cost on two votes, - // the vote approving the funding of the dxd voting machine and the one approving the other proposal - assert.equal( - web3.utils.toWei("1") - TOTAL_GAS_REFUND * 2, - ( - await dxdVotingMachine.contract.organizationRefunds( - org.avatar.address - ) - ).balance - ); - expect(tx.receipt.gasUsed - VOTE_GAS).to.be.closeTo( - gasVoteWithRefund, - 1 - ); - - organizationProposal = - await cheapVoteWalletScheme.getOrganizationProposal(cheapProposalId); - assert.equal( - organizationProposal.state, - constants.WALLET_SCHEME_PROPOSAL_STATES.executionSuccedd - ); - assert.equal( - organizationProposal.callData[0], - testCallFrom(org.avatar.address) - ); - assert.equal(organizationProposal.to[0], actionMock.address); - assert.equal(organizationProposal.value[0], 0); - }); - it("pay for gasRefund from voting machine only when gasRefund balance is enough", async function () { // Send enough eth just for two votes const votesRefund = TOTAL_GAS_REFUND * 3; - await web3.eth.sendTransaction({ - from: accounts[0], - to: org.avatar.address, - value: votesRefund.toString(), - }); - const fundVotingMachineTx = await cheapVoteWalletScheme.proposeCalls( + + const fundVotingMachineTx = await masterAvatarScheme.proposeCalls( [dxdVotingMachine.address], ["0x0"], - [votesRefund.toString()], + [0], + 2, constants.TEST_TITLE, constants.SOME_HASH ); @@ -399,19 +249,20 @@ contract("DXDVotingMachine", function (accounts) { fundVotingMachineTx, "_proposalId" ); - await dxdVotingMachine.contract.vote( + + await dxdVotingMachine.vote( fundVotingMachineProposalId, 1, 0, constants.NULL_ADDRESS, - { from: accounts[3], gasPrice: constants.GAS_PRICE } + { from: accounts[3], gasLimit: constants.GAS_LIMIT } ); - // Vote three times and pay only the first two - let tx = await cheapVoteWalletScheme.proposeCalls( + let tx = await masterAvatarScheme.proposeCalls( [actionMock.address], - [testCallFrom(org.avatar.address)], + [helpers.testCallFrom(org.avatar.address)], [0], + 2, constants.TEST_TITLE, constants.SOME_HASH ); @@ -419,54 +270,39 @@ contract("DXDVotingMachine", function (accounts) { assert.equal( TOTAL_GAS_REFUND * 2, Number( - ( - await dxdVotingMachine.contract.organizationRefunds( - org.avatar.address - ) - ).balance + (await dxdVotingMachine.organizationRefunds(org.avatar.address)) + .balance ) ); // Vote with higher gas than maxGasPrice and dont spend more than one vote refund - await dxdVotingMachine.contract.vote( - proposalId, - 2, - 0, - constants.NULL_ADDRESS, - { from: accounts[1], gasPrice: constants.GAS_PRICE * 2 } - ); + await dxdVotingMachine.vote(proposalId, 2, 0, constants.NULL_ADDRESS, { + from: accounts[1], + gasPrice: constants.GAS_PRICE * 2, + }); assert.equal( TOTAL_GAS_REFUND, Number( - ( - await dxdVotingMachine.contract.organizationRefunds( - org.avatar.address - ) - ).balance + (await dxdVotingMachine.organizationRefunds(org.avatar.address)) + .balance ) ); - await dxdVotingMachine.contract.vote( - proposalId, - 2, - 0, - constants.NULL_ADDRESS, - { from: accounts[2], gasPrice: constants.GAS_PRICE } - ); + await dxdVotingMachine.vote(proposalId, 2, 0, constants.NULL_ADDRESS, { + from: accounts[2], + gasPrice: constants.GAS_PRICE, + }); assert.equal( 0, Number( - ( - await dxdVotingMachine.contract.organizationRefunds( - org.avatar.address - ) - ).balance + (await dxdVotingMachine.organizationRefunds(org.avatar.address)) + .balance ) ); const balanceBeforeVote = new BN( await web3.eth.getBalance(accounts[3]) ); - tx = await dxdVotingMachine.contract.vote( + tx = await dxdVotingMachine.vote( proposalId, 1, 0, @@ -485,46 +321,46 @@ contract("DXDVotingMachine", function (accounts) { expect(tx.receipt.gasUsed).to.be.closeTo(gastVoteWithoutRefund, 1); const organizationProposal = - await cheapVoteWalletScheme.getOrganizationProposal(proposalId); + await masterAvatarScheme.getOrganizationProposal(proposalId); assert.equal( organizationProposal.state, constants.WALLET_SCHEME_PROPOSAL_STATES.executionSuccedd ); assert.equal( organizationProposal.callData[0], - testCallFrom(org.avatar.address) + helpers.testCallFrom(org.avatar.address) ); assert.equal(organizationProposal.to[0], actionMock.address); assert.equal(organizationProposal.value[0], 0); }); it("Can view rep of votes and amount staked on proposal", async function () { - const statusInfo = - await dxdVotingMachine.contract.proposalStatusWithVotes( - setRefundConfProposalId - ); + const statusInfo = await dxdVotingMachine.proposalStatusWithVotes( + setRefundConfProposalId + ); expect(statusInfo["0"].toNumber()).to.equal(70000); expect(statusInfo["1"].toNumber()).to.equal(0); expect(statusInfo["2"].toNumber()).to.equal(70000); expect(statusInfo["3"].toNumber()).to.equal(0); expect(statusInfo["4"].toNumber()).to.equal(0); - expect(statusInfo["5"].toNumber()).to.equal(15); + expect(statusInfo["5"].toNumber()).to.equal(100); }); it("Should fail if voter has already voted", async function () { const proposalId = await helpers.getValueFromLogs( - await cheapVoteWalletScheme.proposeCalls( + await masterAvatarScheme.proposeCalls( [actionMock.address], - [testCallFrom(org.avatar.address)], + [helpers.testCallFrom(org.avatar.address)], [0], + 2, constants.TEST_TITLE, constants.SOME_HASH ), "_proposalId" ); - const vote = await dxdVotingMachine.contract.vote( + const vote = await dxdVotingMachine.vote( proposalId, 1, 0, @@ -542,7 +378,7 @@ contract("DXDVotingMachine", function (accounts) { _reputation: "10000", }); - const secondVote = await dxdVotingMachine.contract.vote( + const secondVote = await dxdVotingMachine.vote( proposalId, 2, 0, @@ -558,36 +394,15 @@ contract("DXDVotingMachine", function (accounts) { describe("VoteOnBehalf", function () { let genericProposalId; beforeEach(async function () { - const defaultParamaters = [ - "50", - "172800", - "86400", - "3600", - "2000", - "86400", - "60", - "10", - "15", - "10", - "0", - ]; - - await dxdVotingMachine.contract.setParameters( - defaultParamaters, + const parameterHash = await dxdVotingMachine.getParametersHash( + helpers.defaultParametersArray, accounts[3] ); - const parameterHash = - await dxdVotingMachine.contract.getParametersHash( - defaultParamaters, - accounts[3] - ); - - const tempWalletScheme = await WalletScheme.new(); - await tempWalletScheme.initialize( + const tempAvatarScheme = await AvatarScheme.new(); + await tempAvatarScheme.initialize( org.avatar.address, dxdVotingMachine.address, - true, org.controller.address, permissionRegistry.address, "Temp Scheme", @@ -595,25 +410,17 @@ contract("DXDVotingMachine", function (accounts) { 5 ); - const registerSchemeData = await org.controller.contract.methods - .registerScheme( - tempWalletScheme.address, - parameterHash, - helpers.encodePermission({ - canGenericCall: true, - canUpgrade: true, - canChangeConstraints: true, - canRegisterSchemes: true, - }), - org.avatar.address - ) - .encodeABI(); + const registerSchemeData = web3.eth.abi.encodeFunctionCall( + org.controller.abi.find(x => x.name === "registerScheme"), + [tempAvatarScheme.address, parameterHash, true, true] + ); const registerProposalId = await helpers.getValueFromLogs( - await cheapVoteWalletScheme.proposeCalls( + await registrarScheme.proposeCalls( [org.controller.address], [registerSchemeData], [0], + 2, constants.TEST_TITLE, constants.SOME_HASH ), @@ -621,15 +428,12 @@ contract("DXDVotingMachine", function (accounts) { ); assert.equal( - ( - await cheapVoteWalletScheme.getOrganizationProposal( - registerProposalId - ) - ).state, + (await registrarScheme.getOrganizationProposal(registerProposalId)) + .state, constants.WALLET_SCHEME_PROPOSAL_STATES.submitted ); - await dxdVotingMachine.contract.vote( + await dxdVotingMachine.vote( registerProposalId, 1, 0, @@ -638,29 +442,25 @@ contract("DXDVotingMachine", function (accounts) { ); assert.equal( - ( - await cheapVoteWalletScheme.getOrganizationProposal( - registerProposalId - ) - ).state, + (await registrarScheme.getOrganizationProposal(registerProposalId)) + .state, constants.WALLET_SCHEME_PROPOSAL_STATES.executionSuccedd ); assert.equal( await org.controller.getSchemeParameters( - tempWalletScheme.address, + tempAvatarScheme.address, org.avatar.address ), parameterHash ); - const callData = helpers.testCallFrom(tempWalletScheme.address); - genericProposalId = await helpers.getValueFromLogs( - await tempWalletScheme.proposeCalls( - [actionMock.address], - [callData], - [0], + await tempAvatarScheme.proposeCalls( + [accounts[1]], + ["0x0"], + [10], + 2, constants.TEST_TITLE, constants.SOME_HASH ), @@ -670,30 +470,22 @@ contract("DXDVotingMachine", function (accounts) { it("Fails if address is not allowed to vote on behalf", async function () { const proposalParamsHash = ( - await dxdVotingMachine.contract.proposals(genericProposalId) - ).paramsHash; + await dxdVotingMachine.proposals(genericProposalId) + ).defaultParamsHash; - const params = await dxdVotingMachine.contract.parameters( - proposalParamsHash - ); + const params = await dxdVotingMachine.parameters(proposalParamsHash); assert.equal(params.voteOnBehalf, accounts[3]); await expectRevert( - dxdVotingMachine.contract.vote( - genericProposalId, - 1, - 0, - accounts[2], - { - from: accounts[1], - } - ), + dxdVotingMachine.vote(genericProposalId, 1, 0, accounts[2], { + from: accounts[1], + }), "address not allowed to vote on behalf" ); }); it("Succeeds if allowed address is able to vote on behalf", async function () { - const tx = await dxdVotingMachine.contract.vote( + const tx = await dxdVotingMachine.vote( genericProposalId, 1, 0, @@ -712,7 +504,7 @@ contract("DXDVotingMachine", function (accounts) { }); }); it("should emit event StateChange to QuietVotingPeriod", async function () { - const upStake = await dxdVotingMachine.contract.stake( + const upStake = await dxdVotingMachine.stake( genericProposalId, 1, 2000, @@ -722,7 +514,7 @@ contract("DXDVotingMachine", function (accounts) { ); const totalStaked = ( - await dxdVotingMachine.contract.proposals(genericProposalId) + await dxdVotingMachine.proposals(genericProposalId) ).totalStakes; assert.equal(totalStaked, 2000); @@ -735,7 +527,7 @@ contract("DXDVotingMachine", function (accounts) { await time.increase(3600 + 1); - const finalVote = await dxdVotingMachine.contract.vote( + const finalVote = await dxdVotingMachine.vote( genericProposalId, 1, 0, @@ -750,8 +542,7 @@ contract("DXDVotingMachine", function (accounts) { // check QuietEndingPeriod assert.equal( - (await dxdVotingMachine.contract.proposals(genericProposalId)) - .state, + (await dxdVotingMachine.proposals(genericProposalId)).state, "6" ); }); @@ -767,13 +558,15 @@ contract("DXDVotingMachine", function (accounts) { value: constants.TEST_VALUE, }); - const payCallData = await new web3.eth.Contract(actionMock.abi).methods - .executeCall(accounts[1], "0x0", 10) - .encodeABI(); + const payCallData = web3.eth.abi.encodeFunctionCall( + actionMock.abi.find(x => x.name === "executeCall"), + [accounts[1], "0x0", 10] + ); - const callDataMintRep = await org.controller.contract.methods - .mintReputation(constants.TEST_VALUE, accounts[4], org.avatar.address) - .encodeABI(); + const callDataMintRep = web3.eth.abi.encodeFunctionCall( + org.controller.abi.find(x => x.name === "mintReputation"), + [constants.TEST_VALUE, accounts[4]] + ); await permissionRegistry.setETHPermission( org.avatar.address, @@ -790,10 +583,11 @@ contract("DXDVotingMachine", function (accounts) { true ); - const tx = await cheapVoteWalletScheme.proposeCalls( + const tx = await masterAvatarScheme.proposeCalls( [actionMock.address, actionMock.address, org.controller.address], ["0x0", payCallData, callDataMintRep], [constants.TEST_VALUE, 0, 0], + 2, constants.TEST_TITLE, constants.SOME_HASH ); @@ -801,7 +595,7 @@ contract("DXDVotingMachine", function (accounts) { }); it("fail sharing invalid vote signature", async function () { - const voteHash = await dxdVotingMachine.contract.hashVote( + const voteHash = await dxdVotingMachine.hashVote( dxdVotingMachine.address, proposalId, accounts[3], @@ -816,8 +610,8 @@ contract("DXDVotingMachine", function (accounts) { web3.eth.accounts.recover(voteHash, votesignature) ); - try { - await dxdVotingMachine.contract.shareSignedVote( + await expectRevert( + dxdVotingMachine.shareSignedVote( dxdVotingMachine.address, proposalId, accounts[3], @@ -825,17 +619,12 @@ contract("DXDVotingMachine", function (accounts) { 70000, votesignature, { from: accounts[3] } - ); - assert( - false, - "cannot share invalid vote signature with different vote" - ); - } catch (error) { - helpers.assertVMException(error); - } + ), + "wrong signer" + ); - try { - await dxdVotingMachine.contract.shareSignedVote( + await expectRevert( + dxdVotingMachine.shareSignedVote( dxdVotingMachine.address, proposalId, accounts[3], @@ -843,14 +632,12 @@ contract("DXDVotingMachine", function (accounts) { 71000, votesignature, { from: accounts[3] } - ); - assert(false, "cannot share invalid vote signature with higher REP"); - } catch (error) { - helpers.assertVMException(error); - } + ), + "wrong signer" + ); }); it("Can share a vote signed by a different user", async function () { - const voteHash = await dxdVotingMachine.contract.hashVote( + const voteHash = await dxdVotingMachine.hashVote( dxdVotingMachine.address, proposalId, accounts[3], @@ -867,7 +654,7 @@ contract("DXDVotingMachine", function (accounts) { web3.eth.accounts.recover(voteHash, votesignature) ); - const voteTx = await dxdVotingMachine.contract.shareSignedVote( + const voteTx = await dxdVotingMachine.shareSignedVote( dxdVotingMachine.address, proposalId, accounts[3], @@ -888,7 +675,7 @@ contract("DXDVotingMachine", function (accounts) { }); it("Cannot share a vote with the incorrect signature", async function () { - const voteHash = await dxdVotingMachine.contract.hashVote( + const voteHash = await dxdVotingMachine.hashVote( dxdVotingMachine.address, proposalId, accounts[3], @@ -907,7 +694,7 @@ contract("DXDVotingMachine", function (accounts) { ); await expectRevert( - dxdVotingMachine.contract.shareSignedVote( + dxdVotingMachine.shareSignedVote( dxdVotingMachine.address, proposalId, accounts[3], @@ -921,7 +708,7 @@ contract("DXDVotingMachine", function (accounts) { }); it("fail executing vote with invalid data", async function () { - const voteHash = await dxdVotingMachine.contract.hashVote( + const voteHash = await dxdVotingMachine.hashVote( dxdVotingMachine.address, proposalId, accounts[3], @@ -936,7 +723,7 @@ contract("DXDVotingMachine", function (accounts) { web3.eth.accounts.recover(voteHash, votesignature) ); - const shareVoteTx = await dxdVotingMachine.contract.shareSignedVote( + const shareVoteTx = await dxdVotingMachine.shareSignedVote( dxdVotingMachine.address, proposalId, accounts[3], @@ -947,8 +734,8 @@ contract("DXDVotingMachine", function (accounts) { ); const voteInfoFromLog = shareVoteTx.logs[0].args; - try { - await dxdVotingMachine.contract.executeSignedVote( + await expectRevert( + dxdVotingMachine.executeSignedVote( voteInfoFromLog.votingMachine, voteInfoFromLog.proposalId, voteInfoFromLog.voter, @@ -956,14 +743,12 @@ contract("DXDVotingMachine", function (accounts) { voteInfoFromLog.amount, voteInfoFromLog.signature, { from: accounts[4] } - ); - assert(false, "cannot execute vote signature with different vote"); - } catch (error) { - helpers.assertVMException(error); - } + ), + "wrong signer" + ); - try { - await dxdVotingMachine.contract.executeSignedVote( + await expectRevert( + dxdVotingMachine.executeSignedVote( voteInfoFromLog.votingMachine, voteInfoFromLog.proposalId, voteInfoFromLog.voter, @@ -971,14 +756,12 @@ contract("DXDVotingMachine", function (accounts) { voteInfoFromLog.amount - 1, voteInfoFromLog.signature, { from: accounts[4] } - ); - assert(false, "cannot execute vote signature with less REP"); - } catch (error) { - helpers.assertVMException(error); - } + ), + "wrong signer" + ); - try { - await dxdVotingMachine.contract.executeSignedVote( + await expectRevert( + dxdVotingMachine.executeSignedVote( voteInfoFromLog.votingMachine, voteInfoFromLog.proposalId, accounts[1], @@ -986,15 +769,13 @@ contract("DXDVotingMachine", function (accounts) { voteInfoFromLog.amount, voteInfoFromLog.signature, { from: accounts[4] } - ); - assert(false, "cannot execute vote signature form other address"); - } catch (error) { - helpers.assertVMException(error); - } + ), + "wrong signer" + ); }); it("positive signed decision with all rep available", async function () { - const voteHash = await dxdVotingMachine.contract.hashVote( + const voteHash = await dxdVotingMachine.hashVote( dxdVotingMachine.address, proposalId, accounts[3], @@ -1009,7 +790,7 @@ contract("DXDVotingMachine", function (accounts) { web3.eth.accounts.recover(voteHash, votesignature) ); - const shareVoteTx = await dxdVotingMachine.contract.shareSignedVote( + const shareVoteTx = await dxdVotingMachine.shareSignedVote( dxdVotingMachine.address, proposalId, accounts[3], @@ -1019,7 +800,7 @@ contract("DXDVotingMachine", function (accounts) { { from: accounts[3] } ); const voteInfoFromLog = shareVoteTx.logs[0].args; - await dxdVotingMachine.contract.executeSignedVote( + await dxdVotingMachine.executeSignedVote( voteInfoFromLog.votingMachine, voteInfoFromLog.proposalId, voteInfoFromLog.voter, @@ -1030,7 +811,7 @@ contract("DXDVotingMachine", function (accounts) { ); const organizationProposal = - await cheapVoteWalletScheme.getOrganizationProposal(proposalId); + await masterAvatarScheme.getOrganizationProposal(proposalId); assert.equal( organizationProposal.state, constants.WALLET_SCHEME_PROPOSAL_STATES.executionSuccedd @@ -1039,7 +820,7 @@ contract("DXDVotingMachine", function (accounts) { it("negative signed decision with less rep than the one held", async function () { // The voter has 70 rep but votes with 60 rep - const voteHash = await dxdVotingMachine.contract.hashVote( + const voteHash = await dxdVotingMachine.hashVote( dxdVotingMachine.address, proposalId, accounts[3], @@ -1054,7 +835,7 @@ contract("DXDVotingMachine", function (accounts) { web3.eth.accounts.recover(voteHash, votesignature) ); - const shareVoteTx = await dxdVotingMachine.contract.shareSignedVote( + const shareVoteTx = await dxdVotingMachine.shareSignedVote( dxdVotingMachine.address, proposalId, accounts[3], @@ -1065,7 +846,7 @@ contract("DXDVotingMachine", function (accounts) { ); const voteInfoFromLog = shareVoteTx.logs[0].args; - await dxdVotingMachine.contract.executeSignedVote( + await dxdVotingMachine.executeSignedVote( voteInfoFromLog.votingMachine, voteInfoFromLog.proposalId, voteInfoFromLog.voter, @@ -1076,7 +857,7 @@ contract("DXDVotingMachine", function (accounts) { ); const organizationProposal = - await cheapVoteWalletScheme.getOrganizationProposal(proposalId); + await masterAvatarScheme.getOrganizationProposal(proposalId); assert.equal( organizationProposal.state, constants.WALLET_SCHEME_PROPOSAL_STATES.rejected @@ -1086,26 +867,11 @@ contract("DXDVotingMachine", function (accounts) { describe("Signal Votes", function () { beforeEach(async function () { - const wallet = await Wallet.new(); - await web3.eth.sendTransaction({ - from: accounts[0], - to: org.avatar.address, - value: constants.TEST_VALUE, - }); - await wallet.transferOwnership(org.avatar.address); - - await permissionRegistry.setETHPermission( - org.avatar.address, - wallet.address, - constants.NULL_SIGNATURE, - constants.TEST_VALUE, - true - ); - - const tx = await cheapVoteWalletScheme.proposeCalls( - [wallet.address], + const tx = await masterAvatarScheme.proposeCalls( + [accounts[1]], ["0x0"], [constants.TEST_VALUE], + 2, constants.TEST_TITLE, constants.SOME_HASH ); @@ -1114,62 +880,46 @@ contract("DXDVotingMachine", function (accounts) { it("positive signal decision", async function () { assert.equal( - ( - await dxdVotingMachine.contract.votesSignaled( - proposalId, - accounts[3] - ) - ).voteDecision, + (await dxdVotingMachine.votesSignaled(proposalId, accounts[3])) + .voteDecision, 0 ); await expectRevert( - dxdVotingMachine.contract.signalVote(proposalId, 3, 60000, { + dxdVotingMachine.signalVote(proposalId, 3, 60000, { from: accounts[3], }), "wrong decision value" ); - const signalVoteTx = await dxdVotingMachine.contract.signalVote( + const signalVoteTx = await dxdVotingMachine.signalVote( proposalId, 1, 60000, { from: accounts[3] } ); assert.equal( - ( - await dxdVotingMachine.contract.votesSignaled( - proposalId, - accounts[3] - ) - ).voteDecision, + (await dxdVotingMachine.votesSignaled(proposalId, accounts[3])) + .voteDecision, 1 ); assert.equal( - ( - await dxdVotingMachine.contract.votesSignaled( - proposalId, - accounts[3] - ) - ).amount, + (await dxdVotingMachine.votesSignaled(proposalId, accounts[3])) + .amount, 60000 ); expect(signalVoteTx.receipt.gasUsed).to.be.closeTo(50000, 25000); const voteInfoFromLog = signalVoteTx.logs[0].args; - await dxdVotingMachine.contract.executeSignaledVote( + await dxdVotingMachine.executeSignaledVote( voteInfoFromLog.proposalId, voteInfoFromLog.voter, { from: accounts[4] } ); assert.equal( - ( - await dxdVotingMachine.contract.votesSignaled( - proposalId, - accounts[3] - ) - ).voteDecision, + (await dxdVotingMachine.votesSignaled(proposalId, accounts[3])) + .voteDecision, 0 ); const organizationProposal = - await cheapVoteWalletScheme.getOrganizationProposal(proposalId); + await masterAvatarScheme.getOrganizationProposal(proposalId); assert.equal( organizationProposal.state, constants.WALLET_SCHEME_PROPOSAL_STATES.executionSuccedd @@ -1178,57 +928,41 @@ contract("DXDVotingMachine", function (accounts) { it("negative signal decision", async function () { assert.equal( - ( - await dxdVotingMachine.contract.votesSignaled( - proposalId, - accounts[3] - ) - ).voteDecision, + (await dxdVotingMachine.votesSignaled(proposalId, accounts[3])) + .voteDecision, 0 ); - const signalVoteTx = await dxdVotingMachine.contract.signalVote( + const signalVoteTx = await dxdVotingMachine.signalVote( proposalId, 2, 0, { from: accounts[3] } ); assert.equal( - ( - await dxdVotingMachine.contract.votesSignaled( - proposalId, - accounts[3] - ) - ).voteDecision, + (await dxdVotingMachine.votesSignaled(proposalId, accounts[3])) + .voteDecision, 2 ); assert.equal( - ( - await dxdVotingMachine.contract.votesSignaled( - proposalId, - accounts[3] - ) - ).amount, + (await dxdVotingMachine.votesSignaled(proposalId, accounts[3])) + .amount, 0 ); expect(signalVoteTx.receipt.gasUsed).to.be.closeTo(50000, 25000); const voteInfoFromLog = signalVoteTx.logs[0].args; - await dxdVotingMachine.contract.executeSignaledVote( + await dxdVotingMachine.executeSignaledVote( voteInfoFromLog.proposalId, voteInfoFromLog.voter, { from: accounts[4] } ); assert.equal( - ( - await dxdVotingMachine.contract.votesSignaled( - proposalId, - accounts[3] - ) - ).voteDecision, + (await dxdVotingMachine.votesSignaled(proposalId, accounts[3])) + .voteDecision, 0 ); const organizationProposal = - await cheapVoteWalletScheme.getOrganizationProposal(proposalId); + await masterAvatarScheme.getOrganizationProposal(proposalId); assert.equal( organizationProposal.state, constants.WALLET_SCHEME_PROPOSAL_STATES.rejected @@ -1245,16 +979,15 @@ contract("DXDVotingMachine", function (accounts) { value: web3.utils.toWei("1"), }); - const setBoostedVoteRequiredPercentageData = new web3.eth.Contract( - DXDVotingMachine.abi - ).methods - .setBoostedVoteRequiredPercentage( - cheapVoteWalletScheme.address, - dxdVotingMachine.params, - 1950 - ) - .encodeABI(); + const setBoostedVoteRequiredPercentageData = + web3.eth.abi.encodeFunctionCall( + DXDVotingMachine.abi.find( + x => x.name === "setBoostedVoteRequiredPercentage" + ), + [masterAvatarScheme.address, dxdVotingMachine.params, 1950] + ); + console.log(setBoostedVoteRequiredPercentageData); await permissionRegistry.setETHPermission( org.avatar.address, dxdVotingMachine.address, @@ -1265,16 +998,17 @@ contract("DXDVotingMachine", function (accounts) { await permissionRegistry.setETHPermission( org.avatar.address, actionMock.address, - testCallFrom(org.avatar.address).substring(0, 10), + helpers.testCallFrom(org.avatar.address).substring(0, 10), 0, true ); const setBoostedVoteRequiredPercentageTx = - await cheapVoteWalletScheme.proposeCalls( + await masterAvatarScheme.proposeCalls( [dxdVotingMachine.address], [setBoostedVoteRequiredPercentageData], [0], + 2, constants.TEST_TITLE, constants.SOME_HASH ); @@ -1284,15 +1018,15 @@ contract("DXDVotingMachine", function (accounts) { "_proposalId" ); const organizationId = ( - await dxdVotingMachine.contract.proposals( + await dxdVotingMachine.proposals( setBoostedVoteRequiredPercentageProposalId ) ).organizationId; assert.equal( - await dxdVotingMachine.contract.organizations(organizationId), + await dxdVotingMachine.organizations(organizationId), org.avatar.address ); - await dxdVotingMachine.contract.vote( + await dxdVotingMachine.vote( setBoostedVoteRequiredPercentageProposalId, 1, 0, @@ -1302,29 +1036,27 @@ contract("DXDVotingMachine", function (accounts) { assert.equal( 1950, - await dxdVotingMachine.contract.getBoostedVoteRequiredPercentage( + await dxdVotingMachine.getBoostedVoteRequiredPercentage( org.avatar.address, - cheapVoteWalletScheme.address, + masterAvatarScheme.address, dxdVotingMachine.params ) ); }); it("boosted proposal should succeed with enough votes", async function () { - const tx = await cheapVoteWalletScheme.proposeCalls( + const tx = await masterAvatarScheme.proposeCalls( [actionMock.address], - [testCallFrom(org.avatar.address)], + [helpers.testCallFrom(org.avatar.address)], [0], + 2, constants.TEST_TITLE, constants.SOME_HASH ); const testProposalId = await helpers.getValueFromLogs(tx, "_proposalId"); - const stakeTx = await dxdVotingMachine.contract.stake( - testProposalId, - 1, - 1000, - { from: accounts[1] } - ); + const stakeTx = await dxdVotingMachine.stake(testProposalId, 1, 1000, { + from: accounts[1], + }); expectEvent(stakeTx.receipt, "StateChange", { _proposalId: testProposalId, @@ -1332,7 +1064,7 @@ contract("DXDVotingMachine", function (accounts) { }); await time.increase(3600 + 1); - await dxdVotingMachine.contract.vote( + await dxdVotingMachine.vote( testProposalId, 1, 0, @@ -1340,7 +1072,7 @@ contract("DXDVotingMachine", function (accounts) { { from: accounts[2], gasPrice: constants.GAS_PRICE } ); - await dxdVotingMachine.contract.vote( + await dxdVotingMachine.vote( testProposalId, 1, 0, @@ -1348,10 +1080,10 @@ contract("DXDVotingMachine", function (accounts) { { from: accounts[1], gasPrice: constants.GAS_PRICE } ); await time.increase(86400 + 1); - const executeTx = await dxdVotingMachine.contract.execute( - testProposalId, - { from: accounts[1], gasPrice: constants.GAS_PRICE } - ); + const executeTx = await dxdVotingMachine.execute(testProposalId, { + from: accounts[1], + gasPrice: constants.GAS_PRICE, + }); // Check it changed to executed in redeem await expectEvent.inTransaction( executeTx.tx, @@ -1364,34 +1096,32 @@ contract("DXDVotingMachine", function (accounts) { ); const organizationProposal = - await cheapVoteWalletScheme.getOrganizationProposal(testProposalId); + await masterAvatarScheme.getOrganizationProposal(testProposalId); assert.equal( organizationProposal.state, constants.WALLET_SCHEME_PROPOSAL_STATES.executionSuccedd ); assert.equal( organizationProposal.callData[0], - testCallFrom(org.avatar.address) + helpers.testCallFrom(org.avatar.address) ); assert.equal(organizationProposal.to[0], actionMock.address); assert.equal(organizationProposal.value[0], 0); }); it("boosted proposal should fail with not enough votes", async function () { - const tx = await cheapVoteWalletScheme.proposeCalls( + const tx = await masterAvatarScheme.proposeCalls( [actionMock.address], - [testCallFrom(org.avatar.address)], + [helpers.testCallFrom(org.avatar.address)], [0], + 2, constants.TEST_TITLE, constants.SOME_HASH ); const testProposalId = await helpers.getValueFromLogs(tx, "_proposalId"); - const stakeTx = await dxdVotingMachine.contract.stake( - testProposalId, - 1, - 1000, - { from: accounts[1] } - ); + const stakeTx = await dxdVotingMachine.stake(testProposalId, 1, 1000, { + from: accounts[1], + }); expectEvent(stakeTx.receipt, "StateChange", { _proposalId: testProposalId, @@ -1399,7 +1129,7 @@ contract("DXDVotingMachine", function (accounts) { }); await time.increase(3600 + 1); - await dxdVotingMachine.contract.vote( + await dxdVotingMachine.vote( testProposalId, 1, 0, @@ -1407,10 +1137,10 @@ contract("DXDVotingMachine", function (accounts) { { from: accounts[2], gasPrice: constants.GAS_PRICE } ); await time.increase(86400 + 1); - const executeTx = await dxdVotingMachine.contract.execute( - testProposalId, - { from: accounts[1], gasPrice: constants.GAS_PRICE } - ); + const executeTx = await dxdVotingMachine.execute(testProposalId, { + from: accounts[1], + gasPrice: constants.GAS_PRICE, + }); // Check it changed to executed in redeem await expectEvent.inTransaction( executeTx.tx, @@ -1423,14 +1153,14 @@ contract("DXDVotingMachine", function (accounts) { ); const organizationProposal = - await cheapVoteWalletScheme.getOrganizationProposal(testProposalId); + await masterAvatarScheme.getOrganizationProposal(testProposalId); assert.equal( organizationProposal.state, constants.WALLET_SCHEME_PROPOSAL_STATES.rejected ); assert.equal( organizationProposal.callData[0], - testCallFrom(org.avatar.address) + helpers.testCallFrom(org.avatar.address) ); assert.equal(organizationProposal.to[0], actionMock.address); assert.equal(organizationProposal.value[0], 0); @@ -1438,10 +1168,11 @@ contract("DXDVotingMachine", function (accounts) { it("should calculate average downstake of Boosted Proposals", async function () { const proposalId = await helpers.getValueFromLogs( - await cheapVoteWalletScheme.proposeCalls( + await masterAvatarScheme.proposeCalls( [actionMock.address], - [testCallFrom(org.avatar.address)], + [helpers.testCallFrom(org.avatar.address)], [0], + 2, constants.TEST_TITLE, constants.SOME_HASH ), @@ -1449,24 +1180,20 @@ contract("DXDVotingMachine", function (accounts) { ); const proposalId2 = await helpers.getValueFromLogs( - await cheapVoteWalletScheme.proposeCalls( + await masterAvatarScheme.proposeCalls( [actionMock.address], - [testCallFrom(org.avatar.address)], + [helpers.testCallFrom(org.avatar.address)], [0], + 2, constants.TEST_TITLE, constants.SOME_HASH ), "_proposalId" ); - const upStake2 = await dxdVotingMachine.contract.stake( - proposalId2, - 1, - 100, - { - from: accounts[1], - } - ); + const upStake2 = await dxdVotingMachine.stake(proposalId2, 1, 100, { + from: accounts[1], + }); expectEvent(upStake2.receipt, "StateChange", { _proposalId: proposalId2, @@ -1475,36 +1202,24 @@ contract("DXDVotingMachine", function (accounts) { await time.increase(3600 + 1); - await dxdVotingMachine.contract.vote( - proposalId2, - 1, - 0, - constants.NULL_ADDRESS, - { from: accounts[1], gasPrice: constants.GAS_PRICE } - ); + await dxdVotingMachine.vote(proposalId2, 1, 0, constants.NULL_ADDRESS, { + from: accounts[1], + gasPrice: constants.GAS_PRICE, + }); //check boosted - assert.equal( - (await dxdVotingMachine.contract.proposals(proposalId2)).state, - "5" - ); + assert.equal((await dxdVotingMachine.proposals(proposalId2)).state, "5"); - await dxdVotingMachine.contract.stake(proposalId, 2, 2000, { + await dxdVotingMachine.stake(proposalId, 2, 2000, { from: accounts[0], }); - const upStake = await dxdVotingMachine.contract.stake( - proposalId, - 1, - 7900, - { - from: accounts[1], - } - ); + const upStake = await dxdVotingMachine.stake(proposalId, 1, 7900, { + from: accounts[1], + }); - const totalStaked = ( - await dxdVotingMachine.contract.proposals(proposalId) - ).totalStakes; + const totalStaked = (await dxdVotingMachine.proposals(proposalId)) + .totalStakes; assert.equal(totalStaked, 9900); @@ -1515,39 +1230,30 @@ contract("DXDVotingMachine", function (accounts) { await time.increase(3600 + 1); - await dxdVotingMachine.contract.vote( - proposalId, - 1, - 0, - constants.NULL_ADDRESS, - { from: accounts[1], gasPrice: constants.GAS_PRICE } - ); + await dxdVotingMachine.vote(proposalId, 1, 0, constants.NULL_ADDRESS, { + from: accounts[1], + gasPrice: constants.GAS_PRICE, + }); //check boosted - assert.equal( - (await dxdVotingMachine.contract.proposals(proposalId)).state, - "5" - ); + assert.equal((await dxdVotingMachine.proposals(proposalId)).state, "5"); - await dxdVotingMachine.contract.vote( - proposalId, - 1, - 0, - constants.NULL_ADDRESS, - { from: accounts[0], gasPrice: constants.GAS_PRICE } - ); + await dxdVotingMachine.vote(proposalId, 1, 0, constants.NULL_ADDRESS, { + from: accounts[0], + gasPrice: constants.GAS_PRICE, + }); await time.increase(86400 + 1); - const orgId = (await dxdVotingMachine.contract.proposals(proposalId)) + const orgId = (await dxdVotingMachine.proposals(proposalId)) .organizationId; const totalDownStaked = - await dxdVotingMachine.contract.averagesDownstakesOfBoosted(orgId); + await dxdVotingMachine.averagesDownstakesOfBoosted(orgId); assert.equal(totalDownStaked, 1015); - const executeTx = await dxdVotingMachine.contract.execute(proposalId, { + const executeTx = await dxdVotingMachine.execute(proposalId, { from: accounts[1], gasPrice: constants.GAS_PRICE, }); @@ -1564,7 +1270,7 @@ contract("DXDVotingMachine", function (accounts) { ); const proposalState = ( - await cheapVoteWalletScheme.getOrganizationProposal(proposalId) + await masterAvatarScheme.getOrganizationProposal(proposalId) ).state; assert.equal( @@ -1575,28 +1281,23 @@ contract("DXDVotingMachine", function (accounts) { it("execution state is preBoosted after the vote execution bar has been crossed", async function () { const proposalId = await helpers.getValueFromLogs( - await cheapVoteWalletScheme.proposeCalls( + await masterAvatarScheme.proposeCalls( [actionMock.address], - [testCallFrom(org.avatar.address)], + [helpers.testCallFrom(org.avatar.address)], [0], + 2, constants.TEST_TITLE, constants.SOME_HASH ), "_proposalId" ); - const upStake = await dxdVotingMachine.contract.stake( - proposalId, - 1, - 2000, - { - from: accounts[1], - } - ); + const upStake = await dxdVotingMachine.stake(proposalId, 1, 2000, { + from: accounts[1], + }); - const totalStaked = ( - await dxdVotingMachine.contract.proposals(proposalId) - ).totalStakes; + const totalStaked = (await dxdVotingMachine.proposals(proposalId)) + .totalStakes; assert.equal(totalStaked, 2000); @@ -1607,46 +1308,31 @@ contract("DXDVotingMachine", function (accounts) { }); // vote enough times to pass the execution bar threshold - await dxdVotingMachine.contract.vote( - proposalId, - 1, - 0, - constants.NULL_ADDRESS, - { from: accounts[0], gasPrice: constants.GAS_PRICE } - ); + await dxdVotingMachine.vote(proposalId, 1, 0, constants.NULL_ADDRESS, { + from: accounts[0], + gasPrice: constants.GAS_PRICE, + }); - await dxdVotingMachine.contract.vote( - proposalId, - 1, - 0, - constants.NULL_ADDRESS, - { from: accounts[1], gasPrice: constants.GAS_PRICE } - ); + await dxdVotingMachine.vote(proposalId, 1, 0, constants.NULL_ADDRESS, { + from: accounts[1], + gasPrice: constants.GAS_PRICE, + }); - await dxdVotingMachine.contract.vote( - proposalId, - 1, - 0, - constants.NULL_ADDRESS, - { from: accounts[2], gasPrice: constants.GAS_PRICE } - ); + await dxdVotingMachine.vote(proposalId, 1, 0, constants.NULL_ADDRESS, { + from: accounts[2], + gasPrice: constants.GAS_PRICE, + }); - await dxdVotingMachine.contract.vote( - proposalId, - 1, - 0, - constants.NULL_ADDRESS, - { from: accounts[3], gasPrice: constants.GAS_PRICE } - ); + await dxdVotingMachine.vote(proposalId, 1, 0, constants.NULL_ADDRESS, { + from: accounts[3], + gasPrice: constants.GAS_PRICE, + }); // check executed - assert.equal( - (await dxdVotingMachine.contract.proposals(proposalId)).state, - "2" - ); + assert.equal((await dxdVotingMachine.proposals(proposalId)).state, "2"); const proposalState = ( - await cheapVoteWalletScheme.getOrganizationProposal(proposalId) + await masterAvatarScheme.getOrganizationProposal(proposalId) ).state; assert.equal( @@ -1657,28 +1343,23 @@ contract("DXDVotingMachine", function (accounts) { it("execution state is Boosted after the vote execution bar has been crossed", async function () { const proposalId = await helpers.getValueFromLogs( - await cheapVoteWalletScheme.proposeCalls( + await masterAvatarScheme.proposeCalls( [actionMock.address], - [testCallFrom(org.avatar.address)], + [helpers.testCallFrom(org.avatar.address)], [0], + 2, constants.TEST_TITLE, constants.SOME_HASH ), "_proposalId" ); - const upStake = await dxdVotingMachine.contract.stake( - proposalId, - 1, - 2000, - { - from: accounts[1], - } - ); + const upStake = await dxdVotingMachine.stake(proposalId, 1, 2000, { + from: accounts[1], + }); - const totalStaked = ( - await dxdVotingMachine.contract.proposals(proposalId) - ).totalStakes; + const totalStaked = (await dxdVotingMachine.proposals(proposalId)) + .totalStakes; assert.equal(totalStaked, 2000); @@ -1690,45 +1371,30 @@ contract("DXDVotingMachine", function (accounts) { await time.increase(3600 + 1); - await dxdVotingMachine.contract.vote( - proposalId, - 1, - 0, - constants.NULL_ADDRESS, - { from: accounts[1], gasPrice: constants.GAS_PRICE } - ); + await dxdVotingMachine.vote(proposalId, 1, 0, constants.NULL_ADDRESS, { + from: accounts[1], + gasPrice: constants.GAS_PRICE, + }); // check boosted - assert.equal( - (await dxdVotingMachine.contract.proposals(proposalId)).state, - "5" - ); + assert.equal((await dxdVotingMachine.proposals(proposalId)).state, "5"); // vote enough times to pass the execution bar threshold - await dxdVotingMachine.contract.vote( - proposalId, - 1, - 0, - constants.NULL_ADDRESS, - { from: accounts[2], gasPrice: constants.GAS_PRICE } - ); + await dxdVotingMachine.vote(proposalId, 1, 0, constants.NULL_ADDRESS, { + from: accounts[2], + gasPrice: constants.GAS_PRICE, + }); - await dxdVotingMachine.contract.vote( - proposalId, - 1, - 0, - constants.NULL_ADDRESS, - { from: accounts[3], gasPrice: constants.GAS_PRICE } - ); + await dxdVotingMachine.vote(proposalId, 1, 0, constants.NULL_ADDRESS, { + from: accounts[3], + gasPrice: constants.GAS_PRICE, + }); // check executed - assert.equal( - (await dxdVotingMachine.contract.proposals(proposalId)).state, - "2" - ); + assert.equal((await dxdVotingMachine.proposals(proposalId)).state, "2"); const proposalState = ( - await cheapVoteWalletScheme.getOrganizationProposal(proposalId) + await masterAvatarScheme.getOrganizationProposal(proposalId) ).state; assert.equal( @@ -1739,33 +1405,28 @@ contract("DXDVotingMachine", function (accounts) { it("should check proposal score against confidence threshold", async function () { const proposalId = await helpers.getValueFromLogs( - await cheapVoteWalletScheme.proposeCalls( + await masterAvatarScheme.proposeCalls( [actionMock.address], - [testCallFrom(org.avatar.address)], + [helpers.testCallFrom(org.avatar.address)], [0], + 2, constants.TEST_TITLE, constants.SOME_HASH ), "_proposalId" ); - const upStake = await dxdVotingMachine.contract.stake( - proposalId, - 1, - 500, - { - from: accounts[1], - } - ); + const upStake = await dxdVotingMachine.stake(proposalId, 1, 500, { + from: accounts[1], + }); // downstake - await dxdVotingMachine.contract.stake(proposalId, 2, 2000, { + await dxdVotingMachine.stake(proposalId, 2, 2000, { from: accounts[0], }); - const totalStaked = ( - await dxdVotingMachine.contract.proposals(proposalId) - ).totalStakes; + const totalStaked = (await dxdVotingMachine.proposals(proposalId)) + .totalStakes; assert.equal(totalStaked, 2500); @@ -1777,39 +1438,27 @@ contract("DXDVotingMachine", function (accounts) { await time.increase(2000); - await dxdVotingMachine.contract.vote( - proposalId, - 1, - 0, - constants.NULL_ADDRESS, - { from: accounts[1], gasPrice: constants.GAS_PRICE } - ); + await dxdVotingMachine.vote(proposalId, 1, 0, constants.NULL_ADDRESS, { + from: accounts[1], + gasPrice: constants.GAS_PRICE, + }); // vote enough times to pass the execution bar threshold - await dxdVotingMachine.contract.vote( - proposalId, - 1, - 0, - constants.NULL_ADDRESS, - { from: accounts[2], gasPrice: constants.GAS_PRICE } - ); + await dxdVotingMachine.vote(proposalId, 1, 0, constants.NULL_ADDRESS, { + from: accounts[2], + gasPrice: constants.GAS_PRICE, + }); - await dxdVotingMachine.contract.vote( - proposalId, - 1, - 0, - constants.NULL_ADDRESS, - { from: accounts[3], gasPrice: constants.GAS_PRICE } - ); + await dxdVotingMachine.vote(proposalId, 1, 0, constants.NULL_ADDRESS, { + from: accounts[3], + gasPrice: constants.GAS_PRICE, + }); // check executed - assert.equal( - (await dxdVotingMachine.contract.proposals(proposalId)).state, - "2" - ); + assert.equal((await dxdVotingMachine.proposals(proposalId)).state, "2"); const proposalState = ( - await cheapVoteWalletScheme.getOrganizationProposal(proposalId) + await masterAvatarScheme.getOrganizationProposal(proposalId) ).state; assert.equal( @@ -1819,10 +1468,11 @@ contract("DXDVotingMachine", function (accounts) { }); it("should emit confidenceLevelChange event", async function () { const proposalId = await helpers.getValueFromLogs( - await cheapVoteWalletScheme.proposeCalls( + await masterAvatarScheme.proposeCalls( [actionMock.address], - [testCallFrom(org.avatar.address)], + [helpers.testCallFrom(org.avatar.address)], [0], + 2, constants.TEST_TITLE, constants.SOME_HASH ), @@ -1830,57 +1480,44 @@ contract("DXDVotingMachine", function (accounts) { ); const proposalId2 = await helpers.getValueFromLogs( - await cheapVoteWalletScheme.proposeCalls( + await masterAvatarScheme.proposeCalls( [actionMock.address], - [testCallFrom(org.avatar.address)], + [helpers.testCallFrom(org.avatar.address)], [0], + 2, constants.TEST_TITLE, constants.SOME_HASH ), "_proposalId" ); - await dxdVotingMachine.contract.stake(proposalId2, 1, 1500, { + await dxdVotingMachine.stake(proposalId2, 1, 1500, { from: accounts[1], }); await time.increase(3600 + 1); - await dxdVotingMachine.contract.vote( - proposalId, - 1, - 0, - constants.NULL_ADDRESS, - { from: accounts[1], gasPrice: constants.GAS_PRICE } - ); + await dxdVotingMachine.vote(proposalId, 1, 0, constants.NULL_ADDRESS, { + from: accounts[1], + gasPrice: constants.GAS_PRICE, + }); - await dxdVotingMachine.contract.execute(proposalId2, { + await dxdVotingMachine.execute(proposalId2, { from: accounts[1], gasPrice: constants.GAS_PRICE, }); // check boosted - assert.equal( - (await dxdVotingMachine.contract.proposals(proposalId2)).state, - "5" - ); + assert.equal((await dxdVotingMachine.proposals(proposalId2)).state, "5"); - await dxdVotingMachine.contract.vote( - proposalId, - 1, - 0, - constants.NULL_ADDRESS, - { from: accounts[1], gasPrice: constants.GAS_PRICE } - ); + await dxdVotingMachine.vote(proposalId, 1, 0, constants.NULL_ADDRESS, { + from: accounts[1], + gasPrice: constants.GAS_PRICE, + }); - const upStake = await dxdVotingMachine.contract.stake( - proposalId, - 1, - 100, - { - from: accounts[1], - } - ); + const upStake = await dxdVotingMachine.stake(proposalId, 1, 100, { + from: accounts[1], + }); // check preBoosted expectEvent(upStake.receipt, "StateChange", { @@ -1888,36 +1525,22 @@ contract("DXDVotingMachine", function (accounts) { _proposalState: "4", }); - await dxdVotingMachine.contract.vote( - proposalId2, - 1, - 0, - constants.NULL_ADDRESS, - { from: accounts[0], gasPrice: constants.GAS_PRICE } - ); + await dxdVotingMachine.vote(proposalId2, 1, 0, constants.NULL_ADDRESS, { + from: accounts[0], + gasPrice: constants.GAS_PRICE, + }); - await dxdVotingMachine.contract.vote( - proposalId2, - 1, - 0, - constants.NULL_ADDRESS, - { from: accounts[3], gasPrice: constants.GAS_PRICE } - ); + await dxdVotingMachine.vote(proposalId2, 1, 0, constants.NULL_ADDRESS, { + from: accounts[3], + gasPrice: constants.GAS_PRICE, + }); // check executed - assert.equal( - (await dxdVotingMachine.contract.proposals(proposalId2)).state, - "2" - ); + assert.equal((await dxdVotingMachine.proposals(proposalId2)).state, "2"); - const downStake = await dxdVotingMachine.contract.stake( - proposalId, - 2, - 50, - { - from: accounts[0], - } - ); + const downStake = await dxdVotingMachine.stake(proposalId, 2, 50, { + from: accounts[0], + }); expectEvent(downStake.receipt, "ConfidenceLevelChange", { _proposalId: proposalId, @@ -2066,16 +1689,17 @@ contract("DXDVotingMachine", function (accounts) { await permissionRegistry.setETHPermission( org.avatar.address, actionMock.address, - testCallFrom(org.avatar.address).substring(0, 10), + helpers.testCallFrom(org.avatar.address).substring(0, 10), 0, true ); stakeProposalId = await helpers.getValueFromLogs( - await cheapVoteWalletScheme.proposeCalls( + await masterAvatarScheme.proposeCalls( [actionMock.address], - [testCallFrom(org.avatar.address)], + [helpers.testCallFrom(org.avatar.address)], [0], + 2, constants.TEST_TITLE, constants.SOME_HASH ), @@ -2083,23 +1707,20 @@ contract("DXDVotingMachine", function (accounts) { ); }); it("should execute a proposal but fail to stake", async function () { - const stake = await dxdVotingMachine.contract.stake( - stakeProposalId, - 1, - 2000, - { - from: accounts[1], - } - ); + const stake = await dxdVotingMachine.stake(stakeProposalId, 1, 2000, { + from: accounts[1], + }); expectEvent(stake.receipt, "StateChange", { _proposalId: stakeProposalId, _proposalState: "4", }); - await time.increase(3600 + 1); + await time.increase( + helpers.defaultParameters.preBoostedVotePeriodLimit + 1 + ); - await dxdVotingMachine.contract.vote( + await dxdVotingMachine.vote( stakeProposalId, 1, 0, @@ -2112,13 +1733,13 @@ contract("DXDVotingMachine", function (accounts) { // check Boosted assert.equal( - (await dxdVotingMachine.contract.proposals(stakeProposalId)).state, + (await dxdVotingMachine.proposals(stakeProposalId)).state, "5" ); - await time.increase(86400 + 1); + await time.increase(helpers.defaultParameters.boostedVotePeriodLimit + 1); - const executeStake = await dxdVotingMachine.contract.stake( + const executeStake = await dxdVotingMachine.stake( stakeProposalId, 1, 2000, @@ -2129,20 +1750,15 @@ contract("DXDVotingMachine", function (accounts) { expectEvent(executeStake.receipt, "StateChange", { _proposalId: stakeProposalId, - _proposalState: "2", // execute state + _proposalState: "2", }); expectEvent.notEmitted(executeStake.receipt, "Stake"); }); it("address cannot upstake and downstake on same proposal", async function () { - const upStake = await dxdVotingMachine.contract.stake( - stakeProposalId, - 1, - 100, - { - from: accounts[1], - } - ); + const upStake = await dxdVotingMachine.stake(stakeProposalId, 1, 100, { + from: accounts[1], + }); expectEvent(upStake.receipt, "Stake", { _proposalId: stakeProposalId, @@ -2152,14 +1768,9 @@ contract("DXDVotingMachine", function (accounts) { _amount: "100", }); - const downStake = await dxdVotingMachine.contract.stake( - stakeProposalId, - 2, - 100, - { - from: accounts[1], - } - ); + const downStake = await dxdVotingMachine.stake(stakeProposalId, 2, 100, { + from: accounts[1], + }); expectEvent.notEmitted(downStake.receipt, "Stake"); }); diff --git a/test/dxvote/Utils.js b/test/dxvote/Utils.js deleted file mode 100644 index 1aa56905..00000000 --- a/test/dxvote/Utils.js +++ /dev/null @@ -1,200 +0,0 @@ -import * as helpers from "../helpers"; - -const { time } = require("@openzeppelin/test-helpers"); -const moment = require("moment"); - -const WalletScheme = artifacts.require("./WalletScheme.sol"); -const PermissionRegistry = artifacts.require("./PermissionRegistry.sol"); -const ERC20Mock = artifacts.require("./ERC20Mock.sol"); -const ERC721Factory = artifacts.require("./ERC721Factory.sol"); -const ERC20VestingFactory = artifacts.require("./ERC20VestingFactory.sol"); -const TokenVesting = artifacts.require("./TokenVesting.sol"); - -contract("Dxvote Utils", function (accounts) { - let standardTokenMock, - permissionRegistry, - masterWalletScheme, - org, - votingMachine, - nftMinter, - vestingFactory; - - const constants = helpers.constants; - const executionTimeout = 172800 + 86400; // _queuedVotePeriodLimit + _boostedVotePeriodLimit - - beforeEach(async function () { - standardTokenMock = await ERC20Mock.new( - "", - "", - web3.utils.toWei("100"), - accounts[1] - ); - org = await helpers.setupOrganization( - [accounts[0], accounts[1], accounts[2]], - [1000, 1000, 1000], - [20000, 10000, 70000] - ); - votingMachine = await helpers.setUpVotingMachine( - standardTokenMock.address, - "dxd" - ); - await standardTokenMock.transfer( - org.avatar.address, - web3.utils.toWei("50"), - { from: accounts[1] } - ); - permissionRegistry = await PermissionRegistry.new(accounts[0], 30); - await permissionRegistry.initialize(); - - masterWalletScheme = await WalletScheme.new(); - await masterWalletScheme.initialize( - org.avatar.address, - votingMachine.address, - true, - org.controller.address, - permissionRegistry.address, - "Master Wallet", - executionTimeout, - 5 - ); - - await helpers.setDefaultControllerPermissions( - permissionRegistry, - org.avatar.address, - org.controller - ); - - nftMinter = await ERC721Factory.new("DXDAO NFT", "DXNFT", { - from: accounts[0], - }); - await nftMinter.transferOwnership(org.avatar.address); - vestingFactory = await ERC20VestingFactory.new( - standardTokenMock.address, - org.avatar.address - ); - - await org.daoCreator.setSchemes( - org.avatar.address, - [masterWalletScheme.address], - [votingMachine.params], - [ - helpers.encodePermission({ - canGenericCall: true, - canUpgrade: true, - canChangeConstraints: true, - canRegisterSchemes: true, - }), - ], - "metaData" - ); - }); - - it("Mint NFT and create DXD vesting in one proposal", async function () { - const approveToVestingFactoryData = standardTokenMock.contract.methods - .approve(vestingFactory.address, constants.MAX_UINT_256) - .encodeABI(); - const vestingStart = moment().unix(); - const createVestingData = vestingFactory.contract.methods - .create( - accounts[3], - vestingStart, - moment.duration(1, "years").asSeconds(), - moment.duration(2, "years").asSeconds(), - web3.utils.toWei("10") - ) - .encodeABI(); - const mintNFTData = nftMinter.contract.methods - .mint(accounts[3], "tokenURIHere") - .encodeABI(); - - await permissionRegistry.addERC20Limit( - org.avatar.address, - standardTokenMock.address, - constants.MAX_UINT_256, - 0 - ); - - await permissionRegistry.setETHPermission( - org.avatar.address, - standardTokenMock.address, - approveToVestingFactoryData.substring(0, 10), - 0, - true - ); - - await permissionRegistry.setETHPermission( - org.avatar.address, - vestingFactory.address, - createVestingData.substring(0, 10), - 0, - true - ); - - await permissionRegistry.setETHPermission( - org.avatar.address, - nftMinter.address, - mintNFTData.substring(0, 10), - 0, - true - ); - - await time.increase(30); - - const tx = await masterWalletScheme.proposeCalls( - [standardTokenMock.address, vestingFactory.address, nftMinter.address], - [approveToVestingFactoryData, createVestingData, mintNFTData], - [0, 0, 0], - constants.TEST_TITLE, - constants.SOME_HASH - ); - - const proposalId = await helpers.getValueFromLogs(tx, "_proposalId"); - - const executionProposalTx = await votingMachine.contract.vote( - proposalId, - 1, - 0, - constants.NULL_ADDRESS, - { from: accounts[2] } - ); - const executionTxEvents = helpers.logDecoder.decodeLogs( - executionProposalTx.receipt.rawLogs - ); - const vestingCreatedEvent = executionTxEvents.find( - event => - event.name === "VestingCreated" && - web3.utils.toChecksumAddress(event.address) === vestingFactory.address - ); - const nftMintedEvent = executionTxEvents.find( - event => - event.name === "Transfer" && - web3.utils.toChecksumAddress(event.address) === nftMinter.address - ); - const vestingContract = await TokenVesting.at( - vestingCreatedEvent.args.vestingContractAddress - ); - assert.equal( - await nftMinter.ownerOf(nftMintedEvent.args.tokenId), - accounts[3] - ); - assert.equal( - await nftMinter.tokenURI(nftMintedEvent.args.tokenId), - "tokenURIHere" - ); - assert.equal(await vestingContract.start(), vestingStart); - assert.equal( - (await vestingContract.cliff()).toNumber(), - vestingStart + moment.duration(1, "years").asSeconds() - ); - assert.equal( - (await vestingContract.duration()).toNumber(), - moment.duration(2, "years").asSeconds() - ); - assert.equal(await vestingContract.revocable(), true); - assert.equal(await vestingContract.beneficiary(), accounts[3]); - assert.equal( - await standardTokenMock.balanceOf(vestingContract.address), - web3.utils.toWei("10") - ); - }); -}); diff --git a/test/erc20guild/ERC20Guild.js b/test/erc20guild/ERC20Guild.js index 06e76746..6dca844e 100644 --- a/test/erc20guild/ERC20Guild.js +++ b/test/erc20guild/ERC20Guild.js @@ -1573,9 +1573,9 @@ contract("ERC20Guild", function (accounts) { guild: erc20Guild, actions: [ { - to: [actionMockA.address, actionMockA.address], - data: ["0x00", "0x00"], - value: [50, 51], + to: [actionMockA.address], + data: ["0x00"], + value: [101], }, ], account: accounts[3], @@ -1586,7 +1586,6 @@ contract("ERC20Guild", function (accounts) { action: 1, account: accounts[3], }); - await setVotesOnProposal({ guild: erc20Guild, proposalId: guildProposalId, diff --git a/test/erc20guild/implementations/DXDGuild.js b/test/erc20guild/implementations/DXDGuild.js index a20ed4cb..536eb5f8 100644 --- a/test/erc20guild/implementations/DXDGuild.js +++ b/test/erc20guild/implementations/DXDGuild.js @@ -15,7 +15,7 @@ const DXDGuild = artifacts.require("DXDGuild.sol"); const PermissionRegistry = artifacts.require("PermissionRegistry.sol"); const ActionMock = artifacts.require("ActionMock.sol"); const ERC20Mock = artifacts.require("ERC20Mock.sol"); -const WalletScheme = artifacts.require("WalletScheme.sol"); +const AvatarScheme = artifacts.require("AvatarScheme.sol"); require("chai").should(); @@ -70,49 +70,18 @@ contract("DXDGuild", function (accounts) { const _daoBountyConst = 10; const _activationTime = 0; - await dxDao.votingMachine.setParameters( - [ - _queuedVoteRequiredPercentage, - _queuedVotePeriodLimit, - _boostedVotePeriodLimit, - _preBoostedVotePeriodLimit, - _thresholdConst, - _quietEndingPeriod, - _proposingRepReward, - _votersReputationLossRatio, - _minimumDaoBounty, - _daoBountyConst, - _activationTime, - ], - voteOnBehalf - ); - - const paramsHash = await dxDao.votingMachine.getParametersHash( - [ - _queuedVoteRequiredPercentage, - _queuedVotePeriodLimit, - _boostedVotePeriodLimit, - _preBoostedVotePeriodLimit, - _thresholdConst, - _quietEndingPeriod, - _proposingRepReward, - _votersReputationLossRatio, - _minimumDaoBounty, - _daoBountyConst, - _activationTime, - ], - voteOnBehalf + const defaultParamsHash = await helpers.setDefaultParameters( + dxDao.votingMachine ); const permissionRegistry = await PermissionRegistry.new(accounts[0], 10); await permissionRegistry.initialize(); - const masterWalletScheme = await WalletScheme.new(); + const masterAvatarScheme = await AvatarScheme.new(); - await masterWalletScheme.initialize( + await masterAvatarScheme.initialize( dxDao.avatar.address, dxDao.votingMachine.address, - true, dxDao.controller.address, permissionRegistry.address, "Master Scheme", @@ -121,8 +90,8 @@ contract("DXDGuild", function (accounts) { ); await dxDao.controller.registerScheme( - masterWalletScheme.address, - paramsHash, + masterAvatarScheme.address, + defaultParamsHash, true, true ); @@ -166,10 +135,10 @@ contract("DXDGuild", function (accounts) { true ); - const tx = await masterWalletScheme.proposeCalls( - [ZERO_ADDRESS, actionMock.address], - ["0x0", helpers.testCallFrom(dxDao.avatar.address)], - [0, 0], + const tx = await masterAvatarScheme.proposeCalls( + [actionMock.address], + [helpers.testCallFrom(dxDao.avatar.address)], + [0], 2, "Test Title", constants.SOME_HASH diff --git a/test/helpers/index.js b/test/helpers/index.js index 7053ec98..039dc1ee 100644 --- a/test/helpers/index.js +++ b/test/helpers/index.js @@ -73,7 +73,8 @@ export const deployDao = async function (deployConfig) { await reputation.transferOwnership(controller.address); const votingMachine = await DXDVotingMachine.new( - deployConfig.votingMachineToken + deployConfig.votingMachineToken, + avatar.address ); return { controller, avatar, reputation, votingMachine }; @@ -103,6 +104,48 @@ export function testCallWithoutReturnValueFrom(address) { .encodeABI(); } +// Parameters +export const defaultParameters = { + voteOnBehalf: constants.NULL_ADDRESS, + queuedVoteRequiredPercentage: 50, + queuedVotePeriodLimit: 60, + boostedVotePeriodLimit: 60, + preBoostedVotePeriodLimit: 10, + thresholdConst: 2000, + quietEndingPeriod: 10, + proposingRepReward: 0, + votersReputationLossRatio: 15, + minimumDaoBounty: 100, + daoBountyConst: 10, + activationTime: 0, +}; + +export const defaultParametersArray = [ + defaultParameters.queuedVoteRequiredPercentage, + defaultParameters.queuedVotePeriodLimit, + defaultParameters.boostedVotePeriodLimit, + defaultParameters.preBoostedVotePeriodLimit, + defaultParameters.thresholdConst, + defaultParameters.quietEndingPeriod, + defaultParameters.proposingRepReward, + defaultParameters.votersReputationLossRatio, + defaultParameters.minimumDaoBounty, + defaultParameters.daoBountyConst, + defaultParameters.activationTime, +]; + +export const setDefaultParameters = async function (votingMachine) { + await votingMachine.setParameters( + defaultParametersArray, + defaultParameters.voteOnBehalf + ); + + return await votingMachine.getParametersHash( + defaultParametersArray, + defaultParameters.voteOnBehalf + ); +}; + export function encodeERC20Transfer(to, value) { return web3.eth.abi.encodeFunctionCall( { diff --git a/test/utils/PermissionRegistry.js b/test/utils/PermissionRegistry.js index 5f6f56e6..960d4393 100644 --- a/test/utils/PermissionRegistry.js +++ b/test/utils/PermissionRegistry.js @@ -3,55 +3,47 @@ import * as helpers from "../helpers"; const { time, expectRevert } = require("@openzeppelin/test-helpers"); const WalletScheme = artifacts.require("./WalletScheme.sol"); +const AvatarScheme = artifacts.require("./AvatarScheme.sol"); const PermissionRegistry = artifacts.require("./PermissionRegistry.sol"); const ERC20Mock = artifacts.require("./ERC20Mock.sol"); const ActionMock = artifacts.require("./ActionMock.sol"); contract("PermissionRegistry", function (accounts) { let permissionRegistry, - masterWalletScheme, + masterAvatarScheme, quickWalletScheme, - org, - actionMock, - votingMachine; + dao, + actionMock; const constants = helpers.constants; const executionTimeout = 172800 + 86400; // _queuedVotePeriodLimit + _boostedVotePeriodLimit beforeEach(async function () { actionMock = await ActionMock.new(); - const standardTokenMock = await ERC20Mock.new("", "", 1000, accounts[1]); - org = await helpers.setupOrganization( - [accounts[0], accounts[1], accounts[2]], - [1000, 1000, 1000], - [20000, 10000, 70000] - ); - votingMachine = await helpers.setUpVotingMachine( - standardTokenMock.address, - "dxd", - constants.NULL_ADDRESS, // voteOnBehalf - 50, // queuedVoteRequiredPercentage - 172800, // queuedVotePeriodLimit - 86400, // boostedVotePeriodLimit - 3600, // preBoostedVotePeriodLimit - 2000, // thresholdConst - 0, // quietEndingPeriod - 0, // proposingRepReward - 0, // votersReputationLossRatio - 15, // minimumDaoBounty - 10, // daoBountyConst - 0 // activationTime + const votingMachineToken = await ERC20Mock.new("", "", 1000, accounts[1]); + + dao = await helpers.deployDao({ + owner: accounts[0], + votingMachineToken: votingMachineToken.address, + repHolders: [ + { address: accounts[0], amount: 20000 }, + { address: accounts[1], amount: 10000 }, + { address: accounts[2], amount: 70000 }, + ], + }); + + const defaultParamsHash = await helpers.setDefaultParameters( + dao.votingMachine ); permissionRegistry = await PermissionRegistry.new(accounts[0], 30); await permissionRegistry.initialize(); - masterWalletScheme = await WalletScheme.new(); - await masterWalletScheme.initialize( - org.avatar.address, - votingMachine.address, - true, - org.controller.address, + masterAvatarScheme = await AvatarScheme.new(); + await masterAvatarScheme.initialize( + dao.avatar.address, + dao.votingMachine.address, + dao.controller.address, permissionRegistry.address, "Master Wallet", executionTimeout, @@ -60,10 +52,9 @@ contract("PermissionRegistry", function (accounts) { quickWalletScheme = await WalletScheme.new(); await quickWalletScheme.initialize( - org.avatar.address, - votingMachine.address, - false, - org.controller.address, + dao.avatar.address, + dao.votingMachine.address, + dao.controller.address, permissionRegistry.address, "Quick Wallet", executionTimeout, @@ -72,25 +63,17 @@ contract("PermissionRegistry", function (accounts) { await time.increase(30); - await org.daoCreator.setSchemes( - org.avatar.address, - [masterWalletScheme.address, quickWalletScheme.address], - [votingMachine.params, votingMachine.params], - [ - helpers.encodePermission({ - canGenericCall: true, - canUpgrade: true, - canChangeConstraints: true, - canRegisterSchemes: true, - }), - helpers.encodePermission({ - canGenericCall: false, - canUpgrade: false, - canChangeConstraints: false, - canRegisterSchemes: false, - }), - ], - "metaData" + await dao.controller.registerScheme( + masterAvatarScheme.address, + defaultParamsHash, + false, + true + ); + await dao.controller.registerScheme( + quickWalletScheme.address, + defaultParamsHash, + false, + false ); }); @@ -105,14 +88,14 @@ contract("PermissionRegistry", function (accounts) { const callData = helpers.testCallFrom(quickWalletScheme.address); await permissionRegistry.setETHPermission( - org.avatar.address, + dao.avatar.address, actionMock.address, callData.substring(0, 10), constants.MAX_UINT_256, false ); - await permissionRegistry.transferOwnership(org.avatar.address); + await permissionRegistry.transferOwnership(dao.avatar.address); await expectRevert( permissionRegistry.transferOwnership(accounts[0]), @@ -122,7 +105,7 @@ contract("PermissionRegistry", function (accounts) { const setETHPermissionDelayData = new web3.eth.Contract( PermissionRegistry.abi ).methods - .setETHPermissionDelay(quickWalletScheme.address, 60) + .setETHPermissionDelay(quickWalletScheme.address, 45) .encodeABI(); const setETHPermissionData = new web3.eth.Contract( @@ -137,10 +120,11 @@ contract("PermissionRegistry", function (accounts) { ) .encodeABI(); - const tx = await masterWalletScheme.proposeCalls( + const tx = await masterAvatarScheme.proposeCalls( [permissionRegistry.address, permissionRegistry.address], [setETHPermissionDelayData, setETHPermissionData], [0, 0], + 2, constants.TEST_TITLE, constants.SOME_HASH ); @@ -157,13 +141,9 @@ contract("PermissionRegistry", function (accounts) { 0 ); - await votingMachine.contract.vote( - proposalId1, - 1, - 0, - constants.NULL_ADDRESS, - { from: accounts[2] } - ); + await dao.votingMachine.vote(proposalId1, 1, 0, constants.NULL_ADDRESS, { + from: accounts[2], + }); assert.equal( ( @@ -173,16 +153,16 @@ contract("PermissionRegistry", function (accounts) { callData.substring(0, 10) ) ).fromTime.toString(), - (await time.latest()).toNumber() + 60 + (await time.latest()).toNumber() + 45 ); assert.equal( await permissionRegistry.getETHPermissionDelay(quickWalletScheme.address), - 60 + 45 ); assert.equal( - (await masterWalletScheme.getOrganizationProposal(proposalId1)).state, + (await masterAvatarScheme.getOrganizationProposal(proposalId1)).state, constants.WALLET_SCHEME_PROPOSAL_STATES.executionSuccedd ); @@ -190,28 +170,25 @@ contract("PermissionRegistry", function (accounts) { [actionMock.address], [callData], [0], + 2, constants.TEST_TITLE, constants.SOME_HASH ); const proposalId2 = await helpers.getValueFromLogs(tx2, "_proposalId"); - // The call to execute is not allowed YET, because we change the delay time to 60 seconds + // The call to execute is not allowed YET, because we change the delay time to 45 seconds await expectRevert( - votingMachine.contract.vote(proposalId2, 1, 0, constants.NULL_ADDRESS, { + dao.votingMachine.vote(proposalId2, 1, 0, constants.NULL_ADDRESS, { from: accounts[2], }), "PermissionRegistry: Call not allowed yet" ); // After increasing the time it will allow the proposal execution - await time.increase(60); - await votingMachine.contract.vote( - proposalId2, - 1, - 0, - constants.NULL_ADDRESS, - { from: accounts[2] } - ); + await time.increase(45); + await dao.votingMachine.vote(proposalId2, 1, 0, constants.NULL_ADDRESS, { + from: accounts[2], + }); const organizationProposal = await quickWalletScheme.getOrganizationProposal(proposalId2); @@ -253,12 +230,13 @@ contract("PermissionRegistry", function (accounts) { ) .encodeABI(); - await permissionRegistry.transferOwnership(org.avatar.address); + await permissionRegistry.transferOwnership(dao.avatar.address); const tx = await quickWalletScheme.proposeCalls( [permissionRegistry.address, permissionRegistry.address], [setETHPermissionDelayData, setETHPermissionData], [0, 0], + 2, constants.TEST_TITLE, constants.SOME_HASH ); @@ -286,13 +264,9 @@ contract("PermissionRegistry", function (accounts) { "666" ); - await votingMachine.contract.vote( - proposalId, - 1, - 0, - constants.NULL_ADDRESS, - { from: accounts[2] } - ); + await dao.votingMachine.vote(proposalId, 1, 0, constants.NULL_ADDRESS, { + from: accounts[2], + }); assert.equal( (await quickWalletScheme.getOrganizationProposal(proposalId)).state,