From a046ed8aa145a97adf82155b171c33dff448b92f Mon Sep 17 00:00:00 2001 From: tcar Date: Thu, 11 Nov 2021 14:27:27 +0100 Subject: [PATCH 1/2] update ABI constants with V2 contracts ABI; Signed-off-by: tcar --- chains/evm/calls/consts/consts.go | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) diff --git a/chains/evm/calls/consts/consts.go b/chains/evm/calls/consts/consts.go index 1574c7ea..7266b43e 100644 --- a/chains/evm/calls/consts/consts.go +++ b/chains/evm/calls/consts/consts.go @@ -6,10 +6,10 @@ const DefaultGasPrice = 20000000000 const DefaultGasMultiplier = 1 const DefaultBlockConfirmations = 10 -const BridgeABI = "[{\"inputs\":[{\"internalType\":\"uint8\",\"name\":\"domainID\",\"type\":\"uint8\"},{\"internalType\":\"address[]\",\"name\":\"initialRelayers\",\"type\":\"address[]\"},{\"internalType\":\"uint256\",\"name\":\"initialRelayerThreshold\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"fee\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"expiry\",\"type\":\"uint256\"}],\"stateMutability\":\"nonpayable\",\"type\":\"constructor\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"uint8\",\"name\":\"destinationDomainID\",\"type\":\"uint8\"},{\"indexed\":false,\"internalType\":\"bytes32\",\"name\":\"resourceID\",\"type\":\"bytes32\"},{\"indexed\":false,\"internalType\":\"uint64\",\"name\":\"depositNonce\",\"type\":\"uint64\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"user\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"bytes\",\"name\":\"data\",\"type\":\"bytes\"},{\"indexed\":false,\"internalType\":\"bytes\",\"name\":\"handlerResponse\",\"type\":\"bytes\"}],\"name\":\"Deposit\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"bytes\",\"name\":\"lowLevelData\",\"type\":\"bytes\"}],\"name\":\"FailedHandlerExecution\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"address\",\"name\":\"account\",\"type\":\"address\"}],\"name\":\"Paused\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"uint8\",\"name\":\"originDomainID\",\"type\":\"uint8\"},{\"indexed\":false,\"internalType\":\"uint64\",\"name\":\"depositNonce\",\"type\":\"uint64\"},{\"indexed\":false,\"internalType\":\"enum Bridge.ProposalStatus\",\"name\":\"status\",\"type\":\"uint8\"},{\"indexed\":false,\"internalType\":\"bytes32\",\"name\":\"dataHash\",\"type\":\"bytes32\"}],\"name\":\"ProposalEvent\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"uint8\",\"name\":\"originDomainID\",\"type\":\"uint8\"},{\"indexed\":false,\"internalType\":\"uint64\",\"name\":\"depositNonce\",\"type\":\"uint64\"},{\"indexed\":false,\"internalType\":\"enum Bridge.ProposalStatus\",\"name\":\"status\",\"type\":\"uint8\"},{\"indexed\":false,\"internalType\":\"bytes32\",\"name\":\"dataHash\",\"type\":\"bytes32\"}],\"name\":\"ProposalVote\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"address\",\"name\":\"relayer\",\"type\":\"address\"}],\"name\":\"RelayerAdded\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"address\",\"name\":\"relayer\",\"type\":\"address\"}],\"name\":\"RelayerRemoved\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"newThreshold\",\"type\":\"uint256\"}],\"name\":\"RelayerThresholdChanged\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"bytes32\",\"name\":\"role\",\"type\":\"bytes32\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"account\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"sender\",\"type\":\"address\"}],\"name\":\"RoleGranted\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"bytes32\",\"name\":\"role\",\"type\":\"bytes32\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"account\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"sender\",\"type\":\"address\"}],\"name\":\"RoleRevoked\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"address\",\"name\":\"account\",\"type\":\"address\"}],\"name\":\"Unpaused\",\"type\":\"event\"},{\"inputs\":[],\"name\":\"DEFAULT_ADMIN_ROLE\",\"outputs\":[{\"internalType\":\"bytes32\",\"name\":\"\",\"type\":\"bytes32\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"MAX_RELAYERS\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"RELAYER_ROLE\",\"outputs\":[{\"internalType\":\"bytes32\",\"name\":\"\",\"type\":\"bytes32\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint8\",\"name\":\"\",\"type\":\"uint8\"}],\"name\":\"_depositCounts\",\"outputs\":[{\"internalType\":\"uint64\",\"name\":\"\",\"type\":\"uint64\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"_domainID\",\"outputs\":[{\"internalType\":\"uint8\",\"name\":\"\",\"type\":\"uint8\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"_expiry\",\"outputs\":[{\"internalType\":\"uint40\",\"name\":\"\",\"type\":\"uint40\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"_fee\",\"outputs\":[{\"internalType\":\"uint128\",\"name\":\"\",\"type\":\"uint128\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"_relayerThreshold\",\"outputs\":[{\"internalType\":\"uint8\",\"name\":\"\",\"type\":\"uint8\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes32\",\"name\":\"\",\"type\":\"bytes32\"}],\"name\":\"_resourceIDToHandlerAddress\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes32\",\"name\":\"role\",\"type\":\"bytes32\"}],\"name\":\"getRoleAdmin\",\"outputs\":[{\"internalType\":\"bytes32\",\"name\":\"\",\"type\":\"bytes32\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes32\",\"name\":\"role\",\"type\":\"bytes32\"},{\"internalType\":\"uint256\",\"name\":\"index\",\"type\":\"uint256\"}],\"name\":\"getRoleMember\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes32\",\"name\":\"role\",\"type\":\"bytes32\"}],\"name\":\"getRoleMemberCount\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes32\",\"name\":\"role\",\"type\":\"bytes32\"},{\"internalType\":\"address\",\"name\":\"account\",\"type\":\"address\"}],\"name\":\"getRoleMemberIndex\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes32\",\"name\":\"role\",\"type\":\"bytes32\"},{\"internalType\":\"address\",\"name\":\"account\",\"type\":\"address\"}],\"name\":\"grantRole\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes32\",\"name\":\"role\",\"type\":\"bytes32\"},{\"internalType\":\"address\",\"name\":\"account\",\"type\":\"address\"}],\"name\":\"hasRole\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"paused\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes32\",\"name\":\"role\",\"type\":\"bytes32\"},{\"internalType\":\"address\",\"name\":\"account\",\"type\":\"address\"}],\"name\":\"renounceRole\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes32\",\"name\":\"role\",\"type\":\"bytes32\"},{\"internalType\":\"address\",\"name\":\"account\",\"type\":\"address\"}],\"name\":\"revokeRole\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint72\",\"name\":\"destNonce\",\"type\":\"uint72\"},{\"internalType\":\"bytes32\",\"name\":\"dataHash\",\"type\":\"bytes32\"},{\"internalType\":\"address\",\"name\":\"relayer\",\"type\":\"address\"}],\"name\":\"_hasVotedOnProposal\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"relayer\",\"type\":\"address\"}],\"name\":\"isRelayer\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"newAdmin\",\"type\":\"address\"}],\"name\":\"renounceAdmin\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"adminPauseTransfers\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"adminUnpauseTransfers\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"newThreshold\",\"type\":\"uint256\"}],\"name\":\"adminChangeRelayerThreshold\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"relayerAddress\",\"type\":\"address\"}],\"name\":\"adminAddRelayer\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"relayerAddress\",\"type\":\"address\"}],\"name\":\"adminRemoveRelayer\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"handlerAddress\",\"type\":\"address\"},{\"internalType\":\"bytes32\",\"name\":\"resourceID\",\"type\":\"bytes32\"},{\"internalType\":\"address\",\"name\":\"tokenAddress\",\"type\":\"address\"}],\"name\":\"adminSetResource\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"handlerAddress\",\"type\":\"address\"},{\"internalType\":\"bytes32\",\"name\":\"resourceID\",\"type\":\"bytes32\"},{\"internalType\":\"address\",\"name\":\"contractAddress\",\"type\":\"address\"},{\"internalType\":\"bytes4\",\"name\":\"depositFunctionSig\",\"type\":\"bytes4\"},{\"internalType\":\"uint256\",\"name\":\"depositFunctionDepositerOffset\",\"type\":\"uint256\"},{\"internalType\":\"bytes4\",\"name\":\"executeFunctionSig\",\"type\":\"bytes4\"}],\"name\":\"adminSetGenericResource\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"handlerAddress\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"tokenAddress\",\"type\":\"address\"}],\"name\":\"adminSetBurnable\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint8\",\"name\":\"domainID\",\"type\":\"uint8\"},{\"internalType\":\"uint64\",\"name\":\"nonce\",\"type\":\"uint64\"}],\"name\":\"adminSetDepositNonce\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint8\",\"name\":\"originDomainID\",\"type\":\"uint8\"},{\"internalType\":\"uint64\",\"name\":\"depositNonce\",\"type\":\"uint64\"},{\"internalType\":\"bytes32\",\"name\":\"dataHash\",\"type\":\"bytes32\"}],\"name\":\"getProposal\",\"outputs\":[{\"components\":[{\"internalType\":\"enum Bridge.ProposalStatus\",\"name\":\"_status\",\"type\":\"uint8\"},{\"internalType\":\"uint200\",\"name\":\"_yesVotes\",\"type\":\"uint200\"},{\"internalType\":\"uint8\",\"name\":\"_yesVotesTotal\",\"type\":\"uint8\"},{\"internalType\":\"uint40\",\"name\":\"_proposedBlock\",\"type\":\"uint40\"}],\"internalType\":\"struct Bridge.Proposal\",\"name\":\"\",\"type\":\"tuple\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"_totalRelayers\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"newFee\",\"type\":\"uint256\"}],\"name\":\"adminChangeFee\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"handlerAddress\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"tokenAddress\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"recipient\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"amountOrTokenID\",\"type\":\"uint256\"}],\"name\":\"adminWithdraw\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint8\",\"name\":\"destinationDomainID\",\"type\":\"uint8\"},{\"internalType\":\"bytes32\",\"name\":\"resourceID\",\"type\":\"bytes32\"},{\"internalType\":\"bytes\",\"name\":\"data\",\"type\":\"bytes\"}],\"name\":\"deposit\",\"outputs\":[],\"stateMutability\":\"payable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint8\",\"name\":\"domainID\",\"type\":\"uint8\"},{\"internalType\":\"uint64\",\"name\":\"depositNonce\",\"type\":\"uint64\"},{\"internalType\":\"bytes32\",\"name\":\"resourceID\",\"type\":\"bytes32\"},{\"internalType\":\"bytes\",\"name\":\"data\",\"type\":\"bytes\"}],\"name\":\"voteProposal\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint8\",\"name\":\"domainID\",\"type\":\"uint8\"},{\"internalType\":\"uint64\",\"name\":\"depositNonce\",\"type\":\"uint64\"},{\"internalType\":\"bytes32\",\"name\":\"dataHash\",\"type\":\"bytes32\"}],\"name\":\"cancelProposal\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint8\",\"name\":\"domainID\",\"type\":\"uint8\"},{\"internalType\":\"uint64\",\"name\":\"depositNonce\",\"type\":\"uint64\"},{\"internalType\":\"bytes\",\"name\":\"data\",\"type\":\"bytes\"},{\"internalType\":\"bytes32\",\"name\":\"resourceID\",\"type\":\"bytes32\"},{\"internalType\":\"bool\",\"name\":\"revertOnFail\",\"type\":\"bool\"}],\"name\":\"executeProposal\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address payable[]\",\"name\":\"addrs\",\"type\":\"address[]\"},{\"internalType\":\"uint256[]\",\"name\":\"amounts\",\"type\":\"uint256[]\"}],\"name\":\"transferFunds\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"}]" -const BridgeBin = "0x60806040523480156200001157600080fd5b506040516200345a3803806200345a8339810160408190526200003491620003a3565b6000805460ff199081169091556002805490911660ff871617905562000066836200016d602090811b62001a0f17901c565b600260016101000a81548160ff021916908360ff1602179055506200009682620001a060201b62001a361760201c565b6002806101000a8154816001600160801b0302191690836001600160801b03160217905550620000d181620001c860201b62001a5b1760201c565b6002805464ffffffffff92909216600160901b0264ffffffffff60901b1990921691909117905562000105600033620001f2565b60005b84518110156200016157620001587fe2b7fb3b832174769106daebcfd6d1970523240dda11281102db9363b83b0dc48683815181106200014457fe5b60200260200101516200020260201b60201c565b60010162000108565b505050505050620005cb565b600061010082106200019c5760405162461bcd60e51b815260040162000193906200053a565b60405180910390fd5b5090565b6000600160801b82106200019c5760405162461bcd60e51b81526004016200019390620004cc565b60006501000000000082106200019c5760405162461bcd60e51b8152600401620001939062000503565b620001fe828262000248565b5050565b600082815260016020526040902060020154620002299062000223620002c3565b620002c7565b620001f25760405162461bcd60e51b815260040162000193906200047d565b60008281526001602090815260409091206200026f91839062001a82620002f6821b17901c565b15620001fe576200027f620002c3565b6001600160a01b0316816001600160a01b0316837f2f8788117e7eff1d82e926ec794901d17c78024a50270940304540a733656f0d60405160405180910390a45050565b3390565b60008281526001602090815260408220620002ed91849062001a976200030d821b17901c565b90505b92915050565b6000620002ed836001600160a01b03841662000324565b6000620002ed836001600160a01b03841662000373565b600062000332838362000373565b6200036a57508154600181810184556000848152602080822090930184905584548482528286019093526040902091909155620002f0565b506000620002f0565b60009081526001919091016020526040902054151590565b80516001600160a01b0381168114620002f057600080fd5b600080600080600060a08688031215620003bb578081fd5b8551620003c881620005b8565b602087810151919650906001600160401b03811115620003e6578283fd5b8701601f81018913620003f7578283fd5b80516200040e620004088262000598565b62000571565b81815283810190838501858402850186018d10156200042b578687fd5b8694505b838510156200045957620004448d826200038b565b8352600194909401939185019185016200042f565b5060408b015160608c01516080909c01519a9d919c509a9998509650505050505050565b6020808252602f908201527f416363657373436f6e74726f6c3a2073656e646572206d75737420626520616e60408201526e0818591b5a5b881d1bc819dc985b9d608a1b606082015260800190565b6020808252601e908201527f76616c756520646f6573206e6f742066697420696e2031323820626974730000604082015260600190565b6020808252601d908201527f76616c756520646f6573206e6f742066697420696e2034302062697473000000604082015260600190565b6020808252601c908201527f76616c756520646f6573206e6f742066697420696e2038206269747300000000604082015260600190565b6040518181016001600160401b03811182821017156200059057600080fd5b604052919050565b60006001600160401b03821115620005ae578081fd5b5060209081020190565b60ff81168114620005c857600080fd5b50565b612e7f80620005db6000396000f3fe6080604052600436106102305760003560e01c80638c0c26311161012e578063c0331b3e116100ab578063cdb0f73a1161006f578063cdb0f73a14610678578063d547741f14610698578063d7a9cd79146106b8578063edc20c3c146106cd578063ffaac0eb146106ed57610230565b8063c0331b3e146105d4578063c5b37c22146105f4578063c5ec897014610616578063ca15c87314610638578063cb10f2151461065857610230565b80639d82dd63116100f25780639d82dd631461053b5780639dd694f41461055b5780639debb3bd1461057d578063a217fddf14610592578063a9cf69fa146105a757610230565b80638c0c2631146104a65780639010d07c146104c657806391c404ac146104e657806391d1485414610506578063926d7d7f1461052657610230565b80634e0df3f6116101bc578063780cf00411610180578063780cf0041461040f5780637febe63f1461042f578063802aabe81461044f57806380ae1c281461046457806384db809f1461047957610230565b80634e0df3f61461036d578063541d55481461038d5780635a1ad87c146103ba5780635c975abb146103da5780635e1fab0f146103ef57610230565b80632f2ff15d116102035780632f2ff15d146102c057806336568abe146102e05780634603ae38146103005780634b0b919d146103205780634e0560051461034d57610230565b806305e2ca171461023557806317f03ce51461024a578063206a98fd1461026a578063248a9ca31461028a575b600080fd5b610248610243366004612349565b610702565b005b34801561025657600080fd5b506102486102653660046123c2565b610892565b34801561027657600080fd5b5061024861028536600461246f565b610aae565b34801561029657600080fd5b506102aa6102a536600461220d565b610cfe565b6040516102b791906125aa565b60405180910390f35b3480156102cc57600080fd5b506102486102db366004612225565b610d13565b3480156102ec57600080fd5b506102486102fb366004612225565b610d5b565b34801561030c57600080fd5b5061024861031b3660046121a5565b610d9d565b34801561032c57600080fd5b5061034061033b36600461232e565b610e2b565b6040516102b79190612cd9565b34801561035957600080fd5b5061024861036836600461220d565b610e46565b34801561037957600080fd5b506102aa610388366004612225565b610eab565b34801561039957600080fd5b506103ad6103a8366004612051565b610ed7565b6040516102b7919061259f565b3480156103c657600080fd5b506102486103d5366004612136565b610ef1565b3480156103e657600080fd5b506103ad610f8b565b3480156103fb57600080fd5b5061024861040a366004612051565b610f94565b34801561041b57600080fd5b5061024861042a3660046120a5565b610fde565b34801561043b57600080fd5b506103ad61044a366004612304565b611051565b34801561045b57600080fd5b506102aa6110e9565b34801561047057600080fd5b50610248611107565b34801561048557600080fd5b5061049961049436600461220d565b611119565b6040516102b79190612567565b3480156104b257600080fd5b506102486104c136600461206d565b611134565b3480156104d257600080fd5b506104996104e1366004612249565b6111a1565b3480156104f257600080fd5b5061024861050136600461220d565b6111c0565b34801561051257600080fd5b506103ad610521366004612225565b61122a565b34801561053257600080fd5b506102aa611242565b34801561054757600080fd5b50610248610556366004612051565b611254565b34801561056757600080fd5b506105706112cf565b6040516102b79190612ced565b34801561058957600080fd5b506102aa6112d8565b34801561059e57600080fd5b506102aa6112dd565b3480156105b357600080fd5b506105c76105c23660046123c2565b6112e2565b6040516102b79190612c69565b3480156105e057600080fd5b506102486105ef3660046123ff565b611391565b34801561060057600080fd5b506106096117c9565b6040516102b79190612cb3565b34801561062257600080fd5b5061062b6117de565b6040516102b79190612cc7565b34801561064457600080fd5b506102aa61065336600461220d565b6117f2565b34801561066457600080fd5b506102486106733660046120f5565b611809565b34801561068457600080fd5b50610248610693366004612051565b61189a565b3480156106a457600080fd5b506102486106b3366004612225565b61193d565b3480156106c457600080fd5b50610570611977565b3480156106d957600080fd5b506102486106e8366004612395565b611985565b3480156106f957600080fd5b506102486119ff565b61070a611aac565b6002546201000090046001600160801b031634146107435760405162461bcd60e51b815260040161073a9061285b565b60405180910390fd5b6000838152600460205260409020546001600160a01b0316806107785760405162461bcd60e51b815260040161073a906128f9565b60ff851660009081526003602052604090819020805467ffffffffffffffff19811660016001600160401b039283160191821617909155905163b07e54bb60e01b815282906060906001600160a01b0383169063b07e54bb906107e5908a9033908b908b906004016125ca565b600060405180830381600087803b1580156107ff57600080fd5b505af1158015610813573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f1916820160405261083b919081019061226a565b9050336001600160a01b03167f17bc3181e17a9620a479c24e6c606e474ba84fc036877b768926872e8cd0e11f8989868a8a8760405161088096959493929190612cfb565b60405180910390a25050505050505050565b61089a611acf565b68ffffffffffffffff00600883901b1660ff8416176108b7611f79565b6001600160481b0382166000908152600560209081526040808320868452909152908190208151608081019092528054829060ff1660048111156108f757fe5b600481111561090257fe5b8152905461010081046001600160c81b03166020830152600160d01b810460ff166040830152600160d81b900464ffffffffff166060909101528051909150600181600481111561094f57fe5b14806109665750600281600481111561096457fe5b145b6109825760405162461bcd60e51b815260040161073a9061288b565b600254606083015164ffffffffff600160901b9092048216916109a791439116611b14565b64ffffffffff16116109cb5760405162461bcd60e51b815260040161073a906129ea565b60048083526001600160481b03841660009081526005602090815260408083208884529091529020835181548593839160ff1916906001908490811115610a0e57fe5b02179055506020820151815460408085015160609095015164ffffffffff16600160d81b026001600160d81b0360ff909616600160d01b0260ff60d01b196001600160c81b0390951661010002610100600160d01b03199094169390931793909316919091179390931617905551600080516020612e0a83398151915290610a9e90889088906004908990612d4c565b60405180910390a1505050505050565b610ab6611b56565b610abe611aac565b60008281526004602090815260408083205490516001600160a01b039091169268ffffffffffffffff0060088a901b1660ff8b1617929091610b069185918a918a910161253b565b60408051601f1981840301815291815281516020928301206001600160481b03851660009081526005845282812082825290935291209091506002815460ff166004811115610b5157fe5b14610b6e5760405162461bcd60e51b815260040161073a906129b5565b805460ff19166003178155838515610be75760405163712467f960e11b81526001600160a01b0382169063e248cff290610bb0908a908d908d9060040161262b565b600060405180830381600087803b158015610bca57600080fd5b505af1158015610bde573d6000803e3d6000fd5b50505050610cc4565b60405163712467f960e11b81526001600160a01b0382169063e248cff290610c17908a908d908d9060040161262b565b600060405180830381600087803b158015610c3157600080fd5b505af1925050508015610c42575060015b610cc4573d808015610c70576040519150601f19603f3d011682016040523d82523d6000602084013e610c75565b606091505b50825460ff191660021783556040517fbd37c1f0d53bb2f33fe4c2104de272fcdeb4d2fef3acdbf1e4ddc3d6833ca37690610cb190839061264e565b60405180910390a1505050505050610cf6565b600080516020612e0a8339815191528b8b600386604051610ce89493929190612d4c565b60405180910390a150505050505b505050505050565b60009081526001602052604090206002015490565b600082815260016020526040902060020154610d3190610521611b8a565b610d4d5760405162461bcd60e51b815260040161073a906126da565b610d578282611b8e565b5050565b610d63611b8a565b6001600160a01b0316816001600160a01b031614610d935760405162461bcd60e51b815260040161073a90612c1a565b610d578282611bf7565b610da5611c60565b60005b83811015610e2457848482818110610dbc57fe5b9050602002016020810190610dd19190612051565b6001600160a01b03166108fc848484818110610de957fe5b905060200201359081150290604051600060405180830381858888f19350505050158015610e1b573d6000803e3d6000fd5b50600101610da8565b5050505050565b6003602052600090815260409020546001600160401b031681565b610e4e611c60565b610e5781611a0f565b600260016101000a81548160ff021916908360ff1602179055507fa20d6b84cd798a24038be305eff8a45ca82ef54a2aa2082005d8e14c0a4746c881604051610ea091906125aa565b60405180910390a150565b60008281526001602081815260408084206001600160a01b038616855290920190529020545b92915050565b6000610ed1600080516020612e2a8339815191528361122a565b610ef9611c60565b60008581526004602081905260409182902080546001600160a01b0319166001600160a01b038a16908117909155915163de319d9960e01b815288929163de319d9991610f50918a918a918a918a918a91016125f5565b600060405180830381600087803b158015610f6a57600080fd5b505af1158015610f7e573d6000803e3d6000fd5b5050505050505050505050565b60005460ff1690565b610f9c611c60565b336001600160a01b0382161415610fc55760405162461bcd60e51b815260040161073a90612ac6565b610fd0600082610d13565b610fdb600033610d5b565b50565b610fe6611c60565b604051636ce5768960e11b815284906001600160a01b0382169063d9caed12906110189087908790879060040161257b565b600060405180830381600087803b15801561103257600080fd5b505af1158015611046573d6000803e3d6000fd5b505050505050505050565b6001600160481b038316600090815260056020908152604080832085845290915280822081516080810190925280546110e1929190829060ff16600481111561109657fe5b60048111156110a157fe5b8152905461010081046001600160c81b03166020830152600160d01b810460ff166040830152600160d81b900464ffffffffff1660609091015283611c87565b949350505050565b6000611102600080516020612e2a8339815191526117f2565b905090565b61110f611c60565b611117611caa565b565b6004602052600090815260409020546001600160a01b031681565b61113c611c60565b6040516307b7ed9960e01b815282906001600160a01b038216906307b7ed999061116a908590600401612567565b600060405180830381600087803b15801561118457600080fd5b505af1158015611198573d6000803e3d6000fd5b50505050505050565b60008281526001602052604081206111b99083611cf9565b9392505050565b6111c8611c60565b6002546201000090046001600160801b03168114156111f95760405162461bcd60e51b815260040161073a90612b69565b61120281611a36565b6002806101000a8154816001600160801b0302191690836001600160801b0316021790555050565b60008281526001602052604081206111b99083611a97565b600080516020612e2a83398151915281565b61126c600080516020612e2a8339815191528261122a565b6112885760405162461bcd60e51b815260040161073a90612786565b6112a0600080516020612e2a8339815191528261193d565b7f10e1f7ce9fd7d1b90a66d13a2ab3cb8dd7f29f3f8d520b143b063ccfbab6906b81604051610ea09190612567565b60025460ff1681565b60c881565b600081565b6112ea611f79565b6001600160481b0360ff858116600886901b68ffffffffffffffff001617918216600090815260056020908152604080832087845290915290819020815160808101909252805491929091839116600481111561134357fe5b600481111561134e57fe5b8152905461010081046001600160c81b03166020830152600160d01b810460ff166040830152600160d81b900464ffffffffff1660609091015295945050505050565b611399611b56565b6113a1611aac565b60008381526004602090815260408083205490516001600160a01b039091169268ffffffffffffffff00600889901b1660ff8a16179290916113e9918591889188910161253b565b604051602081830303815290604052805190602001209050611409611f79565b6001600160481b0383166000908152600560209081526040808320858452909152908190208151608081019092528054829060ff16600481111561144957fe5b600481111561145457fe5b8152905461010081046001600160c81b0316602080840191909152600160d01b820460ff16604080850191909152600160d81b90920464ffffffffff1660609093019290925260008a815260049092529020549091506001600160a01b03166114cf5760405162461bcd60e51b815260040161073a90612ba0565b6002815160048111156114de57fe5b14156114fc576114f3898988888b6001610aae565b50505050610e24565b8051600190600481111561150c57fe5b111561152a5760405162461bcd60e51b815260040161073a90612bd7565b6115348133611c87565b156115515760405162461bcd60e51b815260040161073a90612729565b60008151600481111561156057fe5b14156115c157506040805160808101825260018082526000602083018190528284015264ffffffffff4316606083015291519091600080516020612e0a833981519152916115b4918c918c91908790612d4c565b60405180910390a1611623565b600254606082015164ffffffffff600160901b9092048216916115e691439116611b14565b64ffffffffff161115611623576004808252604051600080516020612e0a8339815191529161161a918c918c918790612d4c565b60405180910390a15b60048151600481111561163257fe5b146116fa5761165761164333611d05565b82602001516001600160c81b031617611d33565b6001600160c81b031660208201526040808201805160010160ff169052815190517f25f8daaa4635a7729927ba3f5b3d59cc3320aca7c32c9db4e7ca7b9574343640916116a9918c918c918790612d4c565b60405180910390a1600254604082015160ff61010090920482169116106116fa576002808252604051600080516020612e0a833981519152916116f1918c918c918790612d4c565b60405180910390a15b6001600160481b038316600090815260056020908152604080832085845290915290208151815483929190829060ff1916600183600481111561173957fe5b021790555060208201518154604084015160609094015164ffffffffff16600160d81b026001600160d81b0360ff909516600160d01b0260ff60d01b196001600160c81b0390941661010002610100600160d01b0319909316929092179290921617929092169190911790556002815160048111156117b457fe5b141561104657611046898988888b6000610aae565b6002546201000090046001600160801b031681565b600254600160901b900464ffffffffff1681565b6000818152600160205260408120610ed190611d58565b611811611c60565b60008281526004602081905260409182902080546001600160a01b0319166001600160a01b0387169081179091559151635c7d1b9b60e11b815285929163b8fa3736916118629187918791016125b3565b600060405180830381600087803b15801561187c57600080fd5b505af1158015611890573d6000803e3d6000fd5b5050505050505050565b6118b2600080516020612e2a8339815191528261122a565b156118cf5760405162461bcd60e51b815260040161073a90612a8f565b60c86118d96110e9565b106118f65760405162461bcd60e51b815260040161073a9061282b565b61190e600080516020612e2a83398151915282610d13565b7f03580ee9f53a62b7cb409a2cb56f9be87747dd15017afc5cef6eef321e4fb2c581604051610ea09190612567565b60008281526001602052604090206002015461195b90610521611b8a565b610d935760405162461bcd60e51b815260040161073a90612965565b600254610100900460ff1681565b61198d611c60565b60ff82166000908152600360205260409020546001600160401b03908116908216116119cb5760405162461bcd60e51b815260040161073a90612a49565b60ff919091166000908152600360205260409020805467ffffffffffffffff19166001600160401b03909216919091179055565b611a07611c60565b611117611d63565b60006101008210611a325760405162461bcd60e51b815260040161073a906128c2565b5090565b6000600160801b8210611a325760405162461bcd60e51b815260040161073a906127bd565b6000650100000000008210611a325760405162461bcd60e51b815260040161073a906127f4565b60006111b9836001600160a01b038416611da5565b60006111b9836001600160a01b038416611def565b60005460ff16156111175760405162461bcd60e51b815260040161073a90612a1f565b611ada60003361122a565b80611af85750611af8600080516020612e2a8339815191523361122a565b6111175760405162461bcd60e51b815260040161073a906126a3565b60006111b983836040518060400160405280601e81526020017f536166654d6174683a207375627472616374696f6e206f766572666c6f770000815250611e07565b611b6e600080516020612e2a8339815191523361122a565b6111175760405162461bcd60e51b815260040161073a90612afd565b3390565b6000828152600160205260409020611ba69082611a82565b15610d5757611bb3611b8a565b6001600160a01b0316816001600160a01b0316837f2f8788117e7eff1d82e926ec794901d17c78024a50270940304540a733656f0d60405160405180910390a45050565b6000828152600160205260409020611c0f9082611e33565b15610d5757611c1c611b8a565b6001600160a01b0316816001600160a01b0316837ff6391f5c32d9c69d2a47ea670b442974b53935d1edc7fd64eb21e047a839171b60405160405180910390a45050565b611c6b60003361122a565b6111175760405162461bcd60e51b815260040161073a90612b32565b60008083602001516001600160c81b0316611ca184611d05565b16119392505050565b611cb2611aac565b6000805460ff191660011790556040517f62e78cea01bee320cd4e420270b5ea74000d11b0c9f74754ebdbfc544b05a25890611cef903390612567565b60405180910390a1565b60006111b98383611e48565b6000611d29611d22600080516020612e2a83398151915284610eab565b6001611b14565b6001901b92915050565b6000600160c81b8210611a325760405162461bcd60e51b815260040161073a9061292e565b6000610ed182611e8d565b611d6b611e91565b6000805460ff191690556040517f5db9ee0a495bf2e6ff9c91a7834c1ba4fdd244a5e8aa4e537bd38aeae4b073aa90611cef903390612567565b6000611db18383611def565b611de757508154600181810184556000848152602080822090930184905584548482528286019093526040902091909155610ed1565b506000610ed1565b60009081526001919091016020526040902054151590565b60008184841115611e2b5760405162461bcd60e51b815260040161073a919061264e565b505050900390565b60006111b9836001600160a01b038416611eb3565b81546000908210611e6b5760405162461bcd60e51b815260040161073a90612661565b826000018281548110611e7a57fe5b9060005260206000200154905092915050565b5490565b60005460ff166111175760405162461bcd60e51b815260040161073a90612758565b60008181526001830160205260408120548015611f6f5783546000198083019190810190600090879083908110611ee657fe5b9060005260206000200154905080876000018481548110611f0357fe5b600091825260208083209091019290925582815260018981019092526040902090840190558654879080611f3357fe5b60019003818190600052602060002001600090559055866001016000878152602001908152602001600020600090556001945050505050610ed1565b6000915050610ed1565b604080516080810190915280600081526000602082018190526040820181905260609091015290565b60008083601f840112611fb3578182fd5b5081356001600160401b03811115611fc9578182fd5b6020830191508360208083028501011115611fe357600080fd5b9250929050565b60008083601f840112611ffb578182fd5b5081356001600160401b03811115612011578182fd5b602083019150836020828501011115611fe357600080fd5b80356001600160401b0381168114610ed157600080fd5b803560ff81168114610ed157600080fd5b600060208284031215612062578081fd5b81356111b981612dba565b6000806040838503121561207f578081fd5b823561208a81612dba565b9150602083013561209a81612dba565b809150509250929050565b600080600080608085870312156120ba578182fd5b84356120c581612dba565b935060208501356120d581612dba565b925060408501356120e581612dba565b9396929550929360600135925050565b600080600060608486031215612109578283fd5b833561211481612dba565b925060208401359150604084013561212b81612dba565b809150509250925092565b60008060008060008060c0878903121561214e578182fd5b863561215981612dba565b955060208701359450604087013561217081612dba565b9350606087013561218081612dcf565b92506080870135915060a087013561219781612dcf565b809150509295509295509295565b600080600080604085870312156121ba578384fd5b84356001600160401b03808211156121d0578586fd5b6121dc88838901611fa2565b909650945060208701359150808211156121f4578384fd5b5061220187828801611fa2565b95989497509550505050565b60006020828403121561221e578081fd5b5035919050565b60008060408385031215612237578182fd5b82359150602083013561209a81612dba565b6000806040838503121561225b578182fd5b50508035926020909101359150565b60006020828403121561227b578081fd5b81516001600160401b0380821115612291578283fd5b818401915084601f8301126122a4578283fd5b8151818111156122b2578384fd5b604051601f8201601f1916810160200183811182821017156122d2578586fd5b6040528181528382016020018710156122e9578485fd5b6122fa826020830160208701612d80565b9695505050505050565b600080600060608486031215612318578081fd5b83356001600160481b0381168114612114578182fd5b60006020828403121561233f578081fd5b6111b98383612040565b6000806000806060858703121561235e578182fd5b6123688686612040565b93506020850135925060408501356001600160401b03811115612389578283fd5b61220187828801611fea565b600080604083850312156123a7578182fd5b82356123b281612dfa565b9150602083013561209a81612de5565b6000806000606084860312156123d6578081fd5b6123e08585612040565b92506123ef8560208601612029565b9150604084013590509250925092565b600080600080600060808688031215612416578283fd5b853561242181612dfa565b9450602086013561243181612de5565b93506040860135925060608601356001600160401b03811115612452578182fd5b61245e88828901611fea565b969995985093965092949392505050565b60008060008060008060a08789031215612487578384fd5b6124918888612040565b95506124a08860208901612029565b945060408701356001600160401b038111156124ba578485fd5b6124c689828a01611fea565b9095509350506060870135915060808701358015158114612197578182fd5b60008284528282602086013780602084860101526020601f19601f85011685010190509392505050565b60008151808452612527816020860160208601612d80565b601f01601f19169290920160200192915050565b60006bffffffffffffffffffffffff198560601b16825282846014840137910160140190815292915050565b6001600160a01b0391909116815260200190565b6001600160a01b039384168152919092166020820152604081019190915260600190565b901515815260200190565b90815260200190565b9182526001600160a01b0316602082015260400190565b8481526001600160a01b03841660208201526060604082018190526000906122fa90830184866124e5565b9485526001600160a01b039390931660208501526001600160e01b03199182166040850152606084015216608082015260a00190565b6000848252604060208301526126456040830184866124e5565b95945050505050565b6000602082526111b9602083018461250f565b60208082526022908201527f456e756d657261626c655365743a20696e646578206f7574206f6620626f756e604082015261647360f01b606082015260800190565b6020808252601e908201527f73656e646572206973206e6f742072656c61796572206f722061646d696e0000604082015260600190565b6020808252602f908201527f416363657373436f6e74726f6c3a2073656e646572206d75737420626520616e60408201526e0818591b5a5b881d1bc819dc985b9d608a1b606082015260800190565b6020808252601590820152741c995b185e595c88185b1c9958591e481d9bdd1959605a1b604082015260600190565b60208082526014908201527314185d5cd8589b194e881b9bdd081c185d5cd95960621b604082015260600190565b6020808252601f908201527f6164647220646f65736e277420686176652072656c6179657220726f6c652100604082015260600190565b6020808252601e908201527f76616c756520646f6573206e6f742066697420696e2031323820626974730000604082015260600190565b6020808252601d908201527f76616c756520646f6573206e6f742066697420696e2034302062697473000000604082015260600190565b6020808252601690820152751c995b185e595c9cc81b1a5b5a5d081c995858da195960521b604082015260600190565b602080825260169082015275125b98dbdc9c9958dd08199959481cdd5c1c1b1a595960521b604082015260600190565b6020808252601c908201527f50726f706f73616c2063616e6e6f742062652063616e63656c6c656400000000604082015260600190565b6020808252601c908201527f76616c756520646f6573206e6f742066697420696e2038206269747300000000604082015260600190565b6020808252818101527f7265736f757263654944206e6f74206d617070656420746f2068616e646c6572604082015260600190565b6020808252601e908201527f76616c756520646f6573206e6f742066697420696e2032303020626974730000604082015260600190565b60208082526030908201527f416363657373436f6e74726f6c3a2073656e646572206d75737420626520616e60408201526f2061646d696e20746f207265766f6b6560801b606082015260800190565b6020808252818101527f50726f706f73616c206d75737420686176652050617373656420737461747573604082015260600190565b6020808252818101527f50726f706f73616c206e6f7420617420657870697279207468726573686f6c64604082015260600190565b60208082526010908201526f14185d5cd8589b194e881c185d5cd95960821b604082015260600190565b60208082526026908201527f446f6573206e6f7420616c6c6f772064656372656d656e7473206f6620746865604082015265206e6f6e636560d01b606082015260800190565b6020808252601e908201527f6164647220616c7265616479206861732072656c6179657220726f6c65210000604082015260600190565b60208082526017908201527f43616e6e6f742072656e6f756e6365206f6e6573656c66000000000000000000604082015260600190565b6020808252818101527f73656e64657220646f65736e277420686176652072656c6179657220726f6c65604082015260600190565b6020808252601e908201527f73656e64657220646f65736e277420686176652061646d696e20726f6c650000604082015260600190565b6020808252601f908201527f43757272656e742066656520697320657175616c20746f206e65772066656500604082015260600190565b60208082526019908201527f6e6f2068616e646c657220666f72207265736f75726365494400000000000000604082015260600190565b60208082526023908201527f70726f706f73616c20616c72656164792065786563757465642f63616e63656c6040820152621b195960ea1b606082015260800190565b6020808252602f908201527f416363657373436f6e74726f6c3a2063616e206f6e6c792072656e6f756e636560408201526e103937b632b9903337b91039b2b63360891b606082015260800190565b81516080820190612c7981612db0565b82526020838101516001600160c81b03169083015260408084015160ff169083015260609283015164ffffffffff16929091019190915290565b6001600160801b0391909116815260200190565b64ffffffffff91909116815260200190565b6001600160401b0391909116815260200190565b60ff91909116815260200190565b600060ff881682528660208301526001600160401b038616604083015260a06060830152612d2d60a0830185876124e5565b8281036080840152612d3f818561250f565b9998505050505050505050565b60ff851681526001600160401b038416602082015260808101612d6e84612db0565b60408201939093526060015292915050565b60005b83811015612d9b578181015183820152602001612d83565b83811115612daa576000848401525b50505050565b60058110610fdb57fe5b6001600160a01b0381168114610fdb57600080fd5b6001600160e01b031981168114610fdb57600080fd5b6001600160401b0381168114610fdb57600080fd5b60ff81168114610fdb57600080fdfe968626a768e76ba1363efe44e322a6c4900c5f084e0b45f35e294dfddaa9e0d5e2b7fb3b832174769106daebcfd6d1970523240dda11281102db9363b83b0dc4a26469706673582212207b1da3718c1000b8f2732a59e02f0122b8977050d0670dc8a3168c03db16369964736f6c634300060c0033" +const BridgeABI = "[{\"inputs\":[{\"internalType\":\"uint8\",\"name\":\"domainID\",\"type\":\"uint8\"},{\"internalType\":\"address[]\",\"name\":\"initialRelayers\",\"type\":\"address[]\"},{\"internalType\":\"uint256\",\"name\":\"initialRelayerThreshold\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"fee\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"expiry\",\"type\":\"uint256\"}],\"stateMutability\":\"nonpayable\",\"type\":\"constructor\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"uint8\",\"name\":\"destinationDomainID\",\"type\":\"uint8\"},{\"indexed\":false,\"internalType\":\"bytes32\",\"name\":\"resourceID\",\"type\":\"bytes32\"},{\"indexed\":false,\"internalType\":\"uint64\",\"name\":\"depositNonce\",\"type\":\"uint64\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"user\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"bytes\",\"name\":\"data\",\"type\":\"bytes\"},{\"indexed\":false,\"internalType\":\"bytes\",\"name\":\"handlerResponse\",\"type\":\"bytes\"}],\"name\":\"Deposit\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"bytes\",\"name\":\"lowLevelData\",\"type\":\"bytes\"}],\"name\":\"FailedHandlerExecution\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"address\",\"name\":\"account\",\"type\":\"address\"}],\"name\":\"Paused\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"uint8\",\"name\":\"originDomainID\",\"type\":\"uint8\"},{\"indexed\":false,\"internalType\":\"uint64\",\"name\":\"depositNonce\",\"type\":\"uint64\"},{\"indexed\":false,\"internalType\":\"enum Bridge.ProposalStatus\",\"name\":\"status\",\"type\":\"uint8\"},{\"indexed\":false,\"internalType\":\"bytes32\",\"name\":\"dataHash\",\"type\":\"bytes32\"}],\"name\":\"ProposalEvent\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"uint8\",\"name\":\"originDomainID\",\"type\":\"uint8\"},{\"indexed\":false,\"internalType\":\"uint64\",\"name\":\"depositNonce\",\"type\":\"uint64\"},{\"indexed\":false,\"internalType\":\"enum Bridge.ProposalStatus\",\"name\":\"status\",\"type\":\"uint8\"},{\"indexed\":false,\"internalType\":\"bytes32\",\"name\":\"dataHash\",\"type\":\"bytes32\"}],\"name\":\"ProposalVote\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"address\",\"name\":\"relayer\",\"type\":\"address\"}],\"name\":\"RelayerAdded\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"address\",\"name\":\"relayer\",\"type\":\"address\"}],\"name\":\"RelayerRemoved\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"newThreshold\",\"type\":\"uint256\"}],\"name\":\"RelayerThresholdChanged\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"bytes32\",\"name\":\"role\",\"type\":\"bytes32\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"account\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"sender\",\"type\":\"address\"}],\"name\":\"RoleGranted\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"bytes32\",\"name\":\"role\",\"type\":\"bytes32\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"account\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"sender\",\"type\":\"address\"}],\"name\":\"RoleRevoked\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"address\",\"name\":\"account\",\"type\":\"address\"}],\"name\":\"Unpaused\",\"type\":\"event\"},{\"inputs\":[],\"name\":\"DEFAULT_ADMIN_ROLE\",\"outputs\":[{\"internalType\":\"bytes32\",\"name\":\"\",\"type\":\"bytes32\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"MAX_RELAYERS\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"RELAYER_ROLE\",\"outputs\":[{\"internalType\":\"bytes32\",\"name\":\"\",\"type\":\"bytes32\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint8\",\"name\":\"\",\"type\":\"uint8\"}],\"name\":\"_depositCounts\",\"outputs\":[{\"internalType\":\"uint64\",\"name\":\"\",\"type\":\"uint64\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"_domainID\",\"outputs\":[{\"internalType\":\"uint8\",\"name\":\"\",\"type\":\"uint8\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"_expiry\",\"outputs\":[{\"internalType\":\"uint40\",\"name\":\"\",\"type\":\"uint40\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"_fee\",\"outputs\":[{\"internalType\":\"uint128\",\"name\":\"\",\"type\":\"uint128\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"_relayerThreshold\",\"outputs\":[{\"internalType\":\"uint8\",\"name\":\"\",\"type\":\"uint8\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes32\",\"name\":\"\",\"type\":\"bytes32\"}],\"name\":\"_resourceIDToHandlerAddress\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes32\",\"name\":\"role\",\"type\":\"bytes32\"}],\"name\":\"getRoleAdmin\",\"outputs\":[{\"internalType\":\"bytes32\",\"name\":\"\",\"type\":\"bytes32\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes32\",\"name\":\"role\",\"type\":\"bytes32\"},{\"internalType\":\"uint256\",\"name\":\"index\",\"type\":\"uint256\"}],\"name\":\"getRoleMember\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes32\",\"name\":\"role\",\"type\":\"bytes32\"}],\"name\":\"getRoleMemberCount\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes32\",\"name\":\"role\",\"type\":\"bytes32\"},{\"internalType\":\"address\",\"name\":\"account\",\"type\":\"address\"}],\"name\":\"getRoleMemberIndex\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes32\",\"name\":\"role\",\"type\":\"bytes32\"},{\"internalType\":\"address\",\"name\":\"account\",\"type\":\"address\"}],\"name\":\"grantRole\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes32\",\"name\":\"role\",\"type\":\"bytes32\"},{\"internalType\":\"address\",\"name\":\"account\",\"type\":\"address\"}],\"name\":\"hasRole\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"paused\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes32\",\"name\":\"role\",\"type\":\"bytes32\"},{\"internalType\":\"address\",\"name\":\"account\",\"type\":\"address\"}],\"name\":\"renounceRole\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes32\",\"name\":\"role\",\"type\":\"bytes32\"},{\"internalType\":\"address\",\"name\":\"account\",\"type\":\"address\"}],\"name\":\"revokeRole\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint72\",\"name\":\"destNonce\",\"type\":\"uint72\"},{\"internalType\":\"bytes32\",\"name\":\"dataHash\",\"type\":\"bytes32\"},{\"internalType\":\"address\",\"name\":\"relayer\",\"type\":\"address\"}],\"name\":\"_hasVotedOnProposal\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"relayer\",\"type\":\"address\"}],\"name\":\"isRelayer\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"newAdmin\",\"type\":\"address\"}],\"name\":\"renounceAdmin\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"adminPauseTransfers\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"adminUnpauseTransfers\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"newThreshold\",\"type\":\"uint256\"}],\"name\":\"adminChangeRelayerThreshold\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"relayerAddress\",\"type\":\"address\"}],\"name\":\"adminAddRelayer\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"relayerAddress\",\"type\":\"address\"}],\"name\":\"adminRemoveRelayer\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"handlerAddress\",\"type\":\"address\"},{\"internalType\":\"bytes32\",\"name\":\"resourceID\",\"type\":\"bytes32\"},{\"internalType\":\"address\",\"name\":\"tokenAddress\",\"type\":\"address\"}],\"name\":\"adminSetResource\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"handlerAddress\",\"type\":\"address\"},{\"internalType\":\"bytes32\",\"name\":\"resourceID\",\"type\":\"bytes32\"},{\"internalType\":\"address\",\"name\":\"contractAddress\",\"type\":\"address\"},{\"internalType\":\"bytes4\",\"name\":\"depositFunctionSig\",\"type\":\"bytes4\"},{\"internalType\":\"uint256\",\"name\":\"depositFunctionDepositerOffset\",\"type\":\"uint256\"},{\"internalType\":\"bytes4\",\"name\":\"executeFunctionSig\",\"type\":\"bytes4\"}],\"name\":\"adminSetGenericResource\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"handlerAddress\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"tokenAddress\",\"type\":\"address\"}],\"name\":\"adminSetBurnable\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint8\",\"name\":\"domainID\",\"type\":\"uint8\"},{\"internalType\":\"uint64\",\"name\":\"nonce\",\"type\":\"uint64\"}],\"name\":\"adminSetDepositNonce\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint8\",\"name\":\"originDomainID\",\"type\":\"uint8\"},{\"internalType\":\"uint64\",\"name\":\"depositNonce\",\"type\":\"uint64\"},{\"internalType\":\"bytes32\",\"name\":\"dataHash\",\"type\":\"bytes32\"}],\"name\":\"getProposal\",\"outputs\":[{\"components\":[{\"internalType\":\"enum Bridge.ProposalStatus\",\"name\":\"_status\",\"type\":\"uint8\"},{\"internalType\":\"uint200\",\"name\":\"_yesVotes\",\"type\":\"uint200\"},{\"internalType\":\"uint8\",\"name\":\"_yesVotesTotal\",\"type\":\"uint8\"},{\"internalType\":\"uint40\",\"name\":\"_proposedBlock\",\"type\":\"uint40\"}],\"internalType\":\"struct Bridge.Proposal\",\"name\":\"\",\"type\":\"tuple\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"_totalRelayers\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"newFee\",\"type\":\"uint256\"}],\"name\":\"adminChangeFee\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"handlerAddress\",\"type\":\"address\"},{\"internalType\":\"bytes\",\"name\":\"data\",\"type\":\"bytes\"}],\"name\":\"adminWithdraw\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint8\",\"name\":\"destinationDomainID\",\"type\":\"uint8\"},{\"internalType\":\"bytes32\",\"name\":\"resourceID\",\"type\":\"bytes32\"},{\"internalType\":\"bytes\",\"name\":\"data\",\"type\":\"bytes\"}],\"name\":\"deposit\",\"outputs\":[],\"stateMutability\":\"payable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint8\",\"name\":\"domainID\",\"type\":\"uint8\"},{\"internalType\":\"uint64\",\"name\":\"depositNonce\",\"type\":\"uint64\"},{\"internalType\":\"bytes32\",\"name\":\"resourceID\",\"type\":\"bytes32\"},{\"internalType\":\"bytes\",\"name\":\"data\",\"type\":\"bytes\"}],\"name\":\"voteProposal\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint8\",\"name\":\"domainID\",\"type\":\"uint8\"},{\"internalType\":\"uint64\",\"name\":\"depositNonce\",\"type\":\"uint64\"},{\"internalType\":\"bytes32\",\"name\":\"dataHash\",\"type\":\"bytes32\"}],\"name\":\"cancelProposal\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint8\",\"name\":\"domainID\",\"type\":\"uint8\"},{\"internalType\":\"uint64\",\"name\":\"depositNonce\",\"type\":\"uint64\"},{\"internalType\":\"bytes\",\"name\":\"data\",\"type\":\"bytes\"},{\"internalType\":\"bytes32\",\"name\":\"resourceID\",\"type\":\"bytes32\"},{\"internalType\":\"bool\",\"name\":\"revertOnFail\",\"type\":\"bool\"}],\"name\":\"executeProposal\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address payable[]\",\"name\":\"addrs\",\"type\":\"address[]\"},{\"internalType\":\"uint256[]\",\"name\":\"amounts\",\"type\":\"uint256[]\"}],\"name\":\"transferFunds\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"}]" +const BridgeBin = "60806040523480156200001157600080fd5b506040516200345a3803806200345a8339810160408190526200003491620003a3565b6000805460ff199081169091556002805490911660ff871617905562000066836200016d602090811b620019dd17901c565b600260016101000a81548160ff021916908360ff1602179055506200009682620001a060201b62001a041760201c565b6002806101000a8154816001600160801b0302191690836001600160801b03160217905550620000d181620001c860201b62001a291760201c565b6002805464ffffffffff92909216600160901b0264ffffffffff60901b1990921691909117905562000105600033620001f2565b60005b84518110156200016157620001587fe2b7fb3b832174769106daebcfd6d1970523240dda11281102db9363b83b0dc48683815181106200014457fe5b60200260200101516200020260201b60201c565b60010162000108565b505050505050620005cb565b600061010082106200019c5760405162461bcd60e51b815260040162000193906200053a565b60405180910390fd5b5090565b6000600160801b82106200019c5760405162461bcd60e51b81526004016200019390620004cc565b60006501000000000082106200019c5760405162461bcd60e51b8152600401620001939062000503565b620001fe828262000248565b5050565b600082815260016020526040902060020154620002299062000223620002c3565b620002c7565b620001f25760405162461bcd60e51b815260040162000193906200047d565b60008281526001602090815260409091206200026f91839062001a50620002f6821b17901c565b15620001fe576200027f620002c3565b6001600160a01b0316816001600160a01b0316837f2f8788117e7eff1d82e926ec794901d17c78024a50270940304540a733656f0d60405160405180910390a45050565b3390565b60008281526001602090815260408220620002ed91849062001a656200030d821b17901c565b90505b92915050565b6000620002ed836001600160a01b03841662000324565b6000620002ed836001600160a01b03841662000373565b600062000332838362000373565b6200036a57508154600181810184556000848152602080822090930184905584548482528286019093526040902091909155620002f0565b506000620002f0565b60009081526001919091016020526040902054151590565b80516001600160a01b0381168114620002f057600080fd5b600080600080600060a08688031215620003bb578081fd5b8551620003c881620005b8565b602087810151919650906001600160401b03811115620003e6578283fd5b8701601f81018913620003f7578283fd5b80516200040e620004088262000598565b62000571565b81815283810190838501858402850186018d10156200042b578687fd5b8694505b838510156200045957620004448d826200038b565b8352600194909401939185019185016200042f565b5060408b015160608c01516080909c01519a9d919c509a9998509650505050505050565b6020808252602f908201527f416363657373436f6e74726f6c3a2073656e646572206d75737420626520616e60408201526e0818591b5a5b881d1bc819dc985b9d608a1b606082015260800190565b6020808252601e908201527f76616c756520646f6573206e6f742066697420696e2031323820626974730000604082015260600190565b6020808252601d908201527f76616c756520646f6573206e6f742066697420696e2034302062697473000000604082015260600190565b6020808252601c908201527f76616c756520646f6573206e6f742066697420696e2038206269747300000000604082015260600190565b6040518181016001600160401b03811182821017156200059057600080fd5b604052919050565b60006001600160401b03821115620005ae578081fd5b5060209081020190565b60ff81168114620005c857600080fd5b50565b612e7f80620005db6000396000f3fe6080604052600436106102305760003560e01c80639010d07c1161012e578063c0331b3e116100ab578063cdb0f73a1161006f578063cdb0f73a14610678578063d547741f14610698578063d7a9cd79146106b8578063edc20c3c146106cd578063ffaac0eb146106ed57610230565b8063c0331b3e146105d4578063c5b37c22146105f4578063c5ec897014610616578063ca15c87314610638578063cb10f2151461065857610230565b80639dd694f4116100f25780639dd694f41461053b5780639debb3bd1461055d578063a217fddf14610572578063a9cf69fa14610587578063bd2a1820146105b457610230565b80639010d07c146104a657806391c404ac146104c657806391d14854146104e6578063926d7d7f146105065780639d82dd631461051b57610230565b80634e0df3f6116101bc5780637febe63f116101805780637febe63f1461040f578063802aabe81461042f57806380ae1c281461044457806384db809f146104595780638c0c26311461048657610230565b80634e0df3f61461036d578063541d55481461038d5780635a1ad87c146103ba5780635c975abb146103da5780635e1fab0f146103ef57610230565b80632f2ff15d116102035780632f2ff15d146102c057806336568abe146102e05780634603ae38146103005780634b0b919d146103205780634e0560051461034d57610230565b806305e2ca171461023557806317f03ce51461024a578063206a98fd1461026a578063248a9ca31461028a575b600080fd5b61024861024336600461232b565b610702565b005b34801561025657600080fd5b506102486102653660046123a4565b610892565b34801561027657600080fd5b50610248610285366004612451565b610aae565b34801561029657600080fd5b506102aa6102a5366004612217565b610cfe565b6040516102b79190612568565b60405180910390f35b3480156102cc57600080fd5b506102486102db36600461222f565b610d13565b3480156102ec57600080fd5b506102486102fb36600461222f565b610d5b565b34801561030c57600080fd5b5061024861031b3660046121af565b610d9d565b34801561032c57600080fd5b5061034061033b366004612310565b610e2b565b6040516102b79190612c99565b34801561035957600080fd5b50610248610368366004612217565b610e46565b34801561037957600080fd5b506102aa61038836600461222f565b610eab565b34801561039957600080fd5b506103ad6103a836600461201f565b610ed7565b6040516102b7919061255d565b3480156103c657600080fd5b506102486103d53660046120b4565b610ef1565b3480156103e657600080fd5b506103ad610f8b565b3480156103fb57600080fd5b5061024861040a36600461201f565b610f94565b34801561041b57600080fd5b506103ad61042a3660046122e6565b610fde565b34801561043b57600080fd5b506102aa611076565b34801561045057600080fd5b50610248611094565b34801561046557600080fd5b50610479610474366004612217565b6110a6565b6040516102b79190612549565b34801561049257600080fd5b506102486104a136600461203b565b6110c1565b3480156104b257600080fd5b506104796104c1366004612253565b61112e565b3480156104d257600080fd5b506102486104e1366004612217565b61114d565b3480156104f257600080fd5b506103ad61050136600461222f565b6111b7565b34801561051257600080fd5b506102aa6111cf565b34801561052757600080fd5b5061024861053636600461201f565b6111e1565b34801561054757600080fd5b5061055061125c565b6040516102b79190612cad565b34801561056957600080fd5b506102aa611265565b34801561057e57600080fd5b506102aa61126a565b34801561059357600080fd5b506105a76105a23660046123a4565b61126f565b6040516102b79190612c28565b3480156105c057600080fd5b506102486105cf366004612123565b61131e565b3480156105e057600080fd5b506102486105ef3660046123e1565b611354565b34801561060057600080fd5b50610609611797565b6040516102b79190612c73565b34801561062257600080fd5b5061062b6117ac565b6040516102b79190612c87565b34801561064457600080fd5b506102aa610653366004612217565b6117c0565b34801561066457600080fd5b50610248610673366004612073565b6117d7565b34801561068457600080fd5b5061024861069336600461201f565b611868565b3480156106a457600080fd5b506102486106b336600461222f565b61190b565b3480156106c457600080fd5b50610550611945565b3480156106d957600080fd5b506102486106e8366004612377565b611953565b3480156106f957600080fd5b506102486119cd565b61070a611a7a565b6002546201000090046001600160801b031634146107435760405162461bcd60e51b815260040161073a9061281a565b60405180910390fd5b6000838152600460205260409020546001600160a01b0316806107785760405162461bcd60e51b815260040161073a906128b8565b60ff851660009081526003602052604090819020805467ffffffffffffffff19811660016001600160401b039283160191821617909155905163b07e54bb60e01b815282906060906001600160a01b0383169063b07e54bb906107e5908a9033908b908b90600401612588565b600060405180830381600087803b1580156107ff57600080fd5b505af1158015610813573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f1916820160405261083b9190810190612274565b9050336001600160a01b03167f17bc3181e17a9620a479c24e6c606e474ba84fc036877b768926872e8cd0e11f8989868a8a8760405161088096959493929190612cbb565b60405180910390a25050505050505050565b61089a611a9d565b68ffffffffffffffff00600883901b1660ff8416176108b7611f47565b6001600160481b0382166000908152600560209081526040808320868452909152908190208151608081019092528054829060ff1660048111156108f757fe5b600481111561090257fe5b8152905461010081046001600160c81b03166020830152600160d01b810460ff166040830152600160d81b900464ffffffffff166060909101528051909150600181600481111561094f57fe5b14806109665750600281600481111561096457fe5b145b6109825760405162461bcd60e51b815260040161073a9061284a565b600254606083015164ffffffffff600160901b9092048216916109a791439116611ae2565b64ffffffffff16116109cb5760405162461bcd60e51b815260040161073a906129a9565b60048083526001600160481b03841660009081526005602090815260408083208884529091529020835181548593839160ff1916906001908490811115610a0e57fe5b02179055506020820151815460408085015160609095015164ffffffffff16600160d81b026001600160d81b0360ff909616600160d01b0260ff60d01b196001600160c81b0390951661010002610100600160d01b03199094169390931793909316919091179390931617905551600080516020612e0a83398151915290610a9e90889088906004908990612d0c565b60405180910390a1505050505050565b610ab6611b24565b610abe611a7a565b60008281526004602090815260408083205490516001600160a01b039091169268ffffffffffffffff0060088a901b1660ff8b1617929091610b069185918a918a910161251d565b60408051601f1981840301815291815281516020928301206001600160481b03851660009081526005845282812082825290935291209091506002815460ff166004811115610b5157fe5b14610b6e5760405162461bcd60e51b815260040161073a90612974565b805460ff19166003178155838515610be75760405163712467f960e11b81526001600160a01b0382169063e248cff290610bb0908a908d908d906004016125f3565b600060405180830381600087803b158015610bca57600080fd5b505af1158015610bde573d6000803e3d6000fd5b50505050610cc4565b60405163712467f960e11b81526001600160a01b0382169063e248cff290610c17908a908d908d906004016125f3565b600060405180830381600087803b158015610c3157600080fd5b505af1925050508015610c42575060015b610cc4573d808015610c70576040519150601f19603f3d011682016040523d82523d6000602084013e610c75565b606091505b50825460ff191660021783556040517fbd37c1f0d53bb2f33fe4c2104de272fcdeb4d2fef3acdbf1e4ddc3d6833ca37690610cb190839061260d565b60405180910390a1505050505050610cf6565b600080516020612e0a8339815191528b8b600386604051610ce89493929190612d0c565b60405180910390a150505050505b505050505050565b60009081526001602052604090206002015490565b600082815260016020526040902060020154610d3190610501611b58565b610d4d5760405162461bcd60e51b815260040161073a90612699565b610d578282611b5c565b5050565b610d63611b58565b6001600160a01b0316816001600160a01b031614610d935760405162461bcd60e51b815260040161073a90612bd9565b610d578282611bc5565b610da5611c2e565b60005b83811015610e2457848482818110610dbc57fe5b9050602002016020810190610dd1919061201f565b6001600160a01b03166108fc848484818110610de957fe5b905060200201359081150290604051600060405180830381858888f19350505050158015610e1b573d6000803e3d6000fd5b50600101610da8565b5050505050565b6003602052600090815260409020546001600160401b031681565b610e4e611c2e565b610e57816119dd565b600260016101000a81548160ff021916908360ff1602179055507fa20d6b84cd798a24038be305eff8a45ca82ef54a2aa2082005d8e14c0a4746c881604051610ea09190612568565b60405180910390a150565b60008281526001602081815260408084206001600160a01b038616855290920190529020545b92915050565b6000610ed1600080516020612e2a833981519152836111b7565b610ef9611c2e565b60008581526004602081905260409182902080546001600160a01b0319166001600160a01b038a16908117909155915163de319d9960e01b815288929163de319d9991610f50918a918a918a918a918a91016125bd565b600060405180830381600087803b158015610f6a57600080fd5b505af1158015610f7e573d6000803e3d6000fd5b5050505050505050505050565b60005460ff1690565b610f9c611c2e565b336001600160a01b0382161415610fc55760405162461bcd60e51b815260040161073a90612a85565b610fd0600082610d13565b610fdb600033610d5b565b50565b6001600160481b0383166000908152600560209081526040808320858452909152808220815160808101909252805461106e929190829060ff16600481111561102357fe5b600481111561102e57fe5b8152905461010081046001600160c81b03166020830152600160d01b810460ff166040830152600160d81b900464ffffffffff1660609091015283611c55565b949350505050565b600061108f600080516020612e2a8339815191526117c0565b905090565b61109c611c2e565b6110a4611c78565b565b6004602052600090815260409020546001600160a01b031681565b6110c9611c2e565b6040516307b7ed9960e01b815282906001600160a01b038216906307b7ed99906110f7908590600401612549565b600060405180830381600087803b15801561111157600080fd5b505af1158015611125573d6000803e3d6000fd5b50505050505050565b60008281526001602052604081206111469083611cc7565b9392505050565b611155611c2e565b6002546201000090046001600160801b03168114156111865760405162461bcd60e51b815260040161073a90612b28565b61118f81611a04565b6002806101000a8154816001600160801b0302191690836001600160801b0316021790555050565b60008281526001602052604081206111469083611a65565b600080516020612e2a83398151915281565b6111f9600080516020612e2a833981519152826111b7565b6112155760405162461bcd60e51b815260040161073a90612745565b61122d600080516020612e2a8339815191528261190b565b7f10e1f7ce9fd7d1b90a66d13a2ab3cb8dd7f29f3f8d520b143b063ccfbab6906b81604051610ea09190612549565b60025460ff1681565b60c881565b600081565b611277611f47565b6001600160481b0360ff858116600886901b68ffffffffffffffff00161791821660009081526005602090815260408083208784529091529081902081516080810190925280549192909183911660048111156112d057fe5b60048111156112db57fe5b8152905461010081046001600160c81b03166020830152600160d01b810460ff166040830152600160d81b900464ffffffffff1660609091015295945050505050565b611326611c2e565b60405163025a3c9960e21b815282906001600160a01b03821690630968f264906110f790859060040161260d565b61135c611b24565b611364611a7a565b60008381526004602090815260408083205490516001600160a01b039091169268ffffffffffffffff00600889901b1660ff8a16179290916113ac918591889188910161251d565b6040516020818303038152906040528051906020012090506113cc611f47565b6001600160481b0383166000908152600560209081526040808320858452909152908190208151608081019092528054829060ff16600481111561140c57fe5b600481111561141757fe5b8152905461010081046001600160c81b0316602080840191909152600160d01b820460ff16604080850191909152600160d81b90920464ffffffffff1660609093019290925260008a815260049092529020549091506001600160a01b03166114925760405162461bcd60e51b815260040161073a90612b5f565b6002815160048111156114a157fe5b14156114bf576114b6898988888b6001610aae565b50505050610e24565b805160019060048111156114cf57fe5b11156114ed5760405162461bcd60e51b815260040161073a90612b96565b6114f78133611c55565b156115145760405162461bcd60e51b815260040161073a906126e8565b60008151600481111561152357fe5b141561158457506040805160808101825260018082526000602083018190528284015264ffffffffff4316606083015291519091600080516020612e0a83398151915291611577918c918c91908790612d0c565b60405180910390a16115e6565b600254606082015164ffffffffff600160901b9092048216916115a991439116611ae2565b64ffffffffff1611156115e6576004808252604051600080516020612e0a833981519152916115dd918c918c918790612d0c565b60405180910390a15b6004815160048111156115f557fe5b146116bd5761161a61160633611cd3565b82602001516001600160c81b031617611d01565b6001600160c81b031660208201526040808201805160010160ff169052815190517f25f8daaa4635a7729927ba3f5b3d59cc3320aca7c32c9db4e7ca7b95743436409161166c918c918c918790612d0c565b60405180910390a1600254604082015160ff61010090920482169116106116bd576002808252604051600080516020612e0a833981519152916116b4918c918c918790612d0c565b60405180910390a15b6001600160481b038316600090815260056020908152604080832085845290915290208151815483929190829060ff191660018360048111156116fc57fe5b021790555060208201518154604084015160609094015164ffffffffff16600160d81b026001600160d81b0360ff909516600160d01b0260ff60d01b196001600160c81b0390941661010002610100600160d01b03199093169290921792909216179290921691909117905560028151600481111561177757fe5b141561178c5761178c898988888b6000610aae565b505050505050505050565b6002546201000090046001600160801b031681565b600254600160901b900464ffffffffff1681565b6000818152600160205260408120610ed190611d26565b6117df611c2e565b60008281526004602081905260409182902080546001600160a01b0319166001600160a01b0387169081179091559151635c7d1b9b60e11b815285929163b8fa373691611830918791879101612571565b600060405180830381600087803b15801561184a57600080fd5b505af115801561185e573d6000803e3d6000fd5b5050505050505050565b611880600080516020612e2a833981519152826111b7565b1561189d5760405162461bcd60e51b815260040161073a90612a4e565b60c86118a7611076565b106118c45760405162461bcd60e51b815260040161073a906127ea565b6118dc600080516020612e2a83398151915282610d13565b7f03580ee9f53a62b7cb409a2cb56f9be87747dd15017afc5cef6eef321e4fb2c581604051610ea09190612549565b60008281526001602052604090206002015461192990610501611b58565b610d935760405162461bcd60e51b815260040161073a90612924565b600254610100900460ff1681565b61195b611c2e565b60ff82166000908152600360205260409020546001600160401b03908116908216116119995760405162461bcd60e51b815260040161073a90612a08565b60ff919091166000908152600360205260409020805467ffffffffffffffff19166001600160401b03909216919091179055565b6119d5611c2e565b6110a4611d31565b60006101008210611a005760405162461bcd60e51b815260040161073a90612881565b5090565b6000600160801b8210611a005760405162461bcd60e51b815260040161073a9061277c565b6000650100000000008210611a005760405162461bcd60e51b815260040161073a906127b3565b6000611146836001600160a01b038416611d73565b6000611146836001600160a01b038416611dbd565b60005460ff16156110a45760405162461bcd60e51b815260040161073a906129de565b611aa86000336111b7565b80611ac65750611ac6600080516020612e2a833981519152336111b7565b6110a45760405162461bcd60e51b815260040161073a90612662565b600061114683836040518060400160405280601e81526020017f536166654d6174683a207375627472616374696f6e206f766572666c6f770000815250611dd5565b611b3c600080516020612e2a833981519152336111b7565b6110a45760405162461bcd60e51b815260040161073a90612abc565b3390565b6000828152600160205260409020611b749082611a50565b15610d5757611b81611b58565b6001600160a01b0316816001600160a01b0316837f2f8788117e7eff1d82e926ec794901d17c78024a50270940304540a733656f0d60405160405180910390a45050565b6000828152600160205260409020611bdd9082611e01565b15610d5757611bea611b58565b6001600160a01b0316816001600160a01b0316837ff6391f5c32d9c69d2a47ea670b442974b53935d1edc7fd64eb21e047a839171b60405160405180910390a45050565b611c396000336111b7565b6110a45760405162461bcd60e51b815260040161073a90612af1565b60008083602001516001600160c81b0316611c6f84611cd3565b16119392505050565b611c80611a7a565b6000805460ff191660011790556040517f62e78cea01bee320cd4e420270b5ea74000d11b0c9f74754ebdbfc544b05a25890611cbd903390612549565b60405180910390a1565b60006111468383611e16565b6000611cf7611cf0600080516020612e2a83398151915284610eab565b6001611ae2565b6001901b92915050565b6000600160c81b8210611a005760405162461bcd60e51b815260040161073a906128ed565b6000610ed182611e5b565b611d39611e5f565b6000805460ff191690556040517f5db9ee0a495bf2e6ff9c91a7834c1ba4fdd244a5e8aa4e537bd38aeae4b073aa90611cbd903390612549565b6000611d7f8383611dbd565b611db557508154600181810184556000848152602080822090930184905584548482528286019093526040902091909155610ed1565b506000610ed1565b60009081526001919091016020526040902054151590565b60008184841115611df95760405162461bcd60e51b815260040161073a919061260d565b505050900390565b6000611146836001600160a01b038416611e81565b81546000908210611e395760405162461bcd60e51b815260040161073a90612620565b826000018281548110611e4857fe5b9060005260206000200154905092915050565b5490565b60005460ff166110a45760405162461bcd60e51b815260040161073a90612717565b60008181526001830160205260408120548015611f3d5783546000198083019190810190600090879083908110611eb457fe5b9060005260206000200154905080876000018481548110611ed157fe5b600091825260208083209091019290925582815260018981019092526040902090840190558654879080611f0157fe5b60019003818190600052602060002001600090559055866001016000878152602001908152602001600020600090556001945050505050610ed1565b6000915050610ed1565b604080516080810190915280600081526000602082018190526040820181905260609091015290565b60008083601f840112611f81578182fd5b5081356001600160401b03811115611f97578182fd5b6020830191508360208083028501011115611fb157600080fd5b9250929050565b60008083601f840112611fc9578182fd5b5081356001600160401b03811115611fdf578182fd5b602083019150836020828501011115611fb157600080fd5b80356001600160401b0381168114610ed157600080fd5b803560ff81168114610ed157600080fd5b600060208284031215612030578081fd5b813561114681612dba565b6000806040838503121561204d578081fd5b823561205881612dba565b9150602083013561206881612dba565b809150509250929050565b600080600060608486031215612087578081fd5b833561209281612dba565b92506020840135915060408401356120a981612dba565b809150509250925092565b60008060008060008060c087890312156120cc578182fd5b86356120d781612dba565b95506020870135945060408701356120ee81612dba565b935060608701356120fe81612dcf565b92506080870135915060a087013561211581612dcf565b809150509295509295509295565b60008060408385031215612135578182fd5b823561214081612dba565b915060208301356001600160401b0381111561215a578182fd5b8301601f8101851361216a578182fd5b803561217d61217882612d67565b612d41565b818152866020838501011115612191578384fd5b81602084016020830137908101602001929092525090939092509050565b600080600080604085870312156121c4578384fd5b84356001600160401b03808211156121da578586fd5b6121e688838901611f70565b909650945060208701359150808211156121fe578384fd5b5061220b87828801611f70565b95989497509550505050565b600060208284031215612228578081fd5b5035919050565b60008060408385031215612241578182fd5b82359150602083013561206881612dba565b60008060408385031215612265578182fd5b50508035926020909101359150565b600060208284031215612285578081fd5b81516001600160401b0381111561229a578182fd5b8201601f810184136122aa578182fd5b80516122b861217882612d67565b8181528560208385010111156122cc578384fd5b6122dd826020830160208601612d8a565b95945050505050565b6000806000606084860312156122fa578081fd5b83356001600160481b0381168114612092578182fd5b600060208284031215612321578081fd5b611146838361200e565b60008060008060608587031215612340578182fd5b61234a868661200e565b93506020850135925060408501356001600160401b0381111561236b578283fd5b61220b87828801611fb8565b60008060408385031215612389578182fd5b823561239481612dfa565b9150602083013561206881612de5565b6000806000606084860312156123b8578081fd5b6123c2858561200e565b92506123d18560208601611ff7565b9150604084013590509250925092565b6000806000806000608086880312156123f8578283fd5b853561240381612dfa565b9450602086013561241381612de5565b93506040860135925060608601356001600160401b03811115612434578182fd5b61244088828901611fb8565b969995985093965092949392505050565b60008060008060008060a08789031215612469578384fd5b612473888861200e565b95506124828860208901611ff7565b945060408701356001600160401b0381111561249c578485fd5b6124a889828a01611fb8565b9095509350506060870135915060808701358015158114612115578182fd5b60008284528282602086013780602084860101526020601f19601f85011685010190509392505050565b60008151808452612509816020860160208601612d8a565b601f01601f19169290920160200192915050565b60006bffffffffffffffffffffffff198560601b16825282846014840137910160140190815292915050565b6001600160a01b0391909116815260200190565b901515815260200190565b90815260200190565b9182526001600160a01b0316602082015260400190565b8481526001600160a01b03841660208201526060604082018190526000906125b390830184866124c7565b9695505050505050565b9485526001600160a01b039390931660208501526001600160e01b03199182166040850152606084015216608082015260a00190565b6000848252604060208301526122dd6040830184866124c7565b60006020825261114660208301846124f1565b60208082526022908201527f456e756d657261626c655365743a20696e646578206f7574206f6620626f756e604082015261647360f01b606082015260800190565b6020808252601e908201527f73656e646572206973206e6f742072656c61796572206f722061646d696e0000604082015260600190565b6020808252602f908201527f416363657373436f6e74726f6c3a2073656e646572206d75737420626520616e60408201526e0818591b5a5b881d1bc819dc985b9d608a1b606082015260800190565b6020808252601590820152741c995b185e595c88185b1c9958591e481d9bdd1959605a1b604082015260600190565b60208082526014908201527314185d5cd8589b194e881b9bdd081c185d5cd95960621b604082015260600190565b6020808252601f908201527f6164647220646f65736e277420686176652072656c6179657220726f6c652100604082015260600190565b6020808252601e908201527f76616c756520646f6573206e6f742066697420696e2031323820626974730000604082015260600190565b6020808252601d908201527f76616c756520646f6573206e6f742066697420696e2034302062697473000000604082015260600190565b6020808252601690820152751c995b185e595c9cc81b1a5b5a5d081c995858da195960521b604082015260600190565b602080825260169082015275125b98dbdc9c9958dd08199959481cdd5c1c1b1a595960521b604082015260600190565b6020808252601c908201527f50726f706f73616c2063616e6e6f742062652063616e63656c6c656400000000604082015260600190565b6020808252601c908201527f76616c756520646f6573206e6f742066697420696e2038206269747300000000604082015260600190565b6020808252818101527f7265736f757263654944206e6f74206d617070656420746f2068616e646c6572604082015260600190565b6020808252601e908201527f76616c756520646f6573206e6f742066697420696e2032303020626974730000604082015260600190565b60208082526030908201527f416363657373436f6e74726f6c3a2073656e646572206d75737420626520616e60408201526f2061646d696e20746f207265766f6b6560801b606082015260800190565b6020808252818101527f50726f706f73616c206d75737420686176652050617373656420737461747573604082015260600190565b6020808252818101527f50726f706f73616c206e6f7420617420657870697279207468726573686f6c64604082015260600190565b60208082526010908201526f14185d5cd8589b194e881c185d5cd95960821b604082015260600190565b60208082526026908201527f446f6573206e6f7420616c6c6f772064656372656d656e7473206f6620746865604082015265206e6f6e636560d01b606082015260800190565b6020808252601e908201527f6164647220616c7265616479206861732072656c6179657220726f6c65210000604082015260600190565b60208082526017908201527f43616e6e6f742072656e6f756e6365206f6e6573656c66000000000000000000604082015260600190565b6020808252818101527f73656e64657220646f65736e277420686176652072656c6179657220726f6c65604082015260600190565b6020808252601e908201527f73656e64657220646f65736e277420686176652061646d696e20726f6c650000604082015260600190565b6020808252601f908201527f43757272656e742066656520697320657175616c20746f206e65772066656500604082015260600190565b60208082526019908201527f6e6f2068616e646c657220666f72207265736f75726365494400000000000000604082015260600190565b60208082526023908201527f70726f706f73616c20616c72656164792065786563757465642f63616e63656c6040820152621b195960ea1b606082015260800190565b6020808252602f908201527f416363657373436f6e74726f6c3a2063616e206f6e6c792072656e6f756e636560408201526e103937b632b9903337b91039b2b63360891b606082015260800190565b8151608082019060058110612c3957fe5b82526020838101516001600160c81b03169083015260408084015160ff169083015260609283015164ffffffffff16929091019190915290565b6001600160801b0391909116815260200190565b64ffffffffff91909116815260200190565b6001600160401b0391909116815260200190565b60ff91909116815260200190565b600060ff881682528660208301526001600160401b038616604083015260a06060830152612ced60a0830185876124c7565b8281036080840152612cff81856124f1565b9998505050505050505050565b60ff851681526001600160401b03841660208201526080810160058410612d2f57fe5b60408201939093526060015292915050565b6040518181016001600160401b0381118282101715612d5f57600080fd5b604052919050565b60006001600160401b03821115612d7c578081fd5b50601f01601f191660200190565b60005b83811015612da5578181015183820152602001612d8d565b83811115612db4576000848401525b50505050565b6001600160a01b0381168114610fdb57600080fd5b6001600160e01b031981168114610fdb57600080fd5b6001600160401b0381168114610fdb57600080fd5b60ff81168114610fdb57600080fdfe968626a768e76ba1363efe44e322a6c4900c5f084e0b45f35e294dfddaa9e0d5e2b7fb3b832174769106daebcfd6d1970523240dda11281102db9363b83b0dc4a264697066735822122082ad76827d98d4068f1623241361f4bd0fd6311c59f11aad4c0afd1db434351264736f6c634300060c0033" const ERC20PresetMinterPauserABI = "[{\"inputs\":[{\"internalType\":\"string\",\"name\":\"name\",\"type\":\"string\"},{\"internalType\":\"string\",\"name\":\"symbol\",\"type\":\"string\"}],\"stateMutability\":\"nonpayable\",\"type\":\"constructor\",\"constant\":false},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"owner\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"spender\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"value\",\"type\":\"uint256\"}],\"name\":\"Approval\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"address\",\"name\":\"account\",\"type\":\"address\"}],\"name\":\"Paused\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"bytes32\",\"name\":\"role\",\"type\":\"bytes32\"},{\"indexed\":true,\"internalType\":\"bytes32\",\"name\":\"previousAdminRole\",\"type\":\"bytes32\"},{\"indexed\":true,\"internalType\":\"bytes32\",\"name\":\"newAdminRole\",\"type\":\"bytes32\"}],\"name\":\"RoleAdminChanged\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"bytes32\",\"name\":\"role\",\"type\":\"bytes32\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"account\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"sender\",\"type\":\"address\"}],\"name\":\"RoleGranted\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"bytes32\",\"name\":\"role\",\"type\":\"bytes32\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"account\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"sender\",\"type\":\"address\"}],\"name\":\"RoleRevoked\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"from\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"to\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"value\",\"type\":\"uint256\"}],\"name\":\"Transfer\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"address\",\"name\":\"account\",\"type\":\"address\"}],\"name\":\"Unpaused\",\"type\":\"event\"},{\"inputs\":[],\"name\":\"DEFAULT_ADMIN_ROLE\",\"outputs\":[{\"internalType\":\"bytes32\",\"name\":\"\",\"type\":\"bytes32\"}],\"stateMutability\":\"view\",\"type\":\"function\",\"constant\":true},{\"inputs\":[],\"name\":\"MINTER_ROLE\",\"outputs\":[{\"internalType\":\"bytes32\",\"name\":\"\",\"type\":\"bytes32\"}],\"stateMutability\":\"view\",\"type\":\"function\",\"constant\":true},{\"inputs\":[],\"name\":\"PAUSER_ROLE\",\"outputs\":[{\"internalType\":\"bytes32\",\"name\":\"\",\"type\":\"bytes32\"}],\"stateMutability\":\"view\",\"type\":\"function\",\"constant\":true},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"owner\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"spender\",\"type\":\"address\"}],\"name\":\"allowance\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\",\"constant\":true},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"spender\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"amount\",\"type\":\"uint256\"}],\"name\":\"approve\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\",\"constant\":false},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"account\",\"type\":\"address\"}],\"name\":\"balanceOf\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\",\"constant\":true},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"amount\",\"type\":\"uint256\"}],\"name\":\"burn\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\",\"constant\":false},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"account\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"amount\",\"type\":\"uint256\"}],\"name\":\"burnFrom\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\",\"constant\":false},{\"inputs\":[],\"name\":\"decimals\",\"outputs\":[{\"internalType\":\"uint8\",\"name\":\"\",\"type\":\"uint8\"}],\"stateMutability\":\"view\",\"type\":\"function\",\"constant\":true},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"spender\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"subtractedValue\",\"type\":\"uint256\"}],\"name\":\"decreaseAllowance\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\",\"constant\":false},{\"inputs\":[{\"internalType\":\"bytes32\",\"name\":\"role\",\"type\":\"bytes32\"}],\"name\":\"getRoleAdmin\",\"outputs\":[{\"internalType\":\"bytes32\",\"name\":\"\",\"type\":\"bytes32\"}],\"stateMutability\":\"view\",\"type\":\"function\",\"constant\":true},{\"inputs\":[{\"internalType\":\"bytes32\",\"name\":\"role\",\"type\":\"bytes32\"},{\"internalType\":\"uint256\",\"name\":\"index\",\"type\":\"uint256\"}],\"name\":\"getRoleMember\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\",\"constant\":true},{\"inputs\":[{\"internalType\":\"bytes32\",\"name\":\"role\",\"type\":\"bytes32\"}],\"name\":\"getRoleMemberCount\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\",\"constant\":true},{\"inputs\":[{\"internalType\":\"bytes32\",\"name\":\"role\",\"type\":\"bytes32\"},{\"internalType\":\"address\",\"name\":\"account\",\"type\":\"address\"}],\"name\":\"grantRole\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\",\"constant\":false},{\"inputs\":[{\"internalType\":\"bytes32\",\"name\":\"role\",\"type\":\"bytes32\"},{\"internalType\":\"address\",\"name\":\"account\",\"type\":\"address\"}],\"name\":\"hasRole\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"view\",\"type\":\"function\",\"constant\":true},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"spender\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"addedValue\",\"type\":\"uint256\"}],\"name\":\"increaseAllowance\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\",\"constant\":false},{\"inputs\":[],\"name\":\"name\",\"outputs\":[{\"internalType\":\"string\",\"name\":\"\",\"type\":\"string\"}],\"stateMutability\":\"view\",\"type\":\"function\",\"constant\":true},{\"inputs\":[],\"name\":\"paused\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"view\",\"type\":\"function\",\"constant\":true},{\"inputs\":[{\"internalType\":\"bytes32\",\"name\":\"role\",\"type\":\"bytes32\"},{\"internalType\":\"address\",\"name\":\"account\",\"type\":\"address\"}],\"name\":\"renounceRole\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\",\"constant\":false},{\"inputs\":[{\"internalType\":\"bytes32\",\"name\":\"role\",\"type\":\"bytes32\"},{\"internalType\":\"address\",\"name\":\"account\",\"type\":\"address\"}],\"name\":\"revokeRole\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\",\"constant\":false},{\"inputs\":[],\"name\":\"symbol\",\"outputs\":[{\"internalType\":\"string\",\"name\":\"\",\"type\":\"string\"}],\"stateMutability\":\"view\",\"type\":\"function\",\"constant\":true},{\"inputs\":[],\"name\":\"totalSupply\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\",\"constant\":true},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"recipient\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"amount\",\"type\":\"uint256\"}],\"name\":\"transfer\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\",\"constant\":false},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"sender\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"recipient\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"amount\",\"type\":\"uint256\"}],\"name\":\"transferFrom\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\",\"constant\":false},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"to\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"amount\",\"type\":\"uint256\"}],\"name\":\"mint\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\",\"constant\":false},{\"inputs\":[],\"name\":\"pause\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\",\"constant\":false},{\"inputs\":[],\"name\":\"unpause\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\",\"constant\":false}]" const ERC20PresetMinterPauserBin = "0x60806040523480156200001157600080fd5b5060405162002c7b38038062002c7b833981810160405260408110156200003757600080fd5b81019080805160405193929190846401000000008211156200005857600080fd5b838201915060208201858111156200006f57600080fd5b82518660018202830111640100000000821117156200008d57600080fd5b8083526020830192505050908051906020019080838360005b83811015620000c3578082015181840152602081019050620000a6565b50505050905090810190601f168015620000f15780820380516001836020036101000a031916815260200191505b50604052602001805160405193929190846401000000008211156200011557600080fd5b838201915060208201858111156200012c57600080fd5b82518660018202830111640100000000821117156200014a57600080fd5b8083526020830192505050908051906020019080838360005b838110156200018057808201518184015260208101905062000163565b50505050905090810190601f168015620001ae5780820380516001836020036101000a031916815260200191505b5060405250505081818160049080519060200190620001cf92919062000490565b508060059080519060200190620001e892919062000490565b506012600660006101000a81548160ff021916908360ff16021790555050506000600660016101000a81548160ff021916908315150217905550620002466000801b6200023a620002fa60201b60201c565b6200030260201b60201c565b6200029c60405180807f4d494e5445525f524f4c45000000000000000000000000000000000000000000815250600b019050604051809103902062000290620002fa60201b60201c565b6200030260201b60201c565b620002f260405180807f5041555345525f524f4c45000000000000000000000000000000000000000000815250600b0190506040518091039020620002e6620002fa60201b60201c565b6200030260201b60201c565b50506200053f565b600033905090565b6200031482826200031860201b60201c565b5050565b6200034681600080858152602001908152602001600020600001620003bb60201b620020e21790919060201c565b15620003b7576200035c620002fa60201b60201c565b73ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff16837f2f8788117e7eff1d82e926ec794901d17c78024a50270940304540a733656f0d60405160405180910390a45b5050565b6000620003eb836000018373ffffffffffffffffffffffffffffffffffffffff1660001b620003f360201b60201c565b905092915050565b60006200040783836200046d60201b60201c565b6200046257826000018290806001815401808255809150506001900390600052602060002001600090919091909150558260000180549050836001016000848152602001908152602001600020819055506001905062000467565b600090505b92915050565b600080836001016000848152602001908152602001600020541415905092915050565b828054600181600116156101000203166002900490600052602060002090601f016020900481019282601f10620004d357805160ff191683800117855562000504565b8280016001018555821562000504579182015b8281111562000503578251825591602001919060010190620004e6565b5b50905062000513919062000517565b5090565b6200053c91905b80821115620005385760008160009055506001016200051e565b5090565b90565b61272c806200054f6000396000f3fe608060405234801561001057600080fd5b50600436106101a95760003560e01c806370a08231116100f9578063a457c2d711610097578063d539139311610071578063d539139314610888578063d547741f146108a6578063dd62ed3e146108f4578063e63ab1e91461096c576101a9565b8063a457c2d71461077a578063a9059cbb146107e0578063ca15c87314610846576101a9565b80639010d07c116100d35780639010d07c146105fb57806391d148541461067357806395d89b41146106d9578063a217fddf1461075c576101a9565b806370a082311461054b57806379cc6790146105a35780638456cb59146105f1576101a9565b8063313ce567116101665780633f4ba83a116101405780633f4ba83a146104a357806340c10f19146104ad57806342966c68146104fb5780635c975abb14610529576101a9565b8063313ce567146103cb57806336568abe146103ef578063395093511461043d576101a9565b806306fdde03146101ae578063095ea7b31461023157806318160ddd1461029757806323b872dd146102b5578063248a9ca31461033b5780632f2ff15d1461037d575b600080fd5b6101b661098a565b6040518080602001828103825283818151815260200191508051906020019080838360005b838110156101f65780820151818401526020810190506101db565b50505050905090810190601f1680156102235780820380516001836020036101000a031916815260200191505b509250505060405180910390f35b61027d6004803603604081101561024757600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff16906020019092919080359060200190929190505050610a2c565b604051808215151515815260200191505060405180910390f35b61029f610a4a565b6040518082815260200191505060405180910390f35b610321600480360360608110156102cb57600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190803573ffffffffffffffffffffffffffffffffffffffff16906020019092919080359060200190929190505050610a54565b604051808215151515815260200191505060405180910390f35b6103676004803603602081101561035157600080fd5b8101908080359060200190929190505050610b2d565b6040518082815260200191505060405180910390f35b6103c96004803603604081101561039357600080fd5b8101908080359060200190929190803573ffffffffffffffffffffffffffffffffffffffff169060200190929190505050610b4c565b005b6103d3610bd5565b604051808260ff1660ff16815260200191505060405180910390f35b61043b6004803603604081101561040557600080fd5b8101908080359060200190929190803573ffffffffffffffffffffffffffffffffffffffff169060200190929190505050610bec565b005b6104896004803603604081101561045357600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff16906020019092919080359060200190929190505050610c85565b604051808215151515815260200191505060405180910390f35b6104ab610d38565b005b6104f9600480360360408110156104c357600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff16906020019092919080359060200190929190505050610ddd565b005b6105276004803603602081101561051157600080fd5b8101908080359060200190929190505050610e86565b005b610531610e9a565b604051808215151515815260200191505060405180910390f35b61058d6004803603602081101561056157600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190505050610eb1565b6040518082815260200191505060405180910390f35b6105ef600480360360408110156105b957600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff16906020019092919080359060200190929190505050610efa565b005b6105f9610f5c565b005b6106316004803603604081101561061157600080fd5b810190808035906020019092919080359060200190929190505050611001565b604051808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390f35b6106bf6004803603604081101561068957600080fd5b8101908080359060200190929190803573ffffffffffffffffffffffffffffffffffffffff169060200190929190505050611032565b604051808215151515815260200191505060405180910390f35b6106e1611063565b6040518080602001828103825283818151815260200191508051906020019080838360005b83811015610721578082015181840152602081019050610706565b50505050905090810190601f16801561074e5780820380516001836020036101000a031916815260200191505b509250505060405180910390f35b610764611105565b6040518082815260200191505060405180910390f35b6107c66004803603604081101561079057600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff1690602001909291908035906020019092919050505061110c565b604051808215151515815260200191505060405180910390f35b61082c600480360360408110156107f657600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190803590602001909291905050506111d9565b604051808215151515815260200191505060405180910390f35b6108726004803603602081101561085c57600080fd5b81019080803590602001909291905050506111f7565b6040518082815260200191505060405180910390f35b61089061121d565b6040518082815260200191505060405180910390f35b6108f2600480360360408110156108bc57600080fd5b8101908080359060200190929190803573ffffffffffffffffffffffffffffffffffffffff169060200190929190505050611256565b005b6109566004803603604081101561090a57600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190803573ffffffffffffffffffffffffffffffffffffffff1690602001909291905050506112df565b6040518082815260200191505060405180910390f35b610974611366565b6040518082815260200191505060405180910390f35b606060048054600181600116156101000203166002900480601f016020809104026020016040519081016040528092919081815260200182805460018160011615610100020316600290048015610a225780601f106109f757610100808354040283529160200191610a22565b820191906000526020600020905b815481529060010190602001808311610a0557829003601f168201915b5050505050905090565b6000610a40610a3961139f565b84846113a7565b6001905092915050565b6000600354905090565b6000610a6184848461159e565b610b2284610a6d61139f565b610b1d8560405180606001604052806028815260200161255660289139600260008b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000206000610ad361139f565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020546118639092919063ffffffff16565b6113a7565b600190509392505050565b6000806000838152602001908152602001600020600201549050919050565b610b7260008084815260200190815260200160002060020154610b6d61139f565b611032565b610bc7576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252602f815260200180612454602f913960400191505060405180910390fd5b610bd18282611923565b5050565b6000600660009054906101000a900460ff16905090565b610bf461139f565b73ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff1614610c77576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252602f81526020018061269e602f913960400191505060405180910390fd5b610c8182826119b6565b5050565b6000610d2e610c9261139f565b84610d298560026000610ca361139f565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008973ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054611a4990919063ffffffff16565b6113a7565b6001905092915050565b610d7e60405180807f5041555345525f524f4c45000000000000000000000000000000000000000000815250600b0190506040518091039020610d7961139f565b611032565b610dd3576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260398152602001806124a56039913960400191505060405180910390fd5b610ddb611ad1565b565b610e2360405180807f4d494e5445525f524f4c45000000000000000000000000000000000000000000815250600b0190506040518091039020610e1e61139f565b611032565b610e78576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252603681526020018061257e6036913960400191505060405180910390fd5b610e828282611bda565b5050565b610e97610e9161139f565b82611da3565b50565b6000600660019054906101000a900460ff16905090565b6000600160008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020549050919050565b6000610f39826040518060600160405280602481526020016125b460249139610f2a86610f2561139f565b6112df565b6118639092919063ffffffff16565b9050610f4d83610f4761139f565b836113a7565b610f578383611da3565b505050565b610fa260405180807f5041555345525f524f4c45000000000000000000000000000000000000000000815250600b0190506040518091039020610f9d61139f565b611032565b610ff7576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260378152602001806126426037913960400191505060405180910390fd5b610fff611f69565b565b600061102a8260008086815260200190815260200160002060000161207390919063ffffffff16565b905092915050565b600061105b8260008086815260200190815260200160002060000161208d90919063ffffffff16565b905092915050565b606060058054600181600116156101000203166002900480601f0160208091040260200160405190810160405280929190818152602001828054600181600116156101000203166002900480156110fb5780601f106110d0576101008083540402835291602001916110fb565b820191906000526020600020905b8154815290600101906020018083116110de57829003601f168201915b5050505050905090565b6000801b81565b60006111cf61111961139f565b846111ca85604051806060016040528060258152602001612679602591396002600061114361139f565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008a73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020546118639092919063ffffffff16565b6113a7565b6001905092915050565b60006111ed6111e661139f565b848461159e565b6001905092915050565b60006112166000808481526020019081526020016000206000016120bd565b9050919050565b60405180807f4d494e5445525f524f4c45000000000000000000000000000000000000000000815250600b019050604051809103902081565b61127c6000808481526020019081526020016000206002015461127761139f565b611032565b6112d1576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260308152602001806125266030913960400191505060405180910390fd5b6112db82826119b6565b5050565b6000600260008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054905092915050565b60405180807f5041555345525f524f4c45000000000000000000000000000000000000000000815250600b019050604051809103902081565b600033905090565b600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff16141561142d576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252602481526020018061261e6024913960400191505060405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1614156114b3576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260228152602001806124de6022913960400191505060405180910390fd5b80600260008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508173ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925836040518082815260200191505060405180910390a3505050565b600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff161415611624576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260258152602001806125f96025913960400191505060405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1614156116aa576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260238152602001806124316023913960400191505060405180910390fd5b6116b58383836120d2565b6117218160405180606001604052806026815260200161250060269139600160008773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020546118639092919063ffffffff16565b600160008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055506117b681600160008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054611a4990919063ffffffff16565b600160008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508173ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef836040518082815260200191505060405180910390a3505050565b6000838311158290611910576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825283818151815260200191508051906020019080838360005b838110156118d55780820151818401526020810190506118ba565b50505050905090810190601f1680156119025780820380516001836020036101000a031916815260200191505b509250505060405180910390fd5b5060008385039050809150509392505050565b61194a816000808581526020019081526020016000206000016120e290919063ffffffff16565b156119b25761195761139f565b73ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff16837f2f8788117e7eff1d82e926ec794901d17c78024a50270940304540a733656f0d60405160405180910390a45b5050565b6119dd8160008085815260200190815260200160002060000161211290919063ffffffff16565b15611a45576119ea61139f565b73ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff16837ff6391f5c32d9c69d2a47ea670b442974b53935d1edc7fd64eb21e047a839171b60405160405180910390a45b5050565b600080828401905083811015611ac7576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252601b8152602001807f536166654d6174683a206164646974696f6e206f766572666c6f77000000000081525060200191505060405180910390fd5b8091505092915050565b600660019054906101000a900460ff16611b53576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260148152602001807f5061757361626c653a206e6f742070617573656400000000000000000000000081525060200191505060405180910390fd5b6000600660016101000a81548160ff0219169083151502179055507f5db9ee0a495bf2e6ff9c91a7834c1ba4fdd244a5e8aa4e537bd38aeae4b073aa611b9761139f565b604051808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390a1565b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff161415611c7d576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252601f8152602001807f45524332303a206d696e7420746f20746865207a65726f20616464726573730081525060200191505060405180910390fd5b611c89600083836120d2565b611c9e81600354611a4990919063ffffffff16565b600381905550611cf681600160008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054611a4990919063ffffffff16565b600160008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508173ffffffffffffffffffffffffffffffffffffffff16600073ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef836040518082815260200191505060405180910390a35050565b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff161415611e29576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260218152602001806125d86021913960400191505060405180910390fd5b611e35826000836120d2565b611ea18160405180606001604052806022815260200161248360229139600160008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020546118639092919063ffffffff16565b600160008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002081905550611ef98160035461214290919063ffffffff16565b600381905550600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef836040518082815260200191505060405180910390a35050565b600660019054906101000a900460ff1615611fec576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260108152602001807f5061757361626c653a207061757365640000000000000000000000000000000081525060200191505060405180910390fd5b6001600660016101000a81548160ff0219169083151502179055507f62e78cea01bee320cd4e420270b5ea74000d11b0c9f74754ebdbfc544b05a25861203061139f565b604051808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390a1565b6000612082836000018361218c565b60001c905092915050565b60006120b5836000018373ffffffffffffffffffffffffffffffffffffffff1660001b61220f565b905092915050565b60006120cb82600001612232565b9050919050565b6120dd838383612243565b505050565b600061210a836000018373ffffffffffffffffffffffffffffffffffffffff1660001b6122b1565b905092915050565b600061213a836000018373ffffffffffffffffffffffffffffffffffffffff1660001b612321565b905092915050565b600061218483836040518060400160405280601e81526020017f536166654d6174683a207375627472616374696f6e206f766572666c6f770000815250611863565b905092915050565b6000818360000180549050116121ed576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252602281526020018061240f6022913960400191505060405180910390fd5b8260000182815481106121fc57fe5b9060005260206000200154905092915050565b600080836001016000848152602001908152602001600020541415905092915050565b600081600001805490509050919050565b61224e838383612409565b612256610e9a565b156122ac576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252602a8152602001806126cd602a913960400191505060405180910390fd5b505050565b60006122bd838361220f565b61231657826000018290806001815401808255809150506001900390600052602060002001600090919091909150558260000180549050836001016000848152602001908152602001600020819055506001905061231b565b600090505b92915050565b600080836001016000848152602001908152602001600020549050600081146123fd576000600182039050600060018660000180549050039050600086600001828154811061236c57fe5b906000526020600020015490508087600001848154811061238957fe5b90600052602060002001819055506001830187600101600083815260200190815260200160002081905550866000018054806123c157fe5b60019003818190600052602060002001600090559055866001016000878152602001908152602001600020600090556001945050505050612403565b60009150505b92915050565b50505056fe456e756d657261626c655365743a20696e646578206f7574206f6620626f756e647345524332303a207472616e7366657220746f20746865207a65726f2061646472657373416363657373436f6e74726f6c3a2073656e646572206d75737420626520616e2061646d696e20746f206772616e7445524332303a206275726e20616d6f756e7420657863656564732062616c616e636545524332305072657365744d696e7465725061757365723a206d75737420686176652070617573657220726f6c6520746f20756e706175736545524332303a20617070726f766520746f20746865207a65726f206164647265737345524332303a207472616e7366657220616d6f756e7420657863656564732062616c616e6365416363657373436f6e74726f6c3a2073656e646572206d75737420626520616e2061646d696e20746f207265766f6b6545524332303a207472616e7366657220616d6f756e74206578636565647320616c6c6f77616e636545524332305072657365744d696e7465725061757365723a206d7573742068617665206d696e74657220726f6c6520746f206d696e7445524332303a206275726e20616d6f756e74206578636565647320616c6c6f77616e636545524332303a206275726e2066726f6d20746865207a65726f206164647265737345524332303a207472616e736665722066726f6d20746865207a65726f206164647265737345524332303a20617070726f76652066726f6d20746865207a65726f206164647265737345524332305072657365744d696e7465725061757365723a206d75737420686176652070617573657220726f6c6520746f20706175736545524332303a2064656372656173656420616c6c6f77616e63652062656c6f77207a65726f416363657373436f6e74726f6c3a2063616e206f6e6c792072656e6f756e636520726f6c657320666f722073656c6645524332305061757361626c653a20746f6b656e207472616e73666572207768696c6520706175736564a264697066735822122019cb84e27eca5b3dd7841ff6434451bff8e4b3bfff90f2e1615d0e068e6e3b5864736f6c63430006040033" -const ERC20HandlerABI = "[{\"inputs\":[{\"internalType\":\"address\",\"name\":\"bridgeAddress\",\"type\":\"address\"},{\"internalType\":\"bytes32[]\",\"name\":\"initialResourceIDs\",\"type\":\"bytes32[]\"},{\"internalType\":\"address[]\",\"name\":\"initialContractAddresses\",\"type\":\"address[]\"},{\"internalType\":\"address[]\",\"name\":\"burnableContractAddresses\",\"type\":\"address[]\"}],\"stateMutability\":\"nonpayable\",\"type\":\"constructor\"},{\"inputs\":[],\"name\":\"_bridgeAddress\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"name\":\"_burnList\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"name\":\"_contractWhitelist\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes32\",\"name\":\"\",\"type\":\"bytes32\"}],\"name\":\"_resourceIDToTokenContractAddress\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"name\":\"_tokenContractAddressToResourceID\",\"outputs\":[{\"internalType\":\"bytes32\",\"name\":\"\",\"type\":\"bytes32\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"tokenAddress\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"owner\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"amount\",\"type\":\"uint256\"}],\"name\":\"fundERC20\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"contractAddress\",\"type\":\"address\"}],\"name\":\"setBurnable\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes32\",\"name\":\"resourceID\",\"type\":\"bytes32\"},{\"internalType\":\"address\",\"name\":\"contractAddress\",\"type\":\"address\"}],\"name\":\"setResource\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes32\",\"name\":\"resourceID\",\"type\":\"bytes32\"},{\"internalType\":\"address\",\"name\":\"depositer\",\"type\":\"address\"},{\"internalType\":\"bytes\",\"name\":\"data\",\"type\":\"bytes\"}],\"name\":\"deposit\",\"outputs\":[{\"internalType\":\"bytes\",\"name\":\"\",\"type\":\"bytes\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes32\",\"name\":\"resourceID\",\"type\":\"bytes32\"},{\"internalType\":\"bytes\",\"name\":\"data\",\"type\":\"bytes\"}],\"name\":\"executeProposal\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"tokenAddress\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"recipient\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"amount\",\"type\":\"uint256\"}],\"name\":\"withdraw\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"}]" -const ERC20HandlerBin = "60806040523480156200001157600080fd5b5060405162000f9038038062000f9083398101604081905262000034916200025d565b8151835114620000615760405162461bcd60e51b81526004016200005890620003a2565b60405180910390fd5b600080546001600160a01b0319166001600160a01b0386161781555b8351811015620000ca57620000c18482815181106200009857fe5b6020026020010151848381518110620000ad57fe5b60200260200101516200011160201b60201c565b6001016200007d565b5060005b81518110156200010657620000fd828281518110620000e957fe5b60200260200101516200016060201b60201c565b600101620000ce565b505050505062000446565b600082815260016020818152604080842080546001600160a01b039096166001600160a01b0319909616861790559383526002815283832094909455600390935220805460ff19169091179055565b6001600160a01b03811660009081526003602052604090205460ff166200019b5760405162461bcd60e51b815260040162000058906200035e565b6001600160a01b03166000908152600460205260409020805460ff19166001179055565b80516001600160a01b0381168114620001d757600080fd5b92915050565b600082601f830112620001ee578081fd5b815162000205620001ff8262000426565b620003ff565b8181529150602080830190848101818402860182018710156200022757600080fd5b60005b8481101562000252576200023f8883620001bf565b845292820192908201906001016200022a565b505050505092915050565b6000806000806080858703121562000273578384fd5b6200027f8686620001bf565b602086810151919550906001600160401b03808211156200029e578586fd5b818801915088601f830112620002b2578586fd5b8151620002c3620001ff8262000426565b81815284810190848601868402860187018d1015620002e057898afd5b8995505b8386101562000304578051835260019590950194918601918601620002e4565b5060408b015190985094505050808311156200031e578485fd5b6200032c89848a01620001dd565b9450606088015192508083111562000342578384fd5b50506200035287828801620001dd565b91505092959194509250565b60208082526024908201527f70726f766964656420636f6e7472616374206973206e6f742077686974656c696040820152631cdd195960e21b606082015260800190565b6020808252603c908201527f696e697469616c5265736f7572636549447320616e6420696e697469616c436f60408201527f6e7472616374416464726573736573206c656e206d69736d6174636800000000606082015260800190565b6040518181016001600160401b03811182821017156200041e57600080fd5b604052919050565b60006001600160401b038211156200043c578081fd5b5060209081020190565b610b3a80620004566000396000f3fe608060405234801561001057600080fd5b50600436106100a95760003560e01c806395601f091161007157806395601f0914610127578063b07e54bb1461013a578063b8fa37361461015a578063c8ba6c871461016d578063d9caed121461018d578063e248cff2146101a0576100a9565b806307b7ed99146100ae5780630a6d55d8146100c3578063318c136e146100ec5780636a70d081146100f45780637f79bea814610114575b600080fd5b6100c16100bc366004610736565b6101b3565b005b6100d66100d13660046107b8565b6101c7565b6040516100e391906108df565b60405180910390f35b6100d66101e2565b610107610102366004610736565b6101f1565b6040516100e39190610930565b610107610122366004610736565b610206565b6100c1610135366004610758565b61021b565b61014d6101483660046107ff565b61022e565b6040516100e39190610944565b6100c16101683660046107d0565b6102e0565b61018061017b366004610736565b6102f6565b6040516100e3919061093b565b6100c161019b366004610758565b610308565b6100c16101ae366004610858565b610320565b6101bb61041f565b6101c48161044b565b50565b6001602052600090815260409020546001600160a01b031681565b6000546001600160a01b031681565b60046020526000908152604090205460ff1681565b60036020526000908152604090205460ff1681565b82610228818430856104a7565b50505050565b606061023861041f565b6000610246838501856107b8565b6000878152600160209081526040808320546001600160a01b03168084526003909252909120549192509060ff166102995760405162461bcd60e51b815260040161029090610a53565b60405180910390fd5b6001600160a01b03811660009081526004602052604090205460ff16156102ca576102c58187846104ff565b6102d6565b6102d68187308561055d565b5050949350505050565b6102e861041f565b6102f28282610571565b5050565b60026020526000908152604090205481565b61031061041f565b61031b8383836105c0565b505050565b61032861041f565b6000806060610339848601866108a2565b909350915061034e6040808401908688610a9b565b8080601f01602080910402602001604051908101604052809392919081815260200183838082843760009201829052508a815260016020908152604080832054828801516001600160a01b039091168085526003909352922054959650909490935060ff1691506103d390505760405162461bcd60e51b815260040161029090610a53565b6001600160a01b03811660009081526004602052604090205460ff161561040757610402818360601c876105cc565b610415565b610415818360601c876105c0565b5050505050505050565b6000546001600160a01b031633146104495760405162461bcd60e51b8152600401610290906109ac565b565b6001600160a01b03811660009081526003602052604090205460ff166104835760405162461bcd60e51b8152600401610290906109e3565b6001600160a01b03166000908152600460205260409020805460ff19166001179055565b610228846323b872dd60e01b8585856040516024016104c8939291906108f3565b60408051601f198184030181529190526020810180516001600160e01b03166001600160e01b0319909316929092179091526105fc565b60405163079cc67960e41b815283906001600160a01b038216906379cc67909061052f9086908690600401610917565b600060405180830381600087803b15801561054957600080fd5b505af1158015610415573d6000803e3d6000fd5b8361056a818585856104a7565b5050505050565b600082815260016020818152604080842080546001600160a01b039096166001600160a01b0319909616861790559383526002815283832094909455600390935220805460ff19169091179055565b826102288184846106b3565b6040516340c10f1960e01b815283906001600160a01b038216906340c10f199061052f9086908690600401610917565b60006060836001600160a01b03168360405161061891906108c3565b6000604051808303816000865af19150503d8060008114610655576040519150601f19603f3d011682016040523d82523d6000602084013e61065a565b606091505b50915091508161067c5760405162461bcd60e51b815260040161029090610a27565b80511561022857808060200190518101906106979190610798565b6102285760405162461bcd60e51b815260040161029090610977565b61031b8363a9059cbb60e01b84846040516024016104c8929190610917565b80356001600160a01b03811681146106e957600080fd5b92915050565b60008083601f840112610700578182fd5b50813567ffffffffffffffff811115610717578182fd5b60208301915083602082850101111561072f57600080fd5b9250929050565b600060208284031215610747578081fd5b61075183836106d2565b9392505050565b60008060006060848603121561076c578182fd5b833561077781610aef565b9250602084013561078781610aef565b929592945050506040919091013590565b6000602082840312156107a9578081fd5b81518015158114610751578182fd5b6000602082840312156107c9578081fd5b5035919050565b600080604083850312156107e2578182fd5b8235915060208301356107f481610aef565b809150509250929050565b60008060008060608587031215610814578081fd5b8435935061082586602087016106d2565b9250604085013567ffffffffffffffff811115610840578182fd5b61084c878288016106ef565b95989497509550505050565b60008060006040848603121561086c578283fd5b83359250602084013567ffffffffffffffff811115610889578283fd5b610895868287016106ef565b9497909650939450505050565b600080604083850312156108b4578182fd5b50508035926020909101359150565b600082516108d5818460208701610ac3565b9190910192915050565b6001600160a01b0391909116815260200190565b6001600160a01b039384168152919092166020820152604081019190915260600190565b6001600160a01b03929092168252602082015260400190565b901515815260200190565b90815260200190565b6000602082528251806020840152610963816040850160208701610ac3565b601f01601f19169190910160400192915050565b6020808252818101527f45524332303a206f7065726174696f6e20646964206e6f742073756363656564604082015260600190565b6020808252601e908201527f73656e646572206d7573742062652062726964676520636f6e74726163740000604082015260600190565b60208082526024908201527f70726f766964656420636f6e7472616374206973206e6f742077686974656c696040820152631cdd195960e21b606082015260800190565b602080825260129082015271115490cc8c0e8818d85b1b0819985a5b195960721b604082015260600190565b60208082526028908201527f70726f766964656420746f6b656e41646472657373206973206e6f74207768696040820152671d195b1a5cdd195960c21b606082015260800190565b60008085851115610aaa578182fd5b83861115610ab6578182fd5b5050820193919092039150565b60005b83811015610ade578181015183820152602001610ac6565b838111156102285750506000910152565b6001600160a01b03811681146101c457600080fdfea2646970667358221220f0aaa680a9ce3bc63b981fedc4e78d866065049ed4c45b563afc5e1ab54280dc64736f6c634300060c0033" +const ERC20HandlerABI = "[{\"inputs\":[{\"internalType\":\"address\",\"name\":\"bridgeAddress\",\"type\":\"address\"}],\"stateMutability\":\"nonpayable\",\"type\":\"constructor\"},{\"inputs\":[],\"name\":\"_bridgeAddress\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"name\":\"_burnList\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"name\":\"_contractWhitelist\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes32\",\"name\":\"\",\"type\":\"bytes32\"}],\"name\":\"_resourceIDToTokenContractAddress\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"name\":\"_tokenContractAddressToResourceID\",\"outputs\":[{\"internalType\":\"bytes32\",\"name\":\"\",\"type\":\"bytes32\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"contractAddress\",\"type\":\"address\"}],\"name\":\"setBurnable\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes32\",\"name\":\"resourceID\",\"type\":\"bytes32\"},{\"internalType\":\"address\",\"name\":\"contractAddress\",\"type\":\"address\"}],\"name\":\"setResource\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes32\",\"name\":\"resourceID\",\"type\":\"bytes32\"},{\"internalType\":\"address\",\"name\":\"depositer\",\"type\":\"address\"},{\"internalType\":\"bytes\",\"name\":\"data\",\"type\":\"bytes\"}],\"name\":\"deposit\",\"outputs\":[{\"internalType\":\"bytes\",\"name\":\"\",\"type\":\"bytes\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes32\",\"name\":\"resourceID\",\"type\":\"bytes32\"},{\"internalType\":\"bytes\",\"name\":\"data\",\"type\":\"bytes\"}],\"name\":\"executeProposal\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes\",\"name\":\"data\",\"type\":\"bytes\"}],\"name\":\"withdraw\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"}]" +const ERC20HandlerBin = "60a060405234801561001057600080fd5b50604051610c7e380380610c7e83398101604081905261002f91610044565b60601b6001600160601b031916608052610072565b600060208284031215610055578081fd5b81516001600160a01b038116811461006b578182fd5b9392505050565b60805160601c610bea610094600039806101ff528061042b5250610bea6000f3fe608060405234801561001057600080fd5b506004361061009e5760003560e01c80637f79bea8116100665780637f79bea81461011c578063b07e54bb1461012f578063b8fa37361461014f578063c8ba6c8714610162578063e248cff2146101825761009e565b806307b7ed99146100a35780630968f264146100b85780630a6d55d8146100cb578063318c136e146100f45780636a70d081146100fc575b600080fd5b6100b66100b136600461073b565b610195565b005b6100b66100c63660046108ab565b6101a9565b6100de6100d93660046107c0565b6101e2565b6040516100eb9190610983565b60405180910390f35b6100de6101fd565b61010f61010a36600461073b565b610221565b6040516100eb91906109d4565b61010f61012a36600461073b565b610236565b61014261013d366004610807565b61024b565b6040516100eb91906109e8565b6100b661015d3660046107d8565b6102fb565b61017561017036600461073b565b610311565b6040516100eb91906109df565b6100b6610190366004610861565b610323565b61019d610420565b6101a68161046a565b50565b6101b1610420565b6000806000838060200190518101906101ca919061075e565b919450925090506101dc8383836104c6565b50505050565b6000602081905290815260409020546001600160a01b031681565b7f000000000000000000000000000000000000000000000000000000000000000081565b60036020526000908152604090205460ff1681565b60026020526000908152604090205460ff1681565b6060610255610420565b6000610263838501856107c0565b600087815260208181526040808320546001600160a01b03168084526002909252909120549192509060ff166102b45760405162461bcd60e51b81526004016102ab90610af7565b60405180910390fd5b6001600160a01b03811660009081526003602052604090205460ff16156102e5576102e08187846104d2565b6102f1565b6102f181873085610530565b5050949350505050565b610303610420565b61030d8282610544565b5050565b60016020526000908152604090205481565b61032b610420565b600080606061033c84860186610946565b90935091506103516040808401908688610b3f565b8080601f01602080910402602001604051908101604052809392919081815260200183838082843760009201829052508a81526020818152604080832054828801516001600160a01b039091168085526002909352922054959650909490935060ff1691506103d490505760405162461bcd60e51b81526004016102ab90610af7565b6001600160a01b03811660009081526003602052604090205460ff161561040857610403818360601c87610591565b610416565b610416818360601c876104c6565b5050505050505050565b336001600160a01b037f000000000000000000000000000000000000000000000000000000000000000016146104685760405162461bcd60e51b81526004016102ab90610a50565b565b6001600160a01b03811660009081526002602052604090205460ff166104a25760405162461bcd60e51b81526004016102ab90610a87565b6001600160a01b03166000908152600360205260409020805460ff19166001179055565b826101dc8184846105c1565b60405163079cc67960e41b815283906001600160a01b038216906379cc67909061050290869086906004016109bb565b600060405180830381600087803b15801561051c57600080fd5b505af1158015610416573d6000803e3d6000fd5b8361053d8185858561061c565b5050505050565b60008281526020818152604080832080546001600160a01b039095166001600160a01b0319909516851790559282526001808252838320949094556002905220805460ff19169091179055565b6040516340c10f1960e01b815283906001600160a01b038216906340c10f199061050290869086906004016109bb565b6106178363a9059cbb60e01b84846040516024016105e09291906109bb565b60408051601f198184030181529190526020810180516001600160e01b03166001600160e01b03199093169290921790915261063d565b505050565b6101dc846323b872dd60e01b8585856040516024016105e093929190610997565b60006060836001600160a01b0316836040516106599190610967565b6000604051808303816000865af19150503d8060008114610696576040519150601f19603f3d011682016040523d82523d6000602084013e61069b565b606091505b5091509150816106bd5760405162461bcd60e51b81526004016102ab90610acb565b8051156101dc57808060200190518101906106d891906107a0565b6101dc5760405162461bcd60e51b81526004016102ab90610a1b565b60008083601f840112610705578182fd5b50813567ffffffffffffffff81111561071c578182fd5b60208301915083602082850101111561073457600080fd5b9250929050565b60006020828403121561074c578081fd5b813561075781610b9f565b9392505050565b600080600060608486031215610772578182fd5b835161077d81610b9f565b602085015190935061078e81610b9f565b80925050604084015190509250925092565b6000602082840312156107b1578081fd5b81518015158114610757578182fd5b6000602082840312156107d1578081fd5b5035919050565b600080604083850312156107ea578182fd5b8235915060208301356107fc81610b9f565b809150509250929050565b6000806000806060858703121561081c578081fd5b84359350602085013561082e81610b9f565b9250604085013567ffffffffffffffff811115610849578182fd5b610855878288016106f4565b95989497509550505050565b600080600060408486031215610875578283fd5b83359250602084013567ffffffffffffffff811115610892578283fd5b61089e868287016106f4565b9497909650939450505050565b6000602082840312156108bc578081fd5b813567ffffffffffffffff808211156108d3578283fd5b818401915084601f8301126108e6578283fd5b8135818111156108f4578384fd5b604051601f8201601f191681016020018381118282101715610914578586fd5b60405281815283820160200187101561092b578485fd5b61093c826020830160208701610b67565b9695505050505050565b60008060408385031215610958578182fd5b50508035926020909101359150565b60008251610979818460208701610b73565b9190910192915050565b6001600160a01b0391909116815260200190565b6001600160a01b039384168152919092166020820152604081019190915260600190565b6001600160a01b03929092168252602082015260400190565b901515815260200190565b90815260200190565b6000602082528251806020840152610a07816040850160208701610b73565b601f01601f19169190910160400192915050565b6020808252818101527f45524332303a206f7065726174696f6e20646964206e6f742073756363656564604082015260600190565b6020808252601e908201527f73656e646572206d7573742062652062726964676520636f6e74726163740000604082015260600190565b60208082526024908201527f70726f766964656420636f6e7472616374206973206e6f742077686974656c696040820152631cdd195960e21b606082015260800190565b602080825260129082015271115490cc8c0e8818d85b1b0819985a5b195960721b604082015260600190565b60208082526028908201527f70726f766964656420746f6b656e41646472657373206973206e6f74207768696040820152671d195b1a5cdd195960c21b606082015260800190565b60008085851115610b4e578182fd5b83861115610b5a578182fd5b5050820193919092039150565b82818337506000910152565b60005b83811015610b8e578181015183820152602001610b76565b838111156101dc5750506000910152565b6001600160a01b03811681146101a657600080fdfea26469706673582212200b7f9f3bf4e068dd7906bce4598f87c4ddf114962e3bd7f10759f026d816c38a64736f6c634300060c0033" From aacdf4dbfe47d80e051f907187602434772d8c04 Mon Sep 17 00:00:00 2001 From: Mak Muftic Date: Thu, 11 Nov 2021 16:45:22 +0100 Subject: [PATCH 2/2] Fix failing tests --- chains/evm/calls/deploy.go | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/chains/evm/calls/deploy.go b/chains/evm/calls/deploy.go index 9dc2caf2..4529133b 100644 --- a/chains/evm/calls/deploy.go +++ b/chains/evm/calls/deploy.go @@ -44,7 +44,7 @@ func DeployErc20Handler(c ClientDeployer, txFabric TxFabric, gasPriceClient GasP if err != nil { return common.Address{}, err } - address, err := deployContract(c, parsed, common.FromHex(consts.ERC20HandlerBin), txFabric, gasPriceClient, bridgeAddress, [][32]byte{}, []common.Address{}, []common.Address{}) + address, err := deployContract(c, parsed, common.FromHex(consts.ERC20HandlerBin), txFabric, gasPriceClient, bridgeAddress) if err != nil { return common.Address{}, err }