From e7ebb7be56148c9fdbf3301f1a615d5d1de6b923 Mon Sep 17 00:00:00 2001 From: Iulian Pascalau Date: Fri, 6 Sep 2024 22:02:20 +0300 Subject: [PATCH 1/2] - added integration test with the init supply functionality - integrated new contracts --- clients/ethereum/contract/ERC20Safe.go | 44 +++++++++++++++- .../ethToMultiversXWithChainSimulator_test.go | 15 ++++++ .../slowTests/framework/ethereumHandler.go | 41 +++++++++++++-- .../relayers/slowTests/framework/keys.go | 10 ++-- .../slowTests/framework/multiversxHandler.go | 44 ++++++++++++++++ .../relayers/slowTests/framework/types.go | 6 +++ .../testdata/contracts/eth/ERC20Safe.abi.json | 36 ++++++++++++++ .../testdata/contracts/eth/ERC20Safe.hex | 2 +- .../contracts/mvx/bridge-proxy.abi.json | 8 +-- .../testdata/contracts/mvx/bridge-proxy.wasm | Bin 15755 -> 15806 bytes .../mvx/bridged-tokens-wrapper.abi.json | 8 +-- .../contracts/mvx/bridged-tokens-wrapper.wasm | Bin 11975 -> 12026 bytes .../testdata/contracts/mvx/esdt-safe.abi.json | 28 +++++++++-- .../testdata/contracts/mvx/esdt-safe.wasm | Bin 30756 -> 30834 bytes .../mvx/multi-transfer-esdt.abi.json | 8 +-- .../contracts/mvx/multi-transfer-esdt.wasm | Bin 21036 -> 21170 bytes .../testdata/contracts/mvx/multisig.abi.json | 47 ++++++++++++++++-- .../testdata/contracts/mvx/multisig.wasm | Bin 36527 -> 37293 bytes .../contracts/mvx/test-caller.abi.json | 8 +-- .../testdata/contracts/mvx/test-caller.wasm | Bin 3982 -> 4032 bytes 20 files changed, 270 insertions(+), 35 deletions(-) diff --git a/clients/ethereum/contract/ERC20Safe.go b/clients/ethereum/contract/ERC20Safe.go index d5d48c2c..b50a5f45 100644 --- a/clients/ethereum/contract/ERC20Safe.go +++ b/clients/ethereum/contract/ERC20Safe.go @@ -31,7 +31,7 @@ var ( // ERC20SafeMetaData contains all meta data concerning the ERC20Safe contract. var ERC20SafeMetaData = &bind.MetaData{ - ABI: "[{\"inputs\":[{\"internalType\":\"address\",\"name\":\"target\",\"type\":\"address\"}],\"name\":\"AddressEmptyCode\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"account\",\"type\":\"address\"}],\"name\":\"AddressInsufficientBalance\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"FailedInnerCall\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"InvalidInitialization\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"NotInitializing\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"token\",\"type\":\"address\"}],\"name\":\"SafeERC20FailedOperation\",\"type\":\"error\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"previousAdmin\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"newAdmin\",\"type\":\"address\"}],\"name\":\"AdminRoleTransferred\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"previousBridge\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"newBridge\",\"type\":\"address\"}],\"name\":\"BridgeTransferred\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"uint112\",\"name\":\"batchId\",\"type\":\"uint112\"},{\"indexed\":false,\"internalType\":\"uint112\",\"name\":\"depositNonce\",\"type\":\"uint112\"}],\"name\":\"ERC20Deposit\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"uint112\",\"name\":\"batchId\",\"type\":\"uint112\"},{\"indexed\":false,\"internalType\":\"uint112\",\"name\":\"depositNonce\",\"type\":\"uint112\"},{\"indexed\":false,\"internalType\":\"bytes\",\"name\":\"callData\",\"type\":\"bytes\"}],\"name\":\"ERC20SCDeposit\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"uint64\",\"name\":\"version\",\"type\":\"uint64\"}],\"name\":\"Initialized\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"bool\",\"name\":\"isPause\",\"type\":\"bool\"}],\"name\":\"Pause\",\"type\":\"event\"},{\"inputs\":[],\"name\":\"admin\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"batchBlockLimit\",\"outputs\":[{\"internalType\":\"uint8\",\"name\":\"\",\"type\":\"uint8\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"name\":\"batchDeposits\",\"outputs\":[{\"internalType\":\"uint112\",\"name\":\"nonce\",\"type\":\"uint112\"},{\"internalType\":\"address\",\"name\":\"tokenAddress\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"amount\",\"type\":\"uint256\"},{\"internalType\":\"address\",\"name\":\"depositor\",\"type\":\"address\"},{\"internalType\":\"bytes32\",\"name\":\"recipient\",\"type\":\"bytes32\"},{\"internalType\":\"enumDepositStatus\",\"name\":\"status\",\"type\":\"uint8\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"batchSettleLimit\",\"outputs\":[{\"internalType\":\"uint8\",\"name\":\"\",\"type\":\"uint8\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"batchSize\",\"outputs\":[{\"internalType\":\"uint16\",\"name\":\"\",\"type\":\"uint16\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"name\":\"batches\",\"outputs\":[{\"internalType\":\"uint112\",\"name\":\"nonce\",\"type\":\"uint112\"},{\"internalType\":\"uint64\",\"name\":\"blockNumber\",\"type\":\"uint64\"},{\"internalType\":\"uint64\",\"name\":\"lastUpdatedBlockNumber\",\"type\":\"uint64\"},{\"internalType\":\"uint16\",\"name\":\"depositsCount\",\"type\":\"uint16\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"batchesCount\",\"outputs\":[{\"internalType\":\"uint64\",\"name\":\"\",\"type\":\"uint64\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"bridge\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"name\":\"burnBalances\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"tokenAddress\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"amount\",\"type\":\"uint256\"},{\"internalType\":\"bytes32\",\"name\":\"recipientAddress\",\"type\":\"bytes32\"}],\"name\":\"deposit\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"tokenAddress\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"amount\",\"type\":\"uint256\"},{\"internalType\":\"bytes32\",\"name\":\"recipientAddress\",\"type\":\"bytes32\"},{\"internalType\":\"bytes\",\"name\":\"callData\",\"type\":\"bytes\"}],\"name\":\"depositWithSCExecution\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"depositsCount\",\"outputs\":[{\"internalType\":\"uint64\",\"name\":\"\",\"type\":\"uint64\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"batchNonce\",\"type\":\"uint256\"}],\"name\":\"getBatch\",\"outputs\":[{\"components\":[{\"internalType\":\"uint112\",\"name\":\"nonce\",\"type\":\"uint112\"},{\"internalType\":\"uint64\",\"name\":\"blockNumber\",\"type\":\"uint64\"},{\"internalType\":\"uint64\",\"name\":\"lastUpdatedBlockNumber\",\"type\":\"uint64\"},{\"internalType\":\"uint16\",\"name\":\"depositsCount\",\"type\":\"uint16\"}],\"internalType\":\"structBatch\",\"name\":\"\",\"type\":\"tuple\"},{\"internalType\":\"bool\",\"name\":\"isBatchFinal\",\"type\":\"bool\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"batchNonce\",\"type\":\"uint256\"}],\"name\":\"getDeposits\",\"outputs\":[{\"components\":[{\"internalType\":\"uint112\",\"name\":\"nonce\",\"type\":\"uint112\"},{\"internalType\":\"address\",\"name\":\"tokenAddress\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"amount\",\"type\":\"uint256\"},{\"internalType\":\"address\",\"name\":\"depositor\",\"type\":\"address\"},{\"internalType\":\"bytes32\",\"name\":\"recipient\",\"type\":\"bytes32\"},{\"internalType\":\"enumDepositStatus\",\"name\":\"status\",\"type\":\"uint8\"}],\"internalType\":\"structDeposit[]\",\"name\":\"\",\"type\":\"tuple[]\"},{\"internalType\":\"bool\",\"name\":\"areDepositsFinal\",\"type\":\"bool\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"token\",\"type\":\"address\"}],\"name\":\"getTokenMaxLimit\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"token\",\"type\":\"address\"}],\"name\":\"getTokenMinLimit\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"tokenAddress\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"amount\",\"type\":\"uint256\"}],\"name\":\"initSupply\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"initialize\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"isAnyBatchInProgress\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"token\",\"type\":\"address\"}],\"name\":\"isTokenWhitelisted\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"name\":\"mintBalances\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"name\":\"mintBurnTokens\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"name\":\"nativeTokens\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"pause\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"paused\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"tokenAddress\",\"type\":\"address\"}],\"name\":\"recoverLostFunds\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"token\",\"type\":\"address\"}],\"name\":\"removeTokenFromWhitelist\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"renounceAdmin\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint8\",\"name\":\"newBatchBlockLimit\",\"type\":\"uint8\"}],\"name\":\"setBatchBlockLimit\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint8\",\"name\":\"newBatchSettleLimit\",\"type\":\"uint8\"}],\"name\":\"setBatchSettleLimit\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint16\",\"name\":\"newBatchSize\",\"type\":\"uint16\"}],\"name\":\"setBatchSize\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"newBridge\",\"type\":\"address\"}],\"name\":\"setBridge\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"token\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"amount\",\"type\":\"uint256\"}],\"name\":\"setTokenMaxLimit\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"token\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"amount\",\"type\":\"uint256\"}],\"name\":\"setTokenMinLimit\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"name\":\"tokenMaxLimits\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"name\":\"tokenMinLimits\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"name\":\"totalBalances\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"tokenAddress\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"amount\",\"type\":\"uint256\"},{\"internalType\":\"address\",\"name\":\"recipientAddress\",\"type\":\"address\"}],\"name\":\"transfer\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"newAdmin\",\"type\":\"address\"}],\"name\":\"transferAdmin\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"unpause\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"token\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"minimumAmount\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"maximumAmount\",\"type\":\"uint256\"},{\"internalType\":\"bool\",\"name\":\"mintBurn\",\"type\":\"bool\"},{\"internalType\":\"bool\",\"name\":\"native\",\"type\":\"bool\"}],\"name\":\"whitelistToken\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"name\":\"whitelistedTokens\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"view\",\"type\":\"function\"}]", + ABI: "[{\"inputs\":[{\"internalType\":\"address\",\"name\":\"target\",\"type\":\"address\"}],\"name\":\"AddressEmptyCode\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"account\",\"type\":\"address\"}],\"name\":\"AddressInsufficientBalance\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"FailedInnerCall\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"InvalidInitialization\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"NotInitializing\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"token\",\"type\":\"address\"}],\"name\":\"SafeERC20FailedOperation\",\"type\":\"error\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"previousAdmin\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"newAdmin\",\"type\":\"address\"}],\"name\":\"AdminRoleTransferred\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"previousBridge\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"newBridge\",\"type\":\"address\"}],\"name\":\"BridgeTransferred\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"uint112\",\"name\":\"batchId\",\"type\":\"uint112\"},{\"indexed\":false,\"internalType\":\"uint112\",\"name\":\"depositNonce\",\"type\":\"uint112\"}],\"name\":\"ERC20Deposit\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"uint112\",\"name\":\"batchId\",\"type\":\"uint112\"},{\"indexed\":false,\"internalType\":\"uint112\",\"name\":\"depositNonce\",\"type\":\"uint112\"},{\"indexed\":false,\"internalType\":\"bytes\",\"name\":\"callData\",\"type\":\"bytes\"}],\"name\":\"ERC20SCDeposit\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"uint64\",\"name\":\"version\",\"type\":\"uint64\"}],\"name\":\"Initialized\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"bool\",\"name\":\"isPause\",\"type\":\"bool\"}],\"name\":\"Pause\",\"type\":\"event\"},{\"inputs\":[],\"name\":\"admin\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"batchBlockLimit\",\"outputs\":[{\"internalType\":\"uint8\",\"name\":\"\",\"type\":\"uint8\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"name\":\"batchDeposits\",\"outputs\":[{\"internalType\":\"uint112\",\"name\":\"nonce\",\"type\":\"uint112\"},{\"internalType\":\"address\",\"name\":\"tokenAddress\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"amount\",\"type\":\"uint256\"},{\"internalType\":\"address\",\"name\":\"depositor\",\"type\":\"address\"},{\"internalType\":\"bytes32\",\"name\":\"recipient\",\"type\":\"bytes32\"},{\"internalType\":\"enumDepositStatus\",\"name\":\"status\",\"type\":\"uint8\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"batchSettleLimit\",\"outputs\":[{\"internalType\":\"uint8\",\"name\":\"\",\"type\":\"uint8\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"batchSize\",\"outputs\":[{\"internalType\":\"uint16\",\"name\":\"\",\"type\":\"uint16\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"name\":\"batches\",\"outputs\":[{\"internalType\":\"uint112\",\"name\":\"nonce\",\"type\":\"uint112\"},{\"internalType\":\"uint64\",\"name\":\"blockNumber\",\"type\":\"uint64\"},{\"internalType\":\"uint64\",\"name\":\"lastUpdatedBlockNumber\",\"type\":\"uint64\"},{\"internalType\":\"uint16\",\"name\":\"depositsCount\",\"type\":\"uint16\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"batchesCount\",\"outputs\":[{\"internalType\":\"uint64\",\"name\":\"\",\"type\":\"uint64\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"bridge\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"name\":\"burnBalances\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"tokenAddress\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"amount\",\"type\":\"uint256\"},{\"internalType\":\"bytes32\",\"name\":\"recipientAddress\",\"type\":\"bytes32\"}],\"name\":\"deposit\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"tokenAddress\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"amount\",\"type\":\"uint256\"},{\"internalType\":\"bytes32\",\"name\":\"recipientAddress\",\"type\":\"bytes32\"},{\"internalType\":\"bytes\",\"name\":\"callData\",\"type\":\"bytes\"}],\"name\":\"depositWithSCExecution\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"depositsCount\",\"outputs\":[{\"internalType\":\"uint64\",\"name\":\"\",\"type\":\"uint64\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"batchNonce\",\"type\":\"uint256\"}],\"name\":\"getBatch\",\"outputs\":[{\"components\":[{\"internalType\":\"uint112\",\"name\":\"nonce\",\"type\":\"uint112\"},{\"internalType\":\"uint64\",\"name\":\"blockNumber\",\"type\":\"uint64\"},{\"internalType\":\"uint64\",\"name\":\"lastUpdatedBlockNumber\",\"type\":\"uint64\"},{\"internalType\":\"uint16\",\"name\":\"depositsCount\",\"type\":\"uint16\"}],\"internalType\":\"structBatch\",\"name\":\"\",\"type\":\"tuple\"},{\"internalType\":\"bool\",\"name\":\"isBatchFinal\",\"type\":\"bool\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"batchNonce\",\"type\":\"uint256\"}],\"name\":\"getDeposits\",\"outputs\":[{\"components\":[{\"internalType\":\"uint112\",\"name\":\"nonce\",\"type\":\"uint112\"},{\"internalType\":\"address\",\"name\":\"tokenAddress\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"amount\",\"type\":\"uint256\"},{\"internalType\":\"address\",\"name\":\"depositor\",\"type\":\"address\"},{\"internalType\":\"bytes32\",\"name\":\"recipient\",\"type\":\"bytes32\"},{\"internalType\":\"enumDepositStatus\",\"name\":\"status\",\"type\":\"uint8\"}],\"internalType\":\"structDeposit[]\",\"name\":\"\",\"type\":\"tuple[]\"},{\"internalType\":\"bool\",\"name\":\"areDepositsFinal\",\"type\":\"bool\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"token\",\"type\":\"address\"}],\"name\":\"getTokenMaxLimit\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"token\",\"type\":\"address\"}],\"name\":\"getTokenMinLimit\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"tokenAddress\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"amount\",\"type\":\"uint256\"}],\"name\":\"initSupply\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"tokenAddress\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"burnAmount\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"mintAmount\",\"type\":\"uint256\"}],\"name\":\"initSupplyMintBurn\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"initialize\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"isAnyBatchInProgress\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"token\",\"type\":\"address\"}],\"name\":\"isTokenWhitelisted\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"name\":\"mintBalances\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"name\":\"mintBurnTokens\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"name\":\"nativeTokens\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"pause\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"paused\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"tokenAddress\",\"type\":\"address\"}],\"name\":\"recoverLostFunds\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"token\",\"type\":\"address\"}],\"name\":\"removeTokenFromWhitelist\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"renounceAdmin\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"tokenAddress\",\"type\":\"address\"}],\"name\":\"resetTotalBalance\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint8\",\"name\":\"newBatchBlockLimit\",\"type\":\"uint8\"}],\"name\":\"setBatchBlockLimit\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint8\",\"name\":\"newBatchSettleLimit\",\"type\":\"uint8\"}],\"name\":\"setBatchSettleLimit\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint16\",\"name\":\"newBatchSize\",\"type\":\"uint16\"}],\"name\":\"setBatchSize\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"newBridge\",\"type\":\"address\"}],\"name\":\"setBridge\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"token\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"amount\",\"type\":\"uint256\"}],\"name\":\"setTokenMaxLimit\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"token\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"amount\",\"type\":\"uint256\"}],\"name\":\"setTokenMinLimit\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"name\":\"tokenMaxLimits\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"name\":\"tokenMinLimits\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"name\":\"totalBalances\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"tokenAddress\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"amount\",\"type\":\"uint256\"},{\"internalType\":\"address\",\"name\":\"recipientAddress\",\"type\":\"address\"}],\"name\":\"transfer\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"newAdmin\",\"type\":\"address\"}],\"name\":\"transferAdmin\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"unpause\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"token\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"minimumAmount\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"maximumAmount\",\"type\":\"uint256\"},{\"internalType\":\"bool\",\"name\":\"mintBurn\",\"type\":\"bool\"},{\"internalType\":\"bool\",\"name\":\"native\",\"type\":\"bool\"}],\"name\":\"whitelistToken\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"name\":\"whitelistedTokens\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"view\",\"type\":\"function\"}]", } // ERC20SafeABI is the input ABI used to generate the binding from. @@ -1047,6 +1047,27 @@ func (_ERC20Safe *ERC20SafeTransactorSession) InitSupply(tokenAddress common.Add return _ERC20Safe.Contract.InitSupply(&_ERC20Safe.TransactOpts, tokenAddress, amount) } +// InitSupplyMintBurn is a paid mutator transaction binding the contract method 0xe9935b4a. +// +// Solidity: function initSupplyMintBurn(address tokenAddress, uint256 burnAmount, uint256 mintAmount) returns() +func (_ERC20Safe *ERC20SafeTransactor) InitSupplyMintBurn(opts *bind.TransactOpts, tokenAddress common.Address, burnAmount *big.Int, mintAmount *big.Int) (*types.Transaction, error) { + return _ERC20Safe.contract.Transact(opts, "initSupplyMintBurn", tokenAddress, burnAmount, mintAmount) +} + +// InitSupplyMintBurn is a paid mutator transaction binding the contract method 0xe9935b4a. +// +// Solidity: function initSupplyMintBurn(address tokenAddress, uint256 burnAmount, uint256 mintAmount) returns() +func (_ERC20Safe *ERC20SafeSession) InitSupplyMintBurn(tokenAddress common.Address, burnAmount *big.Int, mintAmount *big.Int) (*types.Transaction, error) { + return _ERC20Safe.Contract.InitSupplyMintBurn(&_ERC20Safe.TransactOpts, tokenAddress, burnAmount, mintAmount) +} + +// InitSupplyMintBurn is a paid mutator transaction binding the contract method 0xe9935b4a. +// +// Solidity: function initSupplyMintBurn(address tokenAddress, uint256 burnAmount, uint256 mintAmount) returns() +func (_ERC20Safe *ERC20SafeTransactorSession) InitSupplyMintBurn(tokenAddress common.Address, burnAmount *big.Int, mintAmount *big.Int) (*types.Transaction, error) { + return _ERC20Safe.Contract.InitSupplyMintBurn(&_ERC20Safe.TransactOpts, tokenAddress, burnAmount, mintAmount) +} + // Initialize is a paid mutator transaction binding the contract method 0x8129fc1c. // // Solidity: function initialize() returns() @@ -1152,6 +1173,27 @@ func (_ERC20Safe *ERC20SafeTransactorSession) RenounceAdmin() (*types.Transactio return _ERC20Safe.Contract.RenounceAdmin(&_ERC20Safe.TransactOpts) } +// ResetTotalBalance is a paid mutator transaction binding the contract method 0xd2763186. +// +// Solidity: function resetTotalBalance(address tokenAddress) returns() +func (_ERC20Safe *ERC20SafeTransactor) ResetTotalBalance(opts *bind.TransactOpts, tokenAddress common.Address) (*types.Transaction, error) { + return _ERC20Safe.contract.Transact(opts, "resetTotalBalance", tokenAddress) +} + +// ResetTotalBalance is a paid mutator transaction binding the contract method 0xd2763186. +// +// Solidity: function resetTotalBalance(address tokenAddress) returns() +func (_ERC20Safe *ERC20SafeSession) ResetTotalBalance(tokenAddress common.Address) (*types.Transaction, error) { + return _ERC20Safe.Contract.ResetTotalBalance(&_ERC20Safe.TransactOpts, tokenAddress) +} + +// ResetTotalBalance is a paid mutator transaction binding the contract method 0xd2763186. +// +// Solidity: function resetTotalBalance(address tokenAddress) returns() +func (_ERC20Safe *ERC20SafeTransactorSession) ResetTotalBalance(tokenAddress common.Address) (*types.Transaction, error) { + return _ERC20Safe.Contract.ResetTotalBalance(&_ERC20Safe.TransactOpts, tokenAddress) +} + // SetBatchBlockLimit is a paid mutator transaction binding the contract method 0xe8a70ee2. // // Solidity: function setBatchBlockLimit(uint8 newBatchBlockLimit) returns() diff --git a/integrationTests/relayers/slowTests/ethToMultiversXWithChainSimulator_test.go b/integrationTests/relayers/slowTests/ethToMultiversXWithChainSimulator_test.go index 6730ddce..d1e86b8d 100644 --- a/integrationTests/relayers/slowTests/ethToMultiversXWithChainSimulator_test.go +++ b/integrationTests/relayers/slowTests/ethToMultiversXWithChainSimulator_test.go @@ -92,6 +92,21 @@ func TestRelayerShouldExecuteTransfersAndNotCatchErrors(t *testing.T) { ) } +func TestRelayersShouldExecuteTransfersWithInitSupply(t *testing.T) { + usdcToken := GenerateTestUSDCToken() + usdcToken.InitialSupplyValue = "100000" + + memeToken := GenerateTestMEMEToken() + memeToken.InitialSupplyValue = "200000" + + _ = testRelayersWithChainSimulatorAndTokens( + t, + make(chan error), + usdcToken, + memeToken, + ) +} + func testRelayersWithChainSimulatorAndTokens(tb testing.TB, manualStopChan chan error, tokens ...framework.TestTokenParams) *framework.TestSetup { startsFromEthFlow, startsFromMvXFlow := createFlowsBasedOnToken(tb, tokens...) diff --git a/integrationTests/relayers/slowTests/framework/ethereumHandler.go b/integrationTests/relayers/slowTests/framework/ethereumHandler.go index 437b5af1..45d8178a 100644 --- a/integrationTests/relayers/slowTests/framework/ethereumHandler.go +++ b/integrationTests/relayers/slowTests/framework/ethereumHandler.go @@ -266,6 +266,24 @@ func (handler *EthereumHandler) IssueAndWhitelistToken(ctx context.Context, para require.NoError(handler, err) handler.SimulatedChain.Commit() handler.checkEthTxResult(ctx, tx.Hash()) + + if len(params.InitialSupplyValue) > 0 { + if params.IsMintBurnOnEth { + mintAmount, ok := big.NewInt(0).SetString(params.InitialSupplyValue, 10) + require.True(handler, ok) + + tx, err = handler.SafeContract.InitSupplyMintBurn(auth, erc20Address, big.NewInt(0), mintAmount) + require.NoError(handler, err) + handler.SimulatedChain.Commit() + handler.checkEthTxResult(ctx, tx.Hash()) + } else { + // reset the tokens value for the safe contract, so it will "know" about the balance that it has in the ERC20 contract + tx, err = handler.SafeContract.ResetTotalBalance(auth, erc20Address) + require.NoError(handler, err) + handler.SimulatedChain.Commit() + handler.checkEthTxResult(ctx, tx.Hash()) + } + } } func (handler *EthereumHandler) deployTestERC20Contract(ctx context.Context, params IssueTokenParams) (common.Address, ERC20Contract) { @@ -328,20 +346,33 @@ func (handler *EthereumHandler) deployTestERC20Contract(ctx context.Context, par require.NoError(handler, err) // mint the address that will create the transfers + handler.mintTokens(ctx, ethGenericTokenContract, params.ValueToMintOnEth, handler.TestKeys.EthAddress) + if len(params.InitialSupplyValue) > 0 { + handler.mintTokens(ctx, ethGenericTokenContract, params.InitialSupplyValue, handler.SafeAddress) + } + + return ethGenericTokenAddress, ethGenericTokenContract +} + +func (handler *EthereumHandler) mintTokens( + ctx context.Context, + ethGenericTokenContract *contract.GenericERC20, + value string, + recipientAddress common.Address, +) { auth, _ := bind.NewKeyedTransactorWithChainID(handler.DepositorKeys.EthSK, handler.ChainID) - mintAmount, ok := big.NewInt(0).SetString(params.ValueToMintOnEth, 10) + mintAmount, ok := big.NewInt(0).SetString(value, 10) require.True(handler, ok) - tx, err := ethGenericTokenContract.Mint(auth, handler.TestKeys.EthAddress, mintAmount) + + tx, err := ethGenericTokenContract.Mint(auth, recipientAddress, mintAmount) require.NoError(handler, err) handler.SimulatedChain.Commit() handler.checkEthTxResult(ctx, tx.Hash()) - balance, err := ethGenericTokenContract.BalanceOf(nil, handler.TestKeys.EthAddress) + balance, err := ethGenericTokenContract.BalanceOf(nil, recipientAddress) require.NoError(handler, err) require.Equal(handler, mintAmount.String(), balance.String()) - - return ethGenericTokenAddress, ethGenericTokenContract } // CreateBatchOnEthereum will create a batch on Ethereum using the provided tokens parameters list diff --git a/integrationTests/relayers/slowTests/framework/keys.go b/integrationTests/relayers/slowTests/framework/keys.go index 07607061..6264ead2 100644 --- a/integrationTests/relayers/slowTests/framework/keys.go +++ b/integrationTests/relayers/slowTests/framework/keys.go @@ -12,8 +12,6 @@ import ( "github.com/ethereum/go-ethereum/common" "github.com/ethereum/go-ethereum/crypto" - "github.com/multiversx/mx-chain-crypto-go/signing" - "github.com/multiversx/mx-chain-crypto-go/signing/ed25519" "github.com/stretchr/testify/require" ) @@ -64,6 +62,9 @@ func NewKeysStore( keysStore.generateRelayersKeys(numRelayers) keysStore.SCExecutorKeys = keysStore.generateKey("") keysStore.OwnerKeys = keysStore.generateKey(ethOwnerSK) + log.Info("generated owner", + "MvX address", keysStore.OwnerKeys.MvxAddress.Bech32(), + "Eth address", keysStore.OwnerKeys.EthAddress.String()) keysStore.DepositorKeys = keysStore.generateKey(ethDepositorSK) keysStore.TestKeys = keysStore.generateKey(ethTestSk) @@ -79,7 +80,9 @@ func (keyStore *KeysStore) generateRelayersKeys(numKeys int) { require.Nil(keyStore, err) relayerKeys := keyStore.generateKey(string(relayerETHSKBytes)) - log.Info("generated relayer", "index", i, "address", relayerKeys.MvxAddress.Bytes()) + log.Info("generated relayer", "index", i, + "MvX address", relayerKeys.MvxAddress.Bech32(), + "Eth address", relayerKeys.EthAddress.String()) keyStore.RelayersKeys = append(keyStore.RelayersKeys, relayerKeys) @@ -144,7 +147,6 @@ func (keyStore *KeysStore) WalletsToFundOnMultiversX() []string { // GenerateMvxPrivatePublicKey will generate a new keys holder instance that will hold only the MultiversX generated keys func GenerateMvxPrivatePublicKey(tb testing.TB) KeysHolder { - keyGenerator := signing.NewKeyGenerator(ed25519.NewEd25519()) sk, pk := keyGenerator.GeneratePair() skBytes, err := sk.ToByteArray() diff --git a/integrationTests/relayers/slowTests/framework/multiversxHandler.go b/integrationTests/relayers/slowTests/framework/multiversxHandler.go index 1f5b1c0e..1aebcf71 100644 --- a/integrationTests/relayers/slowTests/framework/multiversxHandler.go +++ b/integrationTests/relayers/slowTests/framework/multiversxHandler.go @@ -67,6 +67,8 @@ const ( createTransactionFunction = "createTransaction" unwrapTokenFunction = "unwrapToken" setupBridgedTokenWrapperFunction = "setBridgedTokensWrapper" + initSupplyMintBurnEsdtSafe = "initSupplyMintBurnEsdtSafe" + initSupplyEsdtSafe = "initSupplyEsdtSafe" ) var ( @@ -619,6 +621,48 @@ func (handler *MultiversxHandler) IssueAndWhitelistToken(ctx context.Context, pa getHexBool(params.IsNativeOnMvX)}) log.Info("whitelist token tx executed", "hash", hash, "status", txResult.Status) + // set initial supply + if len(params.InitialSupplyValue) > 0 { + initialSupply, okConvert := big.NewInt(0).SetString(params.InitialSupplyValue, 10) + require.True(handler, okConvert) + + if params.IsMintBurnOnMvX { + hash, txResult = handler.ChainSimulator.ScCall( + ctx, + handler.OwnerKeys.MvxSk, + handler.MultisigAddress, + zeroStringValue, + setCallsGasLimit, + initSupplyMintBurnEsdtSafe, + []string{ + hex.EncodeToString([]byte(mvxChainSpecificToken)), + hex.EncodeToString(initialSupply.Bytes()), + hex.EncodeToString([]byte{0}), + }, + ) + log.Info("initial supply tx executed", "hash", hash, "status", txResult.Status, + "initial mint", params.InitialSupplyValue, "initial burned", "0") + } else { + hash, txResult = handler.ChainSimulator.ScCall( + ctx, + handler.OwnerKeys.MvxSk, + handler.MultisigAddress, + zeroStringValue, + setCallsGasLimit, + esdtTransferFunction, + []string{ + hex.EncodeToString([]byte(mvxChainSpecificToken)), + hex.EncodeToString(initialSupply.Bytes()), + hex.EncodeToString([]byte(initSupplyEsdtSafe)), + hex.EncodeToString([]byte(mvxChainSpecificToken)), + hex.EncodeToString(initialSupply.Bytes()), + }) + + log.Info("initial supply tx executed", "hash", hash, "status", txResult.Status, + "initial value", params.InitialSupplyValue) + } + } + // setPairDecimals on aggregator hash, txResult = handler.ChainSimulator.ScCall( ctx, diff --git a/integrationTests/relayers/slowTests/framework/types.go b/integrationTests/relayers/slowTests/framework/types.go index 2c30c309..9a01cb82 100644 --- a/integrationTests/relayers/slowTests/framework/types.go +++ b/integrationTests/relayers/slowTests/framework/types.go @@ -8,6 +8,7 @@ import ( // IssueTokenParams the parameters when issuing a new token type IssueTokenParams struct { + InitialSupplyParams AbstractTokenIdentifier string // MultiversX @@ -29,6 +30,11 @@ type IssueTokenParams struct { IsNativeOnEth bool } +// InitialSupplyParams represents the initial supply parameters +type InitialSupplyParams struct { + InitialSupplyValue string +} + // TokenOperations defines a token operation in a test. Usually this can define one or to deposits in a batch type TokenOperations struct { ValueToTransferToMvx *big.Int diff --git a/integrationTests/relayers/slowTests/testdata/contracts/eth/ERC20Safe.abi.json b/integrationTests/relayers/slowTests/testdata/contracts/eth/ERC20Safe.abi.json index 1fa194b4..955715f6 100644 --- a/integrationTests/relayers/slowTests/testdata/contracts/eth/ERC20Safe.abi.json +++ b/integrationTests/relayers/slowTests/testdata/contracts/eth/ERC20Safe.abi.json @@ -557,6 +557,29 @@ "stateMutability": "nonpayable", "type": "function" }, + { + "inputs": [ + { + "internalType": "address", + "name": "tokenAddress", + "type": "address" + }, + { + "internalType": "uint256", + "name": "burnAmount", + "type": "uint256" + }, + { + "internalType": "uint256", + "name": "mintAmount", + "type": "uint256" + } + ], + "name": "initSupplyMintBurn", + "outputs": [], + "stateMutability": "nonpayable", + "type": "function" + }, { "inputs": [], "name": "initialize", @@ -706,6 +729,19 @@ "stateMutability": "nonpayable", "type": "function" }, + { + "inputs": [ + { + "internalType": "address", + "name": "tokenAddress", + "type": "address" + } + ], + "name": "resetTotalBalance", + "outputs": [], + "stateMutability": "nonpayable", + "type": "function" + }, { "inputs": [ { diff --git a/integrationTests/relayers/slowTests/testdata/contracts/eth/ERC20Safe.hex b/integrationTests/relayers/slowTests/testdata/contracts/eth/ERC20Safe.hex index 5ef92372..646454fe 100644 --- a/integrationTests/relayers/slowTests/testdata/contracts/eth/ERC20Safe.hex +++ b/integrationTests/relayers/slowTests/testdata/contracts/eth/ERC20Safe.hex @@ -1 +1 @@ -0x608060405234801561001057600080fd5b50612d81806100206000396000f3fe608060405234801561001057600080fd5b506004361061025e5760003560e01c80639ab7cfaa11610146578063c86726f6116100c3578063e78cea9211610087578063e78cea92146106c9578063e8a70ee2146106ee578063f2e0ec4814610701578063f4daaba114610714578063f6246ea11461073c578063f851a4401461075c57600080fd5b8063c86726f61461063d578063cf6682a214610660578063d4673de914610680578063daf9c21014610693578063dbba0f01146106b657600080fd5b8063b5af090f1161010a578063b5af090f14610595578063bc56602f146105c1578063c639651d146105e1578063c652a0b514610601578063c859b3fe1461062a57600080fd5b80639ab7cfaa146104885780639f0ebb931461049c578063a7c3a06f146104d3578063aee9c872146104e6578063b32c4d8d1461050657600080fd5b806375829def116101df5780638456cb59116101a35780638456cb591461041557806387ea09611461041d5780638bad0c0a146104375780638dd148021461043f57806390e0cfcb14610452578063920b03081461047557600080fd5b806375829def146103cc578063770be784146103df5780637d7763ce146103f25780638129fc1c14610405578063821461381461040d57600080fd5b80633f4ba83a116102265780633f4ba83a146103005780634013c89c146103085780634506e9351461031b5780635ac44282146103465780635c975abb146103ae57600080fd5b8063085c967f146102635780632325b5f71461028d57806326b3293f146102b3578063284c0c44146102c8578063306275be146102ed575b600080fd5b61027661027136600461284e565b61076d565b60405161028492919061289f565b60405180910390f35b6002546102a190600160581b900460ff1681565b60405160ff9091168152602001610284565b6102c66102c1366004612965565b6108f0565b005b6102db6102d6366004612998565b6109a1565b604051610284969594939291906129ba565b6102c66102fb366004612a07565b610a0e565b6102c6610a68565b6102c6610316366004612a22565b610ae5565b60025461032e906001600160401b031681565b6040516001600160401b039091168152602001610284565b61035961035436600461284e565b610d1d565b6040805183516001600160701b031681526020808501516001600160401b039081169183019190915284830151169181019190915260609283015161ffff16928101929092521515608082015260a001610284565b600154600160a01b900460ff165b6040519015158152602001610284565b6102c66103da366004612a07565b610dca565b6102c66103ed366004612a07565b610ec5565b6102c6610400366004612a22565b610fd7565b6102c661102c565b6103bc611144565b6102c6611224565b60015461032e90600160a81b90046001600160401b031681565b6102c66112a0565b6102c661044d366004612a07565b611323565b6103bc610460366004612a07565b60056020526000908152604090205460ff1681565b6102c6610483366004612a22565b6114e8565b6002546102a190600160501b900460ff1681565b6104c56104aa366004612a07565b6001600160a01b031660009081526007602052604090205490565b604051908152602001610284565b6102c66104e1366004612a5a565b61153d565b6104c56104f4366004612a07565b60096020526000908152604090205481565b61055a61051436600461284e565b6003602052600090815260409020546001600160701b038116906001600160401b03600160701b8204811691600160b01b81049091169061ffff600160f01b9091041684565b604080516001600160701b039590951685526001600160401b039384166020860152919092169083015261ffff166060820152608001610284565b6103bc6105a3366004612a07565b6001600160a01b031660009081526004602052604090205460ff1690565b6104c56105cf366004612a07565b600a6020526000908152604090205481565b6104c56105ef366004612a07565b60086020526000908152604090205481565b6104c561060f366004612a07565b6001600160a01b031660009081526008602052604090205490565b6102c6610638366004612ab7565b61163d565b6103bc61064b366004612a07565b60066020526000908152604090205460ff1681565b6104c561066e366004612a07565b600b6020526000908152604090205481565b6102c661068e366004612b4a565b6116ed565b6103bc6106a1366004612a07565b60046020526000908152604090205460ff1681565b6103bc6106c4366004612b6e565b611798565b6001546001600160a01b03165b6040516001600160a01b039091168152602001610284565b6102c66106fc366004612baa565b611995565b6102c661070f366004612baa565b611a74565b60025461072990600160401b900461ffff1681565b60405161ffff9091168152602001610284565b6104c561074a366004612a07565b60076020526000908152604090205481565b6000546001600160a01b03166106d6565b6060600080600381610780600187612be3565b815260208082019290925260409081016000908120825160808101845290546001600160701b0381168252600160701b81046001600160401b0390811695830195909552600160b01b810490941692810192909252600160f01b90920461ffff1660608201529150600c906107f6600187612be3565b815260200190815260200160002061080d82611c22565b81805480602002602001604051908101604052809291908181526020016000905b828210156108e05760008481526020908190206040805160c0810182526006860290920180546001600160701b0316835260018101546001600160a01b0390811694840194909452600281015491830191909152600381015490921660608201526004808301546080830152600583015491929160a084019160ff909116908111156108bc576108bc612867565b60048111156108cd576108cd612867565b815250508152602001906001019061082e565b5050505091509250925050915091565b600154600160a01b900460ff16156109425760405162461bcd60e51b815260206004820152601060248201526f14185d5cd8589b194e881c185d5cd95960821b60448201526064015b60405180910390fd5b600080610950858585611c53565b604080516001600160701b038084168252841660208201529294509092507f6c15ce44793c685a79cde26a0bd5419ef4f3a337991f156be7b365962001b4a791015b60405180910390a15050505050565b600c60205281600052604060002081815481106109bd57600080fd5b60009182526020909120600690910201805460018201546002830154600384015460048501546005909501546001600160701b0390941696506001600160a01b039283169550909391169160ff1686565b33610a216000546001600160a01b031690565b6001600160a01b031614610a475760405162461bcd60e51b815260040161093990612bf6565b6001600160a01b03166000908152600460205260409020805460ff19169055565b33610a7b6000546001600160a01b031690565b6001600160a01b031614610aa15760405162461bcd60e51b815260040161093990612bf6565b6001805460ff60a01b19169055604051600081527f9422424b175dda897495a07b091ef74a3ef715cf6d866fc972954c1c7f459304906020015b60405180910390a1565b33610af86000546001600160a01b031690565b6001600160a01b031614610b1e5760405162461bcd60e51b815260040161093990612bf6565b6001600160a01b03821660009081526004602052604090205460ff16610b7a5760405162461bcd60e51b81526020600482015260116024820152702ab739bab83837b93a32b2103a37b5b2b760791b6044820152606401610939565b6001600160a01b03821660009081526005602052604090205460ff16610be3576001600160a01b03821660009081526009602052604081208054839290610bc2908490612c39565b90915550829050610bde6001600160a01b038216333085612287565b505050565b6001600160a01b03821660009081526006602052604090205460ff16610c89576001600160a01b0382166000908152600b6020526040902054610c27908290612c39565b6001600160a01b0383166000908152600a60205260409020541015610c895760405162461bcd60e51b81526020600482015260186024820152774e6f7420656e6f756768206d696e74656420746f6b656e7360401b6044820152606401610939565b6001600160a01b0382166000908152600b602052604081208054839290610cb1908490612c39565b909155505060405163079cc67960e41b81523360048201526024810182905282906001600160a01b038216906379cc679090604401600060405180830381600087803b158015610d0057600080fd5b505af1158015610d14573d6000803e3d6000fd5b50505050505050565b60408051608081018252600080825260208201819052918101829052606081018290529080600381610d50600187612be3565b81526020808201929092526040908101600020815160808101835290546001600160701b0381168252600160701b81046001600160401b0390811694830194909452600160b01b810490931691810191909152600160f01b90910461ffff166060820152905080610dc081611c22565b9250925050915091565b33610ddd6000546001600160a01b031690565b6001600160a01b031614610e035760405162461bcd60e51b815260040161093990612bf6565b6001600160a01b038116610e6a5760405162461bcd60e51b815260206004820152602860248201527f41646d696e526f6c653a206e65772061646d696e20697320746865207a65726f604482015267206164647265737360c01b6064820152608401610939565b600080546040516001600160a01b03808516939216917fe379ac64de02d8184ca1a871ac486cb8137de77e485ede140e97057b9c765ffd91a3600080546001600160a01b0319166001600160a01b0392909216919091179055565b33610ed86000546001600160a01b031690565b6001600160a01b031614610efe5760405162461bcd60e51b815260040161093990612bf6565b6040516370a0823160e01b815230600482015281906000906001600160a01b038316906370a0823190602401602060405180830381865afa158015610f47573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610f6b9190612c4c565b6001600160a01b0384166000908152600460205260408120549192509060ff1615610fba576001600160a01b038416600090815260096020526040902054610fb39083612be3565b9050610fbd565b50805b610fd16001600160a01b03841633836122ee565b50505050565b33610fea6000546001600160a01b031690565b6001600160a01b0316146110105760405162461bcd60e51b815260040161093990612bf6565b6001600160a01b03909116600090815260086020526040902055565b7ff0c57e16840df040f15088dc2f81fe391c3923bec73e23a9662efc9c229c6a008054600160401b810460ff1615906001600160401b03166000811580156110715750825b90506000826001600160401b0316600114801561108d5750303b155b90508115801561109b575080155b156110b95760405163f92ee8a960e01b815260040160405180910390fd5b845467ffffffffffffffff1916600117855583156110e357845460ff60401b1916600160401b1785555b6110eb61231f565b6110f3612339565b6110fb612351565b831561113d57845460ff60401b19168555604051600181527fc7f505b2f371ae2175ee4913f4499e1f2633a7b5936321eed1cdaeb6115181d290602001610992565b5050505050565b600154600090600160a81b90046001600160401b031681036111665750600090565b60018054600091600391839161118b91600160a81b90046001600160401b0316612c65565b6001600160401b0390811682526020808301939093526040918201600020825160808101845290546001600160701b0381168252600160701b8104831694820194909452600160b01b840490911691810191909152600160f01b90910461ffff16606082015290506111fb61237e565b61120757600191505090565b61121081611c22565b61121c57600191505090565b600091505090565b336112376000546001600160a01b031690565b6001600160a01b03161461125d5760405162461bcd60e51b815260040161093990612bf6565b6001805460ff60a01b1916600160a01b1781556040519081527f9422424b175dda897495a07b091ef74a3ef715cf6d866fc972954c1c7f45930490602001610adb565b336112b36000546001600160a01b031690565b6001600160a01b0316146112d95760405162461bcd60e51b815260040161093990612bf6565b600080546040516001600160a01b03909116907fe379ac64de02d8184ca1a871ac486cb8137de77e485ede140e97057b9c765ffd908390a3600080546001600160a01b0319169055565b336113366000546001600160a01b031690565b6001600160a01b03161461135c5760405162461bcd60e51b815260040161093990612bf6565b6001600160a01b0381166113c55760405162461bcd60e51b815260206004820152602a60248201527f427269646765526f6c653a206e65772062726964676520697320746865207a65604482015269726f206164647265737360b01b6064820152608401610939565b6001546001600160a01b03908116908216036114235760405162461bcd60e51b815260206004820152601860248201527f427269646765526f6c653a2073616d65206164647265737300000000000000006044820152606401610939565b6001600160a01b0381163b61148c5760405162461bcd60e51b815260206004820152602960248201527f427269646765526f6c653a206e657720627269646765206d75737420626520616044820152680818dbdb9d1c9858dd60ba1b6064820152608401610939565b6001546040516001600160a01b038084169216907fcca5fddab921a878ddbd4edb737a2cf3ac6df70864f108606647d1b37a5e07a090600090a3600180546001600160a01b0319166001600160a01b0392909216919091179055565b336114fb6000546001600160a01b031690565b6001600160a01b0316146115215760405162461bcd60e51b815260040161093990612bf6565b6001600160a01b03909116600090815260076020526040902055565b336115506000546001600160a01b031690565b6001600160a01b0316146115765760405162461bcd60e51b815260040161093990612bf6565b816115d257806115d25760405162461bcd60e51b815260206004820152602160248201527f4f6e6c79206e617469766520746f6b656e732063616e2062652073746f7265646044820152602160f81b6064820152608401610939565b6001600160a01b039490941660009081526004602090815260408083208054600160ff19918216179091556005835281842080548216951515959095179094556006825280832080549094169615159690961790925560078252848120939093556008905291902055565b600154600160a01b900460ff161561168a5760405162461bcd60e51b815260206004820152601060248201526f14185d5cd8589b194e881c185d5cd95960821b6044820152606401610939565b600080611698878787611c53565b60405191935091506001600160701b038316907fce848da21487607afba5c5a500c2ad1002d9b8db97ca5512671309df071113b2906116dc90849088908890612c8c565b60405180910390a250505050505050565b336117006000546001600160a01b031690565b6001600160a01b0316146117265760405162461bcd60e51b815260040161093990612bf6565b606461ffff821611156117715760405162461bcd60e51b8152602060048201526013602482015272084c2e8c6d040e6d2f4ca40e8dede40d0d2ced606b1b6044820152606401610939565b6002805461ffff909216600160401b0269ffff000000000000000019909216919091179055565b6000336117ad6001546001600160a01b031690565b6001600160a01b03161461180f5760405162461bcd60e51b8152602060048201526024808201527f41636365737320436f6e74726f6c3a2073656e646572206973206e6f742042726044820152636964676560e01b6064820152608401610939565b6001600160a01b03841660009081526005602052604090205460ff16611891578360006118466001600160a01b038316858761245d565b9050806118585760009250505061198e565b6001600160a01b03861660009081526009602052604081208054879290611880908490612be3565b909155506001935061198e92505050565b6001600160a01b03841660009081526006602052604090205460ff161561193d576001600160a01b0384166000908152600a60205260409020546118d6908490612c39565b6001600160a01b0385166000908152600b6020526040902054101561193d5760405162461bcd60e51b815260206004820152601860248201527f4e6f7420656e6f756768206275726e656420746f6b656e7300000000000000006044820152606401610939565b600061194a858486612544565b90508061195b57600091505061198e565b6001600160a01b0385166000908152600a602052604081208054869290611983908490612c39565b909155506001925050505b9392505050565b336119a86000546001600160a01b031690565b6001600160a01b0316146119ce5760405162461bcd60e51b815260040161093990612bf6565b60025460ff600160581b90910481169082161115611a545760405162461bcd60e51b815260206004820152603760248201527f43616e6e6f7420696e63726561736520626174636820626c6f636b206c696d6960448201527f74206f76657220736574746c656d656e74206c696d69740000000000000000006064820152608401610939565b6002805460ff909216600160501b0260ff60501b19909216919091179055565b33611a876000546001600160a01b031690565b6001600160a01b031614611aad5760405162461bcd60e51b815260040161093990612bf6565b600154600160a01b900460ff16611afd5760405162461bcd60e51b815260206004820152601460248201527314185d5cd8589b194e881b9bdd081c185d5cd95960621b6044820152606401610939565b611b05611144565b15611b6e5760405162461bcd60e51b815260206004820152603360248201527f43616e6e6f74206368616e6765206261746368536574746c654c696d697420776044820152726974682070656e64696e67206261746368657360681b6064820152608401610939565b60025460ff600160501b90910481169082161015611c025760405162461bcd60e51b815260206004820152604560248201527f43616e6e6f74206465637265617365206261746368536574746c654c696d697460448201527f20756e646572207468652076616c7565206f6620626174636820626c6f636b206064820152641b1a5b5a5d60da1b608482015260a401610939565b6002805460ff909216600160581b0260ff60581b19909216919091179055565b60025460408201516000914391611c4391600160581b900460ff1690612ccb565b6001600160401b03161092915050565b6001600160a01b038316600090815260046020526040812054819060ff16611cb15760405162461bcd60e51b81526020600482015260116024820152702ab739bab83837b93a32b2103a37b5b2b760791b6044820152606401610939565b6001600160a01b038516600090815260076020526040902054841015611d3f5760405162461bcd60e51b815260206004820152603c60248201527f547269656420746f206465706f73697420616e20616d6f756e742062656c6f7760448201527f20746865206d696e696d756d20737065636966696564206c696d6974000000006064820152608401610939565b6001600160a01b038516600090815260086020526040902054841115611dcd5760405162461bcd60e51b815260206004820152603c60248201527f547269656420746f206465706f73697420616e20616d6f756e742061626f766560448201527f20746865206d6178696d756d20737065636966696564206c696d6974000000006064820152608401610939565b436000611dd861237e565b15611e75575060018054600160a81b90046001600160401b0316600081815260036020526040902091611e0b9190612ccb565b81546001600160401b039182166001600160b01b031990911617600160701b8483160217825560018054600160a81b9004909116906015611e4b83612ceb565b91906101000a8154816001600160401b0302191690836001600160401b0316021790555050611eb3565b60018054600391600091611e999190600160a81b90046001600160401b0316612c65565b6001600160401b0316815260200190815260200160002090505b600254600090611ecd906001600160401b03166001612ccb565b6001600160401b03169050600c600060018060159054906101000a90046001600160401b0316611efd9190612c65565b6001600160401b031681526020019081526020016000206040518060c00160405280836001600160701b031681526020018a6001600160a01b03168152602001898152602001336001600160a01b0316815260200188815260200160016004811115611f6b57611f6b612867565b90528154600181810184556000938452602093849020835160069093020180546001600160701b039093166dffffffffffffffffffffffffffff199093169290921782559282015181840180546001600160a01b039283166001600160a01b031991821617909155604084015160028401556060840151600384018054919093169116179055608082015160048083019190915560a0830151600583018054949593949193909260ff1990921691849081111561202a5761202a612867565b021790555050825467ffffffffffffffff60b01b1916600160b01b6001600160401b0386160217808455600160f01b900461ffff16905082601e61206d83612d11565b825461ffff9182166101009390930a928302919092021990911617905550600280546001600160401b03169060006120a483612ceb565b91906101000a8154816001600160401b0302191690836001600160401b03160217905550506120eb886001600160a01b031660009081526005602052604090205460ff1690565b612139576001600160a01b03881660009081526009602052604081208054899290612117908490612c39565b909155508890506121336001600160a01b03821633308b612287565b50612270565b6001600160a01b03881660009081526006602052604090205460ff166121df576001600160a01b0388166000908152600b602052604090205461217d908890612c39565b6001600160a01b0389166000908152600a602052604090205410156121df5760405162461bcd60e51b81526020600482015260186024820152774e6f7420656e6f756768206d696e74656420746f6b656e7360401b6044820152606401610939565b6001600160a01b0388166000908152600b602052604081208054899290612207908490612c39565b909155505060405163079cc67960e41b81523360048201526024810188905288906001600160a01b038216906379cc679090604401600060405180830381600087803b15801561225657600080fd5b505af115801561226a573d6000803e3d6000fd5b50505050505b90546001600160701b031697909650945050505050565b6040516001600160a01b038481166024830152838116604483015260648201839052610fd19186918216906323b872dd906084015b604051602081830303815290604052915060e01b6020820180516001600160e01b0383818316178352505050506125bc565b6040516001600160a01b03838116602483015260448201839052610bde91859182169063a9059cbb906064016122bc565b61232761261f565b61232f612668565b612337612678565b565b61234161261f565b612349612668565b612337612680565b61235961261f565b600280546bffffffff000000000000000019166b2828000a0000000000000000179055565b600154600090600160a81b90046001600160401b031681036123a05750600190565b6001805460009160039183916123c591600160a81b90046001600160401b0316612c65565b6001600160401b0390811682526020808301939093526040918201600020825160808101845290546001600160701b0381168252600160701b81048316948201859052600160b01b810490921692810192909252600160f01b900461ffff16606082018190529092506124379161269d565b806124575750600254606082015161ffff600160401b9092048216911610155b91505090565b604080516001600160a01b038481166024830152604480830185905283518084039091018152606490920183526020820180516001600160e01b031663a9059cbb60e01b179052915160009283928392918816916124bb9190612d28565b6000604051808303816000865af19150503d80600081146124f8576040519150601f19603f3d011682016040523d82523d6000602084013e6124fd565b606091505b5091509150816125125760009250505061198e565b80516000036125265760019250505061198e565b8080602001905181019061253a9190612d57565b9695505050505050565b6040516340c10f1960e01b81526001600160a01b0383811660048301526024820183905260009185918216906340c10f1990604401600060405180830381600087803b15801561259357600080fd5b505af19250505080156125a4575060015b6125b257600091505061198e565b600191505061198e565b60006125d16001600160a01b038416836126df565b905080516000141580156125f65750808060200190518101906125f49190612d57565b155b15610bde57604051635274afe760e01b81526001600160a01b0384166004820152602401610939565b7ff0c57e16840df040f15088dc2f81fe391c3923bec73e23a9662efc9c229c6a0054600160401b900460ff1661233757604051631afcd79f60e31b815260040160405180910390fd5b61267061261f565b6123376126ed565b61233761261f565b61268861261f565b6001805460ff60a01b1916600160a01b179055565b60008261ffff166000036126b3575060006126d9565b60025443906126cc90600160501b900460ff1684612ccb565b6001600160401b03161090505b92915050565b606061198e83836000612738565b6126f561261f565b600080546001600160a01b031916339081178255604051909182917fe379ac64de02d8184ca1a871ac486cb8137de77e485ede140e97057b9c765ffd908290a350565b60608147101561275d5760405163cd78605960e01b8152306004820152602401610939565b600080856001600160a01b031684866040516127799190612d28565b60006040518083038185875af1925050503d80600081146127b6576040519150601f19603f3d011682016040523d82523d6000602084013e6127bb565b606091505b509150915061253a8683836060826127db576127d682612822565b61198e565b81511580156127f257506001600160a01b0384163b155b1561281b57604051639996b31560e01b81526001600160a01b0385166004820152602401610939565b508061198e565b8051156128325780518082602001fd5b604051630a12f52160e11b815260040160405180910390fd5b50565b60006020828403121561286057600080fd5b5035919050565b634e487b7160e01b600052602160045260246000fd5b6005811061289b57634e487b7160e01b600052602160045260246000fd5b9052565b6040808252835182820181905260009190606090818501906020808901865b8381101561292b57815180516001600160701b03168652838101516001600160a01b039081168588015288820151898801528782015116878701526080808201519087015260a090810151906129168188018361287d565b505060c09490940193908201906001016128be565b505082955061293d8188018915159052565b50505050509392505050565b80356001600160a01b038116811461296057600080fd5b919050565b60008060006060848603121561297a57600080fd5b61298384612949565b95602085013595506040909401359392505050565b600080604083850312156129ab57600080fd5b50508035926020909101359150565b6001600160701b03871681526001600160a01b03868116602083015260408201869052841660608201526080810183905260c081016129fc60a083018461287d565b979650505050505050565b600060208284031215612a1957600080fd5b61198e82612949565b60008060408385031215612a3557600080fd5b612a3e83612949565b946020939093013593505050565b801515811461284b57600080fd5b600080600080600060a08688031215612a7257600080fd5b612a7b86612949565b945060208601359350604086013592506060860135612a9981612a4c565b91506080860135612aa981612a4c565b809150509295509295909350565b600080600080600060808688031215612acf57600080fd5b612ad886612949565b9450602086013593506040860135925060608601356001600160401b0380821115612b0257600080fd5b818801915088601f830112612b1657600080fd5b813581811115612b2557600080fd5b896020828501011115612b3757600080fd5b9699959850939650602001949392505050565b600060208284031215612b5c57600080fd5b813561ffff8116811461198e57600080fd5b600080600060608486031215612b8357600080fd5b612b8c84612949565b925060208401359150612ba160408501612949565b90509250925092565b600060208284031215612bbc57600080fd5b813560ff8116811461198e57600080fd5b634e487b7160e01b600052601160045260246000fd5b818103818111156126d9576126d9612bcd565b60208082526023908201527f41636365737320436f6e74726f6c3a2073656e646572206973206e6f7420416460408201526236b4b760e91b606082015260800190565b808201808211156126d9576126d9612bcd565b600060208284031215612c5e57600080fd5b5051919050565b6001600160401b03828116828216039080821115612c8557612c85612bcd565b5092915050565b6001600160701b038416815260406020820152816040820152818360608301376000818301606090810191909152601f909201601f1916010192915050565b6001600160401b03818116838216019080821115612c8557612c85612bcd565b60006001600160401b03808316818103612d0757612d07612bcd565b6001019392505050565b600061ffff808316818103612d0757612d07612bcd565b6000825160005b81811015612d495760208186018101518583015201612d2f565b506000920191825250919050565b600060208284031215612d6957600080fd5b815161198e81612a4c56fea164736f6c6343000814000a +0x608060405234801561001057600080fd5b50612f3b806100206000396000f3fe608060405234801561001057600080fd5b50600436106102745760003560e01c80639f0ebb9311610151578063d2763186116100c3578063e8a70ee211610087578063e8a70ee214610717578063e9935b4a1461072a578063f2e0ec481461073d578063f4daaba114610750578063f6246ea114610778578063f851a4401461079857600080fd5b8063d276318614610696578063d4673de9146106a9578063daf9c210146106bc578063dbba0f01146106df578063e78cea92146106f257600080fd5b8063bc56602f11610115578063bc56602f146105d7578063c639651d146105f7578063c652a0b514610617578063c859b3fe14610640578063c86726f614610653578063cf6682a21461067657600080fd5b80639f0ebb93146104b2578063a7c3a06f146104e9578063aee9c872146104fc578063b32c4d8d1461051c578063b5af090f146105ab57600080fd5b8063770be784116101ea57806387ea0961116101ae57806387ea0961146104335780638bad0c0a1461044d5780638dd148021461045557806390e0cfcb14610468578063920b03081461048b5780639ab7cfaa1461049e57600080fd5b8063770be784146103f55780637d7763ce146104085780638129fc1c1461041b57806382146138146104235780638456cb591461042b57600080fd5b80633f4ba83a1161023c5780633f4ba83a146103165780634013c89c1461031e5780634506e935146103315780635ac442821461035c5780635c975abb146103c457806375829def146103e257600080fd5b8063085c967f146102795780632325b5f7146102a357806326b3293f146102c9578063284c0c44146102de578063306275be14610303575b600080fd5b61028c61028736600461299c565b6107a9565b60405161029a9291906129ed565b60405180910390f35b6002546102b790600160581b900460ff1681565b60405160ff909116815260200161029a565b6102dc6102d7366004612ab3565b61092c565b005b6102f16102ec366004612ae6565b6109dd565b60405161029a96959493929190612b08565b6102dc610311366004612b55565b610a4a565b6102dc610aa4565b6102dc61032c366004612b70565b610b21565b600254610344906001600160401b031681565b6040516001600160401b03909116815260200161029a565b61036f61036a36600461299c565b610c7a565b6040805183516001600160701b031681526020808501516001600160401b039081169183019190915284830151169181019190915260609283015161ffff16928101929092521515608082015260a00161029a565b600154600160a01b900460ff165b604051901515815260200161029a565b6102dc6103f0366004612b55565b610d27565b6102dc610403366004612b55565b610e22565b6102dc610416366004612b70565b610f34565b6102dc610f89565b6103d26110a1565b6102dc611181565b60015461034490600160a81b90046001600160401b031681565b6102dc6111fd565b6102dc610463366004612b55565b611280565b6103d2610476366004612b55565b60056020526000908152604090205460ff1681565b6102dc610499366004612b70565b611445565b6002546102b790600160501b900460ff1681565b6104db6104c0366004612b55565b6001600160a01b031660009081526007602052604090205490565b60405190815260200161029a565b6102dc6104f7366004612ba8565b61149a565b6104db61050a366004612b55565b60096020526000908152604090205481565b61057061052a36600461299c565b6003602052600090815260409020546001600160701b038116906001600160401b03600160701b8204811691600160b01b81049091169061ffff600160f01b9091041684565b604080516001600160701b039590951685526001600160401b039384166020860152919092169083015261ffff16606082015260800161029a565b6103d26105b9366004612b55565b6001600160a01b031660009081526004602052604090205460ff1690565b6104db6105e5366004612b55565b600a6020526000908152604090205481565b6104db610605366004612b55565b60086020526000908152604090205481565b6104db610625366004612b55565b6001600160a01b031660009081526008602052604090205490565b6102dc61064e366004612c05565b611560565b6103d2610661366004612b55565b60066020526000908152604090205460ff1681565b6104db610684366004612b55565b600b6020526000908152604090205481565b6102dc6106a4366004612b55565b611610565b6102dc6106b7366004612c98565b611765565b6103d26106ca366004612b55565b60046020526000908152604090205460ff1681565b6103d26106ed366004612cbc565b611810565b6001546001600160a01b03165b6040516001600160a01b03909116815260200161029a565b6102dc610725366004612cf8565b6119fa565b6102dc610738366004612ab3565b611ad9565b6102dc61074b366004612cf8565b611bdc565b60025461076590600160401b900461ffff1681565b60405161ffff909116815260200161029a565b6104db610786366004612b55565b60076020526000908152604090205481565b6000546001600160a01b03166106ff565b60606000806003816107bc600187612d31565b815260208082019290925260409081016000908120825160808101845290546001600160701b0381168252600160701b81046001600160401b0390811695830195909552600160b01b810490941692810192909252600160f01b90920461ffff1660608201529150600c90610832600187612d31565b815260200190815260200160002061084982611d8a565b81805480602002602001604051908101604052809291908181526020016000905b8282101561091c5760008481526020908190206040805160c0810182526006860290920180546001600160701b0316835260018101546001600160a01b0390811694840194909452600281015491830191909152600381015490921660608201526004808301546080830152600583015491929160a084019160ff909116908111156108f8576108f86129b5565b6004811115610909576109096129b5565b815250508152602001906001019061086a565b5050505091509250925050915091565b600154600160a01b900460ff161561097e5760405162461bcd60e51b815260206004820152601060248201526f14185d5cd8589b194e881c185d5cd95960821b60448201526064015b60405180910390fd5b60008061098c858585611dbb565b604080516001600160701b038084168252841660208201529294509092507f6c15ce44793c685a79cde26a0bd5419ef4f3a337991f156be7b365962001b4a791015b60405180910390a15050505050565b600c60205281600052604060002081815481106109f957600080fd5b60009182526020909120600690910201805460018201546002830154600384015460048501546005909501546001600160701b0390941696506001600160a01b039283169550909391169160ff1686565b33610a5d6000546001600160a01b031690565b6001600160a01b031614610a835760405162461bcd60e51b815260040161097590612d44565b6001600160a01b03166000908152600460205260409020805460ff19169055565b33610ab76000546001600160a01b031690565b6001600160a01b031614610add5760405162461bcd60e51b815260040161097590612d44565b6001805460ff60a01b19169055604051600081527f9422424b175dda897495a07b091ef74a3ef715cf6d866fc972954c1c7f459304906020015b60405180910390a1565b33610b346000546001600160a01b031690565b6001600160a01b031614610b5a5760405162461bcd60e51b815260040161097590612d44565b6001600160a01b03821660009081526004602052604090205460ff16610b925760405162461bcd60e51b815260040161097590612d87565b610b9b826123b7565b15610bf95760405162461bcd60e51b815260206004820152602860248201527f43616e6e6f7420696e697420666f72206d696e7461626c652f6275726e61626c6044820152676520746f6b656e7360c01b6064820152608401610975565b6001600160a01b03821660009081526006602052604090205460ff16610c315760405162461bcd60e51b815260040161097590612db2565b6001600160a01b03821660009081526009602052604081208054839290610c59908490612df3565b90915550829050610c756001600160a01b0382163330856123d5565b505050565b60408051608081018252600080825260208201819052918101829052606081018290529080600381610cad600187612d31565b81526020808201929092526040908101600020815160808101835290546001600160701b0381168252600160701b81046001600160401b0390811694830194909452600160b01b810490931691810191909152600160f01b90910461ffff166060820152905080610d1d81611d8a565b9250925050915091565b33610d3a6000546001600160a01b031690565b6001600160a01b031614610d605760405162461bcd60e51b815260040161097590612d44565b6001600160a01b038116610dc75760405162461bcd60e51b815260206004820152602860248201527f41646d696e526f6c653a206e65772061646d696e20697320746865207a65726f604482015267206164647265737360c01b6064820152608401610975565b600080546040516001600160a01b03808516939216917fe379ac64de02d8184ca1a871ac486cb8137de77e485ede140e97057b9c765ffd91a3600080546001600160a01b0319166001600160a01b0392909216919091179055565b33610e356000546001600160a01b031690565b6001600160a01b031614610e5b5760405162461bcd60e51b815260040161097590612d44565b6040516370a0823160e01b815230600482015281906000906001600160a01b038316906370a0823190602401602060405180830381865afa158015610ea4573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610ec89190612e06565b6001600160a01b0384166000908152600460205260408120549192509060ff1615610f17576001600160a01b038416600090815260096020526040902054610f109083612d31565b9050610f1a565b50805b610f2e6001600160a01b038416338361243c565b50505050565b33610f476000546001600160a01b031690565b6001600160a01b031614610f6d5760405162461bcd60e51b815260040161097590612d44565b6001600160a01b03909116600090815260086020526040902055565b7ff0c57e16840df040f15088dc2f81fe391c3923bec73e23a9662efc9c229c6a008054600160401b810460ff1615906001600160401b0316600081158015610fce5750825b90506000826001600160401b03166001148015610fea5750303b155b905081158015610ff8575080155b156110165760405163f92ee8a960e01b815260040160405180910390fd5b845467ffffffffffffffff19166001178555831561104057845460ff60401b1916600160401b1785555b61104861246d565b611050612487565b61105861249f565b831561109a57845460ff60401b19168555604051600181527fc7f505b2f371ae2175ee4913f4499e1f2633a7b5936321eed1cdaeb6115181d2906020016109ce565b5050505050565b600154600090600160a81b90046001600160401b031681036110c35750600090565b6001805460009160039183916110e891600160a81b90046001600160401b0316612e1f565b6001600160401b0390811682526020808301939093526040918201600020825160808101845290546001600160701b0381168252600160701b8104831694820194909452600160b01b840490911691810191909152600160f01b90910461ffff16606082015290506111586124cc565b61116457600191505090565b61116d81611d8a565b61117957600191505090565b600091505090565b336111946000546001600160a01b031690565b6001600160a01b0316146111ba5760405162461bcd60e51b815260040161097590612d44565b6001805460ff60a01b1916600160a01b1781556040519081527f9422424b175dda897495a07b091ef74a3ef715cf6d866fc972954c1c7f45930490602001610b17565b336112106000546001600160a01b031690565b6001600160a01b0316146112365760405162461bcd60e51b815260040161097590612d44565b600080546040516001600160a01b03909116907fe379ac64de02d8184ca1a871ac486cb8137de77e485ede140e97057b9c765ffd908390a3600080546001600160a01b0319169055565b336112936000546001600160a01b031690565b6001600160a01b0316146112b95760405162461bcd60e51b815260040161097590612d44565b6001600160a01b0381166113225760405162461bcd60e51b815260206004820152602a60248201527f427269646765526f6c653a206e65772062726964676520697320746865207a65604482015269726f206164647265737360b01b6064820152608401610975565b6001546001600160a01b03908116908216036113805760405162461bcd60e51b815260206004820152601860248201527f427269646765526f6c653a2073616d65206164647265737300000000000000006044820152606401610975565b6001600160a01b0381163b6113e95760405162461bcd60e51b815260206004820152602960248201527f427269646765526f6c653a206e657720627269646765206d75737420626520616044820152680818dbdb9d1c9858dd60ba1b6064820152608401610975565b6001546040516001600160a01b038084169216907fcca5fddab921a878ddbd4edb737a2cf3ac6df70864f108606647d1b37a5e07a090600090a3600180546001600160a01b0319166001600160a01b0392909216919091179055565b336114586000546001600160a01b031690565b6001600160a01b03161461147e5760405162461bcd60e51b815260040161097590612d44565b6001600160a01b03909116600090815260076020526040902055565b336114ad6000546001600160a01b031690565b6001600160a01b0316146114d35760405162461bcd60e51b815260040161097590612d44565b816114f557806114f55760405162461bcd60e51b815260040161097590612db2565b6001600160a01b039490941660009081526004602090815260408083208054600160ff19918216179091556005835281842080548216951515959095179094556006825280832080549094169615159690961790925560078252848120939093556008905291902055565b600154600160a01b900460ff16156115ad5760405162461bcd60e51b815260206004820152601060248201526f14185d5cd8589b194e881c185d5cd95960821b6044820152606401610975565b6000806115bb878787611dbb565b60405191935091506001600160701b038316907fce848da21487607afba5c5a500c2ad1002d9b8db97ca5512671309df071113b2906115ff90849088908890612e46565b60405180910390a250505050505050565b336116236000546001600160a01b031690565b6001600160a01b0316146116495760405162461bcd60e51b815260040161097590612d44565b6001600160a01b03811660009081526004602052604090205460ff166116815760405162461bcd60e51b815260040161097590612d87565b61168a816123b7565b156116d75760405162461bcd60e51b815260206004820152601a60248201527f546f6b656e206973206d696e7461626c652f6275726e61626c650000000000006044820152606401610975565b6040516370a0823160e01b815230600482015281906000906001600160a01b038316906370a0823190602401602060405180830381865afa158015611720573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906117449190612e06565b6001600160a01b039093166000908152600960205260409020929092555050565b336117786000546001600160a01b031690565b6001600160a01b03161461179e5760405162461bcd60e51b815260040161097590612d44565b606461ffff821611156117e95760405162461bcd60e51b8152602060048201526013602482015272084c2e8c6d040e6d2f4ca40e8dede40d0d2ced606b1b6044820152606401610975565b6002805461ffff909216600160401b0269ffff000000000000000019909216919091179055565b6000336118256001546001600160a01b031690565b6001600160a01b0316146118875760405162461bcd60e51b8152602060048201526024808201527f41636365737320436f6e74726f6c3a2073656e646572206973206e6f742042726044820152636964676560e01b6064820152608401610975565b611890846123b7565b6118f6578360006118ab6001600160a01b03831685876125ab565b9050806118bd576000925050506119f3565b6001600160a01b038616600090815260096020526040812080548792906118e5908490612d31565b90915550600193506119f392505050565b6001600160a01b03841660009081526006602052604090205460ff16156119a2576001600160a01b0384166000908152600a602052604090205461193b908490612df3565b6001600160a01b0385166000908152600b602052604090205410156119a25760405162461bcd60e51b815260206004820152601860248201527f4e6f7420656e6f756768206275726e656420746f6b656e7300000000000000006044820152606401610975565b60006119af858486612692565b9050806119c05760009150506119f3565b6001600160a01b0385166000908152600a6020526040812080548692906119e8908490612df3565b909155506001925050505b9392505050565b33611a0d6000546001600160a01b031690565b6001600160a01b031614611a335760405162461bcd60e51b815260040161097590612d44565b60025460ff600160581b90910481169082161115611ab95760405162461bcd60e51b815260206004820152603760248201527f43616e6e6f7420696e63726561736520626174636820626c6f636b206c696d6960448201527f74206f76657220736574746c656d656e74206c696d69740000000000000000006064820152608401610975565b6002805460ff909216600160501b0260ff60501b19909216919091179055565b33611aec6000546001600160a01b031690565b6001600160a01b031614611b125760405162461bcd60e51b815260040161097590612d44565b6001600160a01b03831660009081526004602052604090205460ff16611b4a5760405162461bcd60e51b815260040161097590612d87565b611b53836123b7565b611bb45760405162461bcd60e51b815260206004820152602c60248201527f43616e6e6f7420696e697420666f72206e6f6e206d696e7461626c652f62757260448201526b6e61626c6520746f6b656e7360a01b6064820152608401610975565b6001600160a01b039092166000908152600b6020908152604080832093909355600a90522055565b33611bef6000546001600160a01b031690565b6001600160a01b031614611c155760405162461bcd60e51b815260040161097590612d44565b600154600160a01b900460ff16611c655760405162461bcd60e51b815260206004820152601460248201527314185d5cd8589b194e881b9bdd081c185d5cd95960621b6044820152606401610975565b611c6d6110a1565b15611cd65760405162461bcd60e51b815260206004820152603360248201527f43616e6e6f74206368616e6765206261746368536574746c654c696d697420776044820152726974682070656e64696e67206261746368657360681b6064820152608401610975565b60025460ff600160501b90910481169082161015611d6a5760405162461bcd60e51b815260206004820152604560248201527f43616e6e6f74206465637265617365206261746368536574746c654c696d697460448201527f20756e646572207468652076616c7565206f6620626174636820626c6f636b206064820152641b1a5b5a5d60da1b608482015260a401610975565b6002805460ff909216600160581b0260ff60581b19909216919091179055565b60025460408201516000914391611dab91600160581b900460ff1690612e85565b6001600160401b03161092915050565b6001600160a01b038316600090815260046020526040812054819060ff16611df55760405162461bcd60e51b815260040161097590612d87565b6001600160a01b038516600090815260076020526040902054841015611e835760405162461bcd60e51b815260206004820152603c60248201527f547269656420746f206465706f73697420616e20616d6f756e742062656c6f7760448201527f20746865206d696e696d756d20737065636966696564206c696d6974000000006064820152608401610975565b6001600160a01b038516600090815260086020526040902054841115611f115760405162461bcd60e51b815260206004820152603c60248201527f547269656420746f206465706f73697420616e20616d6f756e742061626f766560448201527f20746865206d6178696d756d20737065636966696564206c696d6974000000006064820152608401610975565b436000611f1c6124cc565b15611fb9575060018054600160a81b90046001600160401b0316600081815260036020526040902091611f4f9190612e85565b81546001600160401b039182166001600160b01b031990911617600160701b8483160217825560018054600160a81b9004909116906015611f8f83612ea5565b91906101000a8154816001600160401b0302191690836001600160401b0316021790555050611ff7565b60018054600391600091611fdd9190600160a81b90046001600160401b0316612e1f565b6001600160401b0316815260200190815260200160002090505b600254600090612011906001600160401b03166001612e85565b6001600160401b03169050600c600060018060159054906101000a90046001600160401b03166120419190612e1f565b6001600160401b031681526020019081526020016000206040518060c00160405280836001600160701b031681526020018a6001600160a01b03168152602001898152602001336001600160a01b03168152602001888152602001600160048111156120af576120af6129b5565b90528154600181810184556000938452602093849020835160069093020180546001600160701b039093166dffffffffffffffffffffffffffff199093169290921782559282015181840180546001600160a01b039283166001600160a01b031991821617909155604084015160028401556060840151600384018054919093169116179055608082015160048083019190915560a0830151600583018054949593949193909260ff1990921691849081111561216e5761216e6129b5565b021790555050825467ffffffffffffffff60b01b1916600160b01b6001600160401b0386160217808455600160f01b900461ffff16905082601e6121b183612ecb565b825461ffff9182166101009390930a928302919092021990911617905550600280546001600160401b03169060006121e883612ea5565b91906101000a8154816001600160401b0302191690836001600160401b0316021790555050612216886123b7565b612264576001600160a01b03881660009081526009602052604081208054899290612242908490612df3565b9091555088905061225e6001600160a01b03821633308b6123d5565b506123a0565b6001600160a01b03881660009081526006602052604090205460ff1661230f576001600160a01b0388166000908152600b60205260409020546122a8908890612df3565b6001600160a01b0389166000908152600a6020526040902054101561230f5760405162461bcd60e51b815260206004820152601860248201527f4e6f7420656e6f756768206d696e74656420746f6b656e7300000000000000006044820152606401610975565b6001600160a01b0388166000908152600b602052604081208054899290612337908490612df3565b909155505060405163079cc67960e41b81523360048201526024810188905288906001600160a01b038216906379cc679090604401600060405180830381600087803b15801561238657600080fd5b505af115801561239a573d6000803e3d6000fd5b50505050505b90546001600160701b031697909650945050505050565b6001600160a01b031660009081526005602052604090205460ff1690565b6040516001600160a01b038481166024830152838116604483015260648201839052610f2e9186918216906323b872dd906084015b604051602081830303815290604052915060e01b6020820180516001600160e01b03838183161783525050505061270a565b6040516001600160a01b03838116602483015260448201839052610c7591859182169063a9059cbb9060640161240a565b61247561276d565b61247d6127b6565b6124856127c6565b565b61248f61276d565b6124976127b6565b6124856127ce565b6124a761276d565b600280546bffffffff000000000000000019166b2828000a0000000000000000179055565b600154600090600160a81b90046001600160401b031681036124ee5750600190565b60018054600091600391839161251391600160a81b90046001600160401b0316612e1f565b6001600160401b0390811682526020808301939093526040918201600020825160808101845290546001600160701b0381168252600160701b81048316948201859052600160b01b810490921692810192909252600160f01b900461ffff1660608201819052909250612585916127eb565b806125a55750600254606082015161ffff600160401b9092048216911610155b91505090565b604080516001600160a01b038481166024830152604480830185905283518084039091018152606490920183526020820180516001600160e01b031663a9059cbb60e01b179052915160009283928392918816916126099190612ee2565b6000604051808303816000865af19150503d8060008114612646576040519150601f19603f3d011682016040523d82523d6000602084013e61264b565b606091505b509150915081612660576000925050506119f3565b8051600003612674576001925050506119f3565b808060200190518101906126889190612f11565b9695505050505050565b6040516340c10f1960e01b81526001600160a01b0383811660048301526024820183905260009185918216906340c10f1990604401600060405180830381600087803b1580156126e157600080fd5b505af19250505080156126f2575060015b6127005760009150506119f3565b60019150506119f3565b600061271f6001600160a01b0384168361282d565b905080516000141580156127445750808060200190518101906127429190612f11565b155b15610c7557604051635274afe760e01b81526001600160a01b0384166004820152602401610975565b7ff0c57e16840df040f15088dc2f81fe391c3923bec73e23a9662efc9c229c6a0054600160401b900460ff1661248557604051631afcd79f60e31b815260040160405180910390fd5b6127be61276d565b61248561283b565b61248561276d565b6127d661276d565b6001805460ff60a01b1916600160a01b179055565b60008261ffff1660000361280157506000612827565b600254439061281a90600160501b900460ff1684612e85565b6001600160401b03161090505b92915050565b60606119f383836000612886565b61284361276d565b600080546001600160a01b031916339081178255604051909182917fe379ac64de02d8184ca1a871ac486cb8137de77e485ede140e97057b9c765ffd908290a350565b6060814710156128ab5760405163cd78605960e01b8152306004820152602401610975565b600080856001600160a01b031684866040516128c79190612ee2565b60006040518083038185875af1925050503d8060008114612904576040519150601f19603f3d011682016040523d82523d6000602084013e612909565b606091505b50915091506126888683836060826129295761292482612970565b6119f3565b815115801561294057506001600160a01b0384163b155b1561296957604051639996b31560e01b81526001600160a01b0385166004820152602401610975565b50806119f3565b8051156129805780518082602001fd5b604051630a12f52160e11b815260040160405180910390fd5b50565b6000602082840312156129ae57600080fd5b5035919050565b634e487b7160e01b600052602160045260246000fd5b600581106129e957634e487b7160e01b600052602160045260246000fd5b9052565b6040808252835182820181905260009190606090818501906020808901865b83811015612a7957815180516001600160701b03168652838101516001600160a01b039081168588015288820151898801528782015116878701526080808201519087015260a09081015190612a64818801836129cb565b505060c0949094019390820190600101612a0c565b5050829550612a8b8188018915159052565b50505050509392505050565b80356001600160a01b0381168114612aae57600080fd5b919050565b600080600060608486031215612ac857600080fd5b612ad184612a97565b95602085013595506040909401359392505050565b60008060408385031215612af957600080fd5b50508035926020909101359150565b6001600160701b03871681526001600160a01b03868116602083015260408201869052841660608201526080810183905260c08101612b4a60a08301846129cb565b979650505050505050565b600060208284031215612b6757600080fd5b6119f382612a97565b60008060408385031215612b8357600080fd5b612b8c83612a97565b946020939093013593505050565b801515811461299957600080fd5b600080600080600060a08688031215612bc057600080fd5b612bc986612a97565b945060208601359350604086013592506060860135612be781612b9a565b91506080860135612bf781612b9a565b809150509295509295909350565b600080600080600060808688031215612c1d57600080fd5b612c2686612a97565b9450602086013593506040860135925060608601356001600160401b0380821115612c5057600080fd5b818801915088601f830112612c6457600080fd5b813581811115612c7357600080fd5b896020828501011115612c8557600080fd5b9699959850939650602001949392505050565b600060208284031215612caa57600080fd5b813561ffff811681146119f357600080fd5b600080600060608486031215612cd157600080fd5b612cda84612a97565b925060208401359150612cef60408501612a97565b90509250925092565b600060208284031215612d0a57600080fd5b813560ff811681146119f357600080fd5b634e487b7160e01b600052601160045260246000fd5b8181038181111561282757612827612d1b565b60208082526023908201527f41636365737320436f6e74726f6c3a2073656e646572206973206e6f7420416460408201526236b4b760e91b606082015260800190565b6020808252601190820152702ab739bab83837b93a32b2103a37b5b2b760791b604082015260600190565b60208082526021908201527f4f6e6c79206e617469766520746f6b656e732063616e2062652073746f7265646040820152602160f81b606082015260800190565b8082018082111561282757612827612d1b565b600060208284031215612e1857600080fd5b5051919050565b6001600160401b03828116828216039080821115612e3f57612e3f612d1b565b5092915050565b6001600160701b038416815260406020820152816040820152818360608301376000818301606090810191909152601f909201601f1916010192915050565b6001600160401b03818116838216019080821115612e3f57612e3f612d1b565b60006001600160401b03808316818103612ec157612ec1612d1b565b6001019392505050565b600061ffff808316818103612ec157612ec1612d1b565b6000825160005b81811015612f035760208186018101518583015201612ee9565b506000920191825250919050565b600060208284031215612f2357600080fd5b81516119f381612b9a56fea164736f6c6343000814000a diff --git a/integrationTests/relayers/slowTests/testdata/contracts/mvx/bridge-proxy.abi.json b/integrationTests/relayers/slowTests/testdata/contracts/mvx/bridge-proxy.abi.json index e6f36479..c4ac5c08 100644 --- a/integrationTests/relayers/slowTests/testdata/contracts/mvx/bridge-proxy.abi.json +++ b/integrationTests/relayers/slowTests/testdata/contracts/mvx/bridge-proxy.abi.json @@ -1,11 +1,11 @@ { "buildInfo": { "rustc": { - "version": "1.80.0", - "commitHash": "051478957371ee0084a7c0913941d2a8c4757bb9", - "commitDate": "2024-07-21", + "version": "1.78.0", + "commitHash": "9b00956e56009bab2aa15d7bff10916599e3d6d6", + "commitDate": "2024-04-29", "channel": "Stable", - "short": "rustc 1.80.0 (051478957 2024-07-21)" + "short": "rustc 1.78.0 (9b00956e5 2024-04-29)" }, "contractCrate": { "name": "bridge-proxy", diff --git a/integrationTests/relayers/slowTests/testdata/contracts/mvx/bridge-proxy.wasm b/integrationTests/relayers/slowTests/testdata/contracts/mvx/bridge-proxy.wasm index 0b33e2daa7a9843d97c73341bfd571835b998962..0f6f522248ad6dac1b4edddc3694a2a45d022b0c 100755 GIT binary patch delta 479 zcmXX?O-LJ25T4n6ySk<^4~rxlNqn1#zX%eLm>vq-(t^-lJX(l1McQ)-cxc2QqV}S5 z>8%G#HN}YK-8@Kp6iO*nC{!&7X1!DtbM&C^CArOf^UZwUd~0(Db9>jOxr!yKnYpkH zHe+^2gj--epd3pZHc+0$4FFkS(`bI5Ey**Bv5o}dJN~0sEJ6zWZ%d^j$eQ!aYDa(|@ZtZwi zcPT?)gt?-*H`D|&;GxN$Fe-QY2mqiIdY1) zNkf^8)yOcPxij#X@}mVs`ZGF?SR*g%HKz15yMrfmogG$`X=i NET>{G%h!*Dc@L78l?-jQ{=l45bKc@@R-!FB24rcLM&xVO< zQfk&kSdBpp%+jPrOdO`3_(;b*TxVx0bIK}s?hL^h_PMP%l;pVU zcA6I9M1n~-MR!74H8z>iqQ_$36IN7how zMRCl-KtqIW;%&S|!p6j5=<@O_hlGy85H=ry=yZ!*I;;VETKuo3Y zH7Ma!CNG7n%xj<*Iv7}+s<+13np)`Re87?CTksoyWTN=2*Ovav-Vzkh%O=IU>>GeD JV&w(b{{x6Jhe7}V diff --git a/integrationTests/relayers/slowTests/testdata/contracts/mvx/bridged-tokens-wrapper.abi.json b/integrationTests/relayers/slowTests/testdata/contracts/mvx/bridged-tokens-wrapper.abi.json index 7f31c722..1287c24b 100644 --- a/integrationTests/relayers/slowTests/testdata/contracts/mvx/bridged-tokens-wrapper.abi.json +++ b/integrationTests/relayers/slowTests/testdata/contracts/mvx/bridged-tokens-wrapper.abi.json @@ -1,11 +1,11 @@ { "buildInfo": { "rustc": { - "version": "1.80.0", - "commitHash": "051478957371ee0084a7c0913941d2a8c4757bb9", - "commitDate": "2024-07-21", + "version": "1.78.0", + "commitHash": "9b00956e56009bab2aa15d7bff10916599e3d6d6", + "commitDate": "2024-04-29", "channel": "Stable", - "short": "rustc 1.80.0 (051478957 2024-07-21)" + "short": "rustc 1.78.0 (9b00956e5 2024-04-29)" }, "contractCrate": { "name": "bridged-tokens-wrapper", diff --git a/integrationTests/relayers/slowTests/testdata/contracts/mvx/bridged-tokens-wrapper.wasm b/integrationTests/relayers/slowTests/testdata/contracts/mvx/bridged-tokens-wrapper.wasm index af292cff4a3ee43faefe9e1c9c260e7e0bb7a1cc..ea8a30cc1ed5c25288b716e28938171b0dd0e3a1 100755 GIT binary patch delta 2568 zcmZuzdu)?c6#wr1+O_O!*V}emR<@RJWn&$$0g;Iqly8D44*|i53DbtIp_X<=Xt;F zD!*R-k)Ok0o(p~+ZlAzEWhL{PoH}9Z@MF|Cz(Dx%S+XICT=vFPMkGh(&cE6mrJh*mVj?vSov zzS*&vvtGDUx{_tgsfstmYU1?`>h>xS_P~hMEMrrh zsw%50;qTfjKKH zYHG^RX>B9SNDJy$M>Vy#rUjWV$XK)3+|tsbg*9vY(q%1L`zMZm-0?Gs#9=twt)6|~ z{%rbG#PMgw6Ug(b{3^G1x_Ly(vTpO-VtVFDuD876=~U|UxBVHF2cahN*h zM-meS@_j{sNmj$7aL^*{hi2Z+Y)H_;X77%Y8oL zm1+0uPK4FATFhjYvs$R`K^0{I7wVow&Omk*HswSnUYA6-Se?bjxzQW+?O%y|nAWgO zY@^?iZoF^xtw!yCbWR>jF5Z{MH>9y0)i)tG5b>o@N4jlh8pe1Oo(dGR-OwD!X1ic* zpeXC2yh41pB%+RB7hrE-bL6}{Gh-B125X~<78)CIn#5Qn)_I1u?j=){?vw=U(y24U zni7D?#>nDQy0sZ%zJ%LHSHwnIU5u*D$uOmbNbUga#b{NCd|f+;zRnjAMuq?vmYhA{giD% zi^YnD?&pXj&=eYm&sS3@2RcGw++7WYldt4K=+UEKk{kz@W*8U)QI>KOam?yu%c#+k z0#z0%Q1(brrl~haQ70{6ZI5xKsn9UBpOcGWy_5?i!9=;Rdt{<0Ov{zz!p1xe0WbdAl5=PRQg0}pz>?WMg5BiQK-4oRXxWi`J1Ho`1j_M=fEo>272tPDH z@nQI+$9BZGOmT;8rF=5Ry-%Zn)R^ixkL5kXUWJRpCbbT616KF!le0U;CL4g3JTpz~ zf{vaOlJjXt^lzk@9W@tVNWp`4`3Z%Ff~o8>{7{hSCciF7c^O6*j`#mV*7?kuCYCFB zu?RjWT-)n2DNlBPCb~@(64JU9n{NqqqWA@>dNpLp2SIG13*GT)md)7#mwM%~KOv)N z8m@Ik9|q(NEUEge;S47+4#JSgP_`6mi*sRRq!cszW#mam@==3O@p!fvb$uP3jBUk* zo@>Nqomos@7q_?w`-^)gWy_Y3%!9Iw-eL93isNLxRlG+(2A31RjNDiMEOhPKNB90h P=b8o?{cB)u|1tjqLDuNs delta 2525 zcmZ`)du&rx7(d@>yLP+Xde%MYx^BJeHrDYN_*%#eW|sw#1cV5Q{{W_}RXXNY)=p5P z8w>$OWcVo{2qZ@351dgKV}jr-1_TrTKwu(6#Rr1CLBR(PzjN+waj02xcFymvFYTYs--EixA9LBb%Vl$MZl^zw$hA4``A(Ohm&@jK=F*i54%{X< z=U8vQ7nj+`c0CQw&cs6+fp5o=9CeQcEplNwgDW8 zNM|y}Hd4Xb%DHe*{>nQhmk$NHbkDucWdfG)AMyStl( zm;wDeouj$)Yxxw1@qBg?zUYtT%mR1^KhYMzcD&uaS=%nvOv`3s3m$Qw%oz*tByTi8 z^x{2vHQ6~#XX1Ub!Cko{VGUl$HLyMJ5DemEPaVGDabu6C7WQGE=crv_ydq-b4oXZd zmt1ua8|1^U`I*sbfWgE%_15W`R+)x<;t)3Fk1qIC>dBLbxjO9P9QNcd_wHAqW_YA# z;ye7Hz(4+|6f;eSty+OexKB#{g{`~|l^k#6jTS=ETM0*To%dGQk9)o4bU)$UlQV|O zC{3tp*@c1P4256VPQ^NbSUBre)iT{F4oEY%O*1YmU(wABuUH}l>_6UEQB)2Wu(7DP%k1}nVzBED zqpL-HB_EWKL$}>c#pb$Gw~1e*P@@NkW9q7TDI|KCfetEJ(LY2wrxq#cY_JW9`jnK) zE{3@s4-^f%%}fBy1aun}Mui~BhWaHlWq|3lgv*I|JHQ*()d`2JK7hw-{^nEsc%>tKv(q5Qab zU8%0fGvpxCt5{zW_GU09=Gyfvit-31N@{((EnioQq!scgB#b@yc1caqS%o3#t|>Dc zY0lv3lC5F0!Jti|vQy!ixGoLEPx7QfLHdn5{A0YP?gs^C>hP++qPlyrboo*_Zjq-O zWV<*e0rQ2W#ir7+a2ivkjdZ?S8p~TEy(UTygNr2?4zz04v{7&uaZ8}K@S+5h8^1!@ zGA*AOOK~tz0hjSwU`E4-QeB~F>SeXXVriDnfl$7Y2DHHT7O~7!(Ut5@;>xnARX4fc zFymB*Fn5#TDZElvlC9E~a9CbGZDbm$N+KP%7z(LlhG-E>O&aO%6N9+Ed^~-C4wg62 znI8;UpSS^R2v)%{d?4s+Fxzh~0Whij*OKSNm*rbQVG~;jMNU3@}^Yen<|#cGgC>D+e|rb z(kC|!siu2KFlH#!YGZJzjAhjSghE{j;KYhMCa9u>xHv3X>uH$(Cn~f0T%^lK*{6%M zqhbnN#q3a-_lOm`XsMzb&C^~S7pkU(oD&ZxQ* z0I_NooX2xjiEQ<=Ky>FZUOlbgcWGGx#$55V@?oL}Kd)Xp{9`4zhQE+PmNgQ}x}Ik5 zDLIJZdt5#|Rit)aY?BUt`n0Oq+=rqjKp*1KHFN3gt$DLVc~Gl2C_7qV3u6H94>!Ov zTvc0&ec^hl>W|_3oaWpf#__e&U@7TFIn#_E)mD2hOAO=qQ?lE+;w=7JJHnE!SSDp2 kl8qh_@>}0eY27DYmH#xZ7JhmE6C*ygVN+cz_SH@O8$0jzMgRZ+ diff --git a/integrationTests/relayers/slowTests/testdata/contracts/mvx/esdt-safe.abi.json b/integrationTests/relayers/slowTests/testdata/contracts/mvx/esdt-safe.abi.json index cf42170d..a00345ca 100644 --- a/integrationTests/relayers/slowTests/testdata/contracts/mvx/esdt-safe.abi.json +++ b/integrationTests/relayers/slowTests/testdata/contracts/mvx/esdt-safe.abi.json @@ -1,11 +1,11 @@ { "buildInfo": { "rustc": { - "version": "1.80.0", - "commitHash": "051478957371ee0084a7c0913941d2a8c4757bb9", - "commitDate": "2024-07-21", + "version": "1.78.0", + "commitHash": "9b00956e56009bab2aa15d7bff10916599e3d6d6", + "commitDate": "2024-04-29", "channel": "Stable", - "short": "rustc 1.80.0 (051478957 2024-07-21)" + "short": "rustc 1.78.0 (9b00956e5 2024-04-29)" }, "contractCrate": { "name": "esdt-safe", @@ -165,6 +165,26 @@ ], "outputs": [] }, + { + "name": "initSupplyMintBurn", + "onlyOwner": true, + "mutability": "mutable", + "inputs": [ + { + "name": "token_id", + "type": "TokenIdentifier" + }, + { + "name": "mint_amount", + "type": "BigUint" + }, + { + "name": "burn_amount", + "type": "BigUint" + } + ], + "outputs": [] + }, { "name": "computeTotalAmmountsFromIndex", "mutability": "readonly", diff --git a/integrationTests/relayers/slowTests/testdata/contracts/mvx/esdt-safe.wasm b/integrationTests/relayers/slowTests/testdata/contracts/mvx/esdt-safe.wasm index 342bbc41820edf091d2a8f1d50ba547bc4ea4b4b..88d1e9c499e9f2a195e123be82db736ad9ae6c30 100755 GIT binary patch delta 6789 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 H+u8pE$FTOz delta 6609 zcmaJ`3wTu3wLW{FnaP=)naNHv3CScRXC?v@9tsyo0s+a1Bq;@Xt3dG6JO-E{2{f4$ zX+N2uf>;r07v54t<@)$aQGq&m_4?IYtDvBOQ2PL(JgOj8yyaHpWHtvf*$ImkL3cCdBY`K*-O|x;;ra8ESXR2JAzr>>!6O1L!~RW8A6j=~|AnFnWPFIgOF zn;mXi9BNmtFmF>sOH*e{Lo_rq^n=cDd#JfK6jH7NOY_^VvHXSbx+DMQucR@(RsJ9I zG>1E)?cv7GXb9JIC||SehUR8V{gOKtg`=Ss6i~i_d(#TM*O^n=j(c|~UA!0#xfP~H z3vN?Zai?&Fy#ZML*bZd$rxx9m;yS zO>MZn!xEX)to&38O=;-n{ETN?8&|i7n-_)>08jv?J9CF^;P#~rogE?NF`m}hW)1(H zYvGRR#BEl7&Na+wOLarjVr3(MGiZBdKce}!&Kuo3*RSbP%vdC#l<}Q#&3Svwsfb_P z*VUycdX%X#Ud5{n7UZ@7r-u?ygM3cFHrcHh%-|-AlyMt9>)gyx3{~vx!lmNZ^qZj@ zipj?+Muv_$xM8csMJR(>3@%s ztb;Te;2205Y%UJLGno_EVfZMsl5L0LtV(tS>a!jlv_<+);U@ph!iacEa#W0JH*X7M zW{-kt*#pqH&g`jdKkUw)hQD5KtA9U*>3iq}^K%!|4Q4*OlH4g0f0TB<15bNzLfPMY zhkEiEi;3r@Z72^SrwOLyReRGh$l~|J)^W(>5Z31XIMy=-v<+qdkP^88MKK<#M1w0L zP7>+2<7A3(Si~tggD|2Qi{L$pv>t>wErm5x@!OD%X@}MM{n%gO$^6CaBS`nv;drKR zdB$fXXYTq5d6_NF#6R?1Vz8!PJv##*_Z!d~H#vDj;f36`bPvH4(JlT2X9~w=rXwkS zN_x;^9KHj~bC&mB`AyCZxo4zBWQ{Fiu9acU6Q4mvZWMg|2BSGO{VJR#h$s`my&r=8 zCt{#m`wvnvDG)9m!T=sCt_OQj95(e|?9QaEz9gM5iVcufJmrqdL?@xhvNMDu|!XTSR))0#N;Wq!(Mu@|O5ZvMgY2`IDS_o__sUVUjc~ANLS@57hA|vGjg4{${TPo}cRo z6E2R*MOR_;&EvgR+)5B==HFBPPneJkn{TGVi6aw3b4^aUg(WQ%ag0>pe!J*N!Q1nY zb$Bg_A*65pYGS!Cp4k(INL?lJw*Xd5(5#Vj=YvU^2@?vOzmXJf1Mg2r%6h6S*<2V_ zrQ@nGRb@Sm{zUF8a0waxiz+wU2EVKtUwM}D;%8X$FH4DHVR5+0#iw#kwc?7$CNAUg zv2=-xI24Vlh+Rpm`DG?v*BBcKjdGUhZ%XpPqg#=zZin$loSC{2)WyvK0o9Ue9wj<<8ek+`;&S6{O%j)_f zhhhI^fSXt$O#3ui!95)G4WU<+u6%$i`#y!Hs1Y>pLgQI_b! z2=XJC9}7^XQRmi3TpTAg$d>g2(}iLmvw$Wx6CWkg#7lBy6MyL=`7IgTqf|Y_{KDM4 z8qU|`g@t&X)>wE(-FERoO6!MY7CI%dE}kRGrRdVk!fM6x4)b(@C0Z5i(O#Aw1(F__ zf0lF!((vQjveNVNa?dx{$yU%U4$@w--$CGs&n=4DX!t|zs1YY<$3$~yVOUsAp{xqR zx|Nd+BG$cwFsAMnb~t`--8P0zU~tmF9GMS)CR+K15)to6S1&`;q*}bFwoUpQV^75& zn|y>1vMP&Bye6HuB|?pL84CciFbvo{ikD!+)EaD(KAbvW-kygkcb=4|tJV@-l%hY7 z^WF6SO4^&6KYc&R_ZN6|PzX*sY-usRf(jUXR_pt|_?Y;9mOQ(>$|~>3@xCR;kBoVH>@es3$ITz(!CLJPC9=TKAASqK=LCZ1NMZc4uqKnC%fT5 zKZi~4hdox!^oesSP_MI$kHQBQ-r@Mbeq|^=>}5QNkF;{tz=u|@=2=n3-@J(R9+NyC z(iN&3=XxaJ^z`f)(uQWFi?_%a=@fCSWbGp!wc4^0B$#g#(<(N8O{d`C1bXvV;`fLR zvQ85#z!DBRF@2VU%y3%g#l^;vauhvDqJCx(rzGJ_YCh3Rv(r+CsJIF{X5^Ki*8d{! zYOsv|ldYg)X5_Y=y!(tiBat#Ng@k>Q9+RT4t|DagOVRhqGnAjAH%TP<@IC7C%whiH zv_0L4ShKC;f$y7i;aFt@?W~zKW|mbt?1+me$R9+r-3me?gecxOgvhc&m^=-AR>R?0 z`2&7yIZsupdkZVhsV#Icn+C$@+4Ez&rLC&fl2v2D75k+%97lU;4xew!r(zo20ox@V z&P)a1aTyQ{0EsI4LC$Qk#BDFSFZ%;Di;czS^b{1PJlT6BIt@B6Rwp6ehv01^V{edL zA{^LT^bH5HdLv5hfhaYJC;}8p_5e+dTQyiWOz15K1tj89;3QQkbS8A^u>H2&(FqsL z&*W=ZceS}HX@4>VW(pJJ1Uz^9jrutnQLiP=!HL@+z&GZmJ64ohFT!NyM%g30fMwTu z6(-Ph^R__xoG0)tW9yvJSV>RJDY(IEqw)3-cz&$3X*iN;ledCXybb;5&d5zPd5I2* z)Zz*I9Za7$2@cH7VprkR+@b6XaL=n|#GQ+rZS#gM_=4<3;o*tA>lO4Co#@zT4n2{n z#BUWJ$P=O`x<@6^Gb&cks1N_A3&p1}u6{)Rw~>(m2CT0C-pKEq6@QW8>;_GD`$^3y zn_tF`L&f|`b`9DV4#|;+GS#LYktO5`OquUbv)cSCaD4utOlzlvTX=f^2HrbE7?dB~ zc^A7H|M1Qg%=zl0R0}ZA&~R6YDHn*p%V^ld|Ikwc8_iD|XmazQyks-PF=?`Ds^*)L z;}XYU&s~#Q95U~&7%N{AFy118Ry@H;7Uhf9Vny2}buf-)HpmMD2xajm+<$i?dkfCq zUGgmtj)SkE4n1gWSmEC&P0vbRaOSsYV2wp=BN&ZqM#y+cuv)JHi8y0PGw|z_LL3otR&2g$N*i7T*uVL?eR^kRNKA*clCL*J1H2($wbwC5N4v-`;5H?VVH zEb=0PMlYI#-vVNbuCoge3s+@XpK0EcSAxvw1vnh8%#xK%^kNr9#^omp9AU%yOLiO3 z5sChr{Mh4C^=f8)_i=Ijh9J+O)ev@S ziSIZAAvEtwE}T^ZlsI*Z@5nZ7LOsn2SU_a-+&rR(hOHu+iKh|>R? r=zwEC^ufi>FF{?lHlQeqivQ@pzE7LQhIPx1Id`ttbX&#s>(~DuO75g7 diff --git a/integrationTests/relayers/slowTests/testdata/contracts/mvx/multi-transfer-esdt.abi.json b/integrationTests/relayers/slowTests/testdata/contracts/mvx/multi-transfer-esdt.abi.json index d4f1b2ce..2b33988e 100644 --- a/integrationTests/relayers/slowTests/testdata/contracts/mvx/multi-transfer-esdt.abi.json +++ b/integrationTests/relayers/slowTests/testdata/contracts/mvx/multi-transfer-esdt.abi.json @@ -1,11 +1,11 @@ { "buildInfo": { "rustc": { - "version": "1.80.0", - "commitHash": "051478957371ee0084a7c0913941d2a8c4757bb9", - "commitDate": "2024-07-21", + "version": "1.78.0", + "commitHash": "9b00956e56009bab2aa15d7bff10916599e3d6d6", + "commitDate": "2024-04-29", "channel": "Stable", - "short": "rustc 1.80.0 (051478957 2024-07-21)" + "short": "rustc 1.78.0 (9b00956e5 2024-04-29)" }, "contractCrate": { "name": "multi-transfer-esdt", diff --git a/integrationTests/relayers/slowTests/testdata/contracts/mvx/multi-transfer-esdt.wasm b/integrationTests/relayers/slowTests/testdata/contracts/mvx/multi-transfer-esdt.wasm index 93ed39d839352a33f2caf0fbda7f50a20d70c468..1af6fbd2f0378db6293db8c2e338c4d7a95dc5a9 100755 GIT binary patch delta 687 zcmZ`#O=uHA6rT5Xx0__U*&!6Pp-m@iA)!z$Rt0lu7m}1_QKWk4we%K6K}1lH#DgWR zhaR5bKT4_KPpjfwJZP&n)V3lXy!45KbGw*%xd*9qFJh}xB zPwLtYxK5|^F3pS}UDbQGAVahgn%RQL^tOa)GLvDON$>Q2M3j!P6ZPBEK~upzPNJw-jis1(8@p!MOwCI{JGszP*CaZNM6Ml=2nJB&65(+7WRJj(c!rVh%J-~2<^^;{*a Sc&L>?{_O8?QI79l)qVqkk;8rf delta 569 zcmY*WO=wd=5Z;-$FE8Qw^41d6gxGA}rH_I?SQO301ezCYW2p$mn|CRSMHEFzyfs$5 zjL03m%^3)(vRV zd7iT{?ogADZ)J$+j#y3%k@3`s<1mMzlcFztLT$G9Aa7mMjEXZ`I|Eh?i&&HpA`j3c z7FZ!33;49hBuFg5iG9dTu6Q7sw8Uz?UT30hqVGyp!UB`Nt9PK}ktS)3-Xc-l-+*Y+ zgMTD9U>eM{NLek!dzefE)Wlr_2v`Z!VYgw?oPUzCet|wGBl_eYv0s}pWyDQrsHfs< z0vCbuxh-@wyP%dcEuc5qZ#==oGkUcBxBttanKq|Af#_0abVn@1O7nXAkI{922Cd0c zn}qf%{tS(EXe_@@c5oVAsdK?48xhuM;C^# zJUxkS!3Q;0nM7Ej=AnDgr)a7Opq8fUkoahv=9%bGs=CV?RvV%;TivEER%bBx!YH~) S^9%a(#Pk2lHT8X_XZ;0Kp`bhf diff --git a/integrationTests/relayers/slowTests/testdata/contracts/mvx/multisig.abi.json b/integrationTests/relayers/slowTests/testdata/contracts/mvx/multisig.abi.json index 6ea09bd6..8eec5f32 100644 --- a/integrationTests/relayers/slowTests/testdata/contracts/mvx/multisig.abi.json +++ b/integrationTests/relayers/slowTests/testdata/contracts/mvx/multisig.abi.json @@ -1,11 +1,11 @@ { "buildInfo": { "rustc": { - "version": "1.80.0", - "commitHash": "051478957371ee0084a7c0913941d2a8c4757bb9", - "commitDate": "2024-07-21", + "version": "1.78.0", + "commitHash": "9b00956e56009bab2aa15d7bff10916599e3d6d6", + "commitDate": "2024-04-29", "channel": "Stable", - "short": "rustc 1.80.0 (051478957 2024-07-21)" + "short": "rustc 1.78.0 (9b00956e5 2024-04-29)" }, "contractCrate": { "name": "multisig", @@ -363,6 +363,45 @@ "inputs": [], "outputs": [] }, + { + "name": "initSupplyEsdtSafe", + "onlyOwner": true, + "mutability": "mutable", + "payableInTokens": [ + "*" + ], + "inputs": [ + { + "name": "token_id", + "type": "TokenIdentifier" + }, + { + "name": "amount", + "type": "BigUint" + } + ], + "outputs": [] + }, + { + "name": "initSupplyMintBurnEsdtSafe", + "onlyOwner": true, + "mutability": "mutable", + "inputs": [ + { + "name": "token_id", + "type": "TokenIdentifier" + }, + { + "name": "mint_amount", + "type": "BigUint" + }, + { + "name": "burn_amount", + "type": "BigUint" + } + ], + "outputs": [] + }, { "name": "pauseProxy", "onlyOwner": true, diff --git a/integrationTests/relayers/slowTests/testdata/contracts/mvx/multisig.wasm b/integrationTests/relayers/slowTests/testdata/contracts/mvx/multisig.wasm index a7805b0e2811f304087be2b4c34c0a14cf7ef4cd..b6559e489084312faf0ba8f8e8449135a2694102 100755 GIT binary patch literal 37293 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 literal 36527 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 diff --git a/integrationTests/relayers/slowTests/testdata/contracts/mvx/test-caller.abi.json b/integrationTests/relayers/slowTests/testdata/contracts/mvx/test-caller.abi.json index ee4eb128..e7c1a897 100644 --- a/integrationTests/relayers/slowTests/testdata/contracts/mvx/test-caller.abi.json +++ b/integrationTests/relayers/slowTests/testdata/contracts/mvx/test-caller.abi.json @@ -1,11 +1,11 @@ { "buildInfo": { "rustc": { - "version": "1.80.0", - "commitHash": "051478957371ee0084a7c0913941d2a8c4757bb9", - "commitDate": "2024-07-21", + "version": "1.78.0", + "commitHash": "9b00956e56009bab2aa15d7bff10916599e3d6d6", + "commitDate": "2024-04-29", "channel": "Stable", - "short": "rustc 1.80.0 (051478957 2024-07-21)" + "short": "rustc 1.78.0 (9b00956e5 2024-04-29)" }, "contractCrate": { "name": "test-caller", diff --git a/integrationTests/relayers/slowTests/testdata/contracts/mvx/test-caller.wasm b/integrationTests/relayers/slowTests/testdata/contracts/mvx/test-caller.wasm index 9692eece34a8ded6ab12347b05c9d28344d503f9..8419ee5173666c8a3186db1019b39f29f7897bbc 100755 GIT binary patch delta 206 zcmeB^KOn#1H6xRv!sNG%5^T&I930GSlR22`d9*l^6LWH$5|gtTv?oty(q(RuP}qE! zX*Q#fEF)vRz_f;j1_mVt#{-QW4Gf!eSmK!&H%vamrZ2+FpunKOD6kGB&%n(Mq-C=K*DEH*1CynBb@^ao q4BQ~rW+&btM#1$UMcmw97?~Ix8yYycA531#w~v{Dfnjnozcv8pWH|l+ delta 161 zcmX>g-zUG}H6xRp?ButM63iSN9Fw`3>UlIdk`r@soD!3>8MG!(W71{5AuhZ57}IP< zK1oK#dVy&T4Gj!R433POi&^5C7}rj|%%;!B$sn*AB+kGMVoerf_hmdkIfY$|asB3g zb|FT_MUxkCI5IMBe!&sVxY?KM1ry`m$!5H|o6C897zNjWbaHclWMpD+Y-r%%zB~B} K-@eIH`LzLwDKEPK From 8ebf544728f85dfabed129aab85e7e8780181faf Mon Sep 17 00:00:00 2001 From: Iulian Pascalau Date: Mon, 9 Sep 2024 17:32:17 +0300 Subject: [PATCH 2/2] - integrated new contracts --- clients/ethereum/contract/Bridge.go | 0 clients/ethereum/contract/ERC20Safe.go | 44 ++++----- clients/ethereum/contract/GenericERC20.go | 0 clients/ethereum/contract/MintBurnERC20.go | 0 .../slowTests/framework/ethereumHandler.go | 14 ++- .../slowTests/framework/multiversxHandler.go | 6 +- .../testdata/contracts/eth/Bridge.abi.json | 0 .../testdata/contracts/eth/Bridge.hex | 0 .../testdata/contracts/eth/ERC20Safe.abi.json | 19 +++- .../testdata/contracts/eth/ERC20Safe.hex | 2 +- .../contracts/eth/GenericERC20.abi.json | 0 .../testdata/contracts/eth/GenericERC20.hex | 0 .../contracts/eth/MintBurnERC20.abi.json | 0 .../testdata/contracts/eth/MintBurnERC20.hex | 0 .../testdata/contracts/eth/Proxy.abi.json | 0 .../testdata/contracts/eth/Proxy.hex | 0 .../testdata/contracts/mvx/esdt-safe.abi.json | 93 +++++++++--------- .../testdata/contracts/mvx/esdt-safe.wasm | Bin 30834 -> 31233 bytes .../testdata/contracts/mvx/multisig.abi.json | 12 +++ .../testdata/contracts/mvx/multisig.wasm | Bin 37293 -> 37524 bytes 20 files changed, 115 insertions(+), 75 deletions(-) mode change 100644 => 100755 clients/ethereum/contract/Bridge.go mode change 100644 => 100755 clients/ethereum/contract/ERC20Safe.go mode change 100644 => 100755 clients/ethereum/contract/GenericERC20.go mode change 100644 => 100755 clients/ethereum/contract/MintBurnERC20.go mode change 100644 => 100755 integrationTests/relayers/slowTests/testdata/contracts/eth/Bridge.abi.json mode change 100644 => 100755 integrationTests/relayers/slowTests/testdata/contracts/eth/Bridge.hex mode change 100644 => 100755 integrationTests/relayers/slowTests/testdata/contracts/eth/ERC20Safe.abi.json mode change 100644 => 100755 integrationTests/relayers/slowTests/testdata/contracts/eth/ERC20Safe.hex mode change 100644 => 100755 integrationTests/relayers/slowTests/testdata/contracts/eth/GenericERC20.abi.json mode change 100644 => 100755 integrationTests/relayers/slowTests/testdata/contracts/eth/GenericERC20.hex mode change 100644 => 100755 integrationTests/relayers/slowTests/testdata/contracts/eth/MintBurnERC20.abi.json mode change 100644 => 100755 integrationTests/relayers/slowTests/testdata/contracts/eth/MintBurnERC20.hex mode change 100644 => 100755 integrationTests/relayers/slowTests/testdata/contracts/eth/Proxy.abi.json mode change 100644 => 100755 integrationTests/relayers/slowTests/testdata/contracts/eth/Proxy.hex diff --git a/clients/ethereum/contract/Bridge.go b/clients/ethereum/contract/Bridge.go old mode 100644 new mode 100755 diff --git a/clients/ethereum/contract/ERC20Safe.go b/clients/ethereum/contract/ERC20Safe.go old mode 100644 new mode 100755 index b50a5f45..e3777621 --- a/clients/ethereum/contract/ERC20Safe.go +++ b/clients/ethereum/contract/ERC20Safe.go @@ -31,7 +31,7 @@ var ( // ERC20SafeMetaData contains all meta data concerning the ERC20Safe contract. var ERC20SafeMetaData = &bind.MetaData{ - ABI: "[{\"inputs\":[{\"internalType\":\"address\",\"name\":\"target\",\"type\":\"address\"}],\"name\":\"AddressEmptyCode\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"account\",\"type\":\"address\"}],\"name\":\"AddressInsufficientBalance\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"FailedInnerCall\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"InvalidInitialization\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"NotInitializing\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"token\",\"type\":\"address\"}],\"name\":\"SafeERC20FailedOperation\",\"type\":\"error\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"previousAdmin\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"newAdmin\",\"type\":\"address\"}],\"name\":\"AdminRoleTransferred\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"previousBridge\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"newBridge\",\"type\":\"address\"}],\"name\":\"BridgeTransferred\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"uint112\",\"name\":\"batchId\",\"type\":\"uint112\"},{\"indexed\":false,\"internalType\":\"uint112\",\"name\":\"depositNonce\",\"type\":\"uint112\"}],\"name\":\"ERC20Deposit\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"uint112\",\"name\":\"batchId\",\"type\":\"uint112\"},{\"indexed\":false,\"internalType\":\"uint112\",\"name\":\"depositNonce\",\"type\":\"uint112\"},{\"indexed\":false,\"internalType\":\"bytes\",\"name\":\"callData\",\"type\":\"bytes\"}],\"name\":\"ERC20SCDeposit\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"uint64\",\"name\":\"version\",\"type\":\"uint64\"}],\"name\":\"Initialized\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"bool\",\"name\":\"isPause\",\"type\":\"bool\"}],\"name\":\"Pause\",\"type\":\"event\"},{\"inputs\":[],\"name\":\"admin\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"batchBlockLimit\",\"outputs\":[{\"internalType\":\"uint8\",\"name\":\"\",\"type\":\"uint8\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"name\":\"batchDeposits\",\"outputs\":[{\"internalType\":\"uint112\",\"name\":\"nonce\",\"type\":\"uint112\"},{\"internalType\":\"address\",\"name\":\"tokenAddress\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"amount\",\"type\":\"uint256\"},{\"internalType\":\"address\",\"name\":\"depositor\",\"type\":\"address\"},{\"internalType\":\"bytes32\",\"name\":\"recipient\",\"type\":\"bytes32\"},{\"internalType\":\"enumDepositStatus\",\"name\":\"status\",\"type\":\"uint8\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"batchSettleLimit\",\"outputs\":[{\"internalType\":\"uint8\",\"name\":\"\",\"type\":\"uint8\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"batchSize\",\"outputs\":[{\"internalType\":\"uint16\",\"name\":\"\",\"type\":\"uint16\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"name\":\"batches\",\"outputs\":[{\"internalType\":\"uint112\",\"name\":\"nonce\",\"type\":\"uint112\"},{\"internalType\":\"uint64\",\"name\":\"blockNumber\",\"type\":\"uint64\"},{\"internalType\":\"uint64\",\"name\":\"lastUpdatedBlockNumber\",\"type\":\"uint64\"},{\"internalType\":\"uint16\",\"name\":\"depositsCount\",\"type\":\"uint16\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"batchesCount\",\"outputs\":[{\"internalType\":\"uint64\",\"name\":\"\",\"type\":\"uint64\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"bridge\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"name\":\"burnBalances\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"tokenAddress\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"amount\",\"type\":\"uint256\"},{\"internalType\":\"bytes32\",\"name\":\"recipientAddress\",\"type\":\"bytes32\"}],\"name\":\"deposit\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"tokenAddress\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"amount\",\"type\":\"uint256\"},{\"internalType\":\"bytes32\",\"name\":\"recipientAddress\",\"type\":\"bytes32\"},{\"internalType\":\"bytes\",\"name\":\"callData\",\"type\":\"bytes\"}],\"name\":\"depositWithSCExecution\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"depositsCount\",\"outputs\":[{\"internalType\":\"uint64\",\"name\":\"\",\"type\":\"uint64\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"batchNonce\",\"type\":\"uint256\"}],\"name\":\"getBatch\",\"outputs\":[{\"components\":[{\"internalType\":\"uint112\",\"name\":\"nonce\",\"type\":\"uint112\"},{\"internalType\":\"uint64\",\"name\":\"blockNumber\",\"type\":\"uint64\"},{\"internalType\":\"uint64\",\"name\":\"lastUpdatedBlockNumber\",\"type\":\"uint64\"},{\"internalType\":\"uint16\",\"name\":\"depositsCount\",\"type\":\"uint16\"}],\"internalType\":\"structBatch\",\"name\":\"\",\"type\":\"tuple\"},{\"internalType\":\"bool\",\"name\":\"isBatchFinal\",\"type\":\"bool\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"batchNonce\",\"type\":\"uint256\"}],\"name\":\"getDeposits\",\"outputs\":[{\"components\":[{\"internalType\":\"uint112\",\"name\":\"nonce\",\"type\":\"uint112\"},{\"internalType\":\"address\",\"name\":\"tokenAddress\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"amount\",\"type\":\"uint256\"},{\"internalType\":\"address\",\"name\":\"depositor\",\"type\":\"address\"},{\"internalType\":\"bytes32\",\"name\":\"recipient\",\"type\":\"bytes32\"},{\"internalType\":\"enumDepositStatus\",\"name\":\"status\",\"type\":\"uint8\"}],\"internalType\":\"structDeposit[]\",\"name\":\"\",\"type\":\"tuple[]\"},{\"internalType\":\"bool\",\"name\":\"areDepositsFinal\",\"type\":\"bool\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"token\",\"type\":\"address\"}],\"name\":\"getTokenMaxLimit\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"token\",\"type\":\"address\"}],\"name\":\"getTokenMinLimit\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"tokenAddress\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"amount\",\"type\":\"uint256\"}],\"name\":\"initSupply\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"tokenAddress\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"burnAmount\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"mintAmount\",\"type\":\"uint256\"}],\"name\":\"initSupplyMintBurn\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"initialize\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"isAnyBatchInProgress\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"token\",\"type\":\"address\"}],\"name\":\"isTokenWhitelisted\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"name\":\"mintBalances\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"name\":\"mintBurnTokens\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"name\":\"nativeTokens\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"pause\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"paused\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"tokenAddress\",\"type\":\"address\"}],\"name\":\"recoverLostFunds\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"token\",\"type\":\"address\"}],\"name\":\"removeTokenFromWhitelist\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"renounceAdmin\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"tokenAddress\",\"type\":\"address\"}],\"name\":\"resetTotalBalance\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint8\",\"name\":\"newBatchBlockLimit\",\"type\":\"uint8\"}],\"name\":\"setBatchBlockLimit\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint8\",\"name\":\"newBatchSettleLimit\",\"type\":\"uint8\"}],\"name\":\"setBatchSettleLimit\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint16\",\"name\":\"newBatchSize\",\"type\":\"uint16\"}],\"name\":\"setBatchSize\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"newBridge\",\"type\":\"address\"}],\"name\":\"setBridge\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"token\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"amount\",\"type\":\"uint256\"}],\"name\":\"setTokenMaxLimit\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"token\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"amount\",\"type\":\"uint256\"}],\"name\":\"setTokenMinLimit\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"name\":\"tokenMaxLimits\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"name\":\"tokenMinLimits\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"name\":\"totalBalances\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"tokenAddress\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"amount\",\"type\":\"uint256\"},{\"internalType\":\"address\",\"name\":\"recipientAddress\",\"type\":\"address\"}],\"name\":\"transfer\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"newAdmin\",\"type\":\"address\"}],\"name\":\"transferAdmin\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"unpause\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"token\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"minimumAmount\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"maximumAmount\",\"type\":\"uint256\"},{\"internalType\":\"bool\",\"name\":\"mintBurn\",\"type\":\"bool\"},{\"internalType\":\"bool\",\"name\":\"native\",\"type\":\"bool\"}],\"name\":\"whitelistToken\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"name\":\"whitelistedTokens\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"view\",\"type\":\"function\"}]", + ABI: "[{\"inputs\":[{\"internalType\":\"address\",\"name\":\"target\",\"type\":\"address\"}],\"name\":\"AddressEmptyCode\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"account\",\"type\":\"address\"}],\"name\":\"AddressInsufficientBalance\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"FailedInnerCall\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"InvalidInitialization\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"NotInitializing\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"token\",\"type\":\"address\"}],\"name\":\"SafeERC20FailedOperation\",\"type\":\"error\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"previousAdmin\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"newAdmin\",\"type\":\"address\"}],\"name\":\"AdminRoleTransferred\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"previousBridge\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"newBridge\",\"type\":\"address\"}],\"name\":\"BridgeTransferred\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"uint112\",\"name\":\"batchId\",\"type\":\"uint112\"},{\"indexed\":false,\"internalType\":\"uint112\",\"name\":\"depositNonce\",\"type\":\"uint112\"}],\"name\":\"ERC20Deposit\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"uint112\",\"name\":\"batchId\",\"type\":\"uint112\"},{\"indexed\":false,\"internalType\":\"uint112\",\"name\":\"depositNonce\",\"type\":\"uint112\"},{\"indexed\":false,\"internalType\":\"bytes\",\"name\":\"callData\",\"type\":\"bytes\"}],\"name\":\"ERC20SCDeposit\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"uint64\",\"name\":\"version\",\"type\":\"uint64\"}],\"name\":\"Initialized\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"bool\",\"name\":\"isPause\",\"type\":\"bool\"}],\"name\":\"Pause\",\"type\":\"event\"},{\"inputs\":[],\"name\":\"admin\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"batchBlockLimit\",\"outputs\":[{\"internalType\":\"uint8\",\"name\":\"\",\"type\":\"uint8\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"name\":\"batchDeposits\",\"outputs\":[{\"internalType\":\"uint112\",\"name\":\"nonce\",\"type\":\"uint112\"},{\"internalType\":\"address\",\"name\":\"tokenAddress\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"amount\",\"type\":\"uint256\"},{\"internalType\":\"address\",\"name\":\"depositor\",\"type\":\"address\"},{\"internalType\":\"bytes32\",\"name\":\"recipient\",\"type\":\"bytes32\"},{\"internalType\":\"enumDepositStatus\",\"name\":\"status\",\"type\":\"uint8\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"batchSettleLimit\",\"outputs\":[{\"internalType\":\"uint8\",\"name\":\"\",\"type\":\"uint8\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"batchSize\",\"outputs\":[{\"internalType\":\"uint16\",\"name\":\"\",\"type\":\"uint16\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"name\":\"batches\",\"outputs\":[{\"internalType\":\"uint112\",\"name\":\"nonce\",\"type\":\"uint112\"},{\"internalType\":\"uint64\",\"name\":\"blockNumber\",\"type\":\"uint64\"},{\"internalType\":\"uint64\",\"name\":\"lastUpdatedBlockNumber\",\"type\":\"uint64\"},{\"internalType\":\"uint16\",\"name\":\"depositsCount\",\"type\":\"uint16\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"batchesCount\",\"outputs\":[{\"internalType\":\"uint64\",\"name\":\"\",\"type\":\"uint64\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"bridge\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"name\":\"burnBalances\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"tokenAddress\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"amount\",\"type\":\"uint256\"},{\"internalType\":\"bytes32\",\"name\":\"recipientAddress\",\"type\":\"bytes32\"}],\"name\":\"deposit\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"tokenAddress\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"amount\",\"type\":\"uint256\"},{\"internalType\":\"bytes32\",\"name\":\"recipientAddress\",\"type\":\"bytes32\"},{\"internalType\":\"bytes\",\"name\":\"callData\",\"type\":\"bytes\"}],\"name\":\"depositWithSCExecution\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"depositsCount\",\"outputs\":[{\"internalType\":\"uint64\",\"name\":\"\",\"type\":\"uint64\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"batchNonce\",\"type\":\"uint256\"}],\"name\":\"getBatch\",\"outputs\":[{\"components\":[{\"internalType\":\"uint112\",\"name\":\"nonce\",\"type\":\"uint112\"},{\"internalType\":\"uint64\",\"name\":\"blockNumber\",\"type\":\"uint64\"},{\"internalType\":\"uint64\",\"name\":\"lastUpdatedBlockNumber\",\"type\":\"uint64\"},{\"internalType\":\"uint16\",\"name\":\"depositsCount\",\"type\":\"uint16\"}],\"internalType\":\"structBatch\",\"name\":\"\",\"type\":\"tuple\"},{\"internalType\":\"bool\",\"name\":\"isBatchFinal\",\"type\":\"bool\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"batchNonce\",\"type\":\"uint256\"}],\"name\":\"getDeposits\",\"outputs\":[{\"components\":[{\"internalType\":\"uint112\",\"name\":\"nonce\",\"type\":\"uint112\"},{\"internalType\":\"address\",\"name\":\"tokenAddress\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"amount\",\"type\":\"uint256\"},{\"internalType\":\"address\",\"name\":\"depositor\",\"type\":\"address\"},{\"internalType\":\"bytes32\",\"name\":\"recipient\",\"type\":\"bytes32\"},{\"internalType\":\"enumDepositStatus\",\"name\":\"status\",\"type\":\"uint8\"}],\"internalType\":\"structDeposit[]\",\"name\":\"\",\"type\":\"tuple[]\"},{\"internalType\":\"bool\",\"name\":\"areDepositsFinal\",\"type\":\"bool\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"token\",\"type\":\"address\"}],\"name\":\"getTokenMaxLimit\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"token\",\"type\":\"address\"}],\"name\":\"getTokenMinLimit\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"tokenAddress\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"amount\",\"type\":\"uint256\"}],\"name\":\"initSupply\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"tokenAddress\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"mintAmount\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"burnAmount\",\"type\":\"uint256\"}],\"name\":\"initSupplyMintBurn\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"initialize\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"isAnyBatchInProgress\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"token\",\"type\":\"address\"}],\"name\":\"isTokenWhitelisted\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"name\":\"mintBalances\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"name\":\"mintBurnTokens\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"name\":\"nativeTokens\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"pause\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"paused\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"tokenAddress\",\"type\":\"address\"}],\"name\":\"recoverLostFunds\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"token\",\"type\":\"address\"}],\"name\":\"removeTokenFromWhitelist\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"renounceAdmin\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"tokenAddress\",\"type\":\"address\"}],\"name\":\"resetTotalBalance\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint8\",\"name\":\"newBatchBlockLimit\",\"type\":\"uint8\"}],\"name\":\"setBatchBlockLimit\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint8\",\"name\":\"newBatchSettleLimit\",\"type\":\"uint8\"}],\"name\":\"setBatchSettleLimit\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint16\",\"name\":\"newBatchSize\",\"type\":\"uint16\"}],\"name\":\"setBatchSize\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"newBridge\",\"type\":\"address\"}],\"name\":\"setBridge\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"token\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"amount\",\"type\":\"uint256\"}],\"name\":\"setTokenMaxLimit\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"token\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"amount\",\"type\":\"uint256\"}],\"name\":\"setTokenMinLimit\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"name\":\"tokenMaxLimits\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"name\":\"tokenMinLimits\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"name\":\"totalBalances\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"tokenAddress\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"amount\",\"type\":\"uint256\"},{\"internalType\":\"address\",\"name\":\"recipientAddress\",\"type\":\"address\"}],\"name\":\"transfer\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"newAdmin\",\"type\":\"address\"}],\"name\":\"transferAdmin\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"unpause\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"token\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"minimumAmount\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"maximumAmount\",\"type\":\"uint256\"},{\"internalType\":\"bool\",\"name\":\"mintBurn\",\"type\":\"bool\"},{\"internalType\":\"bool\",\"name\":\"native\",\"type\":\"bool\"},{\"internalType\":\"uint256\",\"name\":\"totalBalance\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"mintBalance\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"burnBalance\",\"type\":\"uint256\"}],\"name\":\"whitelistToken\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"name\":\"whitelistedTokens\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"view\",\"type\":\"function\"}]", } // ERC20SafeABI is the input ABI used to generate the binding from. @@ -1049,23 +1049,23 @@ func (_ERC20Safe *ERC20SafeTransactorSession) InitSupply(tokenAddress common.Add // InitSupplyMintBurn is a paid mutator transaction binding the contract method 0xe9935b4a. // -// Solidity: function initSupplyMintBurn(address tokenAddress, uint256 burnAmount, uint256 mintAmount) returns() -func (_ERC20Safe *ERC20SafeTransactor) InitSupplyMintBurn(opts *bind.TransactOpts, tokenAddress common.Address, burnAmount *big.Int, mintAmount *big.Int) (*types.Transaction, error) { - return _ERC20Safe.contract.Transact(opts, "initSupplyMintBurn", tokenAddress, burnAmount, mintAmount) +// Solidity: function initSupplyMintBurn(address tokenAddress, uint256 mintAmount, uint256 burnAmount) returns() +func (_ERC20Safe *ERC20SafeTransactor) InitSupplyMintBurn(opts *bind.TransactOpts, tokenAddress common.Address, mintAmount *big.Int, burnAmount *big.Int) (*types.Transaction, error) { + return _ERC20Safe.contract.Transact(opts, "initSupplyMintBurn", tokenAddress, mintAmount, burnAmount) } // InitSupplyMintBurn is a paid mutator transaction binding the contract method 0xe9935b4a. // -// Solidity: function initSupplyMintBurn(address tokenAddress, uint256 burnAmount, uint256 mintAmount) returns() -func (_ERC20Safe *ERC20SafeSession) InitSupplyMintBurn(tokenAddress common.Address, burnAmount *big.Int, mintAmount *big.Int) (*types.Transaction, error) { - return _ERC20Safe.Contract.InitSupplyMintBurn(&_ERC20Safe.TransactOpts, tokenAddress, burnAmount, mintAmount) +// Solidity: function initSupplyMintBurn(address tokenAddress, uint256 mintAmount, uint256 burnAmount) returns() +func (_ERC20Safe *ERC20SafeSession) InitSupplyMintBurn(tokenAddress common.Address, mintAmount *big.Int, burnAmount *big.Int) (*types.Transaction, error) { + return _ERC20Safe.Contract.InitSupplyMintBurn(&_ERC20Safe.TransactOpts, tokenAddress, mintAmount, burnAmount) } // InitSupplyMintBurn is a paid mutator transaction binding the contract method 0xe9935b4a. // -// Solidity: function initSupplyMintBurn(address tokenAddress, uint256 burnAmount, uint256 mintAmount) returns() -func (_ERC20Safe *ERC20SafeTransactorSession) InitSupplyMintBurn(tokenAddress common.Address, burnAmount *big.Int, mintAmount *big.Int) (*types.Transaction, error) { - return _ERC20Safe.Contract.InitSupplyMintBurn(&_ERC20Safe.TransactOpts, tokenAddress, burnAmount, mintAmount) +// Solidity: function initSupplyMintBurn(address tokenAddress, uint256 mintAmount, uint256 burnAmount) returns() +func (_ERC20Safe *ERC20SafeTransactorSession) InitSupplyMintBurn(tokenAddress common.Address, mintAmount *big.Int, burnAmount *big.Int) (*types.Transaction, error) { + return _ERC20Safe.Contract.InitSupplyMintBurn(&_ERC20Safe.TransactOpts, tokenAddress, mintAmount, burnAmount) } // Initialize is a paid mutator transaction binding the contract method 0x8129fc1c. @@ -1383,25 +1383,25 @@ func (_ERC20Safe *ERC20SafeTransactorSession) Unpause() (*types.Transaction, err return _ERC20Safe.Contract.Unpause(&_ERC20Safe.TransactOpts) } -// WhitelistToken is a paid mutator transaction binding the contract method 0xa7c3a06f. +// WhitelistToken is a paid mutator transaction binding the contract method 0x41220439. // -// Solidity: function whitelistToken(address token, uint256 minimumAmount, uint256 maximumAmount, bool mintBurn, bool native) returns() -func (_ERC20Safe *ERC20SafeTransactor) WhitelistToken(opts *bind.TransactOpts, token common.Address, minimumAmount *big.Int, maximumAmount *big.Int, mintBurn bool, native bool) (*types.Transaction, error) { - return _ERC20Safe.contract.Transact(opts, "whitelistToken", token, minimumAmount, maximumAmount, mintBurn, native) +// Solidity: function whitelistToken(address token, uint256 minimumAmount, uint256 maximumAmount, bool mintBurn, bool native, uint256 totalBalance, uint256 mintBalance, uint256 burnBalance) returns() +func (_ERC20Safe *ERC20SafeTransactor) WhitelistToken(opts *bind.TransactOpts, token common.Address, minimumAmount *big.Int, maximumAmount *big.Int, mintBurn bool, native bool, totalBalance *big.Int, mintBalance *big.Int, burnBalance *big.Int) (*types.Transaction, error) { + return _ERC20Safe.contract.Transact(opts, "whitelistToken", token, minimumAmount, maximumAmount, mintBurn, native, totalBalance, mintBalance, burnBalance) } -// WhitelistToken is a paid mutator transaction binding the contract method 0xa7c3a06f. +// WhitelistToken is a paid mutator transaction binding the contract method 0x41220439. // -// Solidity: function whitelistToken(address token, uint256 minimumAmount, uint256 maximumAmount, bool mintBurn, bool native) returns() -func (_ERC20Safe *ERC20SafeSession) WhitelistToken(token common.Address, minimumAmount *big.Int, maximumAmount *big.Int, mintBurn bool, native bool) (*types.Transaction, error) { - return _ERC20Safe.Contract.WhitelistToken(&_ERC20Safe.TransactOpts, token, minimumAmount, maximumAmount, mintBurn, native) +// Solidity: function whitelistToken(address token, uint256 minimumAmount, uint256 maximumAmount, bool mintBurn, bool native, uint256 totalBalance, uint256 mintBalance, uint256 burnBalance) returns() +func (_ERC20Safe *ERC20SafeSession) WhitelistToken(token common.Address, minimumAmount *big.Int, maximumAmount *big.Int, mintBurn bool, native bool, totalBalance *big.Int, mintBalance *big.Int, burnBalance *big.Int) (*types.Transaction, error) { + return _ERC20Safe.Contract.WhitelistToken(&_ERC20Safe.TransactOpts, token, minimumAmount, maximumAmount, mintBurn, native, totalBalance, mintBalance, burnBalance) } -// WhitelistToken is a paid mutator transaction binding the contract method 0xa7c3a06f. +// WhitelistToken is a paid mutator transaction binding the contract method 0x41220439. // -// Solidity: function whitelistToken(address token, uint256 minimumAmount, uint256 maximumAmount, bool mintBurn, bool native) returns() -func (_ERC20Safe *ERC20SafeTransactorSession) WhitelistToken(token common.Address, minimumAmount *big.Int, maximumAmount *big.Int, mintBurn bool, native bool) (*types.Transaction, error) { - return _ERC20Safe.Contract.WhitelistToken(&_ERC20Safe.TransactOpts, token, minimumAmount, maximumAmount, mintBurn, native) +// Solidity: function whitelistToken(address token, uint256 minimumAmount, uint256 maximumAmount, bool mintBurn, bool native, uint256 totalBalance, uint256 mintBalance, uint256 burnBalance) returns() +func (_ERC20Safe *ERC20SafeTransactorSession) WhitelistToken(token common.Address, minimumAmount *big.Int, maximumAmount *big.Int, mintBurn bool, native bool, totalBalance *big.Int, mintBalance *big.Int, burnBalance *big.Int) (*types.Transaction, error) { + return _ERC20Safe.Contract.WhitelistToken(&_ERC20Safe.TransactOpts, token, minimumAmount, maximumAmount, mintBurn, native, totalBalance, mintBalance, burnBalance) } // ERC20SafeAdminRoleTransferredIterator is returned from FilterAdminRoleTransferred and is used to iterate over the raw logs and unpacked data for AdminRoleTransferred events raised by the ERC20Safe contract. diff --git a/clients/ethereum/contract/GenericERC20.go b/clients/ethereum/contract/GenericERC20.go old mode 100644 new mode 100755 diff --git a/clients/ethereum/contract/MintBurnERC20.go b/clients/ethereum/contract/MintBurnERC20.go old mode 100644 new mode 100755 diff --git a/integrationTests/relayers/slowTests/framework/ethereumHandler.go b/integrationTests/relayers/slowTests/framework/ethereumHandler.go index 45d8178a..6db3c50a 100644 --- a/integrationTests/relayers/slowTests/framework/ethereumHandler.go +++ b/integrationTests/relayers/slowTests/framework/ethereumHandler.go @@ -262,7 +262,17 @@ func (handler *EthereumHandler) IssueAndWhitelistToken(ctx context.Context, para // whitelist eth token auth, _ := bind.NewKeyedTransactorWithChainID(handler.OwnerKeys.EthSK, handler.ChainID) - tx, err := handler.SafeContract.WhitelistToken(auth, erc20Address, big.NewInt(ethMinAmountAllowedToTransfer), big.NewInt(ethMaxAmountAllowedToTransfer), params.IsMintBurnOnEth, params.IsNativeOnEth) + tx, err := handler.SafeContract.WhitelistToken( + auth, + erc20Address, + big.NewInt(ethMinAmountAllowedToTransfer), + big.NewInt(ethMaxAmountAllowedToTransfer), + params.IsMintBurnOnEth, + params.IsNativeOnEth, + zeroValueBigInt, + zeroValueBigInt, + zeroValueBigInt, + ) require.NoError(handler, err) handler.SimulatedChain.Commit() handler.checkEthTxResult(ctx, tx.Hash()) @@ -272,7 +282,7 @@ func (handler *EthereumHandler) IssueAndWhitelistToken(ctx context.Context, para mintAmount, ok := big.NewInt(0).SetString(params.InitialSupplyValue, 10) require.True(handler, ok) - tx, err = handler.SafeContract.InitSupplyMintBurn(auth, erc20Address, big.NewInt(0), mintAmount) + tx, err = handler.SafeContract.InitSupplyMintBurn(auth, erc20Address, mintAmount, zeroValueBigInt) require.NoError(handler, err) handler.SimulatedChain.Commit() handler.checkEthTxResult(ctx, tx.Hash()) diff --git a/integrationTests/relayers/slowTests/framework/multiversxHandler.go b/integrationTests/relayers/slowTests/framework/multiversxHandler.go index 1aebcf71..bdb112f9 100644 --- a/integrationTests/relayers/slowTests/framework/multiversxHandler.go +++ b/integrationTests/relayers/slowTests/framework/multiversxHandler.go @@ -618,7 +618,11 @@ func (handler *MultiversxHandler) IssueAndWhitelistToken(ctx context.Context, pa hex.EncodeToString([]byte(mvxChainSpecificToken)), hex.EncodeToString([]byte(params.MvxChainSpecificTokenTicker)), getHexBool(params.IsMintBurnOnMvX), - getHexBool(params.IsNativeOnMvX)}) + getHexBool(params.IsNativeOnMvX), + hex.EncodeToString(zeroValueBigInt.Bytes()), // total_balance + hex.EncodeToString(zeroValueBigInt.Bytes()), // mint_balance + hex.EncodeToString(zeroValueBigInt.Bytes()), // burn_balance + }) log.Info("whitelist token tx executed", "hash", hash, "status", txResult.Status) // set initial supply diff --git a/integrationTests/relayers/slowTests/testdata/contracts/eth/Bridge.abi.json b/integrationTests/relayers/slowTests/testdata/contracts/eth/Bridge.abi.json old mode 100644 new mode 100755 diff --git a/integrationTests/relayers/slowTests/testdata/contracts/eth/Bridge.hex b/integrationTests/relayers/slowTests/testdata/contracts/eth/Bridge.hex old mode 100644 new mode 100755 diff --git a/integrationTests/relayers/slowTests/testdata/contracts/eth/ERC20Safe.abi.json b/integrationTests/relayers/slowTests/testdata/contracts/eth/ERC20Safe.abi.json old mode 100644 new mode 100755 index 955715f6..0d59d245 --- a/integrationTests/relayers/slowTests/testdata/contracts/eth/ERC20Safe.abi.json +++ b/integrationTests/relayers/slowTests/testdata/contracts/eth/ERC20Safe.abi.json @@ -566,12 +566,12 @@ }, { "internalType": "uint256", - "name": "burnAmount", + "name": "mintAmount", "type": "uint256" }, { "internalType": "uint256", - "name": "mintAmount", + "name": "burnAmount", "type": "uint256" } ], @@ -962,6 +962,21 @@ "internalType": "bool", "name": "native", "type": "bool" + }, + { + "internalType": "uint256", + "name": "totalBalance", + "type": "uint256" + }, + { + "internalType": "uint256", + "name": "mintBalance", + "type": "uint256" + }, + { + "internalType": "uint256", + "name": "burnBalance", + "type": "uint256" } ], "name": "whitelistToken", diff --git a/integrationTests/relayers/slowTests/testdata/contracts/eth/ERC20Safe.hex b/integrationTests/relayers/slowTests/testdata/contracts/eth/ERC20Safe.hex old mode 100644 new mode 100755 index 646454fe..b7d1e74e --- a/integrationTests/relayers/slowTests/testdata/contracts/eth/ERC20Safe.hex +++ b/integrationTests/relayers/slowTests/testdata/contracts/eth/ERC20Safe.hex @@ -1 +1 @@ -0x608060405234801561001057600080fd5b50612f3b806100206000396000f3fe608060405234801561001057600080fd5b50600436106102745760003560e01c80639f0ebb9311610151578063d2763186116100c3578063e8a70ee211610087578063e8a70ee214610717578063e9935b4a1461072a578063f2e0ec481461073d578063f4daaba114610750578063f6246ea114610778578063f851a4401461079857600080fd5b8063d276318614610696578063d4673de9146106a9578063daf9c210146106bc578063dbba0f01146106df578063e78cea92146106f257600080fd5b8063bc56602f11610115578063bc56602f146105d7578063c639651d146105f7578063c652a0b514610617578063c859b3fe14610640578063c86726f614610653578063cf6682a21461067657600080fd5b80639f0ebb93146104b2578063a7c3a06f146104e9578063aee9c872146104fc578063b32c4d8d1461051c578063b5af090f146105ab57600080fd5b8063770be784116101ea57806387ea0961116101ae57806387ea0961146104335780638bad0c0a1461044d5780638dd148021461045557806390e0cfcb14610468578063920b03081461048b5780639ab7cfaa1461049e57600080fd5b8063770be784146103f55780637d7763ce146104085780638129fc1c1461041b57806382146138146104235780638456cb591461042b57600080fd5b80633f4ba83a1161023c5780633f4ba83a146103165780634013c89c1461031e5780634506e935146103315780635ac442821461035c5780635c975abb146103c457806375829def146103e257600080fd5b8063085c967f146102795780632325b5f7146102a357806326b3293f146102c9578063284c0c44146102de578063306275be14610303575b600080fd5b61028c61028736600461299c565b6107a9565b60405161029a9291906129ed565b60405180910390f35b6002546102b790600160581b900460ff1681565b60405160ff909116815260200161029a565b6102dc6102d7366004612ab3565b61092c565b005b6102f16102ec366004612ae6565b6109dd565b60405161029a96959493929190612b08565b6102dc610311366004612b55565b610a4a565b6102dc610aa4565b6102dc61032c366004612b70565b610b21565b600254610344906001600160401b031681565b6040516001600160401b03909116815260200161029a565b61036f61036a36600461299c565b610c7a565b6040805183516001600160701b031681526020808501516001600160401b039081169183019190915284830151169181019190915260609283015161ffff16928101929092521515608082015260a00161029a565b600154600160a01b900460ff165b604051901515815260200161029a565b6102dc6103f0366004612b55565b610d27565b6102dc610403366004612b55565b610e22565b6102dc610416366004612b70565b610f34565b6102dc610f89565b6103d26110a1565b6102dc611181565b60015461034490600160a81b90046001600160401b031681565b6102dc6111fd565b6102dc610463366004612b55565b611280565b6103d2610476366004612b55565b60056020526000908152604090205460ff1681565b6102dc610499366004612b70565b611445565b6002546102b790600160501b900460ff1681565b6104db6104c0366004612b55565b6001600160a01b031660009081526007602052604090205490565b60405190815260200161029a565b6102dc6104f7366004612ba8565b61149a565b6104db61050a366004612b55565b60096020526000908152604090205481565b61057061052a36600461299c565b6003602052600090815260409020546001600160701b038116906001600160401b03600160701b8204811691600160b01b81049091169061ffff600160f01b9091041684565b604080516001600160701b039590951685526001600160401b039384166020860152919092169083015261ffff16606082015260800161029a565b6103d26105b9366004612b55565b6001600160a01b031660009081526004602052604090205460ff1690565b6104db6105e5366004612b55565b600a6020526000908152604090205481565b6104db610605366004612b55565b60086020526000908152604090205481565b6104db610625366004612b55565b6001600160a01b031660009081526008602052604090205490565b6102dc61064e366004612c05565b611560565b6103d2610661366004612b55565b60066020526000908152604090205460ff1681565b6104db610684366004612b55565b600b6020526000908152604090205481565b6102dc6106a4366004612b55565b611610565b6102dc6106b7366004612c98565b611765565b6103d26106ca366004612b55565b60046020526000908152604090205460ff1681565b6103d26106ed366004612cbc565b611810565b6001546001600160a01b03165b6040516001600160a01b03909116815260200161029a565b6102dc610725366004612cf8565b6119fa565b6102dc610738366004612ab3565b611ad9565b6102dc61074b366004612cf8565b611bdc565b60025461076590600160401b900461ffff1681565b60405161ffff909116815260200161029a565b6104db610786366004612b55565b60076020526000908152604090205481565b6000546001600160a01b03166106ff565b60606000806003816107bc600187612d31565b815260208082019290925260409081016000908120825160808101845290546001600160701b0381168252600160701b81046001600160401b0390811695830195909552600160b01b810490941692810192909252600160f01b90920461ffff1660608201529150600c90610832600187612d31565b815260200190815260200160002061084982611d8a565b81805480602002602001604051908101604052809291908181526020016000905b8282101561091c5760008481526020908190206040805160c0810182526006860290920180546001600160701b0316835260018101546001600160a01b0390811694840194909452600281015491830191909152600381015490921660608201526004808301546080830152600583015491929160a084019160ff909116908111156108f8576108f86129b5565b6004811115610909576109096129b5565b815250508152602001906001019061086a565b5050505091509250925050915091565b600154600160a01b900460ff161561097e5760405162461bcd60e51b815260206004820152601060248201526f14185d5cd8589b194e881c185d5cd95960821b60448201526064015b60405180910390fd5b60008061098c858585611dbb565b604080516001600160701b038084168252841660208201529294509092507f6c15ce44793c685a79cde26a0bd5419ef4f3a337991f156be7b365962001b4a791015b60405180910390a15050505050565b600c60205281600052604060002081815481106109f957600080fd5b60009182526020909120600690910201805460018201546002830154600384015460048501546005909501546001600160701b0390941696506001600160a01b039283169550909391169160ff1686565b33610a5d6000546001600160a01b031690565b6001600160a01b031614610a835760405162461bcd60e51b815260040161097590612d44565b6001600160a01b03166000908152600460205260409020805460ff19169055565b33610ab76000546001600160a01b031690565b6001600160a01b031614610add5760405162461bcd60e51b815260040161097590612d44565b6001805460ff60a01b19169055604051600081527f9422424b175dda897495a07b091ef74a3ef715cf6d866fc972954c1c7f459304906020015b60405180910390a1565b33610b346000546001600160a01b031690565b6001600160a01b031614610b5a5760405162461bcd60e51b815260040161097590612d44565b6001600160a01b03821660009081526004602052604090205460ff16610b925760405162461bcd60e51b815260040161097590612d87565b610b9b826123b7565b15610bf95760405162461bcd60e51b815260206004820152602860248201527f43616e6e6f7420696e697420666f72206d696e7461626c652f6275726e61626c6044820152676520746f6b656e7360c01b6064820152608401610975565b6001600160a01b03821660009081526006602052604090205460ff16610c315760405162461bcd60e51b815260040161097590612db2565b6001600160a01b03821660009081526009602052604081208054839290610c59908490612df3565b90915550829050610c756001600160a01b0382163330856123d5565b505050565b60408051608081018252600080825260208201819052918101829052606081018290529080600381610cad600187612d31565b81526020808201929092526040908101600020815160808101835290546001600160701b0381168252600160701b81046001600160401b0390811694830194909452600160b01b810490931691810191909152600160f01b90910461ffff166060820152905080610d1d81611d8a565b9250925050915091565b33610d3a6000546001600160a01b031690565b6001600160a01b031614610d605760405162461bcd60e51b815260040161097590612d44565b6001600160a01b038116610dc75760405162461bcd60e51b815260206004820152602860248201527f41646d696e526f6c653a206e65772061646d696e20697320746865207a65726f604482015267206164647265737360c01b6064820152608401610975565b600080546040516001600160a01b03808516939216917fe379ac64de02d8184ca1a871ac486cb8137de77e485ede140e97057b9c765ffd91a3600080546001600160a01b0319166001600160a01b0392909216919091179055565b33610e356000546001600160a01b031690565b6001600160a01b031614610e5b5760405162461bcd60e51b815260040161097590612d44565b6040516370a0823160e01b815230600482015281906000906001600160a01b038316906370a0823190602401602060405180830381865afa158015610ea4573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610ec89190612e06565b6001600160a01b0384166000908152600460205260408120549192509060ff1615610f17576001600160a01b038416600090815260096020526040902054610f109083612d31565b9050610f1a565b50805b610f2e6001600160a01b038416338361243c565b50505050565b33610f476000546001600160a01b031690565b6001600160a01b031614610f6d5760405162461bcd60e51b815260040161097590612d44565b6001600160a01b03909116600090815260086020526040902055565b7ff0c57e16840df040f15088dc2f81fe391c3923bec73e23a9662efc9c229c6a008054600160401b810460ff1615906001600160401b0316600081158015610fce5750825b90506000826001600160401b03166001148015610fea5750303b155b905081158015610ff8575080155b156110165760405163f92ee8a960e01b815260040160405180910390fd5b845467ffffffffffffffff19166001178555831561104057845460ff60401b1916600160401b1785555b61104861246d565b611050612487565b61105861249f565b831561109a57845460ff60401b19168555604051600181527fc7f505b2f371ae2175ee4913f4499e1f2633a7b5936321eed1cdaeb6115181d2906020016109ce565b5050505050565b600154600090600160a81b90046001600160401b031681036110c35750600090565b6001805460009160039183916110e891600160a81b90046001600160401b0316612e1f565b6001600160401b0390811682526020808301939093526040918201600020825160808101845290546001600160701b0381168252600160701b8104831694820194909452600160b01b840490911691810191909152600160f01b90910461ffff16606082015290506111586124cc565b61116457600191505090565b61116d81611d8a565b61117957600191505090565b600091505090565b336111946000546001600160a01b031690565b6001600160a01b0316146111ba5760405162461bcd60e51b815260040161097590612d44565b6001805460ff60a01b1916600160a01b1781556040519081527f9422424b175dda897495a07b091ef74a3ef715cf6d866fc972954c1c7f45930490602001610b17565b336112106000546001600160a01b031690565b6001600160a01b0316146112365760405162461bcd60e51b815260040161097590612d44565b600080546040516001600160a01b03909116907fe379ac64de02d8184ca1a871ac486cb8137de77e485ede140e97057b9c765ffd908390a3600080546001600160a01b0319169055565b336112936000546001600160a01b031690565b6001600160a01b0316146112b95760405162461bcd60e51b815260040161097590612d44565b6001600160a01b0381166113225760405162461bcd60e51b815260206004820152602a60248201527f427269646765526f6c653a206e65772062726964676520697320746865207a65604482015269726f206164647265737360b01b6064820152608401610975565b6001546001600160a01b03908116908216036113805760405162461bcd60e51b815260206004820152601860248201527f427269646765526f6c653a2073616d65206164647265737300000000000000006044820152606401610975565b6001600160a01b0381163b6113e95760405162461bcd60e51b815260206004820152602960248201527f427269646765526f6c653a206e657720627269646765206d75737420626520616044820152680818dbdb9d1c9858dd60ba1b6064820152608401610975565b6001546040516001600160a01b038084169216907fcca5fddab921a878ddbd4edb737a2cf3ac6df70864f108606647d1b37a5e07a090600090a3600180546001600160a01b0319166001600160a01b0392909216919091179055565b336114586000546001600160a01b031690565b6001600160a01b03161461147e5760405162461bcd60e51b815260040161097590612d44565b6001600160a01b03909116600090815260076020526040902055565b336114ad6000546001600160a01b031690565b6001600160a01b0316146114d35760405162461bcd60e51b815260040161097590612d44565b816114f557806114f55760405162461bcd60e51b815260040161097590612db2565b6001600160a01b039490941660009081526004602090815260408083208054600160ff19918216179091556005835281842080548216951515959095179094556006825280832080549094169615159690961790925560078252848120939093556008905291902055565b600154600160a01b900460ff16156115ad5760405162461bcd60e51b815260206004820152601060248201526f14185d5cd8589b194e881c185d5cd95960821b6044820152606401610975565b6000806115bb878787611dbb565b60405191935091506001600160701b038316907fce848da21487607afba5c5a500c2ad1002d9b8db97ca5512671309df071113b2906115ff90849088908890612e46565b60405180910390a250505050505050565b336116236000546001600160a01b031690565b6001600160a01b0316146116495760405162461bcd60e51b815260040161097590612d44565b6001600160a01b03811660009081526004602052604090205460ff166116815760405162461bcd60e51b815260040161097590612d87565b61168a816123b7565b156116d75760405162461bcd60e51b815260206004820152601a60248201527f546f6b656e206973206d696e7461626c652f6275726e61626c650000000000006044820152606401610975565b6040516370a0823160e01b815230600482015281906000906001600160a01b038316906370a0823190602401602060405180830381865afa158015611720573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906117449190612e06565b6001600160a01b039093166000908152600960205260409020929092555050565b336117786000546001600160a01b031690565b6001600160a01b03161461179e5760405162461bcd60e51b815260040161097590612d44565b606461ffff821611156117e95760405162461bcd60e51b8152602060048201526013602482015272084c2e8c6d040e6d2f4ca40e8dede40d0d2ced606b1b6044820152606401610975565b6002805461ffff909216600160401b0269ffff000000000000000019909216919091179055565b6000336118256001546001600160a01b031690565b6001600160a01b0316146118875760405162461bcd60e51b8152602060048201526024808201527f41636365737320436f6e74726f6c3a2073656e646572206973206e6f742042726044820152636964676560e01b6064820152608401610975565b611890846123b7565b6118f6578360006118ab6001600160a01b03831685876125ab565b9050806118bd576000925050506119f3565b6001600160a01b038616600090815260096020526040812080548792906118e5908490612d31565b90915550600193506119f392505050565b6001600160a01b03841660009081526006602052604090205460ff16156119a2576001600160a01b0384166000908152600a602052604090205461193b908490612df3565b6001600160a01b0385166000908152600b602052604090205410156119a25760405162461bcd60e51b815260206004820152601860248201527f4e6f7420656e6f756768206275726e656420746f6b656e7300000000000000006044820152606401610975565b60006119af858486612692565b9050806119c05760009150506119f3565b6001600160a01b0385166000908152600a6020526040812080548692906119e8908490612df3565b909155506001925050505b9392505050565b33611a0d6000546001600160a01b031690565b6001600160a01b031614611a335760405162461bcd60e51b815260040161097590612d44565b60025460ff600160581b90910481169082161115611ab95760405162461bcd60e51b815260206004820152603760248201527f43616e6e6f7420696e63726561736520626174636820626c6f636b206c696d6960448201527f74206f76657220736574746c656d656e74206c696d69740000000000000000006064820152608401610975565b6002805460ff909216600160501b0260ff60501b19909216919091179055565b33611aec6000546001600160a01b031690565b6001600160a01b031614611b125760405162461bcd60e51b815260040161097590612d44565b6001600160a01b03831660009081526004602052604090205460ff16611b4a5760405162461bcd60e51b815260040161097590612d87565b611b53836123b7565b611bb45760405162461bcd60e51b815260206004820152602c60248201527f43616e6e6f7420696e697420666f72206e6f6e206d696e7461626c652f62757260448201526b6e61626c6520746f6b656e7360a01b6064820152608401610975565b6001600160a01b039092166000908152600b6020908152604080832093909355600a90522055565b33611bef6000546001600160a01b031690565b6001600160a01b031614611c155760405162461bcd60e51b815260040161097590612d44565b600154600160a01b900460ff16611c655760405162461bcd60e51b815260206004820152601460248201527314185d5cd8589b194e881b9bdd081c185d5cd95960621b6044820152606401610975565b611c6d6110a1565b15611cd65760405162461bcd60e51b815260206004820152603360248201527f43616e6e6f74206368616e6765206261746368536574746c654c696d697420776044820152726974682070656e64696e67206261746368657360681b6064820152608401610975565b60025460ff600160501b90910481169082161015611d6a5760405162461bcd60e51b815260206004820152604560248201527f43616e6e6f74206465637265617365206261746368536574746c654c696d697460448201527f20756e646572207468652076616c7565206f6620626174636820626c6f636b206064820152641b1a5b5a5d60da1b608482015260a401610975565b6002805460ff909216600160581b0260ff60581b19909216919091179055565b60025460408201516000914391611dab91600160581b900460ff1690612e85565b6001600160401b03161092915050565b6001600160a01b038316600090815260046020526040812054819060ff16611df55760405162461bcd60e51b815260040161097590612d87565b6001600160a01b038516600090815260076020526040902054841015611e835760405162461bcd60e51b815260206004820152603c60248201527f547269656420746f206465706f73697420616e20616d6f756e742062656c6f7760448201527f20746865206d696e696d756d20737065636966696564206c696d6974000000006064820152608401610975565b6001600160a01b038516600090815260086020526040902054841115611f115760405162461bcd60e51b815260206004820152603c60248201527f547269656420746f206465706f73697420616e20616d6f756e742061626f766560448201527f20746865206d6178696d756d20737065636966696564206c696d6974000000006064820152608401610975565b436000611f1c6124cc565b15611fb9575060018054600160a81b90046001600160401b0316600081815260036020526040902091611f4f9190612e85565b81546001600160401b039182166001600160b01b031990911617600160701b8483160217825560018054600160a81b9004909116906015611f8f83612ea5565b91906101000a8154816001600160401b0302191690836001600160401b0316021790555050611ff7565b60018054600391600091611fdd9190600160a81b90046001600160401b0316612e1f565b6001600160401b0316815260200190815260200160002090505b600254600090612011906001600160401b03166001612e85565b6001600160401b03169050600c600060018060159054906101000a90046001600160401b03166120419190612e1f565b6001600160401b031681526020019081526020016000206040518060c00160405280836001600160701b031681526020018a6001600160a01b03168152602001898152602001336001600160a01b03168152602001888152602001600160048111156120af576120af6129b5565b90528154600181810184556000938452602093849020835160069093020180546001600160701b039093166dffffffffffffffffffffffffffff199093169290921782559282015181840180546001600160a01b039283166001600160a01b031991821617909155604084015160028401556060840151600384018054919093169116179055608082015160048083019190915560a0830151600583018054949593949193909260ff1990921691849081111561216e5761216e6129b5565b021790555050825467ffffffffffffffff60b01b1916600160b01b6001600160401b0386160217808455600160f01b900461ffff16905082601e6121b183612ecb565b825461ffff9182166101009390930a928302919092021990911617905550600280546001600160401b03169060006121e883612ea5565b91906101000a8154816001600160401b0302191690836001600160401b0316021790555050612216886123b7565b612264576001600160a01b03881660009081526009602052604081208054899290612242908490612df3565b9091555088905061225e6001600160a01b03821633308b6123d5565b506123a0565b6001600160a01b03881660009081526006602052604090205460ff1661230f576001600160a01b0388166000908152600b60205260409020546122a8908890612df3565b6001600160a01b0389166000908152600a6020526040902054101561230f5760405162461bcd60e51b815260206004820152601860248201527f4e6f7420656e6f756768206d696e74656420746f6b656e7300000000000000006044820152606401610975565b6001600160a01b0388166000908152600b602052604081208054899290612337908490612df3565b909155505060405163079cc67960e41b81523360048201526024810188905288906001600160a01b038216906379cc679090604401600060405180830381600087803b15801561238657600080fd5b505af115801561239a573d6000803e3d6000fd5b50505050505b90546001600160701b031697909650945050505050565b6001600160a01b031660009081526005602052604090205460ff1690565b6040516001600160a01b038481166024830152838116604483015260648201839052610f2e9186918216906323b872dd906084015b604051602081830303815290604052915060e01b6020820180516001600160e01b03838183161783525050505061270a565b6040516001600160a01b03838116602483015260448201839052610c7591859182169063a9059cbb9060640161240a565b61247561276d565b61247d6127b6565b6124856127c6565b565b61248f61276d565b6124976127b6565b6124856127ce565b6124a761276d565b600280546bffffffff000000000000000019166b2828000a0000000000000000179055565b600154600090600160a81b90046001600160401b031681036124ee5750600190565b60018054600091600391839161251391600160a81b90046001600160401b0316612e1f565b6001600160401b0390811682526020808301939093526040918201600020825160808101845290546001600160701b0381168252600160701b81048316948201859052600160b01b810490921692810192909252600160f01b900461ffff1660608201819052909250612585916127eb565b806125a55750600254606082015161ffff600160401b9092048216911610155b91505090565b604080516001600160a01b038481166024830152604480830185905283518084039091018152606490920183526020820180516001600160e01b031663a9059cbb60e01b179052915160009283928392918816916126099190612ee2565b6000604051808303816000865af19150503d8060008114612646576040519150601f19603f3d011682016040523d82523d6000602084013e61264b565b606091505b509150915081612660576000925050506119f3565b8051600003612674576001925050506119f3565b808060200190518101906126889190612f11565b9695505050505050565b6040516340c10f1960e01b81526001600160a01b0383811660048301526024820183905260009185918216906340c10f1990604401600060405180830381600087803b1580156126e157600080fd5b505af19250505080156126f2575060015b6127005760009150506119f3565b60019150506119f3565b600061271f6001600160a01b0384168361282d565b905080516000141580156127445750808060200190518101906127429190612f11565b155b15610c7557604051635274afe760e01b81526001600160a01b0384166004820152602401610975565b7ff0c57e16840df040f15088dc2f81fe391c3923bec73e23a9662efc9c229c6a0054600160401b900460ff1661248557604051631afcd79f60e31b815260040160405180910390fd5b6127be61276d565b61248561283b565b61248561276d565b6127d661276d565b6001805460ff60a01b1916600160a01b179055565b60008261ffff1660000361280157506000612827565b600254439061281a90600160501b900460ff1684612e85565b6001600160401b03161090505b92915050565b60606119f383836000612886565b61284361276d565b600080546001600160a01b031916339081178255604051909182917fe379ac64de02d8184ca1a871ac486cb8137de77e485ede140e97057b9c765ffd908290a350565b6060814710156128ab5760405163cd78605960e01b8152306004820152602401610975565b600080856001600160a01b031684866040516128c79190612ee2565b60006040518083038185875af1925050503d8060008114612904576040519150601f19603f3d011682016040523d82523d6000602084013e612909565b606091505b50915091506126888683836060826129295761292482612970565b6119f3565b815115801561294057506001600160a01b0384163b155b1561296957604051639996b31560e01b81526001600160a01b0385166004820152602401610975565b50806119f3565b8051156129805780518082602001fd5b604051630a12f52160e11b815260040160405180910390fd5b50565b6000602082840312156129ae57600080fd5b5035919050565b634e487b7160e01b600052602160045260246000fd5b600581106129e957634e487b7160e01b600052602160045260246000fd5b9052565b6040808252835182820181905260009190606090818501906020808901865b83811015612a7957815180516001600160701b03168652838101516001600160a01b039081168588015288820151898801528782015116878701526080808201519087015260a09081015190612a64818801836129cb565b505060c0949094019390820190600101612a0c565b5050829550612a8b8188018915159052565b50505050509392505050565b80356001600160a01b0381168114612aae57600080fd5b919050565b600080600060608486031215612ac857600080fd5b612ad184612a97565b95602085013595506040909401359392505050565b60008060408385031215612af957600080fd5b50508035926020909101359150565b6001600160701b03871681526001600160a01b03868116602083015260408201869052841660608201526080810183905260c08101612b4a60a08301846129cb565b979650505050505050565b600060208284031215612b6757600080fd5b6119f382612a97565b60008060408385031215612b8357600080fd5b612b8c83612a97565b946020939093013593505050565b801515811461299957600080fd5b600080600080600060a08688031215612bc057600080fd5b612bc986612a97565b945060208601359350604086013592506060860135612be781612b9a565b91506080860135612bf781612b9a565b809150509295509295909350565b600080600080600060808688031215612c1d57600080fd5b612c2686612a97565b9450602086013593506040860135925060608601356001600160401b0380821115612c5057600080fd5b818801915088601f830112612c6457600080fd5b813581811115612c7357600080fd5b896020828501011115612c8557600080fd5b9699959850939650602001949392505050565b600060208284031215612caa57600080fd5b813561ffff811681146119f357600080fd5b600080600060608486031215612cd157600080fd5b612cda84612a97565b925060208401359150612cef60408501612a97565b90509250925092565b600060208284031215612d0a57600080fd5b813560ff811681146119f357600080fd5b634e487b7160e01b600052601160045260246000fd5b8181038181111561282757612827612d1b565b60208082526023908201527f41636365737320436f6e74726f6c3a2073656e646572206973206e6f7420416460408201526236b4b760e91b606082015260800190565b6020808252601190820152702ab739bab83837b93a32b2103a37b5b2b760791b604082015260600190565b60208082526021908201527f4f6e6c79206e617469766520746f6b656e732063616e2062652073746f7265646040820152602160f81b606082015260800190565b8082018082111561282757612827612d1b565b600060208284031215612e1857600080fd5b5051919050565b6001600160401b03828116828216039080821115612e3f57612e3f612d1b565b5092915050565b6001600160701b038416815260406020820152816040820152818360608301376000818301606090810191909152601f909201601f1916010192915050565b6001600160401b03818116838216019080821115612e3f57612e3f612d1b565b60006001600160401b03808316818103612ec157612ec1612d1b565b6001019392505050565b600061ffff808316818103612ec157612ec1612d1b565b6000825160005b81811015612f035760208186018101518583015201612ee9565b506000920191825250919050565b600060208284031215612f2357600080fd5b81516119f381612b9a56fea164736f6c6343000814000a +0x608060405234801561001057600080fd5b50613099806100206000396000f3fe608060405234801561001057600080fd5b50600436106102745760003560e01c80639ab7cfaa11610151578063d2763186116100c3578063e8a70ee211610087578063e8a70ee214610717578063e9935b4a1461072a578063f2e0ec481461073d578063f4daaba114610750578063f6246ea114610778578063f851a4401461079857600080fd5b8063d276318614610696578063d4673de9146106a9578063daf9c210146106bc578063dbba0f01146106df578063e78cea92146106f257600080fd5b8063bc56602f11610115578063bc56602f146105d7578063c639651d146105f7578063c652a0b514610617578063c859b3fe14610640578063c86726f614610653578063cf6682a21461067657600080fd5b80639ab7cfaa146104b15780639f0ebb93146104c5578063aee9c872146104fc578063b32c4d8d1461051c578063b5af090f146105ab57600080fd5b806375829def116101ea5780638456cb59116101ae5780638456cb591461043e57806387ea0961146104465780638bad0c0a146104605780638dd148021461046857806390e0cfcb1461047b578063920b03081461049e57600080fd5b806375829def146103f5578063770be784146104085780637d7763ce1461041b5780638129fc1c1461042e578063821461381461043657600080fd5b80633f4ba83a1161023c5780633f4ba83a146103165780634013c89c1461031e57806341220439146103315780634506e935146103445780635ac442821461036f5780635c975abb146103d757600080fd5b8063085c967f146102795780632325b5f7146102a357806326b3293f146102c9578063284c0c44146102de578063306275be14610303575b600080fd5b61028c610287366004612ae1565b6107a9565b60405161029a929190612b32565b60405180910390f35b6002546102b790600160581b900460ff1681565b60405160ff909116815260200161029a565b6102dc6102d7366004612bf8565b61092c565b005b6102f16102ec366004612c2b565b6109dd565b60405161029a96959493929190612c4d565b6102dc610311366004612c9a565b610a4a565b6102dc610aa4565b6102dc61032c366004612cb5565b610b21565b6102dc61033f366004612ced565b610c7a565b600254610357906001600160401b031681565b6040516001600160401b03909116815260200161029a565b61038261037d366004612ae1565b610e82565b6040805183516001600160701b031681526020808501516001600160401b039081169183019190915284830151169181019190915260609283015161ffff16928101929092521515608082015260a00161029a565b600154600160a01b900460ff165b604051901515815260200161029a565b6102dc610403366004612c9a565b610f2f565b6102dc610416366004612c9a565b61102a565b6102dc610429366004612cb5565b61113c565b6102dc611191565b6103e56112a9565b6102dc611389565b60015461035790600160a81b90046001600160401b031681565b6102dc611405565b6102dc610476366004612c9a565b611488565b6103e5610489366004612c9a565b60056020526000908152604090205460ff1681565b6102dc6104ac366004612cb5565b61164d565b6002546102b790600160501b900460ff1681565b6104ee6104d3366004612c9a565b6001600160a01b031660009081526007602052604090205490565b60405190815260200161029a565b6104ee61050a366004612c9a565b60096020526000908152604090205481565b61057061052a366004612ae1565b6003602052600090815260409020546001600160701b038116906001600160401b03600160701b8204811691600160b01b81049091169061ffff600160f01b9091041684565b604080516001600160701b039590951685526001600160401b039384166020860152919092169083015261ffff16606082015260800161029a565b6103e56105b9366004612c9a565b6001600160a01b031660009081526004602052604090205460ff1690565b6104ee6105e5366004612c9a565b600a6020526000908152604090205481565b6104ee610605366004612c9a565b60086020526000908152604090205481565b6104ee610625366004612c9a565b6001600160a01b031660009081526008602052604090205490565b6102dc61064e366004612d63565b6116a2565b6103e5610661366004612c9a565b60066020526000908152604090205460ff1681565b6104ee610684366004612c9a565b600b6020526000908152604090205481565b6102dc6106a4366004612c9a565b611752565b6102dc6106b7366004612df6565b6118a7565b6103e56106ca366004612c9a565b60046020526000908152604090205460ff1681565b6103e56106ed366004612e1a565b611952565b6001546001600160a01b03165b6040516001600160a01b03909116815260200161029a565b6102dc610725366004612e56565b611b3c565b6102dc610738366004612bf8565b611c1b565b6102dc61074b366004612e56565b611d21565b60025461076590600160401b900461ffff1681565b60405161ffff909116815260200161029a565b6104ee610786366004612c9a565b60076020526000908152604090205481565b6000546001600160a01b03166106ff565b60606000806003816107bc600187612e8f565b815260208082019290925260409081016000908120825160808101845290546001600160701b0381168252600160701b81046001600160401b0390811695830195909552600160b01b810490941692810192909252600160f01b90920461ffff1660608201529150600c90610832600187612e8f565b815260200190815260200160002061084982611ecf565b81805480602002602001604051908101604052809291908181526020016000905b8282101561091c5760008481526020908190206040805160c0810182526006860290920180546001600160701b0316835260018101546001600160a01b0390811694840194909452600281015491830191909152600381015490921660608201526004808301546080830152600583015491929160a084019160ff909116908111156108f8576108f8612afa565b600481111561090957610909612afa565b815250508152602001906001019061086a565b5050505091509250925050915091565b600154600160a01b900460ff161561097e5760405162461bcd60e51b815260206004820152601060248201526f14185d5cd8589b194e881c185d5cd95960821b60448201526064015b60405180910390fd5b60008061098c858585611f00565b604080516001600160701b038084168252841660208201529294509092507f6c15ce44793c685a79cde26a0bd5419ef4f3a337991f156be7b365962001b4a791015b60405180910390a15050505050565b600c60205281600052604060002081815481106109f957600080fd5b60009182526020909120600690910201805460018201546002830154600384015460048501546005909501546001600160701b0390941696506001600160a01b039283169550909391169160ff1686565b33610a5d6000546001600160a01b031690565b6001600160a01b031614610a835760405162461bcd60e51b815260040161097590612ea2565b6001600160a01b03166000908152600460205260409020805460ff19169055565b33610ab76000546001600160a01b031690565b6001600160a01b031614610add5760405162461bcd60e51b815260040161097590612ea2565b6001805460ff60a01b19169055604051600081527f9422424b175dda897495a07b091ef74a3ef715cf6d866fc972954c1c7f459304906020015b60405180910390a1565b33610b346000546001600160a01b031690565b6001600160a01b031614610b5a5760405162461bcd60e51b815260040161097590612ea2565b6001600160a01b03821660009081526004602052604090205460ff16610b925760405162461bcd60e51b815260040161097590612ee5565b610b9b826124fc565b15610bf95760405162461bcd60e51b815260206004820152602860248201527f43616e6e6f7420696e697420666f72206d696e7461626c652f6275726e61626c6044820152676520746f6b656e7360c01b6064820152608401610975565b6001600160a01b03821660009081526006602052604090205460ff16610c315760405162461bcd60e51b815260040161097590612f10565b6001600160a01b03821660009081526009602052604081208054839290610c59908490612f51565b90915550829050610c756001600160a01b03821633308561251a565b505050565b33610c8d6000546001600160a01b031690565b6001600160a01b031614610cb35760405162461bcd60e51b815260040161097590612ea2565b84610cd55783610cd55760405162461bcd60e51b815260040161097590612f10565b6001600160a01b03881660009081526004602090815260408083208054600160ff199182161790915560058352818420805482168a1580159190911790915560068452828520805490921689151517909155600783528184208b90556008909252909120879055610db2578215610da25760405162461bcd60e51b815260206004820152602b60248201527f4d696e742d6275726e20746f6b656e73206d7573742068617665203020746f7460448201526a616c2062616c616e63652160a81b6064820152608401610975565b610dad888383611c1b565b610e78565b8115610e105760405162461bcd60e51b815260206004820152602760248201527f53746f72656420746f6b656e73206d75737420686176652030206d696e742062604482015266616c616e63652160c81b6064820152608401610975565b8015610e6e5760405162461bcd60e51b815260206004820152602760248201527f53746f72656420746f6b656e73206d75737420686176652030206275726e2062604482015266616c616e63652160c81b6064820152608401610975565b610e788884610b21565b5050505050505050565b60408051608081018252600080825260208201819052918101829052606081018290529080600381610eb5600187612e8f565b81526020808201929092526040908101600020815160808101835290546001600160701b0381168252600160701b81046001600160401b0390811694830194909452600160b01b810490931691810191909152600160f01b90910461ffff166060820152905080610f2581611ecf565b9250925050915091565b33610f426000546001600160a01b031690565b6001600160a01b031614610f685760405162461bcd60e51b815260040161097590612ea2565b6001600160a01b038116610fcf5760405162461bcd60e51b815260206004820152602860248201527f41646d696e526f6c653a206e65772061646d696e20697320746865207a65726f604482015267206164647265737360c01b6064820152608401610975565b600080546040516001600160a01b03808516939216917fe379ac64de02d8184ca1a871ac486cb8137de77e485ede140e97057b9c765ffd91a3600080546001600160a01b0319166001600160a01b0392909216919091179055565b3361103d6000546001600160a01b031690565b6001600160a01b0316146110635760405162461bcd60e51b815260040161097590612ea2565b6040516370a0823160e01b815230600482015281906000906001600160a01b038316906370a0823190602401602060405180830381865afa1580156110ac573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906110d09190612f64565b6001600160a01b0384166000908152600460205260408120549192509060ff161561111f576001600160a01b0384166000908152600960205260409020546111189083612e8f565b9050611122565b50805b6111366001600160a01b0384163383612581565b50505050565b3361114f6000546001600160a01b031690565b6001600160a01b0316146111755760405162461bcd60e51b815260040161097590612ea2565b6001600160a01b03909116600090815260086020526040902055565b7ff0c57e16840df040f15088dc2f81fe391c3923bec73e23a9662efc9c229c6a008054600160401b810460ff1615906001600160401b03166000811580156111d65750825b90506000826001600160401b031660011480156111f25750303b155b905081158015611200575080155b1561121e5760405163f92ee8a960e01b815260040160405180910390fd5b845467ffffffffffffffff19166001178555831561124857845460ff60401b1916600160401b1785555b6112506125b2565b6112586125cc565b6112606125e4565b83156112a257845460ff60401b19168555604051600181527fc7f505b2f371ae2175ee4913f4499e1f2633a7b5936321eed1cdaeb6115181d2906020016109ce565b5050505050565b600154600090600160a81b90046001600160401b031681036112cb5750600090565b6001805460009160039183916112f091600160a81b90046001600160401b0316612f7d565b6001600160401b0390811682526020808301939093526040918201600020825160808101845290546001600160701b0381168252600160701b8104831694820194909452600160b01b840490911691810191909152600160f01b90910461ffff1660608201529050611360612611565b61136c57600191505090565b61137581611ecf565b61138157600191505090565b600091505090565b3361139c6000546001600160a01b031690565b6001600160a01b0316146113c25760405162461bcd60e51b815260040161097590612ea2565b6001805460ff60a01b1916600160a01b1781556040519081527f9422424b175dda897495a07b091ef74a3ef715cf6d866fc972954c1c7f45930490602001610b17565b336114186000546001600160a01b031690565b6001600160a01b03161461143e5760405162461bcd60e51b815260040161097590612ea2565b600080546040516001600160a01b03909116907fe379ac64de02d8184ca1a871ac486cb8137de77e485ede140e97057b9c765ffd908390a3600080546001600160a01b0319169055565b3361149b6000546001600160a01b031690565b6001600160a01b0316146114c15760405162461bcd60e51b815260040161097590612ea2565b6001600160a01b03811661152a5760405162461bcd60e51b815260206004820152602a60248201527f427269646765526f6c653a206e65772062726964676520697320746865207a65604482015269726f206164647265737360b01b6064820152608401610975565b6001546001600160a01b03908116908216036115885760405162461bcd60e51b815260206004820152601860248201527f427269646765526f6c653a2073616d65206164647265737300000000000000006044820152606401610975565b6001600160a01b0381163b6115f15760405162461bcd60e51b815260206004820152602960248201527f427269646765526f6c653a206e657720627269646765206d75737420626520616044820152680818dbdb9d1c9858dd60ba1b6064820152608401610975565b6001546040516001600160a01b038084169216907fcca5fddab921a878ddbd4edb737a2cf3ac6df70864f108606647d1b37a5e07a090600090a3600180546001600160a01b0319166001600160a01b0392909216919091179055565b336116606000546001600160a01b031690565b6001600160a01b0316146116865760405162461bcd60e51b815260040161097590612ea2565b6001600160a01b03909116600090815260076020526040902055565b600154600160a01b900460ff16156116ef5760405162461bcd60e51b815260206004820152601060248201526f14185d5cd8589b194e881c185d5cd95960821b6044820152606401610975565b6000806116fd878787611f00565b60405191935091506001600160701b038316907fce848da21487607afba5c5a500c2ad1002d9b8db97ca5512671309df071113b29061174190849088908890612fa4565b60405180910390a250505050505050565b336117656000546001600160a01b031690565b6001600160a01b03161461178b5760405162461bcd60e51b815260040161097590612ea2565b6001600160a01b03811660009081526004602052604090205460ff166117c35760405162461bcd60e51b815260040161097590612ee5565b6117cc816124fc565b156118195760405162461bcd60e51b815260206004820152601a60248201527f546f6b656e206973206d696e7461626c652f6275726e61626c650000000000006044820152606401610975565b6040516370a0823160e01b815230600482015281906000906001600160a01b038316906370a0823190602401602060405180830381865afa158015611862573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906118869190612f64565b6001600160a01b039093166000908152600960205260409020929092555050565b336118ba6000546001600160a01b031690565b6001600160a01b0316146118e05760405162461bcd60e51b815260040161097590612ea2565b606461ffff8216111561192b5760405162461bcd60e51b8152602060048201526013602482015272084c2e8c6d040e6d2f4ca40e8dede40d0d2ced606b1b6044820152606401610975565b6002805461ffff909216600160401b0269ffff000000000000000019909216919091179055565b6000336119676001546001600160a01b031690565b6001600160a01b0316146119c95760405162461bcd60e51b8152602060048201526024808201527f41636365737320436f6e74726f6c3a2073656e646572206973206e6f742042726044820152636964676560e01b6064820152608401610975565b6119d2846124fc565b611a38578360006119ed6001600160a01b03831685876126f0565b9050806119ff57600092505050611b35565b6001600160a01b03861660009081526009602052604081208054879290611a27908490612e8f565b9091555060019350611b3592505050565b6001600160a01b03841660009081526006602052604090205460ff1615611ae4576001600160a01b0384166000908152600a6020526040902054611a7d908490612f51565b6001600160a01b0385166000908152600b60205260409020541015611ae45760405162461bcd60e51b815260206004820152601860248201527f4e6f7420656e6f756768206275726e656420746f6b656e7300000000000000006044820152606401610975565b6000611af18584866127d7565b905080611b02576000915050611b35565b6001600160a01b0385166000908152600a602052604081208054869290611b2a908490612f51565b909155506001925050505b9392505050565b33611b4f6000546001600160a01b031690565b6001600160a01b031614611b755760405162461bcd60e51b815260040161097590612ea2565b60025460ff600160581b90910481169082161115611bfb5760405162461bcd60e51b815260206004820152603760248201527f43616e6e6f7420696e63726561736520626174636820626c6f636b206c696d6960448201527f74206f76657220736574746c656d656e74206c696d69740000000000000000006064820152608401610975565b6002805460ff909216600160501b0260ff60501b19909216919091179055565b33611c2e6000546001600160a01b031690565b6001600160a01b031614611c545760405162461bcd60e51b815260040161097590612ea2565b6001600160a01b03831660009081526004602052604090205460ff16611c8c5760405162461bcd60e51b815260040161097590612ee5565b611c95836124fc565b611cf65760405162461bcd60e51b815260206004820152602c60248201527f43616e6e6f7420696e697420666f72206e6f6e206d696e7461626c652f62757260448201526b6e61626c6520746f6b656e7360a01b6064820152608401610975565b6001600160a01b039092166000908152600b6020908152604080832094909455600a90529190912055565b33611d346000546001600160a01b031690565b6001600160a01b031614611d5a5760405162461bcd60e51b815260040161097590612ea2565b600154600160a01b900460ff16611daa5760405162461bcd60e51b815260206004820152601460248201527314185d5cd8589b194e881b9bdd081c185d5cd95960621b6044820152606401610975565b611db26112a9565b15611e1b5760405162461bcd60e51b815260206004820152603360248201527f43616e6e6f74206368616e6765206261746368536574746c654c696d697420776044820152726974682070656e64696e67206261746368657360681b6064820152608401610975565b60025460ff600160501b90910481169082161015611eaf5760405162461bcd60e51b815260206004820152604560248201527f43616e6e6f74206465637265617365206261746368536574746c654c696d697460448201527f20756e646572207468652076616c7565206f6620626174636820626c6f636b206064820152641b1a5b5a5d60da1b608482015260a401610975565b6002805460ff909216600160581b0260ff60581b19909216919091179055565b60025460408201516000914391611ef091600160581b900460ff1690612fe3565b6001600160401b03161092915050565b6001600160a01b038316600090815260046020526040812054819060ff16611f3a5760405162461bcd60e51b815260040161097590612ee5565b6001600160a01b038516600090815260076020526040902054841015611fc85760405162461bcd60e51b815260206004820152603c60248201527f547269656420746f206465706f73697420616e20616d6f756e742062656c6f7760448201527f20746865206d696e696d756d20737065636966696564206c696d6974000000006064820152608401610975565b6001600160a01b0385166000908152600860205260409020548411156120565760405162461bcd60e51b815260206004820152603c60248201527f547269656420746f206465706f73697420616e20616d6f756e742061626f766560448201527f20746865206d6178696d756d20737065636966696564206c696d6974000000006064820152608401610975565b436000612061612611565b156120fe575060018054600160a81b90046001600160401b03166000818152600360205260409020916120949190612fe3565b81546001600160401b039182166001600160b01b031990911617600160701b8483160217825560018054600160a81b90049091169060156120d483613003565b91906101000a8154816001600160401b0302191690836001600160401b031602179055505061213c565b600180546003916000916121229190600160a81b90046001600160401b0316612f7d565b6001600160401b0316815260200190815260200160002090505b600254600090612156906001600160401b03166001612fe3565b6001600160401b03169050600c600060018060159054906101000a90046001600160401b03166121869190612f7d565b6001600160401b031681526020019081526020016000206040518060c00160405280836001600160701b031681526020018a6001600160a01b03168152602001898152602001336001600160a01b03168152602001888152602001600160048111156121f4576121f4612afa565b90528154600181810184556000938452602093849020835160069093020180546001600160701b039093166dffffffffffffffffffffffffffff199093169290921782559282015181840180546001600160a01b039283166001600160a01b031991821617909155604084015160028401556060840151600384018054919093169116179055608082015160048083019190915560a0830151600583018054949593949193909260ff199092169184908111156122b3576122b3612afa565b021790555050825467ffffffffffffffff60b01b1916600160b01b6001600160401b0386160217808455600160f01b900461ffff16905082601e6122f683613029565b825461ffff9182166101009390930a928302919092021990911617905550600280546001600160401b031690600061232d83613003565b91906101000a8154816001600160401b0302191690836001600160401b031602179055505061235b886124fc565b6123a9576001600160a01b03881660009081526009602052604081208054899290612387908490612f51565b909155508890506123a36001600160a01b03821633308b61251a565b506124e5565b6001600160a01b03881660009081526006602052604090205460ff16612454576001600160a01b0388166000908152600b60205260409020546123ed908890612f51565b6001600160a01b0389166000908152600a602052604090205410156124545760405162461bcd60e51b815260206004820152601860248201527f4e6f7420656e6f756768206d696e74656420746f6b656e7300000000000000006044820152606401610975565b6001600160a01b0388166000908152600b60205260408120805489929061247c908490612f51565b909155505060405163079cc67960e41b81523360048201526024810188905288906001600160a01b038216906379cc679090604401600060405180830381600087803b1580156124cb57600080fd5b505af11580156124df573d6000803e3d6000fd5b50505050505b90546001600160701b031697909650945050505050565b6001600160a01b031660009081526005602052604090205460ff1690565b6040516001600160a01b0384811660248301528381166044830152606482018390526111369186918216906323b872dd906084015b604051602081830303815290604052915060e01b6020820180516001600160e01b03838183161783525050505061284f565b6040516001600160a01b03838116602483015260448201839052610c7591859182169063a9059cbb9060640161254f565b6125ba6128b2565b6125c26128fb565b6125ca61290b565b565b6125d46128b2565b6125dc6128fb565b6125ca612913565b6125ec6128b2565b600280546bffffffff000000000000000019166b2828000a0000000000000000179055565b600154600090600160a81b90046001600160401b031681036126335750600190565b60018054600091600391839161265891600160a81b90046001600160401b0316612f7d565b6001600160401b0390811682526020808301939093526040918201600020825160808101845290546001600160701b0381168252600160701b81048316948201859052600160b01b810490921692810192909252600160f01b900461ffff16606082018190529092506126ca91612930565b806126ea5750600254606082015161ffff600160401b9092048216911610155b91505090565b604080516001600160a01b038481166024830152604480830185905283518084039091018152606490920183526020820180516001600160e01b031663a9059cbb60e01b1790529151600092839283929188169161274e9190613040565b6000604051808303816000865af19150503d806000811461278b576040519150601f19603f3d011682016040523d82523d6000602084013e612790565b606091505b5091509150816127a557600092505050611b35565b80516000036127b957600192505050611b35565b808060200190518101906127cd919061306f565b9695505050505050565b6040516340c10f1960e01b81526001600160a01b0383811660048301526024820183905260009185918216906340c10f1990604401600060405180830381600087803b15801561282657600080fd5b505af1925050508015612837575060015b612845576000915050611b35565b6001915050611b35565b60006128646001600160a01b03841683612972565b90508051600014158015612889575080806020019051810190612887919061306f565b155b15610c7557604051635274afe760e01b81526001600160a01b0384166004820152602401610975565b7ff0c57e16840df040f15088dc2f81fe391c3923bec73e23a9662efc9c229c6a0054600160401b900460ff166125ca57604051631afcd79f60e31b815260040160405180910390fd5b6129036128b2565b6125ca612980565b6125ca6128b2565b61291b6128b2565b6001805460ff60a01b1916600160a01b179055565b60008261ffff166000036129465750600061296c565b600254439061295f90600160501b900460ff1684612fe3565b6001600160401b03161090505b92915050565b6060611b35838360006129cb565b6129886128b2565b600080546001600160a01b031916339081178255604051909182917fe379ac64de02d8184ca1a871ac486cb8137de77e485ede140e97057b9c765ffd908290a350565b6060814710156129f05760405163cd78605960e01b8152306004820152602401610975565b600080856001600160a01b03168486604051612a0c9190613040565b60006040518083038185875af1925050503d8060008114612a49576040519150601f19603f3d011682016040523d82523d6000602084013e612a4e565b606091505b50915091506127cd868383606082612a6e57612a6982612ab5565b611b35565b8151158015612a8557506001600160a01b0384163b155b15612aae57604051639996b31560e01b81526001600160a01b0385166004820152602401610975565b5080611b35565b805115612ac55780518082602001fd5b604051630a12f52160e11b815260040160405180910390fd5b50565b600060208284031215612af357600080fd5b5035919050565b634e487b7160e01b600052602160045260246000fd5b60058110612b2e57634e487b7160e01b600052602160045260246000fd5b9052565b6040808252835182820181905260009190606090818501906020808901865b83811015612bbe57815180516001600160701b03168652838101516001600160a01b039081168588015288820151898801528782015116878701526080808201519087015260a09081015190612ba981880183612b10565b505060c0949094019390820190600101612b51565b5050829550612bd08188018915159052565b50505050509392505050565b80356001600160a01b0381168114612bf357600080fd5b919050565b600080600060608486031215612c0d57600080fd5b612c1684612bdc565b95602085013595506040909401359392505050565b60008060408385031215612c3e57600080fd5b50508035926020909101359150565b6001600160701b03871681526001600160a01b03868116602083015260408201869052841660608201526080810183905260c08101612c8f60a0830184612b10565b979650505050505050565b600060208284031215612cac57600080fd5b611b3582612bdc565b60008060408385031215612cc857600080fd5b612cd183612bdc565b946020939093013593505050565b8015158114612ade57600080fd5b600080600080600080600080610100898b031215612d0a57600080fd5b612d1389612bdc565b975060208901359650604089013595506060890135612d3181612cdf565b94506080890135612d4181612cdf565b979a969950949793969560a0850135955060c08501359460e001359350915050565b600080600080600060808688031215612d7b57600080fd5b612d8486612bdc565b9450602086013593506040860135925060608601356001600160401b0380821115612dae57600080fd5b818801915088601f830112612dc257600080fd5b813581811115612dd157600080fd5b896020828501011115612de357600080fd5b9699959850939650602001949392505050565b600060208284031215612e0857600080fd5b813561ffff81168114611b3557600080fd5b600080600060608486031215612e2f57600080fd5b612e3884612bdc565b925060208401359150612e4d60408501612bdc565b90509250925092565b600060208284031215612e6857600080fd5b813560ff81168114611b3557600080fd5b634e487b7160e01b600052601160045260246000fd5b8181038181111561296c5761296c612e79565b60208082526023908201527f41636365737320436f6e74726f6c3a2073656e646572206973206e6f7420416460408201526236b4b760e91b606082015260800190565b6020808252601190820152702ab739bab83837b93a32b2103a37b5b2b760791b604082015260600190565b60208082526021908201527f4f6e6c79206e617469766520746f6b656e732063616e2062652073746f7265646040820152602160f81b606082015260800190565b8082018082111561296c5761296c612e79565b600060208284031215612f7657600080fd5b5051919050565b6001600160401b03828116828216039080821115612f9d57612f9d612e79565b5092915050565b6001600160701b038416815260406020820152816040820152818360608301376000818301606090810191909152601f909201601f1916010192915050565b6001600160401b03818116838216019080821115612f9d57612f9d612e79565b60006001600160401b0380831681810361301f5761301f612e79565b6001019392505050565b600061ffff80831681810361301f5761301f612e79565b6000825160005b818110156130615760208186018101518583015201613047565b506000920191825250919050565b60006020828403121561308157600080fd5b8151611b3581612cdf56fea164736f6c6343000814000a diff --git a/integrationTests/relayers/slowTests/testdata/contracts/eth/GenericERC20.abi.json b/integrationTests/relayers/slowTests/testdata/contracts/eth/GenericERC20.abi.json old mode 100644 new mode 100755 diff --git a/integrationTests/relayers/slowTests/testdata/contracts/eth/GenericERC20.hex b/integrationTests/relayers/slowTests/testdata/contracts/eth/GenericERC20.hex old mode 100644 new mode 100755 diff --git a/integrationTests/relayers/slowTests/testdata/contracts/eth/MintBurnERC20.abi.json b/integrationTests/relayers/slowTests/testdata/contracts/eth/MintBurnERC20.abi.json old mode 100644 new mode 100755 diff --git a/integrationTests/relayers/slowTests/testdata/contracts/eth/MintBurnERC20.hex b/integrationTests/relayers/slowTests/testdata/contracts/eth/MintBurnERC20.hex old mode 100644 new mode 100755 diff --git a/integrationTests/relayers/slowTests/testdata/contracts/eth/Proxy.abi.json b/integrationTests/relayers/slowTests/testdata/contracts/eth/Proxy.abi.json old mode 100644 new mode 100755 diff --git a/integrationTests/relayers/slowTests/testdata/contracts/eth/Proxy.hex b/integrationTests/relayers/slowTests/testdata/contracts/eth/Proxy.hex old mode 100644 new mode 100755 diff --git a/integrationTests/relayers/slowTests/testdata/contracts/mvx/esdt-safe.abi.json b/integrationTests/relayers/slowTests/testdata/contracts/mvx/esdt-safe.abi.json index a00345ca..703eae8a 100644 --- a/integrationTests/relayers/slowTests/testdata/contracts/mvx/esdt-safe.abi.json +++ b/integrationTests/relayers/slowTests/testdata/contracts/mvx/esdt-safe.abi.json @@ -146,55 +146,16 @@ } ] }, - { - "name": "initSupply", - "onlyOwner": true, - "mutability": "mutable", - "payableInTokens": [ - "*" - ], - "inputs": [ - { - "name": "token_id", - "type": "TokenIdentifier" - }, - { - "name": "amount", - "type": "BigUint" - } - ], - "outputs": [] - }, - { - "name": "initSupplyMintBurn", - "onlyOwner": true, - "mutability": "mutable", - "inputs": [ - { - "name": "token_id", - "type": "TokenIdentifier" - }, - { - "name": "mint_amount", - "type": "BigUint" - }, - { - "name": "burn_amount", - "type": "BigUint" - } - ], - "outputs": [] - }, { "name": "computeTotalAmmountsFromIndex", "mutability": "readonly", "inputs": [ { - "name": "startIndex", + "name": "start_index", "type": "u64" }, { - "name": "endIndex", + "name": "end_index", "type": "u64" } ], @@ -372,6 +333,9 @@ "name": "addTokenToWhitelist", "onlyOwner": true, "mutability": "mutable", + "payableInTokens": [ + "*" + ], "inputs": [ { "name": "token_id", @@ -389,6 +353,18 @@ "name": "native_token", "type": "bool" }, + { + "name": "total_balance", + "type": "BigUint" + }, + { + "name": "mint_balance", + "type": "BigUint" + }, + { + "name": "burn_balance", + "type": "BigUint" + }, { "name": "opt_default_price_per_gas_unit", "type": "optional", @@ -429,20 +405,26 @@ ] }, { - "name": "setMultiTransferContractAddress", + "name": "initSupply", "onlyOwner": true, "mutability": "mutable", + "payableInTokens": [ + "*" + ], "inputs": [ { - "name": "opt_new_address", - "type": "optional
", - "multi_arg": true + "name": "token_id", + "type": "TokenIdentifier" + }, + { + "name": "amount", + "type": "BigUint" } ], "outputs": [] }, { - "name": "setTotalBalances", + "name": "initSupplyMintBurn", "onlyOwner": true, "mutability": "mutable", "inputs": [ @@ -451,8 +433,25 @@ "type": "TokenIdentifier" }, { - "name": "value", + "name": "mint_amount", "type": "BigUint" + }, + { + "name": "burn_amount", + "type": "BigUint" + } + ], + "outputs": [] + }, + { + "name": "setMultiTransferContractAddress", + "onlyOwner": true, + "mutability": "mutable", + "inputs": [ + { + "name": "opt_new_address", + "type": "optional
", + "multi_arg": true } ], "outputs": [] diff --git a/integrationTests/relayers/slowTests/testdata/contracts/mvx/esdt-safe.wasm b/integrationTests/relayers/slowTests/testdata/contracts/mvx/esdt-safe.wasm index 88d1e9c499e9f2a195e123be82db736ad9ae6c30..2cd1fb13c8096102260b6b5b5f7e721a1ed0dd22 100755 GIT binary patch delta 12875 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 ff}1|?xk(5|FZ=OoJ^1{_jLj>Hs9`}hABI6Ztw delta 12354 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 MUBQrdBz_?J|6W@6MgRZ+ diff --git a/integrationTests/relayers/slowTests/testdata/contracts/mvx/multisig.abi.json b/integrationTests/relayers/slowTests/testdata/contracts/mvx/multisig.abi.json index 8eec5f32..877d03e7 100644 --- a/integrationTests/relayers/slowTests/testdata/contracts/mvx/multisig.abi.json +++ b/integrationTests/relayers/slowTests/testdata/contracts/mvx/multisig.abi.json @@ -508,6 +508,18 @@ "name": "is_native_token", "type": "bool" }, + { + "name": "total_balance", + "type": "BigUint" + }, + { + "name": "mint_balance", + "type": "BigUint" + }, + { + "name": "burn_balance", + "type": "BigUint" + }, { "name": "opt_default_price_per_gas_unit", "type": "optional", diff --git a/integrationTests/relayers/slowTests/testdata/contracts/mvx/multisig.wasm b/integrationTests/relayers/slowTests/testdata/contracts/mvx/multisig.wasm index b6559e489084312faf0ba8f8e8449135a2694102..6bce4c465cbc2b51e1b13516d78fbb8a7e91b962 100755 GIT binary patch delta 7982 zcmaJ`3tUvy)<1g>Fbo5-McyKw8Bj+A1Vr$G%0aR4k)@QGrj9TQh=2@~m zVWw%NrKXi=_OSGpl|3}O_!03}avS`|D?t%3oI=dJ4hxBIm!51OPiR*Yoou__gZT%dhtf8{D zM!TN}c`IktXb(WL)zQ3xcXF4P7uCA!%g1`=%<$A}8+lm0XHM-+o@>20dyornwcA?} zxMC9zFRO6Z%<^2*SXiXJwP1<8T+}y3^+aNwP zm2HP1p*q_EQ$xE?c${}u>Xp{c_SBSCmd!>xcJi(sQvsvATybhAR#Y~4sw=$>+Af~x z^)!ratZt|*t#{XWXL{<#)%f*z0*-}tV^6}_&=kv4JOQ$8F(DHw=X(AU<(-p*5e zvSGC?85Y_y*tZA4)mtC&y=bex=fv!W*wHIJxSOR+yo(W6pdVt3wcZ}QHP(065 z*4W@FFK(zPomWz>9fa@0lGr~W+@2Kol04F98M>n0Y2zJKyZ~DvgvnmB3lK6I~^4(i0xpy#R#v`xmW=SkyDU$Q>2r<2J0eUVXNAwiCjy>I$EdMah(wB zU{ja1ahFjP*QSY6?W3dbv9Q(cpT=Ee>;d>BVRP~^;@UgY(ciYn`517~Hy>eh%sVhP9IJ;wbI0C-{Y;Zej<~Ob+UX=ZF?se7XM2(LZ@9ksVCe zTs+9Z=|^)|@KhXxie*shm})LTA}tA`AI%Yr_Tqq+9CK`Ax50d89=jc$at^iME)OET zKZW0%+img|QKyx#GbMw42&Yoq><$=`IvB6ADRm>eqdmTdm$AEGWlvWE&}PkUtZ%uk zMKcnNJLGRC0dS;eT&T&-hpP)>U~C`J-nrM;3`PF#+Q!zymfpQ{eHX78YmREdoTX~K z5KXd-j6mO@D?VzKhmbQ+uaAMJO=1til(gQlo9K8aGcK{YM)1f8hD(^(4C~XnBI5R? zZDngfC6qa`14?{$C|Xfn3FiBZL=Pq$$jI!gG>ul~Y4U4OU7*sE@yVaZ3eiWDA&MEIc3= zh53j|YrApr(xppQ2P6NZ$4ndi=6B+p{eQMEhn;-~V#Dxd-$jW&w^;m`H7SNf>)Na+ z1nQ$%Bk=iMmN!l+ZI6++CiatZI>+0Co3eYv`Ebz%x#C61qnm}@*=e?eYN>b>KF{uP ztuKK_1;`Ok5CHAMzu6@C;lza$;$%XiAVM=VybxwL7$yLQNpD(C8haI%=X4wKnmQao zjGFi-p@EZd{{*v#I7}NN?Rd*S+(QwpA^5+|sld1??KiBel7N}Rltu8AJM2TrNuhW= z<-<4O&3=WpS4k8qxdEbcGc#2!2tmP!I%bvz%(;QnApaEVa%Xlk{eO96gey-y1m|lUUHi22y}xh&*`=?(gqP@?9x&FuTssPOam%;iLW~n9^K% zz>dNGyp+KmixESJcM@a9T_v+LBi<;Us0KP@GTE#d=MFsN6Qk6?V>MzMZt=JSRu@d^T(wI|-`_`{ITd@p&4~78c8ACd@E&teb5{8+H=bq9KkmN+A~)cwxIp zgxF^47>_q4&Vi?>X4F@{Rd`#n5XUQX0yfADi{XS$#y MTzopl8UHgbsOF<^IIv7 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 delta 7864 zcmZ`;30zfG8o%c};5~ROM-gOs;(ZTPAVfex6jZK?ySadxxjx~6AcC?aF3F~8YH5B= z)0maEIGI@{P1}@ZWm!3yGc{?cP18O(W$Rc?I^TEBy^m*3KYqXa?)lC+-}#pRx17tZ z_w)Vt@&iu?*`DN&!?Qu-qoPB*ch`EvgleI&-MhzXow31DEPNZcH!Z8I_m=y#TOd0m zIc7T#ZfNu_@o9iFwd(a&s0ztpzk{72I=c;?4M}6ahfhP25^m=a%Y5|}b@fY)vc{^q zTI~-!sG+K|R=Wdw+uiP+JkncUKC;eRUq0Elbdj%KyOW32`itaHPzKOE!B4MFx)lSyKGriZKbvwXKQ@kdTV?S9_ejr@D(?dHM{ zs;TyJ(tW&pRc%#cNz<}rH7orK?}sz?UcLA5Fu8bYeO>cP?T=voN)AFkHA-sU-eOdOJG{-M%_F^yWs6IyR{69?AuF^G zI|wsF``S8r28gg8P!^iVQsvuMp~4}T{fTFrge3MjM22OiJi$XNeT}9$pXA+faCOtt z06#QnPr<^l_`Xl`D4a8v)-}~OmXOoSwLkMnB$d>78x||N_6*z|7SEoAr@~x`hj=W` zPVzQ17B~CKni_rO#f^(go5z=H&%yaH7keHeoUWdS<&l=cXrX#vLxc7L6giX1UX({l zYg-d9@ova;R8xJuueQ-NfOdpCkSL9zz06~}7EJe5G}V@?iC1{H72XDgJxd_%C>(aW z*sE~XnZ#a$Uz~&Nuk%dYZ*1R`o~a$N<+Rb#E5nioxu?Z5Q=Hk?fC=YuXc0?UvH+3!) zgKQDE(>l$G>x8%+c1PdZ^D>H>4b{ZEos)XpW@9&Ze%SLOV|Tzm<98<=r&(t=I{J%N zd==~Hncxf~%8Rf&;ZF7qj7Yp8?gyfyh&+!6;SbB>n)7zXf?!&5G#qsGXWw-G!}TCz z-vM(K@YXgM?((o7!0Q?cWl1+irs0-U+{wjH$OzoM6QR|W2o1d(dR~;AgZ1E4?x07w z&T!c!_@#GAbh;*vNr7~(+funE+S(vrFXBJ7!YbWMKWFrTVQr*@c!L;EapxwjqaoT& z!vo!%el)iYnc|B>tcQEt^VvFJ9v52=NuIrI1040_v5j!aGu*k6w#xHAfN{wWhDsOc zOl*dqll!yNke1?QTVQia0s7&Ul)KoL&Wb(_jNJn7_D#*-PMbBSaYyUMR?UbvZj!%| z;@9+6NsqATgMp>Qc24bgf#Ct;)Aq6*@NHV!Aj^lEvF!~_n4=Vp7om8zF%cxCO`K_$ zN0MJq%J*Sv`fPR=JeZyqdp8N=Va6r4+z1{M!N_M~7kr+ch~NpnYERZysVX-_bqX2| zK@d&uWoTg>h+RZVa7Ia5E*kz`c<-wI(cci6PD7j0BS_p2i5b1v{V*iM!~O_!Gp4gU z;gO7fJwUS8oWoIKE@c)E!HE7t6CaWMA0bADHa2knVVsY}oXz^@z{dVM1K8WYU(TH- zBh(nh+b`~=u`?Ul>b#iDAUfp=K3=Zi;xXWvnGt^?VzI*UP8gP%#X6xjGlA`d8#B`j zpP*T?jfY3tYz(oC(PR1LCYnS_5XGHMJV`@$ur=HSUuE_gCK*`foe~kOV?heMGUdry%(}Dm2OFS#*$bZ{&(nFt9E5#ldnA2y5l?S^Aun`g=PT}8c z68w1LLNf6%AzdATXhN$qr@=7h8RoA2IqB>OoXqJp`ek)C2ado&xPO2NL%c#8 zqMYc;^S4nfYY6ip0~fQcaL>RIiHZYe6q6TWQ0{OJr%<+2rqjf05I?9W^ayc68F#{> zL7AB4m>yzTNK=16lE4h^d4Wm^Ao^oJ`$?FJ(^i#-MPxl{X^>lSm?!q%cG zn1q5Rc9H-TCuGRu@L6surmk*zRAVyo#^dw4JYdHmY;bac<$GhZ#my%+`X) zq73RG>;8?n5>vFP$0j;q@nBb;j7;5zyB?)!gtUxIH$nopyd`Ox6~Go|-h!tGXJXF! zeDEMF7fJccohmUgWCNW$^22zFDOZk05*UtZnbCEIMdA;ZayDQEv2b>1ba#tneB42v zbBK4rRRm=&e!)Chmg6h0$=TAc>uV3k6vV6;hcVEYw>N%6rn(LFPmMn5Wrv z9Gs;|DUJ-iv1kg0DA`41#2^kZ*-8ckj+3ylFdub1T$o|zWtn?aUM59%fo<3+`-ika zya^u;8;~jA3CJV0!8Yt+b#1@FkgcOys2q$_l!K|LA~=hN_l&uXw#$6a$6Lw#HmDhX z9PL^-!p+`+`6Je0QvGnm09{2KbCxpRf?PMRCtGzBPf%9&aI{ZO(Oz~EP8SWp4dKQB zb`}baV)@L31BQ;}@`TZW#eT-fVeWHMQItfWDi0G2@qi*3ap){@9y&+XPWaSXg=oas zN#$`$_<#*EXW|T67~24a7{$t(agC%(v}Dx4%zsICTs%*|2*I!DSG++_M7#K>dNECQ z4vvi~bW41ObEkM*s%h`?Q5u@qF3!Tj(XlNulF^6$RowEVxr#U=4uh(3%lmQ=f^RAT z=s|k0iEu;*7j0CZWtB2|R3p63%k_)~Ht|;)5LR@v1na?3PB=8W&$w@CMtnkIx(Ofu z?iwSUK9>7ZHC`l?6*SWd7?B30EzPn9Tva>=A-4AXVN`GBsu}HM<0ckLeTV zhc53j3oV1yV@9!a@Z6Z|(C2w$*Hr#Or@Jvi5R3jGlYNueCj}1ve^aV(VUY~nwL!AN zd>KfTtUL}V92*Zg;|8)bP%+NH=L6#k+0F3rxF#%AbH-1p_?7B1#aVh2UqZn*@&E(@ zT1|BvE!E<6B3d>gJki)m=~As%D?O6Ie?d&h!wz`t1U==y=03UK*^99jAxUbz^wW*7 zc|u=y9u7{J5+49a>OTFhdI1t94qL3ooj*005RD4i|Ev9Y_0{{atfQeGj zg8d8d?L-gz3}Po`=B_7@R|?}_JoP2D>nC=vZlp&3%YMK={k-(HRHKN!tjVcN?P`E)nL(9oM z>QC4DYf*mR+I9Ss9%#{YOpeOAAz}kD)v;+4pU`$RsgOa1gxy3CUq~T>)d&spJn2## z!Nu2df{8uy7ZZ${u!$c{f|{^d6G7rjIpMUaEvV5)FnP)|qZA{}WaK}AnT)PDft!qY z0G~-ykEE!8Lr7c^CI0aH0CK0jVwVSE<71otBKG*NOwVQ=oj*>`WU1|B4Ac$dS!NOh zmdq_4!sYLkT9}WH!IaV^Q31Jz*1@Z#Nf{;sD(L~KNhKoWi#bd&#`)b4J>yZoD6h}R zV>bYwnbCb49h1jLqZJ5Rg1lHq!}mi{T}sB0aTjD=VBHP##N_r=3$zlo<$0P^OHOw*rj#M znkbIaloNaSAl-rZI|^rK6~?_JIa#|8$WajWwmH`v_56p1;&Z~rNVaA=u|<((Bzo|Q ztc&l#HMe4OTL1G;k zbBEzQyJc=A7LiZqCg&Wa#TdTNk?Dj9EXvOtO^{lp8~aG(0ah)}LE*gku*cPD;!+zd zn0HmQN?e+8o=I(wF;w=>c{+Y9IyA2=Mxg^G!BiST5{1*gy!lDdmgxicRnDh<8|Tl7 zQD(;V*A(N84u9v;z6#F%(?W*j2Vcw#L z>D$U-Upni6{4%o7?6O>ZZY|44eUFxnR{G*ItvtmpV?*2rrRBO^#v&@Sx;!;PDPyIj z1LdRG-SA!c>n3Zr#249g7q2$IL13kMPnr4*eOsD3IS%e_cfk2}0fiNgMY7Yh$^g0- zHF+!$Pi}6O+280339V*JM$w1`l9?@;9AHbbJ_96&wRj$mX{(8%u8L+T94$f6ZIK&NP59by* zQJGrd(NvG6h^mJDx=r*acRGrRa};M%vSTE?_>P{)M->3Nn5hClddL;(?5NFKDeS|< zTQW{JfVV0)`3K421U*$Zav_jF2KoV>s&a+OUKrK90B5UWW8RS`l5O6mH+dQS`}QR< zkW@V_JAfr+FA=~IyC7sJPxuQxDXSpMUDauW6;)j_tUYpMY?9e3Lj1;|wf@SKUz=r@ z02H6YLrV($^aHh4;@cxxb(4v2mVbV8O)k3#hiek>8{+Aj9Orte6W-xPJH#(t;9u9W zbWHTO()KFRQ#!}$32a#s#?*h74z|0p4BB{I76Y-v9h1rvky=)-p%R{3AayfRX8Wb!~gu)fc z>_^%dbH&EfoH<~3LlQ((+A%&)EiYVve1r0M3jSbENL5Q5S87us2&OD5+%gHLi1#Fx z0*|!g4!lM@yOF>aEq+!zb$cGqpg_SJ7YtkBY5DOALw;>i(5lkDLBgb9>2qULrt%aw z=S6x5q6#l0qLti)xrSykus-7(e!_O)4_50q$wOSB?R^YCdnDsm<%x~SF=l0yNMx!@ zMCYAp$YbA|P94}-5EH1J+3De`j>fK4ry9E)*QcojomSA?<=m~!L~&m?*6+sbl|%`2 zZ2St-u_oQB*@1N8Y0R=L<0^7$P-?Xq5p&uBGrnX$UB-HcmkUp<&zfTvd{v#;UoY8T>)o?k-T zngM(<*F1_N{GZn<1s8*}lb3nGM&s^oHb?I2hPE#r&9nEjoGE!y>ei_#Xpx zCBbVxw`v42$8TS7pmi8)hc8=m*d}nd72~tA?KPMGu1{Sx{WC&Sl^(H)I>&-UmYeMhtnOIk@AL4F@YaWuz*ip z=gR2%Ou>wR&lGZj%u5uMMo>L&cpnz7%Zd7ksK)IZDBLhf!tQnHChbW{i$dDF>pb}% p(mL@bJ@<>fq>B^3kz;kfnJg&Z-u-`XorBg-XY6d}h8rTn{|DevVO;