diff --git a/contracts/TestSystemContract.sol b/contracts/TestSystemContract.sol deleted file mode 100644 index 8adc6f4d..00000000 --- a/contracts/TestSystemContract.sol +++ /dev/null @@ -1,54 +0,0 @@ -// SPDX-License-Identifier: MIT -pragma solidity 0.8.7; - -import "@zetachain/protocol-contracts/contracts/zevm/interfaces/zContract.sol"; -import "@zetachain/protocol-contracts/contracts/zevm/interfaces/IZRC20.sol"; -import "@zetachain/protocol-contracts/contracts/zevm/SystemContract.sol"; - -contract TestSystemContract { - error CallerIsNotFungibleModule(); - error InvalidTarget(); - error CantBeIdenticalAddresses(); - error CantBeZeroAddress(); - - mapping(uint256 => uint256) public gasPriceByChainId; - mapping(uint256 => address) public gasCoinZRC20ByChainId; - mapping(uint256 => address) public gasZetaPoolByChainId; - - address public wZetaContractAddress; - address public uniswapv2FactoryAddress; - address public uniswapv2Router02Address; - - event SystemContractDeployed(); - event SetGasPrice(uint256, uint256); - event SetGasCoin(uint256, address); - event SetGasZetaPool(uint256, address); - event SetWZeta(address); - - constructor( - address wzeta_, - address uniswapv2Factory_, - address uniswapv2Router02_ - ) { - wZetaContractAddress = wzeta_; - uniswapv2FactoryAddress = uniswapv2Factory_; - uniswapv2Router02Address = uniswapv2Router02_; - emit SystemContractDeployed(); - } - - // fungible module updates the gas price oracle periodically - function setGasPrice(uint256 chainID, uint256 price) external { - gasPriceByChainId[chainID] = price; - emit SetGasPrice(chainID, price); - } - - function setGasCoinZRC20(uint256 chainID, address zrc20) external { - gasCoinZRC20ByChainId[chainID] = zrc20; - emit SetGasCoin(chainID, zrc20); - } - - function setWZETAContractAddress(address addr) external { - wZetaContractAddress = addr; - emit SetWZeta(wZetaContractAddress); - } -} diff --git a/contracts/ZetaConnectorMock.sol b/contracts/ZetaConnectorMock.sol deleted file mode 100644 index 8a9ca23d..00000000 --- a/contracts/ZetaConnectorMock.sol +++ /dev/null @@ -1,8 +0,0 @@ -// SPDX-License-Identifier: MIT -pragma solidity 0.8.7; - -import "@zetachain/protocol-contracts/contracts/evm/interfaces/ZetaInterfaces.sol"; - -contract ZetaConnectorMockValue is ZetaConnector { - function send(ZetaInterfaces.SendInput calldata input) external override {} -} diff --git a/contracts/shared/MockSystemContract.sol b/contracts/shared/MockSystemContract.sol deleted file mode 100644 index c5447df6..00000000 --- a/contracts/shared/MockSystemContract.sol +++ /dev/null @@ -1,112 +0,0 @@ -// SPDX-License-Identifier: MIT -pragma solidity 0.8.7; - -import "@zetachain/protocol-contracts/contracts/zevm/interfaces/zContract.sol"; -import "@zetachain/protocol-contracts/contracts/zevm/interfaces/IZRC20.sol"; - -interface SystemContractErrors { - error CallerIsNotFungibleModule(); - - error InvalidTarget(); - - error CantBeIdenticalAddresses(); - - error CantBeZeroAddress(); -} - -contract MockSystemContract is SystemContractErrors { - error TransferFailed(); - - mapping(uint256 => uint256) public gasPriceByChainId; - mapping(uint256 => address) public gasCoinZRC20ByChainId; - mapping(uint256 => address) public gasZetaPoolByChainId; - - address public wZetaContractAddress; - address public immutable uniswapv2FactoryAddress; - address public immutable uniswapv2Router02Address; - - event SystemContractDeployed(); - event SetGasPrice(uint256, uint256); - event SetGasCoin(uint256, address); - event SetGasZetaPool(uint256, address); - event SetWZeta(address); - - constructor( - address wzeta_, - address uniswapv2Factory_, - address uniswapv2Router02_ - ) { - wZetaContractAddress = wzeta_; - uniswapv2FactoryAddress = uniswapv2Factory_; - uniswapv2Router02Address = uniswapv2Router02_; - emit SystemContractDeployed(); - } - - // fungible module updates the gas price oracle periodically - function setGasPrice(uint256 chainID, uint256 price) external { - gasPriceByChainId[chainID] = price; - emit SetGasPrice(chainID, price); - } - - function setGasCoinZRC20(uint256 chainID, address zrc20) external { - gasCoinZRC20ByChainId[chainID] = zrc20; - emit SetGasCoin(chainID, zrc20); - } - - function setWZETAContractAddress(address addr) external { - wZetaContractAddress = addr; - emit SetWZeta(wZetaContractAddress); - } - - // returns sorted token addresses, used to handle return values from pairs sorted in this order - function sortTokens( - address tokenA, - address tokenB - ) internal pure returns (address token0, address token1) { - if (tokenA == tokenB) revert CantBeIdenticalAddresses(); - (token0, token1) = tokenA < tokenB - ? (tokenA, tokenB) - : (tokenB, tokenA); - if (token0 == address(0)) revert CantBeZeroAddress(); - } - - function uniswapv2PairFor( - address factory, - address tokenA, - address tokenB - ) public pure returns (address pair) { - (address token0, address token1) = sortTokens(tokenA, tokenB); - pair = address( - uint160( - uint256( - keccak256( - abi.encodePacked( - hex"ff", - factory, - keccak256(abi.encodePacked(token0, token1)), - hex"96e8ac4277198ff8b6f785478aa9a39f403cb768dd02cbee326c3e7da348845f" // init code hash - ) - ) - ) - ) - ); - } - - function onCrossChainCall( - uint256 chainID, - address target, - address zrc20, - uint256 amount, - bytes calldata message - ) external { - bytes memory originAddress = abi.encode(msg.sender); - zContext memory context = zContext({ - sender: msg.sender, - origin: originAddress, - chainID: chainID - }); - bool transfer = IZRC20(zrc20).transfer(target, amount); - if (!transfer) revert TransferFailed(); - zContract(target).onCrossChainCall(context, zrc20, amount, message); - } -} diff --git a/package.json b/package.json index 22cc6730..f26dd9a0 100644 --- a/package.json +++ b/package.json @@ -96,7 +96,7 @@ "@uniswap/v2-periphery": "^1.1.0-beta.0", "@zetachain/faucet-cli": "^4.1.1", "@zetachain/networks": "10.0.0", - "@zetachain/protocol-contracts": "9.0.0", + "@zetachain/protocol-contracts": "11.0.0-rc3", "axios": "^1.4.0", "bech32": "^2.0.0", "bip39": "^3.1.0", diff --git a/packages/client/src/abi/GatewayEVM.sol/GatewayEVM.json b/packages/client/src/abi/GatewayEVM.sol/GatewayEVM.json deleted file mode 100644 index 69f48b46..00000000 --- a/packages/client/src/abi/GatewayEVM.sol/GatewayEVM.json +++ /dev/null @@ -1 +0,0 @@ -{"abi":[{"type":"constructor","inputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"ASSET_HANDLER_ROLE","inputs":[],"outputs":[{"name":"","type":"bytes32","internalType":"bytes32"}],"stateMutability":"view"},{"type":"function","name":"DEFAULT_ADMIN_ROLE","inputs":[],"outputs":[{"name":"","type":"bytes32","internalType":"bytes32"}],"stateMutability":"view"},{"type":"function","name":"PAUSER_ROLE","inputs":[],"outputs":[{"name":"","type":"bytes32","internalType":"bytes32"}],"stateMutability":"view"},{"type":"function","name":"TSS_ROLE","inputs":[],"outputs":[{"name":"","type":"bytes32","internalType":"bytes32"}],"stateMutability":"view"},{"type":"function","name":"UPGRADE_INTERFACE_VERSION","inputs":[],"outputs":[{"name":"","type":"string","internalType":"string"}],"stateMutability":"view"},{"type":"function","name":"call","inputs":[{"name":"receiver","type":"address","internalType":"address"},{"name":"payload","type":"bytes","internalType":"bytes"},{"name":"revertOptions","type":"tuple","internalType":"struct RevertOptions","components":[{"name":"revertAddress","type":"address","internalType":"address"},{"name":"callOnRevert","type":"bool","internalType":"bool"},{"name":"abortAddress","type":"address","internalType":"address"},{"name":"revertMessage","type":"bytes","internalType":"bytes"},{"name":"onRevertGasLimit","type":"uint256","internalType":"uint256"}]}],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"custody","inputs":[],"outputs":[{"name":"","type":"address","internalType":"address"}],"stateMutability":"view"},{"type":"function","name":"deposit","inputs":[{"name":"receiver","type":"address","internalType":"address"},{"name":"amount","type":"uint256","internalType":"uint256"},{"name":"asset","type":"address","internalType":"address"},{"name":"revertOptions","type":"tuple","internalType":"struct RevertOptions","components":[{"name":"revertAddress","type":"address","internalType":"address"},{"name":"callOnRevert","type":"bool","internalType":"bool"},{"name":"abortAddress","type":"address","internalType":"address"},{"name":"revertMessage","type":"bytes","internalType":"bytes"},{"name":"onRevertGasLimit","type":"uint256","internalType":"uint256"}]}],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"deposit","inputs":[{"name":"receiver","type":"address","internalType":"address"},{"name":"revertOptions","type":"tuple","internalType":"struct RevertOptions","components":[{"name":"revertAddress","type":"address","internalType":"address"},{"name":"callOnRevert","type":"bool","internalType":"bool"},{"name":"abortAddress","type":"address","internalType":"address"},{"name":"revertMessage","type":"bytes","internalType":"bytes"},{"name":"onRevertGasLimit","type":"uint256","internalType":"uint256"}]}],"outputs":[],"stateMutability":"payable"},{"type":"function","name":"depositAndCall","inputs":[{"name":"receiver","type":"address","internalType":"address"},{"name":"payload","type":"bytes","internalType":"bytes"},{"name":"revertOptions","type":"tuple","internalType":"struct RevertOptions","components":[{"name":"revertAddress","type":"address","internalType":"address"},{"name":"callOnRevert","type":"bool","internalType":"bool"},{"name":"abortAddress","type":"address","internalType":"address"},{"name":"revertMessage","type":"bytes","internalType":"bytes"},{"name":"onRevertGasLimit","type":"uint256","internalType":"uint256"}]}],"outputs":[],"stateMutability":"payable"},{"type":"function","name":"depositAndCall","inputs":[{"name":"receiver","type":"address","internalType":"address"},{"name":"amount","type":"uint256","internalType":"uint256"},{"name":"asset","type":"address","internalType":"address"},{"name":"payload","type":"bytes","internalType":"bytes"},{"name":"revertOptions","type":"tuple","internalType":"struct RevertOptions","components":[{"name":"revertAddress","type":"address","internalType":"address"},{"name":"callOnRevert","type":"bool","internalType":"bool"},{"name":"abortAddress","type":"address","internalType":"address"},{"name":"revertMessage","type":"bytes","internalType":"bytes"},{"name":"onRevertGasLimit","type":"uint256","internalType":"uint256"}]}],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"execute","inputs":[{"name":"destination","type":"address","internalType":"address"},{"name":"data","type":"bytes","internalType":"bytes"}],"outputs":[{"name":"","type":"bytes","internalType":"bytes"}],"stateMutability":"payable"},{"type":"function","name":"executeRevert","inputs":[{"name":"destination","type":"address","internalType":"address"},{"name":"data","type":"bytes","internalType":"bytes"},{"name":"revertContext","type":"tuple","internalType":"struct RevertContext","components":[{"name":"asset","type":"address","internalType":"address"},{"name":"amount","type":"uint64","internalType":"uint64"},{"name":"revertMessage","type":"bytes","internalType":"bytes"}]}],"outputs":[],"stateMutability":"payable"},{"type":"function","name":"executeWithERC20","inputs":[{"name":"token","type":"address","internalType":"address"},{"name":"to","type":"address","internalType":"address"},{"name":"amount","type":"uint256","internalType":"uint256"},{"name":"data","type":"bytes","internalType":"bytes"}],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"getRoleAdmin","inputs":[{"name":"role","type":"bytes32","internalType":"bytes32"}],"outputs":[{"name":"","type":"bytes32","internalType":"bytes32"}],"stateMutability":"view"},{"type":"function","name":"grantRole","inputs":[{"name":"role","type":"bytes32","internalType":"bytes32"},{"name":"account","type":"address","internalType":"address"}],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"hasRole","inputs":[{"name":"role","type":"bytes32","internalType":"bytes32"},{"name":"account","type":"address","internalType":"address"}],"outputs":[{"name":"","type":"bool","internalType":"bool"}],"stateMutability":"view"},{"type":"function","name":"initialize","inputs":[{"name":"tssAddress_","type":"address","internalType":"address"},{"name":"zetaToken_","type":"address","internalType":"address"},{"name":"admin_","type":"address","internalType":"address"}],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"pause","inputs":[],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"paused","inputs":[],"outputs":[{"name":"","type":"bool","internalType":"bool"}],"stateMutability":"view"},{"type":"function","name":"proxiableUUID","inputs":[],"outputs":[{"name":"","type":"bytes32","internalType":"bytes32"}],"stateMutability":"view"},{"type":"function","name":"renounceRole","inputs":[{"name":"role","type":"bytes32","internalType":"bytes32"},{"name":"callerConfirmation","type":"address","internalType":"address"}],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"revertWithERC20","inputs":[{"name":"token","type":"address","internalType":"address"},{"name":"to","type":"address","internalType":"address"},{"name":"amount","type":"uint256","internalType":"uint256"},{"name":"data","type":"bytes","internalType":"bytes"},{"name":"revertContext","type":"tuple","internalType":"struct RevertContext","components":[{"name":"asset","type":"address","internalType":"address"},{"name":"amount","type":"uint64","internalType":"uint64"},{"name":"revertMessage","type":"bytes","internalType":"bytes"}]}],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"revokeRole","inputs":[{"name":"role","type":"bytes32","internalType":"bytes32"},{"name":"account","type":"address","internalType":"address"}],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"setConnector","inputs":[{"name":"zetaConnector_","type":"address","internalType":"address"}],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"setCustody","inputs":[{"name":"custody_","type":"address","internalType":"address"}],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"supportsInterface","inputs":[{"name":"interfaceId","type":"bytes4","internalType":"bytes4"}],"outputs":[{"name":"","type":"bool","internalType":"bool"}],"stateMutability":"view"},{"type":"function","name":"tssAddress","inputs":[],"outputs":[{"name":"","type":"address","internalType":"address"}],"stateMutability":"view"},{"type":"function","name":"unpause","inputs":[],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"upgradeToAndCall","inputs":[{"name":"newImplementation","type":"address","internalType":"address"},{"name":"data","type":"bytes","internalType":"bytes"}],"outputs":[],"stateMutability":"payable"},{"type":"function","name":"zetaConnector","inputs":[],"outputs":[{"name":"","type":"address","internalType":"address"}],"stateMutability":"view"},{"type":"function","name":"zetaToken","inputs":[],"outputs":[{"name":"","type":"address","internalType":"address"}],"stateMutability":"view"},{"type":"event","name":"Called","inputs":[{"name":"sender","type":"address","indexed":true,"internalType":"address"},{"name":"receiver","type":"address","indexed":true,"internalType":"address"},{"name":"payload","type":"bytes","indexed":false,"internalType":"bytes"},{"name":"revertOptions","type":"tuple","indexed":false,"internalType":"struct RevertOptions","components":[{"name":"revertAddress","type":"address","internalType":"address"},{"name":"callOnRevert","type":"bool","internalType":"bool"},{"name":"abortAddress","type":"address","internalType":"address"},{"name":"revertMessage","type":"bytes","internalType":"bytes"},{"name":"onRevertGasLimit","type":"uint256","internalType":"uint256"}]}],"anonymous":false},{"type":"event","name":"Deposited","inputs":[{"name":"sender","type":"address","indexed":true,"internalType":"address"},{"name":"receiver","type":"address","indexed":true,"internalType":"address"},{"name":"amount","type":"uint256","indexed":false,"internalType":"uint256"},{"name":"asset","type":"address","indexed":false,"internalType":"address"},{"name":"payload","type":"bytes","indexed":false,"internalType":"bytes"},{"name":"revertOptions","type":"tuple","indexed":false,"internalType":"struct RevertOptions","components":[{"name":"revertAddress","type":"address","internalType":"address"},{"name":"callOnRevert","type":"bool","internalType":"bool"},{"name":"abortAddress","type":"address","internalType":"address"},{"name":"revertMessage","type":"bytes","internalType":"bytes"},{"name":"onRevertGasLimit","type":"uint256","internalType":"uint256"}]}],"anonymous":false},{"type":"event","name":"Executed","inputs":[{"name":"destination","type":"address","indexed":true,"internalType":"address"},{"name":"value","type":"uint256","indexed":false,"internalType":"uint256"},{"name":"data","type":"bytes","indexed":false,"internalType":"bytes"}],"anonymous":false},{"type":"event","name":"ExecutedWithERC20","inputs":[{"name":"token","type":"address","indexed":true,"internalType":"address"},{"name":"to","type":"address","indexed":true,"internalType":"address"},{"name":"amount","type":"uint256","indexed":false,"internalType":"uint256"},{"name":"data","type":"bytes","indexed":false,"internalType":"bytes"}],"anonymous":false},{"type":"event","name":"Initialized","inputs":[{"name":"version","type":"uint64","indexed":false,"internalType":"uint64"}],"anonymous":false},{"type":"event","name":"Paused","inputs":[{"name":"account","type":"address","indexed":false,"internalType":"address"}],"anonymous":false},{"type":"event","name":"Reverted","inputs":[{"name":"to","type":"address","indexed":true,"internalType":"address"},{"name":"token","type":"address","indexed":true,"internalType":"address"},{"name":"amount","type":"uint256","indexed":false,"internalType":"uint256"},{"name":"data","type":"bytes","indexed":false,"internalType":"bytes"},{"name":"revertContext","type":"tuple","indexed":false,"internalType":"struct RevertContext","components":[{"name":"asset","type":"address","internalType":"address"},{"name":"amount","type":"uint64","internalType":"uint64"},{"name":"revertMessage","type":"bytes","internalType":"bytes"}]}],"anonymous":false},{"type":"event","name":"RoleAdminChanged","inputs":[{"name":"role","type":"bytes32","indexed":true,"internalType":"bytes32"},{"name":"previousAdminRole","type":"bytes32","indexed":true,"internalType":"bytes32"},{"name":"newAdminRole","type":"bytes32","indexed":true,"internalType":"bytes32"}],"anonymous":false},{"type":"event","name":"RoleGranted","inputs":[{"name":"role","type":"bytes32","indexed":true,"internalType":"bytes32"},{"name":"account","type":"address","indexed":true,"internalType":"address"},{"name":"sender","type":"address","indexed":true,"internalType":"address"}],"anonymous":false},{"type":"event","name":"RoleRevoked","inputs":[{"name":"role","type":"bytes32","indexed":true,"internalType":"bytes32"},{"name":"account","type":"address","indexed":true,"internalType":"address"},{"name":"sender","type":"address","indexed":true,"internalType":"address"}],"anonymous":false},{"type":"event","name":"Unpaused","inputs":[{"name":"account","type":"address","indexed":false,"internalType":"address"}],"anonymous":false},{"type":"event","name":"Upgraded","inputs":[{"name":"implementation","type":"address","indexed":true,"internalType":"address"}],"anonymous":false},{"type":"error","name":"AccessControlBadConfirmation","inputs":[]},{"type":"error","name":"AccessControlUnauthorizedAccount","inputs":[{"name":"account","type":"address","internalType":"address"},{"name":"neededRole","type":"bytes32","internalType":"bytes32"}]},{"type":"error","name":"AddressEmptyCode","inputs":[{"name":"target","type":"address","internalType":"address"}]},{"type":"error","name":"AddressInsufficientBalance","inputs":[{"name":"account","type":"address","internalType":"address"}]},{"type":"error","name":"ApprovalFailed","inputs":[]},{"type":"error","name":"ConnectorInitialized","inputs":[]},{"type":"error","name":"CustodyInitialized","inputs":[]},{"type":"error","name":"DepositFailed","inputs":[]},{"type":"error","name":"ERC1967InvalidImplementation","inputs":[{"name":"implementation","type":"address","internalType":"address"}]},{"type":"error","name":"ERC1967NonPayable","inputs":[]},{"type":"error","name":"EnforcedPause","inputs":[]},{"type":"error","name":"ExecutionFailed","inputs":[]},{"type":"error","name":"ExpectedPause","inputs":[]},{"type":"error","name":"FailedInnerCall","inputs":[]},{"type":"error","name":"InsufficientERC20Amount","inputs":[]},{"type":"error","name":"InsufficientETHAmount","inputs":[]},{"type":"error","name":"InvalidInitialization","inputs":[]},{"type":"error","name":"NotInitializing","inputs":[]},{"type":"error","name":"NotWhitelistedInCustody","inputs":[]},{"type":"error","name":"ReentrancyGuardReentrantCall","inputs":[]},{"type":"error","name":"SafeERC20FailedOperation","inputs":[{"name":"token","type":"address","internalType":"address"}]},{"type":"error","name":"UUPSUnauthorizedCallContext","inputs":[]},{"type":"error","name":"UUPSUnsupportedProxiableUUID","inputs":[{"name":"slot","type":"bytes32","internalType":"bytes32"}]},{"type":"error","name":"ZeroAddress","inputs":[]}],"bytecode":{"object":"0x60a06040523060805234801561001457600080fd5b5061001d610022565b6100d4565b7ff0c57e16840df040f15088dc2f81fe391c3923bec73e23a9662efc9c229c6a00805468010000000000000000900460ff16156100725760405163f92ee8a960e01b815260040160405180910390fd5b80546001600160401b03908116146100d15780546001600160401b0319166001600160401b0390811782556040519081527fc7f505b2f371ae2175ee4913f4499e1f2633a7b5936321eed1cdaeb6115181d29060200160405180910390a15b50565b6080516136f06100fd6000396000818161217a015281816121a3015261262f01526136f06000f3fe6080604052600436106101e35760003560e01c80635d62c86011610102578063ae7a3a6f11610095578063d547741f11610064578063d547741f1461062e578063dda79b751461064e578063e63ab1e91461066e578063f7ad60db146106a257600080fd5b8063ae7a3a6f146105ae578063c0c53b8b146105ce578063d09e3b78146105ee578063d0b492c31461060e57600080fd5b806391d14854116100d157806391d14854146104b7578063a217fddf1461051c578063a783c78914610531578063ad3cb1cc1461056557600080fd5b80635d62c86014610448578063726ac97c1461047c578063744b9b8b1461048f5780638456cb59146104a257600080fd5b806336568abe1161017a57806352d1902d1161014957806352d1902d146103bc57806357bec62f146103d15780635b112591146103f15780635c975abb1461041157600080fd5b806336568abe146103545780633f4ba83a146103745780634f1ef286146103895780635131ab591461039c57600080fd5b80631cff79cd116101b65780631cff79cd1461027f57806321e093b11461029f578063248a9ca3146102d75780632f2ff15d1461033457600080fd5b806301ffc9a7146101e857806310188aef1461021d578063102614b01461023f5780631becceb41461025f575b600080fd5b3480156101f457600080fd5b50610208610203366004612d1f565b6106b5565b60405190151581526020015b60405180910390f35b34801561022957600080fd5b5061023d610238366004612d7d565b61074e565b005b34801561024b57600080fd5b5061023d61025a366004612db0565b610842565b34801561026b57600080fd5b5061023d61027a366004612e61565b610955565b61029261028d366004612ec8565b6109ec565b6040516102149190612f89565b3480156102ab57600080fd5b506003546102bf906001600160a01b031681565b6040516001600160a01b039091168152602001610214565b3480156102e357600080fd5b506103266102f2366004612f9c565b60009081527f02dd7bc7dec4dceedda775e58dd541e08a116c6c53815c0bd028192f7b626800602052604090206001015490565b604051908152602001610214565b34801561034057600080fd5b5061023d61034f366004612fb5565b610aef565b34801561036057600080fd5b5061023d61036f366004612fb5565b610b33565b34801561038057600080fd5b5061023d610b84565b61023d610397366004613010565b610bb9565b3480156103a857600080fd5b5061023d6103b7366004613117565b610bd8565b3480156103c857600080fd5b50610326610ef1565b3480156103dd57600080fd5b506002546102bf906001600160a01b031681565b3480156103fd57600080fd5b506001546102bf906001600160a01b031681565b34801561041d57600080fd5b507fcd5ed15c6e187e77e9aee88184c21f4f2182ab5827cb3b7e07fbedcd63f033005460ff16610208565b34801561045457600080fd5b506103267f584a0b16e9f616d90ccec14a0b852c19aceccfd3d60699398a57dce2b0de01b981565b61023d61048a366004613186565b610f20565b61023d61049d366004612e61565b6110b1565b3480156104ae57600080fd5b5061023d611246565b3480156104c357600080fd5b506102086104d2366004612fb5565b60009182527f02dd7bc7dec4dceedda775e58dd541e08a116c6c53815c0bd028192f7b626800602090815260408084206001600160a01b0393909316845291905290205460ff1690565b34801561052857600080fd5b50610326600081565b34801561053d57600080fd5b506103267f0da06bffcb63442de88b7f8385468eaf51e47079d4fa96875938e2c27c451deb81565b34801561057157600080fd5b506102926040518060400160405280600581526020017f352e302e3000000000000000000000000000000000000000000000000000000081525081565b3480156105ba57600080fd5b5061023d6105c9366004612d7d565b611278565b3480156105da57600080fd5b5061023d6105e93660046131d4565b61136c565b3480156105fa57600080fd5b5061023d610609366004613217565b611621565b34801561061a57600080fd5b5061023d6106293660046132c1565b611732565b34801561063a57600080fd5b5061023d610649366004612fb5565b6118f4565b34801561065a57600080fd5b506000546102bf906001600160a01b031681565b34801561067a57600080fd5b506103267f65d7a28e3265b37a6474929f336521b332c1681b933f6cb9f3376673440d862a81565b61023d6106b036600461334c565b611938565b60007fffffffff0000000000000000000000000000000000000000000000000000000082167f7965db0b00000000000000000000000000000000000000000000000000000000148061074857507f01ffc9a7000000000000000000000000000000000000000000000000000000007fffffffff000000000000000000000000000000000000000000000000000000008316145b92915050565b600061075981611b39565b6001600160a01b038216610799576040517fd92e233d00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6002546001600160a01b0316156107dc576040517f0c8dc01600000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6108067f584a0b16e9f616d90ccec14a0b852c19aceccfd3d60699398a57dce2b0de01b983611b43565b5050600280547fffffffffffffffffffffffff0000000000000000000000000000000000000000166001600160a01b0392909216919091179055565b61084a611c30565b610852611c8e565b8260000361088c576040517f951e19ed00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6001600160a01b0384166108cc576040517fd92e233d00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6108d7338385611d0f565b836001600160a01b0316336001600160a01b03167fc6f891b65320c682b217616a62b51f218fee95d5f0ba83e758ef9ab4ee8e975c85858560405161091e939291906134f7565b60405180910390a361094f60017f9b779b17422d0df92223018b32b4d1fa46e071723d6817e2486d003becc55f0055565b50505050565b61095d611c30565b610965611c8e565b6001600160a01b0384166109a5576040517fd92e233d00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b836001600160a01b0316336001600160a01b03167fd34634f30f94a646fdf4ce7078f38fc5fa0d3f0b193658facea4e3e43330d97485858560405161091e9392919061352d565b60607f0da06bffcb63442de88b7f8385468eaf51e47079d4fa96875938e2c27c451deb610a1881611b39565b610a20611c30565b610a28611c8e565b6001600160a01b038516610a68576040517fd92e233d00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6000610a75868686611f72565b9050856001600160a01b03167fcaf938de11c367272220bfd1d2baa99ca46665e7bc4d85f00adb51b90fe1fa9f348787604051610ab493929190613553565b60405180910390a29150610ae760017f9b779b17422d0df92223018b32b4d1fa46e071723d6817e2486d003becc55f0055565b509392505050565b60008281527f02dd7bc7dec4dceedda775e58dd541e08a116c6c53815c0bd028192f7b6268006020526040902060010154610b2981611b39565b61094f8383611b43565b6001600160a01b0381163314610b75576040517f6697b23200000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b610b7f828261201b565b505050565b7f65d7a28e3265b37a6474929f336521b332c1681b933f6cb9f3376673440d862a610bae81611b39565b610bb66120df565b50565b610bc161216f565b610bca8261223f565b610bd4828261224a565b5050565b7f584a0b16e9f616d90ccec14a0b852c19aceccfd3d60699398a57dce2b0de01b9610c0281611b39565b610c0a611c30565b610c12611c8e565b83600003610c4c576040517f951e19ed00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6001600160a01b038516610c8c576040517fd92e233d00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b610c96868661236e565b610ccc576040517f8164f84200000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6040517f095ea7b30000000000000000000000000000000000000000000000000000000081526001600160a01b0386811660048301526024820186905287169063095ea7b3906044016020604051808303816000875af1158015610d34573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610d58919061356d565b610d8e576040517f8164f84200000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b610d99858484611f72565b50610da4868661236e565b610dda576040517f8164f84200000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6040517f70a082310000000000000000000000000000000000000000000000000000000081523060048201526000906001600160a01b038816906370a0823190602401602060405180830381865afa158015610e3a573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610e5e919061358a565b90508015610e7057610e7087826123fe565b856001600160a01b0316876001600160a01b03167f29c40793bffd84cb810179f15d1ceec72bc7f0785514c668ba36645cf99b7382878787604051610eb793929190613553565b60405180910390a350610ee960017f9b779b17422d0df92223018b32b4d1fa46e071723d6817e2486d003becc55f0055565b505050505050565b6000610efb612624565b507f360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc90565b610f28611c30565b610f30611c8e565b34600003610f6a576040517f7671265e00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6001600160a01b038216610faa576040517fd92e233d00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6001546040516000916001600160a01b03169034908381818185875af1925050503d8060008114610ff7576040519150601f19603f3d011682016040523d82523d6000602084013e610ffc565b606091505b5050905080611037576040517f79cacff100000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b826001600160a01b0316336001600160a01b03167fc6f891b65320c682b217616a62b51f218fee95d5f0ba83e758ef9ab4ee8e975c3460008660405161107f939291906134f7565b60405180910390a350610bd460017f9b779b17422d0df92223018b32b4d1fa46e071723d6817e2486d003becc55f0055565b6110b9611c30565b6110c1611c8e565b346000036110fb576040517f7671265e00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6001600160a01b03841661113b576040517fd92e233d00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6001546040516000916001600160a01b03169034908381818185875af1925050503d8060008114611188576040519150601f19603f3d011682016040523d82523d6000602084013e61118d565b606091505b50509050806111c8576040517f79cacff100000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b846001600160a01b0316336001600160a01b03167fc6f891b65320c682b217616a62b51f218fee95d5f0ba83e758ef9ab4ee8e975c3460008888886040516112149594939291906135a3565b60405180910390a35061094f60017f9b779b17422d0df92223018b32b4d1fa46e071723d6817e2486d003becc55f0055565b7f65d7a28e3265b37a6474929f336521b332c1681b933f6cb9f3376673440d862a61127081611b39565b610bb6612686565b600061128381611b39565b6001600160a01b0382166112c3576040517fd92e233d00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6000546001600160a01b031615611306576040517fb337f37800000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6113307f584a0b16e9f616d90ccec14a0b852c19aceccfd3d60699398a57dce2b0de01b983611b43565b5050600080547fffffffffffffffffffffffff0000000000000000000000000000000000000000166001600160a01b0392909216919091179055565b7ff0c57e16840df040f15088dc2f81fe391c3923bec73e23a9662efc9c229c6a00805468010000000000000000810460ff16159067ffffffffffffffff166000811580156113b75750825b905060008267ffffffffffffffff1660011480156113d45750303b155b9050811580156113e2575080155b15611419576040517ff92ee8a900000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b84547fffffffffffffffffffffffffffffffffffffffffffffffff0000000000000000166001178555831561147a5784547fffffffffffffffffffffffffffffffffffffffffffffff00ffffffffffffffff16680100000000000000001785555b6001600160a01b038816158061149757506001600160a01b038716155b156114ce576040517fd92e233d00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6114d66126ff565b6114de612707565b6114e66126ff565b6114ee612717565b6114f9600087611b43565b506115247f65d7a28e3265b37a6474929f336521b332c1681b933f6cb9f3376673440d862a87611b43565b50600180547fffffffffffffffffffffffff0000000000000000000000000000000000000000166001600160a01b038a161790556115827f0da06bffcb63442de88b7f8385468eaf51e47079d4fa96875938e2c27c451deb89611b43565b50600380547fffffffffffffffffffffffff0000000000000000000000000000000000000000166001600160a01b03891617905583156116175784547fffffffffffffffffffffffffffffffffffffffffffffff00ffffffffffffffff168555604051600181527fc7f505b2f371ae2175ee4913f4499e1f2633a7b5936321eed1cdaeb6115181d29060200160405180910390a15b5050505050505050565b611629611c30565b611631611c8e565b8460000361166b576040517f951e19ed00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6001600160a01b0386166116ab576040517fd92e233d00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6116b6338587611d0f565b856001600160a01b0316336001600160a01b03167fc6f891b65320c682b217616a62b51f218fee95d5f0ba83e758ef9ab4ee8e975c87878787876040516117019594939291906135a3565b60405180910390a3610ee960017f9b779b17422d0df92223018b32b4d1fa46e071723d6817e2486d003becc55f0055565b7f584a0b16e9f616d90ccec14a0b852c19aceccfd3d60699398a57dce2b0de01b961175c81611b39565b611764611c30565b61176c611c8e565b846000036117a6576040517f951e19ed00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6001600160a01b0386166117e6576040517fd92e233d00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6117fa6001600160a01b0388168787612727565b6040517f660b9de00000000000000000000000000000000000000000000000000000000081526001600160a01b0387169063660b9de09061183f908590600401613644565b600060405180830381600087803b15801561185957600080fd5b505af115801561186d573d6000803e3d6000fd5b50505050866001600160a01b0316866001600160a01b03167f1647880d5adf27692c774debf932b888ba15381ed4c4115a9eafeb68080b1436878787876040516118ba9493929190613657565b60405180910390a36118eb60017f9b779b17422d0df92223018b32b4d1fa46e071723d6817e2486d003becc55f0055565b50505050505050565b60008281527f02dd7bc7dec4dceedda775e58dd541e08a116c6c53815c0bd028192f7b626800602052604090206001015461192e81611b39565b61094f838361201b565b7f0da06bffcb63442de88b7f8385468eaf51e47079d4fa96875938e2c27c451deb61196281611b39565b61196a611c30565b611972611c8e565b6001600160a01b0385166119b2576040517fd92e233d00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6000856001600160a01b03163460405160006040518083038185875af1925050503d80600081146119ff576040519150601f19603f3d011682016040523d82523d6000602084013e611a04565b606091505b5050905080611a3f576040517facfdb44400000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6040517f660b9de00000000000000000000000000000000000000000000000000000000081526001600160a01b0387169063660b9de090611a84908690600401613644565b600060405180830381600087803b158015611a9e57600080fd5b505af1158015611ab2573d6000803e3d6000fd5b5050505060006001600160a01b0316866001600160a01b03167f1647880d5adf27692c774debf932b888ba15381ed4c4115a9eafeb68080b143634888888604051611b009493929190613657565b60405180910390a350611b3260017f9b779b17422d0df92223018b32b4d1fa46e071723d6817e2486d003becc55f0055565b5050505050565b610bb6813361279b565b60008281527f02dd7bc7dec4dceedda775e58dd541e08a116c6c53815c0bd028192f7b626800602081815260408084206001600160a01b038616855290915282205460ff16611c26576000848152602082815260408083206001600160a01b0387168452909152902080547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00166001179055611bdc3390565b6001600160a01b0316836001600160a01b0316857f2f8788117e7eff1d82e926ec794901d17c78024a50270940304540a733656f0d60405160405180910390a46001915050610748565b6000915050610748565b7fcd5ed15c6e187e77e9aee88184c21f4f2182ab5827cb3b7e07fbedcd63f033005460ff1615611c8c576040517fd93c066500000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b565b7f9b779b17422d0df92223018b32b4d1fa46e071723d6817e2486d003becc55f0080547ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe01611d09576040517f3ee5aeb500000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b60029055565b6003546001600160a01b0390811690831603611e7357611d3a6001600160a01b038316843084612828565b6002546040517f095ea7b30000000000000000000000000000000000000000000000000000000081526001600160a01b039182166004820152602481018390529083169063095ea7b3906044016020604051808303816000875af1158015611da6573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611dca919061356d565b611e00576040517f8164f84200000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6002546040517f743e0c9b000000000000000000000000000000000000000000000000000000008152600481018390526001600160a01b039091169063743e0c9b90602401600060405180830381600087803b158015611e5f57600080fd5b505af11580156118eb573d6000803e3d6000fd5b6000546040517fd936547e0000000000000000000000000000000000000000000000000000000081526001600160a01b0384811660048301529091169063d936547e90602401602060405180830381865afa158015611ed6573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611efa919061356d565b611f30576040517fac2175f100000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b600054610b7f906001600160a01b038481169186911684612828565b60017f9b779b17422d0df92223018b32b4d1fa46e071723d6817e2486d003becc55f0055565b6060600080856001600160a01b0316348686604051611f9292919061368e565b60006040518083038185875af1925050503d8060008114611fcf576040519150601f19603f3d011682016040523d82523d6000602084013e611fd4565b606091505b509150915081612010576040517facfdb44400000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b9150505b9392505050565b60008281527f02dd7bc7dec4dceedda775e58dd541e08a116c6c53815c0bd028192f7b626800602081815260408084206001600160a01b038616855290915282205460ff1615611c26576000848152602082815260408083206001600160a01b038716808552925280832080547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0016905551339287917ff6391f5c32d9c69d2a47ea670b442974b53935d1edc7fd64eb21e047a839171b9190a46001915050610748565b6120e7612861565b7fcd5ed15c6e187e77e9aee88184c21f4f2182ab5827cb3b7e07fbedcd63f0330080547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff001681557f5db9ee0a495bf2e6ff9c91a7834c1ba4fdd244a5e8aa4e537bd38aeae4b073aa335b6040516001600160a01b03909116815260200160405180910390a150565b306001600160a01b037f000000000000000000000000000000000000000000000000000000000000000016148061220857507f00000000000000000000000000000000000000000000000000000000000000006001600160a01b03166121fc7f360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc546001600160a01b031690565b6001600160a01b031614155b15611c8c576040517fe07c8dba00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6000610bd481611b39565b816001600160a01b03166352d1902d6040518163ffffffff1660e01b8152600401602060405180830381865afa9250505080156122c2575060408051601f3d9081017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe01682019092526122bf9181019061358a565b60015b612308576040517f4c9c8ce30000000000000000000000000000000000000000000000000000000081526001600160a01b03831660048201526024015b60405180910390fd5b7f360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc8114612364576040517faa1d49a4000000000000000000000000000000000000000000000000000000008152600481018290526024016122ff565b610b7f83836128bc565b6040517f095ea7b30000000000000000000000000000000000000000000000000000000081526001600160a01b038281166004830152600060248301819052919084169063095ea7b3906044016020604051808303816000875af11580156123da573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190612014919061356d565b6003546001600160a01b039081169083160361254d576002546040517f095ea7b30000000000000000000000000000000000000000000000000000000081526001600160a01b039182166004820152602481018390529083169063095ea7b3906044016020604051808303816000875af1158015612480573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906124a4919061356d565b6124da576040517f8164f84200000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6002546040517f743e0c9b000000000000000000000000000000000000000000000000000000008152600481018390526001600160a01b039091169063743e0c9b90602401600060405180830381600087803b15801561253957600080fd5b505af1158015610ee9573d6000803e3d6000fd5b6000546040517fd936547e0000000000000000000000000000000000000000000000000000000081526001600160a01b0384811660048301529091169063d936547e90602401602060405180830381865afa1580156125b0573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906125d4919061356d565b61260a576040517fac2175f100000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b600054610bd4906001600160a01b03848116911683612727565b306001600160a01b037f00000000000000000000000000000000000000000000000000000000000000001614611c8c576040517fe07c8dba00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b61268e611c30565b7fcd5ed15c6e187e77e9aee88184c21f4f2182ab5827cb3b7e07fbedcd63f0330080547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff001660011781557f62e78cea01bee320cd4e420270b5ea74000d11b0c9f74754ebdbfc544b05a25833612151565b611c8c612912565b61270f612912565b611c8c612979565b61271f612912565b611c8c612981565b6040516001600160a01b03838116602483015260448201839052610b7f91859182169063a9059cbb906064015b604051602081830303815290604052915060e01b6020820180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff83818316178352505050506129d2565b60008281527f02dd7bc7dec4dceedda775e58dd541e08a116c6c53815c0bd028192f7b626800602090815260408083206001600160a01b038516845290915290205460ff16610bd4576040517fe2517d3f0000000000000000000000000000000000000000000000000000000081526001600160a01b0382166004820152602481018390526044016122ff565b6040516001600160a01b03848116602483015283811660448301526064820183905261094f9186918216906323b872dd90608401612754565b7fcd5ed15c6e187e77e9aee88184c21f4f2182ab5827cb3b7e07fbedcd63f033005460ff16611c8c576040517f8dfc202b00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6128c582612a4e565b6040516001600160a01b038316907fbc7cd75a20ee27fd9adebab32041f755214dbc6bffa90cc0225b39da2e5c2d3b90600090a280511561290a57610b7f8282612af6565b610bd4612b6c565b7ff0c57e16840df040f15088dc2f81fe391c3923bec73e23a9662efc9c229c6a005468010000000000000000900460ff16611c8c576040517fd7e6bcf800000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b611f4c612912565b612989612912565b7fcd5ed15c6e187e77e9aee88184c21f4f2182ab5827cb3b7e07fbedcd63f0330080547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00169055565b60006129e76001600160a01b03841683612ba4565b90508051600014158015612a0c575080806020019051810190612a0a919061356d565b155b15610b7f576040517f5274afe70000000000000000000000000000000000000000000000000000000081526001600160a01b03841660048201526024016122ff565b806001600160a01b03163b600003612a9d576040517f4c9c8ce30000000000000000000000000000000000000000000000000000000081526001600160a01b03821660048201526024016122ff565b7f360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc80547fffffffffffffffffffffffff0000000000000000000000000000000000000000166001600160a01b0392909216919091179055565b6060600080846001600160a01b031684604051612b13919061369e565b600060405180830381855af49150503d8060008114612b4e576040519150601f19603f3d011682016040523d82523d6000602084013e612b53565b606091505b5091509150612b63858383612bb2565b95945050505050565b3415611c8c576040517fb398979f00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b606061201483836000612c27565b606082612bc757612bc282612cdd565b612014565b8151158015612bde57506001600160a01b0384163b155b15612c20576040517f9996b3150000000000000000000000000000000000000000000000000000000081526001600160a01b03851660048201526024016122ff565b5080612014565b606081471015612c65576040517fcd7860590000000000000000000000000000000000000000000000000000000081523060048201526024016122ff565b600080856001600160a01b03168486604051612c81919061369e565b60006040518083038185875af1925050503d8060008114612cbe576040519150601f19603f3d011682016040523d82523d6000602084013e612cc3565b606091505b5091509150612cd3868383612bb2565b9695505050505050565b805115612ced5780518082602001fd5b6040517f1425ea4200000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b600060208284031215612d3157600080fd5b81357fffffffff000000000000000000000000000000000000000000000000000000008116811461201457600080fd5b80356001600160a01b0381168114612d7857600080fd5b919050565b600060208284031215612d8f57600080fd5b61201482612d61565b600060a08284031215612daa57600080fd5b50919050565b60008060008060808587031215612dc657600080fd5b612dcf85612d61565b935060208501359250612de460408601612d61565b9150606085013567ffffffffffffffff811115612e0057600080fd5b612e0c87828801612d98565b91505092959194509250565b60008083601f840112612e2a57600080fd5b50813567ffffffffffffffff811115612e4257600080fd5b602083019150836020828501011115612e5a57600080fd5b9250929050565b60008060008060608587031215612e7757600080fd5b612e8085612d61565b9350602085013567ffffffffffffffff811115612e9c57600080fd5b612ea887828801612e18565b909450925050604085013567ffffffffffffffff811115612e0057600080fd5b600080600060408486031215612edd57600080fd5b612ee684612d61565b9250602084013567ffffffffffffffff811115612f0257600080fd5b612f0e86828701612e18565b9497909650939450505050565b60005b83811015612f36578181015183820152602001612f1e565b50506000910152565b60008151808452612f57816020860160208601612f1b565b601f017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0169290920160200192915050565b6020815260006120146020830184612f3f565b600060208284031215612fae57600080fd5b5035919050565b60008060408385031215612fc857600080fd5b82359150612fd860208401612d61565b90509250929050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b6000806040838503121561302357600080fd5b61302c83612d61565b9150602083013567ffffffffffffffff81111561304857600080fd5b8301601f8101851361305957600080fd5b803567ffffffffffffffff81111561307357613073612fe1565b6040517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0603f7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0601f8501160116810181811067ffffffffffffffff821117156130df576130df612fe1565b6040528181528282016020018710156130f757600080fd5b816020840160208301376000602083830101528093505050509250929050565b60008060008060006080868803121561312f57600080fd5b61313886612d61565b945061314660208701612d61565b935060408601359250606086013567ffffffffffffffff81111561316957600080fd5b61317588828901612e18565b969995985093965092949392505050565b6000806040838503121561319957600080fd5b6131a283612d61565b9150602083013567ffffffffffffffff8111156131be57600080fd5b6131ca85828601612d98565b9150509250929050565b6000806000606084860312156131e957600080fd5b6131f284612d61565b925061320060208501612d61565b915061320e60408501612d61565b90509250925092565b60008060008060008060a0878903121561323057600080fd5b61323987612d61565b95506020870135945061324e60408801612d61565b9350606087013567ffffffffffffffff81111561326a57600080fd5b61327689828a01612e18565b909450925050608087013567ffffffffffffffff81111561329657600080fd5b6132a289828a01612d98565b9150509295509295509295565b600060608284031215612daa57600080fd5b60008060008060008060a087890312156132da57600080fd5b6132e387612d61565b95506132f160208801612d61565b945060408701359350606087013567ffffffffffffffff81111561331457600080fd5b61332089828a01612e18565b909450925050608087013567ffffffffffffffff81111561334057600080fd5b6132a289828a016132af565b6000806000806060858703121561336257600080fd5b61336b85612d61565b9350602085013567ffffffffffffffff81111561338757600080fd5b61339387828801612e18565b909450925050604085013567ffffffffffffffff8111156133b357600080fd5b612e0c878288016132af565b8015158114610bb657600080fd5b60008083357fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe184360301811261340257600080fd5b830160208101925035905067ffffffffffffffff81111561342257600080fd5b803603821315612e5a57600080fd5b8183528181602085013750600060208284010152600060207fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0601f840116840101905092915050565b6001600160a01b0361348b82612d61565b1682526000602082013561349e816133bf565b151560208401526001600160a01b036134b960408401612d61565b1660408401526134cc60608301836133cd565b60a060608601526134e160a086018284613431565b6080948501359590940194909452509092915050565b8381526001600160a01b0383166020820152608060408201526000608082015260a060608201526000612b6360a083018461347a565b604081526000613541604083018587613431565b8281036020840152612cd3818561347a565b838152604060208201526000612b63604083018486613431565b60006020828403121561357f57600080fd5b8151612014816133bf565b60006020828403121561359c57600080fd5b5051919050565b8581526001600160a01b03851660208201526080604082015260006135cc608083018587613431565b82810360608401526135de818561347a565b98975050505050505050565b6001600160a01b036135fb82612d61565b1682526000602082013567ffffffffffffffff811680821461361c57600080fd5b60208501525061362f60408301836133cd565b60606040860152612b63606086018284613431565b60208152600061201460208301846135ea565b848152606060208201526000613671606083018587613431565b828103604084015261368381856135ea565b979650505050505050565b8183823760009101908152919050565b600082516136b0818460208701612f1b565b919091019291505056fea2646970667358221220c87250f92d4ce753add6a7cc4bdbc2e6885f5d3cad06fa9c00c5899f615d88ea64736f6c634300081a0033","sourceMap":"1053:13852:2:-:0;;;1171:4:42;1128:48;;2057:53:2;;;;;;;;;-1:-1:-1;2081:22:2;:20;:22::i;:::-;1053:13852;;7711:422:41;8870:21;7900:15;;;;;;;7896:76;;;7938:23;;-1:-1:-1;;;7938:23:41;;;;;;;;;;;7896:76;7985:14;;-1:-1:-1;;;;;7985:14:41;;;:34;7981:146;;8035:33;;-1:-1:-1;;;;;;8035:33:41;-1:-1:-1;;;;;8035:33:41;;;;;8087:29;;158:50:108;;;8087:29:41;;146:2:108;131:18;8087:29:41;;;;;;;7981:146;7760:373;7711:422::o;14:200:108:-;1053:13852:2;;;;;;;;;;;;;;;;;;;;;;","linkReferences":{}},"deployedBytecode":{"object":"0x6080604052600436106101e35760003560e01c80635d62c86011610102578063ae7a3a6f11610095578063d547741f11610064578063d547741f1461062e578063dda79b751461064e578063e63ab1e91461066e578063f7ad60db146106a257600080fd5b8063ae7a3a6f146105ae578063c0c53b8b146105ce578063d09e3b78146105ee578063d0b492c31461060e57600080fd5b806391d14854116100d157806391d14854146104b7578063a217fddf1461051c578063a783c78914610531578063ad3cb1cc1461056557600080fd5b80635d62c86014610448578063726ac97c1461047c578063744b9b8b1461048f5780638456cb59146104a257600080fd5b806336568abe1161017a57806352d1902d1161014957806352d1902d146103bc57806357bec62f146103d15780635b112591146103f15780635c975abb1461041157600080fd5b806336568abe146103545780633f4ba83a146103745780634f1ef286146103895780635131ab591461039c57600080fd5b80631cff79cd116101b65780631cff79cd1461027f57806321e093b11461029f578063248a9ca3146102d75780632f2ff15d1461033457600080fd5b806301ffc9a7146101e857806310188aef1461021d578063102614b01461023f5780631becceb41461025f575b600080fd5b3480156101f457600080fd5b50610208610203366004612d1f565b6106b5565b60405190151581526020015b60405180910390f35b34801561022957600080fd5b5061023d610238366004612d7d565b61074e565b005b34801561024b57600080fd5b5061023d61025a366004612db0565b610842565b34801561026b57600080fd5b5061023d61027a366004612e61565b610955565b61029261028d366004612ec8565b6109ec565b6040516102149190612f89565b3480156102ab57600080fd5b506003546102bf906001600160a01b031681565b6040516001600160a01b039091168152602001610214565b3480156102e357600080fd5b506103266102f2366004612f9c565b60009081527f02dd7bc7dec4dceedda775e58dd541e08a116c6c53815c0bd028192f7b626800602052604090206001015490565b604051908152602001610214565b34801561034057600080fd5b5061023d61034f366004612fb5565b610aef565b34801561036057600080fd5b5061023d61036f366004612fb5565b610b33565b34801561038057600080fd5b5061023d610b84565b61023d610397366004613010565b610bb9565b3480156103a857600080fd5b5061023d6103b7366004613117565b610bd8565b3480156103c857600080fd5b50610326610ef1565b3480156103dd57600080fd5b506002546102bf906001600160a01b031681565b3480156103fd57600080fd5b506001546102bf906001600160a01b031681565b34801561041d57600080fd5b507fcd5ed15c6e187e77e9aee88184c21f4f2182ab5827cb3b7e07fbedcd63f033005460ff16610208565b34801561045457600080fd5b506103267f584a0b16e9f616d90ccec14a0b852c19aceccfd3d60699398a57dce2b0de01b981565b61023d61048a366004613186565b610f20565b61023d61049d366004612e61565b6110b1565b3480156104ae57600080fd5b5061023d611246565b3480156104c357600080fd5b506102086104d2366004612fb5565b60009182527f02dd7bc7dec4dceedda775e58dd541e08a116c6c53815c0bd028192f7b626800602090815260408084206001600160a01b0393909316845291905290205460ff1690565b34801561052857600080fd5b50610326600081565b34801561053d57600080fd5b506103267f0da06bffcb63442de88b7f8385468eaf51e47079d4fa96875938e2c27c451deb81565b34801561057157600080fd5b506102926040518060400160405280600581526020017f352e302e3000000000000000000000000000000000000000000000000000000081525081565b3480156105ba57600080fd5b5061023d6105c9366004612d7d565b611278565b3480156105da57600080fd5b5061023d6105e93660046131d4565b61136c565b3480156105fa57600080fd5b5061023d610609366004613217565b611621565b34801561061a57600080fd5b5061023d6106293660046132c1565b611732565b34801561063a57600080fd5b5061023d610649366004612fb5565b6118f4565b34801561065a57600080fd5b506000546102bf906001600160a01b031681565b34801561067a57600080fd5b506103267f65d7a28e3265b37a6474929f336521b332c1681b933f6cb9f3376673440d862a81565b61023d6106b036600461334c565b611938565b60007fffffffff0000000000000000000000000000000000000000000000000000000082167f7965db0b00000000000000000000000000000000000000000000000000000000148061074857507f01ffc9a7000000000000000000000000000000000000000000000000000000007fffffffff000000000000000000000000000000000000000000000000000000008316145b92915050565b600061075981611b39565b6001600160a01b038216610799576040517fd92e233d00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6002546001600160a01b0316156107dc576040517f0c8dc01600000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6108067f584a0b16e9f616d90ccec14a0b852c19aceccfd3d60699398a57dce2b0de01b983611b43565b5050600280547fffffffffffffffffffffffff0000000000000000000000000000000000000000166001600160a01b0392909216919091179055565b61084a611c30565b610852611c8e565b8260000361088c576040517f951e19ed00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6001600160a01b0384166108cc576040517fd92e233d00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6108d7338385611d0f565b836001600160a01b0316336001600160a01b03167fc6f891b65320c682b217616a62b51f218fee95d5f0ba83e758ef9ab4ee8e975c85858560405161091e939291906134f7565b60405180910390a361094f60017f9b779b17422d0df92223018b32b4d1fa46e071723d6817e2486d003becc55f0055565b50505050565b61095d611c30565b610965611c8e565b6001600160a01b0384166109a5576040517fd92e233d00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b836001600160a01b0316336001600160a01b03167fd34634f30f94a646fdf4ce7078f38fc5fa0d3f0b193658facea4e3e43330d97485858560405161091e9392919061352d565b60607f0da06bffcb63442de88b7f8385468eaf51e47079d4fa96875938e2c27c451deb610a1881611b39565b610a20611c30565b610a28611c8e565b6001600160a01b038516610a68576040517fd92e233d00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6000610a75868686611f72565b9050856001600160a01b03167fcaf938de11c367272220bfd1d2baa99ca46665e7bc4d85f00adb51b90fe1fa9f348787604051610ab493929190613553565b60405180910390a29150610ae760017f9b779b17422d0df92223018b32b4d1fa46e071723d6817e2486d003becc55f0055565b509392505050565b60008281527f02dd7bc7dec4dceedda775e58dd541e08a116c6c53815c0bd028192f7b6268006020526040902060010154610b2981611b39565b61094f8383611b43565b6001600160a01b0381163314610b75576040517f6697b23200000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b610b7f828261201b565b505050565b7f65d7a28e3265b37a6474929f336521b332c1681b933f6cb9f3376673440d862a610bae81611b39565b610bb66120df565b50565b610bc161216f565b610bca8261223f565b610bd4828261224a565b5050565b7f584a0b16e9f616d90ccec14a0b852c19aceccfd3d60699398a57dce2b0de01b9610c0281611b39565b610c0a611c30565b610c12611c8e565b83600003610c4c576040517f951e19ed00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6001600160a01b038516610c8c576040517fd92e233d00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b610c96868661236e565b610ccc576040517f8164f84200000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6040517f095ea7b30000000000000000000000000000000000000000000000000000000081526001600160a01b0386811660048301526024820186905287169063095ea7b3906044016020604051808303816000875af1158015610d34573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610d58919061356d565b610d8e576040517f8164f84200000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b610d99858484611f72565b50610da4868661236e565b610dda576040517f8164f84200000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6040517f70a082310000000000000000000000000000000000000000000000000000000081523060048201526000906001600160a01b038816906370a0823190602401602060405180830381865afa158015610e3a573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610e5e919061358a565b90508015610e7057610e7087826123fe565b856001600160a01b0316876001600160a01b03167f29c40793bffd84cb810179f15d1ceec72bc7f0785514c668ba36645cf99b7382878787604051610eb793929190613553565b60405180910390a350610ee960017f9b779b17422d0df92223018b32b4d1fa46e071723d6817e2486d003becc55f0055565b505050505050565b6000610efb612624565b507f360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc90565b610f28611c30565b610f30611c8e565b34600003610f6a576040517f7671265e00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6001600160a01b038216610faa576040517fd92e233d00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6001546040516000916001600160a01b03169034908381818185875af1925050503d8060008114610ff7576040519150601f19603f3d011682016040523d82523d6000602084013e610ffc565b606091505b5050905080611037576040517f79cacff100000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b826001600160a01b0316336001600160a01b03167fc6f891b65320c682b217616a62b51f218fee95d5f0ba83e758ef9ab4ee8e975c3460008660405161107f939291906134f7565b60405180910390a350610bd460017f9b779b17422d0df92223018b32b4d1fa46e071723d6817e2486d003becc55f0055565b6110b9611c30565b6110c1611c8e565b346000036110fb576040517f7671265e00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6001600160a01b03841661113b576040517fd92e233d00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6001546040516000916001600160a01b03169034908381818185875af1925050503d8060008114611188576040519150601f19603f3d011682016040523d82523d6000602084013e61118d565b606091505b50509050806111c8576040517f79cacff100000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b846001600160a01b0316336001600160a01b03167fc6f891b65320c682b217616a62b51f218fee95d5f0ba83e758ef9ab4ee8e975c3460008888886040516112149594939291906135a3565b60405180910390a35061094f60017f9b779b17422d0df92223018b32b4d1fa46e071723d6817e2486d003becc55f0055565b7f65d7a28e3265b37a6474929f336521b332c1681b933f6cb9f3376673440d862a61127081611b39565b610bb6612686565b600061128381611b39565b6001600160a01b0382166112c3576040517fd92e233d00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6000546001600160a01b031615611306576040517fb337f37800000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6113307f584a0b16e9f616d90ccec14a0b852c19aceccfd3d60699398a57dce2b0de01b983611b43565b5050600080547fffffffffffffffffffffffff0000000000000000000000000000000000000000166001600160a01b0392909216919091179055565b7ff0c57e16840df040f15088dc2f81fe391c3923bec73e23a9662efc9c229c6a00805468010000000000000000810460ff16159067ffffffffffffffff166000811580156113b75750825b905060008267ffffffffffffffff1660011480156113d45750303b155b9050811580156113e2575080155b15611419576040517ff92ee8a900000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b84547fffffffffffffffffffffffffffffffffffffffffffffffff0000000000000000166001178555831561147a5784547fffffffffffffffffffffffffffffffffffffffffffffff00ffffffffffffffff16680100000000000000001785555b6001600160a01b038816158061149757506001600160a01b038716155b156114ce576040517fd92e233d00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6114d66126ff565b6114de612707565b6114e66126ff565b6114ee612717565b6114f9600087611b43565b506115247f65d7a28e3265b37a6474929f336521b332c1681b933f6cb9f3376673440d862a87611b43565b50600180547fffffffffffffffffffffffff0000000000000000000000000000000000000000166001600160a01b038a161790556115827f0da06bffcb63442de88b7f8385468eaf51e47079d4fa96875938e2c27c451deb89611b43565b50600380547fffffffffffffffffffffffff0000000000000000000000000000000000000000166001600160a01b03891617905583156116175784547fffffffffffffffffffffffffffffffffffffffffffffff00ffffffffffffffff168555604051600181527fc7f505b2f371ae2175ee4913f4499e1f2633a7b5936321eed1cdaeb6115181d29060200160405180910390a15b5050505050505050565b611629611c30565b611631611c8e565b8460000361166b576040517f951e19ed00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6001600160a01b0386166116ab576040517fd92e233d00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6116b6338587611d0f565b856001600160a01b0316336001600160a01b03167fc6f891b65320c682b217616a62b51f218fee95d5f0ba83e758ef9ab4ee8e975c87878787876040516117019594939291906135a3565b60405180910390a3610ee960017f9b779b17422d0df92223018b32b4d1fa46e071723d6817e2486d003becc55f0055565b7f584a0b16e9f616d90ccec14a0b852c19aceccfd3d60699398a57dce2b0de01b961175c81611b39565b611764611c30565b61176c611c8e565b846000036117a6576040517f951e19ed00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6001600160a01b0386166117e6576040517fd92e233d00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6117fa6001600160a01b0388168787612727565b6040517f660b9de00000000000000000000000000000000000000000000000000000000081526001600160a01b0387169063660b9de09061183f908590600401613644565b600060405180830381600087803b15801561185957600080fd5b505af115801561186d573d6000803e3d6000fd5b50505050866001600160a01b0316866001600160a01b03167f1647880d5adf27692c774debf932b888ba15381ed4c4115a9eafeb68080b1436878787876040516118ba9493929190613657565b60405180910390a36118eb60017f9b779b17422d0df92223018b32b4d1fa46e071723d6817e2486d003becc55f0055565b50505050505050565b60008281527f02dd7bc7dec4dceedda775e58dd541e08a116c6c53815c0bd028192f7b626800602052604090206001015461192e81611b39565b61094f838361201b565b7f0da06bffcb63442de88b7f8385468eaf51e47079d4fa96875938e2c27c451deb61196281611b39565b61196a611c30565b611972611c8e565b6001600160a01b0385166119b2576040517fd92e233d00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6000856001600160a01b03163460405160006040518083038185875af1925050503d80600081146119ff576040519150601f19603f3d011682016040523d82523d6000602084013e611a04565b606091505b5050905080611a3f576040517facfdb44400000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6040517f660b9de00000000000000000000000000000000000000000000000000000000081526001600160a01b0387169063660b9de090611a84908690600401613644565b600060405180830381600087803b158015611a9e57600080fd5b505af1158015611ab2573d6000803e3d6000fd5b5050505060006001600160a01b0316866001600160a01b03167f1647880d5adf27692c774debf932b888ba15381ed4c4115a9eafeb68080b143634888888604051611b009493929190613657565b60405180910390a350611b3260017f9b779b17422d0df92223018b32b4d1fa46e071723d6817e2486d003becc55f0055565b5050505050565b610bb6813361279b565b60008281527f02dd7bc7dec4dceedda775e58dd541e08a116c6c53815c0bd028192f7b626800602081815260408084206001600160a01b038616855290915282205460ff16611c26576000848152602082815260408083206001600160a01b0387168452909152902080547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00166001179055611bdc3390565b6001600160a01b0316836001600160a01b0316857f2f8788117e7eff1d82e926ec794901d17c78024a50270940304540a733656f0d60405160405180910390a46001915050610748565b6000915050610748565b7fcd5ed15c6e187e77e9aee88184c21f4f2182ab5827cb3b7e07fbedcd63f033005460ff1615611c8c576040517fd93c066500000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b565b7f9b779b17422d0df92223018b32b4d1fa46e071723d6817e2486d003becc55f0080547ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe01611d09576040517f3ee5aeb500000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b60029055565b6003546001600160a01b0390811690831603611e7357611d3a6001600160a01b038316843084612828565b6002546040517f095ea7b30000000000000000000000000000000000000000000000000000000081526001600160a01b039182166004820152602481018390529083169063095ea7b3906044016020604051808303816000875af1158015611da6573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611dca919061356d565b611e00576040517f8164f84200000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6002546040517f743e0c9b000000000000000000000000000000000000000000000000000000008152600481018390526001600160a01b039091169063743e0c9b90602401600060405180830381600087803b158015611e5f57600080fd5b505af11580156118eb573d6000803e3d6000fd5b6000546040517fd936547e0000000000000000000000000000000000000000000000000000000081526001600160a01b0384811660048301529091169063d936547e90602401602060405180830381865afa158015611ed6573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611efa919061356d565b611f30576040517fac2175f100000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b600054610b7f906001600160a01b038481169186911684612828565b60017f9b779b17422d0df92223018b32b4d1fa46e071723d6817e2486d003becc55f0055565b6060600080856001600160a01b0316348686604051611f9292919061368e565b60006040518083038185875af1925050503d8060008114611fcf576040519150601f19603f3d011682016040523d82523d6000602084013e611fd4565b606091505b509150915081612010576040517facfdb44400000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b9150505b9392505050565b60008281527f02dd7bc7dec4dceedda775e58dd541e08a116c6c53815c0bd028192f7b626800602081815260408084206001600160a01b038616855290915282205460ff1615611c26576000848152602082815260408083206001600160a01b038716808552925280832080547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0016905551339287917ff6391f5c32d9c69d2a47ea670b442974b53935d1edc7fd64eb21e047a839171b9190a46001915050610748565b6120e7612861565b7fcd5ed15c6e187e77e9aee88184c21f4f2182ab5827cb3b7e07fbedcd63f0330080547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff001681557f5db9ee0a495bf2e6ff9c91a7834c1ba4fdd244a5e8aa4e537bd38aeae4b073aa335b6040516001600160a01b03909116815260200160405180910390a150565b306001600160a01b037f000000000000000000000000000000000000000000000000000000000000000016148061220857507f00000000000000000000000000000000000000000000000000000000000000006001600160a01b03166121fc7f360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc546001600160a01b031690565b6001600160a01b031614155b15611c8c576040517fe07c8dba00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6000610bd481611b39565b816001600160a01b03166352d1902d6040518163ffffffff1660e01b8152600401602060405180830381865afa9250505080156122c2575060408051601f3d9081017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe01682019092526122bf9181019061358a565b60015b612308576040517f4c9c8ce30000000000000000000000000000000000000000000000000000000081526001600160a01b03831660048201526024015b60405180910390fd5b7f360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc8114612364576040517faa1d49a4000000000000000000000000000000000000000000000000000000008152600481018290526024016122ff565b610b7f83836128bc565b6040517f095ea7b30000000000000000000000000000000000000000000000000000000081526001600160a01b038281166004830152600060248301819052919084169063095ea7b3906044016020604051808303816000875af11580156123da573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190612014919061356d565b6003546001600160a01b039081169083160361254d576002546040517f095ea7b30000000000000000000000000000000000000000000000000000000081526001600160a01b039182166004820152602481018390529083169063095ea7b3906044016020604051808303816000875af1158015612480573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906124a4919061356d565b6124da576040517f8164f84200000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6002546040517f743e0c9b000000000000000000000000000000000000000000000000000000008152600481018390526001600160a01b039091169063743e0c9b90602401600060405180830381600087803b15801561253957600080fd5b505af1158015610ee9573d6000803e3d6000fd5b6000546040517fd936547e0000000000000000000000000000000000000000000000000000000081526001600160a01b0384811660048301529091169063d936547e90602401602060405180830381865afa1580156125b0573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906125d4919061356d565b61260a576040517fac2175f100000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b600054610bd4906001600160a01b03848116911683612727565b306001600160a01b037f00000000000000000000000000000000000000000000000000000000000000001614611c8c576040517fe07c8dba00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b61268e611c30565b7fcd5ed15c6e187e77e9aee88184c21f4f2182ab5827cb3b7e07fbedcd63f0330080547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff001660011781557f62e78cea01bee320cd4e420270b5ea74000d11b0c9f74754ebdbfc544b05a25833612151565b611c8c612912565b61270f612912565b611c8c612979565b61271f612912565b611c8c612981565b6040516001600160a01b03838116602483015260448201839052610b7f91859182169063a9059cbb906064015b604051602081830303815290604052915060e01b6020820180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff83818316178352505050506129d2565b60008281527f02dd7bc7dec4dceedda775e58dd541e08a116c6c53815c0bd028192f7b626800602090815260408083206001600160a01b038516845290915290205460ff16610bd4576040517fe2517d3f0000000000000000000000000000000000000000000000000000000081526001600160a01b0382166004820152602481018390526044016122ff565b6040516001600160a01b03848116602483015283811660448301526064820183905261094f9186918216906323b872dd90608401612754565b7fcd5ed15c6e187e77e9aee88184c21f4f2182ab5827cb3b7e07fbedcd63f033005460ff16611c8c576040517f8dfc202b00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6128c582612a4e565b6040516001600160a01b038316907fbc7cd75a20ee27fd9adebab32041f755214dbc6bffa90cc0225b39da2e5c2d3b90600090a280511561290a57610b7f8282612af6565b610bd4612b6c565b7ff0c57e16840df040f15088dc2f81fe391c3923bec73e23a9662efc9c229c6a005468010000000000000000900460ff16611c8c576040517fd7e6bcf800000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b611f4c612912565b612989612912565b7fcd5ed15c6e187e77e9aee88184c21f4f2182ab5827cb3b7e07fbedcd63f0330080547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00169055565b60006129e76001600160a01b03841683612ba4565b90508051600014158015612a0c575080806020019051810190612a0a919061356d565b155b15610b7f576040517f5274afe70000000000000000000000000000000000000000000000000000000081526001600160a01b03841660048201526024016122ff565b806001600160a01b03163b600003612a9d576040517f4c9c8ce30000000000000000000000000000000000000000000000000000000081526001600160a01b03821660048201526024016122ff565b7f360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc80547fffffffffffffffffffffffff0000000000000000000000000000000000000000166001600160a01b0392909216919091179055565b6060600080846001600160a01b031684604051612b13919061369e565b600060405180830381855af49150503d8060008114612b4e576040519150601f19603f3d011682016040523d82523d6000602084013e612b53565b606091505b5091509150612b63858383612bb2565b95945050505050565b3415611c8c576040517fb398979f00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b606061201483836000612c27565b606082612bc757612bc282612cdd565b612014565b8151158015612bde57506001600160a01b0384163b155b15612c20576040517f9996b3150000000000000000000000000000000000000000000000000000000081526001600160a01b03851660048201526024016122ff565b5080612014565b606081471015612c65576040517fcd7860590000000000000000000000000000000000000000000000000000000081523060048201526024016122ff565b600080856001600160a01b03168486604051612c81919061369e565b60006040518083038185875af1925050503d8060008114612cbe576040519150601f19603f3d011682016040523d82523d6000602084013e612cc3565b606091505b5091509150612cd3868383612bb2565b9695505050505050565b805115612ced5780518082602001fd5b6040517f1425ea4200000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b600060208284031215612d3157600080fd5b81357fffffffff000000000000000000000000000000000000000000000000000000008116811461201457600080fd5b80356001600160a01b0381168114612d7857600080fd5b919050565b600060208284031215612d8f57600080fd5b61201482612d61565b600060a08284031215612daa57600080fd5b50919050565b60008060008060808587031215612dc657600080fd5b612dcf85612d61565b935060208501359250612de460408601612d61565b9150606085013567ffffffffffffffff811115612e0057600080fd5b612e0c87828801612d98565b91505092959194509250565b60008083601f840112612e2a57600080fd5b50813567ffffffffffffffff811115612e4257600080fd5b602083019150836020828501011115612e5a57600080fd5b9250929050565b60008060008060608587031215612e7757600080fd5b612e8085612d61565b9350602085013567ffffffffffffffff811115612e9c57600080fd5b612ea887828801612e18565b909450925050604085013567ffffffffffffffff811115612e0057600080fd5b600080600060408486031215612edd57600080fd5b612ee684612d61565b9250602084013567ffffffffffffffff811115612f0257600080fd5b612f0e86828701612e18565b9497909650939450505050565b60005b83811015612f36578181015183820152602001612f1e565b50506000910152565b60008151808452612f57816020860160208601612f1b565b601f017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0169290920160200192915050565b6020815260006120146020830184612f3f565b600060208284031215612fae57600080fd5b5035919050565b60008060408385031215612fc857600080fd5b82359150612fd860208401612d61565b90509250929050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b6000806040838503121561302357600080fd5b61302c83612d61565b9150602083013567ffffffffffffffff81111561304857600080fd5b8301601f8101851361305957600080fd5b803567ffffffffffffffff81111561307357613073612fe1565b6040517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0603f7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0601f8501160116810181811067ffffffffffffffff821117156130df576130df612fe1565b6040528181528282016020018710156130f757600080fd5b816020840160208301376000602083830101528093505050509250929050565b60008060008060006080868803121561312f57600080fd5b61313886612d61565b945061314660208701612d61565b935060408601359250606086013567ffffffffffffffff81111561316957600080fd5b61317588828901612e18565b969995985093965092949392505050565b6000806040838503121561319957600080fd5b6131a283612d61565b9150602083013567ffffffffffffffff8111156131be57600080fd5b6131ca85828601612d98565b9150509250929050565b6000806000606084860312156131e957600080fd5b6131f284612d61565b925061320060208501612d61565b915061320e60408501612d61565b90509250925092565b60008060008060008060a0878903121561323057600080fd5b61323987612d61565b95506020870135945061324e60408801612d61565b9350606087013567ffffffffffffffff81111561326a57600080fd5b61327689828a01612e18565b909450925050608087013567ffffffffffffffff81111561329657600080fd5b6132a289828a01612d98565b9150509295509295509295565b600060608284031215612daa57600080fd5b60008060008060008060a087890312156132da57600080fd5b6132e387612d61565b95506132f160208801612d61565b945060408701359350606087013567ffffffffffffffff81111561331457600080fd5b61332089828a01612e18565b909450925050608087013567ffffffffffffffff81111561334057600080fd5b6132a289828a016132af565b6000806000806060858703121561336257600080fd5b61336b85612d61565b9350602085013567ffffffffffffffff81111561338757600080fd5b61339387828801612e18565b909450925050604085013567ffffffffffffffff8111156133b357600080fd5b612e0c878288016132af565b8015158114610bb657600080fd5b60008083357fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe184360301811261340257600080fd5b830160208101925035905067ffffffffffffffff81111561342257600080fd5b803603821315612e5a57600080fd5b8183528181602085013750600060208284010152600060207fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0601f840116840101905092915050565b6001600160a01b0361348b82612d61565b1682526000602082013561349e816133bf565b151560208401526001600160a01b036134b960408401612d61565b1660408401526134cc60608301836133cd565b60a060608601526134e160a086018284613431565b6080948501359590940194909452509092915050565b8381526001600160a01b0383166020820152608060408201526000608082015260a060608201526000612b6360a083018461347a565b604081526000613541604083018587613431565b8281036020840152612cd3818561347a565b838152604060208201526000612b63604083018486613431565b60006020828403121561357f57600080fd5b8151612014816133bf565b60006020828403121561359c57600080fd5b5051919050565b8581526001600160a01b03851660208201526080604082015260006135cc608083018587613431565b82810360608401526135de818561347a565b98975050505050505050565b6001600160a01b036135fb82612d61565b1682526000602082013567ffffffffffffffff811680821461361c57600080fd5b60208501525061362f60408301836133cd565b60606040860152612b63606086018284613431565b60208152600061201460208301846135ea565b848152606060208201526000613671606083018587613431565b828103604084015261368381856135ea565b979650505050505050565b8183823760009101908152919050565b600082516136b0818460208701612f1b565b919091019291505056fea2646970667358221220c87250f92d4ce753add6a7cc4bdbc2e6885f5d3cad06fa9c00c5899f615d88ea64736f6c634300081a0033","sourceMap":"1053:13852:2:-:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;3443:202:40;;;;;;;;;;-1:-1:-1;3443:202:40;;;;;:::i;:::-;;:::i;:::-;;;516:14:108;;509:22;491:41;;479:2;464:18;3443:202:40;;;;;;;;12007:324:2;;;;;;;;;;-1:-1:-1;12007:324:2;;;;;:::i;:::-;;:::i;:::-;;8785:475;;;;;;;;;;-1:-1:-1;8785:475:2;;;;;:::i;:::-;;:::i;11165:320::-;;;;;;;;;;-1:-1:-1;11165:320:2;;;;;:::i;:::-;;:::i;4952:424::-;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;1597:24::-;;;;;;;;;;-1:-1:-1;1597:24:2;;;;-1:-1:-1;;;;;1597:24:2;;;;;;-1:-1:-1;;;;;4299:55:108;;;4281:74;;4269:2;4254:18;1597:24:2;4135:226:108;4759:191:40;;;;;;;;;;-1:-1:-1;4759:191:40;;;;;:::i;:::-;4824:7;4919:14;;;2920:28;4919:14;;;;;:24;;;;4759:191;;;;4743:25:108;;;4731:2;4716:18;4759:191:40;4597:177:108;5246:136:40;;;;;;;;;;-1:-1:-1;5246:136:40;;;;;:::i;:::-;;:::i;6348:245::-;;;;;;;;;;-1:-1:-1;6348:245:40;;;;;:::i;:::-;;:::i;3731:77:2:-;;;;;;;;;;;;;:::i;4158:214:42:-;;;;;;:::i;:::-;;:::i;5834:1032:2:-;;;;;;;;;;-1:-1:-1;5834:1032:2;;;;;:::i;:::-;;:::i;3705:134:42:-;;;;;;;;;;;;;:::i;1507:28:2:-;;;;;;;;;;-1:-1:-1;1507:28:2;;;;-1:-1:-1;;;;;1507:28:2;;;1417:25;;;;;;;;;;-1:-1:-1;1417:25:2;;;;-1:-1:-1;;;;;1417:25:2;;;2692:145:44;;;;;;;;;;-1:-1:-1;1270:23:44;2821:9;;;2692:145;;1800:76:2;;;;;;;;;;;;1845:31;1800:76;;8001:508;;;;;;:::i;:::-;;:::i;9500:552::-;;;;;;:::i;:::-;;:::i;3618:73::-;;;;;;;;;;;;;:::i;3732:207:40:-;;;;;;;;;;-1:-1:-1;3732:207:40;;;;;:::i;:::-;3809:4;3901:14;;;2920:28;3901:14;;;;;;;;-1:-1:-1;;;;;3901:31:40;;;;;;;;;;;;;;;3732:207;2317:49;;;;;;;;;;-1:-1:-1;2317:49:40;2362:4;2317:49;;1678:56:2;;;;;;;;;;;;1713:21;1678:56;;1819:58:42;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;11599:284:2;;;;;;;;;;-1:-1:-1;11599:284:2;;;;;:::i;:::-;;:::i;2308:543::-;;;;;;;;;;-1:-1:-1;2308:543:2;;;;;:::i;:::-;;:::i;10419:519::-;;;;;;;;;;-1:-1:-1;10419:519:2;;;;;:::i;:::-;;:::i;7290:562::-;;;;;;;;;;-1:-1:-1;7290:562:2;;;;;:::i;:::-;;:::i;5662:138:40:-;;;;;;;;;;-1:-1:-1;5662:138:40;;;;;:::i;:::-;;:::i;1311:22:2:-;;;;;;;;;;-1:-1:-1;1311:22:2;;;;-1:-1:-1;;;;;1311:22:2;;;1935:62;;;;;;;;;;;;1973:24;1935:62;;4089:560;;;;;;:::i;:::-;;:::i;3443:202:40:-;3528:4;3551:47;;;3566:32;3551:47;;:87;;-1:-1:-1;1148:25:46;1133:40;;;;3602:36:40;3544:94;3443:202;-1:-1:-1;;3443:202:40:o;12007:324:2:-;2362:4:40;3191:16;2362:4;3191:10;:16::i;:::-;-1:-1:-1;;;;;12105:28:2;::::1;12101:54;;12142:13;;;;;;;;;;;;;;12101:54;12169:13;::::0;-1:-1:-1;;;;;12169:13:2::1;:27:::0;12165:62:::1;;12205:22;;;;;;;;;;;;;;12165:62;12238:46;1845:31;12269:14;12238:10;:46::i;:::-;-1:-1:-1::0;;12294:13:2::1;:30:::0;;;::::1;-1:-1:-1::0;;;;;12294:30:2;;;::::1;::::0;;;::::1;::::0;;12007:324::o;8785:475::-;2316:19:44;:17;:19::i;:::-;3251:21:45::1;:19;:21::i;:::-;9005:6:2::2;9015:1;9005:11:::0;9001:49:::2;;9025:25;;;;;;;;;;;;;;9001:49;-1:-1:-1::0;;;;;9064:22:2;::::2;9060:48;;9095:13;;;;;;;;;;;;;;9060:48;9119:53;9146:10;9158:5;9165:6;9119:26;:53::i;:::-;9210:8;-1:-1:-1::0;;;;;9188:65:2::2;9198:10;-1:-1:-1::0;;;;;9188:65:2::2;;9220:6;9228:5;9239:13;9188:65;;;;;;;;:::i;:::-;;;;;;;;3293:20:45::1;1805:1:::0;2388:30;3969:23;3716:283;3293:20:::1;8785:475:2::0;;;;:::o;11165:320::-;2316:19:44;:17;:19::i;:::-;3251:21:45::1;:19;:21::i;:::-;-1:-1:-1::0;;;;;11367:22:2;::::2;11363:48;;11398:13;;;;;;;;;;;;;;11363:48;11445:8;-1:-1:-1::0;;;;;11426:52:2::2;11433:10;-1:-1:-1::0;;;;;11426:52:2::2;;11455:7;;11464:13;11426:52;;;;;;;;:::i;4952:424::-:0;5153:12;1713:21;3191:16:40;3202:4;3191:10;:16::i;:::-;2316:19:44::1;:17;:19::i;:::-;3251:21:45::2;:19;:21::i;:::-;-1:-1:-1::0;;;;;5185:25:2;::::3;5181:51;;5219:13;;;;;;;;;;;;;;5181:51;5242:19;5264:27;5273:11;5286:4;;5264:8;:27::i;:::-;5242:49;;5316:11;-1:-1:-1::0;;;;;5307:38:2::3;;5329:9;5340:4;;5307:38;;;;;;;;:::i;:::-;;;;;;;;5363:6:::0;-1:-1:-1;3293:20:45::2;1805:1:::0;2388:30;3969:23;3716:283;3293:20:::2;4952:424:2::0;;;;;;:::o;5246:136:40:-;4824:7;4919:14;;;2920:28;4919:14;;;;;:24;;;3191:16;3202:4;3191:10;:16::i;:::-;5350:25:::1;5361:4;5367:7;5350:10;:25::i;6348:245::-:0;-1:-1:-1;;;;;6441:34:40;;966:10:43;6441:34:40;6437:102;;6498:30;;;;;;;;;;;;;;6437:102;6549:37;6561:4;6567:18;6549:11;:37::i;:::-;;6348:245;;:::o;3731:77:2:-;1973:24;3191:16:40;3202:4;3191:10;:16::i;:::-;3791:10:2::1;:8;:10::i;:::-;3731:77:::0;:::o;4158:214:42:-;2653:13;:11;:13::i;:::-;4273:36:::1;4291:17;4273;:36::i;:::-;4319:46;4341:17;4360:4;4319:21;:46::i;:::-;4158:214:::0;;:::o;5834:1032:2:-;1845:31;3191:16:40;3202:4;3191:10;:16::i;:::-;2316:19:44::1;:17;:19::i;:::-;3251:21:45::2;:19;:21::i;:::-;6075:6:2::3;6085:1;6075:11:::0;6071:49:::3;;6095:25;;;;;;;;;;;;;;6071:49;-1:-1:-1::0;;;;;6134:16:2;::::3;6130:42;;6159:13;;;;;;;;;;;;;;6130:42;6246:24;6260:5;6267:2;6246:13;:24::i;:::-;6241:54;;6279:16;;;;;;;;;;;;;;6241:54;6310:33;::::0;;;;-1:-1:-1;;;;;14361:55:108;;;6310:33:2::3;::::0;::::3;14343:74:108::0;14433:18;;;14426:34;;;6310:21:2;::::3;::::0;::::3;::::0;14316:18:108;;6310:33:2::3;;;;;;;;;;;;;;;;;;::::0;::::3;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;6305:63;;6352:16;;;;;;;;;;;;;;6305:63;6429:18;6438:2;6442:4;;6429:8;:18::i;:::-;;6489:24;6503:5;6510:2;6489:13;:24::i;:::-;6484:54;;6522:16;;;;;;;;;;;;;;6484:54;6656:38;::::0;;;;6688:4:::3;6656:38;::::0;::::3;4281:74:108::0;6629:24:2::3;::::0;-1:-1:-1;;;;;6656:23:2;::::3;::::0;::::3;::::0;4254:18:108;;6656:38:2::3;;;;;;;;;;;;;;;;;::::0;::::3;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;6629:65:::0;-1:-1:-1;6708:20:2;;6704:98:::3;;6744:47;6767:5;6774:16;6744:22;:47::i;:::-;6842:2;-1:-1:-1::0;;;;;6817:42:2::3;6835:5;-1:-1:-1::0;;;;;6817:42:2::3;;6846:6;6854:4;;6817:42;;;;;;;;:::i;:::-;;;;;;;;6061:805;3293:20:45::2;1805:1:::0;2388:30;3969:23;3716:283;3293:20:::2;5834:1032:2::0;;;;;;:::o;3705:134:42:-;3774:7;2924:20;:18;:20::i;:::-;-1:-1:-1;1327:66:54::1;3705:134:42::0;:::o;8001:508:2:-;2316:19:44;:17;:19::i;:::-;3251:21:45::1;:19;:21::i;:::-;8190:9:2::2;8203:1;8190:14:::0;8186:50:::2;;8213:23;;;;;;;;;;;;;;8186:50;-1:-1:-1::0;;;;;8250:22:2;::::2;8246:48;;8281:13;;;;;;;;;;;;;;8246:48;8325:10;::::0;:39:::2;::::0;8306:14:::2;::::0;-1:-1:-1;;;;;8325:10:2::2;::::0;8349:9:::2;::::0;8306:14;8325:39;8306:14;8325:39;8349:9;8325:10;:39:::2;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;8305:59;;;8380:9;8375:38;;8398:15;;;;;;;;;;;;;;8375:38;8451:8;-1:-1:-1::0;;;;;8429:73:2::2;8439:10;-1:-1:-1::0;;;;;8429:73:2::2;;8461:9;8480:1;8488:13;8429:73;;;;;;;;:::i;:::-;;;;;;;;8176:333;3293:20:45::1;1805:1:::0;2388:30;3969:23;3716:283;9500:552:2;2316:19:44;:17;:19::i;:::-;3251:21:45::1;:19;:21::i;:::-;9728:9:2::2;9741:1;9728:14:::0;9724:50:::2;;9751:23;;;;;;;;;;;;;;9724:50;-1:-1:-1::0;;;;;9788:22:2;::::2;9784:48;;9819:13;;;;;;;;;;;;;;9784:48;9863:10;::::0;:39:::2;::::0;9844:14:::2;::::0;-1:-1:-1;;;;;9863:10:2::2;::::0;9887:9:::2;::::0;9844:14;9863:39;9844:14;9863:39;9887:9;9863:10;:39:::2;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;9843:59;;;9918:9;9913:38;;9936:15;;;;;;;;;;;;;;9913:38;9989:8;-1:-1:-1::0;;;;;9967:78:2::2;9977:10;-1:-1:-1::0;;;;;9967:78:2::2;;9999:9;10018:1;10022:7;;10031:13;9967:78;;;;;;;;;;:::i;:::-;;;;;;;;9714:338;3293:20:45::1;1805:1:::0;2388:30;3969:23;3716:283;3618:73:2;1973:24;3191:16:40;3202:4;3191:10;:16::i;:::-;3676:8:2::1;:6;:8::i;11599:284::-:0;2362:4:40;3191:16;2362:4;3191:10;:16::i;:::-;-1:-1:-1;;;;;11689:22:2;::::1;11685:48;;11720:13;;;;;;;;;;;;;;11685:48;11766:1;11747:7:::0;-1:-1:-1;;;;;11747:7:2::1;:21:::0;11743:54:::1;;11777:20;;;;;;;;;;;;;;11743:54;11808:40;1845:31;11839:8;11808:10;:40::i;:::-;-1:-1:-1::0;;11858:7:2::1;:18:::0;;;::::1;-1:-1:-1::0;;;;;11858:18:2;;;::::1;::::0;;;::::1;::::0;;11599:284::o;2308:543::-;8870:21:41;4302:15;;;;;;;4301:16;;4348:14;;4158:30;4726:16;;:34;;;;;4746:14;4726:34;4706:54;;4770:17;4790:11;:16;;4805:1;4790:16;:50;;;;-1:-1:-1;4818:4:41;4810:25;:30;4790:50;4770:70;;4856:12;4855:13;:30;;;;;4873:12;4872:13;4855:30;4851:91;;;4908:23;;;;;;;;;;;;;;4851:91;4951:18;;;;4968:1;4951:18;;;4979:67;;;;5013:22;;;;;;;;4979:67;-1:-1:-1;;;;;2418:25:2;::::1;::::0;;:53:::1;;-1:-1:-1::0;;;;;;2447:24:2;::::1;::::0;2418:53:::1;2414:104;;;2494:13;;;;;;;;;;;;;;2414:104;2527:24;:22;:24::i;:::-;2561;:22;:24::i;:::-;2595:22;:20;:22::i;:::-;2627:17;:15;:17::i;:::-;2655:38;2362:4:40;2686:6:2::0;2655:10:::1;:38::i;:::-;;2703:31;1973:24;2727:6;2703:10;:31::i;:::-;-1:-1:-1::0;2744:10:2::1;:24:::0;;;::::1;-1:-1:-1::0;;;;;2744:24:2;::::1;;::::0;;2778:33:::1;1713:21;2744:24:::0;2778:10:::1;:33::i;:::-;-1:-1:-1::0;2822:9:2::1;:22:::0;;;::::1;-1:-1:-1::0;;;;;2822:22:2;::::1;;::::0;;5066:101:41;;;;5100:23;;;;;;5142:14;;-1:-1:-1;15941:50:108;;5142:14:41;;15929:2:108;15914:18;5142:14:41;;;;;;;5066:101;4092:1081;;;;;2308:543:2;;;:::o;10419:519::-;2316:19:44;:17;:19::i;:::-;3251:21:45::1;:19;:21::i;:::-;10678:6:2::2;10688:1;10678:11:::0;10674:49:::2;;10698:25;;;;;;;;;;;;;;10674:49;-1:-1:-1::0;;;;;10737:22:2;::::2;10733:48;;10768:13;;;;;;;;;;;;;;10733:48;10792:53;10819:10;10831:5;10838:6;10792:26;:53::i;:::-;10883:8;-1:-1:-1::0;;;;;10861:70:2::2;10871:10;-1:-1:-1::0;;;;;10861:70:2::2;;10893:6;10901:5;10908:7;;10917:13;10861:70;;;;;;;;;;:::i;:::-;;;;;;;;3293:20:45::1;1805:1:::0;2388:30;3969:23;3716:283;7290:562:2;1845:31;3191:16:40;3202:4;3191:10;:16::i;:::-;2316:19:44::1;:17;:19::i;:::-;3251:21:45::2;:19;:21::i;:::-;7578:6:2::3;7588:1;7578:11:::0;7574:49:::3;;7598:25;;;;;;;;;;;;;;7574:49;-1:-1:-1::0;;;;;7637:16:2;::::3;7633:42;;7662:13;;;;;;;;;;;;;;7633:42;7686:47;-1:-1:-1::0;;;;;7686:26:2;::::3;7721:2:::0;7726:6;7686:26:::3;:47::i;:::-;7743:38;::::0;;;;-1:-1:-1;;;;;7743:23:2;::::3;::::0;::::3;::::0;:38:::3;::::0;7767:13;;7743:38:::3;;;:::i;:::-;;;;;;;;;;;;;;;;;;::::0;::::3;;;;;;;;;;;;::::0;::::3;;;;;;;;;7810:5;-1:-1:-1::0;;;;;7797:48:2::3;7806:2;-1:-1:-1::0;;;;;7797:48:2::3;;7817:6;7825:4;;7831:13;7797:48;;;;;;;;;:::i;:::-;;;;;;;;3293:20:45::2;1805:1:::0;2388:30;3969:23;3716:283;3293:20:::2;7290:562:2::0;;;;;;;:::o;5662:138:40:-;4824:7;4919:14;;;2920:28;4919:14;;;;;:24;;;3191:16;3202:4;3191:10;:16::i;:::-;5767:26:::1;5779:4;5785:7;5767:11;:26::i;4089:560:2:-:0;1713:21;3191:16:40;3202:4;3191:10;:16::i;:::-;2316:19:44::1;:17;:19::i;:::-;3251:21:45::2;:19;:21::i;:::-;-1:-1:-1::0;;;;;4341:25:2;::::3;4337:51;;4375:13;;;;;;;;;;;;;;4337:51;4399:12;4416:11;-1:-1:-1::0;;;;;4416:16:2::3;4441:9;4416:40;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;4398:58;;;4471:7;4466:38;;4487:17;;;;;;;;;;;;;;4466:38;4514:47;::::0;;;;-1:-1:-1;;;;;4514:32:2;::::3;::::0;::::3;::::0;:47:::3;::::0;4547:13;;4514:47:::3;;;:::i;:::-;;;;;;;;;;;;;;;;;;::::0;::::3;;;;;;;;;;;;::::0;::::3;;;;;;;;;4607:1;-1:-1:-1::0;;;;;4577:65:2::3;4586:11;-1:-1:-1::0;;;;;4577:65:2::3;;4611:9;4622:4;;4628:13;4577:65;;;;;;;;;:::i;:::-;;;;;;;;4327:322;3293:20:45::2;1805:1:::0;2388:30;3969:23;3716:283;3293:20:::2;4089:560:2::0;;;;;:::o;4148:103:40:-;4214:30;4225:4;966:10:43;4214::40;:30::i;7270:387::-;7347:4;3901:14;;;2920:28;3901:14;;;;;;;;-1:-1:-1;;;;;3901:31:40;;;;;;;;;;;;7432:219;;7475:8;:14;;;;;;;;;;;-1:-1:-1;;;;;7475:31:40;;;;;;;;;:38;;;;7509:4;7475:38;;;7559:12;966:10:43;;887:96;7559:12:40;-1:-1:-1;;;;;7532:40:40;7550:7;-1:-1:-1;;;;;7532:40:40;7544:4;7532:40;;;;;;;;;;7593:4;7586:11;;;;;7432:219;7635:5;7628:12;;;;;2905:128:44;1270:23;2821:9;;;2966:61;;;3001:15;;;;;;;;;;;;;;2966:61;2905:128::o;3326:384:45:-;2388:30;3526:9;;:20;;3522:88;;3569:30;;;;;;;;;;;;;;3522:88;1847:1;3684:19;;3326:384::o;13155:801:2:-;13267:9;;-1:-1:-1;;;;;13267:9:2;;;13258:18;;;;13254:696;;13371:59;-1:-1:-1;;;;;13371:30:2;;13402:4;13416;13423:6;13371:30;:59::i;:::-;13571:13;;13549:44;;;;;-1:-1:-1;;;;;13571:13:2;;;13549:44;;;14343:74:108;14433:18;;;14426:34;;;13549:21:2;;;;;;14316:18:108;;13549:44:2;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;13544:74;;13602:16;;;;;;;;;;;;;;13544:74;13690:13;;13672:54;;;;;;;;4743:25:108;;;-1:-1:-1;;;;;13690:13:2;;;;13672:46;;4716:18:108;;13672:54:2;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;13254:696;13811:7;;13797:41;;;;;-1:-1:-1;;;;;4299:55:108;;;13797:41:2;;;4281:74:108;13811:7:2;;;;13797:34;;4254:18:108;;13797:41:2;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;13792:80;;13847:25;;;;;;;;;;;;;;13792:80;13923:7;;13886:53;;-1:-1:-1;;;;;13886:30:2;;;;13917:4;;13923:7;13932:6;13886:30;:53::i;3716:283:45:-;1805:1;2388:30;3969:23;3716:283::o;3319:261:2:-;3397:12;3422;3436:19;3459:11;-1:-1:-1;;;;;3459:16:2;3484:9;3496:4;;3459:42;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;3421:80;;;;3516:7;3511:38;;3532:17;;;;;;;;;;;;;;3511:38;3567:6;-1:-1:-1;;3319:261:2;;;;;;:::o;7892:388:40:-;7970:4;3901:14;;;2920:28;3901:14;;;;;;;;-1:-1:-1;;;;;3901:31:40;;;;;;;;;;;;8055:219;;;8131:5;8097:14;;;;;;;;;;;-1:-1:-1;;;;;8097:31:40;;;;;;;;;;:39;;;;;;8155:40;966:10:43;;8097:14:40;;8155:40;;8131:5;8155:40;8216:4;8209:11;;;;;3674:178:44;2563:16;:14;:16::i;:::-;1270:23;3791:17;;;::::1;::::0;;3823:22:::1;966:10:43::0;3832:12:44::1;3823:22;::::0;-1:-1:-1;;;;;4299:55:108;;;4281:74;;4269:2;4254:18;3823:22:44::1;;;;;;;3722:130;3674:178::o:0;4599:312:42:-;4679:4;-1:-1:-1;;;;;4688:6:42;4671:23;;;:120;;;4785:6;-1:-1:-1;;;;;4749:42:42;:32;1327:66:54;2035:53;-1:-1:-1;;;;;2035:53:54;;1957:138;4749:32:42;-1:-1:-1;;;;;4749:42:42;;;4671:120;4654:251;;;4865:29;;;;;;;;;;;;;;3000:104:2;2362:4:40;3191:16;2362:4;3191:10;:16::i;6052:538:42:-;6169:17;-1:-1:-1;;;;;6151:50:42;;:52;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;6151:52:42;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;6147:437;;6513:60;;;;;-1:-1:-1;;;;;4299:55:108;;6513:60:42;;;4281:74:108;4254:18;;6513:60:42;;;;;;;;6147:437;1327:66:54;6245:40:42;;6241:120;;6312:34;;;;;;;;4743:25:108;;;4716:18;;6312:34:42;4597:177:108;6241:120:42;6374:54;6404:17;6423:4;6374:29;:54::i;12682:125:2:-;12772:28;;;;;-1:-1:-1;;;;;14361:55:108;;;12772:28:2;;;14343:74:108;12749:4:2;14433:18:108;;;14426:34;;;12749:4:2;12772:21;;;;;;14316:18:108;;12772:28:2;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;14245:658::-;14339:9;;-1:-1:-1;;;;;14339:9:2;;;14330:18;;;;14326:571;;14528:13;;14506:44;;;;;-1:-1:-1;;;;;14528:13:2;;;14506:44;;;14343:74:108;14433:18;;;14426:34;;;14506:21:2;;;;;;14316:18:108;;14506:44:2;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;14501:74;;14559:16;;;;;;;;;;;;;;14501:74;14647:13;;14629:54;;;;;;;;4743:25:108;;;-1:-1:-1;;;;;14647:13:2;;;;14629:46;;4716:18:108;;14629:54:2;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;14326:571;14768:7;;14754:41;;;;;-1:-1:-1;;;;;4299:55:108;;;14754:41:2;;;4281:74:108;14768:7:2;;;;14754:34;;4254:18:108;;14754:41:2;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;14749:80;;14804:25;;;;;;;;;;;;;;14749:80;14870:7;;14843:43;;-1:-1:-1;;;;;14843:26:2;;;;14870:7;14879:6;14843:26;:43::i;5028:213:42:-;5102:4;-1:-1:-1;;;;;5111:6:42;5094:23;;5090:145;;5195:29;;;;;;;;;;;;;;3366:176:44;2316:19;:17;:19::i;:::-;1270:23;3484:16;;;::::1;3496:4;3484:16;::::0;;3515:20:::1;966:10:43::0;3522:12:44::1;887:96:43::0;2968:67:42;6931:20:41;:18;:20::i;2540:111:45:-;6931:20:41;:18;:20::i;:::-;2610:34:45::1;:32;:34::i;1836:97:44:-:0;6931:20:41;:18;:20::i;:::-;1899:27:44::1;:25;:27::i;1303:160:66:-:0;1412:43;;-1:-1:-1;;;;;14361:55:108;;;1412:43:66;;;14343:74:108;14433:18;;;14426:34;;;1385:71:66;;1405:5;;1427:14;;;;;14316:18:108;;1412:43:66;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;1385:19;:71::i;4381:197:40:-;3809:4;3901:14;;;2920:28;3901:14;;;;;;;;-1:-1:-1;;;;;3901:31:40;;;;;;;;;;;;4464:108;;4514:47;;;;;-1:-1:-1;;;;;14361:55:108;;4514:47:40;;;14343:74:108;14433:18;;;14426:34;;;14316:18;;4514:47:40;14169:297:108;1702:188:66;1829:53;;-1:-1:-1;;;;;18908:55:108;;;1829:53:66;;;18890:74:108;19000:55;;;18980:18;;;18973:83;19072:18;;;19065:34;;;1802:81:66;;1822:5;;1844:18;;;;;18863::108;;1829:53:66;18688:417:108;3105:126:44;1270:23;2821:9;;;3163:62;;3199:15;;;;;;;;;;;;;;2779:335:54;2870:37;2889:17;2870:18;:37::i;:::-;2922:27;;-1:-1:-1;;;;;2922:27:54;;;;;;;;2964:11;;:15;2960:148;;2995:53;3024:17;3043:4;2995:28;:53::i;2960:148::-;3079:18;:16;:18::i;7084:141:41:-;8870:21;8560:40;;;;;;7146:73;;7191:17;;;;;;;;;;;;;;2657:183:45;6931:20:41;:18;:20::i;1939:156:44:-;6931:20:41;:18;:20::i;:::-;1270:23:44;2071:17;;;::::1;::::0;;1939:156::o;4059:629:66:-;4478:23;4504:33;-1:-1:-1;;;;;4504:27:66;;4532:4;4504:27;:33::i;:::-;4478:59;;4551:10;:17;4572:1;4551:22;;:57;;;;;4589:10;4578:30;;;;;;;;;;;;:::i;:::-;4577:31;4551:57;4547:135;;;4631:40;;;;;-1:-1:-1;;;;;4299:55:108;;4631:40:66;;;4281:74:108;4254:18;;4631:40:66;4135:226:108;2186:281:54;2263:17;-1:-1:-1;;;;;2263:29:54;;2296:1;2263:34;2259:119;;2320:47;;;;;-1:-1:-1;;;;;4299:55:108;;2320:47:54;;;4281:74:108;4254:18;;2320:47:54;4135:226:108;2259:119:54;1327:66;2387:73;;;;-1:-1:-1;;;;;2387:73:54;;;;;;;;;;2186:281::o;4106:253:67:-;4189:12;4214;4228:23;4255:6;-1:-1:-1;;;;;4255:19:67;4275:4;4255:25;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;4213:67;;;;4297:55;4324:6;4332:7;4341:10;4297:26;:55::i;:::-;4290:62;4106:253;-1:-1:-1;;;;;4106:253:67:o;6598:122:54:-;6648:9;:13;6644:70;;6684:19;;;;;;;;;;;;;;2705:151:67;2780:12;2811:38;2833:6;2841:4;2847:1;2811:21;:38::i;4625:582::-;4769:12;4798:7;4793:408;;4821:19;4829:10;4821:7;:19::i;:::-;4793:408;;;5045:17;;:22;:49;;;;-1:-1:-1;;;;;;5071:18:67;;;:23;5045:49;5041:119;;;5121:24;;;;;-1:-1:-1;;;;;4299:55:108;;5121:24:67;;;4281:74:108;4254:18;;5121:24:67;4135:226:108;5041:119:67;-1:-1:-1;5180:10:67;5173:17;;3180:392;3279:12;3331:5;3307:21;:29;3303:108;;;3359:41;;;;;3394:4;3359:41;;;4281:74:108;4254:18;;3359:41:67;4135:226:108;3303:108:67;3421:12;3435:23;3462:6;-1:-1:-1;;;;;3462:11:67;3481:5;3488:4;3462:31;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;3420:73;;;;3510:55;3537:6;3545:7;3554:10;3510:26;:55::i;:::-;3503:62;3180:392;-1:-1:-1;;;;;;3180:392:67:o;5743:516::-;5874:17;;:21;5870:383;;6102:10;6096:17;6158:15;6145:10;6141:2;6137:19;6130:44;5870:383;6225:17;;;;;;;;;;;;;;14:332:108;72:6;125:2;113:9;104:7;100:23;96:32;93:52;;;141:1;138;131:12;93:52;180:9;167:23;230:66;223:5;219:78;212:5;209:89;199:117;;312:1;309;302:12;543:196;611:20;;-1:-1:-1;;;;;660:54:108;;650:65;;640:93;;729:1;726;719:12;640:93;543:196;;;:::o;744:186::-;803:6;856:2;844:9;835:7;831:23;827:32;824:52;;;872:1;869;862:12;824:52;895:29;914:9;895:29;:::i;935:162::-;1001:5;1046:3;1037:6;1032:3;1028:16;1024:26;1021:46;;;1063:1;1060;1053:12;1021:46;-1:-1:-1;1085:6:108;935:162;-1:-1:-1;935:162:108:o;1102:629::-;1219:6;1227;1235;1243;1296:3;1284:9;1275:7;1271:23;1267:33;1264:53;;;1313:1;1310;1303:12;1264:53;1336:29;1355:9;1336:29;:::i;:::-;1326:39;-1:-1:-1;1434:2:108;1419:18;;1406:32;;-1:-1:-1;1481:38:108;1515:2;1500:18;;1481:38;:::i;:::-;1471:48;;1570:2;1559:9;1555:18;1542:32;1597:18;1589:6;1586:30;1583:50;;;1629:1;1626;1619:12;1583:50;1652:73;1717:7;1708:6;1697:9;1693:22;1652:73;:::i;:::-;1642:83;;;1102:629;;;;;;;:::o;1736:347::-;1787:8;1797:6;1851:3;1844:4;1836:6;1832:17;1828:27;1818:55;;1869:1;1866;1859:12;1818:55;-1:-1:-1;1892:20:108;;1935:18;1924:30;;1921:50;;;1967:1;1964;1957:12;1921:50;2004:4;1996:6;1992:17;1980:29;;2056:3;2049:4;2040:6;2032;2028:19;2024:30;2021:39;2018:59;;;2073:1;2070;2063:12;2018:59;1736:347;;;;;:::o;2088:743::-;2207:6;2215;2223;2231;2284:2;2272:9;2263:7;2259:23;2255:32;2252:52;;;2300:1;2297;2290:12;2252:52;2323:29;2342:9;2323:29;:::i;:::-;2313:39;;2403:2;2392:9;2388:18;2375:32;2430:18;2422:6;2419:30;2416:50;;;2462:1;2459;2452:12;2416:50;2501:58;2551:7;2542:6;2531:9;2527:22;2501:58;:::i;:::-;2578:8;;-1:-1:-1;2475:84:108;-1:-1:-1;;2666:2:108;2651:18;;2638:32;2695:18;2682:32;;2679:52;;;2727:1;2724;2717:12;2836:483;2915:6;2923;2931;2984:2;2972:9;2963:7;2959:23;2955:32;2952:52;;;3000:1;2997;2990:12;2952:52;3023:29;3042:9;3023:29;:::i;:::-;3013:39;;3103:2;3092:9;3088:18;3075:32;3130:18;3122:6;3119:30;3116:50;;;3162:1;3159;3152:12;3116:50;3201:58;3251:7;3242:6;3231:9;3227:22;3201:58;:::i;:::-;2836:483;;3278:8;;-1:-1:-1;3175:84:108;;-1:-1:-1;;;;2836:483:108:o;3324:250::-;3409:1;3419:113;3433:6;3430:1;3427:13;3419:113;;;3509:11;;;3503:18;3490:11;;;3483:39;3455:2;3448:10;3419:113;;;-1:-1:-1;;3566:1:108;3548:16;;3541:27;3324:250::o;3579:329::-;3620:3;3658:5;3652:12;3685:6;3680:3;3673:19;3701:76;3770:6;3763:4;3758:3;3754:14;3747:4;3740:5;3736:16;3701:76;:::i;:::-;3822:2;3810:15;3827:66;3806:88;3797:98;;;;3897:4;3793:109;;3579:329;-1:-1:-1;;3579:329:108:o;3913:217::-;4060:2;4049:9;4042:21;4023:4;4080:44;4120:2;4109:9;4105:18;4097:6;4080:44;:::i;4366:226::-;4425:6;4478:2;4466:9;4457:7;4453:23;4449:32;4446:52;;;4494:1;4491;4484:12;4446:52;-1:-1:-1;4539:23:108;;4366:226;-1:-1:-1;4366:226:108:o;4779:300::-;4847:6;4855;4908:2;4896:9;4887:7;4883:23;4879:32;4876:52;;;4924:1;4921;4914:12;4876:52;4969:23;;;-1:-1:-1;5035:38:108;5069:2;5054:18;;5035:38;:::i;:::-;5025:48;;4779:300;;;;;:::o;5084:184::-;5136:77;5133:1;5126:88;5233:4;5230:1;5223:15;5257:4;5254:1;5247:15;5273:1136;5350:6;5358;5411:2;5399:9;5390:7;5386:23;5382:32;5379:52;;;5427:1;5424;5417:12;5379:52;5450:29;5469:9;5450:29;:::i;:::-;5440:39;;5530:2;5519:9;5515:18;5502:32;5557:18;5549:6;5546:30;5543:50;;;5589:1;5586;5579:12;5543:50;5612:22;;5665:4;5657:13;;5653:27;-1:-1:-1;5643:55:108;;5694:1;5691;5684:12;5643:55;5734:2;5721:16;5760:18;5752:6;5749:30;5746:56;;;5782:18;;:::i;:::-;5831:2;5825:9;5978:66;5973:2;5904:66;5897:4;5889:6;5885:17;5881:90;5877:99;5873:172;5865:6;5861:185;6112:6;6100:10;6097:22;6076:18;6064:10;6061:34;6058:62;6055:88;;;6123:18;;:::i;:::-;6159:2;6152:22;6183;;;6224:15;;;6241:2;6220:24;6217:37;-1:-1:-1;6214:57:108;;;6267:1;6264;6257:12;6214:57;6323:6;6318:2;6314;6310:11;6305:2;6297:6;6293:15;6280:50;6376:1;6371:2;6362:6;6354;6350:19;6346:28;6339:39;6397:6;6387:16;;;;;5273:1136;;;;;:::o;6414:672::-;6511:6;6519;6527;6535;6543;6596:3;6584:9;6575:7;6571:23;6567:33;6564:53;;;6613:1;6610;6603:12;6564:53;6636:29;6655:9;6636:29;:::i;:::-;6626:39;;6684:38;6718:2;6707:9;6703:18;6684:38;:::i;:::-;6674:48;-1:-1:-1;6791:2:108;6776:18;;6763:32;;-1:-1:-1;6870:2:108;6855:18;;6842:32;6897:18;6886:30;;6883:50;;;6929:1;6926;6919:12;6883:50;6968:58;7018:7;7009:6;6998:9;6994:22;6968:58;:::i;:::-;6414:672;;;;-1:-1:-1;6414:672:108;;-1:-1:-1;7045:8:108;;6942:84;6414:672;-1:-1:-1;;;6414:672:108:o;7091:440::-;7190:6;7198;7251:2;7239:9;7230:7;7226:23;7222:32;7219:52;;;7267:1;7264;7257:12;7219:52;7290:29;7309:9;7290:29;:::i;:::-;7280:39;;7370:2;7359:9;7355:18;7342:32;7397:18;7389:6;7386:30;7383:50;;;7429:1;7426;7419:12;7383:50;7452:73;7517:7;7508:6;7497:9;7493:22;7452:73;:::i;:::-;7442:83;;;7091:440;;;;;:::o;7760:334::-;7837:6;7845;7853;7906:2;7894:9;7885:7;7881:23;7877:32;7874:52;;;7922:1;7919;7912:12;7874:52;7945:29;7964:9;7945:29;:::i;:::-;7935:39;;7993:38;8027:2;8016:9;8012:18;7993:38;:::i;:::-;7983:48;;8050:38;8084:2;8073:9;8069:18;8050:38;:::i;:::-;8040:48;;7760:334;;;;;:::o;8099:933::-;8236:6;8244;8252;8260;8268;8276;8329:3;8317:9;8308:7;8304:23;8300:33;8297:53;;;8346:1;8343;8336:12;8297:53;8369:29;8388:9;8369:29;:::i;:::-;8359:39;-1:-1:-1;8467:2:108;8452:18;;8439:32;;-1:-1:-1;8514:38:108;8548:2;8533:18;;8514:38;:::i;:::-;8504:48;;8603:2;8592:9;8588:18;8575:32;8630:18;8622:6;8619:30;8616:50;;;8662:1;8659;8652:12;8616:50;8701:58;8751:7;8742:6;8731:9;8727:22;8701:58;:::i;:::-;8778:8;;-1:-1:-1;8675:84:108;-1:-1:-1;;8866:3:108;8851:19;;8838:33;8896:18;8883:32;;8880:52;;;8928:1;8925;8918:12;8880:52;8951:75;9018:7;9007:8;8996:9;8992:24;8951:75;:::i;:::-;8941:85;;;8099:933;;;;;;;;:::o;9037:161::-;9103:5;9148:2;9139:6;9134:3;9130:16;9126:25;9123:45;;;9164:1;9161;9154:12;9203:933;9340:6;9348;9356;9364;9372;9380;9433:3;9421:9;9412:7;9408:23;9404:33;9401:53;;;9450:1;9447;9440:12;9401:53;9473:29;9492:9;9473:29;:::i;:::-;9463:39;;9521:38;9555:2;9544:9;9540:18;9521:38;:::i;:::-;9511:48;-1:-1:-1;9628:2:108;9613:18;;9600:32;;-1:-1:-1;9707:2:108;9692:18;;9679:32;9734:18;9723:30;;9720:50;;;9766:1;9763;9756:12;9720:50;9805:58;9855:7;9846:6;9835:9;9831:22;9805:58;:::i;:::-;9882:8;;-1:-1:-1;9779:84:108;-1:-1:-1;;9970:3:108;9955:19;;9942:33;10000:18;9987:32;;9984:52;;;10032:1;10029;10022:12;9984:52;10055:75;10122:7;10111:8;10100:9;10096:24;10055:75;:::i;10141:743::-;10260:6;10268;10276;10284;10337:2;10325:9;10316:7;10312:23;10308:32;10305:52;;;10353:1;10350;10343:12;10305:52;10376:29;10395:9;10376:29;:::i;:::-;10366:39;;10456:2;10445:9;10441:18;10428:32;10483:18;10475:6;10472:30;10469:50;;;10515:1;10512;10505:12;10469:50;10554:58;10604:7;10595:6;10584:9;10580:22;10554:58;:::i;:::-;10631:8;;-1:-1:-1;10528:84:108;-1:-1:-1;;10719:2:108;10704:18;;10691:32;10748:18;10735:32;;10732:52;;;10780:1;10777;10770:12;10732:52;10803:75;10870:7;10859:8;10848:9;10844:24;10803:75;:::i;10889:118::-;10975:5;10968:13;10961:21;10954:5;10951:32;10941:60;;10997:1;10994;10987:12;11012:559;11070:5;11077:6;11137:3;11124:17;11219:66;11208:8;11192:14;11188:29;11184:102;11164:18;11160:127;11150:155;;11301:1;11298;11291:12;11150:155;11329:33;;11433:4;11420:18;;;-1:-1:-1;11381:21:108;;-1:-1:-1;11461:18:108;11450:30;;11447:50;;;11493:1;11490;11483:12;11447:50;11540:6;11524:14;11520:27;11513:5;11509:39;11506:59;;;11561:1;11558;11551:12;11576:325;11664:6;11659:3;11652:19;11716:6;11709:5;11702:4;11697:3;11693:14;11680:43;;11768:1;11761:4;11752:6;11747:3;11743:16;11739:27;11732:38;11634:3;11890:4;11820:66;11815:2;11807:6;11803:15;11799:88;11794:3;11790:98;11786:109;11779:116;;11576:325;;;;:::o;11906:803::-;-1:-1:-1;;;;;12005:25:108;12024:5;12005:25;:::i;:::-;12001:74;11996:3;11989:87;11971:3;12124:4;12117:5;12113:16;12100:30;12139;12161:7;12139:30;:::i;:::-;12208:15;12201:23;12194:4;12185:14;;12178:47;-1:-1:-1;;;;;12261:36:108;12291:4;12280:16;;12261:36;:::i;:::-;12257:85;12250:4;12245:3;12241:14;12234:109;12386:55;12435:4;12428:5;12424:16;12417:5;12386:55;:::i;:::-;12473:4;12466;12461:3;12457:14;12450:28;12499:69;12562:4;12557:3;12553:14;12539:12;12525;12499:69;:::i;:::-;12637:4;12626:16;;;12613:30;12659:14;;;;12652:31;;;;-1:-1:-1;12487:81:108;;11906:803;-1:-1:-1;;11906:803:108:o;12714:655::-;13059:6;13048:9;13041:25;-1:-1:-1;;;;;13106:6:108;13102:55;13097:2;13086:9;13082:18;13075:83;13194:3;13189:2;13178:9;13174:18;13167:31;13235:1;13229:3;13218:9;13214:19;13207:30;13273:3;13268:2;13257:9;13253:18;13246:31;13022:4;13294:69;13358:3;13347:9;13343:19;13335:6;13294:69;:::i;13374:470::-;13619:2;13608:9;13601:21;13582:4;13645:61;13702:2;13691:9;13687:18;13679:6;13671;13645:61;:::i;:::-;13754:9;13746:6;13742:22;13737:2;13726:9;13722:18;13715:50;13782:56;13831:6;13823;13782:56;:::i;13849:315::-;14034:6;14023:9;14016:25;14077:2;14072;14061:9;14057:18;14050:30;13997:4;14097:61;14154:2;14143:9;14139:18;14131:6;14123;14097:61;:::i;14471:245::-;14538:6;14591:2;14579:9;14570:7;14566:23;14562:32;14559:52;;;14607:1;14604;14597:12;14559:52;14639:9;14633:16;14658:28;14680:5;14658:28;:::i;14721:184::-;14791:6;14844:2;14832:9;14823:7;14819:23;14815:32;14812:52;;;14860:1;14857;14850:12;14812:52;-1:-1:-1;14883:16:108;;14721:184;-1:-1:-1;14721:184:108:o;15120:663::-;15421:6;15410:9;15403:25;-1:-1:-1;;;;;15468:6:108;15464:55;15459:2;15448:9;15444:18;15437:83;15556:3;15551:2;15540:9;15536:18;15529:31;15384:4;15583:62;15640:3;15629:9;15625:19;15617:6;15609;15583:62;:::i;:::-;15693:9;15685:6;15681:22;15676:2;15665:9;15661:18;15654:50;15721:56;15770:6;15762;15721:56;:::i;:::-;15713:64;15120:663;-1:-1:-1;;;;;;;;15120:663:108:o;16002:588::-;-1:-1:-1;;;;;16101:25:108;16120:5;16101:25;:::i;:::-;16097:74;16092:3;16085:87;16067:3;16220:4;16213:5;16209:16;16196:30;16258:18;16249:7;16245:32;16308:2;16299:7;16296:15;16286:43;;16325:1;16322;16315:12;16286:43;16354:4;16345:14;;16338:26;-1:-1:-1;16407:55:108;16456:4;16445:16;;16449:5;16407:55;:::i;:::-;16494:4;16487;16482:3;16478:14;16471:28;16515:69;16578:4;16573:3;16569:14;16555:12;16541;16515:69;:::i;16595:283::-;16784:2;16773:9;16766:21;16747:4;16804:68;16868:2;16857:9;16853:18;16845:6;16804:68;:::i;16883:541::-;17156:6;17145:9;17138:25;17199:2;17194;17183:9;17179:18;17172:30;17119:4;17225:61;17282:2;17271:9;17267:18;17259:6;17251;17225:61;:::i;:::-;17334:9;17326:6;17322:22;17317:2;17306:9;17302:18;17295:50;17362:56;17411:6;17403;17362:56;:::i;:::-;17354:64;16883:541;-1:-1:-1;;;;;;;16883:541:108:o;17611:271::-;17794:6;17786;17781:3;17768:33;17750:3;17820:16;;17845:13;;;17820:16;17611:271;-1:-1:-1;17611:271:108:o;19110:287::-;19239:3;19277:6;19271:13;19293:66;19352:6;19347:3;19340:4;19332:6;19328:17;19293:66;:::i;:::-;19375:16;;;;;19110:287;-1:-1:-1;;19110:287:108:o","linkReferences":{},"immutableReferences":{"44509":[{"start":8570,"length":32},{"start":8611,"length":32},{"start":9775,"length":32}]}},"methodIdentifiers":{"ASSET_HANDLER_ROLE()":"5d62c860","DEFAULT_ADMIN_ROLE()":"a217fddf","PAUSER_ROLE()":"e63ab1e9","TSS_ROLE()":"a783c789","UPGRADE_INTERFACE_VERSION()":"ad3cb1cc","call(address,bytes,(address,bool,address,bytes,uint256))":"1becceb4","custody()":"dda79b75","deposit(address,(address,bool,address,bytes,uint256))":"726ac97c","deposit(address,uint256,address,(address,bool,address,bytes,uint256))":"102614b0","depositAndCall(address,bytes,(address,bool,address,bytes,uint256))":"744b9b8b","depositAndCall(address,uint256,address,bytes,(address,bool,address,bytes,uint256))":"d09e3b78","execute(address,bytes)":"1cff79cd","executeRevert(address,bytes,(address,uint64,bytes))":"f7ad60db","executeWithERC20(address,address,uint256,bytes)":"5131ab59","getRoleAdmin(bytes32)":"248a9ca3","grantRole(bytes32,address)":"2f2ff15d","hasRole(bytes32,address)":"91d14854","initialize(address,address,address)":"c0c53b8b","pause()":"8456cb59","paused()":"5c975abb","proxiableUUID()":"52d1902d","renounceRole(bytes32,address)":"36568abe","revertWithERC20(address,address,uint256,bytes,(address,uint64,bytes))":"d0b492c3","revokeRole(bytes32,address)":"d547741f","setConnector(address)":"10188aef","setCustody(address)":"ae7a3a6f","supportsInterface(bytes4)":"01ffc9a7","tssAddress()":"5b112591","unpause()":"3f4ba83a","upgradeToAndCall(address,bytes)":"4f1ef286","zetaConnector()":"57bec62f","zetaToken()":"21e093b1"},"rawMetadata":"{\"compiler\":{\"version\":\"0.8.26+commit.8a97fa7a\"},\"language\":\"Solidity\",\"output\":{\"abi\":[{\"inputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"constructor\"},{\"inputs\":[],\"name\":\"AccessControlBadConfirmation\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"account\",\"type\":\"address\"},{\"internalType\":\"bytes32\",\"name\":\"neededRole\",\"type\":\"bytes32\"}],\"name\":\"AccessControlUnauthorizedAccount\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"target\",\"type\":\"address\"}],\"name\":\"AddressEmptyCode\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"account\",\"type\":\"address\"}],\"name\":\"AddressInsufficientBalance\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"ApprovalFailed\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"ConnectorInitialized\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"CustodyInitialized\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"DepositFailed\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"implementation\",\"type\":\"address\"}],\"name\":\"ERC1967InvalidImplementation\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"ERC1967NonPayable\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"EnforcedPause\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"ExecutionFailed\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"ExpectedPause\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"FailedInnerCall\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"InsufficientERC20Amount\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"InsufficientETHAmount\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"InvalidInitialization\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"NotInitializing\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"NotWhitelistedInCustody\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"ReentrancyGuardReentrantCall\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"token\",\"type\":\"address\"}],\"name\":\"SafeERC20FailedOperation\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"UUPSUnauthorizedCallContext\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"bytes32\",\"name\":\"slot\",\"type\":\"bytes32\"}],\"name\":\"UUPSUnsupportedProxiableUUID\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"ZeroAddress\",\"type\":\"error\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"sender\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"receiver\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"bytes\",\"name\":\"payload\",\"type\":\"bytes\"},{\"components\":[{\"internalType\":\"address\",\"name\":\"revertAddress\",\"type\":\"address\"},{\"internalType\":\"bool\",\"name\":\"callOnRevert\",\"type\":\"bool\"},{\"internalType\":\"address\",\"name\":\"abortAddress\",\"type\":\"address\"},{\"internalType\":\"bytes\",\"name\":\"revertMessage\",\"type\":\"bytes\"},{\"internalType\":\"uint256\",\"name\":\"onRevertGasLimit\",\"type\":\"uint256\"}],\"indexed\":false,\"internalType\":\"struct RevertOptions\",\"name\":\"revertOptions\",\"type\":\"tuple\"}],\"name\":\"Called\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"sender\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"receiver\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"amount\",\"type\":\"uint256\"},{\"indexed\":false,\"internalType\":\"address\",\"name\":\"asset\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"bytes\",\"name\":\"payload\",\"type\":\"bytes\"},{\"components\":[{\"internalType\":\"address\",\"name\":\"revertAddress\",\"type\":\"address\"},{\"internalType\":\"bool\",\"name\":\"callOnRevert\",\"type\":\"bool\"},{\"internalType\":\"address\",\"name\":\"abortAddress\",\"type\":\"address\"},{\"internalType\":\"bytes\",\"name\":\"revertMessage\",\"type\":\"bytes\"},{\"internalType\":\"uint256\",\"name\":\"onRevertGasLimit\",\"type\":\"uint256\"}],\"indexed\":false,\"internalType\":\"struct RevertOptions\",\"name\":\"revertOptions\",\"type\":\"tuple\"}],\"name\":\"Deposited\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"destination\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"value\",\"type\":\"uint256\"},{\"indexed\":false,\"internalType\":\"bytes\",\"name\":\"data\",\"type\":\"bytes\"}],\"name\":\"Executed\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"token\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"to\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"amount\",\"type\":\"uint256\"},{\"indexed\":false,\"internalType\":\"bytes\",\"name\":\"data\",\"type\":\"bytes\"}],\"name\":\"ExecutedWithERC20\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"uint64\",\"name\":\"version\",\"type\":\"uint64\"}],\"name\":\"Initialized\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"address\",\"name\":\"account\",\"type\":\"address\"}],\"name\":\"Paused\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"to\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"token\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"amount\",\"type\":\"uint256\"},{\"indexed\":false,\"internalType\":\"bytes\",\"name\":\"data\",\"type\":\"bytes\"},{\"components\":[{\"internalType\":\"address\",\"name\":\"asset\",\"type\":\"address\"},{\"internalType\":\"uint64\",\"name\":\"amount\",\"type\":\"uint64\"},{\"internalType\":\"bytes\",\"name\":\"revertMessage\",\"type\":\"bytes\"}],\"indexed\":false,\"internalType\":\"struct RevertContext\",\"name\":\"revertContext\",\"type\":\"tuple\"}],\"name\":\"Reverted\",\"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\":false,\"internalType\":\"address\",\"name\":\"account\",\"type\":\"address\"}],\"name\":\"Unpaused\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"implementation\",\"type\":\"address\"}],\"name\":\"Upgraded\",\"type\":\"event\"},{\"inputs\":[],\"name\":\"ASSET_HANDLER_ROLE\",\"outputs\":[{\"internalType\":\"bytes32\",\"name\":\"\",\"type\":\"bytes32\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"DEFAULT_ADMIN_ROLE\",\"outputs\":[{\"internalType\":\"bytes32\",\"name\":\"\",\"type\":\"bytes32\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"PAUSER_ROLE\",\"outputs\":[{\"internalType\":\"bytes32\",\"name\":\"\",\"type\":\"bytes32\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"TSS_ROLE\",\"outputs\":[{\"internalType\":\"bytes32\",\"name\":\"\",\"type\":\"bytes32\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"UPGRADE_INTERFACE_VERSION\",\"outputs\":[{\"internalType\":\"string\",\"name\":\"\",\"type\":\"string\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"receiver\",\"type\":\"address\"},{\"internalType\":\"bytes\",\"name\":\"payload\",\"type\":\"bytes\"},{\"components\":[{\"internalType\":\"address\",\"name\":\"revertAddress\",\"type\":\"address\"},{\"internalType\":\"bool\",\"name\":\"callOnRevert\",\"type\":\"bool\"},{\"internalType\":\"address\",\"name\":\"abortAddress\",\"type\":\"address\"},{\"internalType\":\"bytes\",\"name\":\"revertMessage\",\"type\":\"bytes\"},{\"internalType\":\"uint256\",\"name\":\"onRevertGasLimit\",\"type\":\"uint256\"}],\"internalType\":\"struct RevertOptions\",\"name\":\"revertOptions\",\"type\":\"tuple\"}],\"name\":\"call\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"custody\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"receiver\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"amount\",\"type\":\"uint256\"},{\"internalType\":\"address\",\"name\":\"asset\",\"type\":\"address\"},{\"components\":[{\"internalType\":\"address\",\"name\":\"revertAddress\",\"type\":\"address\"},{\"internalType\":\"bool\",\"name\":\"callOnRevert\",\"type\":\"bool\"},{\"internalType\":\"address\",\"name\":\"abortAddress\",\"type\":\"address\"},{\"internalType\":\"bytes\",\"name\":\"revertMessage\",\"type\":\"bytes\"},{\"internalType\":\"uint256\",\"name\":\"onRevertGasLimit\",\"type\":\"uint256\"}],\"internalType\":\"struct RevertOptions\",\"name\":\"revertOptions\",\"type\":\"tuple\"}],\"name\":\"deposit\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"receiver\",\"type\":\"address\"},{\"components\":[{\"internalType\":\"address\",\"name\":\"revertAddress\",\"type\":\"address\"},{\"internalType\":\"bool\",\"name\":\"callOnRevert\",\"type\":\"bool\"},{\"internalType\":\"address\",\"name\":\"abortAddress\",\"type\":\"address\"},{\"internalType\":\"bytes\",\"name\":\"revertMessage\",\"type\":\"bytes\"},{\"internalType\":\"uint256\",\"name\":\"onRevertGasLimit\",\"type\":\"uint256\"}],\"internalType\":\"struct RevertOptions\",\"name\":\"revertOptions\",\"type\":\"tuple\"}],\"name\":\"deposit\",\"outputs\":[],\"stateMutability\":\"payable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"receiver\",\"type\":\"address\"},{\"internalType\":\"bytes\",\"name\":\"payload\",\"type\":\"bytes\"},{\"components\":[{\"internalType\":\"address\",\"name\":\"revertAddress\",\"type\":\"address\"},{\"internalType\":\"bool\",\"name\":\"callOnRevert\",\"type\":\"bool\"},{\"internalType\":\"address\",\"name\":\"abortAddress\",\"type\":\"address\"},{\"internalType\":\"bytes\",\"name\":\"revertMessage\",\"type\":\"bytes\"},{\"internalType\":\"uint256\",\"name\":\"onRevertGasLimit\",\"type\":\"uint256\"}],\"internalType\":\"struct RevertOptions\",\"name\":\"revertOptions\",\"type\":\"tuple\"}],\"name\":\"depositAndCall\",\"outputs\":[],\"stateMutability\":\"payable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"receiver\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"amount\",\"type\":\"uint256\"},{\"internalType\":\"address\",\"name\":\"asset\",\"type\":\"address\"},{\"internalType\":\"bytes\",\"name\":\"payload\",\"type\":\"bytes\"},{\"components\":[{\"internalType\":\"address\",\"name\":\"revertAddress\",\"type\":\"address\"},{\"internalType\":\"bool\",\"name\":\"callOnRevert\",\"type\":\"bool\"},{\"internalType\":\"address\",\"name\":\"abortAddress\",\"type\":\"address\"},{\"internalType\":\"bytes\",\"name\":\"revertMessage\",\"type\":\"bytes\"},{\"internalType\":\"uint256\",\"name\":\"onRevertGasLimit\",\"type\":\"uint256\"}],\"internalType\":\"struct RevertOptions\",\"name\":\"revertOptions\",\"type\":\"tuple\"}],\"name\":\"depositAndCall\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"destination\",\"type\":\"address\"},{\"internalType\":\"bytes\",\"name\":\"data\",\"type\":\"bytes\"}],\"name\":\"execute\",\"outputs\":[{\"internalType\":\"bytes\",\"name\":\"\",\"type\":\"bytes\"}],\"stateMutability\":\"payable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"destination\",\"type\":\"address\"},{\"internalType\":\"bytes\",\"name\":\"data\",\"type\":\"bytes\"},{\"components\":[{\"internalType\":\"address\",\"name\":\"asset\",\"type\":\"address\"},{\"internalType\":\"uint64\",\"name\":\"amount\",\"type\":\"uint64\"},{\"internalType\":\"bytes\",\"name\":\"revertMessage\",\"type\":\"bytes\"}],\"internalType\":\"struct RevertContext\",\"name\":\"revertContext\",\"type\":\"tuple\"}],\"name\":\"executeRevert\",\"outputs\":[],\"stateMutability\":\"payable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"token\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"to\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"amount\",\"type\":\"uint256\"},{\"internalType\":\"bytes\",\"name\":\"data\",\"type\":\"bytes\"}],\"name\":\"executeWithERC20\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"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\":\"address\",\"name\":\"account\",\"type\":\"address\"}],\"name\":\"grantRole\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes32\",\"name\":\"role\",\"type\":\"bytes32\"},{\"internalType\":\"address\",\"name\":\"account\",\"type\":\"address\"}],\"name\":\"hasRole\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"tssAddress_\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"zetaToken_\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"admin_\",\"type\":\"address\"}],\"name\":\"initialize\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"pause\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"paused\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"proxiableUUID\",\"outputs\":[{\"internalType\":\"bytes32\",\"name\":\"\",\"type\":\"bytes32\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes32\",\"name\":\"role\",\"type\":\"bytes32\"},{\"internalType\":\"address\",\"name\":\"callerConfirmation\",\"type\":\"address\"}],\"name\":\"renounceRole\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"token\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"to\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"amount\",\"type\":\"uint256\"},{\"internalType\":\"bytes\",\"name\":\"data\",\"type\":\"bytes\"},{\"components\":[{\"internalType\":\"address\",\"name\":\"asset\",\"type\":\"address\"},{\"internalType\":\"uint64\",\"name\":\"amount\",\"type\":\"uint64\"},{\"internalType\":\"bytes\",\"name\":\"revertMessage\",\"type\":\"bytes\"}],\"internalType\":\"struct RevertContext\",\"name\":\"revertContext\",\"type\":\"tuple\"}],\"name\":\"revertWithERC20\",\"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\":\"address\",\"name\":\"zetaConnector_\",\"type\":\"address\"}],\"name\":\"setConnector\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"custody_\",\"type\":\"address\"}],\"name\":\"setCustody\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes4\",\"name\":\"interfaceId\",\"type\":\"bytes4\"}],\"name\":\"supportsInterface\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"tssAddress\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"unpause\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"newImplementation\",\"type\":\"address\"},{\"internalType\":\"bytes\",\"name\":\"data\",\"type\":\"bytes\"}],\"name\":\"upgradeToAndCall\",\"outputs\":[],\"stateMutability\":\"payable\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"zetaConnector\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"zetaToken\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"}],\"devdoc\":{\"details\":\"The contract doesn't hold any funds and should never have active allowances.\",\"errors\":{\"AccessControlBadConfirmation()\":[{\"details\":\"The caller of a function is not the expected one. NOTE: Don't confuse with {AccessControlUnauthorizedAccount}.\"}],\"AccessControlUnauthorizedAccount(address,bytes32)\":[{\"details\":\"The `account` is missing a role.\"}],\"AddressEmptyCode(address)\":[{\"details\":\"There's no code at `target` (it is not a contract).\"}],\"AddressInsufficientBalance(address)\":[{\"details\":\"The ETH balance of the account is not enough to perform the operation.\"}],\"ERC1967InvalidImplementation(address)\":[{\"details\":\"The `implementation` of the proxy is invalid.\"}],\"ERC1967NonPayable()\":[{\"details\":\"An upgrade function sees `msg.value > 0` that may be lost.\"}],\"EnforcedPause()\":[{\"details\":\"The operation failed because the contract is paused.\"}],\"ExpectedPause()\":[{\"details\":\"The operation failed because the contract is not paused.\"}],\"FailedInnerCall()\":[{\"details\":\"A call to an address target failed. The target may have reverted.\"}],\"InvalidInitialization()\":[{\"details\":\"The contract is already initialized.\"}],\"NotInitializing()\":[{\"details\":\"The contract is not initializing.\"}],\"ReentrancyGuardReentrantCall()\":[{\"details\":\"Unauthorized reentrant call.\"}],\"SafeERC20FailedOperation(address)\":[{\"details\":\"An operation with an ERC20 token failed.\"}],\"UUPSUnauthorizedCallContext()\":[{\"details\":\"The call is from an unauthorized context.\"}],\"UUPSUnsupportedProxiableUUID(bytes32)\":[{\"details\":\"The storage `slot` is unsupported as a UUID.\"}]},\"events\":{\"Called(address,address,bytes,(address,bool,address,bytes,uint256))\":{\"params\":{\"payload\":\"The calldata passed to the call.\",\"receiver\":\"The address of the receiver.\",\"revertOptions\":\"Revert options.\",\"sender\":\"The address of the sender.\"}},\"Deposited(address,address,uint256,address,bytes,(address,bool,address,bytes,uint256))\":{\"params\":{\"amount\":\"The amount of ETH or tokens deposited.\",\"asset\":\"The address of the ERC20 token (zero address if ETH).\",\"payload\":\"The calldata passed with the deposit.\",\"receiver\":\"The address of the receiver.\",\"revertOptions\":\"Revert options.\",\"sender\":\"The address of the sender.\"}},\"Executed(address,uint256,bytes)\":{\"params\":{\"data\":\"The calldata passed to the contract call.\",\"destination\":\"The address of the contract called.\",\"value\":\"The amount of ETH sent with the call.\"}},\"ExecutedWithERC20(address,address,uint256,bytes)\":{\"params\":{\"amount\":\"The amount of tokens transferred.\",\"data\":\"The calldata passed to the contract call.\",\"to\":\"The address of the contract called.\",\"token\":\"The address of the ERC20 token.\"}},\"Initialized(uint64)\":{\"details\":\"Triggered when the contract has been initialized or reinitialized.\"},\"Paused(address)\":{\"details\":\"Emitted when the pause is triggered by `account`.\"},\"Reverted(address,address,uint256,bytes,(address,uint64,bytes))\":{\"params\":{\"amount\":\"The amount of ETH sent with the call.\",\"data\":\"The calldata passed to the contract call.\",\"revertContext\":\"Revert context to pass to onRevert.\",\"to\":\"The address of the contract called.\",\"token\":\"The address of the ERC20 token, empty if gas token\"}},\"RoleAdminChanged(bytes32,bytes32,bytes32)\":{\"details\":\"Emitted when `newAdminRole` is set as ``role``'s admin role, replacing `previousAdminRole` `DEFAULT_ADMIN_ROLE` is the starting admin for all roles, despite {RoleAdminChanged} not being emitted signaling this.\"},\"RoleGranted(bytes32,address,address)\":{\"details\":\"Emitted when `account` is granted `role`. `sender` is the account that originated the contract call, an admin role bearer except when using {AccessControl-_setupRole}.\"},\"RoleRevoked(bytes32,address,address)\":{\"details\":\"Emitted when `account` is revoked `role`. `sender` is the account that originated the contract call: - if using `revokeRole`, it is the admin role bearer - if using `renounceRole`, it is the role bearer (i.e. `account`)\"},\"Unpaused(address)\":{\"details\":\"Emitted when the pause is lifted by `account`.\"},\"Upgraded(address)\":{\"details\":\"Emitted when the implementation is upgraded.\"}},\"kind\":\"dev\",\"methods\":{\"call(address,bytes,(address,bool,address,bytes,uint256))\":{\"params\":{\"payload\":\"Calldata to pass to the call.\",\"receiver\":\"Address of the receiver.\",\"revertOptions\":\"Revert options.\"}},\"constructor\":{\"custom:oz-upgrades-unsafe-allow\":\"constructor\"},\"deposit(address,(address,bool,address,bytes,uint256))\":{\"params\":{\"receiver\":\"Address of the receiver.\",\"revertOptions\":\"Revert options.\"}},\"deposit(address,uint256,address,(address,bool,address,bytes,uint256))\":{\"params\":{\"amount\":\"Amount of tokens to deposit.\",\"asset\":\"Address of the ERC20 token.\",\"receiver\":\"Address of the receiver.\",\"revertOptions\":\"Revert options.\"}},\"depositAndCall(address,bytes,(address,bool,address,bytes,uint256))\":{\"params\":{\"payload\":\"Calldata to pass to the call.\",\"receiver\":\"Address of the receiver.\",\"revertOptions\":\"Revert options.\"}},\"depositAndCall(address,uint256,address,bytes,(address,bool,address,bytes,uint256))\":{\"params\":{\"amount\":\"Amount of tokens to deposit.\",\"asset\":\"Address of the ERC20 token.\",\"payload\":\"Calldata to pass to the call.\",\"receiver\":\"Address of the receiver.\",\"revertOptions\":\"Revert options.\"}},\"execute(address,bytes)\":{\"details\":\"This function can only be called by the TSS address and it is payable.\",\"params\":{\"data\":\"Calldata to pass to the call.\",\"destination\":\"Address to call.\"},\"returns\":{\"_0\":\"The result of the call.\"}},\"executeRevert(address,bytes,(address,uint64,bytes))\":{\"details\":\"This function can only be called by the TSS address and it is payable.\",\"params\":{\"data\":\"Calldata to pass to the call.\",\"destination\":\"Address to call.\"}},\"executeWithERC20(address,address,uint256,bytes)\":{\"details\":\"This function can only be called by the custody or connector address. It uses the ERC20 allowance system, resetting gateway allowance at the end.\",\"params\":{\"amount\":\"Amount of tokens to transfer.\",\"data\":\"Calldata to pass to the call.\",\"to\":\"Address of the contract to call.\",\"token\":\"Address of the ERC20 token.\"}},\"getRoleAdmin(bytes32)\":{\"details\":\"Returns the admin role that controls `role`. See {grantRole} and {revokeRole}. To change a role's admin, use {_setRoleAdmin}.\"},\"grantRole(bytes32,address)\":{\"details\":\"Grants `role` to `account`. If `account` had not been already granted `role`, emits a {RoleGranted} event. Requirements: - the caller must have ``role``'s admin role. May emit a {RoleGranted} event.\"},\"hasRole(bytes32,address)\":{\"details\":\"Returns `true` if `account` has been granted `role`.\"},\"initialize(address,address,address)\":{\"details\":\"Using admin to authorize upgrades and pause, and tss for tss role.\"},\"paused()\":{\"details\":\"Returns true if the contract is paused, and false otherwise.\"},\"proxiableUUID()\":{\"details\":\"Implementation of the ERC1822 {proxiableUUID} function. This returns the storage slot used by the implementation. It is used to validate the implementation's compatibility when performing an upgrade. IMPORTANT: A proxy pointing at a proxiable contract should not be considered proxiable itself, because this risks bricking a proxy that upgrades to it, by delegating to itself until out of gas. Thus it is critical that this function revert if invoked through a proxy. This is guaranteed by the `notDelegated` modifier.\"},\"renounceRole(bytes32,address)\":{\"details\":\"Revokes `role` from the calling account. Roles are often managed via {grantRole} and {revokeRole}: this function's purpose is to provide a mechanism for accounts to lose their privileges if they are compromised (such as when a trusted device is misplaced). If the calling account had been revoked `role`, emits a {RoleRevoked} event. Requirements: - the caller must be `callerConfirmation`. May emit a {RoleRevoked} event.\"},\"revertWithERC20(address,address,uint256,bytes,(address,uint64,bytes))\":{\"details\":\"This function can only be called by the custody or connector address.\",\"params\":{\"amount\":\"Amount of tokens to transfer.\",\"data\":\"Calldata to pass to the call.\",\"revertContext\":\"Revert context to pass to onRevert.\",\"to\":\"Address of the contract to call.\",\"token\":\"Address of the ERC20 token.\"}},\"revokeRole(bytes32,address)\":{\"details\":\"Revokes `role` from `account`. If `account` had been granted `role`, emits a {RoleRevoked} event. Requirements: - the caller must have ``role``'s admin role. May emit a {RoleRevoked} event.\"},\"setConnector(address)\":{\"params\":{\"zetaConnector_\":\"Address of the connector contract.\"}},\"setCustody(address)\":{\"params\":{\"custody_\":\"Address of the custody contract.\"}},\"supportsInterface(bytes4)\":{\"details\":\"See {IERC165-supportsInterface}.\"},\"upgradeToAndCall(address,bytes)\":{\"custom:oz-upgrades-unsafe-allow-reachable\":\"delegatecall\",\"details\":\"Upgrade the implementation of the proxy to `newImplementation`, and subsequently execute the function call encoded in `data`. Calls {_authorizeUpgrade}. Emits an {Upgraded} event.\"}},\"title\":\"GatewayEVM\",\"version\":1},\"userdoc\":{\"errors\":{\"ApprovalFailed()\":[{\"notice\":\"Error for failed token approval.\"}],\"ConnectorInitialized()\":[{\"notice\":\"Error for already initialized connector.\"}],\"CustodyInitialized()\":[{\"notice\":\"Error for already initialized custody.\"}],\"DepositFailed()\":[{\"notice\":\"Error for failed deposit.\"}],\"ExecutionFailed()\":[{\"notice\":\"Error for failed execution.\"}],\"InsufficientERC20Amount()\":[{\"notice\":\"Error for insufficient ERC20 token amount.\"}],\"InsufficientETHAmount()\":[{\"notice\":\"Error for insufficient ETH amount.\"}],\"NotWhitelistedInCustody()\":[{\"notice\":\"Error when trying to transfer not whitelisted token to custody.\"}],\"ZeroAddress()\":[{\"notice\":\"Error for zero address input.\"}]},\"events\":{\"Called(address,address,bytes,(address,bool,address,bytes,uint256))\":{\"notice\":\"Emitted when an omnichain smart contract call is made without asset transfer.\"},\"Deposited(address,address,uint256,address,bytes,(address,bool,address,bytes,uint256))\":{\"notice\":\"Emitted when a deposit is made.\"},\"Executed(address,uint256,bytes)\":{\"notice\":\"Emitted when a contract call is executed.\"},\"ExecutedWithERC20(address,address,uint256,bytes)\":{\"notice\":\"Emitted when a contract call with ERC20 tokens is executed.\"},\"Reverted(address,address,uint256,bytes,(address,uint64,bytes))\":{\"notice\":\"Emitted when a contract call is reverted.\"}},\"kind\":\"user\",\"methods\":{\"ASSET_HANDLER_ROLE()\":{\"notice\":\"New role identifier for asset handler role.\"},\"PAUSER_ROLE()\":{\"notice\":\"New role identifier for pauser role.\"},\"TSS_ROLE()\":{\"notice\":\"New role identifier for tss role.\"},\"call(address,bytes,(address,bool,address,bytes,uint256))\":{\"notice\":\"Calls an omnichain smart contract without asset transfer.\"},\"custody()\":{\"notice\":\"The address of the custody contract.\"},\"deposit(address,(address,bool,address,bytes,uint256))\":{\"notice\":\"Deposits ETH to the TSS address.\"},\"deposit(address,uint256,address,(address,bool,address,bytes,uint256))\":{\"notice\":\"Deposits ERC20 tokens to the custody or connector contract.\"},\"depositAndCall(address,bytes,(address,bool,address,bytes,uint256))\":{\"notice\":\"Deposits ETH to the TSS address and calls an omnichain smart contract.\"},\"depositAndCall(address,uint256,address,bytes,(address,bool,address,bytes,uint256))\":{\"notice\":\"Deposits ERC20 tokens to the custody or connector contract and calls an omnichain smart contract.\"},\"execute(address,bytes)\":{\"notice\":\"Executes a call to a destination address without ERC20 tokens.\"},\"executeRevert(address,bytes,(address,uint64,bytes))\":{\"notice\":\"Transfers msg.value to destination contract and executes it's onRevert function.\"},\"executeWithERC20(address,address,uint256,bytes)\":{\"notice\":\"Executes a call to a destination contract using ERC20 tokens.\"},\"initialize(address,address,address)\":{\"notice\":\"Initialize with tss address. address of zeta token and admin account set as DEFAULT_ADMIN_ROLE.\"},\"pause()\":{\"notice\":\"Pause contract.\"},\"revertWithERC20(address,address,uint256,bytes,(address,uint64,bytes))\":{\"notice\":\"Directly transfers ERC20 tokens and calls onRevert.\"},\"setConnector(address)\":{\"notice\":\"Sets the connector contract address.\"},\"setCustody(address)\":{\"notice\":\"Sets the custody contract address.\"},\"tssAddress()\":{\"notice\":\"The address of the TSS (Threshold Signature Scheme) contract.\"},\"unpause()\":{\"notice\":\"Unpause contract.\"},\"zetaConnector()\":{\"notice\":\"The address of the ZetaConnector contract.\"},\"zetaToken()\":{\"notice\":\"The address of the Zeta token contract.\"}},\"notice\":\"The GatewayEVM contract is the endpoint to call smart contracts on external chains.\",\"version\":1}},\"settings\":{\"compilationTarget\":{\"contracts/evm/GatewayEVM.sol\":\"GatewayEVM\"},\"evmVersion\":\"london\",\"libraries\":{},\"metadata\":{\"bytecodeHash\":\"ipfs\"},\"optimizer\":{\"enabled\":true,\"runs\":10000},\"remappings\":[\":@openzeppelin/contracts-upgradeable/=lib/openzeppelin-contracts-upgradeable/contracts/\",\":@openzeppelin/contracts/=lib/openzeppelin-contracts-upgradeable/lib/openzeppelin-contracts/contracts/\",\":ds-test/=node_modules/ds-test/src/\",\":erc4626-tests/=lib/openzeppelin-contracts-upgradeable/lib/erc4626-tests/\",\":forge-std/=lib/forge-std/src/\",\":openzeppelin-contracts-upgradeable/=lib/openzeppelin-contracts-upgradeable/\",\":openzeppelin-contracts/=lib/openzeppelin-contracts-upgradeable/lib/openzeppelin-contracts/\",\":openzeppelin-foundry-upgrades/=lib/openzeppelin-foundry-upgrades/src/\",\":solidity-stringutils/=lib/openzeppelin-foundry-upgrades/lib/solidity-stringutils/\",\":test/=test/\"]},\"sources\":{\"contracts/Revert.sol\":{\"keccak256\":\"0x4cc63069ff784e32bc89995f30f9c229b4c3e6cf5c917665626c42f34105124b\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://a963620b9cf83465f7a9fb7a9f4e70f6b6905a4e3bb7219dfd7a65ee55ab9409\",\"dweb:/ipfs/QmUQGaQ4TEqhH9VXgdwbudebxgANpUQcuhbSp7ZfyRiDPY\"]},\"contracts/evm/GatewayEVM.sol\":{\"keccak256\":\"0x04f4dac61cbaa0e43d7ba3e10bc232acf3530ffe62da473de69e148d886e479c\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://db7bf0de61b174899c70c2a1f9b74e7a7093a820e9c05d786ef4137e6117c549\",\"dweb:/ipfs/QmViuoC93WLAwiq1F44qaWLQT4V6h96B6XfB5ZCUgLNUBg\"]},\"contracts/evm/ZetaConnectorBase.sol\":{\"keccak256\":\"0xdd289e7ac56aa09d5203fe5366aff97ac1591f45e55e9906545e99bf44ad1944\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://ed9aba1b7f2661645f1993a2f29b382acaedf90beca548982a89f3e124d23d53\",\"dweb:/ipfs/QmdvsKEwv9Ftyd3J8H4pBas4KjwmwpBjLxDiAABHiJ6TfX\"]},\"contracts/evm/interfaces/IERC20Custody.sol\":{\"keccak256\":\"0xd8ada536ba5aa69f38d6b2aea2a285331bda0ab8132e1e2a2132e01764566ed3\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://49b1e1b13a49df6f7cb3aa3b4290d9cedb3e884adbf1665fdb2951a6e37394d3\",\"dweb:/ipfs/QmT3VjYbju7rGs1xxpkqpyxqU4ftXaQdJHWb91JdwpCXoV\"]},\"contracts/evm/interfaces/IGatewayEVM.sol\":{\"keccak256\":\"0x6bee6d3bf75e7203ea02376791d1b1711e3933ecd95d94019c81d6158b43c1c3\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://42c16d5568e87aef1531b2d893b6b91ddfc29db7dda7c77f6e308761be1a0ffd\",\"dweb:/ipfs/QmTscYJ2sXFm5axr9CY8hFuKmYJwX2J9sW8kT131TNk4Y1\"]},\"contracts/evm/interfaces/IZetaConnector.sol\":{\"keccak256\":\"0xa08a49c014d92d720a986d47f1e9a977e528ced7d057b349d057451840864ad6\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://62dd7b7b30718b4302fc66eb9ed199a87e735b348eab445e8a1fa2bfde2f85ac\",\"dweb:/ipfs/QmTgcgSH9n8rjEfPRuB8W82ysfn9mGeRqqTenr5jzxqVFN\"]},\"lib/openzeppelin-contracts-upgradeable/contracts/access/AccessControlUpgradeable.sol\":{\"keccak256\":\"0x6662ec4e5cefca03eeadd073e9469df8d2944bb2ee8ec8f7622c2c46aab5f225\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://4d8544c6f8daa4d1bc215c6a72fe0acdb748664a105b0e5efc19295667521d45\",\"dweb:/ipfs/QmdGWqdnXT8S3RgCR6aV8XHZrsybieMQLLnug1NtpSjEXN\"]},\"lib/openzeppelin-contracts-upgradeable/contracts/proxy/utils/Initializable.sol\":{\"keccak256\":\"0x631188737069917d2f909d29ce62c4d48611d326686ba6683e26b72a23bfac0b\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://7a61054ae84cd6c4d04c0c4450ba1d6de41e27e0a2c4f1bcdf58f796b401c609\",\"dweb:/ipfs/QmUvtdp7X1mRVyC3CsHrtPbgoqWaXHp3S1ZR24tpAQYJWM\"]},\"lib/openzeppelin-contracts-upgradeable/contracts/proxy/utils/UUPSUpgradeable.sol\":{\"keccak256\":\"0x3f13b947637c4969c0644cab4ef399cdc4b67f101463b8775c5a43b118558e53\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://c6683e6ade6985d394d32baaef5eea0d8b9ff0b3eca86ae413d6cdde114a9930\",\"dweb:/ipfs/QmdBE8T1BTddZxpdECMsb3KiCFyjNWmxcCddYrWFTXmWPj\"]},\"lib/openzeppelin-contracts-upgradeable/contracts/utils/ContextUpgradeable.sol\":{\"keccak256\":\"0xdbef5f0c787055227243a7318ef74c8a5a1108ca3a07f2b3a00ef67769e1e397\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://08e39f23d5b4692f9a40803e53a8156b72b4c1f9902a88cd65ba964db103dab9\",\"dweb:/ipfs/QmPKn6EYDgpga7KtpkA8wV2yJCYGMtc9K4LkJfhKX2RVSV\"]},\"lib/openzeppelin-contracts-upgradeable/contracts/utils/PausableUpgradeable.sol\":{\"keccak256\":\"0x92915b7f7f642c6be3f65bfd1522feb5d5b6ef25f755f4dbb51df32c868f2f97\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://85ad36d5cc7e190e1ee6c94b24659bc3a31396c4c36b6ffa6a509e10661f8007\",\"dweb:/ipfs/QmPFyc4zMh2zo6YWZt25gjm3YdR2hg6wGETaWw256fMmJJ\"]},\"lib/openzeppelin-contracts-upgradeable/contracts/utils/ReentrancyGuardUpgradeable.sol\":{\"keccak256\":\"0xb44e086e941292cdc7f440de51478493894ef0b1aeccb0c4047445919f667f74\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://942dad22fbdc1669f025540ba63aa3ccfad5f8458fc5d4525b31ebf272e7af45\",\"dweb:/ipfs/Qmdo4X2M82aM3AMoW2kf2jhYkSCyC4T1pHNd6obdsDFnAB\"]},\"lib/openzeppelin-contracts-upgradeable/contracts/utils/introspection/ERC165Upgradeable.sol\":{\"keccak256\":\"0xdaba3f7c42c55b2896353f32bd27d4d5f8bae741b3b05d4c53f67abc4dc47ce8\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://1fa2e61141c602510bcd2cd936ed9561922ac8772a9b9c9a9db091a74e354a45\",\"dweb:/ipfs/QmcHQDDoEBwJmwUbzoVkytvJsBx3KVHYFFnDkvRGWh9Wmh\"]},\"lib/openzeppelin-contracts-upgradeable/lib/openzeppelin-contracts/contracts/access/AccessControl.sol\":{\"keccak256\":\"0xa0e92d42942f4f57c5be50568dac11e9d00c93efcb458026e18d2d9b9b2e7308\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://46326c0bb1e296b67185e81c918e0b40501b8b6386165855df0a3f3c634b6a80\",\"dweb:/ipfs/QmTwyrDYtsxsk6pymJTK94PnEpzsmkpUxFuzEiakDopy4Z\"]},\"lib/openzeppelin-contracts-upgradeable/lib/openzeppelin-contracts/contracts/access/IAccessControl.sol\":{\"keccak256\":\"0xb6b36edd6a2999fd243ff226d6cbf84bd71af2432bbd0dfe19392996a1d9cb41\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://1fd2f35495652e57e3f99bc6c510bc5f7dd398a176ea2e72d8ed730aebc6ca26\",\"dweb:/ipfs/QmTQV6X4gkikTib49cho5iDX3JvSQbdsoEChoDwrk3CbbH\"]},\"lib/openzeppelin-contracts-upgradeable/lib/openzeppelin-contracts/contracts/interfaces/draft-IERC1822.sol\":{\"keccak256\":\"0x2a1f9944df2015c081d89cd41ba22ffaf10aa6285969f0dc612b235cc448999c\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://ef381843676aec64421200ee85eaa0b1356a35f28b9fc67e746a6bbb832077d9\",\"dweb:/ipfs/QmY8aorMYA2TeTCnu6ejDjzb4rW4t7TCtW4GZ6LoxTFm7v\"]},\"lib/openzeppelin-contracts-upgradeable/lib/openzeppelin-contracts/contracts/proxy/ERC1967/ERC1967Utils.sol\":{\"keccak256\":\"0x06a78f9b3ee3e6d0eb4e4cd635ba49960bea34cac1db8c0a27c75f2319f1fd65\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://547d21aa17f4f3f1a1a7edf7167beff8dd9496a0348d5588f15cc8a4b29d052a\",\"dweb:/ipfs/QmT16JtRQSWNpLo9W23jr6CzaMuTAcQcjJJcdRd8HLJ6cE\"]},\"lib/openzeppelin-contracts-upgradeable/lib/openzeppelin-contracts/contracts/proxy/beacon/IBeacon.sol\":{\"keccak256\":\"0xc59a78b07b44b2cf2e8ab4175fca91e8eca1eee2df7357b8d2a8833e5ea1f64c\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://5aa4f07e65444784c29cd7bfcc2341b34381e4e5b5da9f0c5bd00d7f430e66fa\",\"dweb:/ipfs/QmWRMh4Q9DpaU9GvsiXmDdoNYMyyece9if7hnfLz7uqzWM\"]},\"lib/openzeppelin-contracts-upgradeable/lib/openzeppelin-contracts/contracts/token/ERC20/IERC20.sol\":{\"keccak256\":\"0xc6a8ff0ea489379b61faa647490411b80102578440ab9d84e9a957cc12164e70\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://0ea104e577e63faea3b69c415637e99e755dcbf64c5833d7140c35a714d6d90c\",\"dweb:/ipfs/Qmau6x4Ns9XdyynRCNNp3RhLqijJjFm7z5fyZazfYFGYdq\"]},\"lib/openzeppelin-contracts-upgradeable/lib/openzeppelin-contracts/contracts/token/ERC20/extensions/IERC20Permit.sol\":{\"keccak256\":\"0x6008dabfe393240d73d7dd7688033f72740d570aa422254d29a7dce8568f3aff\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://f5196ec75139918c6c7bb4251b36395e668f1fa6d206beba7e7520e74913940d\",\"dweb:/ipfs/QmSyqjksXxmm2mCG6qRd1yuwLykypkSVBbnBnGqJRcuJMi\"]},\"lib/openzeppelin-contracts-upgradeable/lib/openzeppelin-contracts/contracts/token/ERC20/utils/SafeERC20.sol\":{\"keccak256\":\"0x37bb49513c49c87c4642a891b13b63571bc87013dde806617aa1efb54605f386\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://b3036b3a83b7c48f96641f2a9002b9f2dcb6a5958dd670894ada21ae8229b3d0\",\"dweb:/ipfs/QmUNfSBdoVtjhETaUJCYcaC7pTMgbhht926tJ2uXJbiVd3\"]},\"lib/openzeppelin-contracts-upgradeable/lib/openzeppelin-contracts/contracts/utils/Address.sol\":{\"keccak256\":\"0xaf28a975a78550e45f65e559a3ad6a5ad43b9b8a37366999abd1b7084eb70721\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://b7bd24e224f67f65bfadf85dc2929fa965456bb2415478bd0125471b5ce35245\",\"dweb:/ipfs/QmRaydGr8BTHs1kvaZfsNU69pKzUAGFrvABn1KiRSbE51y\"]},\"lib/openzeppelin-contracts-upgradeable/lib/openzeppelin-contracts/contracts/utils/Context.sol\":{\"keccak256\":\"0x493033a8d1b176a037b2cc6a04dad01a5c157722049bbecf632ca876224dd4b2\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://6a708e8a5bdb1011c2c381c9a5cfd8a9a956d7d0a9dc1bd8bcdaf52f76ef2f12\",\"dweb:/ipfs/Qmax9WHBnVsZP46ZxEMNRQpLQnrdE4dK8LehML1Py8FowF\"]},\"lib/openzeppelin-contracts-upgradeable/lib/openzeppelin-contracts/contracts/utils/Pausable.sol\":{\"keccak256\":\"0xb2e5f50762c27fb4b123e3619c3c02bdcba5e515309382e5bfb6f7d6486510bd\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://1a4b83328c98d518a2699c2cbe9e9b055e78aa57fa8639f1b88deb8b3750b5dc\",\"dweb:/ipfs/QmXdcYj5v7zQxXFPULShHkR5p4Wa2zYuupbHnFdV3cHYtc\"]},\"lib/openzeppelin-contracts-upgradeable/lib/openzeppelin-contracts/contracts/utils/ReentrancyGuard.sol\":{\"keccak256\":\"0xf980daa263b661ab8ddee7d4fd833c7da7e7995e2c359ff1f17e67e4112f2236\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://7448ab095d6940130bcf76ba47a2eab14148c83119523b93dd89f6d84edd6c02\",\"dweb:/ipfs/QmawrZ4voKQjH3oomXT3Kuheb3Mnmo2VvVpxg8Ne5UJUrd\"]},\"lib/openzeppelin-contracts-upgradeable/lib/openzeppelin-contracts/contracts/utils/StorageSlot.sol\":{\"keccak256\":\"0x32ba59b4b7299237c8ba56319110989d7978a039faf754793064e967e5894418\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://1ae50c8b562427df610cc4540c9bf104acca7ef8e2dcae567ae7e52272281e9c\",\"dweb:/ipfs/QmTHiadFCSJUPpRjNegc5SahmeU8bAoY8i9Aq6tVscbcKR\"]},\"lib/openzeppelin-contracts-upgradeable/lib/openzeppelin-contracts/contracts/utils/introspection/ERC165.sol\":{\"keccak256\":\"0x9e8778b14317ba9e256c30a76fd6c32b960af621987f56069e1e819c77c6a133\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://1777404f1dcd0fac188e55a288724ec3c67b45288e49cc64723e95e702b49ab8\",\"dweb:/ipfs/QmZFdC626GButBApwDUvvTnUzdinevC3B24d7yyh57XkiA\"]},\"lib/openzeppelin-contracts-upgradeable/lib/openzeppelin-contracts/contracts/utils/introspection/IERC165.sol\":{\"keccak256\":\"0x4296879f55019b23e135000eb36896057e7101fb7fb859c5ef690cf14643757b\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://87b3541437c8c443ccd36795e56a338ed12855eec17f8da624511b8d1a7e14df\",\"dweb:/ipfs/QmeJQCtZrQjtJLr6u7ZHWeH3pBnjtLWzvRrKViAi7UZqxL\"]}},\"version\":1}","metadata":{"compiler":{"version":"0.8.26+commit.8a97fa7a"},"language":"Solidity","output":{"abi":[{"inputs":[],"stateMutability":"nonpayable","type":"constructor"},{"inputs":[],"type":"error","name":"AccessControlBadConfirmation"},{"inputs":[{"internalType":"address","name":"account","type":"address"},{"internalType":"bytes32","name":"neededRole","type":"bytes32"}],"type":"error","name":"AccessControlUnauthorizedAccount"},{"inputs":[{"internalType":"address","name":"target","type":"address"}],"type":"error","name":"AddressEmptyCode"},{"inputs":[{"internalType":"address","name":"account","type":"address"}],"type":"error","name":"AddressInsufficientBalance"},{"inputs":[],"type":"error","name":"ApprovalFailed"},{"inputs":[],"type":"error","name":"ConnectorInitialized"},{"inputs":[],"type":"error","name":"CustodyInitialized"},{"inputs":[],"type":"error","name":"DepositFailed"},{"inputs":[{"internalType":"address","name":"implementation","type":"address"}],"type":"error","name":"ERC1967InvalidImplementation"},{"inputs":[],"type":"error","name":"ERC1967NonPayable"},{"inputs":[],"type":"error","name":"EnforcedPause"},{"inputs":[],"type":"error","name":"ExecutionFailed"},{"inputs":[],"type":"error","name":"ExpectedPause"},{"inputs":[],"type":"error","name":"FailedInnerCall"},{"inputs":[],"type":"error","name":"InsufficientERC20Amount"},{"inputs":[],"type":"error","name":"InsufficientETHAmount"},{"inputs":[],"type":"error","name":"InvalidInitialization"},{"inputs":[],"type":"error","name":"NotInitializing"},{"inputs":[],"type":"error","name":"NotWhitelistedInCustody"},{"inputs":[],"type":"error","name":"ReentrancyGuardReentrantCall"},{"inputs":[{"internalType":"address","name":"token","type":"address"}],"type":"error","name":"SafeERC20FailedOperation"},{"inputs":[],"type":"error","name":"UUPSUnauthorizedCallContext"},{"inputs":[{"internalType":"bytes32","name":"slot","type":"bytes32"}],"type":"error","name":"UUPSUnsupportedProxiableUUID"},{"inputs":[],"type":"error","name":"ZeroAddress"},{"inputs":[{"internalType":"address","name":"sender","type":"address","indexed":true},{"internalType":"address","name":"receiver","type":"address","indexed":true},{"internalType":"bytes","name":"payload","type":"bytes","indexed":false},{"internalType":"struct RevertOptions","name":"revertOptions","type":"tuple","components":[{"internalType":"address","name":"revertAddress","type":"address"},{"internalType":"bool","name":"callOnRevert","type":"bool"},{"internalType":"address","name":"abortAddress","type":"address"},{"internalType":"bytes","name":"revertMessage","type":"bytes"},{"internalType":"uint256","name":"onRevertGasLimit","type":"uint256"}],"indexed":false}],"type":"event","name":"Called","anonymous":false},{"inputs":[{"internalType":"address","name":"sender","type":"address","indexed":true},{"internalType":"address","name":"receiver","type":"address","indexed":true},{"internalType":"uint256","name":"amount","type":"uint256","indexed":false},{"internalType":"address","name":"asset","type":"address","indexed":false},{"internalType":"bytes","name":"payload","type":"bytes","indexed":false},{"internalType":"struct RevertOptions","name":"revertOptions","type":"tuple","components":[{"internalType":"address","name":"revertAddress","type":"address"},{"internalType":"bool","name":"callOnRevert","type":"bool"},{"internalType":"address","name":"abortAddress","type":"address"},{"internalType":"bytes","name":"revertMessage","type":"bytes"},{"internalType":"uint256","name":"onRevertGasLimit","type":"uint256"}],"indexed":false}],"type":"event","name":"Deposited","anonymous":false},{"inputs":[{"internalType":"address","name":"destination","type":"address","indexed":true},{"internalType":"uint256","name":"value","type":"uint256","indexed":false},{"internalType":"bytes","name":"data","type":"bytes","indexed":false}],"type":"event","name":"Executed","anonymous":false},{"inputs":[{"internalType":"address","name":"token","type":"address","indexed":true},{"internalType":"address","name":"to","type":"address","indexed":true},{"internalType":"uint256","name":"amount","type":"uint256","indexed":false},{"internalType":"bytes","name":"data","type":"bytes","indexed":false}],"type":"event","name":"ExecutedWithERC20","anonymous":false},{"inputs":[{"internalType":"uint64","name":"version","type":"uint64","indexed":false}],"type":"event","name":"Initialized","anonymous":false},{"inputs":[{"internalType":"address","name":"account","type":"address","indexed":false}],"type":"event","name":"Paused","anonymous":false},{"inputs":[{"internalType":"address","name":"to","type":"address","indexed":true},{"internalType":"address","name":"token","type":"address","indexed":true},{"internalType":"uint256","name":"amount","type":"uint256","indexed":false},{"internalType":"bytes","name":"data","type":"bytes","indexed":false},{"internalType":"struct RevertContext","name":"revertContext","type":"tuple","components":[{"internalType":"address","name":"asset","type":"address"},{"internalType":"uint64","name":"amount","type":"uint64"},{"internalType":"bytes","name":"revertMessage","type":"bytes"}],"indexed":false}],"type":"event","name":"Reverted","anonymous":false},{"inputs":[{"internalType":"bytes32","name":"role","type":"bytes32","indexed":true},{"internalType":"bytes32","name":"previousAdminRole","type":"bytes32","indexed":true},{"internalType":"bytes32","name":"newAdminRole","type":"bytes32","indexed":true}],"type":"event","name":"RoleAdminChanged","anonymous":false},{"inputs":[{"internalType":"bytes32","name":"role","type":"bytes32","indexed":true},{"internalType":"address","name":"account","type":"address","indexed":true},{"internalType":"address","name":"sender","type":"address","indexed":true}],"type":"event","name":"RoleGranted","anonymous":false},{"inputs":[{"internalType":"bytes32","name":"role","type":"bytes32","indexed":true},{"internalType":"address","name":"account","type":"address","indexed":true},{"internalType":"address","name":"sender","type":"address","indexed":true}],"type":"event","name":"RoleRevoked","anonymous":false},{"inputs":[{"internalType":"address","name":"account","type":"address","indexed":false}],"type":"event","name":"Unpaused","anonymous":false},{"inputs":[{"internalType":"address","name":"implementation","type":"address","indexed":true}],"type":"event","name":"Upgraded","anonymous":false},{"inputs":[],"stateMutability":"view","type":"function","name":"ASSET_HANDLER_ROLE","outputs":[{"internalType":"bytes32","name":"","type":"bytes32"}]},{"inputs":[],"stateMutability":"view","type":"function","name":"DEFAULT_ADMIN_ROLE","outputs":[{"internalType":"bytes32","name":"","type":"bytes32"}]},{"inputs":[],"stateMutability":"view","type":"function","name":"PAUSER_ROLE","outputs":[{"internalType":"bytes32","name":"","type":"bytes32"}]},{"inputs":[],"stateMutability":"view","type":"function","name":"TSS_ROLE","outputs":[{"internalType":"bytes32","name":"","type":"bytes32"}]},{"inputs":[],"stateMutability":"view","type":"function","name":"UPGRADE_INTERFACE_VERSION","outputs":[{"internalType":"string","name":"","type":"string"}]},{"inputs":[{"internalType":"address","name":"receiver","type":"address"},{"internalType":"bytes","name":"payload","type":"bytes"},{"internalType":"struct RevertOptions","name":"revertOptions","type":"tuple","components":[{"internalType":"address","name":"revertAddress","type":"address"},{"internalType":"bool","name":"callOnRevert","type":"bool"},{"internalType":"address","name":"abortAddress","type":"address"},{"internalType":"bytes","name":"revertMessage","type":"bytes"},{"internalType":"uint256","name":"onRevertGasLimit","type":"uint256"}]}],"stateMutability":"nonpayable","type":"function","name":"call"},{"inputs":[],"stateMutability":"view","type":"function","name":"custody","outputs":[{"internalType":"address","name":"","type":"address"}]},{"inputs":[{"internalType":"address","name":"receiver","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"},{"internalType":"address","name":"asset","type":"address"},{"internalType":"struct RevertOptions","name":"revertOptions","type":"tuple","components":[{"internalType":"address","name":"revertAddress","type":"address"},{"internalType":"bool","name":"callOnRevert","type":"bool"},{"internalType":"address","name":"abortAddress","type":"address"},{"internalType":"bytes","name":"revertMessage","type":"bytes"},{"internalType":"uint256","name":"onRevertGasLimit","type":"uint256"}]}],"stateMutability":"nonpayable","type":"function","name":"deposit"},{"inputs":[{"internalType":"address","name":"receiver","type":"address"},{"internalType":"struct RevertOptions","name":"revertOptions","type":"tuple","components":[{"internalType":"address","name":"revertAddress","type":"address"},{"internalType":"bool","name":"callOnRevert","type":"bool"},{"internalType":"address","name":"abortAddress","type":"address"},{"internalType":"bytes","name":"revertMessage","type":"bytes"},{"internalType":"uint256","name":"onRevertGasLimit","type":"uint256"}]}],"stateMutability":"payable","type":"function","name":"deposit"},{"inputs":[{"internalType":"address","name":"receiver","type":"address"},{"internalType":"bytes","name":"payload","type":"bytes"},{"internalType":"struct RevertOptions","name":"revertOptions","type":"tuple","components":[{"internalType":"address","name":"revertAddress","type":"address"},{"internalType":"bool","name":"callOnRevert","type":"bool"},{"internalType":"address","name":"abortAddress","type":"address"},{"internalType":"bytes","name":"revertMessage","type":"bytes"},{"internalType":"uint256","name":"onRevertGasLimit","type":"uint256"}]}],"stateMutability":"payable","type":"function","name":"depositAndCall"},{"inputs":[{"internalType":"address","name":"receiver","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"},{"internalType":"address","name":"asset","type":"address"},{"internalType":"bytes","name":"payload","type":"bytes"},{"internalType":"struct RevertOptions","name":"revertOptions","type":"tuple","components":[{"internalType":"address","name":"revertAddress","type":"address"},{"internalType":"bool","name":"callOnRevert","type":"bool"},{"internalType":"address","name":"abortAddress","type":"address"},{"internalType":"bytes","name":"revertMessage","type":"bytes"},{"internalType":"uint256","name":"onRevertGasLimit","type":"uint256"}]}],"stateMutability":"nonpayable","type":"function","name":"depositAndCall"},{"inputs":[{"internalType":"address","name":"destination","type":"address"},{"internalType":"bytes","name":"data","type":"bytes"}],"stateMutability":"payable","type":"function","name":"execute","outputs":[{"internalType":"bytes","name":"","type":"bytes"}]},{"inputs":[{"internalType":"address","name":"destination","type":"address"},{"internalType":"bytes","name":"data","type":"bytes"},{"internalType":"struct RevertContext","name":"revertContext","type":"tuple","components":[{"internalType":"address","name":"asset","type":"address"},{"internalType":"uint64","name":"amount","type":"uint64"},{"internalType":"bytes","name":"revertMessage","type":"bytes"}]}],"stateMutability":"payable","type":"function","name":"executeRevert"},{"inputs":[{"internalType":"address","name":"token","type":"address"},{"internalType":"address","name":"to","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"},{"internalType":"bytes","name":"data","type":"bytes"}],"stateMutability":"nonpayable","type":"function","name":"executeWithERC20"},{"inputs":[{"internalType":"bytes32","name":"role","type":"bytes32"}],"stateMutability":"view","type":"function","name":"getRoleAdmin","outputs":[{"internalType":"bytes32","name":"","type":"bytes32"}]},{"inputs":[{"internalType":"bytes32","name":"role","type":"bytes32"},{"internalType":"address","name":"account","type":"address"}],"stateMutability":"nonpayable","type":"function","name":"grantRole"},{"inputs":[{"internalType":"bytes32","name":"role","type":"bytes32"},{"internalType":"address","name":"account","type":"address"}],"stateMutability":"view","type":"function","name":"hasRole","outputs":[{"internalType":"bool","name":"","type":"bool"}]},{"inputs":[{"internalType":"address","name":"tssAddress_","type":"address"},{"internalType":"address","name":"zetaToken_","type":"address"},{"internalType":"address","name":"admin_","type":"address"}],"stateMutability":"nonpayable","type":"function","name":"initialize"},{"inputs":[],"stateMutability":"nonpayable","type":"function","name":"pause"},{"inputs":[],"stateMutability":"view","type":"function","name":"paused","outputs":[{"internalType":"bool","name":"","type":"bool"}]},{"inputs":[],"stateMutability":"view","type":"function","name":"proxiableUUID","outputs":[{"internalType":"bytes32","name":"","type":"bytes32"}]},{"inputs":[{"internalType":"bytes32","name":"role","type":"bytes32"},{"internalType":"address","name":"callerConfirmation","type":"address"}],"stateMutability":"nonpayable","type":"function","name":"renounceRole"},{"inputs":[{"internalType":"address","name":"token","type":"address"},{"internalType":"address","name":"to","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"},{"internalType":"bytes","name":"data","type":"bytes"},{"internalType":"struct RevertContext","name":"revertContext","type":"tuple","components":[{"internalType":"address","name":"asset","type":"address"},{"internalType":"uint64","name":"amount","type":"uint64"},{"internalType":"bytes","name":"revertMessage","type":"bytes"}]}],"stateMutability":"nonpayable","type":"function","name":"revertWithERC20"},{"inputs":[{"internalType":"bytes32","name":"role","type":"bytes32"},{"internalType":"address","name":"account","type":"address"}],"stateMutability":"nonpayable","type":"function","name":"revokeRole"},{"inputs":[{"internalType":"address","name":"zetaConnector_","type":"address"}],"stateMutability":"nonpayable","type":"function","name":"setConnector"},{"inputs":[{"internalType":"address","name":"custody_","type":"address"}],"stateMutability":"nonpayable","type":"function","name":"setCustody"},{"inputs":[{"internalType":"bytes4","name":"interfaceId","type":"bytes4"}],"stateMutability":"view","type":"function","name":"supportsInterface","outputs":[{"internalType":"bool","name":"","type":"bool"}]},{"inputs":[],"stateMutability":"view","type":"function","name":"tssAddress","outputs":[{"internalType":"address","name":"","type":"address"}]},{"inputs":[],"stateMutability":"nonpayable","type":"function","name":"unpause"},{"inputs":[{"internalType":"address","name":"newImplementation","type":"address"},{"internalType":"bytes","name":"data","type":"bytes"}],"stateMutability":"payable","type":"function","name":"upgradeToAndCall"},{"inputs":[],"stateMutability":"view","type":"function","name":"zetaConnector","outputs":[{"internalType":"address","name":"","type":"address"}]},{"inputs":[],"stateMutability":"view","type":"function","name":"zetaToken","outputs":[{"internalType":"address","name":"","type":"address"}]}],"devdoc":{"kind":"dev","methods":{"call(address,bytes,(address,bool,address,bytes,uint256))":{"params":{"payload":"Calldata to pass to the call.","receiver":"Address of the receiver.","revertOptions":"Revert options."}},"constructor":{"custom:oz-upgrades-unsafe-allow":"constructor"},"deposit(address,(address,bool,address,bytes,uint256))":{"params":{"receiver":"Address of the receiver.","revertOptions":"Revert options."}},"deposit(address,uint256,address,(address,bool,address,bytes,uint256))":{"params":{"amount":"Amount of tokens to deposit.","asset":"Address of the ERC20 token.","receiver":"Address of the receiver.","revertOptions":"Revert options."}},"depositAndCall(address,bytes,(address,bool,address,bytes,uint256))":{"params":{"payload":"Calldata to pass to the call.","receiver":"Address of the receiver.","revertOptions":"Revert options."}},"depositAndCall(address,uint256,address,bytes,(address,bool,address,bytes,uint256))":{"params":{"amount":"Amount of tokens to deposit.","asset":"Address of the ERC20 token.","payload":"Calldata to pass to the call.","receiver":"Address of the receiver.","revertOptions":"Revert options."}},"execute(address,bytes)":{"details":"This function can only be called by the TSS address and it is payable.","params":{"data":"Calldata to pass to the call.","destination":"Address to call."},"returns":{"_0":"The result of the call."}},"executeRevert(address,bytes,(address,uint64,bytes))":{"details":"This function can only be called by the TSS address and it is payable.","params":{"data":"Calldata to pass to the call.","destination":"Address to call."}},"executeWithERC20(address,address,uint256,bytes)":{"details":"This function can only be called by the custody or connector address. It uses the ERC20 allowance system, resetting gateway allowance at the end.","params":{"amount":"Amount of tokens to transfer.","data":"Calldata to pass to the call.","to":"Address of the contract to call.","token":"Address of the ERC20 token."}},"getRoleAdmin(bytes32)":{"details":"Returns the admin role that controls `role`. See {grantRole} and {revokeRole}. To change a role's admin, use {_setRoleAdmin}."},"grantRole(bytes32,address)":{"details":"Grants `role` to `account`. If `account` had not been already granted `role`, emits a {RoleGranted} event. Requirements: - the caller must have ``role``'s admin role. May emit a {RoleGranted} event."},"hasRole(bytes32,address)":{"details":"Returns `true` if `account` has been granted `role`."},"initialize(address,address,address)":{"details":"Using admin to authorize upgrades and pause, and tss for tss role."},"paused()":{"details":"Returns true if the contract is paused, and false otherwise."},"proxiableUUID()":{"details":"Implementation of the ERC1822 {proxiableUUID} function. This returns the storage slot used by the implementation. It is used to validate the implementation's compatibility when performing an upgrade. IMPORTANT: A proxy pointing at a proxiable contract should not be considered proxiable itself, because this risks bricking a proxy that upgrades to it, by delegating to itself until out of gas. Thus it is critical that this function revert if invoked through a proxy. This is guaranteed by the `notDelegated` modifier."},"renounceRole(bytes32,address)":{"details":"Revokes `role` from the calling account. Roles are often managed via {grantRole} and {revokeRole}: this function's purpose is to provide a mechanism for accounts to lose their privileges if they are compromised (such as when a trusted device is misplaced). If the calling account had been revoked `role`, emits a {RoleRevoked} event. Requirements: - the caller must be `callerConfirmation`. May emit a {RoleRevoked} event."},"revertWithERC20(address,address,uint256,bytes,(address,uint64,bytes))":{"details":"This function can only be called by the custody or connector address.","params":{"amount":"Amount of tokens to transfer.","data":"Calldata to pass to the call.","revertContext":"Revert context to pass to onRevert.","to":"Address of the contract to call.","token":"Address of the ERC20 token."}},"revokeRole(bytes32,address)":{"details":"Revokes `role` from `account`. If `account` had been granted `role`, emits a {RoleRevoked} event. Requirements: - the caller must have ``role``'s admin role. May emit a {RoleRevoked} event."},"setConnector(address)":{"params":{"zetaConnector_":"Address of the connector contract."}},"setCustody(address)":{"params":{"custody_":"Address of the custody contract."}},"supportsInterface(bytes4)":{"details":"See {IERC165-supportsInterface}."},"upgradeToAndCall(address,bytes)":{"custom:oz-upgrades-unsafe-allow-reachable":"delegatecall","details":"Upgrade the implementation of the proxy to `newImplementation`, and subsequently execute the function call encoded in `data`. Calls {_authorizeUpgrade}. Emits an {Upgraded} event."}},"version":1},"userdoc":{"kind":"user","methods":{"ASSET_HANDLER_ROLE()":{"notice":"New role identifier for asset handler role."},"PAUSER_ROLE()":{"notice":"New role identifier for pauser role."},"TSS_ROLE()":{"notice":"New role identifier for tss role."},"call(address,bytes,(address,bool,address,bytes,uint256))":{"notice":"Calls an omnichain smart contract without asset transfer."},"custody()":{"notice":"The address of the custody contract."},"deposit(address,(address,bool,address,bytes,uint256))":{"notice":"Deposits ETH to the TSS address."},"deposit(address,uint256,address,(address,bool,address,bytes,uint256))":{"notice":"Deposits ERC20 tokens to the custody or connector contract."},"depositAndCall(address,bytes,(address,bool,address,bytes,uint256))":{"notice":"Deposits ETH to the TSS address and calls an omnichain smart contract."},"depositAndCall(address,uint256,address,bytes,(address,bool,address,bytes,uint256))":{"notice":"Deposits ERC20 tokens to the custody or connector contract and calls an omnichain smart contract."},"execute(address,bytes)":{"notice":"Executes a call to a destination address without ERC20 tokens."},"executeRevert(address,bytes,(address,uint64,bytes))":{"notice":"Transfers msg.value to destination contract and executes it's onRevert function."},"executeWithERC20(address,address,uint256,bytes)":{"notice":"Executes a call to a destination contract using ERC20 tokens."},"initialize(address,address,address)":{"notice":"Initialize with tss address. address of zeta token and admin account set as DEFAULT_ADMIN_ROLE."},"pause()":{"notice":"Pause contract."},"revertWithERC20(address,address,uint256,bytes,(address,uint64,bytes))":{"notice":"Directly transfers ERC20 tokens and calls onRevert."},"setConnector(address)":{"notice":"Sets the connector contract address."},"setCustody(address)":{"notice":"Sets the custody contract address."},"tssAddress()":{"notice":"The address of the TSS (Threshold Signature Scheme) contract."},"unpause()":{"notice":"Unpause contract."},"zetaConnector()":{"notice":"The address of the ZetaConnector contract."},"zetaToken()":{"notice":"The address of the Zeta token contract."}},"version":1}},"settings":{"remappings":["@openzeppelin/contracts-upgradeable/=lib/openzeppelin-contracts-upgradeable/contracts/","@openzeppelin/contracts/=lib/openzeppelin-contracts-upgradeable/lib/openzeppelin-contracts/contracts/","ds-test/=node_modules/ds-test/src/","erc4626-tests/=lib/openzeppelin-contracts-upgradeable/lib/erc4626-tests/","forge-std/=lib/forge-std/src/","openzeppelin-contracts-upgradeable/=lib/openzeppelin-contracts-upgradeable/","openzeppelin-contracts/=lib/openzeppelin-contracts-upgradeable/lib/openzeppelin-contracts/","openzeppelin-foundry-upgrades/=lib/openzeppelin-foundry-upgrades/src/","solidity-stringutils/=lib/openzeppelin-foundry-upgrades/lib/solidity-stringutils/","test/=test/"],"optimizer":{"enabled":true,"runs":10000},"metadata":{"bytecodeHash":"ipfs"},"compilationTarget":{"contracts/evm/GatewayEVM.sol":"GatewayEVM"},"evmVersion":"london","libraries":{}},"sources":{"contracts/Revert.sol":{"keccak256":"0x4cc63069ff784e32bc89995f30f9c229b4c3e6cf5c917665626c42f34105124b","urls":["bzz-raw://a963620b9cf83465f7a9fb7a9f4e70f6b6905a4e3bb7219dfd7a65ee55ab9409","dweb:/ipfs/QmUQGaQ4TEqhH9VXgdwbudebxgANpUQcuhbSp7ZfyRiDPY"],"license":"MIT"},"contracts/evm/GatewayEVM.sol":{"keccak256":"0x04f4dac61cbaa0e43d7ba3e10bc232acf3530ffe62da473de69e148d886e479c","urls":["bzz-raw://db7bf0de61b174899c70c2a1f9b74e7a7093a820e9c05d786ef4137e6117c549","dweb:/ipfs/QmViuoC93WLAwiq1F44qaWLQT4V6h96B6XfB5ZCUgLNUBg"],"license":"MIT"},"contracts/evm/ZetaConnectorBase.sol":{"keccak256":"0xdd289e7ac56aa09d5203fe5366aff97ac1591f45e55e9906545e99bf44ad1944","urls":["bzz-raw://ed9aba1b7f2661645f1993a2f29b382acaedf90beca548982a89f3e124d23d53","dweb:/ipfs/QmdvsKEwv9Ftyd3J8H4pBas4KjwmwpBjLxDiAABHiJ6TfX"],"license":"MIT"},"contracts/evm/interfaces/IERC20Custody.sol":{"keccak256":"0xd8ada536ba5aa69f38d6b2aea2a285331bda0ab8132e1e2a2132e01764566ed3","urls":["bzz-raw://49b1e1b13a49df6f7cb3aa3b4290d9cedb3e884adbf1665fdb2951a6e37394d3","dweb:/ipfs/QmT3VjYbju7rGs1xxpkqpyxqU4ftXaQdJHWb91JdwpCXoV"],"license":"MIT"},"contracts/evm/interfaces/IGatewayEVM.sol":{"keccak256":"0x6bee6d3bf75e7203ea02376791d1b1711e3933ecd95d94019c81d6158b43c1c3","urls":["bzz-raw://42c16d5568e87aef1531b2d893b6b91ddfc29db7dda7c77f6e308761be1a0ffd","dweb:/ipfs/QmTscYJ2sXFm5axr9CY8hFuKmYJwX2J9sW8kT131TNk4Y1"],"license":"MIT"},"contracts/evm/interfaces/IZetaConnector.sol":{"keccak256":"0xa08a49c014d92d720a986d47f1e9a977e528ced7d057b349d057451840864ad6","urls":["bzz-raw://62dd7b7b30718b4302fc66eb9ed199a87e735b348eab445e8a1fa2bfde2f85ac","dweb:/ipfs/QmTgcgSH9n8rjEfPRuB8W82ysfn9mGeRqqTenr5jzxqVFN"],"license":"MIT"},"lib/openzeppelin-contracts-upgradeable/contracts/access/AccessControlUpgradeable.sol":{"keccak256":"0x6662ec4e5cefca03eeadd073e9469df8d2944bb2ee8ec8f7622c2c46aab5f225","urls":["bzz-raw://4d8544c6f8daa4d1bc215c6a72fe0acdb748664a105b0e5efc19295667521d45","dweb:/ipfs/QmdGWqdnXT8S3RgCR6aV8XHZrsybieMQLLnug1NtpSjEXN"],"license":"MIT"},"lib/openzeppelin-contracts-upgradeable/contracts/proxy/utils/Initializable.sol":{"keccak256":"0x631188737069917d2f909d29ce62c4d48611d326686ba6683e26b72a23bfac0b","urls":["bzz-raw://7a61054ae84cd6c4d04c0c4450ba1d6de41e27e0a2c4f1bcdf58f796b401c609","dweb:/ipfs/QmUvtdp7X1mRVyC3CsHrtPbgoqWaXHp3S1ZR24tpAQYJWM"],"license":"MIT"},"lib/openzeppelin-contracts-upgradeable/contracts/proxy/utils/UUPSUpgradeable.sol":{"keccak256":"0x3f13b947637c4969c0644cab4ef399cdc4b67f101463b8775c5a43b118558e53","urls":["bzz-raw://c6683e6ade6985d394d32baaef5eea0d8b9ff0b3eca86ae413d6cdde114a9930","dweb:/ipfs/QmdBE8T1BTddZxpdECMsb3KiCFyjNWmxcCddYrWFTXmWPj"],"license":"MIT"},"lib/openzeppelin-contracts-upgradeable/contracts/utils/ContextUpgradeable.sol":{"keccak256":"0xdbef5f0c787055227243a7318ef74c8a5a1108ca3a07f2b3a00ef67769e1e397","urls":["bzz-raw://08e39f23d5b4692f9a40803e53a8156b72b4c1f9902a88cd65ba964db103dab9","dweb:/ipfs/QmPKn6EYDgpga7KtpkA8wV2yJCYGMtc9K4LkJfhKX2RVSV"],"license":"MIT"},"lib/openzeppelin-contracts-upgradeable/contracts/utils/PausableUpgradeable.sol":{"keccak256":"0x92915b7f7f642c6be3f65bfd1522feb5d5b6ef25f755f4dbb51df32c868f2f97","urls":["bzz-raw://85ad36d5cc7e190e1ee6c94b24659bc3a31396c4c36b6ffa6a509e10661f8007","dweb:/ipfs/QmPFyc4zMh2zo6YWZt25gjm3YdR2hg6wGETaWw256fMmJJ"],"license":"MIT"},"lib/openzeppelin-contracts-upgradeable/contracts/utils/ReentrancyGuardUpgradeable.sol":{"keccak256":"0xb44e086e941292cdc7f440de51478493894ef0b1aeccb0c4047445919f667f74","urls":["bzz-raw://942dad22fbdc1669f025540ba63aa3ccfad5f8458fc5d4525b31ebf272e7af45","dweb:/ipfs/Qmdo4X2M82aM3AMoW2kf2jhYkSCyC4T1pHNd6obdsDFnAB"],"license":"MIT"},"lib/openzeppelin-contracts-upgradeable/contracts/utils/introspection/ERC165Upgradeable.sol":{"keccak256":"0xdaba3f7c42c55b2896353f32bd27d4d5f8bae741b3b05d4c53f67abc4dc47ce8","urls":["bzz-raw://1fa2e61141c602510bcd2cd936ed9561922ac8772a9b9c9a9db091a74e354a45","dweb:/ipfs/QmcHQDDoEBwJmwUbzoVkytvJsBx3KVHYFFnDkvRGWh9Wmh"],"license":"MIT"},"lib/openzeppelin-contracts-upgradeable/lib/openzeppelin-contracts/contracts/access/AccessControl.sol":{"keccak256":"0xa0e92d42942f4f57c5be50568dac11e9d00c93efcb458026e18d2d9b9b2e7308","urls":["bzz-raw://46326c0bb1e296b67185e81c918e0b40501b8b6386165855df0a3f3c634b6a80","dweb:/ipfs/QmTwyrDYtsxsk6pymJTK94PnEpzsmkpUxFuzEiakDopy4Z"],"license":"MIT"},"lib/openzeppelin-contracts-upgradeable/lib/openzeppelin-contracts/contracts/access/IAccessControl.sol":{"keccak256":"0xb6b36edd6a2999fd243ff226d6cbf84bd71af2432bbd0dfe19392996a1d9cb41","urls":["bzz-raw://1fd2f35495652e57e3f99bc6c510bc5f7dd398a176ea2e72d8ed730aebc6ca26","dweb:/ipfs/QmTQV6X4gkikTib49cho5iDX3JvSQbdsoEChoDwrk3CbbH"],"license":"MIT"},"lib/openzeppelin-contracts-upgradeable/lib/openzeppelin-contracts/contracts/interfaces/draft-IERC1822.sol":{"keccak256":"0x2a1f9944df2015c081d89cd41ba22ffaf10aa6285969f0dc612b235cc448999c","urls":["bzz-raw://ef381843676aec64421200ee85eaa0b1356a35f28b9fc67e746a6bbb832077d9","dweb:/ipfs/QmY8aorMYA2TeTCnu6ejDjzb4rW4t7TCtW4GZ6LoxTFm7v"],"license":"MIT"},"lib/openzeppelin-contracts-upgradeable/lib/openzeppelin-contracts/contracts/proxy/ERC1967/ERC1967Utils.sol":{"keccak256":"0x06a78f9b3ee3e6d0eb4e4cd635ba49960bea34cac1db8c0a27c75f2319f1fd65","urls":["bzz-raw://547d21aa17f4f3f1a1a7edf7167beff8dd9496a0348d5588f15cc8a4b29d052a","dweb:/ipfs/QmT16JtRQSWNpLo9W23jr6CzaMuTAcQcjJJcdRd8HLJ6cE"],"license":"MIT"},"lib/openzeppelin-contracts-upgradeable/lib/openzeppelin-contracts/contracts/proxy/beacon/IBeacon.sol":{"keccak256":"0xc59a78b07b44b2cf2e8ab4175fca91e8eca1eee2df7357b8d2a8833e5ea1f64c","urls":["bzz-raw://5aa4f07e65444784c29cd7bfcc2341b34381e4e5b5da9f0c5bd00d7f430e66fa","dweb:/ipfs/QmWRMh4Q9DpaU9GvsiXmDdoNYMyyece9if7hnfLz7uqzWM"],"license":"MIT"},"lib/openzeppelin-contracts-upgradeable/lib/openzeppelin-contracts/contracts/token/ERC20/IERC20.sol":{"keccak256":"0xc6a8ff0ea489379b61faa647490411b80102578440ab9d84e9a957cc12164e70","urls":["bzz-raw://0ea104e577e63faea3b69c415637e99e755dcbf64c5833d7140c35a714d6d90c","dweb:/ipfs/Qmau6x4Ns9XdyynRCNNp3RhLqijJjFm7z5fyZazfYFGYdq"],"license":"MIT"},"lib/openzeppelin-contracts-upgradeable/lib/openzeppelin-contracts/contracts/token/ERC20/extensions/IERC20Permit.sol":{"keccak256":"0x6008dabfe393240d73d7dd7688033f72740d570aa422254d29a7dce8568f3aff","urls":["bzz-raw://f5196ec75139918c6c7bb4251b36395e668f1fa6d206beba7e7520e74913940d","dweb:/ipfs/QmSyqjksXxmm2mCG6qRd1yuwLykypkSVBbnBnGqJRcuJMi"],"license":"MIT"},"lib/openzeppelin-contracts-upgradeable/lib/openzeppelin-contracts/contracts/token/ERC20/utils/SafeERC20.sol":{"keccak256":"0x37bb49513c49c87c4642a891b13b63571bc87013dde806617aa1efb54605f386","urls":["bzz-raw://b3036b3a83b7c48f96641f2a9002b9f2dcb6a5958dd670894ada21ae8229b3d0","dweb:/ipfs/QmUNfSBdoVtjhETaUJCYcaC7pTMgbhht926tJ2uXJbiVd3"],"license":"MIT"},"lib/openzeppelin-contracts-upgradeable/lib/openzeppelin-contracts/contracts/utils/Address.sol":{"keccak256":"0xaf28a975a78550e45f65e559a3ad6a5ad43b9b8a37366999abd1b7084eb70721","urls":["bzz-raw://b7bd24e224f67f65bfadf85dc2929fa965456bb2415478bd0125471b5ce35245","dweb:/ipfs/QmRaydGr8BTHs1kvaZfsNU69pKzUAGFrvABn1KiRSbE51y"],"license":"MIT"},"lib/openzeppelin-contracts-upgradeable/lib/openzeppelin-contracts/contracts/utils/Context.sol":{"keccak256":"0x493033a8d1b176a037b2cc6a04dad01a5c157722049bbecf632ca876224dd4b2","urls":["bzz-raw://6a708e8a5bdb1011c2c381c9a5cfd8a9a956d7d0a9dc1bd8bcdaf52f76ef2f12","dweb:/ipfs/Qmax9WHBnVsZP46ZxEMNRQpLQnrdE4dK8LehML1Py8FowF"],"license":"MIT"},"lib/openzeppelin-contracts-upgradeable/lib/openzeppelin-contracts/contracts/utils/Pausable.sol":{"keccak256":"0xb2e5f50762c27fb4b123e3619c3c02bdcba5e515309382e5bfb6f7d6486510bd","urls":["bzz-raw://1a4b83328c98d518a2699c2cbe9e9b055e78aa57fa8639f1b88deb8b3750b5dc","dweb:/ipfs/QmXdcYj5v7zQxXFPULShHkR5p4Wa2zYuupbHnFdV3cHYtc"],"license":"MIT"},"lib/openzeppelin-contracts-upgradeable/lib/openzeppelin-contracts/contracts/utils/ReentrancyGuard.sol":{"keccak256":"0xf980daa263b661ab8ddee7d4fd833c7da7e7995e2c359ff1f17e67e4112f2236","urls":["bzz-raw://7448ab095d6940130bcf76ba47a2eab14148c83119523b93dd89f6d84edd6c02","dweb:/ipfs/QmawrZ4voKQjH3oomXT3Kuheb3Mnmo2VvVpxg8Ne5UJUrd"],"license":"MIT"},"lib/openzeppelin-contracts-upgradeable/lib/openzeppelin-contracts/contracts/utils/StorageSlot.sol":{"keccak256":"0x32ba59b4b7299237c8ba56319110989d7978a039faf754793064e967e5894418","urls":["bzz-raw://1ae50c8b562427df610cc4540c9bf104acca7ef8e2dcae567ae7e52272281e9c","dweb:/ipfs/QmTHiadFCSJUPpRjNegc5SahmeU8bAoY8i9Aq6tVscbcKR"],"license":"MIT"},"lib/openzeppelin-contracts-upgradeable/lib/openzeppelin-contracts/contracts/utils/introspection/ERC165.sol":{"keccak256":"0x9e8778b14317ba9e256c30a76fd6c32b960af621987f56069e1e819c77c6a133","urls":["bzz-raw://1777404f1dcd0fac188e55a288724ec3c67b45288e49cc64723e95e702b49ab8","dweb:/ipfs/QmZFdC626GButBApwDUvvTnUzdinevC3B24d7yyh57XkiA"],"license":"MIT"},"lib/openzeppelin-contracts-upgradeable/lib/openzeppelin-contracts/contracts/utils/introspection/IERC165.sol":{"keccak256":"0x4296879f55019b23e135000eb36896057e7101fb7fb859c5ef690cf14643757b","urls":["bzz-raw://87b3541437c8c443ccd36795e56a338ed12855eec17f8da624511b8d1a7e14df","dweb:/ipfs/QmeJQCtZrQjtJLr6u7ZHWeH3pBnjtLWzvRrKViAi7UZqxL"],"license":"MIT"}},"version":1},"storageLayout":{"storage":[{"astId":523,"contract":"contracts/evm/GatewayEVM.sol:GatewayEVM","label":"custody","offset":0,"slot":"0","type":"t_address"},{"astId":526,"contract":"contracts/evm/GatewayEVM.sol:GatewayEVM","label":"tssAddress","offset":0,"slot":"1","type":"t_address"},{"astId":529,"contract":"contracts/evm/GatewayEVM.sol:GatewayEVM","label":"zetaConnector","offset":0,"slot":"2","type":"t_address"},{"astId":532,"contract":"contracts/evm/GatewayEVM.sol:GatewayEVM","label":"zetaToken","offset":0,"slot":"3","type":"t_address"}],"types":{"t_address":{"encoding":"inplace","label":"address","numberOfBytes":"20"}}},"ast":{"absolutePath":"contracts/evm/GatewayEVM.sol","id":1449,"exportedSymbols":{"AccessControlUpgradeable":[44235],"Address":[47717],"ContextUpgradeable":[44717],"ERC165Upgradeable":[45062],"ERC1967Utils":[46098],"GatewayEVM":[1448],"IAccessControl":[45441],"IERC1822Proxiable":[45620],"IERC20":[47066],"IERC20Custody":[2206],"IERC20Permit":[47174],"IGatewayEVM":[2415],"Initializable":[44489],"PausableUpgradeable":[44893],"ReentrancyGuardUpgradeable":[45022],"RevertContext":[21],"RevertOptions":[13],"Revertable":[30],"SafeERC20":[47464],"UUPSUpgradeable":[44671],"ZetaConnectorBase":[1644]},"nodeType":"SourceUnit","src":"32:14874:2","nodes":[{"id":486,"nodeType":"PragmaDirective","src":"32:23:2","nodes":[],"literals":["solidity","0.8",".26"]},{"id":490,"nodeType":"ImportDirective","src":"57:86:2","nodes":[],"absolutePath":"contracts/Revert.sol","file":"../../contracts/Revert.sol","nameLocation":"-1:-1:-1","scope":1449,"sourceUnit":31,"symbolAliases":[{"foreign":{"id":487,"name":"RevertContext","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":21,"src":"66:13:2","typeDescriptions":{}},"nameLocation":"-1:-1:-1"},{"foreign":{"id":488,"name":"RevertOptions","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":13,"src":"81:13:2","typeDescriptions":{}},"nameLocation":"-1:-1:-1"},{"foreign":{"id":489,"name":"Revertable","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":30,"src":"96:10:2","typeDescriptions":{}},"nameLocation":"-1:-1:-1"}],"unitAlias":""},{"id":492,"nodeType":"ImportDirective","src":"144:60:2","nodes":[],"absolutePath":"contracts/evm/ZetaConnectorBase.sol","file":"./ZetaConnectorBase.sol","nameLocation":"-1:-1:-1","scope":1449,"sourceUnit":1645,"symbolAliases":[{"foreign":{"id":491,"name":"ZetaConnectorBase","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1644,"src":"153:17:2","typeDescriptions":{}},"nameLocation":"-1:-1:-1"}],"unitAlias":""},{"id":494,"nodeType":"ImportDirective","src":"205:63:2","nodes":[],"absolutePath":"contracts/evm/interfaces/IERC20Custody.sol","file":"./interfaces/IERC20Custody.sol","nameLocation":"-1:-1:-1","scope":1449,"sourceUnit":2207,"symbolAliases":[{"foreign":{"id":493,"name":"IERC20Custody","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2206,"src":"214:13:2","typeDescriptions":{}},"nameLocation":"-1:-1:-1"}],"unitAlias":""},{"id":496,"nodeType":"ImportDirective","src":"269:59:2","nodes":[],"absolutePath":"contracts/evm/interfaces/IGatewayEVM.sol","file":"./interfaces/IGatewayEVM.sol","nameLocation":"-1:-1:-1","scope":1449,"sourceUnit":2416,"symbolAliases":[{"foreign":{"id":495,"name":"IGatewayEVM","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2415,"src":"278:11:2","typeDescriptions":{}},"nameLocation":"-1:-1:-1"}],"unitAlias":""},{"id":497,"nodeType":"ImportDirective","src":"330:81:2","nodes":[],"absolutePath":"lib/openzeppelin-contracts-upgradeable/contracts/access/AccessControlUpgradeable.sol","file":"@openzeppelin/contracts-upgradeable/access/AccessControlUpgradeable.sol","nameLocation":"-1:-1:-1","scope":1449,"sourceUnit":44236,"symbolAliases":[],"unitAlias":""},{"id":498,"nodeType":"ImportDirective","src":"412:75:2","nodes":[],"absolutePath":"lib/openzeppelin-contracts-upgradeable/contracts/proxy/utils/Initializable.sol","file":"@openzeppelin/contracts-upgradeable/proxy/utils/Initializable.sol","nameLocation":"-1:-1:-1","scope":1449,"sourceUnit":44490,"symbolAliases":[],"unitAlias":""},{"id":499,"nodeType":"ImportDirective","src":"488:77:2","nodes":[],"absolutePath":"lib/openzeppelin-contracts-upgradeable/contracts/proxy/utils/UUPSUpgradeable.sol","file":"@openzeppelin/contracts-upgradeable/proxy/utils/UUPSUpgradeable.sol","nameLocation":"-1:-1:-1","scope":1449,"sourceUnit":44672,"symbolAliases":[],"unitAlias":""},{"id":500,"nodeType":"ImportDirective","src":"566:75:2","nodes":[],"absolutePath":"lib/openzeppelin-contracts-upgradeable/contracts/utils/PausableUpgradeable.sol","file":"@openzeppelin/contracts-upgradeable/utils/PausableUpgradeable.sol","nameLocation":"-1:-1:-1","scope":1449,"sourceUnit":44894,"symbolAliases":[],"unitAlias":""},{"id":501,"nodeType":"ImportDirective","src":"642:82:2","nodes":[],"absolutePath":"lib/openzeppelin-contracts-upgradeable/contracts/utils/ReentrancyGuardUpgradeable.sol","file":"@openzeppelin/contracts-upgradeable/utils/ReentrancyGuardUpgradeable.sol","nameLocation":"-1:-1:-1","scope":1449,"sourceUnit":45023,"symbolAliases":[],"unitAlias":""},{"id":502,"nodeType":"ImportDirective","src":"725:56:2","nodes":[],"absolutePath":"lib/openzeppelin-contracts-upgradeable/lib/openzeppelin-contracts/contracts/token/ERC20/IERC20.sol","file":"@openzeppelin/contracts/token/ERC20/IERC20.sol","nameLocation":"-1:-1:-1","scope":1449,"sourceUnit":47067,"symbolAliases":[],"unitAlias":""},{"id":503,"nodeType":"ImportDirective","src":"782:65:2","nodes":[],"absolutePath":"lib/openzeppelin-contracts-upgradeable/lib/openzeppelin-contracts/contracts/token/ERC20/utils/SafeERC20.sol","file":"@openzeppelin/contracts/token/ERC20/utils/SafeERC20.sol","nameLocation":"-1:-1:-1","scope":1449,"sourceUnit":47465,"symbolAliases":[],"unitAlias":""},{"id":1448,"nodeType":"ContractDefinition","src":"1053:13852:2","nodes":[{"id":520,"nodeType":"UsingForDirective","src":"1225:27:2","nodes":[],"global":false,"libraryName":{"id":517,"name":"SafeERC20","nameLocations":["1231:9:2"],"nodeType":"IdentifierPath","referencedDeclaration":47464,"src":"1231:9:2"},"typeName":{"id":519,"nodeType":"UserDefinedTypeName","pathNode":{"id":518,"name":"IERC20","nameLocations":["1245:6:2"],"nodeType":"IdentifierPath","referencedDeclaration":47066,"src":"1245:6:2"},"referencedDeclaration":47066,"src":"1245:6:2","typeDescriptions":{"typeIdentifier":"t_contract$_IERC20_$47066","typeString":"contract IERC20"}}},{"id":523,"nodeType":"VariableDeclaration","src":"1311:22:2","nodes":[],"constant":false,"documentation":{"id":521,"nodeType":"StructuredDocumentation","src":"1258:48:2","text":"@notice The address of the custody contract."},"functionSelector":"dda79b75","mutability":"mutable","name":"custody","nameLocation":"1326:7:2","scope":1448,"stateVariable":true,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":522,"name":"address","nodeType":"ElementaryTypeName","src":"1311:7:2","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"public"},{"id":526,"nodeType":"VariableDeclaration","src":"1417:25:2","nodes":[],"constant":false,"documentation":{"id":524,"nodeType":"StructuredDocumentation","src":"1339:73:2","text":"@notice The address of the TSS (Threshold Signature Scheme) contract."},"functionSelector":"5b112591","mutability":"mutable","name":"tssAddress","nameLocation":"1432:10:2","scope":1448,"stateVariable":true,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":525,"name":"address","nodeType":"ElementaryTypeName","src":"1417:7:2","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"public"},{"id":529,"nodeType":"VariableDeclaration","src":"1507:28:2","nodes":[],"constant":false,"documentation":{"id":527,"nodeType":"StructuredDocumentation","src":"1448:54:2","text":"@notice The address of the ZetaConnector contract."},"functionSelector":"57bec62f","mutability":"mutable","name":"zetaConnector","nameLocation":"1522:13:2","scope":1448,"stateVariable":true,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":528,"name":"address","nodeType":"ElementaryTypeName","src":"1507:7:2","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"public"},{"id":532,"nodeType":"VariableDeclaration","src":"1597:24:2","nodes":[],"constant":false,"documentation":{"id":530,"nodeType":"StructuredDocumentation","src":"1541:51:2","text":"@notice The address of the Zeta token contract."},"functionSelector":"21e093b1","mutability":"mutable","name":"zetaToken","nameLocation":"1612:9:2","scope":1448,"stateVariable":true,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":531,"name":"address","nodeType":"ElementaryTypeName","src":"1597:7:2","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"public"},{"id":538,"nodeType":"VariableDeclaration","src":"1678:56:2","nodes":[],"constant":true,"documentation":{"id":533,"nodeType":"StructuredDocumentation","src":"1628:45:2","text":"@notice New role identifier for tss role."},"functionSelector":"a783c789","mutability":"constant","name":"TSS_ROLE","nameLocation":"1702:8:2","scope":1448,"stateVariable":true,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"},"typeName":{"id":534,"name":"bytes32","nodeType":"ElementaryTypeName","src":"1678:7:2","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"value":{"arguments":[{"hexValue":"5453535f524f4c45","id":536,"isConstant":false,"isLValue":false,"isPure":true,"kind":"string","lValueRequested":false,"nodeType":"Literal","src":"1723:10:2","typeDescriptions":{"typeIdentifier":"t_stringliteral_0da06bffcb63442de88b7f8385468eaf51e47079d4fa96875938e2c27c451deb","typeString":"literal_string \"TSS_ROLE\""},"value":"TSS_ROLE"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_stringliteral_0da06bffcb63442de88b7f8385468eaf51e47079d4fa96875938e2c27c451deb","typeString":"literal_string \"TSS_ROLE\""}],"id":535,"name":"keccak256","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-8,"src":"1713:9:2","typeDescriptions":{"typeIdentifier":"t_function_keccak256_pure$_t_bytes_memory_ptr_$returns$_t_bytes32_$","typeString":"function (bytes memory) pure returns (bytes32)"}},"id":537,"isConstant":false,"isLValue":false,"isPure":true,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"1713:21:2","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"visibility":"public"},{"id":544,"nodeType":"VariableDeclaration","src":"1800:76:2","nodes":[],"constant":true,"documentation":{"id":539,"nodeType":"StructuredDocumentation","src":"1740:55:2","text":"@notice New role identifier for asset handler role."},"functionSelector":"5d62c860","mutability":"constant","name":"ASSET_HANDLER_ROLE","nameLocation":"1824:18:2","scope":1448,"stateVariable":true,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"},"typeName":{"id":540,"name":"bytes32","nodeType":"ElementaryTypeName","src":"1800:7:2","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"value":{"arguments":[{"hexValue":"41535345545f48414e444c45525f524f4c45","id":542,"isConstant":false,"isLValue":false,"isPure":true,"kind":"string","lValueRequested":false,"nodeType":"Literal","src":"1855:20:2","typeDescriptions":{"typeIdentifier":"t_stringliteral_584a0b16e9f616d90ccec14a0b852c19aceccfd3d60699398a57dce2b0de01b9","typeString":"literal_string \"ASSET_HANDLER_ROLE\""},"value":"ASSET_HANDLER_ROLE"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_stringliteral_584a0b16e9f616d90ccec14a0b852c19aceccfd3d60699398a57dce2b0de01b9","typeString":"literal_string \"ASSET_HANDLER_ROLE\""}],"id":541,"name":"keccak256","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-8,"src":"1845:9:2","typeDescriptions":{"typeIdentifier":"t_function_keccak256_pure$_t_bytes_memory_ptr_$returns$_t_bytes32_$","typeString":"function (bytes memory) pure returns (bytes32)"}},"id":543,"isConstant":false,"isLValue":false,"isPure":true,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"1845:31:2","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"visibility":"public"},{"id":550,"nodeType":"VariableDeclaration","src":"1935:62:2","nodes":[],"constant":true,"documentation":{"id":545,"nodeType":"StructuredDocumentation","src":"1882:48:2","text":"@notice New role identifier for pauser role."},"functionSelector":"e63ab1e9","mutability":"constant","name":"PAUSER_ROLE","nameLocation":"1959:11:2","scope":1448,"stateVariable":true,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"},"typeName":{"id":546,"name":"bytes32","nodeType":"ElementaryTypeName","src":"1935:7:2","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"value":{"arguments":[{"hexValue":"5041555345525f524f4c45","id":548,"isConstant":false,"isLValue":false,"isPure":true,"kind":"string","lValueRequested":false,"nodeType":"Literal","src":"1983:13:2","typeDescriptions":{"typeIdentifier":"t_stringliteral_65d7a28e3265b37a6474929f336521b332c1681b933f6cb9f3376673440d862a","typeString":"literal_string \"PAUSER_ROLE\""},"value":"PAUSER_ROLE"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_stringliteral_65d7a28e3265b37a6474929f336521b332c1681b933f6cb9f3376673440d862a","typeString":"literal_string \"PAUSER_ROLE\""}],"id":547,"name":"keccak256","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-8,"src":"1973:9:2","typeDescriptions":{"typeIdentifier":"t_function_keccak256_pure$_t_bytes_memory_ptr_$returns$_t_bytes32_$","typeString":"function (bytes memory) pure returns (bytes32)"}},"id":549,"isConstant":false,"isLValue":false,"isPure":true,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"1973:24:2","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"visibility":"public"},{"id":558,"nodeType":"FunctionDefinition","src":"2057:53:2","nodes":[],"body":{"id":557,"nodeType":"Block","src":"2071:39:2","nodes":[],"statements":[{"expression":{"arguments":[],"expression":{"argumentTypes":[],"id":554,"name":"_disableInitializers","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":44457,"src":"2081:20:2","typeDescriptions":{"typeIdentifier":"t_function_internal_nonpayable$__$returns$__$","typeString":"function ()"}},"id":555,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"2081:22:2","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":556,"nodeType":"ExpressionStatement","src":"2081:22:2"}]},"documentation":{"id":551,"nodeType":"StructuredDocumentation","src":"2004:48:2","text":"@custom:oz-upgrades-unsafe-allow constructor"},"implemented":true,"kind":"constructor","modifiers":[],"name":"","nameLocation":"-1:-1:-1","parameters":{"id":552,"nodeType":"ParameterList","parameters":[],"src":"2068:2:2"},"returnParameters":{"id":553,"nodeType":"ParameterList","parameters":[],"src":"2071:0:2"},"scope":1448,"stateMutability":"nonpayable","virtual":false,"visibility":"public"},{"id":624,"nodeType":"FunctionDefinition","src":"2308:543:2","nodes":[],"body":{"id":623,"nodeType":"Block","src":"2404:447:2","nodes":[],"statements":[{"condition":{"commonType":{"typeIdentifier":"t_bool","typeString":"bool"},"id":582,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"commonType":{"typeIdentifier":"t_address","typeString":"address"},"id":575,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":570,"name":"tssAddress_","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":561,"src":"2418:11:2","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"nodeType":"BinaryOperation","operator":"==","rightExpression":{"arguments":[{"hexValue":"30","id":573,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"2441:1:2","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"}],"id":572,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"2433:7:2","typeDescriptions":{"typeIdentifier":"t_type$_t_address_$","typeString":"type(address)"},"typeName":{"id":571,"name":"address","nodeType":"ElementaryTypeName","src":"2433:7:2","typeDescriptions":{}}},"id":574,"isConstant":false,"isLValue":false,"isPure":true,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"2433:10:2","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"src":"2418:25:2","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"nodeType":"BinaryOperation","operator":"||","rightExpression":{"commonType":{"typeIdentifier":"t_address","typeString":"address"},"id":581,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":576,"name":"zetaToken_","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":563,"src":"2447:10:2","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"nodeType":"BinaryOperation","operator":"==","rightExpression":{"arguments":[{"hexValue":"30","id":579,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"2469:1:2","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"}],"id":578,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"2461:7:2","typeDescriptions":{"typeIdentifier":"t_type$_t_address_$","typeString":"type(address)"},"typeName":{"id":577,"name":"address","nodeType":"ElementaryTypeName","src":"2461:7:2","typeDescriptions":{}}},"id":580,"isConstant":false,"isLValue":false,"isPure":true,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"2461:10:2","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"src":"2447:24:2","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"src":"2418:53:2","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":587,"nodeType":"IfStatement","src":"2414:104:2","trueBody":{"id":586,"nodeType":"Block","src":"2473:45:2","statements":[{"errorCall":{"arguments":[],"expression":{"argumentTypes":[],"id":583,"name":"ZeroAddress","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2289,"src":"2494:11:2","typeDescriptions":{"typeIdentifier":"t_function_error_pure$__$returns$_t_error_$","typeString":"function () pure returns (error)"}},"id":584,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"2494:13:2","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_error","typeString":"error"}},"id":585,"nodeType":"RevertStatement","src":"2487:20:2"}]}},{"expression":{"arguments":[],"expression":{"argumentTypes":[],"id":588,"name":"__UUPSUpgradeable_init","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":44543,"src":"2527:22:2","typeDescriptions":{"typeIdentifier":"t_function_internal_nonpayable$__$returns$__$","typeString":"function ()"}},"id":589,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"2527:24:2","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":590,"nodeType":"ExpressionStatement","src":"2527:24:2"},{"expression":{"arguments":[],"expression":{"argumentTypes":[],"id":591,"name":"__ReentrancyGuard_init","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":44933,"src":"2561:22:2","typeDescriptions":{"typeIdentifier":"t_function_internal_nonpayable$__$returns$__$","typeString":"function ()"}},"id":592,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"2561:24:2","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":593,"nodeType":"ExpressionStatement","src":"2561:24:2"},{"expression":{"arguments":[],"expression":{"argumentTypes":[],"id":594,"name":"__AccessControl_init","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":43936,"src":"2595:20:2","typeDescriptions":{"typeIdentifier":"t_function_internal_nonpayable$__$returns$__$","typeString":"function ()"}},"id":595,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"2595:22:2","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":596,"nodeType":"ExpressionStatement","src":"2595:22:2"},{"expression":{"arguments":[],"expression":{"argumentTypes":[],"id":597,"name":"__Pausable_init","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":44769,"src":"2627:15:2","typeDescriptions":{"typeIdentifier":"t_function_internal_nonpayable$__$returns$__$","typeString":"function ()"}},"id":598,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"2627:17:2","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":599,"nodeType":"ExpressionStatement","src":"2627:17:2"},{"expression":{"arguments":[{"id":601,"name":"DEFAULT_ADMIN_ROLE","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":43901,"src":"2666:18:2","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},{"id":602,"name":"admin_","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":565,"src":"2686:6:2","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bytes32","typeString":"bytes32"},{"typeIdentifier":"t_address","typeString":"address"}],"id":600,"name":"_grantRole","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":44188,"src":"2655:10:2","typeDescriptions":{"typeIdentifier":"t_function_internal_nonpayable$_t_bytes32_$_t_address_$returns$_t_bool_$","typeString":"function (bytes32,address) returns (bool)"}},"id":603,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"2655:38:2","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":604,"nodeType":"ExpressionStatement","src":"2655:38:2"},{"expression":{"arguments":[{"id":606,"name":"PAUSER_ROLE","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":550,"src":"2714:11:2","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},{"id":607,"name":"admin_","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":565,"src":"2727:6:2","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bytes32","typeString":"bytes32"},{"typeIdentifier":"t_address","typeString":"address"}],"id":605,"name":"_grantRole","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":44188,"src":"2703:10:2","typeDescriptions":{"typeIdentifier":"t_function_internal_nonpayable$_t_bytes32_$_t_address_$returns$_t_bool_$","typeString":"function (bytes32,address) returns (bool)"}},"id":608,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"2703:31:2","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":609,"nodeType":"ExpressionStatement","src":"2703:31:2"},{"expression":{"id":612,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":610,"name":"tssAddress","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":526,"src":"2744:10:2","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"id":611,"name":"tssAddress_","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":561,"src":"2757:11:2","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"src":"2744:24:2","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"id":613,"nodeType":"ExpressionStatement","src":"2744:24:2"},{"expression":{"arguments":[{"id":615,"name":"TSS_ROLE","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":538,"src":"2789:8:2","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},{"id":616,"name":"tssAddress_","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":561,"src":"2799:11:2","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bytes32","typeString":"bytes32"},{"typeIdentifier":"t_address","typeString":"address"}],"id":614,"name":"_grantRole","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":44188,"src":"2778:10:2","typeDescriptions":{"typeIdentifier":"t_function_internal_nonpayable$_t_bytes32_$_t_address_$returns$_t_bool_$","typeString":"function (bytes32,address) returns (bool)"}},"id":617,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"2778:33:2","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":618,"nodeType":"ExpressionStatement","src":"2778:33:2"},{"expression":{"id":621,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":619,"name":"zetaToken","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":532,"src":"2822:9:2","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"id":620,"name":"zetaToken_","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":563,"src":"2834:10:2","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"src":"2822:22:2","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"id":622,"nodeType":"ExpressionStatement","src":"2822:22:2"}]},"documentation":{"id":559,"nodeType":"StructuredDocumentation","src":"2116:187:2","text":"@notice Initialize with tss address. address of zeta token and admin account set as DEFAULT_ADMIN_ROLE.\n @dev Using admin to authorize upgrades and pause, and tss for tss role."},"functionSelector":"c0c53b8b","implemented":true,"kind":"function","modifiers":[{"id":568,"kind":"modifierInvocation","modifierName":{"id":567,"name":"initializer","nameLocations":["2392:11:2"],"nodeType":"IdentifierPath","referencedDeclaration":44343,"src":"2392:11:2"},"nodeType":"ModifierInvocation","src":"2392:11:2"}],"name":"initialize","nameLocation":"2317:10:2","parameters":{"id":566,"nodeType":"ParameterList","parameters":[{"constant":false,"id":561,"mutability":"mutable","name":"tssAddress_","nameLocation":"2336:11:2","nodeType":"VariableDeclaration","scope":624,"src":"2328:19:2","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":560,"name":"address","nodeType":"ElementaryTypeName","src":"2328:7:2","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":563,"mutability":"mutable","name":"zetaToken_","nameLocation":"2357:10:2","nodeType":"VariableDeclaration","scope":624,"src":"2349:18:2","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":562,"name":"address","nodeType":"ElementaryTypeName","src":"2349:7:2","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":565,"mutability":"mutable","name":"admin_","nameLocation":"2377:6:2","nodeType":"VariableDeclaration","scope":624,"src":"2369:14:2","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":564,"name":"address","nodeType":"ElementaryTypeName","src":"2369:7:2","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"2327:57:2"},"returnParameters":{"id":569,"nodeType":"ParameterList","parameters":[],"src":"2404:0:2"},"scope":1448,"stateMutability":"nonpayable","virtual":false,"visibility":"public"},{"id":635,"nodeType":"FunctionDefinition","src":"3000:104:2","nodes":[],"body":{"id":634,"nodeType":"Block","src":"3101:3:2","nodes":[],"statements":[]},"baseFunctions":[44625],"documentation":{"id":625,"nodeType":"StructuredDocumentation","src":"2857:138:2","text":"@dev Authorizes the upgrade of the contract, sender must be owner.\n @param newImplementation Address of the new implementation."},"implemented":true,"kind":"function","modifiers":[{"arguments":[{"id":631,"name":"DEFAULT_ADMIN_ROLE","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":43901,"src":"3081:18:2","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}}],"id":632,"kind":"modifierInvocation","modifierName":{"id":630,"name":"onlyRole","nameLocations":["3072:8:2"],"nodeType":"IdentifierPath","referencedDeclaration":43930,"src":"3072:8:2"},"nodeType":"ModifierInvocation","src":"3072:28:2"}],"name":"_authorizeUpgrade","nameLocation":"3009:17:2","overrides":{"id":629,"nodeType":"OverrideSpecifier","overrides":[],"src":"3063:8:2"},"parameters":{"id":628,"nodeType":"ParameterList","parameters":[{"constant":false,"id":627,"mutability":"mutable","name":"newImplementation","nameLocation":"3035:17:2","nodeType":"VariableDeclaration","scope":635,"src":"3027:25:2","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":626,"name":"address","nodeType":"ElementaryTypeName","src":"3027:7:2","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"3026:27:2"},"returnParameters":{"id":633,"nodeType":"ParameterList","parameters":[],"src":"3101:0:2"},"scope":1448,"stateMutability":"nonpayable","virtual":false,"visibility":"internal"},{"id":666,"nodeType":"FunctionDefinition","src":"3319:261:2","nodes":[],"body":{"id":665,"nodeType":"Block","src":"3411:169:2","nodes":[],"statements":[{"assignments":[646,648],"declarations":[{"constant":false,"id":646,"mutability":"mutable","name":"success","nameLocation":"3427:7:2","nodeType":"VariableDeclaration","scope":665,"src":"3422:12:2","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"typeName":{"id":645,"name":"bool","nodeType":"ElementaryTypeName","src":"3422:4:2","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"visibility":"internal"},{"constant":false,"id":648,"mutability":"mutable","name":"result","nameLocation":"3449:6:2","nodeType":"VariableDeclaration","scope":665,"src":"3436:19:2","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes"},"typeName":{"id":647,"name":"bytes","nodeType":"ElementaryTypeName","src":"3436:5:2","typeDescriptions":{"typeIdentifier":"t_bytes_storage_ptr","typeString":"bytes"}},"visibility":"internal"}],"id":656,"initialValue":{"arguments":[{"id":654,"name":"data","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":640,"src":"3496:4:2","typeDescriptions":{"typeIdentifier":"t_bytes_calldata_ptr","typeString":"bytes calldata"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bytes_calldata_ptr","typeString":"bytes calldata"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bytes_calldata_ptr","typeString":"bytes calldata"}],"expression":{"id":649,"name":"destination","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":638,"src":"3459:11:2","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"id":650,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"3471:4:2","memberName":"call","nodeType":"MemberAccess","src":"3459:16:2","typeDescriptions":{"typeIdentifier":"t_function_barecall_payable$_t_bytes_memory_ptr_$returns$_t_bool_$_t_bytes_memory_ptr_$","typeString":"function (bytes memory) payable returns (bool,bytes memory)"}},"id":653,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"names":["value"],"nodeType":"FunctionCallOptions","options":[{"expression":{"id":651,"name":"msg","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-15,"src":"3484:3:2","typeDescriptions":{"typeIdentifier":"t_magic_message","typeString":"msg"}},"id":652,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"3488:5:2","memberName":"value","nodeType":"MemberAccess","src":"3484:9:2","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"src":"3459:36:2","typeDescriptions":{"typeIdentifier":"t_function_barecall_payable$_t_bytes_memory_ptr_$returns$_t_bool_$_t_bytes_memory_ptr_$value","typeString":"function (bytes memory) payable returns (bool,bytes memory)"}},"id":655,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"3459:42:2","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$_t_bool_$_t_bytes_memory_ptr_$","typeString":"tuple(bool,bytes memory)"}},"nodeType":"VariableDeclarationStatement","src":"3421:80:2"},{"condition":{"id":658,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"UnaryOperation","operator":"!","prefix":true,"src":"3515:8:2","subExpression":{"id":657,"name":"success","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":646,"src":"3516:7:2","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":662,"nodeType":"IfStatement","src":"3511:38:2","trueBody":{"errorCall":{"arguments":[],"expression":{"argumentTypes":[],"id":659,"name":"ExecutionFailed","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2277,"src":"3532:15:2","typeDescriptions":{"typeIdentifier":"t_function_error_pure$__$returns$_t_error_$","typeString":"function () pure returns (error)"}},"id":660,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"3532:17:2","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_error","typeString":"error"}},"id":661,"nodeType":"RevertStatement","src":"3525:24:2"}},{"expression":{"id":663,"name":"result","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":648,"src":"3567:6:2","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}},"functionReturnParameters":644,"id":664,"nodeType":"Return","src":"3560:13:2"}]},"documentation":{"id":636,"nodeType":"StructuredDocumentation","src":"3110:204:2","text":"@dev Internal function to execute a call to a destination address.\n @param destination Address to call.\n @param data Calldata to pass to the call.\n @return The result of the call."},"implemented":true,"kind":"function","modifiers":[],"name":"_execute","nameLocation":"3328:8:2","parameters":{"id":641,"nodeType":"ParameterList","parameters":[{"constant":false,"id":638,"mutability":"mutable","name":"destination","nameLocation":"3345:11:2","nodeType":"VariableDeclaration","scope":666,"src":"3337:19:2","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":637,"name":"address","nodeType":"ElementaryTypeName","src":"3337:7:2","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":640,"mutability":"mutable","name":"data","nameLocation":"3373:4:2","nodeType":"VariableDeclaration","scope":666,"src":"3358:19:2","stateVariable":false,"storageLocation":"calldata","typeDescriptions":{"typeIdentifier":"t_bytes_calldata_ptr","typeString":"bytes"},"typeName":{"id":639,"name":"bytes","nodeType":"ElementaryTypeName","src":"3358:5:2","typeDescriptions":{"typeIdentifier":"t_bytes_storage_ptr","typeString":"bytes"}},"visibility":"internal"}],"src":"3336:42:2"},"returnParameters":{"id":644,"nodeType":"ParameterList","parameters":[{"constant":false,"id":643,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":666,"src":"3397:12:2","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes"},"typeName":{"id":642,"name":"bytes","nodeType":"ElementaryTypeName","src":"3397:5:2","typeDescriptions":{"typeIdentifier":"t_bytes_storage_ptr","typeString":"bytes"}},"visibility":"internal"}],"src":"3396:14:2"},"scope":1448,"stateMutability":"nonpayable","virtual":false,"visibility":"internal"},{"id":677,"nodeType":"FunctionDefinition","src":"3618:73:2","nodes":[],"body":{"id":676,"nodeType":"Block","src":"3666:25:2","nodes":[],"statements":[{"expression":{"arguments":[],"expression":{"argumentTypes":[],"id":673,"name":"_pause","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":44868,"src":"3676:6:2","typeDescriptions":{"typeIdentifier":"t_function_internal_nonpayable$__$returns$__$","typeString":"function ()"}},"id":674,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"3676:8:2","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":675,"nodeType":"ExpressionStatement","src":"3676:8:2"}]},"documentation":{"id":667,"nodeType":"StructuredDocumentation","src":"3586:27:2","text":"@notice Pause contract."},"functionSelector":"8456cb59","implemented":true,"kind":"function","modifiers":[{"arguments":[{"id":670,"name":"PAUSER_ROLE","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":550,"src":"3653:11:2","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}}],"id":671,"kind":"modifierInvocation","modifierName":{"id":669,"name":"onlyRole","nameLocations":["3644:8:2"],"nodeType":"IdentifierPath","referencedDeclaration":43930,"src":"3644:8:2"},"nodeType":"ModifierInvocation","src":"3644:21:2"}],"name":"pause","nameLocation":"3627:5:2","parameters":{"id":668,"nodeType":"ParameterList","parameters":[],"src":"3632:2:2"},"returnParameters":{"id":672,"nodeType":"ParameterList","parameters":[],"src":"3666:0:2"},"scope":1448,"stateMutability":"nonpayable","virtual":false,"visibility":"external"},{"id":688,"nodeType":"FunctionDefinition","src":"3731:77:2","nodes":[],"body":{"id":687,"nodeType":"Block","src":"3781:27:2","nodes":[],"statements":[{"expression":{"arguments":[],"expression":{"argumentTypes":[],"id":684,"name":"_unpause","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":44892,"src":"3791:8:2","typeDescriptions":{"typeIdentifier":"t_function_internal_nonpayable$__$returns$__$","typeString":"function ()"}},"id":685,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"3791:10:2","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":686,"nodeType":"ExpressionStatement","src":"3791:10:2"}]},"documentation":{"id":678,"nodeType":"StructuredDocumentation","src":"3697:29:2","text":"@notice Unpause contract."},"functionSelector":"3f4ba83a","implemented":true,"kind":"function","modifiers":[{"arguments":[{"id":681,"name":"PAUSER_ROLE","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":550,"src":"3768:11:2","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}}],"id":682,"kind":"modifierInvocation","modifierName":{"id":680,"name":"onlyRole","nameLocations":["3759:8:2"],"nodeType":"IdentifierPath","referencedDeclaration":43930,"src":"3759:8:2"},"nodeType":"ModifierInvocation","src":"3759:21:2"}],"name":"unpause","nameLocation":"3740:7:2","parameters":{"id":679,"nodeType":"ParameterList","parameters":[],"src":"3747:2:2"},"returnParameters":{"id":683,"nodeType":"ParameterList","parameters":[],"src":"3781:0:2"},"scope":1448,"stateMutability":"nonpayable","virtual":false,"visibility":"external"},{"id":752,"nodeType":"FunctionDefinition","src":"4089:560:2","nodes":[],"body":{"id":751,"nodeType":"Block","src":"4327:322:2","nodes":[],"statements":[{"condition":{"commonType":{"typeIdentifier":"t_address","typeString":"address"},"id":711,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":706,"name":"destination","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":691,"src":"4341:11:2","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"nodeType":"BinaryOperation","operator":"==","rightExpression":{"arguments":[{"hexValue":"30","id":709,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"4364:1:2","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"}],"id":708,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"4356:7:2","typeDescriptions":{"typeIdentifier":"t_type$_t_address_$","typeString":"type(address)"},"typeName":{"id":707,"name":"address","nodeType":"ElementaryTypeName","src":"4356:7:2","typeDescriptions":{}}},"id":710,"isConstant":false,"isLValue":false,"isPure":true,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"4356:10:2","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"src":"4341:25:2","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":715,"nodeType":"IfStatement","src":"4337:51:2","trueBody":{"errorCall":{"arguments":[],"expression":{"argumentTypes":[],"id":712,"name":"ZeroAddress","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2289,"src":"4375:11:2","typeDescriptions":{"typeIdentifier":"t_function_error_pure$__$returns$_t_error_$","typeString":"function () pure returns (error)"}},"id":713,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"4375:13:2","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_error","typeString":"error"}},"id":714,"nodeType":"RevertStatement","src":"4368:20:2"}},{"assignments":[717,null],"declarations":[{"constant":false,"id":717,"mutability":"mutable","name":"success","nameLocation":"4404:7:2","nodeType":"VariableDeclaration","scope":751,"src":"4399:12:2","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"typeName":{"id":716,"name":"bool","nodeType":"ElementaryTypeName","src":"4399:4:2","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"visibility":"internal"},null],"id":725,"initialValue":{"arguments":[{"hexValue":"","id":723,"isConstant":false,"isLValue":false,"isPure":true,"kind":"string","lValueRequested":false,"nodeType":"Literal","src":"4453:2:2","typeDescriptions":{"typeIdentifier":"t_stringliteral_c5d2460186f7233c927e7db2dcc703c0e500b653ca82273b7bfad8045d85a470","typeString":"literal_string \"\""},"value":""}],"expression":{"argumentTypes":[{"typeIdentifier":"t_stringliteral_c5d2460186f7233c927e7db2dcc703c0e500b653ca82273b7bfad8045d85a470","typeString":"literal_string \"\""}],"expression":{"argumentTypes":[{"typeIdentifier":"t_stringliteral_c5d2460186f7233c927e7db2dcc703c0e500b653ca82273b7bfad8045d85a470","typeString":"literal_string \"\""}],"expression":{"id":718,"name":"destination","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":691,"src":"4416:11:2","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"id":719,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"4428:4:2","memberName":"call","nodeType":"MemberAccess","src":"4416:16:2","typeDescriptions":{"typeIdentifier":"t_function_barecall_payable$_t_bytes_memory_ptr_$returns$_t_bool_$_t_bytes_memory_ptr_$","typeString":"function (bytes memory) payable returns (bool,bytes memory)"}},"id":722,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"names":["value"],"nodeType":"FunctionCallOptions","options":[{"expression":{"id":720,"name":"msg","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-15,"src":"4441:3:2","typeDescriptions":{"typeIdentifier":"t_magic_message","typeString":"msg"}},"id":721,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"4445:5:2","memberName":"value","nodeType":"MemberAccess","src":"4441:9:2","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"src":"4416:36:2","typeDescriptions":{"typeIdentifier":"t_function_barecall_payable$_t_bytes_memory_ptr_$returns$_t_bool_$_t_bytes_memory_ptr_$value","typeString":"function (bytes memory) payable returns (bool,bytes memory)"}},"id":724,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"4416:40:2","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$_t_bool_$_t_bytes_memory_ptr_$","typeString":"tuple(bool,bytes memory)"}},"nodeType":"VariableDeclarationStatement","src":"4398:58:2"},{"condition":{"id":727,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"UnaryOperation","operator":"!","prefix":true,"src":"4470:8:2","subExpression":{"id":726,"name":"success","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":717,"src":"4471:7:2","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":731,"nodeType":"IfStatement","src":"4466:38:2","trueBody":{"errorCall":{"arguments":[],"expression":{"argumentTypes":[],"id":728,"name":"ExecutionFailed","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2277,"src":"4487:15:2","typeDescriptions":{"typeIdentifier":"t_function_error_pure$__$returns$_t_error_$","typeString":"function () pure returns (error)"}},"id":729,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"4487:17:2","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_error","typeString":"error"}},"id":730,"nodeType":"RevertStatement","src":"4480:24:2"}},{"expression":{"arguments":[{"id":736,"name":"revertContext","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":696,"src":"4547:13:2","typeDescriptions":{"typeIdentifier":"t_struct$_RevertContext_$21_calldata_ptr","typeString":"struct RevertContext calldata"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_struct$_RevertContext_$21_calldata_ptr","typeString":"struct RevertContext calldata"}],"expression":{"arguments":[{"id":733,"name":"destination","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":691,"src":"4525:11:2","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"}],"id":732,"name":"Revertable","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":30,"src":"4514:10:2","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_Revertable_$30_$","typeString":"type(contract Revertable)"}},"id":734,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"4514:23:2","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_contract$_Revertable_$30","typeString":"contract Revertable"}},"id":735,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"4538:8:2","memberName":"onRevert","nodeType":"MemberAccess","referencedDeclaration":29,"src":"4514:32:2","typeDescriptions":{"typeIdentifier":"t_function_external_nonpayable$_t_struct$_RevertContext_$21_memory_ptr_$returns$__$","typeString":"function (struct RevertContext memory) external"}},"id":737,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"4514:47:2","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":738,"nodeType":"ExpressionStatement","src":"4514:47:2"},{"eventCall":{"arguments":[{"id":740,"name":"destination","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":691,"src":"4586:11:2","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"arguments":[{"hexValue":"30","id":743,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"4607:1:2","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"}],"id":742,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"4599:7:2","typeDescriptions":{"typeIdentifier":"t_type$_t_address_$","typeString":"type(address)"},"typeName":{"id":741,"name":"address","nodeType":"ElementaryTypeName","src":"4599:7:2","typeDescriptions":{}}},"id":744,"isConstant":false,"isLValue":false,"isPure":true,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"4599:10:2","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"expression":{"id":745,"name":"msg","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-15,"src":"4611:3:2","typeDescriptions":{"typeIdentifier":"t_magic_message","typeString":"msg"}},"id":746,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"4615:5:2","memberName":"value","nodeType":"MemberAccess","src":"4611:9:2","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},{"id":747,"name":"data","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":693,"src":"4622:4:2","typeDescriptions":{"typeIdentifier":"t_bytes_calldata_ptr","typeString":"bytes calldata"}},{"id":748,"name":"revertContext","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":696,"src":"4628:13:2","typeDescriptions":{"typeIdentifier":"t_struct$_RevertContext_$21_calldata_ptr","typeString":"struct RevertContext calldata"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_uint256","typeString":"uint256"},{"typeIdentifier":"t_bytes_calldata_ptr","typeString":"bytes calldata"},{"typeIdentifier":"t_struct$_RevertContext_$21_calldata_ptr","typeString":"struct RevertContext calldata"}],"id":739,"name":"Reverted","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2233,"src":"4577:8:2","typeDescriptions":{"typeIdentifier":"t_function_event_nonpayable$_t_address_$_t_address_$_t_uint256_$_t_bytes_memory_ptr_$_t_struct$_RevertContext_$21_memory_ptr_$returns$__$","typeString":"function (address,address,uint256,bytes memory,struct RevertContext memory)"}},"id":749,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"4577:65:2","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":750,"nodeType":"EmitStatement","src":"4572:70:2"}]},"baseFunctions":[2330],"documentation":{"id":689,"nodeType":"StructuredDocumentation","src":"3814:270:2","text":"@notice Transfers msg.value to destination contract and executes it's onRevert function.\n @dev This function can only be called by the TSS address and it is payable.\n @param destination Address to call.\n @param data Calldata to pass to the call."},"functionSelector":"f7ad60db","implemented":true,"kind":"function","modifiers":[{"arguments":[{"id":699,"name":"TSS_ROLE","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":538,"src":"4270:8:2","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}}],"id":700,"kind":"modifierInvocation","modifierName":{"id":698,"name":"onlyRole","nameLocations":["4261:8:2"],"nodeType":"IdentifierPath","referencedDeclaration":43930,"src":"4261:8:2"},"nodeType":"ModifierInvocation","src":"4261:18:2"},{"id":702,"kind":"modifierInvocation","modifierName":{"id":701,"name":"whenNotPaused","nameLocations":["4288:13:2"],"nodeType":"IdentifierPath","referencedDeclaration":44795,"src":"4288:13:2"},"nodeType":"ModifierInvocation","src":"4288:13:2"},{"id":704,"kind":"modifierInvocation","modifierName":{"id":703,"name":"nonReentrant","nameLocations":["4310:12:2"],"nodeType":"IdentifierPath","referencedDeclaration":44962,"src":"4310:12:2"},"nodeType":"ModifierInvocation","src":"4310:12:2"}],"name":"executeRevert","nameLocation":"4098:13:2","parameters":{"id":697,"nodeType":"ParameterList","parameters":[{"constant":false,"id":691,"mutability":"mutable","name":"destination","nameLocation":"4129:11:2","nodeType":"VariableDeclaration","scope":752,"src":"4121:19:2","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":690,"name":"address","nodeType":"ElementaryTypeName","src":"4121:7:2","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":693,"mutability":"mutable","name":"data","nameLocation":"4165:4:2","nodeType":"VariableDeclaration","scope":752,"src":"4150:19:2","stateVariable":false,"storageLocation":"calldata","typeDescriptions":{"typeIdentifier":"t_bytes_calldata_ptr","typeString":"bytes"},"typeName":{"id":692,"name":"bytes","nodeType":"ElementaryTypeName","src":"4150:5:2","typeDescriptions":{"typeIdentifier":"t_bytes_storage_ptr","typeString":"bytes"}},"visibility":"internal"},{"constant":false,"id":696,"mutability":"mutable","name":"revertContext","nameLocation":"4202:13:2","nodeType":"VariableDeclaration","scope":752,"src":"4179:36:2","stateVariable":false,"storageLocation":"calldata","typeDescriptions":{"typeIdentifier":"t_struct$_RevertContext_$21_calldata_ptr","typeString":"struct RevertContext"},"typeName":{"id":695,"nodeType":"UserDefinedTypeName","pathNode":{"id":694,"name":"RevertContext","nameLocations":["4179:13:2"],"nodeType":"IdentifierPath","referencedDeclaration":21,"src":"4179:13:2"},"referencedDeclaration":21,"src":"4179:13:2","typeDescriptions":{"typeIdentifier":"t_struct$_RevertContext_$21_storage_ptr","typeString":"struct RevertContext"}},"visibility":"internal"}],"src":"4111:110:2"},"returnParameters":{"id":705,"nodeType":"ParameterList","parameters":[],"src":"4327:0:2"},"scope":1448,"stateMutability":"payable","virtual":false,"visibility":"public"},{"id":796,"nodeType":"FunctionDefinition","src":"4952:424:2","nodes":[],"body":{"id":795,"nodeType":"Block","src":"5171:205:2","nodes":[],"statements":[{"condition":{"commonType":{"typeIdentifier":"t_address","typeString":"address"},"id":774,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":769,"name":"destination","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":755,"src":"5185:11:2","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"nodeType":"BinaryOperation","operator":"==","rightExpression":{"arguments":[{"hexValue":"30","id":772,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"5208:1:2","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"}],"id":771,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"5200:7:2","typeDescriptions":{"typeIdentifier":"t_type$_t_address_$","typeString":"type(address)"},"typeName":{"id":770,"name":"address","nodeType":"ElementaryTypeName","src":"5200:7:2","typeDescriptions":{}}},"id":773,"isConstant":false,"isLValue":false,"isPure":true,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"5200:10:2","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"src":"5185:25:2","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":778,"nodeType":"IfStatement","src":"5181:51:2","trueBody":{"errorCall":{"arguments":[],"expression":{"argumentTypes":[],"id":775,"name":"ZeroAddress","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2289,"src":"5219:11:2","typeDescriptions":{"typeIdentifier":"t_function_error_pure$__$returns$_t_error_$","typeString":"function () pure returns (error)"}},"id":776,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"5219:13:2","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_error","typeString":"error"}},"id":777,"nodeType":"RevertStatement","src":"5212:20:2"}},{"assignments":[780],"declarations":[{"constant":false,"id":780,"mutability":"mutable","name":"result","nameLocation":"5255:6:2","nodeType":"VariableDeclaration","scope":795,"src":"5242:19:2","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes"},"typeName":{"id":779,"name":"bytes","nodeType":"ElementaryTypeName","src":"5242:5:2","typeDescriptions":{"typeIdentifier":"t_bytes_storage_ptr","typeString":"bytes"}},"visibility":"internal"}],"id":785,"initialValue":{"arguments":[{"id":782,"name":"destination","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":755,"src":"5273:11:2","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":783,"name":"data","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":757,"src":"5286:4:2","typeDescriptions":{"typeIdentifier":"t_bytes_calldata_ptr","typeString":"bytes calldata"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_bytes_calldata_ptr","typeString":"bytes calldata"}],"id":781,"name":"_execute","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":666,"src":"5264:8:2","typeDescriptions":{"typeIdentifier":"t_function_internal_nonpayable$_t_address_$_t_bytes_calldata_ptr_$returns$_t_bytes_memory_ptr_$","typeString":"function (address,bytes calldata) returns (bytes memory)"}},"id":784,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"5264:27:2","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}},"nodeType":"VariableDeclarationStatement","src":"5242:49:2"},{"eventCall":{"arguments":[{"id":787,"name":"destination","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":755,"src":"5316:11:2","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"expression":{"id":788,"name":"msg","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-15,"src":"5329:3:2","typeDescriptions":{"typeIdentifier":"t_magic_message","typeString":"msg"}},"id":789,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"5333:5:2","memberName":"value","nodeType":"MemberAccess","src":"5329:9:2","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},{"id":790,"name":"data","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":757,"src":"5340:4:2","typeDescriptions":{"typeIdentifier":"t_bytes_calldata_ptr","typeString":"bytes calldata"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_uint256","typeString":"uint256"},{"typeIdentifier":"t_bytes_calldata_ptr","typeString":"bytes calldata"}],"id":786,"name":"Executed","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2219,"src":"5307:8:2","typeDescriptions":{"typeIdentifier":"t_function_event_nonpayable$_t_address_$_t_uint256_$_t_bytes_memory_ptr_$returns$__$","typeString":"function (address,uint256,bytes memory)"}},"id":791,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"5307:38:2","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":792,"nodeType":"EmitStatement","src":"5302:43:2"},{"expression":{"id":793,"name":"result","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":780,"src":"5363:6:2","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}},"functionReturnParameters":768,"id":794,"nodeType":"Return","src":"5356:13:2"}]},"baseFunctions":[2340],"documentation":{"id":753,"nodeType":"StructuredDocumentation","src":"4655:292:2","text":"@notice Executes a call to a destination address without ERC20 tokens.\n @dev This function can only be called by the TSS address and it is payable.\n @param destination Address to call.\n @param data Calldata to pass to the call.\n @return The result of the call."},"functionSelector":"1cff79cd","implemented":true,"kind":"function","modifiers":[{"arguments":[{"id":760,"name":"TSS_ROLE","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":538,"src":"5083:8:2","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}}],"id":761,"kind":"modifierInvocation","modifierName":{"id":759,"name":"onlyRole","nameLocations":["5074:8:2"],"nodeType":"IdentifierPath","referencedDeclaration":43930,"src":"5074:8:2"},"nodeType":"ModifierInvocation","src":"5074:18:2"},{"id":763,"kind":"modifierInvocation","modifierName":{"id":762,"name":"whenNotPaused","nameLocations":["5101:13:2"],"nodeType":"IdentifierPath","referencedDeclaration":44795,"src":"5101:13:2"},"nodeType":"ModifierInvocation","src":"5101:13:2"},{"id":765,"kind":"modifierInvocation","modifierName":{"id":764,"name":"nonReentrant","nameLocations":["5123:12:2"],"nodeType":"IdentifierPath","referencedDeclaration":44962,"src":"5123:12:2"},"nodeType":"ModifierInvocation","src":"5123:12:2"}],"name":"execute","nameLocation":"4961:7:2","parameters":{"id":758,"nodeType":"ParameterList","parameters":[{"constant":false,"id":755,"mutability":"mutable","name":"destination","nameLocation":"4986:11:2","nodeType":"VariableDeclaration","scope":796,"src":"4978:19:2","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":754,"name":"address","nodeType":"ElementaryTypeName","src":"4978:7:2","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":757,"mutability":"mutable","name":"data","nameLocation":"5022:4:2","nodeType":"VariableDeclaration","scope":796,"src":"5007:19:2","stateVariable":false,"storageLocation":"calldata","typeDescriptions":{"typeIdentifier":"t_bytes_calldata_ptr","typeString":"bytes"},"typeName":{"id":756,"name":"bytes","nodeType":"ElementaryTypeName","src":"5007:5:2","typeDescriptions":{"typeIdentifier":"t_bytes_storage_ptr","typeString":"bytes"}},"visibility":"internal"}],"src":"4968:64:2"},"returnParameters":{"id":768,"nodeType":"ParameterList","parameters":[{"constant":false,"id":767,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":796,"src":"5153:12:2","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes"},"typeName":{"id":766,"name":"bytes","nodeType":"ElementaryTypeName","src":"5153:5:2","typeDescriptions":{"typeIdentifier":"t_bytes_storage_ptr","typeString":"bytes"}},"visibility":"internal"}],"src":"5152:14:2"},"scope":1448,"stateMutability":"payable","virtual":false,"visibility":"external"},{"id":897,"nodeType":"FunctionDefinition","src":"5834:1032:2","nodes":[],"body":{"id":896,"nodeType":"Block","src":"6061:805:2","nodes":[],"statements":[{"condition":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":817,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":815,"name":"amount","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":803,"src":"6075:6:2","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"==","rightExpression":{"hexValue":"30","id":816,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"6085:1:2","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},"src":"6075:11:2","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":821,"nodeType":"IfStatement","src":"6071:49:2","trueBody":{"errorCall":{"arguments":[],"expression":{"argumentTypes":[],"id":818,"name":"InsufficientERC20Amount","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2286,"src":"6095:23:2","typeDescriptions":{"typeIdentifier":"t_function_error_pure$__$returns$_t_error_$","typeString":"function () pure returns (error)"}},"id":819,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"6095:25:2","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_error","typeString":"error"}},"id":820,"nodeType":"RevertStatement","src":"6088:32:2"}},{"condition":{"commonType":{"typeIdentifier":"t_address","typeString":"address"},"id":827,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":822,"name":"to","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":801,"src":"6134:2:2","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"nodeType":"BinaryOperation","operator":"==","rightExpression":{"arguments":[{"hexValue":"30","id":825,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"6148:1:2","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"}],"id":824,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"6140:7:2","typeDescriptions":{"typeIdentifier":"t_type$_t_address_$","typeString":"type(address)"},"typeName":{"id":823,"name":"address","nodeType":"ElementaryTypeName","src":"6140:7:2","typeDescriptions":{}}},"id":826,"isConstant":false,"isLValue":false,"isPure":true,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"6140:10:2","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"src":"6134:16:2","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":831,"nodeType":"IfStatement","src":"6130:42:2","trueBody":{"errorCall":{"arguments":[],"expression":{"argumentTypes":[],"id":828,"name":"ZeroAddress","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2289,"src":"6159:11:2","typeDescriptions":{"typeIdentifier":"t_function_error_pure$__$returns$_t_error_$","typeString":"function () pure returns (error)"}},"id":829,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"6159:13:2","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_error","typeString":"error"}},"id":830,"nodeType":"RevertStatement","src":"6152:20:2"}},{"condition":{"id":836,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"UnaryOperation","operator":"!","prefix":true,"src":"6245:25:2","subExpression":{"arguments":[{"id":833,"name":"token","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":799,"src":"6260:5:2","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":834,"name":"to","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":801,"src":"6267:2:2","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_address","typeString":"address"}],"id":832,"name":"resetApproval","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1326,"src":"6246:13:2","typeDescriptions":{"typeIdentifier":"t_function_internal_nonpayable$_t_address_$_t_address_$returns$_t_bool_$","typeString":"function (address,address) returns (bool)"}},"id":835,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"6246:24:2","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":840,"nodeType":"IfStatement","src":"6241:54:2","trueBody":{"errorCall":{"arguments":[],"expression":{"argumentTypes":[],"id":837,"name":"ApprovalFailed","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2292,"src":"6279:14:2","typeDescriptions":{"typeIdentifier":"t_function_error_pure$__$returns$_t_error_$","typeString":"function () pure returns (error)"}},"id":838,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"6279:16:2","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_error","typeString":"error"}},"id":839,"nodeType":"RevertStatement","src":"6272:23:2"}},{"condition":{"id":848,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"UnaryOperation","operator":"!","prefix":true,"src":"6309:34:2","subExpression":{"arguments":[{"id":845,"name":"to","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":801,"src":"6332:2:2","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":846,"name":"amount","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":803,"src":"6336:6:2","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"expression":{"arguments":[{"id":842,"name":"token","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":799,"src":"6317:5:2","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"}],"id":841,"name":"IERC20","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":47066,"src":"6310:6:2","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_IERC20_$47066_$","typeString":"type(contract IERC20)"}},"id":843,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"6310:13:2","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_contract$_IERC20_$47066","typeString":"contract IERC20"}},"id":844,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"6324:7:2","memberName":"approve","nodeType":"MemberAccess","referencedDeclaration":47053,"src":"6310:21:2","typeDescriptions":{"typeIdentifier":"t_function_external_nonpayable$_t_address_$_t_uint256_$returns$_t_bool_$","typeString":"function (address,uint256) external returns (bool)"}},"id":847,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"6310:33:2","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":852,"nodeType":"IfStatement","src":"6305:63:2","trueBody":{"errorCall":{"arguments":[],"expression":{"argumentTypes":[],"id":849,"name":"ApprovalFailed","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2292,"src":"6352:14:2","typeDescriptions":{"typeIdentifier":"t_function_error_pure$__$returns$_t_error_$","typeString":"function () pure returns (error)"}},"id":850,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"6352:16:2","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_error","typeString":"error"}},"id":851,"nodeType":"RevertStatement","src":"6345:23:2"}},{"expression":{"arguments":[{"id":854,"name":"to","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":801,"src":"6438:2:2","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":855,"name":"data","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":805,"src":"6442:4:2","typeDescriptions":{"typeIdentifier":"t_bytes_calldata_ptr","typeString":"bytes calldata"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_bytes_calldata_ptr","typeString":"bytes calldata"}],"id":853,"name":"_execute","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":666,"src":"6429:8:2","typeDescriptions":{"typeIdentifier":"t_function_internal_nonpayable$_t_address_$_t_bytes_calldata_ptr_$returns$_t_bytes_memory_ptr_$","typeString":"function (address,bytes calldata) returns (bytes memory)"}},"id":856,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"6429:18:2","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}},"id":857,"nodeType":"ExpressionStatement","src":"6429:18:2"},{"condition":{"id":862,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"UnaryOperation","operator":"!","prefix":true,"src":"6488:25:2","subExpression":{"arguments":[{"id":859,"name":"token","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":799,"src":"6503:5:2","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":860,"name":"to","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":801,"src":"6510:2:2","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_address","typeString":"address"}],"id":858,"name":"resetApproval","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1326,"src":"6489:13:2","typeDescriptions":{"typeIdentifier":"t_function_internal_nonpayable$_t_address_$_t_address_$returns$_t_bool_$","typeString":"function (address,address) returns (bool)"}},"id":861,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"6489:24:2","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":866,"nodeType":"IfStatement","src":"6484:54:2","trueBody":{"errorCall":{"arguments":[],"expression":{"argumentTypes":[],"id":863,"name":"ApprovalFailed","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2292,"src":"6522:14:2","typeDescriptions":{"typeIdentifier":"t_function_error_pure$__$returns$_t_error_$","typeString":"function () pure returns (error)"}},"id":864,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"6522:16:2","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_error","typeString":"error"}},"id":865,"nodeType":"RevertStatement","src":"6515:23:2"}},{"assignments":[868],"declarations":[{"constant":false,"id":868,"mutability":"mutable","name":"remainingBalance","nameLocation":"6637:16:2","nodeType":"VariableDeclaration","scope":896,"src":"6629:24:2","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":867,"name":"uint256","nodeType":"ElementaryTypeName","src":"6629:7:2","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"id":878,"initialValue":{"arguments":[{"arguments":[{"id":875,"name":"this","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-28,"src":"6688:4:2","typeDescriptions":{"typeIdentifier":"t_contract$_GatewayEVM_$1448","typeString":"contract GatewayEVM"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_contract$_GatewayEVM_$1448","typeString":"contract GatewayEVM"}],"id":874,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"6680:7:2","typeDescriptions":{"typeIdentifier":"t_type$_t_address_$","typeString":"type(address)"},"typeName":{"id":873,"name":"address","nodeType":"ElementaryTypeName","src":"6680:7:2","typeDescriptions":{}}},"id":876,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"6680:13:2","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"}],"expression":{"arguments":[{"id":870,"name":"token","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":799,"src":"6663:5:2","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"}],"id":869,"name":"IERC20","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":47066,"src":"6656:6:2","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_IERC20_$47066_$","typeString":"type(contract IERC20)"}},"id":871,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"6656:13:2","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_contract$_IERC20_$47066","typeString":"contract IERC20"}},"id":872,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"6670:9:2","memberName":"balanceOf","nodeType":"MemberAccess","referencedDeclaration":47023,"src":"6656:23:2","typeDescriptions":{"typeIdentifier":"t_function_external_view$_t_address_$returns$_t_uint256_$","typeString":"function (address) view external returns (uint256)"}},"id":877,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"6656:38:2","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"VariableDeclarationStatement","src":"6629:65:2"},{"condition":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":881,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":879,"name":"remainingBalance","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":868,"src":"6708:16:2","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":">","rightExpression":{"hexValue":"30","id":880,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"6727:1:2","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},"src":"6708:20:2","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":888,"nodeType":"IfStatement","src":"6704:98:2","trueBody":{"id":887,"nodeType":"Block","src":"6730:72:2","statements":[{"expression":{"arguments":[{"id":883,"name":"token","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":799,"src":"6767:5:2","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":884,"name":"remainingBalance","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":868,"src":"6774:16:2","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":882,"name":"transferToAssetHandler","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1447,"src":"6744:22:2","typeDescriptions":{"typeIdentifier":"t_function_internal_nonpayable$_t_address_$_t_uint256_$returns$__$","typeString":"function (address,uint256)"}},"id":885,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"6744:47:2","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":886,"nodeType":"ExpressionStatement","src":"6744:47:2"}]}},{"eventCall":{"arguments":[{"id":890,"name":"token","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":799,"src":"6835:5:2","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":891,"name":"to","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":801,"src":"6842:2:2","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":892,"name":"amount","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":803,"src":"6846:6:2","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},{"id":893,"name":"data","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":805,"src":"6854:4:2","typeDescriptions":{"typeIdentifier":"t_bytes_calldata_ptr","typeString":"bytes calldata"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_uint256","typeString":"uint256"},{"typeIdentifier":"t_bytes_calldata_ptr","typeString":"bytes calldata"}],"id":889,"name":"ExecutedWithERC20","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2244,"src":"6817:17:2","typeDescriptions":{"typeIdentifier":"t_function_event_nonpayable$_t_address_$_t_address_$_t_uint256_$_t_bytes_memory_ptr_$returns$__$","typeString":"function (address,address,uint256,bytes memory)"}},"id":894,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"6817:42:2","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":895,"nodeType":"EmitStatement","src":"6812:47:2"}]},"baseFunctions":[2319],"documentation":{"id":797,"nodeType":"StructuredDocumentation","src":"5382:447:2","text":"@notice Executes a call to a destination contract using ERC20 tokens.\n @dev This function can only be called by the custody or connector address.\n It uses the ERC20 allowance system, resetting gateway allowance at the end.\n @param token Address of the ERC20 token.\n @param to Address of the contract to call.\n @param amount Amount of tokens to transfer.\n @param data Calldata to pass to the call."},"functionSelector":"5131ab59","implemented":true,"kind":"function","modifiers":[{"arguments":[{"id":808,"name":"ASSET_HANDLER_ROLE","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":544,"src":"5994:18:2","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}}],"id":809,"kind":"modifierInvocation","modifierName":{"id":807,"name":"onlyRole","nameLocations":["5985:8:2"],"nodeType":"IdentifierPath","referencedDeclaration":43930,"src":"5985:8:2"},"nodeType":"ModifierInvocation","src":"5985:28:2"},{"id":811,"kind":"modifierInvocation","modifierName":{"id":810,"name":"whenNotPaused","nameLocations":["6022:13:2"],"nodeType":"IdentifierPath","referencedDeclaration":44795,"src":"6022:13:2"},"nodeType":"ModifierInvocation","src":"6022:13:2"},{"id":813,"kind":"modifierInvocation","modifierName":{"id":812,"name":"nonReentrant","nameLocations":["6044:12:2"],"nodeType":"IdentifierPath","referencedDeclaration":44962,"src":"6044:12:2"},"nodeType":"ModifierInvocation","src":"6044:12:2"}],"name":"executeWithERC20","nameLocation":"5843:16:2","parameters":{"id":806,"nodeType":"ParameterList","parameters":[{"constant":false,"id":799,"mutability":"mutable","name":"token","nameLocation":"5877:5:2","nodeType":"VariableDeclaration","scope":897,"src":"5869:13:2","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":798,"name":"address","nodeType":"ElementaryTypeName","src":"5869:7:2","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":801,"mutability":"mutable","name":"to","nameLocation":"5900:2:2","nodeType":"VariableDeclaration","scope":897,"src":"5892:10:2","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":800,"name":"address","nodeType":"ElementaryTypeName","src":"5892:7:2","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":803,"mutability":"mutable","name":"amount","nameLocation":"5920:6:2","nodeType":"VariableDeclaration","scope":897,"src":"5912:14:2","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":802,"name":"uint256","nodeType":"ElementaryTypeName","src":"5912:7:2","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":805,"mutability":"mutable","name":"data","nameLocation":"5951:4:2","nodeType":"VariableDeclaration","scope":897,"src":"5936:19:2","stateVariable":false,"storageLocation":"calldata","typeDescriptions":{"typeIdentifier":"t_bytes_calldata_ptr","typeString":"bytes"},"typeName":{"id":804,"name":"bytes","nodeType":"ElementaryTypeName","src":"5936:5:2","typeDescriptions":{"typeIdentifier":"t_bytes_storage_ptr","typeString":"bytes"}},"visibility":"internal"}],"src":"5859:102:2"},"returnParameters":{"id":814,"nodeType":"ParameterList","parameters":[],"src":"6061:0:2"},"scope":1448,"stateMutability":"nonpayable","virtual":false,"visibility":"public"},{"id":963,"nodeType":"FunctionDefinition","src":"7290:562:2","nodes":[],"body":{"id":962,"nodeType":"Block","src":"7564:288:2","nodes":[],"statements":[{"condition":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":921,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":919,"name":"amount","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":904,"src":"7578:6:2","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"==","rightExpression":{"hexValue":"30","id":920,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"7588:1:2","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},"src":"7578:11:2","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":925,"nodeType":"IfStatement","src":"7574:49:2","trueBody":{"errorCall":{"arguments":[],"expression":{"argumentTypes":[],"id":922,"name":"InsufficientERC20Amount","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2286,"src":"7598:23:2","typeDescriptions":{"typeIdentifier":"t_function_error_pure$__$returns$_t_error_$","typeString":"function () pure returns (error)"}},"id":923,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"7598:25:2","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_error","typeString":"error"}},"id":924,"nodeType":"RevertStatement","src":"7591:32:2"}},{"condition":{"commonType":{"typeIdentifier":"t_address","typeString":"address"},"id":931,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":926,"name":"to","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":902,"src":"7637:2:2","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"nodeType":"BinaryOperation","operator":"==","rightExpression":{"arguments":[{"hexValue":"30","id":929,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"7651:1:2","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"}],"id":928,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"7643:7:2","typeDescriptions":{"typeIdentifier":"t_type$_t_address_$","typeString":"type(address)"},"typeName":{"id":927,"name":"address","nodeType":"ElementaryTypeName","src":"7643:7:2","typeDescriptions":{}}},"id":930,"isConstant":false,"isLValue":false,"isPure":true,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"7643:10:2","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"src":"7637:16:2","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":935,"nodeType":"IfStatement","src":"7633:42:2","trueBody":{"errorCall":{"arguments":[],"expression":{"argumentTypes":[],"id":932,"name":"ZeroAddress","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2289,"src":"7662:11:2","typeDescriptions":{"typeIdentifier":"t_function_error_pure$__$returns$_t_error_$","typeString":"function () pure returns (error)"}},"id":933,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"7662:13:2","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_error","typeString":"error"}},"id":934,"nodeType":"RevertStatement","src":"7655:20:2"}},{"expression":{"arguments":[{"arguments":[{"id":942,"name":"to","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":902,"src":"7721:2:2","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"}],"id":941,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"7713:7:2","typeDescriptions":{"typeIdentifier":"t_type$_t_address_$","typeString":"type(address)"},"typeName":{"id":940,"name":"address","nodeType":"ElementaryTypeName","src":"7713:7:2","typeDescriptions":{}}},"id":943,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"7713:11:2","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":944,"name":"amount","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":904,"src":"7726:6:2","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"expression":{"arguments":[{"id":937,"name":"token","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":900,"src":"7693:5:2","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"}],"id":936,"name":"IERC20","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":47066,"src":"7686:6:2","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_IERC20_$47066_$","typeString":"type(contract IERC20)"}},"id":938,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"7686:13:2","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_contract$_IERC20_$47066","typeString":"contract IERC20"}},"id":939,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"7700:12:2","memberName":"safeTransfer","nodeType":"MemberAccess","referencedDeclaration":47224,"src":"7686:26:2","typeDescriptions":{"typeIdentifier":"t_function_internal_nonpayable$_t_contract$_IERC20_$47066_$_t_address_$_t_uint256_$returns$__$attached_to$_t_contract$_IERC20_$47066_$","typeString":"function (contract IERC20,address,uint256)"}},"id":945,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"7686:47:2","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":946,"nodeType":"ExpressionStatement","src":"7686:47:2"},{"expression":{"arguments":[{"id":951,"name":"revertContext","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":909,"src":"7767:13:2","typeDescriptions":{"typeIdentifier":"t_struct$_RevertContext_$21_calldata_ptr","typeString":"struct RevertContext calldata"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_struct$_RevertContext_$21_calldata_ptr","typeString":"struct RevertContext calldata"}],"expression":{"arguments":[{"id":948,"name":"to","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":902,"src":"7754:2:2","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"}],"id":947,"name":"Revertable","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":30,"src":"7743:10:2","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_Revertable_$30_$","typeString":"type(contract Revertable)"}},"id":949,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"7743:14:2","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_contract$_Revertable_$30","typeString":"contract Revertable"}},"id":950,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"7758:8:2","memberName":"onRevert","nodeType":"MemberAccess","referencedDeclaration":29,"src":"7743:23:2","typeDescriptions":{"typeIdentifier":"t_function_external_nonpayable$_t_struct$_RevertContext_$21_memory_ptr_$returns$__$","typeString":"function (struct RevertContext memory) external"}},"id":952,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"7743:38:2","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":953,"nodeType":"ExpressionStatement","src":"7743:38:2"},{"eventCall":{"arguments":[{"id":955,"name":"to","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":902,"src":"7806:2:2","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":956,"name":"token","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":900,"src":"7810:5:2","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":957,"name":"amount","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":904,"src":"7817:6:2","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},{"id":958,"name":"data","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":906,"src":"7825:4:2","typeDescriptions":{"typeIdentifier":"t_bytes_calldata_ptr","typeString":"bytes calldata"}},{"id":959,"name":"revertContext","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":909,"src":"7831:13:2","typeDescriptions":{"typeIdentifier":"t_struct$_RevertContext_$21_calldata_ptr","typeString":"struct RevertContext calldata"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_uint256","typeString":"uint256"},{"typeIdentifier":"t_bytes_calldata_ptr","typeString":"bytes calldata"},{"typeIdentifier":"t_struct$_RevertContext_$21_calldata_ptr","typeString":"struct RevertContext calldata"}],"id":954,"name":"Reverted","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2233,"src":"7797:8:2","typeDescriptions":{"typeIdentifier":"t_function_event_nonpayable$_t_address_$_t_address_$_t_uint256_$_t_bytes_memory_ptr_$_t_struct$_RevertContext_$21_memory_ptr_$returns$__$","typeString":"function (address,address,uint256,bytes memory,struct RevertContext memory)"}},"id":960,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"7797:48:2","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":961,"nodeType":"EmitStatement","src":"7792:53:2"}]},"baseFunctions":[2355],"documentation":{"id":898,"nodeType":"StructuredDocumentation","src":"6872:413:2","text":"@notice Directly transfers ERC20 tokens and calls onRevert.\n @dev This function can only be called by the custody or connector address.\n @param token Address of the ERC20 token.\n @param to Address of the contract to call.\n @param amount Amount of tokens to transfer.\n @param data Calldata to pass to the call.\n @param revertContext Revert context to pass to onRevert."},"functionSelector":"d0b492c3","implemented":true,"kind":"function","modifiers":[{"arguments":[{"id":912,"name":"ASSET_HANDLER_ROLE","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":544,"src":"7497:18:2","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}}],"id":913,"kind":"modifierInvocation","modifierName":{"id":911,"name":"onlyRole","nameLocations":["7488:8:2"],"nodeType":"IdentifierPath","referencedDeclaration":43930,"src":"7488:8:2"},"nodeType":"ModifierInvocation","src":"7488:28:2"},{"id":915,"kind":"modifierInvocation","modifierName":{"id":914,"name":"whenNotPaused","nameLocations":["7525:13:2"],"nodeType":"IdentifierPath","referencedDeclaration":44795,"src":"7525:13:2"},"nodeType":"ModifierInvocation","src":"7525:13:2"},{"id":917,"kind":"modifierInvocation","modifierName":{"id":916,"name":"nonReentrant","nameLocations":["7547:12:2"],"nodeType":"IdentifierPath","referencedDeclaration":44962,"src":"7547:12:2"},"nodeType":"ModifierInvocation","src":"7547:12:2"}],"name":"revertWithERC20","nameLocation":"7299:15:2","parameters":{"id":910,"nodeType":"ParameterList","parameters":[{"constant":false,"id":900,"mutability":"mutable","name":"token","nameLocation":"7332:5:2","nodeType":"VariableDeclaration","scope":963,"src":"7324:13:2","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":899,"name":"address","nodeType":"ElementaryTypeName","src":"7324:7:2","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":902,"mutability":"mutable","name":"to","nameLocation":"7355:2:2","nodeType":"VariableDeclaration","scope":963,"src":"7347:10:2","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":901,"name":"address","nodeType":"ElementaryTypeName","src":"7347:7:2","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":904,"mutability":"mutable","name":"amount","nameLocation":"7375:6:2","nodeType":"VariableDeclaration","scope":963,"src":"7367:14:2","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":903,"name":"uint256","nodeType":"ElementaryTypeName","src":"7367:7:2","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":906,"mutability":"mutable","name":"data","nameLocation":"7406:4:2","nodeType":"VariableDeclaration","scope":963,"src":"7391:19:2","stateVariable":false,"storageLocation":"calldata","typeDescriptions":{"typeIdentifier":"t_bytes_calldata_ptr","typeString":"bytes"},"typeName":{"id":905,"name":"bytes","nodeType":"ElementaryTypeName","src":"7391:5:2","typeDescriptions":{"typeIdentifier":"t_bytes_storage_ptr","typeString":"bytes"}},"visibility":"internal"},{"constant":false,"id":909,"mutability":"mutable","name":"revertContext","nameLocation":"7443:13:2","nodeType":"VariableDeclaration","scope":963,"src":"7420:36:2","stateVariable":false,"storageLocation":"calldata","typeDescriptions":{"typeIdentifier":"t_struct$_RevertContext_$21_calldata_ptr","typeString":"struct RevertContext"},"typeName":{"id":908,"nodeType":"UserDefinedTypeName","pathNode":{"id":907,"name":"RevertContext","nameLocations":["7420:13:2"],"nodeType":"IdentifierPath","referencedDeclaration":21,"src":"7420:13:2"},"referencedDeclaration":21,"src":"7420:13:2","typeDescriptions":{"typeIdentifier":"t_struct$_RevertContext_$21_storage_ptr","typeString":"struct RevertContext"}},"visibility":"internal"}],"src":"7314:148:2"},"returnParameters":{"id":918,"nodeType":"ParameterList","parameters":[],"src":"7564:0:2"},"scope":1448,"stateMutability":"nonpayable","virtual":false,"visibility":"external"},{"id":1025,"nodeType":"FunctionDefinition","src":"8001:508:2","nodes":[],"body":{"id":1024,"nodeType":"Block","src":"8176:333:2","nodes":[],"statements":[{"condition":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":979,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"expression":{"id":976,"name":"msg","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-15,"src":"8190:3:2","typeDescriptions":{"typeIdentifier":"t_magic_message","typeString":"msg"}},"id":977,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"8194:5:2","memberName":"value","nodeType":"MemberAccess","src":"8190:9:2","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"==","rightExpression":{"hexValue":"30","id":978,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"8203:1:2","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},"src":"8190:14:2","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":983,"nodeType":"IfStatement","src":"8186:50:2","trueBody":{"errorCall":{"arguments":[],"expression":{"argumentTypes":[],"id":980,"name":"InsufficientETHAmount","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2283,"src":"8213:21:2","typeDescriptions":{"typeIdentifier":"t_function_error_pure$__$returns$_t_error_$","typeString":"function () pure returns (error)"}},"id":981,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"8213:23:2","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_error","typeString":"error"}},"id":982,"nodeType":"RevertStatement","src":"8206:30:2"}},{"condition":{"commonType":{"typeIdentifier":"t_address","typeString":"address"},"id":989,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":984,"name":"receiver","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":966,"src":"8250:8:2","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"nodeType":"BinaryOperation","operator":"==","rightExpression":{"arguments":[{"hexValue":"30","id":987,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"8270:1:2","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"}],"id":986,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"8262:7:2","typeDescriptions":{"typeIdentifier":"t_type$_t_address_$","typeString":"type(address)"},"typeName":{"id":985,"name":"address","nodeType":"ElementaryTypeName","src":"8262:7:2","typeDescriptions":{}}},"id":988,"isConstant":false,"isLValue":false,"isPure":true,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"8262:10:2","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"src":"8250:22:2","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":993,"nodeType":"IfStatement","src":"8246:48:2","trueBody":{"errorCall":{"arguments":[],"expression":{"argumentTypes":[],"id":990,"name":"ZeroAddress","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2289,"src":"8281:11:2","typeDescriptions":{"typeIdentifier":"t_function_error_pure$__$returns$_t_error_$","typeString":"function () pure returns (error)"}},"id":991,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"8281:13:2","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_error","typeString":"error"}},"id":992,"nodeType":"RevertStatement","src":"8274:20:2"}},{"assignments":[995,null],"declarations":[{"constant":false,"id":995,"mutability":"mutable","name":"deposited","nameLocation":"8311:9:2","nodeType":"VariableDeclaration","scope":1024,"src":"8306:14:2","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"typeName":{"id":994,"name":"bool","nodeType":"ElementaryTypeName","src":"8306:4:2","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"visibility":"internal"},null],"id":1003,"initialValue":{"arguments":[{"hexValue":"","id":1001,"isConstant":false,"isLValue":false,"isPure":true,"kind":"string","lValueRequested":false,"nodeType":"Literal","src":"8361:2:2","typeDescriptions":{"typeIdentifier":"t_stringliteral_c5d2460186f7233c927e7db2dcc703c0e500b653ca82273b7bfad8045d85a470","typeString":"literal_string \"\""},"value":""}],"expression":{"argumentTypes":[{"typeIdentifier":"t_stringliteral_c5d2460186f7233c927e7db2dcc703c0e500b653ca82273b7bfad8045d85a470","typeString":"literal_string \"\""}],"expression":{"argumentTypes":[{"typeIdentifier":"t_stringliteral_c5d2460186f7233c927e7db2dcc703c0e500b653ca82273b7bfad8045d85a470","typeString":"literal_string \"\""}],"expression":{"id":996,"name":"tssAddress","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":526,"src":"8325:10:2","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"id":997,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"8336:4:2","memberName":"call","nodeType":"MemberAccess","src":"8325:15:2","typeDescriptions":{"typeIdentifier":"t_function_barecall_payable$_t_bytes_memory_ptr_$returns$_t_bool_$_t_bytes_memory_ptr_$","typeString":"function (bytes memory) payable returns (bool,bytes memory)"}},"id":1000,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"names":["value"],"nodeType":"FunctionCallOptions","options":[{"expression":{"id":998,"name":"msg","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-15,"src":"8349:3:2","typeDescriptions":{"typeIdentifier":"t_magic_message","typeString":"msg"}},"id":999,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"8353:5:2","memberName":"value","nodeType":"MemberAccess","src":"8349:9:2","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"src":"8325:35:2","typeDescriptions":{"typeIdentifier":"t_function_barecall_payable$_t_bytes_memory_ptr_$returns$_t_bool_$_t_bytes_memory_ptr_$value","typeString":"function (bytes memory) payable returns (bool,bytes memory)"}},"id":1002,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"8325:39:2","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$_t_bool_$_t_bytes_memory_ptr_$","typeString":"tuple(bool,bytes memory)"}},"nodeType":"VariableDeclarationStatement","src":"8305:59:2"},{"condition":{"id":1005,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"UnaryOperation","operator":"!","prefix":true,"src":"8379:10:2","subExpression":{"id":1004,"name":"deposited","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":995,"src":"8380:9:2","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":1009,"nodeType":"IfStatement","src":"8375:38:2","trueBody":{"errorCall":{"arguments":[],"expression":{"argumentTypes":[],"id":1006,"name":"DepositFailed","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2280,"src":"8398:13:2","typeDescriptions":{"typeIdentifier":"t_function_error_pure$__$returns$_t_error_$","typeString":"function () pure returns (error)"}},"id":1007,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"8398:15:2","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_error","typeString":"error"}},"id":1008,"nodeType":"RevertStatement","src":"8391:22:2"}},{"eventCall":{"arguments":[{"expression":{"id":1011,"name":"msg","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-15,"src":"8439:3:2","typeDescriptions":{"typeIdentifier":"t_magic_message","typeString":"msg"}},"id":1012,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"8443:6:2","memberName":"sender","nodeType":"MemberAccess","src":"8439:10:2","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":1013,"name":"receiver","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":966,"src":"8451:8:2","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"expression":{"id":1014,"name":"msg","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-15,"src":"8461:3:2","typeDescriptions":{"typeIdentifier":"t_magic_message","typeString":"msg"}},"id":1015,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"8465:5:2","memberName":"value","nodeType":"MemberAccess","src":"8461:9:2","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},{"arguments":[{"hexValue":"30","id":1018,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"8480:1:2","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"}],"id":1017,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"8472:7:2","typeDescriptions":{"typeIdentifier":"t_type$_t_address_$","typeString":"type(address)"},"typeName":{"id":1016,"name":"address","nodeType":"ElementaryTypeName","src":"8472:7:2","typeDescriptions":{}}},"id":1019,"isConstant":false,"isLValue":false,"isPure":true,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"8472:10:2","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"hexValue":"","id":1020,"isConstant":false,"isLValue":false,"isPure":true,"kind":"string","lValueRequested":false,"nodeType":"Literal","src":"8484:2:2","typeDescriptions":{"typeIdentifier":"t_stringliteral_c5d2460186f7233c927e7db2dcc703c0e500b653ca82273b7bfad8045d85a470","typeString":"literal_string \"\""},"value":""},{"id":1021,"name":"revertOptions","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":969,"src":"8488:13:2","typeDescriptions":{"typeIdentifier":"t_struct$_RevertOptions_$13_calldata_ptr","typeString":"struct RevertOptions calldata"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_uint256","typeString":"uint256"},{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_stringliteral_c5d2460186f7233c927e7db2dcc703c0e500b653ca82273b7bfad8045d85a470","typeString":"literal_string \"\""},{"typeIdentifier":"t_struct$_RevertOptions_$13_calldata_ptr","typeString":"struct RevertOptions calldata"}],"id":1010,"name":"Deposited","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2260,"src":"8429:9:2","typeDescriptions":{"typeIdentifier":"t_function_event_nonpayable$_t_address_$_t_address_$_t_uint256_$_t_address_$_t_bytes_memory_ptr_$_t_struct$_RevertOptions_$13_memory_ptr_$returns$__$","typeString":"function (address,address,uint256,address,bytes memory,struct RevertOptions memory)"}},"id":1022,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"8429:73:2","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":1023,"nodeType":"EmitStatement","src":"8424:78:2"}]},"baseFunctions":[2364],"documentation":{"id":964,"nodeType":"StructuredDocumentation","src":"7858:138:2","text":"@notice Deposits ETH to the TSS address.\n @param receiver Address of the receiver.\n @param revertOptions Revert options."},"functionSelector":"726ac97c","implemented":true,"kind":"function","modifiers":[{"id":972,"kind":"modifierInvocation","modifierName":{"id":971,"name":"whenNotPaused","nameLocations":["8137:13:2"],"nodeType":"IdentifierPath","referencedDeclaration":44795,"src":"8137:13:2"},"nodeType":"ModifierInvocation","src":"8137:13:2"},{"id":974,"kind":"modifierInvocation","modifierName":{"id":973,"name":"nonReentrant","nameLocations":["8159:12:2"],"nodeType":"IdentifierPath","referencedDeclaration":44962,"src":"8159:12:2"},"nodeType":"ModifierInvocation","src":"8159:12:2"}],"name":"deposit","nameLocation":"8010:7:2","parameters":{"id":970,"nodeType":"ParameterList","parameters":[{"constant":false,"id":966,"mutability":"mutable","name":"receiver","nameLocation":"8035:8:2","nodeType":"VariableDeclaration","scope":1025,"src":"8027:16:2","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":965,"name":"address","nodeType":"ElementaryTypeName","src":"8027:7:2","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":969,"mutability":"mutable","name":"revertOptions","nameLocation":"8076:13:2","nodeType":"VariableDeclaration","scope":1025,"src":"8053:36:2","stateVariable":false,"storageLocation":"calldata","typeDescriptions":{"typeIdentifier":"t_struct$_RevertOptions_$13_calldata_ptr","typeString":"struct RevertOptions"},"typeName":{"id":968,"nodeType":"UserDefinedTypeName","pathNode":{"id":967,"name":"RevertOptions","nameLocations":["8053:13:2"],"nodeType":"IdentifierPath","referencedDeclaration":13,"src":"8053:13:2"},"referencedDeclaration":13,"src":"8053:13:2","typeDescriptions":{"typeIdentifier":"t_struct$_RevertOptions_$13_storage_ptr","typeString":"struct RevertOptions"}},"visibility":"internal"}],"src":"8017:78:2"},"returnParameters":{"id":975,"nodeType":"ParameterList","parameters":[],"src":"8176:0:2"},"scope":1448,"stateMutability":"payable","virtual":false,"visibility":"external"},{"id":1077,"nodeType":"FunctionDefinition","src":"8785:475:2","nodes":[],"body":{"id":1076,"nodeType":"Block","src":"8991:269:2","nodes":[],"statements":[{"condition":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":1044,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":1042,"name":"amount","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1030,"src":"9005:6:2","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"==","rightExpression":{"hexValue":"30","id":1043,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"9015:1:2","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},"src":"9005:11:2","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":1048,"nodeType":"IfStatement","src":"9001:49:2","trueBody":{"errorCall":{"arguments":[],"expression":{"argumentTypes":[],"id":1045,"name":"InsufficientERC20Amount","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2286,"src":"9025:23:2","typeDescriptions":{"typeIdentifier":"t_function_error_pure$__$returns$_t_error_$","typeString":"function () pure returns (error)"}},"id":1046,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"9025:25:2","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_error","typeString":"error"}},"id":1047,"nodeType":"RevertStatement","src":"9018:32:2"}},{"condition":{"commonType":{"typeIdentifier":"t_address","typeString":"address"},"id":1054,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":1049,"name":"receiver","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1028,"src":"9064:8:2","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"nodeType":"BinaryOperation","operator":"==","rightExpression":{"arguments":[{"hexValue":"30","id":1052,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"9084:1:2","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"}],"id":1051,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"9076:7:2","typeDescriptions":{"typeIdentifier":"t_type$_t_address_$","typeString":"type(address)"},"typeName":{"id":1050,"name":"address","nodeType":"ElementaryTypeName","src":"9076:7:2","typeDescriptions":{}}},"id":1053,"isConstant":false,"isLValue":false,"isPure":true,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"9076:10:2","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"src":"9064:22:2","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":1058,"nodeType":"IfStatement","src":"9060:48:2","trueBody":{"errorCall":{"arguments":[],"expression":{"argumentTypes":[],"id":1055,"name":"ZeroAddress","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2289,"src":"9095:11:2","typeDescriptions":{"typeIdentifier":"t_function_error_pure$__$returns$_t_error_$","typeString":"function () pure returns (error)"}},"id":1056,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"9095:13:2","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_error","typeString":"error"}},"id":1057,"nodeType":"RevertStatement","src":"9088:20:2"}},{"expression":{"arguments":[{"expression":{"id":1060,"name":"msg","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-15,"src":"9146:3:2","typeDescriptions":{"typeIdentifier":"t_magic_message","typeString":"msg"}},"id":1061,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"9150:6:2","memberName":"sender","nodeType":"MemberAccess","src":"9146:10:2","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":1062,"name":"asset","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1032,"src":"9158:5:2","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":1063,"name":"amount","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1030,"src":"9165:6:2","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":1059,"name":"transferFromToAssetHandler","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1394,"src":"9119:26:2","typeDescriptions":{"typeIdentifier":"t_function_internal_nonpayable$_t_address_$_t_address_$_t_uint256_$returns$__$","typeString":"function (address,address,uint256)"}},"id":1064,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"9119:53:2","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":1065,"nodeType":"ExpressionStatement","src":"9119:53:2"},{"eventCall":{"arguments":[{"expression":{"id":1067,"name":"msg","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-15,"src":"9198:3:2","typeDescriptions":{"typeIdentifier":"t_magic_message","typeString":"msg"}},"id":1068,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"9202:6:2","memberName":"sender","nodeType":"MemberAccess","src":"9198:10:2","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":1069,"name":"receiver","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1028,"src":"9210:8:2","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":1070,"name":"amount","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1030,"src":"9220:6:2","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},{"id":1071,"name":"asset","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1032,"src":"9228:5:2","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"hexValue":"","id":1072,"isConstant":false,"isLValue":false,"isPure":true,"kind":"string","lValueRequested":false,"nodeType":"Literal","src":"9235:2:2","typeDescriptions":{"typeIdentifier":"t_stringliteral_c5d2460186f7233c927e7db2dcc703c0e500b653ca82273b7bfad8045d85a470","typeString":"literal_string \"\""},"value":""},{"id":1073,"name":"revertOptions","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1035,"src":"9239:13:2","typeDescriptions":{"typeIdentifier":"t_struct$_RevertOptions_$13_calldata_ptr","typeString":"struct RevertOptions calldata"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_uint256","typeString":"uint256"},{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_stringliteral_c5d2460186f7233c927e7db2dcc703c0e500b653ca82273b7bfad8045d85a470","typeString":"literal_string \"\""},{"typeIdentifier":"t_struct$_RevertOptions_$13_calldata_ptr","typeString":"struct RevertOptions calldata"}],"id":1066,"name":"Deposited","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2260,"src":"9188:9:2","typeDescriptions":{"typeIdentifier":"t_function_event_nonpayable$_t_address_$_t_address_$_t_uint256_$_t_address_$_t_bytes_memory_ptr_$_t_struct$_RevertOptions_$13_memory_ptr_$returns$__$","typeString":"function (address,address,uint256,address,bytes memory,struct RevertOptions memory)"}},"id":1074,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"9188:65:2","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":1075,"nodeType":"EmitStatement","src":"9183:70:2"}]},"baseFunctions":[2377],"documentation":{"id":1026,"nodeType":"StructuredDocumentation","src":"8515:265:2","text":"@notice Deposits ERC20 tokens to the custody or connector contract.\n @param receiver Address of the receiver.\n @param amount Amount of tokens to deposit.\n @param asset Address of the ERC20 token.\n @param revertOptions Revert options."},"functionSelector":"102614b0","implemented":true,"kind":"function","modifiers":[{"id":1038,"kind":"modifierInvocation","modifierName":{"id":1037,"name":"whenNotPaused","nameLocations":["8952:13:2"],"nodeType":"IdentifierPath","referencedDeclaration":44795,"src":"8952:13:2"},"nodeType":"ModifierInvocation","src":"8952:13:2"},{"id":1040,"kind":"modifierInvocation","modifierName":{"id":1039,"name":"nonReentrant","nameLocations":["8974:12:2"],"nodeType":"IdentifierPath","referencedDeclaration":44962,"src":"8974:12:2"},"nodeType":"ModifierInvocation","src":"8974:12:2"}],"name":"deposit","nameLocation":"8794:7:2","parameters":{"id":1036,"nodeType":"ParameterList","parameters":[{"constant":false,"id":1028,"mutability":"mutable","name":"receiver","nameLocation":"8819:8:2","nodeType":"VariableDeclaration","scope":1077,"src":"8811:16:2","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":1027,"name":"address","nodeType":"ElementaryTypeName","src":"8811:7:2","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":1030,"mutability":"mutable","name":"amount","nameLocation":"8845:6:2","nodeType":"VariableDeclaration","scope":1077,"src":"8837:14:2","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":1029,"name":"uint256","nodeType":"ElementaryTypeName","src":"8837:7:2","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":1032,"mutability":"mutable","name":"asset","nameLocation":"8869:5:2","nodeType":"VariableDeclaration","scope":1077,"src":"8861:13:2","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":1031,"name":"address","nodeType":"ElementaryTypeName","src":"8861:7:2","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":1035,"mutability":"mutable","name":"revertOptions","nameLocation":"8907:13:2","nodeType":"VariableDeclaration","scope":1077,"src":"8884:36:2","stateVariable":false,"storageLocation":"calldata","typeDescriptions":{"typeIdentifier":"t_struct$_RevertOptions_$13_calldata_ptr","typeString":"struct RevertOptions"},"typeName":{"id":1034,"nodeType":"UserDefinedTypeName","pathNode":{"id":1033,"name":"RevertOptions","nameLocations":["8884:13:2"],"nodeType":"IdentifierPath","referencedDeclaration":13,"src":"8884:13:2"},"referencedDeclaration":13,"src":"8884:13:2","typeDescriptions":{"typeIdentifier":"t_struct$_RevertOptions_$13_storage_ptr","typeString":"struct RevertOptions"}},"visibility":"internal"}],"src":"8801:125:2"},"returnParameters":{"id":1041,"nodeType":"ParameterList","parameters":[],"src":"8991:0:2"},"scope":1448,"stateMutability":"nonpayable","virtual":false,"visibility":"external"},{"id":1141,"nodeType":"FunctionDefinition","src":"9500:552:2","nodes":[],"body":{"id":1140,"nodeType":"Block","src":"9714:338:2","nodes":[],"statements":[{"condition":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":1095,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"expression":{"id":1092,"name":"msg","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-15,"src":"9728:3:2","typeDescriptions":{"typeIdentifier":"t_magic_message","typeString":"msg"}},"id":1093,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"9732:5:2","memberName":"value","nodeType":"MemberAccess","src":"9728:9:2","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"==","rightExpression":{"hexValue":"30","id":1094,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"9741:1:2","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},"src":"9728:14:2","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":1099,"nodeType":"IfStatement","src":"9724:50:2","trueBody":{"errorCall":{"arguments":[],"expression":{"argumentTypes":[],"id":1096,"name":"InsufficientETHAmount","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2283,"src":"9751:21:2","typeDescriptions":{"typeIdentifier":"t_function_error_pure$__$returns$_t_error_$","typeString":"function () pure returns (error)"}},"id":1097,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"9751:23:2","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_error","typeString":"error"}},"id":1098,"nodeType":"RevertStatement","src":"9744:30:2"}},{"condition":{"commonType":{"typeIdentifier":"t_address","typeString":"address"},"id":1105,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":1100,"name":"receiver","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1080,"src":"9788:8:2","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"nodeType":"BinaryOperation","operator":"==","rightExpression":{"arguments":[{"hexValue":"30","id":1103,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"9808:1:2","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"}],"id":1102,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"9800:7:2","typeDescriptions":{"typeIdentifier":"t_type$_t_address_$","typeString":"type(address)"},"typeName":{"id":1101,"name":"address","nodeType":"ElementaryTypeName","src":"9800:7:2","typeDescriptions":{}}},"id":1104,"isConstant":false,"isLValue":false,"isPure":true,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"9800:10:2","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"src":"9788:22:2","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":1109,"nodeType":"IfStatement","src":"9784:48:2","trueBody":{"errorCall":{"arguments":[],"expression":{"argumentTypes":[],"id":1106,"name":"ZeroAddress","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2289,"src":"9819:11:2","typeDescriptions":{"typeIdentifier":"t_function_error_pure$__$returns$_t_error_$","typeString":"function () pure returns (error)"}},"id":1107,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"9819:13:2","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_error","typeString":"error"}},"id":1108,"nodeType":"RevertStatement","src":"9812:20:2"}},{"assignments":[1111,null],"declarations":[{"constant":false,"id":1111,"mutability":"mutable","name":"deposited","nameLocation":"9849:9:2","nodeType":"VariableDeclaration","scope":1140,"src":"9844:14:2","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"typeName":{"id":1110,"name":"bool","nodeType":"ElementaryTypeName","src":"9844:4:2","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"visibility":"internal"},null],"id":1119,"initialValue":{"arguments":[{"hexValue":"","id":1117,"isConstant":false,"isLValue":false,"isPure":true,"kind":"string","lValueRequested":false,"nodeType":"Literal","src":"9899:2:2","typeDescriptions":{"typeIdentifier":"t_stringliteral_c5d2460186f7233c927e7db2dcc703c0e500b653ca82273b7bfad8045d85a470","typeString":"literal_string \"\""},"value":""}],"expression":{"argumentTypes":[{"typeIdentifier":"t_stringliteral_c5d2460186f7233c927e7db2dcc703c0e500b653ca82273b7bfad8045d85a470","typeString":"literal_string \"\""}],"expression":{"argumentTypes":[{"typeIdentifier":"t_stringliteral_c5d2460186f7233c927e7db2dcc703c0e500b653ca82273b7bfad8045d85a470","typeString":"literal_string \"\""}],"expression":{"id":1112,"name":"tssAddress","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":526,"src":"9863:10:2","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"id":1113,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"9874:4:2","memberName":"call","nodeType":"MemberAccess","src":"9863:15:2","typeDescriptions":{"typeIdentifier":"t_function_barecall_payable$_t_bytes_memory_ptr_$returns$_t_bool_$_t_bytes_memory_ptr_$","typeString":"function (bytes memory) payable returns (bool,bytes memory)"}},"id":1116,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"names":["value"],"nodeType":"FunctionCallOptions","options":[{"expression":{"id":1114,"name":"msg","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-15,"src":"9887:3:2","typeDescriptions":{"typeIdentifier":"t_magic_message","typeString":"msg"}},"id":1115,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"9891:5:2","memberName":"value","nodeType":"MemberAccess","src":"9887:9:2","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"src":"9863:35:2","typeDescriptions":{"typeIdentifier":"t_function_barecall_payable$_t_bytes_memory_ptr_$returns$_t_bool_$_t_bytes_memory_ptr_$value","typeString":"function (bytes memory) payable returns (bool,bytes memory)"}},"id":1118,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"9863:39:2","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$_t_bool_$_t_bytes_memory_ptr_$","typeString":"tuple(bool,bytes memory)"}},"nodeType":"VariableDeclarationStatement","src":"9843:59:2"},{"condition":{"id":1121,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"UnaryOperation","operator":"!","prefix":true,"src":"9917:10:2","subExpression":{"id":1120,"name":"deposited","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1111,"src":"9918:9:2","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":1125,"nodeType":"IfStatement","src":"9913:38:2","trueBody":{"errorCall":{"arguments":[],"expression":{"argumentTypes":[],"id":1122,"name":"DepositFailed","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2280,"src":"9936:13:2","typeDescriptions":{"typeIdentifier":"t_function_error_pure$__$returns$_t_error_$","typeString":"function () pure returns (error)"}},"id":1123,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"9936:15:2","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_error","typeString":"error"}},"id":1124,"nodeType":"RevertStatement","src":"9929:22:2"}},{"eventCall":{"arguments":[{"expression":{"id":1127,"name":"msg","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-15,"src":"9977:3:2","typeDescriptions":{"typeIdentifier":"t_magic_message","typeString":"msg"}},"id":1128,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"9981:6:2","memberName":"sender","nodeType":"MemberAccess","src":"9977:10:2","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":1129,"name":"receiver","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1080,"src":"9989:8:2","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"expression":{"id":1130,"name":"msg","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-15,"src":"9999:3:2","typeDescriptions":{"typeIdentifier":"t_magic_message","typeString":"msg"}},"id":1131,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"10003:5:2","memberName":"value","nodeType":"MemberAccess","src":"9999:9:2","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},{"arguments":[{"hexValue":"30","id":1134,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"10018:1:2","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"}],"id":1133,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"10010:7:2","typeDescriptions":{"typeIdentifier":"t_type$_t_address_$","typeString":"type(address)"},"typeName":{"id":1132,"name":"address","nodeType":"ElementaryTypeName","src":"10010:7:2","typeDescriptions":{}}},"id":1135,"isConstant":false,"isLValue":false,"isPure":true,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"10010:10:2","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":1136,"name":"payload","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1082,"src":"10022:7:2","typeDescriptions":{"typeIdentifier":"t_bytes_calldata_ptr","typeString":"bytes calldata"}},{"id":1137,"name":"revertOptions","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1085,"src":"10031:13:2","typeDescriptions":{"typeIdentifier":"t_struct$_RevertOptions_$13_calldata_ptr","typeString":"struct RevertOptions calldata"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_uint256","typeString":"uint256"},{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_bytes_calldata_ptr","typeString":"bytes calldata"},{"typeIdentifier":"t_struct$_RevertOptions_$13_calldata_ptr","typeString":"struct RevertOptions calldata"}],"id":1126,"name":"Deposited","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2260,"src":"9967:9:2","typeDescriptions":{"typeIdentifier":"t_function_event_nonpayable$_t_address_$_t_address_$_t_uint256_$_t_address_$_t_bytes_memory_ptr_$_t_struct$_RevertOptions_$13_memory_ptr_$returns$__$","typeString":"function (address,address,uint256,address,bytes memory,struct RevertOptions memory)"}},"id":1138,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"9967:78:2","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":1139,"nodeType":"EmitStatement","src":"9962:83:2"}]},"baseFunctions":[2388],"documentation":{"id":1078,"nodeType":"StructuredDocumentation","src":"9266:229:2","text":"@notice Deposits ETH to the TSS address and calls an omnichain smart contract.\n @param receiver Address of the receiver.\n @param payload Calldata to pass to the call.\n @param revertOptions Revert options."},"functionSelector":"744b9b8b","implemented":true,"kind":"function","modifiers":[{"id":1088,"kind":"modifierInvocation","modifierName":{"id":1087,"name":"whenNotPaused","nameLocations":["9675:13:2"],"nodeType":"IdentifierPath","referencedDeclaration":44795,"src":"9675:13:2"},"nodeType":"ModifierInvocation","src":"9675:13:2"},{"id":1090,"kind":"modifierInvocation","modifierName":{"id":1089,"name":"nonReentrant","nameLocations":["9697:12:2"],"nodeType":"IdentifierPath","referencedDeclaration":44962,"src":"9697:12:2"},"nodeType":"ModifierInvocation","src":"9697:12:2"}],"name":"depositAndCall","nameLocation":"9509:14:2","parameters":{"id":1086,"nodeType":"ParameterList","parameters":[{"constant":false,"id":1080,"mutability":"mutable","name":"receiver","nameLocation":"9541:8:2","nodeType":"VariableDeclaration","scope":1141,"src":"9533:16:2","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":1079,"name":"address","nodeType":"ElementaryTypeName","src":"9533:7:2","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":1082,"mutability":"mutable","name":"payload","nameLocation":"9574:7:2","nodeType":"VariableDeclaration","scope":1141,"src":"9559:22:2","stateVariable":false,"storageLocation":"calldata","typeDescriptions":{"typeIdentifier":"t_bytes_calldata_ptr","typeString":"bytes"},"typeName":{"id":1081,"name":"bytes","nodeType":"ElementaryTypeName","src":"9559:5:2","typeDescriptions":{"typeIdentifier":"t_bytes_storage_ptr","typeString":"bytes"}},"visibility":"internal"},{"constant":false,"id":1085,"mutability":"mutable","name":"revertOptions","nameLocation":"9614:13:2","nodeType":"VariableDeclaration","scope":1141,"src":"9591:36:2","stateVariable":false,"storageLocation":"calldata","typeDescriptions":{"typeIdentifier":"t_struct$_RevertOptions_$13_calldata_ptr","typeString":"struct RevertOptions"},"typeName":{"id":1084,"nodeType":"UserDefinedTypeName","pathNode":{"id":1083,"name":"RevertOptions","nameLocations":["9591:13:2"],"nodeType":"IdentifierPath","referencedDeclaration":13,"src":"9591:13:2"},"referencedDeclaration":13,"src":"9591:13:2","typeDescriptions":{"typeIdentifier":"t_struct$_RevertOptions_$13_storage_ptr","typeString":"struct RevertOptions"}},"visibility":"internal"}],"src":"9523:110:2"},"returnParameters":{"id":1091,"nodeType":"ParameterList","parameters":[],"src":"9714:0:2"},"scope":1448,"stateMutability":"payable","virtual":false,"visibility":"external"},{"id":1195,"nodeType":"FunctionDefinition","src":"10419:519:2","nodes":[],"body":{"id":1194,"nodeType":"Block","src":"10664:274:2","nodes":[],"statements":[{"condition":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":1162,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":1160,"name":"amount","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1146,"src":"10678:6:2","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"==","rightExpression":{"hexValue":"30","id":1161,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"10688:1:2","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},"src":"10678:11:2","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":1166,"nodeType":"IfStatement","src":"10674:49:2","trueBody":{"errorCall":{"arguments":[],"expression":{"argumentTypes":[],"id":1163,"name":"InsufficientERC20Amount","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2286,"src":"10698:23:2","typeDescriptions":{"typeIdentifier":"t_function_error_pure$__$returns$_t_error_$","typeString":"function () pure returns (error)"}},"id":1164,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"10698:25:2","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_error","typeString":"error"}},"id":1165,"nodeType":"RevertStatement","src":"10691:32:2"}},{"condition":{"commonType":{"typeIdentifier":"t_address","typeString":"address"},"id":1172,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":1167,"name":"receiver","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1144,"src":"10737:8:2","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"nodeType":"BinaryOperation","operator":"==","rightExpression":{"arguments":[{"hexValue":"30","id":1170,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"10757:1:2","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"}],"id":1169,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"10749:7:2","typeDescriptions":{"typeIdentifier":"t_type$_t_address_$","typeString":"type(address)"},"typeName":{"id":1168,"name":"address","nodeType":"ElementaryTypeName","src":"10749:7:2","typeDescriptions":{}}},"id":1171,"isConstant":false,"isLValue":false,"isPure":true,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"10749:10:2","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"src":"10737:22:2","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":1176,"nodeType":"IfStatement","src":"10733:48:2","trueBody":{"errorCall":{"arguments":[],"expression":{"argumentTypes":[],"id":1173,"name":"ZeroAddress","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2289,"src":"10768:11:2","typeDescriptions":{"typeIdentifier":"t_function_error_pure$__$returns$_t_error_$","typeString":"function () pure returns (error)"}},"id":1174,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"10768:13:2","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_error","typeString":"error"}},"id":1175,"nodeType":"RevertStatement","src":"10761:20:2"}},{"expression":{"arguments":[{"expression":{"id":1178,"name":"msg","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-15,"src":"10819:3:2","typeDescriptions":{"typeIdentifier":"t_magic_message","typeString":"msg"}},"id":1179,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"10823:6:2","memberName":"sender","nodeType":"MemberAccess","src":"10819:10:2","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":1180,"name":"asset","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1148,"src":"10831:5:2","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":1181,"name":"amount","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1146,"src":"10838:6:2","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":1177,"name":"transferFromToAssetHandler","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1394,"src":"10792:26:2","typeDescriptions":{"typeIdentifier":"t_function_internal_nonpayable$_t_address_$_t_address_$_t_uint256_$returns$__$","typeString":"function (address,address,uint256)"}},"id":1182,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"10792:53:2","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":1183,"nodeType":"ExpressionStatement","src":"10792:53:2"},{"eventCall":{"arguments":[{"expression":{"id":1185,"name":"msg","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-15,"src":"10871:3:2","typeDescriptions":{"typeIdentifier":"t_magic_message","typeString":"msg"}},"id":1186,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"10875:6:2","memberName":"sender","nodeType":"MemberAccess","src":"10871:10:2","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":1187,"name":"receiver","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1144,"src":"10883:8:2","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":1188,"name":"amount","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1146,"src":"10893:6:2","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},{"id":1189,"name":"asset","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1148,"src":"10901:5:2","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":1190,"name":"payload","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1150,"src":"10908:7:2","typeDescriptions":{"typeIdentifier":"t_bytes_calldata_ptr","typeString":"bytes calldata"}},{"id":1191,"name":"revertOptions","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1153,"src":"10917:13:2","typeDescriptions":{"typeIdentifier":"t_struct$_RevertOptions_$13_calldata_ptr","typeString":"struct RevertOptions calldata"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_uint256","typeString":"uint256"},{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_bytes_calldata_ptr","typeString":"bytes calldata"},{"typeIdentifier":"t_struct$_RevertOptions_$13_calldata_ptr","typeString":"struct RevertOptions calldata"}],"id":1184,"name":"Deposited","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2260,"src":"10861:9:2","typeDescriptions":{"typeIdentifier":"t_function_event_nonpayable$_t_address_$_t_address_$_t_uint256_$_t_address_$_t_bytes_memory_ptr_$_t_struct$_RevertOptions_$13_memory_ptr_$returns$__$","typeString":"function (address,address,uint256,address,bytes memory,struct RevertOptions memory)"}},"id":1192,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"10861:70:2","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":1193,"nodeType":"EmitStatement","src":"10856:75:2"}]},"baseFunctions":[2403],"documentation":{"id":1142,"nodeType":"StructuredDocumentation","src":"10058:356:2","text":"@notice Deposits ERC20 tokens to the custody or connector contract and calls an omnichain smart contract.\n @param receiver Address of the receiver.\n @param amount Amount of tokens to deposit.\n @param asset Address of the ERC20 token.\n @param payload Calldata to pass to the call.\n @param revertOptions Revert options."},"functionSelector":"d09e3b78","implemented":true,"kind":"function","modifiers":[{"id":1156,"kind":"modifierInvocation","modifierName":{"id":1155,"name":"whenNotPaused","nameLocations":["10625:13:2"],"nodeType":"IdentifierPath","referencedDeclaration":44795,"src":"10625:13:2"},"nodeType":"ModifierInvocation","src":"10625:13:2"},{"id":1158,"kind":"modifierInvocation","modifierName":{"id":1157,"name":"nonReentrant","nameLocations":["10647:12:2"],"nodeType":"IdentifierPath","referencedDeclaration":44962,"src":"10647:12:2"},"nodeType":"ModifierInvocation","src":"10647:12:2"}],"name":"depositAndCall","nameLocation":"10428:14:2","parameters":{"id":1154,"nodeType":"ParameterList","parameters":[{"constant":false,"id":1144,"mutability":"mutable","name":"receiver","nameLocation":"10460:8:2","nodeType":"VariableDeclaration","scope":1195,"src":"10452:16:2","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":1143,"name":"address","nodeType":"ElementaryTypeName","src":"10452:7:2","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":1146,"mutability":"mutable","name":"amount","nameLocation":"10486:6:2","nodeType":"VariableDeclaration","scope":1195,"src":"10478:14:2","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":1145,"name":"uint256","nodeType":"ElementaryTypeName","src":"10478:7:2","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":1148,"mutability":"mutable","name":"asset","nameLocation":"10510:5:2","nodeType":"VariableDeclaration","scope":1195,"src":"10502:13:2","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":1147,"name":"address","nodeType":"ElementaryTypeName","src":"10502:7:2","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":1150,"mutability":"mutable","name":"payload","nameLocation":"10540:7:2","nodeType":"VariableDeclaration","scope":1195,"src":"10525:22:2","stateVariable":false,"storageLocation":"calldata","typeDescriptions":{"typeIdentifier":"t_bytes_calldata_ptr","typeString":"bytes"},"typeName":{"id":1149,"name":"bytes","nodeType":"ElementaryTypeName","src":"10525:5:2","typeDescriptions":{"typeIdentifier":"t_bytes_storage_ptr","typeString":"bytes"}},"visibility":"internal"},{"constant":false,"id":1153,"mutability":"mutable","name":"revertOptions","nameLocation":"10580:13:2","nodeType":"VariableDeclaration","scope":1195,"src":"10557:36:2","stateVariable":false,"storageLocation":"calldata","typeDescriptions":{"typeIdentifier":"t_struct$_RevertOptions_$13_calldata_ptr","typeString":"struct RevertOptions"},"typeName":{"id":1152,"nodeType":"UserDefinedTypeName","pathNode":{"id":1151,"name":"RevertOptions","nameLocations":["10557:13:2"],"nodeType":"IdentifierPath","referencedDeclaration":13,"src":"10557:13:2"},"referencedDeclaration":13,"src":"10557:13:2","typeDescriptions":{"typeIdentifier":"t_struct$_RevertOptions_$13_storage_ptr","typeString":"struct RevertOptions"}},"visibility":"internal"}],"src":"10442:157:2"},"returnParameters":{"id":1159,"nodeType":"ParameterList","parameters":[],"src":"10664:0:2"},"scope":1448,"stateMutability":"nonpayable","virtual":false,"visibility":"external"},{"id":1229,"nodeType":"FunctionDefinition","src":"11165:320:2","nodes":[],"body":{"id":1228,"nodeType":"Block","src":"11353:132:2","nodes":[],"statements":[{"condition":{"commonType":{"typeIdentifier":"t_address","typeString":"address"},"id":1215,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":1210,"name":"receiver","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1198,"src":"11367:8:2","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"nodeType":"BinaryOperation","operator":"==","rightExpression":{"arguments":[{"hexValue":"30","id":1213,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"11387:1:2","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"}],"id":1212,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"11379:7:2","typeDescriptions":{"typeIdentifier":"t_type$_t_address_$","typeString":"type(address)"},"typeName":{"id":1211,"name":"address","nodeType":"ElementaryTypeName","src":"11379:7:2","typeDescriptions":{}}},"id":1214,"isConstant":false,"isLValue":false,"isPure":true,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"11379:10:2","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"src":"11367:22:2","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":1219,"nodeType":"IfStatement","src":"11363:48:2","trueBody":{"errorCall":{"arguments":[],"expression":{"argumentTypes":[],"id":1216,"name":"ZeroAddress","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2289,"src":"11398:11:2","typeDescriptions":{"typeIdentifier":"t_function_error_pure$__$returns$_t_error_$","typeString":"function () pure returns (error)"}},"id":1217,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"11398:13:2","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_error","typeString":"error"}},"id":1218,"nodeType":"RevertStatement","src":"11391:20:2"}},{"eventCall":{"arguments":[{"expression":{"id":1221,"name":"msg","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-15,"src":"11433:3:2","typeDescriptions":{"typeIdentifier":"t_magic_message","typeString":"msg"}},"id":1222,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"11437:6:2","memberName":"sender","nodeType":"MemberAccess","src":"11433:10:2","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":1223,"name":"receiver","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1198,"src":"11445:8:2","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":1224,"name":"payload","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1200,"src":"11455:7:2","typeDescriptions":{"typeIdentifier":"t_bytes_calldata_ptr","typeString":"bytes calldata"}},{"id":1225,"name":"revertOptions","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1203,"src":"11464:13:2","typeDescriptions":{"typeIdentifier":"t_struct$_RevertOptions_$13_calldata_ptr","typeString":"struct RevertOptions calldata"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_bytes_calldata_ptr","typeString":"bytes calldata"},{"typeIdentifier":"t_struct$_RevertOptions_$13_calldata_ptr","typeString":"struct RevertOptions calldata"}],"id":1220,"name":"Called","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2272,"src":"11426:6:2","typeDescriptions":{"typeIdentifier":"t_function_event_nonpayable$_t_address_$_t_address_$_t_bytes_memory_ptr_$_t_struct$_RevertOptions_$13_memory_ptr_$returns$__$","typeString":"function (address,address,bytes memory,struct RevertOptions memory)"}},"id":1226,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"11426:52:2","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":1227,"nodeType":"EmitStatement","src":"11421:57:2"}]},"baseFunctions":[2414],"documentation":{"id":1196,"nodeType":"StructuredDocumentation","src":"10944:216:2","text":"@notice Calls an omnichain smart contract without asset transfer.\n @param receiver Address of the receiver.\n @param payload Calldata to pass to the call.\n @param revertOptions Revert options."},"functionSelector":"1becceb4","implemented":true,"kind":"function","modifiers":[{"id":1206,"kind":"modifierInvocation","modifierName":{"id":1205,"name":"whenNotPaused","nameLocations":["11314:13:2"],"nodeType":"IdentifierPath","referencedDeclaration":44795,"src":"11314:13:2"},"nodeType":"ModifierInvocation","src":"11314:13:2"},{"id":1208,"kind":"modifierInvocation","modifierName":{"id":1207,"name":"nonReentrant","nameLocations":["11336:12:2"],"nodeType":"IdentifierPath","referencedDeclaration":44962,"src":"11336:12:2"},"nodeType":"ModifierInvocation","src":"11336:12:2"}],"name":"call","nameLocation":"11174:4:2","parameters":{"id":1204,"nodeType":"ParameterList","parameters":[{"constant":false,"id":1198,"mutability":"mutable","name":"receiver","nameLocation":"11196:8:2","nodeType":"VariableDeclaration","scope":1229,"src":"11188:16:2","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":1197,"name":"address","nodeType":"ElementaryTypeName","src":"11188:7:2","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":1200,"mutability":"mutable","name":"payload","nameLocation":"11229:7:2","nodeType":"VariableDeclaration","scope":1229,"src":"11214:22:2","stateVariable":false,"storageLocation":"calldata","typeDescriptions":{"typeIdentifier":"t_bytes_calldata_ptr","typeString":"bytes"},"typeName":{"id":1199,"name":"bytes","nodeType":"ElementaryTypeName","src":"11214:5:2","typeDescriptions":{"typeIdentifier":"t_bytes_storage_ptr","typeString":"bytes"}},"visibility":"internal"},{"constant":false,"id":1203,"mutability":"mutable","name":"revertOptions","nameLocation":"11269:13:2","nodeType":"VariableDeclaration","scope":1229,"src":"11246:36:2","stateVariable":false,"storageLocation":"calldata","typeDescriptions":{"typeIdentifier":"t_struct$_RevertOptions_$13_calldata_ptr","typeString":"struct RevertOptions"},"typeName":{"id":1202,"nodeType":"UserDefinedTypeName","pathNode":{"id":1201,"name":"RevertOptions","nameLocations":["11246:13:2"],"nodeType":"IdentifierPath","referencedDeclaration":13,"src":"11246:13:2"},"referencedDeclaration":13,"src":"11246:13:2","typeDescriptions":{"typeIdentifier":"t_struct$_RevertOptions_$13_storage_ptr","typeString":"struct RevertOptions"}},"visibility":"internal"}],"src":"11178:110:2"},"returnParameters":{"id":1209,"nodeType":"ParameterList","parameters":[],"src":"11353:0:2"},"scope":1448,"stateMutability":"nonpayable","virtual":false,"visibility":"external"},{"id":1268,"nodeType":"FunctionDefinition","src":"11599:284:2","nodes":[],"body":{"id":1267,"nodeType":"Block","src":"11675:208:2","nodes":[],"statements":[{"condition":{"commonType":{"typeIdentifier":"t_address","typeString":"address"},"id":1243,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":1238,"name":"custody_","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1232,"src":"11689:8:2","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"nodeType":"BinaryOperation","operator":"==","rightExpression":{"arguments":[{"hexValue":"30","id":1241,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"11709:1:2","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"}],"id":1240,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"11701:7:2","typeDescriptions":{"typeIdentifier":"t_type$_t_address_$","typeString":"type(address)"},"typeName":{"id":1239,"name":"address","nodeType":"ElementaryTypeName","src":"11701:7:2","typeDescriptions":{}}},"id":1242,"isConstant":false,"isLValue":false,"isPure":true,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"11701:10:2","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"src":"11689:22:2","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":1247,"nodeType":"IfStatement","src":"11685:48:2","trueBody":{"errorCall":{"arguments":[],"expression":{"argumentTypes":[],"id":1244,"name":"ZeroAddress","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2289,"src":"11720:11:2","typeDescriptions":{"typeIdentifier":"t_function_error_pure$__$returns$_t_error_$","typeString":"function () pure returns (error)"}},"id":1245,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"11720:13:2","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_error","typeString":"error"}},"id":1246,"nodeType":"RevertStatement","src":"11713:20:2"}},{"condition":{"commonType":{"typeIdentifier":"t_address","typeString":"address"},"id":1253,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":1248,"name":"custody","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":523,"src":"11747:7:2","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"nodeType":"BinaryOperation","operator":"!=","rightExpression":{"arguments":[{"hexValue":"30","id":1251,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"11766:1:2","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"}],"id":1250,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"11758:7:2","typeDescriptions":{"typeIdentifier":"t_type$_t_address_$","typeString":"type(address)"},"typeName":{"id":1249,"name":"address","nodeType":"ElementaryTypeName","src":"11758:7:2","typeDescriptions":{}}},"id":1252,"isConstant":false,"isLValue":false,"isPure":true,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"11758:10:2","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"src":"11747:21:2","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":1257,"nodeType":"IfStatement","src":"11743:54:2","trueBody":{"errorCall":{"arguments":[],"expression":{"argumentTypes":[],"id":1254,"name":"CustodyInitialized","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2295,"src":"11777:18:2","typeDescriptions":{"typeIdentifier":"t_function_error_pure$__$returns$_t_error_$","typeString":"function () pure returns (error)"}},"id":1255,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"11777:20:2","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_error","typeString":"error"}},"id":1256,"nodeType":"RevertStatement","src":"11770:27:2"}},{"expression":{"arguments":[{"id":1259,"name":"ASSET_HANDLER_ROLE","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":544,"src":"11819:18:2","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},{"id":1260,"name":"custody_","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1232,"src":"11839:8:2","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bytes32","typeString":"bytes32"},{"typeIdentifier":"t_address","typeString":"address"}],"id":1258,"name":"_grantRole","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":44188,"src":"11808:10:2","typeDescriptions":{"typeIdentifier":"t_function_internal_nonpayable$_t_bytes32_$_t_address_$returns$_t_bool_$","typeString":"function (bytes32,address) returns (bool)"}},"id":1261,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"11808:40:2","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":1262,"nodeType":"ExpressionStatement","src":"11808:40:2"},{"expression":{"id":1265,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":1263,"name":"custody","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":523,"src":"11858:7:2","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"id":1264,"name":"custody_","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1232,"src":"11868:8:2","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"src":"11858:18:2","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"id":1266,"nodeType":"ExpressionStatement","src":"11858:18:2"}]},"documentation":{"id":1230,"nodeType":"StructuredDocumentation","src":"11491:103:2","text":"@notice Sets the custody contract address.\n @param custody_ Address of the custody contract."},"functionSelector":"ae7a3a6f","implemented":true,"kind":"function","modifiers":[{"arguments":[{"id":1235,"name":"DEFAULT_ADMIN_ROLE","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":43901,"src":"11655:18:2","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}}],"id":1236,"kind":"modifierInvocation","modifierName":{"id":1234,"name":"onlyRole","nameLocations":["11646:8:2"],"nodeType":"IdentifierPath","referencedDeclaration":43930,"src":"11646:8:2"},"nodeType":"ModifierInvocation","src":"11646:28:2"}],"name":"setCustody","nameLocation":"11608:10:2","parameters":{"id":1233,"nodeType":"ParameterList","parameters":[{"constant":false,"id":1232,"mutability":"mutable","name":"custody_","nameLocation":"11627:8:2","nodeType":"VariableDeclaration","scope":1268,"src":"11619:16:2","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":1231,"name":"address","nodeType":"ElementaryTypeName","src":"11619:7:2","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"11618:18:2"},"returnParameters":{"id":1237,"nodeType":"ParameterList","parameters":[],"src":"11675:0:2"},"scope":1448,"stateMutability":"nonpayable","virtual":false,"visibility":"external"},{"id":1307,"nodeType":"FunctionDefinition","src":"12007:324:2","nodes":[],"body":{"id":1306,"nodeType":"Block","src":"12091:240:2","nodes":[],"statements":[{"condition":{"commonType":{"typeIdentifier":"t_address","typeString":"address"},"id":1282,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":1277,"name":"zetaConnector_","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1271,"src":"12105:14:2","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"nodeType":"BinaryOperation","operator":"==","rightExpression":{"arguments":[{"hexValue":"30","id":1280,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"12131:1:2","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"}],"id":1279,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"12123:7:2","typeDescriptions":{"typeIdentifier":"t_type$_t_address_$","typeString":"type(address)"},"typeName":{"id":1278,"name":"address","nodeType":"ElementaryTypeName","src":"12123:7:2","typeDescriptions":{}}},"id":1281,"isConstant":false,"isLValue":false,"isPure":true,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"12123:10:2","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"src":"12105:28:2","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":1286,"nodeType":"IfStatement","src":"12101:54:2","trueBody":{"errorCall":{"arguments":[],"expression":{"argumentTypes":[],"id":1283,"name":"ZeroAddress","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2289,"src":"12142:11:2","typeDescriptions":{"typeIdentifier":"t_function_error_pure$__$returns$_t_error_$","typeString":"function () pure returns (error)"}},"id":1284,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"12142:13:2","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_error","typeString":"error"}},"id":1285,"nodeType":"RevertStatement","src":"12135:20:2"}},{"condition":{"commonType":{"typeIdentifier":"t_address","typeString":"address"},"id":1292,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":1287,"name":"zetaConnector","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":529,"src":"12169:13:2","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"nodeType":"BinaryOperation","operator":"!=","rightExpression":{"arguments":[{"hexValue":"30","id":1290,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"12194:1:2","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"}],"id":1289,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"12186:7:2","typeDescriptions":{"typeIdentifier":"t_type$_t_address_$","typeString":"type(address)"},"typeName":{"id":1288,"name":"address","nodeType":"ElementaryTypeName","src":"12186:7:2","typeDescriptions":{}}},"id":1291,"isConstant":false,"isLValue":false,"isPure":true,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"12186:10:2","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"src":"12169:27:2","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":1296,"nodeType":"IfStatement","src":"12165:62:2","trueBody":{"errorCall":{"arguments":[],"expression":{"argumentTypes":[],"id":1293,"name":"ConnectorInitialized","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2298,"src":"12205:20:2","typeDescriptions":{"typeIdentifier":"t_function_error_pure$__$returns$_t_error_$","typeString":"function () pure returns (error)"}},"id":1294,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"12205:22:2","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_error","typeString":"error"}},"id":1295,"nodeType":"RevertStatement","src":"12198:29:2"}},{"expression":{"arguments":[{"id":1298,"name":"ASSET_HANDLER_ROLE","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":544,"src":"12249:18:2","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},{"id":1299,"name":"zetaConnector_","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1271,"src":"12269:14:2","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bytes32","typeString":"bytes32"},{"typeIdentifier":"t_address","typeString":"address"}],"id":1297,"name":"_grantRole","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":44188,"src":"12238:10:2","typeDescriptions":{"typeIdentifier":"t_function_internal_nonpayable$_t_bytes32_$_t_address_$returns$_t_bool_$","typeString":"function (bytes32,address) returns (bool)"}},"id":1300,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"12238:46:2","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":1301,"nodeType":"ExpressionStatement","src":"12238:46:2"},{"expression":{"id":1304,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":1302,"name":"zetaConnector","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":529,"src":"12294:13:2","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"id":1303,"name":"zetaConnector_","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1271,"src":"12310:14:2","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"src":"12294:30:2","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"id":1305,"nodeType":"ExpressionStatement","src":"12294:30:2"}]},"documentation":{"id":1269,"nodeType":"StructuredDocumentation","src":"11889:113:2","text":"@notice Sets the connector contract address.\n @param zetaConnector_ Address of the connector contract."},"functionSelector":"10188aef","implemented":true,"kind":"function","modifiers":[{"arguments":[{"id":1274,"name":"DEFAULT_ADMIN_ROLE","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":43901,"src":"12071:18:2","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}}],"id":1275,"kind":"modifierInvocation","modifierName":{"id":1273,"name":"onlyRole","nameLocations":["12062:8:2"],"nodeType":"IdentifierPath","referencedDeclaration":43930,"src":"12062:8:2"},"nodeType":"ModifierInvocation","src":"12062:28:2"}],"name":"setConnector","nameLocation":"12016:12:2","parameters":{"id":1272,"nodeType":"ParameterList","parameters":[{"constant":false,"id":1271,"mutability":"mutable","name":"zetaConnector_","nameLocation":"12037:14:2","nodeType":"VariableDeclaration","scope":1307,"src":"12029:22:2","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":1270,"name":"address","nodeType":"ElementaryTypeName","src":"12029:7:2","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"12028:24:2"},"returnParameters":{"id":1276,"nodeType":"ParameterList","parameters":[],"src":"12091:0:2"},"scope":1448,"stateMutability":"nonpayable","virtual":false,"visibility":"external"},{"id":1326,"nodeType":"FunctionDefinition","src":"12682:125:2","nodes":[],"body":{"id":1325,"nodeType":"Block","src":"12755:52:2","nodes":[],"statements":[{"expression":{"arguments":[{"id":1321,"name":"to","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1312,"src":"12794:2:2","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"hexValue":"30","id":1322,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"12798:1:2","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"}],"expression":{"arguments":[{"id":1318,"name":"token","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1310,"src":"12779:5:2","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"}],"id":1317,"name":"IERC20","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":47066,"src":"12772:6:2","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_IERC20_$47066_$","typeString":"type(contract IERC20)"}},"id":1319,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"12772:13:2","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_contract$_IERC20_$47066","typeString":"contract IERC20"}},"id":1320,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"12786:7:2","memberName":"approve","nodeType":"MemberAccess","referencedDeclaration":47053,"src":"12772:21:2","typeDescriptions":{"typeIdentifier":"t_function_external_nonpayable$_t_address_$_t_uint256_$returns$_t_bool_$","typeString":"function (address,uint256) external returns (bool)"}},"id":1323,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"12772:28:2","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"functionReturnParameters":1316,"id":1324,"nodeType":"Return","src":"12765:35:2"}]},"documentation":{"id":1308,"nodeType":"StructuredDocumentation","src":"12337:340:2","text":"@dev Resets the approval of a token for a specified address.\n This is used to ensure that the approval is set to zero before setting it to a new value.\n @param token Address of the ERC20 token.\n @param to Address to reset the approval for.\n @return True if the approval reset was successful, false otherwise."},"implemented":true,"kind":"function","modifiers":[],"name":"resetApproval","nameLocation":"12691:13:2","parameters":{"id":1313,"nodeType":"ParameterList","parameters":[{"constant":false,"id":1310,"mutability":"mutable","name":"token","nameLocation":"12713:5:2","nodeType":"VariableDeclaration","scope":1326,"src":"12705:13:2","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":1309,"name":"address","nodeType":"ElementaryTypeName","src":"12705:7:2","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":1312,"mutability":"mutable","name":"to","nameLocation":"12728:2:2","nodeType":"VariableDeclaration","scope":1326,"src":"12720:10:2","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":1311,"name":"address","nodeType":"ElementaryTypeName","src":"12720:7:2","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"12704:27:2"},"returnParameters":{"id":1316,"nodeType":"ParameterList","parameters":[{"constant":false,"id":1315,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":1326,"src":"12749:4:2","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"typeName":{"id":1314,"name":"bool","nodeType":"ElementaryTypeName","src":"12749:4:2","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"visibility":"internal"}],"src":"12748:6:2"},"scope":1448,"stateMutability":"nonpayable","virtual":false,"visibility":"private"},{"id":1394,"nodeType":"FunctionDefinition","src":"13155:801:2","nodes":[],"body":{"id":1393,"nodeType":"Block","src":"13244:712:2","nodes":[],"statements":[{"condition":{"commonType":{"typeIdentifier":"t_address","typeString":"address"},"id":1338,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":1336,"name":"token","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1331,"src":"13258:5:2","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"nodeType":"BinaryOperation","operator":"==","rightExpression":{"id":1337,"name":"zetaToken","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":532,"src":"13267:9:2","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"src":"13258:18:2","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"falseBody":{"id":1391,"nodeType":"Block","src":"13743:207:2","statements":[{"condition":{"id":1377,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"UnaryOperation","operator":"!","prefix":true,"src":"13796:42:2","subExpression":{"arguments":[{"id":1375,"name":"token","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1331,"src":"13832:5:2","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"}],"expression":{"arguments":[{"id":1372,"name":"custody","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":523,"src":"13811:7:2","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"}],"id":1371,"name":"IERC20Custody","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2206,"src":"13797:13:2","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_IERC20Custody_$2206_$","typeString":"type(contract IERC20Custody)"}},"id":1373,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"13797:22:2","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_contract$_IERC20Custody_$2206","typeString":"contract IERC20Custody"}},"id":1374,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"13820:11:2","memberName":"whitelisted","nodeType":"MemberAccess","referencedDeclaration":2168,"src":"13797:34:2","typeDescriptions":{"typeIdentifier":"t_function_external_view$_t_address_$returns$_t_bool_$","typeString":"function (address) view external returns (bool)"}},"id":1376,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"13797:41:2","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":1381,"nodeType":"IfStatement","src":"13792:80:2","trueBody":{"errorCall":{"arguments":[],"expression":{"argumentTypes":[],"id":1378,"name":"NotWhitelistedInCustody","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2301,"src":"13847:23:2","typeDescriptions":{"typeIdentifier":"t_function_error_pure$__$returns$_t_error_$","typeString":"function () pure returns (error)"}},"id":1379,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"13847:25:2","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_error","typeString":"error"}},"id":1380,"nodeType":"RevertStatement","src":"13840:32:2"}},{"expression":{"arguments":[{"id":1386,"name":"from","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1329,"src":"13917:4:2","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":1387,"name":"custody","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":523,"src":"13923:7:2","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":1388,"name":"amount","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1333,"src":"13932:6:2","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"expression":{"arguments":[{"id":1383,"name":"token","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1331,"src":"13893:5:2","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"}],"id":1382,"name":"IERC20","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":47066,"src":"13886:6:2","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_IERC20_$47066_$","typeString":"type(contract IERC20)"}},"id":1384,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"13886:13:2","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_contract$_IERC20_$47066","typeString":"contract IERC20"}},"id":1385,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"13900:16:2","memberName":"safeTransferFrom","nodeType":"MemberAccess","referencedDeclaration":47251,"src":"13886:30:2","typeDescriptions":{"typeIdentifier":"t_function_internal_nonpayable$_t_contract$_IERC20_$47066_$_t_address_$_t_address_$_t_uint256_$returns$__$attached_to$_t_contract$_IERC20_$47066_$","typeString":"function (contract IERC20,address,address,uint256)"}},"id":1389,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"13886:53:2","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":1390,"nodeType":"ExpressionStatement","src":"13886:53:2"}]},"id":1392,"nodeType":"IfStatement","src":"13254:696:2","trueBody":{"id":1370,"nodeType":"Block","src":"13278:459:2","statements":[{"expression":{"arguments":[{"id":1343,"name":"from","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1329,"src":"13402:4:2","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"arguments":[{"id":1346,"name":"this","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-28,"src":"13416:4:2","typeDescriptions":{"typeIdentifier":"t_contract$_GatewayEVM_$1448","typeString":"contract GatewayEVM"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_contract$_GatewayEVM_$1448","typeString":"contract GatewayEVM"}],"id":1345,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"13408:7:2","typeDescriptions":{"typeIdentifier":"t_type$_t_address_$","typeString":"type(address)"},"typeName":{"id":1344,"name":"address","nodeType":"ElementaryTypeName","src":"13408:7:2","typeDescriptions":{}}},"id":1347,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"13408:13:2","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":1348,"name":"amount","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1333,"src":"13423:6:2","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"expression":{"arguments":[{"id":1340,"name":"token","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1331,"src":"13378:5:2","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"}],"id":1339,"name":"IERC20","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":47066,"src":"13371:6:2","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_IERC20_$47066_$","typeString":"type(contract IERC20)"}},"id":1341,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"13371:13:2","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_contract$_IERC20_$47066","typeString":"contract IERC20"}},"id":1342,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"13385:16:2","memberName":"safeTransferFrom","nodeType":"MemberAccess","referencedDeclaration":47251,"src":"13371:30:2","typeDescriptions":{"typeIdentifier":"t_function_internal_nonpayable$_t_contract$_IERC20_$47066_$_t_address_$_t_address_$_t_uint256_$returns$__$attached_to$_t_contract$_IERC20_$47066_$","typeString":"function (contract IERC20,address,address,uint256)"}},"id":1349,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"13371:59:2","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":1350,"nodeType":"ExpressionStatement","src":"13371:59:2"},{"condition":{"id":1358,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"UnaryOperation","operator":"!","prefix":true,"src":"13548:45:2","subExpression":{"arguments":[{"id":1355,"name":"zetaConnector","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":529,"src":"13571:13:2","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":1356,"name":"amount","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1333,"src":"13586:6:2","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"expression":{"arguments":[{"id":1352,"name":"token","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1331,"src":"13556:5:2","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"}],"id":1351,"name":"IERC20","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":47066,"src":"13549:6:2","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_IERC20_$47066_$","typeString":"type(contract IERC20)"}},"id":1353,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"13549:13:2","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_contract$_IERC20_$47066","typeString":"contract IERC20"}},"id":1354,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"13563:7:2","memberName":"approve","nodeType":"MemberAccess","referencedDeclaration":47053,"src":"13549:21:2","typeDescriptions":{"typeIdentifier":"t_function_external_nonpayable$_t_address_$_t_uint256_$returns$_t_bool_$","typeString":"function (address,uint256) external returns (bool)"}},"id":1357,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"13549:44:2","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":1362,"nodeType":"IfStatement","src":"13544:74:2","trueBody":{"errorCall":{"arguments":[],"expression":{"argumentTypes":[],"id":1359,"name":"ApprovalFailed","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2292,"src":"13602:14:2","typeDescriptions":{"typeIdentifier":"t_function_error_pure$__$returns$_t_error_$","typeString":"function () pure returns (error)"}},"id":1360,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"13602:16:2","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_error","typeString":"error"}},"id":1361,"nodeType":"RevertStatement","src":"13595:23:2"}},{"expression":{"arguments":[{"id":1367,"name":"amount","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1333,"src":"13719:6:2","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"}],"expression":{"arguments":[{"id":1364,"name":"zetaConnector","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":529,"src":"13690:13:2","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"}],"id":1363,"name":"ZetaConnectorBase","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1644,"src":"13672:17:2","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_ZetaConnectorBase_$1644_$","typeString":"type(contract ZetaConnectorBase)"}},"id":1365,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"13672:32:2","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_contract$_ZetaConnectorBase_$1644","typeString":"contract ZetaConnectorBase"}},"id":1366,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"13705:13:2","memberName":"receiveTokens","nodeType":"MemberAccess","referencedDeclaration":1643,"src":"13672:46:2","typeDescriptions":{"typeIdentifier":"t_function_external_nonpayable$_t_uint256_$returns$__$","typeString":"function (uint256) external"}},"id":1368,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"13672:54:2","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":1369,"nodeType":"ExpressionStatement","src":"13672:54:2"}]}}]},"documentation":{"id":1327,"nodeType":"StructuredDocumentation","src":"12813:337:2","text":"@dev Transfers tokens from the sender to the asset handler.\n This function handles the transfer of tokens to either the connector or custody contract based on the asset\n type.\n @param from Address of the sender.\n @param token Address of the ERC20 token.\n @param amount Amount of tokens to transfer."},"implemented":true,"kind":"function","modifiers":[],"name":"transferFromToAssetHandler","nameLocation":"13164:26:2","parameters":{"id":1334,"nodeType":"ParameterList","parameters":[{"constant":false,"id":1329,"mutability":"mutable","name":"from","nameLocation":"13199:4:2","nodeType":"VariableDeclaration","scope":1394,"src":"13191:12:2","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":1328,"name":"address","nodeType":"ElementaryTypeName","src":"13191:7:2","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":1331,"mutability":"mutable","name":"token","nameLocation":"13213:5:2","nodeType":"VariableDeclaration","scope":1394,"src":"13205:13:2","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":1330,"name":"address","nodeType":"ElementaryTypeName","src":"13205:7:2","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":1333,"mutability":"mutable","name":"amount","nameLocation":"13228:6:2","nodeType":"VariableDeclaration","scope":1394,"src":"13220:14:2","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":1332,"name":"uint256","nodeType":"ElementaryTypeName","src":"13220:7:2","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"13190:45:2"},"returnParameters":{"id":1335,"nodeType":"ParameterList","parameters":[],"src":"13244:0:2"},"scope":1448,"stateMutability":"nonpayable","virtual":false,"visibility":"private"},{"id":1447,"nodeType":"FunctionDefinition","src":"14245:658:2","nodes":[],"body":{"id":1446,"nodeType":"Block","src":"14316:587:2","nodes":[],"statements":[{"condition":{"commonType":{"typeIdentifier":"t_address","typeString":"address"},"id":1404,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":1402,"name":"token","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1397,"src":"14330:5:2","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"nodeType":"BinaryOperation","operator":"==","rightExpression":{"id":1403,"name":"zetaToken","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":532,"src":"14339:9:2","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"src":"14330:18:2","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"falseBody":{"id":1444,"nodeType":"Block","src":"14700:197:2","statements":[{"condition":{"id":1431,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"UnaryOperation","operator":"!","prefix":true,"src":"14753:42:2","subExpression":{"arguments":[{"id":1429,"name":"token","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1397,"src":"14789:5:2","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"}],"expression":{"arguments":[{"id":1426,"name":"custody","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":523,"src":"14768:7:2","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"}],"id":1425,"name":"IERC20Custody","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2206,"src":"14754:13:2","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_IERC20Custody_$2206_$","typeString":"type(contract IERC20Custody)"}},"id":1427,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"14754:22:2","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_contract$_IERC20Custody_$2206","typeString":"contract IERC20Custody"}},"id":1428,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"14777:11:2","memberName":"whitelisted","nodeType":"MemberAccess","referencedDeclaration":2168,"src":"14754:34:2","typeDescriptions":{"typeIdentifier":"t_function_external_view$_t_address_$returns$_t_bool_$","typeString":"function (address) view external returns (bool)"}},"id":1430,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"14754:41:2","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":1435,"nodeType":"IfStatement","src":"14749:80:2","trueBody":{"errorCall":{"arguments":[],"expression":{"argumentTypes":[],"id":1432,"name":"NotWhitelistedInCustody","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2301,"src":"14804:23:2","typeDescriptions":{"typeIdentifier":"t_function_error_pure$__$returns$_t_error_$","typeString":"function () pure returns (error)"}},"id":1433,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"14804:25:2","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_error","typeString":"error"}},"id":1434,"nodeType":"RevertStatement","src":"14797:32:2"}},{"expression":{"arguments":[{"id":1440,"name":"custody","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":523,"src":"14870:7:2","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":1441,"name":"amount","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1399,"src":"14879:6:2","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"expression":{"arguments":[{"id":1437,"name":"token","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1397,"src":"14850:5:2","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"}],"id":1436,"name":"IERC20","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":47066,"src":"14843:6:2","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_IERC20_$47066_$","typeString":"type(contract IERC20)"}},"id":1438,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"14843:13:2","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_contract$_IERC20_$47066","typeString":"contract IERC20"}},"id":1439,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"14857:12:2","memberName":"safeTransfer","nodeType":"MemberAccess","referencedDeclaration":47224,"src":"14843:26:2","typeDescriptions":{"typeIdentifier":"t_function_internal_nonpayable$_t_contract$_IERC20_$47066_$_t_address_$_t_uint256_$returns$__$attached_to$_t_contract$_IERC20_$47066_$","typeString":"function (contract IERC20,address,uint256)"}},"id":1442,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"14843:43:2","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":1443,"nodeType":"ExpressionStatement","src":"14843:43:2"}]},"id":1445,"nodeType":"IfStatement","src":"14326:571:2","trueBody":{"id":1424,"nodeType":"Block","src":"14350:344:2","statements":[{"condition":{"id":1412,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"UnaryOperation","operator":"!","prefix":true,"src":"14505:45:2","subExpression":{"arguments":[{"id":1409,"name":"zetaConnector","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":529,"src":"14528:13:2","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":1410,"name":"amount","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1399,"src":"14543:6:2","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"expression":{"arguments":[{"id":1406,"name":"token","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1397,"src":"14513:5:2","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"}],"id":1405,"name":"IERC20","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":47066,"src":"14506:6:2","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_IERC20_$47066_$","typeString":"type(contract IERC20)"}},"id":1407,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"14506:13:2","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_contract$_IERC20_$47066","typeString":"contract IERC20"}},"id":1408,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"14520:7:2","memberName":"approve","nodeType":"MemberAccess","referencedDeclaration":47053,"src":"14506:21:2","typeDescriptions":{"typeIdentifier":"t_function_external_nonpayable$_t_address_$_t_uint256_$returns$_t_bool_$","typeString":"function (address,uint256) external returns (bool)"}},"id":1411,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"14506:44:2","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":1416,"nodeType":"IfStatement","src":"14501:74:2","trueBody":{"errorCall":{"arguments":[],"expression":{"argumentTypes":[],"id":1413,"name":"ApprovalFailed","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2292,"src":"14559:14:2","typeDescriptions":{"typeIdentifier":"t_function_error_pure$__$returns$_t_error_$","typeString":"function () pure returns (error)"}},"id":1414,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"14559:16:2","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_error","typeString":"error"}},"id":1415,"nodeType":"RevertStatement","src":"14552:23:2"}},{"expression":{"arguments":[{"id":1421,"name":"amount","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1399,"src":"14676:6:2","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"}],"expression":{"arguments":[{"id":1418,"name":"zetaConnector","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":529,"src":"14647:13:2","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"}],"id":1417,"name":"ZetaConnectorBase","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1644,"src":"14629:17:2","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_ZetaConnectorBase_$1644_$","typeString":"type(contract ZetaConnectorBase)"}},"id":1419,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"14629:32:2","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_contract$_ZetaConnectorBase_$1644","typeString":"contract ZetaConnectorBase"}},"id":1420,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"14662:13:2","memberName":"receiveTokens","nodeType":"MemberAccess","referencedDeclaration":1643,"src":"14629:46:2","typeDescriptions":{"typeIdentifier":"t_function_external_nonpayable$_t_uint256_$returns$__$","typeString":"function (uint256) external"}},"id":1422,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"14629:54:2","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":1423,"nodeType":"ExpressionStatement","src":"14629:54:2"}]}}]},"documentation":{"id":1395,"nodeType":"StructuredDocumentation","src":"13962:278:2","text":"@dev Transfers tokens to the asset handler.\n This function handles the transfer of tokens to either the connector or custody contract based on the asset\n type.\n @param token Address of the ERC20 token.\n @param amount Amount of tokens to transfer."},"implemented":true,"kind":"function","modifiers":[],"name":"transferToAssetHandler","nameLocation":"14254:22:2","parameters":{"id":1400,"nodeType":"ParameterList","parameters":[{"constant":false,"id":1397,"mutability":"mutable","name":"token","nameLocation":"14285:5:2","nodeType":"VariableDeclaration","scope":1447,"src":"14277:13:2","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":1396,"name":"address","nodeType":"ElementaryTypeName","src":"14277:7:2","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":1399,"mutability":"mutable","name":"amount","nameLocation":"14300:6:2","nodeType":"VariableDeclaration","scope":1447,"src":"14292:14:2","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":1398,"name":"uint256","nodeType":"ElementaryTypeName","src":"14292:7:2","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"14276:31:2"},"returnParameters":{"id":1401,"nodeType":"ParameterList","parameters":[],"src":"14316:0:2"},"scope":1448,"stateMutability":"nonpayable","virtual":false,"visibility":"private"}],"abstract":false,"baseContracts":[{"baseName":{"id":505,"name":"Initializable","nameLocations":["1080:13:2"],"nodeType":"IdentifierPath","referencedDeclaration":44489,"src":"1080:13:2"},"id":506,"nodeType":"InheritanceSpecifier","src":"1080:13:2"},{"baseName":{"id":507,"name":"AccessControlUpgradeable","nameLocations":["1099:24:2"],"nodeType":"IdentifierPath","referencedDeclaration":44235,"src":"1099:24:2"},"id":508,"nodeType":"InheritanceSpecifier","src":"1099:24:2"},{"baseName":{"id":509,"name":"UUPSUpgradeable","nameLocations":["1129:15:2"],"nodeType":"IdentifierPath","referencedDeclaration":44671,"src":"1129:15:2"},"id":510,"nodeType":"InheritanceSpecifier","src":"1129:15:2"},{"baseName":{"id":511,"name":"IGatewayEVM","nameLocations":["1150:11:2"],"nodeType":"IdentifierPath","referencedDeclaration":2415,"src":"1150:11:2"},"id":512,"nodeType":"InheritanceSpecifier","src":"1150:11:2"},{"baseName":{"id":513,"name":"ReentrancyGuardUpgradeable","nameLocations":["1167:26:2"],"nodeType":"IdentifierPath","referencedDeclaration":45022,"src":"1167:26:2"},"id":514,"nodeType":"InheritanceSpecifier","src":"1167:26:2"},{"baseName":{"id":515,"name":"PausableUpgradeable","nameLocations":["1199:19:2"],"nodeType":"IdentifierPath","referencedDeclaration":44893,"src":"1199:19:2"},"id":516,"nodeType":"InheritanceSpecifier","src":"1199:19:2"}],"canonicalName":"GatewayEVM","contractDependencies":[],"contractKind":"contract","documentation":{"id":504,"nodeType":"StructuredDocumentation","src":"849:204:2","text":"@title GatewayEVM\n @notice The GatewayEVM contract is the endpoint to call smart contracts on external chains.\n @dev The contract doesn't hold any funds and should never have active allowances."},"fullyImplemented":true,"linearizedBaseContracts":[1448,44893,45022,2415,2273,2302,44671,45620,44235,45062,48334,45441,44717,44489],"name":"GatewayEVM","nameLocation":"1062:10:2","scope":1449,"usedErrors":[2277,2280,2283,2286,2289,2292,2295,2298,2301,44252,44255,44516,44521,44756,44759,44924,45368,45371,45830,45843,47191,47472,47477,47480],"usedEvents":[2219,2233,2244,2260,2272,44260,44748,44753,45380,45389,45398,45809]}],"license":"MIT"},"id":2} \ No newline at end of file diff --git a/packages/client/src/abi/GatewayZEVM.sol/GatewayZEVM.json b/packages/client/src/abi/GatewayZEVM.sol/GatewayZEVM.json deleted file mode 100644 index 13e05ecb..00000000 --- a/packages/client/src/abi/GatewayZEVM.sol/GatewayZEVM.json +++ /dev/null @@ -1 +0,0 @@ -{"abi":[{"type":"constructor","inputs":[],"stateMutability":"nonpayable"},{"type":"receive","stateMutability":"payable"},{"type":"function","name":"DEFAULT_ADMIN_ROLE","inputs":[],"outputs":[{"name":"","type":"bytes32","internalType":"bytes32"}],"stateMutability":"view"},{"type":"function","name":"FUNGIBLE_MODULE_ADDRESS","inputs":[],"outputs":[{"name":"","type":"address","internalType":"address"}],"stateMutability":"view"},{"type":"function","name":"PAUSER_ROLE","inputs":[],"outputs":[{"name":"","type":"bytes32","internalType":"bytes32"}],"stateMutability":"view"},{"type":"function","name":"UPGRADE_INTERFACE_VERSION","inputs":[],"outputs":[{"name":"","type":"string","internalType":"string"}],"stateMutability":"view"},{"type":"function","name":"call","inputs":[{"name":"receiver","type":"bytes","internalType":"bytes"},{"name":"zrc20","type":"address","internalType":"address"},{"name":"message","type":"bytes","internalType":"bytes"},{"name":"gasLimit","type":"uint256","internalType":"uint256"},{"name":"revertOptions","type":"tuple","internalType":"struct RevertOptions","components":[{"name":"revertAddress","type":"address","internalType":"address"},{"name":"callOnRevert","type":"bool","internalType":"bool"},{"name":"abortAddress","type":"address","internalType":"address"},{"name":"revertMessage","type":"bytes","internalType":"bytes"},{"name":"onRevertGasLimit","type":"uint256","internalType":"uint256"}]}],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"deposit","inputs":[{"name":"zrc20","type":"address","internalType":"address"},{"name":"amount","type":"uint256","internalType":"uint256"},{"name":"target","type":"address","internalType":"address"}],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"depositAndCall","inputs":[{"name":"context","type":"tuple","internalType":"struct zContext","components":[{"name":"origin","type":"bytes","internalType":"bytes"},{"name":"sender","type":"address","internalType":"address"},{"name":"chainID","type":"uint256","internalType":"uint256"}]},{"name":"amount","type":"uint256","internalType":"uint256"},{"name":"target","type":"address","internalType":"address"},{"name":"message","type":"bytes","internalType":"bytes"}],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"depositAndCall","inputs":[{"name":"context","type":"tuple","internalType":"struct zContext","components":[{"name":"origin","type":"bytes","internalType":"bytes"},{"name":"sender","type":"address","internalType":"address"},{"name":"chainID","type":"uint256","internalType":"uint256"}]},{"name":"zrc20","type":"address","internalType":"address"},{"name":"amount","type":"uint256","internalType":"uint256"},{"name":"target","type":"address","internalType":"address"},{"name":"message","type":"bytes","internalType":"bytes"}],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"depositAndRevert","inputs":[{"name":"zrc20","type":"address","internalType":"address"},{"name":"amount","type":"uint256","internalType":"uint256"},{"name":"target","type":"address","internalType":"address"},{"name":"revertContext","type":"tuple","internalType":"struct RevertContext","components":[{"name":"asset","type":"address","internalType":"address"},{"name":"amount","type":"uint64","internalType":"uint64"},{"name":"revertMessage","type":"bytes","internalType":"bytes"}]}],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"execute","inputs":[{"name":"context","type":"tuple","internalType":"struct zContext","components":[{"name":"origin","type":"bytes","internalType":"bytes"},{"name":"sender","type":"address","internalType":"address"},{"name":"chainID","type":"uint256","internalType":"uint256"}]},{"name":"zrc20","type":"address","internalType":"address"},{"name":"amount","type":"uint256","internalType":"uint256"},{"name":"target","type":"address","internalType":"address"},{"name":"message","type":"bytes","internalType":"bytes"}],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"executeRevert","inputs":[{"name":"target","type":"address","internalType":"address"},{"name":"revertContext","type":"tuple","internalType":"struct RevertContext","components":[{"name":"asset","type":"address","internalType":"address"},{"name":"amount","type":"uint64","internalType":"uint64"},{"name":"revertMessage","type":"bytes","internalType":"bytes"}]}],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"getRoleAdmin","inputs":[{"name":"role","type":"bytes32","internalType":"bytes32"}],"outputs":[{"name":"","type":"bytes32","internalType":"bytes32"}],"stateMutability":"view"},{"type":"function","name":"grantRole","inputs":[{"name":"role","type":"bytes32","internalType":"bytes32"},{"name":"account","type":"address","internalType":"address"}],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"hasRole","inputs":[{"name":"role","type":"bytes32","internalType":"bytes32"},{"name":"account","type":"address","internalType":"address"}],"outputs":[{"name":"","type":"bool","internalType":"bool"}],"stateMutability":"view"},{"type":"function","name":"initialize","inputs":[{"name":"zetaToken_","type":"address","internalType":"address"},{"name":"admin_","type":"address","internalType":"address"}],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"pause","inputs":[],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"paused","inputs":[],"outputs":[{"name":"","type":"bool","internalType":"bool"}],"stateMutability":"view"},{"type":"function","name":"proxiableUUID","inputs":[],"outputs":[{"name":"","type":"bytes32","internalType":"bytes32"}],"stateMutability":"view"},{"type":"function","name":"renounceRole","inputs":[{"name":"role","type":"bytes32","internalType":"bytes32"},{"name":"callerConfirmation","type":"address","internalType":"address"}],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"revokeRole","inputs":[{"name":"role","type":"bytes32","internalType":"bytes32"},{"name":"account","type":"address","internalType":"address"}],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"supportsInterface","inputs":[{"name":"interfaceId","type":"bytes4","internalType":"bytes4"}],"outputs":[{"name":"","type":"bool","internalType":"bool"}],"stateMutability":"view"},{"type":"function","name":"unpause","inputs":[],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"upgradeToAndCall","inputs":[{"name":"newImplementation","type":"address","internalType":"address"},{"name":"data","type":"bytes","internalType":"bytes"}],"outputs":[],"stateMutability":"payable"},{"type":"function","name":"withdraw","inputs":[{"name":"receiver","type":"bytes","internalType":"bytes"},{"name":"amount","type":"uint256","internalType":"uint256"},{"name":"zrc20","type":"address","internalType":"address"},{"name":"revertOptions","type":"tuple","internalType":"struct RevertOptions","components":[{"name":"revertAddress","type":"address","internalType":"address"},{"name":"callOnRevert","type":"bool","internalType":"bool"},{"name":"abortAddress","type":"address","internalType":"address"},{"name":"revertMessage","type":"bytes","internalType":"bytes"},{"name":"onRevertGasLimit","type":"uint256","internalType":"uint256"}]}],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"withdraw","inputs":[{"name":"receiver","type":"bytes","internalType":"bytes"},{"name":"amount","type":"uint256","internalType":"uint256"},{"name":"chainId","type":"uint256","internalType":"uint256"},{"name":"revertOptions","type":"tuple","internalType":"struct RevertOptions","components":[{"name":"revertAddress","type":"address","internalType":"address"},{"name":"callOnRevert","type":"bool","internalType":"bool"},{"name":"abortAddress","type":"address","internalType":"address"},{"name":"revertMessage","type":"bytes","internalType":"bytes"},{"name":"onRevertGasLimit","type":"uint256","internalType":"uint256"}]}],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"withdrawAndCall","inputs":[{"name":"receiver","type":"bytes","internalType":"bytes"},{"name":"amount","type":"uint256","internalType":"uint256"},{"name":"zrc20","type":"address","internalType":"address"},{"name":"message","type":"bytes","internalType":"bytes"},{"name":"gasLimit","type":"uint256","internalType":"uint256"},{"name":"revertOptions","type":"tuple","internalType":"struct RevertOptions","components":[{"name":"revertAddress","type":"address","internalType":"address"},{"name":"callOnRevert","type":"bool","internalType":"bool"},{"name":"abortAddress","type":"address","internalType":"address"},{"name":"revertMessage","type":"bytes","internalType":"bytes"},{"name":"onRevertGasLimit","type":"uint256","internalType":"uint256"}]}],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"withdrawAndCall","inputs":[{"name":"receiver","type":"bytes","internalType":"bytes"},{"name":"amount","type":"uint256","internalType":"uint256"},{"name":"chainId","type":"uint256","internalType":"uint256"},{"name":"message","type":"bytes","internalType":"bytes"},{"name":"revertOptions","type":"tuple","internalType":"struct RevertOptions","components":[{"name":"revertAddress","type":"address","internalType":"address"},{"name":"callOnRevert","type":"bool","internalType":"bool"},{"name":"abortAddress","type":"address","internalType":"address"},{"name":"revertMessage","type":"bytes","internalType":"bytes"},{"name":"onRevertGasLimit","type":"uint256","internalType":"uint256"}]}],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"zetaToken","inputs":[],"outputs":[{"name":"","type":"address","internalType":"address"}],"stateMutability":"view"},{"type":"event","name":"Called","inputs":[{"name":"sender","type":"address","indexed":true,"internalType":"address"},{"name":"zrc20","type":"address","indexed":true,"internalType":"address"},{"name":"receiver","type":"bytes","indexed":false,"internalType":"bytes"},{"name":"message","type":"bytes","indexed":false,"internalType":"bytes"},{"name":"gasLimit","type":"uint256","indexed":false,"internalType":"uint256"},{"name":"revertOptions","type":"tuple","indexed":false,"internalType":"struct RevertOptions","components":[{"name":"revertAddress","type":"address","internalType":"address"},{"name":"callOnRevert","type":"bool","internalType":"bool"},{"name":"abortAddress","type":"address","internalType":"address"},{"name":"revertMessage","type":"bytes","internalType":"bytes"},{"name":"onRevertGasLimit","type":"uint256","internalType":"uint256"}]}],"anonymous":false},{"type":"event","name":"Initialized","inputs":[{"name":"version","type":"uint64","indexed":false,"internalType":"uint64"}],"anonymous":false},{"type":"event","name":"Paused","inputs":[{"name":"account","type":"address","indexed":false,"internalType":"address"}],"anonymous":false},{"type":"event","name":"RoleAdminChanged","inputs":[{"name":"role","type":"bytes32","indexed":true,"internalType":"bytes32"},{"name":"previousAdminRole","type":"bytes32","indexed":true,"internalType":"bytes32"},{"name":"newAdminRole","type":"bytes32","indexed":true,"internalType":"bytes32"}],"anonymous":false},{"type":"event","name":"RoleGranted","inputs":[{"name":"role","type":"bytes32","indexed":true,"internalType":"bytes32"},{"name":"account","type":"address","indexed":true,"internalType":"address"},{"name":"sender","type":"address","indexed":true,"internalType":"address"}],"anonymous":false},{"type":"event","name":"RoleRevoked","inputs":[{"name":"role","type":"bytes32","indexed":true,"internalType":"bytes32"},{"name":"account","type":"address","indexed":true,"internalType":"address"},{"name":"sender","type":"address","indexed":true,"internalType":"address"}],"anonymous":false},{"type":"event","name":"Unpaused","inputs":[{"name":"account","type":"address","indexed":false,"internalType":"address"}],"anonymous":false},{"type":"event","name":"Upgraded","inputs":[{"name":"implementation","type":"address","indexed":true,"internalType":"address"}],"anonymous":false},{"type":"event","name":"Withdrawn","inputs":[{"name":"sender","type":"address","indexed":true,"internalType":"address"},{"name":"chainId","type":"uint256","indexed":true,"internalType":"uint256"},{"name":"receiver","type":"bytes","indexed":false,"internalType":"bytes"},{"name":"zrc20","type":"address","indexed":false,"internalType":"address"},{"name":"value","type":"uint256","indexed":false,"internalType":"uint256"},{"name":"gasfee","type":"uint256","indexed":false,"internalType":"uint256"},{"name":"protocolFlatFee","type":"uint256","indexed":false,"internalType":"uint256"},{"name":"message","type":"bytes","indexed":false,"internalType":"bytes"},{"name":"gasLimit","type":"uint256","indexed":false,"internalType":"uint256"},{"name":"revertOptions","type":"tuple","indexed":false,"internalType":"struct RevertOptions","components":[{"name":"revertAddress","type":"address","internalType":"address"},{"name":"callOnRevert","type":"bool","internalType":"bool"},{"name":"abortAddress","type":"address","internalType":"address"},{"name":"revertMessage","type":"bytes","internalType":"bytes"},{"name":"onRevertGasLimit","type":"uint256","internalType":"uint256"}]}],"anonymous":false},{"type":"error","name":"AccessControlBadConfirmation","inputs":[]},{"type":"error","name":"AccessControlUnauthorizedAccount","inputs":[{"name":"account","type":"address","internalType":"address"},{"name":"neededRole","type":"bytes32","internalType":"bytes32"}]},{"type":"error","name":"AddressEmptyCode","inputs":[{"name":"target","type":"address","internalType":"address"}]},{"type":"error","name":"CallerIsNotFungibleModule","inputs":[]},{"type":"error","name":"ERC1967InvalidImplementation","inputs":[{"name":"implementation","type":"address","internalType":"address"}]},{"type":"error","name":"ERC1967NonPayable","inputs":[]},{"type":"error","name":"EmptyMessage","inputs":[]},{"type":"error","name":"EnforcedPause","inputs":[]},{"type":"error","name":"ExpectedPause","inputs":[]},{"type":"error","name":"FailedInnerCall","inputs":[]},{"type":"error","name":"FailedZetaSent","inputs":[]},{"type":"error","name":"GasFeeTransferFailed","inputs":[]},{"type":"error","name":"InsufficientZRC20Amount","inputs":[]},{"type":"error","name":"InsufficientZetaAmount","inputs":[]},{"type":"error","name":"InvalidInitialization","inputs":[]},{"type":"error","name":"InvalidTarget","inputs":[]},{"type":"error","name":"NotInitializing","inputs":[]},{"type":"error","name":"OnlyWZETAOrFungible","inputs":[]},{"type":"error","name":"ReentrancyGuardReentrantCall","inputs":[]},{"type":"error","name":"UUPSUnauthorizedCallContext","inputs":[]},{"type":"error","name":"UUPSUnsupportedProxiableUUID","inputs":[{"name":"slot","type":"bytes32","internalType":"bytes32"}]},{"type":"error","name":"WithdrawalFailed","inputs":[]},{"type":"error","name":"ZRC20BurnFailed","inputs":[]},{"type":"error","name":"ZRC20DepositFailed","inputs":[]},{"type":"error","name":"ZRC20TransferFailed","inputs":[]},{"type":"error","name":"ZeroAddress","inputs":[]}],"bytecode":{"object":"0x60a06040523060805234801561001457600080fd5b5061001d610022565b6100d4565b7ff0c57e16840df040f15088dc2f81fe391c3923bec73e23a9662efc9c229c6a00805468010000000000000000900460ff16156100725760405163f92ee8a960e01b815260040160405180910390fd5b80546001600160401b03908116146100d15780546001600160401b0319166001600160401b0390811782556040519081527fc7f505b2f371ae2175ee4913f4499e1f2633a7b5936321eed1cdaeb6115181d29060200160405180910390a15b50565b60805161393d6100fd600039600081816125ef0152818161261801526127ee015261393d6000f3fe6080604052600436106101bb5760003560e01c806352d1902d116100ec578063a217fddf1161008a578063c39aca3711610064578063c39aca3714610600578063d547741f14610620578063e63ab1e914610640578063f45346dc1461067457600080fd5b8063a217fddf14610575578063ad3cb1cc1461058a578063bcf7f32b146105e057600080fd5b80637c0dcb5f116100c65780637c0dcb5f146104bb5780638456cb59146104db57806391d14854146104f057806397a1cef11461055557600080fd5b806352d1902d1461044f5780635c975abb14610464578063717d335f1461049b57600080fd5b80632f2ff15d116101595780633ce4a5bc116101335780633ce4a5bc146103df5780633f4ba83a14610407578063485cc9551461041c5780634f1ef2861461043c57600080fd5b80632f2ff15d1461037f57806336568abe1461039f5780633b283933146103bf57600080fd5b80631cb5ea75116101955780631cb5ea75146102aa57806321501a95146102ca57806321e093b1146102ea578063248a9ca31461032257600080fd5b806301ffc9a7146102355780630310eb761461026a578063048ae42c1461028a57600080fd5b36610230576101c8610694565b6000546001600160a01b031633148015906101f757503373735b14bb79463307aacbed86daf3322b1e6226ab14155b1561022e576040517f229930b200000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b005b600080fd5b34801561024157600080fd5b50610255610250366004612d37565b6106f2565b60405190151581526020015b60405180910390f35b34801561027657600080fd5b5061022e610285366004612da6565b61078b565b34801561029657600080fd5b5061022e6102a5366004612f68565b610a17565b3480156102b657600080fd5b5061022e6102c5366004613028565b610b92565b3480156102d657600080fd5b5061022e6102e53660046130dd565b610e03565b3480156102f657600080fd5b5060005461030a906001600160a01b031681565b6040516001600160a01b039091168152602001610261565b34801561032e57600080fd5b5061037161033d366004613169565b60009081527f02dd7bc7dec4dceedda775e58dd541e08a116c6c53815c0bd028192f7b626800602052604090206001015490565b604051908152602001610261565b34801561038b57600080fd5b5061022e61039a366004613182565b610fd0565b3480156103ab57600080fd5b5061022e6103ba366004613182565b61101a565b3480156103cb57600080fd5b5061022e6103da3660046131b2565b61106b565b3480156103eb57600080fd5b5061030a73735b14bb79463307aacbed86daf3322b1e6226ab81565b34801561041357600080fd5b5061022e61118e565b34801561042857600080fd5b5061022e610437366004613245565b6111c3565b61022e61044a366004613273565b611418565b34801561045b57600080fd5b50610371611437565b34801561047057600080fd5b507fcd5ed15c6e187e77e9aee88184c21f4f2182ab5827cb3b7e07fbedcd63f033005460ff16610255565b3480156104a757600080fd5b5061022e6104b63660046132c3565b611466565b3480156104c757600080fd5b5061022e6104d6366004613309565b61156e565b3480156104e757600080fd5b5061022e61173c565b3480156104fc57600080fd5b5061025561050b366004613182565b60009182527f02dd7bc7dec4dceedda775e58dd541e08a116c6c53815c0bd028192f7b626800602090815260408084206001600160a01b0393909316845291905290205460ff1690565b34801561056157600080fd5b5061022e610570366004613382565b61176e565b34801561058157600080fd5b50610371600081565b34801561059657600080fd5b506105d36040518060400160405280600581526020017f352e302e3000000000000000000000000000000000000000000000000000000081525081565b6040516102619190613454565b3480156105ec57600080fd5b5061022e6105fb366004613467565b61188d565b34801561060c57600080fd5b5061022e61061b366004613467565b6119bd565b34801561062c57600080fd5b5061022e61063b366004613182565b611bcc565b34801561064c57600080fd5b506103717f65d7a28e3265b37a6474929f336521b332c1681b933f6cb9f3376673440d862a81565b34801561068057600080fd5b5061022e61068f366004613505565b611c10565b7fcd5ed15c6e187e77e9aee88184c21f4f2182ab5827cb3b7e07fbedcd63f033005460ff16156106f0576040517fd93c066500000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b565b60007fffffffff0000000000000000000000000000000000000000000000000000000082167f7965db0b00000000000000000000000000000000000000000000000000000000148061078557507f01ffc9a7000000000000000000000000000000000000000000000000000000007fffffffff000000000000000000000000000000000000000000000000000000008316145b92915050565b3373735b14bb79463307aacbed86daf3322b1e6226ab146107d8576040517f2b2add3d00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6107e0610694565b6001600160a01b03841615806107fd57506001600160a01b038216155b15610834576040517fd92e233d00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b8260000361086e576040517f5d67094f00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6001600160a01b03821673735b14bb79463307aacbed86daf3322b1e6226ab14806108a157506001600160a01b03821630145b156108d8576040517f82d5d76a00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6040517f47e7ef240000000000000000000000000000000000000000000000000000000081526001600160a01b038381166004830152602482018590528516906347e7ef24906044016020604051808303816000875af1158015610940573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906109649190613555565b61099a576040517f47d19fab00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6040517f660b9de00000000000000000000000000000000000000000000000000000000081526001600160a01b0383169063660b9de0906109df90849060040161361f565b600060405180830381600087803b1580156109f957600080fd5b505af1158015610a0d573d6000803e3d6000fd5b5050505050505050565b610a1f611e1f565b610a27610694565b8651600003610a62576040517fd92e233d00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b85600003610a9c576040517f5d67094f00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6000610aa9878785611ea0565b90506000336001600160a01b03167fda1215b0949ddb309fe466fa9e70e861a16538f11b8ecdb05c217d4d8677ed2d8a898b868c6001600160a01b0316634d8943bb6040518163ffffffff1660e01b8152600401602060405180830381865afa158015610b1a573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610b3e9190613685565b8c8c8c8c604051610b579998979695949392919061371f565b60405180910390a350610b8960017f9b779b17422d0df92223018b32b4d1fa46e071723d6817e2486d003becc55f0055565b50505050505050565b610b9a611e1f565b610ba2610694565b8551600003610bdd576040517fd92e233d00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6000839003610c18576040517fbb1b658000000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6040517ffc5fecd50000000000000000000000000000000000000000000000000000000081526004810183905260009081906001600160a01b0388169063fc5fecd5906024016040805180830381865afa158015610c7a573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610c9e9190613792565b6040517f23b872dd00000000000000000000000000000000000000000000000000000000815233600482015273735b14bb79463307aacbed86daf3322b1e6226ab60248201526044810182905291935091506001600160a01b038316906323b872dd906064016020604051808303816000875af1158015610d23573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610d479190613555565b610d7d576040517f0a7cd6d600000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b866001600160a01b0316336001600160a01b03167f6c6abd640fc6a0ef7cf2bc54b246b42d5c2629c30be1e24fea4a58157a7728cf8a89898989604051610dc89594939291906137c0565b60405180910390a35050610dfb60017f9b779b17422d0df92223018b32b4d1fa46e071723d6817e2486d003becc55f0055565b505050505050565b3373735b14bb79463307aacbed86daf3322b1e6226ab14610e50576040517f2b2add3d00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b610e58610694565b6001600160a01b038316610e98576040517fd92e233d00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b83600003610ed2576040517f19c08f4900000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6001600160a01b03831673735b14bb79463307aacbed86daf3322b1e6226ab1480610f0557506001600160a01b03831630145b15610f3c576040517f82d5d76a00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b610f4684846121a3565b6000546040517fde43156e0000000000000000000000000000000000000000000000000000000081526001600160a01b038086169263de43156e92610f97928a92169089908890889060040161380c565b600060405180830381600087803b158015610fb157600080fd5b505af1158015610fc5573d6000803e3d6000fd5b505050505050505050565b60008281527f02dd7bc7dec4dceedda775e58dd541e08a116c6c53815c0bd028192f7b626800602052604090206001015461100a81612371565b611014838361237b565b50505050565b6001600160a01b038116331461105c576040517f6697b23200000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6110668282612468565b505050565b611073611e1f565b61107b610694565b85516000036110b6576040517fd92e233d00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b846000036110f0576040517f19c08f4900000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b61110e8573735b14bb79463307aacbed86daf3322b1e6226ab6121a3565b60008054604051869233927fda1215b0949ddb309fe466fa9e70e861a16538f11b8ecdb05c217d4d8677ed2d9261115d928c926001600160a01b0316918c919081908c908c9083908d9061371f565b60405180910390a3610dfb60017f9b779b17422d0df92223018b32b4d1fa46e071723d6817e2486d003becc55f0055565b7f65d7a28e3265b37a6474929f336521b332c1681b933f6cb9f3376673440d862a6111b881612371565b6111c061252c565b50565b7ff0c57e16840df040f15088dc2f81fe391c3923bec73e23a9662efc9c229c6a00805468010000000000000000810460ff16159067ffffffffffffffff1660008115801561120e5750825b905060008267ffffffffffffffff16600114801561122b5750303b155b905081158015611239575080155b15611270576040517ff92ee8a900000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b84547fffffffffffffffffffffffffffffffffffffffffffffffff000000000000000016600117855583156112d15784547fffffffffffffffffffffffffffffffffffffffffffffff00ffffffffffffffff16680100000000000000001785555b6001600160a01b03871615806112ee57506001600160a01b038616155b15611325576040517fd92e233d00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b61132d6125bc565b6113356125bc565b61133d6125c4565b6113456125d4565b61135060008761237b565b5061137b7f65d7a28e3265b37a6474929f336521b332c1681b933f6cb9f3376673440d862a8761237b565b50600080547fffffffffffffffffffffffff0000000000000000000000000000000000000000166001600160a01b0389161790558315610b895784547fffffffffffffffffffffffffffffffffffffffffffffff00ffffffffffffffff168555604051600181527fc7f505b2f371ae2175ee4913f4499e1f2633a7b5936321eed1cdaeb6115181d29060200160405180910390a150505050505050565b6114206125e4565b611429826126b4565b61143382826126bf565b5050565b60006114416127e3565b507f360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc90565b3373735b14bb79463307aacbed86daf3322b1e6226ab146114b3576040517f2b2add3d00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6114bb610694565b6001600160a01b0382166114fb576040517fd92e233d00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6040517f660b9de00000000000000000000000000000000000000000000000000000000081526001600160a01b0383169063660b9de09061154090849060040161361f565b600060405180830381600087803b15801561155a57600080fd5b505af1158015610dfb573d6000803e3d6000fd5b611576611e1f565b61157e610694565b83516000036115b9576040517fd92e233d00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b826000036115f3576040517f5d67094f00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b60006115ff8484612845565b90506000336001600160a01b03167fda1215b0949ddb309fe466fa9e70e861a16538f11b8ecdb05c217d4d8677ed2d87868886896001600160a01b0316634d8943bb6040518163ffffffff1660e01b8152600401602060405180830381865afa158015611670573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906116949190613685565b8a6001600160a01b031663091d27886040518163ffffffff1660e01b8152600401602060405180830381865afa1580156116d2573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906116f69190613685565b8a60405161170a979695949392919061387d565b60405180910390a35061101460017f9b779b17422d0df92223018b32b4d1fa46e071723d6817e2486d003becc55f0055565b7f65d7a28e3265b37a6474929f336521b332c1681b933f6cb9f3376673440d862a61176681612371565b6111c06128b3565b611776611e1f565b61177e610694565b83516000036117b9576040517fd92e233d00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b826000036117f3576040517f19c08f4900000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6118118373735b14bb79463307aacbed86daf3322b1e6226ab6121a3565b60008054604051849233927fda1215b0949ddb309fe466fa9e70e861a16538f11b8ecdb05c217d4d8677ed2d9261185c928a926001600160a01b0316918a9190819081908b9061387d565b60405180910390a361101460017f9b779b17422d0df92223018b32b4d1fa46e071723d6817e2486d003becc55f0055565b3373735b14bb79463307aacbed86daf3322b1e6226ab146118da576040517f2b2add3d00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6118e2610694565b6001600160a01b03851615806118ff57506001600160a01b038316155b15611936576040517fd92e233d00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6040517fde43156e0000000000000000000000000000000000000000000000000000000081526001600160a01b0384169063de43156e90611983908990899089908890889060040161380c565b600060405180830381600087803b15801561199d57600080fd5b505af11580156119b1573d6000803e3d6000fd5b50505050505050505050565b3373735b14bb79463307aacbed86daf3322b1e6226ab14611a0a576040517f2b2add3d00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b611a12610694565b6001600160a01b0385161580611a2f57506001600160a01b038316155b15611a66576040517fd92e233d00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b83600003611aa0576040517f5d67094f00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6001600160a01b03831673735b14bb79463307aacbed86daf3322b1e6226ab1480611ad357506001600160a01b03831630145b15611b0a576040517f82d5d76a00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6040517f47e7ef240000000000000000000000000000000000000000000000000000000081526001600160a01b038481166004830152602482018690528616906347e7ef24906044016020604051808303816000875af1158015611b72573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611b969190613555565b611936576040517f47d19fab00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b60008281527f02dd7bc7dec4dceedda775e58dd541e08a116c6c53815c0bd028192f7b6268006020526040902060010154611c0681612371565b6110148383612468565b3373735b14bb79463307aacbed86daf3322b1e6226ab14611c5d576040517f2b2add3d00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b611c65610694565b6001600160a01b0383161580611c8257506001600160a01b038116155b15611cb9576040517fd92e233d00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b81600003611cf3576040517f5d67094f00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6001600160a01b03811673735b14bb79463307aacbed86daf3322b1e6226ab1480611d2657506001600160a01b03811630145b15611d5d576040517f82d5d76a00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6040517f47e7ef240000000000000000000000000000000000000000000000000000000081526001600160a01b038281166004830152602482018490528416906347e7ef24906044016020604051808303816000875af1158015611dc5573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611de99190613555565b611066576040517f47d19fab00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b7f9b779b17422d0df92223018b32b4d1fa46e071723d6817e2486d003becc55f0080547ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe01611e9a576040517f3ee5aeb500000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b60029055565b6000806000846001600160a01b031663fc5fecd5856040518263ffffffff1660e01b8152600401611ed391815260200190565b6040805180830381865afa158015611eef573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611f139190613792565b6040517f23b872dd00000000000000000000000000000000000000000000000000000000815233600482015273735b14bb79463307aacbed86daf3322b1e6226ab60248201526044810182905291935091506001600160a01b038316906323b872dd906064016020604051808303816000875af1158015611f98573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611fbc9190613555565b611ff2576040517f0a7cd6d600000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6040517f23b872dd000000000000000000000000000000000000000000000000000000008152336004820152306024820152604481018790526001600160a01b038616906323b872dd906064016020604051808303816000875af115801561205e573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906120829190613555565b6120b8576040517f4dd9ee8d00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6040517f42966c68000000000000000000000000000000000000000000000000000000008152600481018790526001600160a01b038616906342966c68906024016020604051808303816000875af1158015612118573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061213c9190613555565b612172576040517f2c77e05c00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b9150505b9392505050565b60017f9b779b17422d0df92223018b32b4d1fa46e071723d6817e2486d003becc55f0055565b6000546040517f23b872dd000000000000000000000000000000000000000000000000000000008152336004820152306024820152604481018490526001600160a01b03909116906323b872dd906064016020604051808303816000875af1158015612213573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906122379190613555565b61226d576040517fc7ffc47b00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6000546040517f2e1a7d4d000000000000000000000000000000000000000000000000000000008152600481018490526001600160a01b0390911690632e1a7d4d90602401600060405180830381600087803b1580156122cc57600080fd5b505af11580156122e0573d6000803e3d6000fd5b505050506000816001600160a01b03168360405160006040518083038185875af1925050503d8060008114612331576040519150601f19603f3d011682016040523d82523d6000602084013e612336565b606091505b5050905080611066576040517fc7ffc47b00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6111c0813361292c565b60008281527f02dd7bc7dec4dceedda775e58dd541e08a116c6c53815c0bd028192f7b626800602081815260408084206001600160a01b038616855290915282205460ff1661245e576000848152602082815260408083206001600160a01b0387168452909152902080547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff001660011790556124143390565b6001600160a01b0316836001600160a01b0316857f2f8788117e7eff1d82e926ec794901d17c78024a50270940304540a733656f0d60405160405180910390a46001915050610785565b6000915050610785565b60008281527f02dd7bc7dec4dceedda775e58dd541e08a116c6c53815c0bd028192f7b626800602081815260408084206001600160a01b038616855290915282205460ff161561245e576000848152602082815260408083206001600160a01b038716808552925280832080547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0016905551339287917ff6391f5c32d9c69d2a47ea670b442974b53935d1edc7fd64eb21e047a839171b9190a46001915050610785565b6125346129b9565b7fcd5ed15c6e187e77e9aee88184c21f4f2182ab5827cb3b7e07fbedcd63f0330080547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff001681557f5db9ee0a495bf2e6ff9c91a7834c1ba4fdd244a5e8aa4e537bd38aeae4b073aa335b6040516001600160a01b03909116815260200160405180910390a150565b6106f0612a14565b6125cc612a14565b6106f0612a7b565b6125dc612a14565b6106f0612acc565b306001600160a01b037f000000000000000000000000000000000000000000000000000000000000000016148061267d57507f00000000000000000000000000000000000000000000000000000000000000006001600160a01b03166126717f360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc546001600160a01b031690565b6001600160a01b031614155b156106f0576040517fe07c8dba00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b600061143381612371565b816001600160a01b03166352d1902d6040518163ffffffff1660e01b8152600401602060405180830381865afa925050508015612737575060408051601f3d9081017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe016820190925261273491810190613685565b60015b61277d576040517f4c9c8ce30000000000000000000000000000000000000000000000000000000081526001600160a01b03831660048201526024015b60405180910390fd5b7f360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc81146127d9576040517faa1d49a400000000000000000000000000000000000000000000000000000000815260048101829052602401612774565b6110668383612ad4565b306001600160a01b037f000000000000000000000000000000000000000000000000000000000000000016146106f0576040517fe07c8dba00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b60006121768383846001600160a01b031663091d27886040518163ffffffff1660e01b8152600401602060405180830381865afa15801561288a573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906128ae9190613685565b611ea0565b6128bb610694565b7fcd5ed15c6e187e77e9aee88184c21f4f2182ab5827cb3b7e07fbedcd63f0330080547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff001660011781557f62e78cea01bee320cd4e420270b5ea74000d11b0c9f74754ebdbfc544b05a2583361259e565b60008281527f02dd7bc7dec4dceedda775e58dd541e08a116c6c53815c0bd028192f7b626800602090815260408083206001600160a01b038516845290915290205460ff16611433576040517fe2517d3f0000000000000000000000000000000000000000000000000000000081526001600160a01b038216600482015260248101839052604401612774565b7fcd5ed15c6e187e77e9aee88184c21f4f2182ab5827cb3b7e07fbedcd63f033005460ff166106f0576040517f8dfc202b00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b7ff0c57e16840df040f15088dc2f81fe391c3923bec73e23a9662efc9c229c6a005468010000000000000000900460ff166106f0576040517fd7e6bcf800000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b612a83612a14565b7fcd5ed15c6e187e77e9aee88184c21f4f2182ab5827cb3b7e07fbedcd63f0330080547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00169055565b61217d612a14565b612add82612b2a565b6040516001600160a01b038316907fbc7cd75a20ee27fd9adebab32041f755214dbc6bffa90cc0225b39da2e5c2d3b90600090a2805115612b22576110668282612bd2565b611433612c48565b806001600160a01b03163b600003612b79576040517f4c9c8ce30000000000000000000000000000000000000000000000000000000081526001600160a01b0382166004820152602401612774565b7f360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc80547fffffffffffffffffffffffff0000000000000000000000000000000000000000166001600160a01b0392909216919091179055565b6060600080846001600160a01b031684604051612bef91906138eb565b600060405180830381855af49150503d8060008114612c2a576040519150601f19603f3d011682016040523d82523d6000602084013e612c2f565b606091505b5091509150612c3f858383612c80565b95945050505050565b34156106f0576040517fb398979f00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b606082612c9557612c9082612cf5565b612176565b8151158015612cac57506001600160a01b0384163b155b15612cee576040517f9996b3150000000000000000000000000000000000000000000000000000000081526001600160a01b0385166004820152602401612774565b5080612176565b805115612d055780518082602001fd5b6040517f1425ea4200000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b600060208284031215612d4957600080fd5b81357fffffffff000000000000000000000000000000000000000000000000000000008116811461217657600080fd5b6001600160a01b03811681146111c057600080fd5b600060608284031215612da057600080fd5b50919050565b60008060008060808587031215612dbc57600080fd5b8435612dc781612d79565b9350602085013592506040850135612dde81612d79565b9150606085013567ffffffffffffffff811115612dfa57600080fd5b612e0687828801612d8e565b91505092959194509250565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b600082601f830112612e5257600080fd5b813567ffffffffffffffff811115612e6c57612e6c612e12565b6040517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0603f7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0601f8501160116810181811067ffffffffffffffff82111715612ed857612ed8612e12565b604052818152838201602001851015612ef057600080fd5b816020850160208301376000918101602001919091529392505050565b60008083601f840112612f1f57600080fd5b50813567ffffffffffffffff811115612f3757600080fd5b602083019150836020828501011115612f4f57600080fd5b9250929050565b600060a08284031215612da057600080fd5b600080600080600080600060c0888a031215612f8357600080fd5b873567ffffffffffffffff811115612f9a57600080fd5b612fa68a828b01612e41565b975050602088013595506040880135612fbe81612d79565b9450606088013567ffffffffffffffff811115612fda57600080fd5b612fe68a828b01612f0d565b9095509350506080880135915060a088013567ffffffffffffffff81111561300d57600080fd5b6130198a828b01612f56565b91505092959891949750929550565b60008060008060008060a0878903121561304157600080fd5b863567ffffffffffffffff81111561305857600080fd5b61306489828a01612e41565b965050602087013561307581612d79565b9450604087013567ffffffffffffffff81111561309157600080fd5b61309d89828a01612f0d565b90955093505060608701359150608087013567ffffffffffffffff8111156130c457600080fd5b6130d089828a01612f56565b9150509295509295509295565b6000806000806000608086880312156130f557600080fd5b853567ffffffffffffffff81111561310c57600080fd5b61311888828901612d8e565b95505060208601359350604086013561313081612d79565b9250606086013567ffffffffffffffff81111561314c57600080fd5b61315888828901612f0d565b969995985093965092949392505050565b60006020828403121561317b57600080fd5b5035919050565b6000806040838503121561319557600080fd5b8235915060208301356131a781612d79565b809150509250929050565b60008060008060008060a087890312156131cb57600080fd5b863567ffffffffffffffff8111156131e257600080fd5b6131ee89828a01612e41565b9650506020870135945060408701359350606087013567ffffffffffffffff81111561321957600080fd5b61322589828a01612f0d565b909450925050608087013567ffffffffffffffff8111156130c457600080fd5b6000806040838503121561325857600080fd5b823561326381612d79565b915060208301356131a781612d79565b6000806040838503121561328657600080fd5b823561329181612d79565b9150602083013567ffffffffffffffff8111156132ad57600080fd5b6132b985828601612e41565b9150509250929050565b600080604083850312156132d657600080fd5b82356132e181612d79565b9150602083013567ffffffffffffffff8111156132fd57600080fd5b6132b985828601612d8e565b6000806000806080858703121561331f57600080fd5b843567ffffffffffffffff81111561333657600080fd5b61334287828801612e41565b94505060208501359250604085013561335a81612d79565b9150606085013567ffffffffffffffff81111561337657600080fd5b612e0687828801612f56565b6000806000806080858703121561339857600080fd5b843567ffffffffffffffff8111156133af57600080fd5b6133bb87828801612e41565b9450506020850135925060408501359150606085013567ffffffffffffffff81111561337657600080fd5b60005b838110156134015781810151838201526020016133e9565b50506000910152565b600081518084526134228160208601602086016133e6565b601f017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0169290920160200192915050565b602081526000612176602083018461340a565b60008060008060008060a0878903121561348057600080fd5b863567ffffffffffffffff81111561349757600080fd5b6134a389828a01612d8e565b96505060208701356134b481612d79565b94506040870135935060608701356134cb81612d79565b9250608087013567ffffffffffffffff8111156134e757600080fd5b6134f389828a01612f0d565b979a9699509497509295939492505050565b60008060006060848603121561351a57600080fd5b833561352581612d79565b925060208401359150604084013561353c81612d79565b809150509250925092565b80151581146111c057600080fd5b60006020828403121561356757600080fd5b815161217681613547565b60008083357fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe18436030181126135a757600080fd5b830160208101925035905067ffffffffffffffff8111156135c757600080fd5b803603821315612f4f57600080fd5b8183528181602085013750600060208284010152600060207fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0601f840116840101905092915050565b602081526000823561363081612d79565b6001600160a01b038116602084015250602083013567ffffffffffffffff811680821461365c57600080fd5b80604085015250506136716040840184613572565b606080850152612c3f6080850182846135d6565b60006020828403121561369757600080fd5b5051919050565b600081356136ab81612d79565b6001600160a01b0316835260208201356136c481613547565b1515602084015260408201356136d981612d79565b6001600160a01b031660408401526136f46060830183613572565b60a0606086015261370960a0860182846135d6565b6080948501359590940194909452509092915050565b6101008152600061373461010083018c61340a565b6001600160a01b038b16602084015289604084015288606084015287608084015282810360a08401526137688187896135d6565b90508460c084015282810360e0840152613782818561369e565b9c9b505050505050505050505050565b600080604083850312156137a557600080fd5b82516137b081612d79565b6020939093015192949293505050565b6080815260006137d3608083018861340a565b82810360208401526137e68187896135d6565b90508460408401528281036060840152613800818561369e565b98975050505050505050565b60808152600061381c8788613572565b6060608085015261383160e0850182846135d6565b915050602088013561384281612d79565b6001600160a01b0390811660a085015260408981013560c08601529088166020850152830186905282810360608401526138008185876135d6565b6101008152600061389261010083018a61340a565b6001600160a01b03891660208401528760408401528660608401528560808401528281038060a0850152600082528560c08501526020810160e0850152506138dd602082018561369e565b9a9950505050505050505050565b600082516138fd8184602087016133e6565b919091019291505056fea26469706673582212209729ede334f07afe016eab9b4d72c7ce168ef243ba933f0783bfed07e3f86edf64736f6c634300081a0033","sourceMap":"958:13493:10:-:0;;;1171:4:42;1128:48;;1851:53:10;;;;;;;;;-1:-1:-1;1875:22:10;:20;:22::i;:::-;958:13493;;7711:422:41;8870:21;7900:15;;;;;;;7896:76;;;7938:23;;-1:-1:-1;;;7938:23:41;;;;;;;;;;;7896:76;7985:14;;-1:-1:-1;;;;;7985:14:41;;;:34;7981:146;;8035:33;;-1:-1:-1;;;;;;8035:33:41;-1:-1:-1;;;;;8035:33:41;;;;;8087:29;;158:50:108;;;8087:29:41;;146:2:108;131:18;8087:29:41;;;;;;;7981:146;7760:373;7711:422::o;14:200:108:-;958:13493:10;;;;;;;;;;;;;;;;;;;;;;","linkReferences":{}},"deployedBytecode":{"object":"0x6080604052600436106101bb5760003560e01c806352d1902d116100ec578063a217fddf1161008a578063c39aca3711610064578063c39aca3714610600578063d547741f14610620578063e63ab1e914610640578063f45346dc1461067457600080fd5b8063a217fddf14610575578063ad3cb1cc1461058a578063bcf7f32b146105e057600080fd5b80637c0dcb5f116100c65780637c0dcb5f146104bb5780638456cb59146104db57806391d14854146104f057806397a1cef11461055557600080fd5b806352d1902d1461044f5780635c975abb14610464578063717d335f1461049b57600080fd5b80632f2ff15d116101595780633ce4a5bc116101335780633ce4a5bc146103df5780633f4ba83a14610407578063485cc9551461041c5780634f1ef2861461043c57600080fd5b80632f2ff15d1461037f57806336568abe1461039f5780633b283933146103bf57600080fd5b80631cb5ea75116101955780631cb5ea75146102aa57806321501a95146102ca57806321e093b1146102ea578063248a9ca31461032257600080fd5b806301ffc9a7146102355780630310eb761461026a578063048ae42c1461028a57600080fd5b36610230576101c8610694565b6000546001600160a01b031633148015906101f757503373735b14bb79463307aacbed86daf3322b1e6226ab14155b1561022e576040517f229930b200000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b005b600080fd5b34801561024157600080fd5b50610255610250366004612d37565b6106f2565b60405190151581526020015b60405180910390f35b34801561027657600080fd5b5061022e610285366004612da6565b61078b565b34801561029657600080fd5b5061022e6102a5366004612f68565b610a17565b3480156102b657600080fd5b5061022e6102c5366004613028565b610b92565b3480156102d657600080fd5b5061022e6102e53660046130dd565b610e03565b3480156102f657600080fd5b5060005461030a906001600160a01b031681565b6040516001600160a01b039091168152602001610261565b34801561032e57600080fd5b5061037161033d366004613169565b60009081527f02dd7bc7dec4dceedda775e58dd541e08a116c6c53815c0bd028192f7b626800602052604090206001015490565b604051908152602001610261565b34801561038b57600080fd5b5061022e61039a366004613182565b610fd0565b3480156103ab57600080fd5b5061022e6103ba366004613182565b61101a565b3480156103cb57600080fd5b5061022e6103da3660046131b2565b61106b565b3480156103eb57600080fd5b5061030a73735b14bb79463307aacbed86daf3322b1e6226ab81565b34801561041357600080fd5b5061022e61118e565b34801561042857600080fd5b5061022e610437366004613245565b6111c3565b61022e61044a366004613273565b611418565b34801561045b57600080fd5b50610371611437565b34801561047057600080fd5b507fcd5ed15c6e187e77e9aee88184c21f4f2182ab5827cb3b7e07fbedcd63f033005460ff16610255565b3480156104a757600080fd5b5061022e6104b63660046132c3565b611466565b3480156104c757600080fd5b5061022e6104d6366004613309565b61156e565b3480156104e757600080fd5b5061022e61173c565b3480156104fc57600080fd5b5061025561050b366004613182565b60009182527f02dd7bc7dec4dceedda775e58dd541e08a116c6c53815c0bd028192f7b626800602090815260408084206001600160a01b0393909316845291905290205460ff1690565b34801561056157600080fd5b5061022e610570366004613382565b61176e565b34801561058157600080fd5b50610371600081565b34801561059657600080fd5b506105d36040518060400160405280600581526020017f352e302e3000000000000000000000000000000000000000000000000000000081525081565b6040516102619190613454565b3480156105ec57600080fd5b5061022e6105fb366004613467565b61188d565b34801561060c57600080fd5b5061022e61061b366004613467565b6119bd565b34801561062c57600080fd5b5061022e61063b366004613182565b611bcc565b34801561064c57600080fd5b506103717f65d7a28e3265b37a6474929f336521b332c1681b933f6cb9f3376673440d862a81565b34801561068057600080fd5b5061022e61068f366004613505565b611c10565b7fcd5ed15c6e187e77e9aee88184c21f4f2182ab5827cb3b7e07fbedcd63f033005460ff16156106f0576040517fd93c066500000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b565b60007fffffffff0000000000000000000000000000000000000000000000000000000082167f7965db0b00000000000000000000000000000000000000000000000000000000148061078557507f01ffc9a7000000000000000000000000000000000000000000000000000000007fffffffff000000000000000000000000000000000000000000000000000000008316145b92915050565b3373735b14bb79463307aacbed86daf3322b1e6226ab146107d8576040517f2b2add3d00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6107e0610694565b6001600160a01b03841615806107fd57506001600160a01b038216155b15610834576040517fd92e233d00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b8260000361086e576040517f5d67094f00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6001600160a01b03821673735b14bb79463307aacbed86daf3322b1e6226ab14806108a157506001600160a01b03821630145b156108d8576040517f82d5d76a00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6040517f47e7ef240000000000000000000000000000000000000000000000000000000081526001600160a01b038381166004830152602482018590528516906347e7ef24906044016020604051808303816000875af1158015610940573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906109649190613555565b61099a576040517f47d19fab00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6040517f660b9de00000000000000000000000000000000000000000000000000000000081526001600160a01b0383169063660b9de0906109df90849060040161361f565b600060405180830381600087803b1580156109f957600080fd5b505af1158015610a0d573d6000803e3d6000fd5b5050505050505050565b610a1f611e1f565b610a27610694565b8651600003610a62576040517fd92e233d00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b85600003610a9c576040517f5d67094f00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6000610aa9878785611ea0565b90506000336001600160a01b03167fda1215b0949ddb309fe466fa9e70e861a16538f11b8ecdb05c217d4d8677ed2d8a898b868c6001600160a01b0316634d8943bb6040518163ffffffff1660e01b8152600401602060405180830381865afa158015610b1a573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610b3e9190613685565b8c8c8c8c604051610b579998979695949392919061371f565b60405180910390a350610b8960017f9b779b17422d0df92223018b32b4d1fa46e071723d6817e2486d003becc55f0055565b50505050505050565b610b9a611e1f565b610ba2610694565b8551600003610bdd576040517fd92e233d00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6000839003610c18576040517fbb1b658000000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6040517ffc5fecd50000000000000000000000000000000000000000000000000000000081526004810183905260009081906001600160a01b0388169063fc5fecd5906024016040805180830381865afa158015610c7a573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610c9e9190613792565b6040517f23b872dd00000000000000000000000000000000000000000000000000000000815233600482015273735b14bb79463307aacbed86daf3322b1e6226ab60248201526044810182905291935091506001600160a01b038316906323b872dd906064016020604051808303816000875af1158015610d23573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610d479190613555565b610d7d576040517f0a7cd6d600000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b866001600160a01b0316336001600160a01b03167f6c6abd640fc6a0ef7cf2bc54b246b42d5c2629c30be1e24fea4a58157a7728cf8a89898989604051610dc89594939291906137c0565b60405180910390a35050610dfb60017f9b779b17422d0df92223018b32b4d1fa46e071723d6817e2486d003becc55f0055565b505050505050565b3373735b14bb79463307aacbed86daf3322b1e6226ab14610e50576040517f2b2add3d00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b610e58610694565b6001600160a01b038316610e98576040517fd92e233d00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b83600003610ed2576040517f19c08f4900000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6001600160a01b03831673735b14bb79463307aacbed86daf3322b1e6226ab1480610f0557506001600160a01b03831630145b15610f3c576040517f82d5d76a00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b610f4684846121a3565b6000546040517fde43156e0000000000000000000000000000000000000000000000000000000081526001600160a01b038086169263de43156e92610f97928a92169089908890889060040161380c565b600060405180830381600087803b158015610fb157600080fd5b505af1158015610fc5573d6000803e3d6000fd5b505050505050505050565b60008281527f02dd7bc7dec4dceedda775e58dd541e08a116c6c53815c0bd028192f7b626800602052604090206001015461100a81612371565b611014838361237b565b50505050565b6001600160a01b038116331461105c576040517f6697b23200000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6110668282612468565b505050565b611073611e1f565b61107b610694565b85516000036110b6576040517fd92e233d00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b846000036110f0576040517f19c08f4900000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b61110e8573735b14bb79463307aacbed86daf3322b1e6226ab6121a3565b60008054604051869233927fda1215b0949ddb309fe466fa9e70e861a16538f11b8ecdb05c217d4d8677ed2d9261115d928c926001600160a01b0316918c919081908c908c9083908d9061371f565b60405180910390a3610dfb60017f9b779b17422d0df92223018b32b4d1fa46e071723d6817e2486d003becc55f0055565b7f65d7a28e3265b37a6474929f336521b332c1681b933f6cb9f3376673440d862a6111b881612371565b6111c061252c565b50565b7ff0c57e16840df040f15088dc2f81fe391c3923bec73e23a9662efc9c229c6a00805468010000000000000000810460ff16159067ffffffffffffffff1660008115801561120e5750825b905060008267ffffffffffffffff16600114801561122b5750303b155b905081158015611239575080155b15611270576040517ff92ee8a900000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b84547fffffffffffffffffffffffffffffffffffffffffffffffff000000000000000016600117855583156112d15784547fffffffffffffffffffffffffffffffffffffffffffffff00ffffffffffffffff16680100000000000000001785555b6001600160a01b03871615806112ee57506001600160a01b038616155b15611325576040517fd92e233d00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b61132d6125bc565b6113356125bc565b61133d6125c4565b6113456125d4565b61135060008761237b565b5061137b7f65d7a28e3265b37a6474929f336521b332c1681b933f6cb9f3376673440d862a8761237b565b50600080547fffffffffffffffffffffffff0000000000000000000000000000000000000000166001600160a01b0389161790558315610b895784547fffffffffffffffffffffffffffffffffffffffffffffff00ffffffffffffffff168555604051600181527fc7f505b2f371ae2175ee4913f4499e1f2633a7b5936321eed1cdaeb6115181d29060200160405180910390a150505050505050565b6114206125e4565b611429826126b4565b61143382826126bf565b5050565b60006114416127e3565b507f360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc90565b3373735b14bb79463307aacbed86daf3322b1e6226ab146114b3576040517f2b2add3d00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6114bb610694565b6001600160a01b0382166114fb576040517fd92e233d00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6040517f660b9de00000000000000000000000000000000000000000000000000000000081526001600160a01b0383169063660b9de09061154090849060040161361f565b600060405180830381600087803b15801561155a57600080fd5b505af1158015610dfb573d6000803e3d6000fd5b611576611e1f565b61157e610694565b83516000036115b9576040517fd92e233d00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b826000036115f3576040517f5d67094f00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b60006115ff8484612845565b90506000336001600160a01b03167fda1215b0949ddb309fe466fa9e70e861a16538f11b8ecdb05c217d4d8677ed2d87868886896001600160a01b0316634d8943bb6040518163ffffffff1660e01b8152600401602060405180830381865afa158015611670573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906116949190613685565b8a6001600160a01b031663091d27886040518163ffffffff1660e01b8152600401602060405180830381865afa1580156116d2573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906116f69190613685565b8a60405161170a979695949392919061387d565b60405180910390a35061101460017f9b779b17422d0df92223018b32b4d1fa46e071723d6817e2486d003becc55f0055565b7f65d7a28e3265b37a6474929f336521b332c1681b933f6cb9f3376673440d862a61176681612371565b6111c06128b3565b611776611e1f565b61177e610694565b83516000036117b9576040517fd92e233d00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b826000036117f3576040517f19c08f4900000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6118118373735b14bb79463307aacbed86daf3322b1e6226ab6121a3565b60008054604051849233927fda1215b0949ddb309fe466fa9e70e861a16538f11b8ecdb05c217d4d8677ed2d9261185c928a926001600160a01b0316918a9190819081908b9061387d565b60405180910390a361101460017f9b779b17422d0df92223018b32b4d1fa46e071723d6817e2486d003becc55f0055565b3373735b14bb79463307aacbed86daf3322b1e6226ab146118da576040517f2b2add3d00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6118e2610694565b6001600160a01b03851615806118ff57506001600160a01b038316155b15611936576040517fd92e233d00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6040517fde43156e0000000000000000000000000000000000000000000000000000000081526001600160a01b0384169063de43156e90611983908990899089908890889060040161380c565b600060405180830381600087803b15801561199d57600080fd5b505af11580156119b1573d6000803e3d6000fd5b50505050505050505050565b3373735b14bb79463307aacbed86daf3322b1e6226ab14611a0a576040517f2b2add3d00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b611a12610694565b6001600160a01b0385161580611a2f57506001600160a01b038316155b15611a66576040517fd92e233d00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b83600003611aa0576040517f5d67094f00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6001600160a01b03831673735b14bb79463307aacbed86daf3322b1e6226ab1480611ad357506001600160a01b03831630145b15611b0a576040517f82d5d76a00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6040517f47e7ef240000000000000000000000000000000000000000000000000000000081526001600160a01b038481166004830152602482018690528616906347e7ef24906044016020604051808303816000875af1158015611b72573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611b969190613555565b611936576040517f47d19fab00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b60008281527f02dd7bc7dec4dceedda775e58dd541e08a116c6c53815c0bd028192f7b6268006020526040902060010154611c0681612371565b6110148383612468565b3373735b14bb79463307aacbed86daf3322b1e6226ab14611c5d576040517f2b2add3d00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b611c65610694565b6001600160a01b0383161580611c8257506001600160a01b038116155b15611cb9576040517fd92e233d00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b81600003611cf3576040517f5d67094f00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6001600160a01b03811673735b14bb79463307aacbed86daf3322b1e6226ab1480611d2657506001600160a01b03811630145b15611d5d576040517f82d5d76a00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6040517f47e7ef240000000000000000000000000000000000000000000000000000000081526001600160a01b038281166004830152602482018490528416906347e7ef24906044016020604051808303816000875af1158015611dc5573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611de99190613555565b611066576040517f47d19fab00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b7f9b779b17422d0df92223018b32b4d1fa46e071723d6817e2486d003becc55f0080547ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe01611e9a576040517f3ee5aeb500000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b60029055565b6000806000846001600160a01b031663fc5fecd5856040518263ffffffff1660e01b8152600401611ed391815260200190565b6040805180830381865afa158015611eef573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611f139190613792565b6040517f23b872dd00000000000000000000000000000000000000000000000000000000815233600482015273735b14bb79463307aacbed86daf3322b1e6226ab60248201526044810182905291935091506001600160a01b038316906323b872dd906064016020604051808303816000875af1158015611f98573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611fbc9190613555565b611ff2576040517f0a7cd6d600000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6040517f23b872dd000000000000000000000000000000000000000000000000000000008152336004820152306024820152604481018790526001600160a01b038616906323b872dd906064016020604051808303816000875af115801561205e573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906120829190613555565b6120b8576040517f4dd9ee8d00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6040517f42966c68000000000000000000000000000000000000000000000000000000008152600481018790526001600160a01b038616906342966c68906024016020604051808303816000875af1158015612118573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061213c9190613555565b612172576040517f2c77e05c00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b9150505b9392505050565b60017f9b779b17422d0df92223018b32b4d1fa46e071723d6817e2486d003becc55f0055565b6000546040517f23b872dd000000000000000000000000000000000000000000000000000000008152336004820152306024820152604481018490526001600160a01b03909116906323b872dd906064016020604051808303816000875af1158015612213573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906122379190613555565b61226d576040517fc7ffc47b00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6000546040517f2e1a7d4d000000000000000000000000000000000000000000000000000000008152600481018490526001600160a01b0390911690632e1a7d4d90602401600060405180830381600087803b1580156122cc57600080fd5b505af11580156122e0573d6000803e3d6000fd5b505050506000816001600160a01b03168360405160006040518083038185875af1925050503d8060008114612331576040519150601f19603f3d011682016040523d82523d6000602084013e612336565b606091505b5050905080611066576040517fc7ffc47b00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6111c0813361292c565b60008281527f02dd7bc7dec4dceedda775e58dd541e08a116c6c53815c0bd028192f7b626800602081815260408084206001600160a01b038616855290915282205460ff1661245e576000848152602082815260408083206001600160a01b0387168452909152902080547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff001660011790556124143390565b6001600160a01b0316836001600160a01b0316857f2f8788117e7eff1d82e926ec794901d17c78024a50270940304540a733656f0d60405160405180910390a46001915050610785565b6000915050610785565b60008281527f02dd7bc7dec4dceedda775e58dd541e08a116c6c53815c0bd028192f7b626800602081815260408084206001600160a01b038616855290915282205460ff161561245e576000848152602082815260408083206001600160a01b038716808552925280832080547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0016905551339287917ff6391f5c32d9c69d2a47ea670b442974b53935d1edc7fd64eb21e047a839171b9190a46001915050610785565b6125346129b9565b7fcd5ed15c6e187e77e9aee88184c21f4f2182ab5827cb3b7e07fbedcd63f0330080547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff001681557f5db9ee0a495bf2e6ff9c91a7834c1ba4fdd244a5e8aa4e537bd38aeae4b073aa335b6040516001600160a01b03909116815260200160405180910390a150565b6106f0612a14565b6125cc612a14565b6106f0612a7b565b6125dc612a14565b6106f0612acc565b306001600160a01b037f000000000000000000000000000000000000000000000000000000000000000016148061267d57507f00000000000000000000000000000000000000000000000000000000000000006001600160a01b03166126717f360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc546001600160a01b031690565b6001600160a01b031614155b156106f0576040517fe07c8dba00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b600061143381612371565b816001600160a01b03166352d1902d6040518163ffffffff1660e01b8152600401602060405180830381865afa925050508015612737575060408051601f3d9081017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe016820190925261273491810190613685565b60015b61277d576040517f4c9c8ce30000000000000000000000000000000000000000000000000000000081526001600160a01b03831660048201526024015b60405180910390fd5b7f360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc81146127d9576040517faa1d49a400000000000000000000000000000000000000000000000000000000815260048101829052602401612774565b6110668383612ad4565b306001600160a01b037f000000000000000000000000000000000000000000000000000000000000000016146106f0576040517fe07c8dba00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b60006121768383846001600160a01b031663091d27886040518163ffffffff1660e01b8152600401602060405180830381865afa15801561288a573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906128ae9190613685565b611ea0565b6128bb610694565b7fcd5ed15c6e187e77e9aee88184c21f4f2182ab5827cb3b7e07fbedcd63f0330080547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff001660011781557f62e78cea01bee320cd4e420270b5ea74000d11b0c9f74754ebdbfc544b05a2583361259e565b60008281527f02dd7bc7dec4dceedda775e58dd541e08a116c6c53815c0bd028192f7b626800602090815260408083206001600160a01b038516845290915290205460ff16611433576040517fe2517d3f0000000000000000000000000000000000000000000000000000000081526001600160a01b038216600482015260248101839052604401612774565b7fcd5ed15c6e187e77e9aee88184c21f4f2182ab5827cb3b7e07fbedcd63f033005460ff166106f0576040517f8dfc202b00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b7ff0c57e16840df040f15088dc2f81fe391c3923bec73e23a9662efc9c229c6a005468010000000000000000900460ff166106f0576040517fd7e6bcf800000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b612a83612a14565b7fcd5ed15c6e187e77e9aee88184c21f4f2182ab5827cb3b7e07fbedcd63f0330080547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00169055565b61217d612a14565b612add82612b2a565b6040516001600160a01b038316907fbc7cd75a20ee27fd9adebab32041f755214dbc6bffa90cc0225b39da2e5c2d3b90600090a2805115612b22576110668282612bd2565b611433612c48565b806001600160a01b03163b600003612b79576040517f4c9c8ce30000000000000000000000000000000000000000000000000000000081526001600160a01b0382166004820152602401612774565b7f360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc80547fffffffffffffffffffffffff0000000000000000000000000000000000000000166001600160a01b0392909216919091179055565b6060600080846001600160a01b031684604051612bef91906138eb565b600060405180830381855af49150503d8060008114612c2a576040519150601f19603f3d011682016040523d82523d6000602084013e612c2f565b606091505b5091509150612c3f858383612c80565b95945050505050565b34156106f0576040517fb398979f00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b606082612c9557612c9082612cf5565b612176565b8151158015612cac57506001600160a01b0384163b155b15612cee576040517f9996b3150000000000000000000000000000000000000000000000000000000081526001600160a01b0385166004820152602401612774565b5080612176565b805115612d055780518082602001fd5b6040517f1425ea4200000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b600060208284031215612d4957600080fd5b81357fffffffff000000000000000000000000000000000000000000000000000000008116811461217657600080fd5b6001600160a01b03811681146111c057600080fd5b600060608284031215612da057600080fd5b50919050565b60008060008060808587031215612dbc57600080fd5b8435612dc781612d79565b9350602085013592506040850135612dde81612d79565b9150606085013567ffffffffffffffff811115612dfa57600080fd5b612e0687828801612d8e565b91505092959194509250565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b600082601f830112612e5257600080fd5b813567ffffffffffffffff811115612e6c57612e6c612e12565b6040517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0603f7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0601f8501160116810181811067ffffffffffffffff82111715612ed857612ed8612e12565b604052818152838201602001851015612ef057600080fd5b816020850160208301376000918101602001919091529392505050565b60008083601f840112612f1f57600080fd5b50813567ffffffffffffffff811115612f3757600080fd5b602083019150836020828501011115612f4f57600080fd5b9250929050565b600060a08284031215612da057600080fd5b600080600080600080600060c0888a031215612f8357600080fd5b873567ffffffffffffffff811115612f9a57600080fd5b612fa68a828b01612e41565b975050602088013595506040880135612fbe81612d79565b9450606088013567ffffffffffffffff811115612fda57600080fd5b612fe68a828b01612f0d565b9095509350506080880135915060a088013567ffffffffffffffff81111561300d57600080fd5b6130198a828b01612f56565b91505092959891949750929550565b60008060008060008060a0878903121561304157600080fd5b863567ffffffffffffffff81111561305857600080fd5b61306489828a01612e41565b965050602087013561307581612d79565b9450604087013567ffffffffffffffff81111561309157600080fd5b61309d89828a01612f0d565b90955093505060608701359150608087013567ffffffffffffffff8111156130c457600080fd5b6130d089828a01612f56565b9150509295509295509295565b6000806000806000608086880312156130f557600080fd5b853567ffffffffffffffff81111561310c57600080fd5b61311888828901612d8e565b95505060208601359350604086013561313081612d79565b9250606086013567ffffffffffffffff81111561314c57600080fd5b61315888828901612f0d565b969995985093965092949392505050565b60006020828403121561317b57600080fd5b5035919050565b6000806040838503121561319557600080fd5b8235915060208301356131a781612d79565b809150509250929050565b60008060008060008060a087890312156131cb57600080fd5b863567ffffffffffffffff8111156131e257600080fd5b6131ee89828a01612e41565b9650506020870135945060408701359350606087013567ffffffffffffffff81111561321957600080fd5b61322589828a01612f0d565b909450925050608087013567ffffffffffffffff8111156130c457600080fd5b6000806040838503121561325857600080fd5b823561326381612d79565b915060208301356131a781612d79565b6000806040838503121561328657600080fd5b823561329181612d79565b9150602083013567ffffffffffffffff8111156132ad57600080fd5b6132b985828601612e41565b9150509250929050565b600080604083850312156132d657600080fd5b82356132e181612d79565b9150602083013567ffffffffffffffff8111156132fd57600080fd5b6132b985828601612d8e565b6000806000806080858703121561331f57600080fd5b843567ffffffffffffffff81111561333657600080fd5b61334287828801612e41565b94505060208501359250604085013561335a81612d79565b9150606085013567ffffffffffffffff81111561337657600080fd5b612e0687828801612f56565b6000806000806080858703121561339857600080fd5b843567ffffffffffffffff8111156133af57600080fd5b6133bb87828801612e41565b9450506020850135925060408501359150606085013567ffffffffffffffff81111561337657600080fd5b60005b838110156134015781810151838201526020016133e9565b50506000910152565b600081518084526134228160208601602086016133e6565b601f017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0169290920160200192915050565b602081526000612176602083018461340a565b60008060008060008060a0878903121561348057600080fd5b863567ffffffffffffffff81111561349757600080fd5b6134a389828a01612d8e565b96505060208701356134b481612d79565b94506040870135935060608701356134cb81612d79565b9250608087013567ffffffffffffffff8111156134e757600080fd5b6134f389828a01612f0d565b979a9699509497509295939492505050565b60008060006060848603121561351a57600080fd5b833561352581612d79565b925060208401359150604084013561353c81612d79565b809150509250925092565b80151581146111c057600080fd5b60006020828403121561356757600080fd5b815161217681613547565b60008083357fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe18436030181126135a757600080fd5b830160208101925035905067ffffffffffffffff8111156135c757600080fd5b803603821315612f4f57600080fd5b8183528181602085013750600060208284010152600060207fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0601f840116840101905092915050565b602081526000823561363081612d79565b6001600160a01b038116602084015250602083013567ffffffffffffffff811680821461365c57600080fd5b80604085015250506136716040840184613572565b606080850152612c3f6080850182846135d6565b60006020828403121561369757600080fd5b5051919050565b600081356136ab81612d79565b6001600160a01b0316835260208201356136c481613547565b1515602084015260408201356136d981612d79565b6001600160a01b031660408401526136f46060830183613572565b60a0606086015261370960a0860182846135d6565b6080948501359590940194909452509092915050565b6101008152600061373461010083018c61340a565b6001600160a01b038b16602084015289604084015288606084015287608084015282810360a08401526137688187896135d6565b90508460c084015282810360e0840152613782818561369e565b9c9b505050505050505050505050565b600080604083850312156137a557600080fd5b82516137b081612d79565b6020939093015192949293505050565b6080815260006137d3608083018861340a565b82810360208401526137e68187896135d6565b90508460408401528281036060840152613800818561369e565b98975050505050505050565b60808152600061381c8788613572565b6060608085015261383160e0850182846135d6565b915050602088013561384281612d79565b6001600160a01b0390811660a085015260408981013560c08601529088166020850152830186905282810360608401526138008185876135d6565b6101008152600061389261010083018a61340a565b6001600160a01b03891660208401528760408401528660608401528560808401528281038060a0850152600082528560c08501526020810160e0850152506138dd602082018561369e565b9a9950505050505050505050565b600082516138fd8184602087016133e6565b919091019291505056fea26469706673582212209729ede334f07afe016eab9b4d72c7ce168ef243ba933f0783bfed07e3f86edf64736f6c634300081a0033","sourceMap":"958:13493:10:-:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;2316:19:44;:17;:19::i;:::-;2885:9:10::1;::::0;-1:-1:-1;;;;;2885:9:10::1;2871:10;:23;::::0;::::1;::::0;:64:::1;;-1:-1:-1::0;2898:10:10::1;1331:42;2898:37;;2871:64;2867:98;;;2944:21;;;;;;;;;;;;;;2867:98;958:13493:::0;;;;;3443:202:40;;;;;;;;;;-1:-1:-1;3443:202:40;;;;;:::i;:::-;;:::i;:::-;;;516:14:108;;509:22;491:41;;479:2;464:18;3443:202:40;;;;;;;;13852:597:10;;;;;;;;;;-1:-1:-1;13852:597:10;;;;;:::i;:::-;;:::i;6348:749::-;;;;;;;;;;-1:-1:-1;6348:749:10;;;;;:::i;:::-;;:::i;9116:688::-;;;;;;;;;;-1:-1:-1;9116:688:10;;;;;:::i;:::-;;:::i;12555:557::-;;;;;;;;;;-1:-1:-1;12555:557:10;;;;;:::i;:::-;;:::i;1426:24::-;;;;;;;;;;-1:-1:-1;1426:24:10;;;;-1:-1:-1;;;;;1426:24:10;;;;;;-1:-1:-1;;;;;6694:55:108;;;6676:74;;6664:2;6649:18;1426:24:10;6530:226:108;4759:191:40;;;;;;;;;;-1:-1:-1;4759:191:40;;;;;:::i;:::-;4824:7;4919:14;;;2920:28;4919:14;;;;;:24;;;;4759:191;;;;7138:25:108;;;7126:2;7111:18;4759:191:40;6992:177:108;5246:136:40;;;;;;;;;;-1:-1:-1;5246:136:40;;;;;:::i;:::-;;:::i;6348:245::-;;;;;;;;;;-1:-1:-1;6348:245:40;;;;;:::i;:::-;;:::i;8215:547:10:-;;;;;;;;;;-1:-1:-1;8215:547:10;;;;;:::i;:::-;;:::i;1281:92::-;;;;;;;;;;;;1331:42;1281:92;;3123:77;;;;;;;;;;;;;:::i;2067:439::-;;;;;;;;;;-1:-1:-1;2067:439:10;;;;;:::i;:::-;;:::i;4158:214:42:-;;;;;;:::i;:::-;;:::i;3705:134::-;;;;;;;;;;;;;:::i;2692:145:44:-;;;;;;;;;;-1:-1:-1;1270:23:44;2821:9;;;2692:145;;13292:236:10;;;;;;;;;;-1:-1:-1;13292:236:10;;;;;:::i;:::-;;:::i;5259:674::-;;;;;;;;;;-1:-1:-1;5259:674:10;;;;;:::i;:::-;;:::i;3010:73::-;;;;;;;;;;;;;:::i;3732:207:40:-;;;;;;;;;;-1:-1:-1;3732:207:40;;;;;:::i;:::-;3809:4;3901:14;;;2920:28;3901:14;;;;;;;;-1:-1:-1;;;;;3901:31:40;;;;;;;;;;;;;;;3732:207;7331:503:10;;;;;;;;;;-1:-1:-1;7331:503:10;;;;;:::i;:::-;;:::i;2317:49:40:-;;;;;;;;;;-1:-1:-1;2317:49:40;2362:4;2317:49;;1819:58:42;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;10819:397:10:-;;;;;;;;;;-1:-1:-1;10819:397:10;;;;;:::i;:::-;;:::i;11601:642::-;;;;;;;;;;-1:-1:-1;11601:642:10;;;;;:::i;:::-;;:::i;5662:138:40:-;;;;;;;;;;-1:-1:-1;5662:138:40;;;;;:::i;:::-;;:::i;1510:62:10:-;;;;;;;;;;;;1548:24;1510:62;;10042:426;;;;;;;;;;-1:-1:-1;10042:426:10;;;;;:::i;:::-;;:::i;2905:128:44:-;1270:23;2821:9;;;2966:61;;;3001:15;;;;;;;;;;;;;;2966:61;2905:128::o;3443:202:40:-;3528:4;3551:47;;;3566:32;3551:47;;:87;;-1:-1:-1;1148:25:46;1133:40;;;;3602:36:40;3544:94;3443:202;-1:-1:-1;;3443:202:40:o;13852:597:10:-;1677:10;1331:42;1677:37;1673:102;;1737:27;;;;;;;;;;;;;;1673:102;2316:19:44::1;:17;:19::i;:::-;-1:-1:-1::0;;;;;14079:19:10;::::2;::::0;;:43:::2;;-1:-1:-1::0;;;;;;14102:20:10;::::2;::::0;14079:43:::2;14075:69;;;14131:13;;;;;;;;;;;;;;14075:69;14158:6;14168:1;14158:11:::0;14154:49:::2;;14178:25;;;;;;;;;;;;;;14154:49;-1:-1:-1::0;;;;;14217:33:10;::::2;1331:42;14217:33;::::0;:60:::2;;-1:-1:-1::0;;;;;;14254:23:10;::::2;14272:4;14254:23;14217:60;14213:88;;;14286:15;;;;;;;;;;;;;;14213:88;14317:37;::::0;;;;-1:-1:-1;;;;;14279:55:108;;;14317:37:10::2;::::0;::::2;14261:74:108::0;14351:18;;;14344:34;;;14317:21:10;::::2;::::0;::::2;::::0;14234:18:108;;14317:37:10::2;;;;;;;;;;;;;;;;;;::::0;::::2;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;14312:71;;14363:20;;;;;;;;;;;;;;14312:71;14393:49;::::0;;;;-1:-1:-1;;;;;14393:34:10;::::2;::::0;::::2;::::0;:49:::2;::::0;14428:13;;14393:49:::2;;;:::i;:::-;;;;;;;;;;;;;;;;;;::::0;::::2;;;;;;;;;;;;::::0;::::2;;;;;;;;;13852:597:::0;;;;:::o;6348:749::-;3251:21:45;:19;:21::i;:::-;2316:19:44::1;:17;:19::i;:::-;6639:8:10::2;:15;6658:1;6639:20:::0;6635:46:::2;;6668:13;;;;;;;;;;;;;;6635:46;6695:6;6705:1;6695:11:::0;6691:49:::2;;6715:25;;;;;;;;;;;;;;6691:49;6751:14;6768:51;6795:6;6803:5;6810:8;6768:26;:51::i;:::-;6751:68;;6881:1;6857:10;-1:-1:-1::0;;;;;6834:256:10::2;;6896:8;6918:5;6937:6;6957;6984:5;-1:-1:-1::0;;;;;6977:31:10::2;;:33;;;;;;;;;;;;;;;;;;;;;;;;;;;;::::0;::::2;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;7024:7;;7045:8;7067:13;6834:256;;;;;;;;;;;;;;:::i;:::-;;;;;;;;6625:472;3293:20:45::0;1805:1;2388:30;3969:23;3716:283;3293:20;6348:749:10;;;;;;;:::o;9116:688::-;3251:21:45;:19;:21::i;:::-;2316:19:44::1;:17;:19::i;:::-;9372:8:10::2;:15;9391:1;9372:20:::0;9368:46:::2;;9401:13;;;;;;;;;;;;;;9368:46;9446:1;9428:19:::0;;;9424:46:::2;;9456:14;;;;;;;;;;;;;;9424:46;9518:50;::::0;;;;::::2;::::0;::::2;7138:25:108::0;;;9482:16:10::2;::::0;;;-1:-1:-1;;;;;9518:40:10;::::2;::::0;::::2;::::0;7111:18:108;;9518:50:10::2;::::0;::::2;;;;;;;;;;;;;;;::::0;::::2;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;9583:74;::::0;;;;9613:10:::2;9583:74;::::0;::::2;19435::108::0;1331:42:10::2;19525:18:108::0;;;19518:83;19617:18;;;19610:34;;;9481:87:10;;-1:-1:-1;9481:87:10;-1:-1:-1;;;;;;9583:29:10;::::2;::::0;::::2;::::0;19408:18:108;;9583:74:10::2;;;;;;;;;;;;;;;;;;::::0;::::2;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;9578:135;;9680:22;;;;;;;;;;;;;;9578:135;9747:5;-1:-1:-1::0;;;;;9728:69:10::2;9735:10;-1:-1:-1::0;;;;;9728:69:10::2;;9754:8;9764:7;;9773:8;9783:13;9728:69;;;;;;;;;;:::i;:::-;;;;;;;;9358:446;;3293:20:45::0;1805:1;2388:30;3969:23;3716:283;3293:20;9116:688:10;;;;;;:::o;12555:557::-;1677:10;1331:42;1677:37;1673:102;;1737:27;;;;;;;;;;;;;;1673:102;2316:19:44::1;:17;:19::i;:::-;-1:-1:-1::0;;;;;12778:20:10;::::2;12774:46;;12807:13;;;;;;;;;;;;;;12774:46;12834:6;12844:1;12834:11:::0;12830:48:::2;;12854:24;;;;;;;;;;;;;;12830:48;-1:-1:-1::0;;;;;12892:33:10;::::2;1331:42;12892:33;::::0;:60:::2;;-1:-1:-1::0;;;;;;12929:23:10;::::2;12947:4;12929:23;12892:60;12888:88;;;12961:15;;;;;;;;;;;;;;12888:88;12987:29;13001:6;13009;12987:13;:29::i;:::-;13078:9;::::0;13026:79:::2;::::0;;;;-1:-1:-1;;;;;13026:42:10;;::::2;::::0;::::2;::::0;:79:::2;::::0;13069:7;;13078:9:::2;::::0;13089:6;;13097:7;;;;13026:79:::2;;;:::i;:::-;;;;;;;;;;;;;;;;;;::::0;::::2;;;;;;;;;;;;::::0;::::2;;;;;;;;;12555:557:::0;;;;;:::o;5246:136:40:-;4824:7;4919:14;;;2920:28;4919:14;;;;;:24;;;3191:16;3202:4;3191:10;:16::i;:::-;5350:25:::1;5361:4;5367:7;5350:10;:25::i;:::-;;5246:136:::0;;;:::o;6348:245::-;-1:-1:-1;;;;;6441:34:40;;966:10:43;6441:34:40;6437:102;;6498:30;;;;;;;;;;;;;;6437:102;6549:37;6561:4;6567:18;6549:11;:37::i;:::-;;6348:245;;:::o;8215:547:10:-;3251:21:45;:19;:21::i;:::-;2316:19:44::1;:17;:19::i;:::-;8482:8:10::2;:15;8501:1;8482:20:::0;8478:46:::2;;8511:13;;;;;;;;;;;;;;8478:46;8538:6;8548:1;8538:11:::0;8534:48:::2;;8558:24;;;;;;;;;;;;;;8534:48;8593:46;8607:6;1331:42;8593:13;:46::i;:::-;8703:9;::::0;;8654:101:::2;::::0;8676:7;;8664:10:::2;::::0;8654:101:::2;::::0;::::2;::::0;8685:8;;-1:-1:-1;;;;;8703:9:10::2;::::0;8715:6;;8703:9;;;8729:7;;;;8703:9;;8741:13;;8654:101:::2;:::i;:::-;;;;;;;;3293:20:45::0;1805:1;2388:30;3969:23;3716:283;3123:77:10;1548:24;3191:16:40;3202:4;3191:10;:16::i;:::-;3183:10:10::1;:8;:10::i;:::-;3123:77:::0;:::o;2067:439::-;8870:21:41;4302:15;;;;;;;4301:16;;4348:14;;4158:30;4726:16;;:34;;;;;4746:14;4726:34;4706:54;;4770:17;4790:11;:16;;4805:1;4790:16;:50;;;;-1:-1:-1;4818:4:41;4810:25;:30;4790:50;4770:70;;4856:12;4855:13;:30;;;;;4873:12;4872:13;4855:30;4851:91;;;4908:23;;;;;;;;;;;;;;4851:91;4951:18;;;;4968:1;4951:18;;;4979:67;;;;5013:22;;;;;;;;4979:67;-1:-1:-1;;;;;2156:24:10;::::1;::::0;;:48:::1;;-1:-1:-1::0;;;;;;2184:20:10;::::1;::::0;2156:48:::1;2152:99;;;2227:13;;;;;;;;;;;;;;2152:99;2260:24;:22;:24::i;:::-;2294:22;:20;:22::i;:::-;2326:17;:15;:17::i;:::-;2353:24;:22;:24::i;:::-;2388:38;2362:4:40;2419:6:10::0;2388:10:::1;:38::i;:::-;;2436:31;1548:24;2460:6;2436:10;:31::i;:::-;-1:-1:-1::0;2477:9:10::1;:22:::0;;;::::1;-1:-1:-1::0;;;;;2477:22:10;::::1;;::::0;;5066:101:41;;;;5100:23;;;;;;5142:14;;-1:-1:-1;22697:50:108;;5142:14:41;;22685:2:108;22670:18;5142:14:41;;;;;;;4092:1081;;;;;2067:439:10;;:::o;4158:214:42:-;2653:13;:11;:13::i;:::-;4273:36:::1;4291:17;4273;:36::i;:::-;4319:46;4341:17;4360:4;4319:21;:46::i;:::-;4158:214:::0;;:::o;3705:134::-;3774:7;2924:20;:18;:20::i;:::-;-1:-1:-1;1327:66:54::1;3705:134:42::0;:::o;13292:236:10:-;1677:10;1331:42;1677:37;1673:102;;1737:27;;;;;;;;;;;;;;1673:102;2316:19:44::1;:17;:19::i;:::-;-1:-1:-1::0;;;;;13419:20:10;::::2;13415:46;;13448:13;;;;;;;;;;;;;;13415:46;13472:49;::::0;;;;-1:-1:-1;;;;;13472:34:10;::::2;::::0;::::2;::::0;:49:::2;::::0;13507:13;;13472:49:::2;;;:::i;:::-;;;;;;;;;;;;;;;;;;::::0;::::2;;;;;;;;;;;;::::0;::::2;;;;5259:674:::0;3251:21:45;:19;:21::i;:::-;2316:19:44::1;:17;:19::i;:::-;5485:8:10::2;:15;5504:1;5485:20:::0;5481:46:::2;;5514:13;;;;;;;;;;;;;;5481:46;5541:6;5551:1;5541:11:::0;5537:49:::2;;5561:25;;;;;;;;;;;;;;5537:49;5597:14;5614:29;5629:6;5637:5;5614:14;:29::i;:::-;5597:46;;5705:1;5681:10;-1:-1:-1::0;;;;;5658:268:10::2;;5720:8;5742:5;5761:6;5781;5808:5;-1:-1:-1::0;;;;;5801:31:10::2;;:33;;;;;;;;;;;;;;;;;;;;;;;;;;;;::::0;::::2;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;5871:5;-1:-1:-1::0;;;;;5864:23:10::2;;:25;;;;;;;;;;;;;;;;;;;;;;;;;;;;::::0;::::2;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;5903:13;5658:268;;;;;;;;;;;;:::i;:::-;;;;;;;;5471:462;3293:20:45::0;1805:1;2388:30;3969:23;3716:283;3010:73:10;1548:24;3191:16:40;3202:4;3191:10;:16::i;:::-;3068:8:10::1;:6;:8::i;7331:503::-:0;3251:21:45;:19;:21::i;:::-;2316:19:44::1;:17;:19::i;:::-;7559:8:10::2;:15;7578:1;7559:20:::0;7555:46:::2;;7588:13;;;;;;;;;;;;;;7555:46;7615:6;7625:1;7615:11:::0;7611:48:::2;;7635:24;;;;;;;;;;;;;;7611:48;7670:46;7684:6;1331:42;7670:13;:46::i;:::-;7780:9;::::0;;7731:96:::2;::::0;7753:7;;7741:10:::2;::::0;7731:96:::2;::::0;::::2;::::0;7762:8;;-1:-1:-1;;;;;7780:9:10::2;::::0;7792:6;;7780:9;;;;;7813:13;;7731:96:::2;:::i;:::-;;;;;;;;3293:20:45::0;1805:1;2388:30;3969:23;3716:283;10819:397:10;1677:10;1331:42;1677:37;1673:102;;1737:27;;;;;;;;;;;;;;1673:102;2316:19:44::1;:17;:19::i;:::-;-1:-1:-1::0;;;;;11058:19:10;::::2;::::0;;:43:::2;;-1:-1:-1::0;;;;;;11081:20:10;::::2;::::0;11058:43:::2;11054:69;;;11110:13;;;;;;;;;;;;;;11054:69;11134:75;::::0;;;;-1:-1:-1;;;;;11134:42:10;::::2;::::0;::::2;::::0;:75:::2;::::0;11177:7;;11186:5;;11193:6;;11201:7;;;;11134:75:::2;;;:::i;:::-;;;;;;;;;;;;;;;;;;::::0;::::2;;;;;;;;;;;;::::0;::::2;;;;;;;;;10819:397:::0;;;;;;:::o;11601:642::-;1677:10;1331:42;1677:37;1673:102;;1737:27;;;;;;;;;;;;;;1673:102;2316:19:44::1;:17;:19::i;:::-;-1:-1:-1::0;;;;;11847:19:10;::::2;::::0;;:43:::2;;-1:-1:-1::0;;;;;;11870:20:10;::::2;::::0;11847:43:::2;11843:69;;;11899:13;;;;;;;;;;;;;;11843:69;11926:6;11936:1;11926:11:::0;11922:49:::2;;11946:25;;;;;;;;;;;;;;11922:49;-1:-1:-1::0;;;;;11985:33:10;::::2;1331:42;11985:33;::::0;:60:::2;;-1:-1:-1::0;;;;;;12022:23:10;::::2;12040:4;12022:23;11985:60;11981:88;;;12054:15;;;;;;;;;;;;;;11981:88;12085:37;::::0;;;;-1:-1:-1;;;;;14279:55:108;;;12085:37:10::2;::::0;::::2;14261:74:108::0;14351:18;;;14344:34;;;12085:21:10;::::2;::::0;::::2;::::0;14234:18:108;;12085:37:10::2;;;;;;;;;;;;;;;;;;::::0;::::2;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;12080:71;;12131:20;;;;;;;;;;;;;;5662:138:40::0;4824:7;4919:14;;;2920:28;4919:14;;;;;:24;;;3191:16;3202:4;3191:10;:16::i;:::-;5767:26:::1;5779:4;5785:7;5767:11;:26::i;10042:426:10:-:0;1677:10;1331:42;1677:37;1673:102;;1737:27;;;;;;;;;;;;;;1673:102;2316:19:44::1;:17;:19::i;:::-;-1:-1:-1::0;;;;;10156:19:10;::::2;::::0;;:43:::2;;-1:-1:-1::0;;;;;;10179:20:10;::::2;::::0;10156:43:::2;10152:69;;;10208:13;;;;;;;;;;;;;;10152:69;10235:6;10245:1;10235:11:::0;10231:49:::2;;10255:25;;;;;;;;;;;;;;10231:49;-1:-1:-1::0;;;;;10295:33:10;::::2;1331:42;10295:33;::::0;:60:::2;;-1:-1:-1::0;;;;;;10332:23:10;::::2;10350:4;10332:23;10295:60;10291:88;;;10364:15;;;;;;;;;;;;;;10291:88;10395:37;::::0;;;;-1:-1:-1;;;;;14279:55:108;;;10395:37:10::2;::::0;::::2;14261:74:108::0;14351:18;;;14344:34;;;10395:21:10;::::2;::::0;::::2;::::0;14234:18:108;;10395:37:10::2;;;;;;;;;;;;;;;;;;::::0;::::2;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;10390:71;;10441:20;;;;;;;;;;;;;;3326:384:45::0;2388:30;3526:9;;:20;;3522:88;;3569:30;;;;;;;;;;;;;;3522:88;1847:1;3684:19;;3326:384::o;3900:583:10:-;4003:7;4023:16;4041:14;4066:5;-1:-1:-1;;;;;4059:40:10;;4100:8;4059:50;;;;;;;;;;;;;7138:25:108;;7126:2;7111:18;;6992:177;4059:50:10;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;4124:74;;;;;4154:10;4124:74;;;19435::108;1331:42:10;19525:18:108;;;19518:83;19617:18;;;19610:34;;;4022:87:10;;-1:-1:-1;4022:87:10;-1:-1:-1;;;;;;4124:29:10;;;;;19408:18:108;;4124:74:10;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;4119:135;;4221:22;;;;;;;;;;;;;;4119:135;4269:61;;;;;4296:10;4269:61;;;19435:74:108;4316:4:10;19525:18:108;;;19518:83;19617:18;;;19610:34;;;-1:-1:-1;;;;;4269:26:10;;;;;19408:18:108;;4269:61:10;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;4264:121;;4353:21;;;;;;;;;;;;;;4264:121;4400:26;;;;;;;;7138:25:108;;;-1:-1:-1;;;;;4400:18:10;;;;;7111::108;;4400:26:10;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;4395:57;;4435:17;;;;;;;;;;;;;;4395:57;4470:6;-1:-1:-1;;3900:583:10;;;;;;:::o;3716:283:45:-;1805:1;2388:30;3969:23;3716:283::o;4658:313:10:-;4740:9;;4733:65;;;;;4764:10;4733:65;;;19435:74:108;4784:4:10;19525:18:108;;;19518:83;19617:18;;;19610:34;;;-1:-1:-1;;;;;4740:9:10;;;;4733:30;;19408:18:108;;4733:65:10;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;4728:95;;4807:16;;;;;;;;;;;;;;4728:95;4840:9;;4833:34;;;;;;;;7138:25:108;;;-1:-1:-1;;;;;4840:9:10;;;;4833:26;;7111:18:108;;4833:34:10;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;4878:9;4892:2;-1:-1:-1;;;;;4892:7:10;4908:6;4892:28;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;4877:43;;;4935:4;4930:34;;4948:16;;;;;;;;;;;;;;4148:103:40;4214:30;4225:4;966:10:43;4214::40;:30::i;7270:387::-;7347:4;3901:14;;;2920:28;3901:14;;;;;;;;-1:-1:-1;;;;;3901:31:40;;;;;;;;;;;;7432:219;;7475:8;:14;;;;;;;;;;;-1:-1:-1;;;;;7475:31:40;;;;;;;;;:38;;;;7509:4;7475:38;;;7559:12;966:10:43;;887:96;7559:12:40;-1:-1:-1;;;;;7532:40:40;7550:7;-1:-1:-1;;;;;7532:40:40;7544:4;7532:40;;;;;;;;;;7593:4;7586:11;;;;;7432:219;7635:5;7628:12;;;;;7892:388;7970:4;3901:14;;;2920:28;3901:14;;;;;;;;-1:-1:-1;;;;;3901:31:40;;;;;;;;;;;;8055:219;;;8131:5;8097:14;;;;;;;;;;;-1:-1:-1;;;;;8097:31:40;;;;;;;;;;:39;;;;;;8155:40;966:10:43;;8097:14:40;;8155:40;;8131:5;8155:40;8216:4;8209:11;;;;;3674:178:44;2563:16;:14;:16::i;:::-;1270:23;3791:17;;;::::1;::::0;;3823:22:::1;966:10:43::0;3832:12:44::1;3823:22;::::0;-1:-1:-1;;;;;6694:55:108;;;6676:74;;6664:2;6649:18;3823:22:44::1;;;;;;;3722:130;3674:178::o:0;2968:67:42:-;6931:20:41;:18;:20::i;1836:97:44:-;6931:20:41;:18;:20::i;:::-;1899:27:44::1;:25;:27::i;2540:111:45:-:0;6931:20:41;:18;:20::i;:::-;2610:34:45::1;:32;:34::i;4599:312:42:-:0;4679:4;-1:-1:-1;;;;;4688:6:42;4671:23;;;:120;;;4785:6;-1:-1:-1;;;;;4749:42:42;:32;1327:66:54;2035:53;-1:-1:-1;;;;;2035:53:54;;1957:138;4749:32:42;-1:-1:-1;;;;;4749:42:42;;;4671:120;4654:251;;;4865:29;;;;;;;;;;;;;;2637:104:10;2362:4:40;3191:16;2362:4;3191:10;:16::i;6052:538:42:-;6169:17;-1:-1:-1;;;;;6151:50:42;;:52;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;6151:52:42;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;6147:437;;6513:60;;;;;-1:-1:-1;;;;;6694:55:108;;6513:60:42;;;6676:74:108;6649:18;;6513:60:42;;;;;;;;6147:437;1327:66:54;6245:40:42;;6241:120;;6312:34;;;;;;;;7138:25:108;;;7111:18;;6312:34:42;6992:177:108;6241:120:42;6374:54;6404:17;6423:4;6374:29;:54::i;5028:213::-;5102:4;-1:-1:-1;;;;;5111:6:42;5094:23;;5090:145;;5195:29;;;;;;;;;;;;;;3420:210:10;3493:7;3555:68;3582:6;3590:5;3604;-1:-1:-1;;;;;3597:23:10;;:25;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;3555:26;:68::i;3366:176:44:-;2316:19;:17;:19::i;:::-;1270:23;3484:16;;;::::1;3496:4;3484:16;::::0;;3515:20:::1;966:10:43::0;3522:12:44::1;887:96:43::0;4381:197:40;3809:4;3901:14;;;2920:28;3901:14;;;;;;;;-1:-1:-1;;;;;3901:31:40;;;;;;;;;;;;4464:108;;4514:47;;;;;-1:-1:-1;;;;;14279:55:108;;4514:47:40;;;14261:74:108;14351:18;;;14344:34;;;14234:18;;4514:47:40;14087:297:108;3105:126:44;1270:23;2821:9;;;3163:62;;3199:15;;;;;;;;;;;;;;7084:141:41;8870:21;8560:40;;;;;;7146:73;;7191:17;;;;;;;;;;;;;;1939:156:44;6931:20:41;:18;:20::i;:::-;1270:23:44;2071:17;;;::::1;::::0;;1939:156::o;2657:183:45:-;6931:20:41;:18;:20::i;2779:335:54:-;2870:37;2889:17;2870:18;:37::i;:::-;2922:27;;-1:-1:-1;;;;;2922:27:54;;;;;;;;2964:11;;:15;2960:148;;2995:53;3024:17;3043:4;2995:28;:53::i;2960:148::-;3079:18;:16;:18::i;2186:281::-;2263:17;-1:-1:-1;;;;;2263:29:54;;2296:1;2263:34;2259:119;;2320:47;;;;;-1:-1:-1;;;;;6694:55:108;;2320:47:54;;;6676:74:108;6649:18;;2320:47:54;6530:226:108;2259:119:54;1327:66;2387:73;;;;-1:-1:-1;;;;;2387:73:54;;;;;;;;;;2186:281::o;4106:253:67:-;4189:12;4214;4228:23;4255:6;-1:-1:-1;;;;;4255:19:67;4275:4;4255:25;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;4213:67;;;;4297:55;4324:6;4332:7;4341:10;4297:26;:55::i;:::-;4290:62;4106:253;-1:-1:-1;;;;;4106:253:67:o;6598:122:54:-;6648:9;:13;6644:70;;6684:19;;;;;;;;;;;;;;4625:582:67;4769:12;4798:7;4793:408;;4821:19;4829:10;4821:7;:19::i;:::-;4793:408;;;5045:17;;:22;:49;;;;-1:-1:-1;;;;;;5071:18:67;;;:23;5045:49;5041:119;;;5121:24;;;;;-1:-1:-1;;;;;6694:55:108;;5121:24:67;;;6676:74:108;6649:18;;5121:24:67;6530:226:108;5041:119:67;-1:-1:-1;5180:10:67;5173:17;;5743:516;5874:17;;:21;5870:383;;6102:10;6096:17;6158:15;6145:10;6141:2;6137:19;6130:44;5870:383;6225:17;;;;;;;;;;;;;;14:332:108;72:6;125:2;113:9;104:7;100:23;96:32;93:52;;;141:1;138;131:12;93:52;180:9;167:23;230:66;223:5;219:78;212:5;209:89;199:117;;312:1;309;302:12;543:154;-1:-1:-1;;;;;622:5:108;618:54;611:5;608:65;598:93;;687:1;684;677:12;702:161;768:5;813:2;804:6;799:3;795:16;791:25;788:45;;;829:1;826;819:12;788:45;-1:-1:-1;851:6:108;702:161;-1:-1:-1;702:161:108:o;868:763::-;985:6;993;1001;1009;1062:3;1050:9;1041:7;1037:23;1033:33;1030:53;;;1079:1;1076;1069:12;1030:53;1118:9;1105:23;1137:31;1162:5;1137:31;:::i;:::-;1187:5;-1:-1:-1;1265:2:108;1250:18;;1237:32;;-1:-1:-1;1347:2:108;1332:18;;1319:32;1360:33;1319:32;1360:33;:::i;:::-;1412:7;-1:-1:-1;1470:2:108;1455:18;;1442:32;1497:18;1486:30;;1483:50;;;1529:1;1526;1519:12;1483:50;1552:73;1617:7;1608:6;1597:9;1593:22;1552:73;:::i;:::-;1542:83;;;868:763;;;;;;;:::o;1636:184::-;1688:77;1685:1;1678:88;1785:4;1782:1;1775:15;1809:4;1806:1;1799:15;1825:843;1867:5;1920:3;1913:4;1905:6;1901:17;1897:27;1887:55;;1938:1;1935;1928:12;1887:55;1978:6;1965:20;2008:18;2000:6;1997:30;1994:56;;;2030:18;;:::i;:::-;2079:2;2073:9;2226:66;2221:2;2152:66;2145:4;2137:6;2133:17;2129:90;2125:99;2121:172;2113:6;2109:185;2360:6;2348:10;2345:22;2324:18;2312:10;2309:34;2306:62;2303:88;;;2371:18;;:::i;:::-;2407:2;2400:22;2431;;;2472:19;;;2493:4;2468:30;2465:39;-1:-1:-1;2462:59:108;;;2517:1;2514;2507:12;2462:59;2581:6;2574:4;2566:6;2562:17;2555:4;2547:6;2543:17;2530:58;2636:1;2608:19;;;2629:4;2604:30;2597:41;;;;2612:6;1825:843;-1:-1:-1;;;1825:843:108:o;2673:347::-;2724:8;2734:6;2788:3;2781:4;2773:6;2769:17;2765:27;2755:55;;2806:1;2803;2796:12;2755:55;-1:-1:-1;2829:20:108;;2872:18;2861:30;;2858:50;;;2904:1;2901;2894:12;2858:50;2941:4;2933:6;2929:17;2917:29;;2993:3;2986:4;2977:6;2969;2965:19;2961:30;2958:39;2955:59;;;3010:1;3007;3000:12;2955:59;2673:347;;;;;:::o;3025:162::-;3091:5;3136:3;3127:6;3122:3;3118:16;3114:26;3111:46;;;3153:1;3150;3143:12;3192:1261;3347:6;3355;3363;3371;3379;3387;3395;3448:3;3436:9;3427:7;3423:23;3419:33;3416:53;;;3465:1;3462;3455:12;3416:53;3505:9;3492:23;3538:18;3530:6;3527:30;3524:50;;;3570:1;3567;3560:12;3524:50;3593:49;3634:7;3625:6;3614:9;3610:22;3593:49;:::i;:::-;3583:59;-1:-1:-1;;3711:2:108;3696:18;;3683:32;;-1:-1:-1;3791:2:108;3776:18;;3763:32;3804:33;3763:32;3804:33;:::i;:::-;3856:7;-1:-1:-1;3916:2:108;3901:18;;3888:32;3945:18;3932:32;;3929:52;;;3977:1;3974;3967:12;3929:52;4016:60;4068:7;4057:8;4046:9;4042:24;4016:60;:::i;:::-;4095:8;;-1:-1:-1;3990:86:108;-1:-1:-1;;4203:3:108;4188:19;;4175:33;;-1:-1:-1;4287:3:108;4272:19;;4259:33;4317:18;4304:32;;4301:52;;;4349:1;4346;4339:12;4301:52;4372:75;4439:7;4428:8;4417:9;4413:24;4372:75;:::i;:::-;4362:85;;;3192:1261;;;;;;;;;;:::o;4458:1140::-;4604:6;4612;4620;4628;4636;4644;4697:3;4685:9;4676:7;4672:23;4668:33;4665:53;;;4714:1;4711;4704:12;4665:53;4754:9;4741:23;4787:18;4779:6;4776:30;4773:50;;;4819:1;4816;4809:12;4773:50;4842:49;4883:7;4874:6;4863:9;4859:22;4842:49;:::i;:::-;4832:59;;;4941:2;4930:9;4926:18;4913:32;4954:31;4979:5;4954:31;:::i;:::-;5004:5;-1:-1:-1;5062:2:108;5047:18;;5034:32;5091:18;5078:32;;5075:52;;;5123:1;5120;5113:12;5075:52;5162:60;5214:7;5203:8;5192:9;5188:24;5162:60;:::i;:::-;5241:8;;-1:-1:-1;5136:86:108;-1:-1:-1;;5349:2:108;5334:18;;5321:32;;-1:-1:-1;5432:3:108;5417:19;;5404:33;5462:18;5449:32;;5446:52;;;5494:1;5491;5484:12;5446:52;5517:75;5584:7;5573:8;5562:9;5558:24;5517:75;:::i;:::-;5507:85;;;4458:1140;;;;;;;;:::o;5603:922::-;5728:6;5736;5744;5752;5760;5813:3;5801:9;5792:7;5788:23;5784:33;5781:53;;;5830:1;5827;5820:12;5781:53;5870:9;5857:23;5903:18;5895:6;5892:30;5889:50;;;5935:1;5932;5925:12;5889:50;5958:73;6023:7;6014:6;6003:9;5999:22;5958:73;:::i;:::-;5948:83;-1:-1:-1;;6100:2:108;6085:18;;6072:32;;-1:-1:-1;6180:2:108;6165:18;;6152:32;6193:33;6152:32;6193:33;:::i;:::-;6245:7;-1:-1:-1;6305:2:108;6290:18;;6277:32;6334:18;6321:32;;6318:52;;;6366:1;6363;6356:12;6318:52;6405:60;6457:7;6446:8;6435:9;6431:24;6405:60;:::i;:::-;5603:922;;;;-1:-1:-1;5603:922:108;;-1:-1:-1;6484:8:108;;6379:86;5603:922;-1:-1:-1;;;5603:922:108:o;6761:226::-;6820:6;6873:2;6861:9;6852:7;6848:23;6844:32;6841:52;;;6889:1;6886;6879:12;6841:52;-1:-1:-1;6934:23:108;;6761:226;-1:-1:-1;6761:226:108:o;7174:367::-;7242:6;7250;7303:2;7291:9;7282:7;7278:23;7274:32;7271:52;;;7319:1;7316;7309:12;7271:52;7364:23;;;-1:-1:-1;7463:2:108;7448:18;;7435:32;7476:33;7435:32;7476:33;:::i;:::-;7528:7;7518:17;;;7174:367;;;;;:::o;7546:1119::-;7692:6;7700;7708;7716;7724;7732;7785:3;7773:9;7764:7;7760:23;7756:33;7753:53;;;7802:1;7799;7792:12;7753:53;7842:9;7829:23;7875:18;7867:6;7864:30;7861:50;;;7907:1;7904;7897:12;7861:50;7930:49;7971:7;7962:6;7951:9;7947:22;7930:49;:::i;:::-;7920:59;-1:-1:-1;;8048:2:108;8033:18;;8020:32;;-1:-1:-1;8149:2:108;8134:18;;8121:32;;-1:-1:-1;8232:2:108;8217:18;;8204:32;8261:18;8248:32;;8245:52;;;8293:1;8290;8283:12;8245:52;8332:60;8384:7;8373:8;8362:9;8358:24;8332:60;:::i;:::-;8411:8;;-1:-1:-1;8306:86:108;-1:-1:-1;;8499:3:108;8484:19;;8471:33;8529:18;8516:32;;8513:52;;;8561:1;8558;8551:12;8670:388;8738:6;8746;8799:2;8787:9;8778:7;8774:23;8770:32;8767:52;;;8815:1;8812;8805:12;8767:52;8854:9;8841:23;8873:31;8898:5;8873:31;:::i;:::-;8923:5;-1:-1:-1;8980:2:108;8965:18;;8952:32;8993:33;8952:32;8993:33;:::i;9063:455::-;9140:6;9148;9201:2;9189:9;9180:7;9176:23;9172:32;9169:52;;;9217:1;9214;9207:12;9169:52;9256:9;9243:23;9275:31;9300:5;9275:31;:::i;:::-;9325:5;-1:-1:-1;9381:2:108;9366:18;;9353:32;9408:18;9397:30;;9394:50;;;9440:1;9437;9430:12;9394:50;9463:49;9504:7;9495:6;9484:9;9480:22;9463:49;:::i;:::-;9453:59;;;9063:455;;;;;:::o;9523:501::-;9622:6;9630;9683:2;9671:9;9662:7;9658:23;9654:32;9651:52;;;9699:1;9696;9689:12;9651:52;9738:9;9725:23;9757:31;9782:5;9757:31;:::i;:::-;9807:5;-1:-1:-1;9863:2:108;9848:18;;9835:32;9890:18;9879:30;;9876:50;;;9922:1;9919;9912:12;9876:50;9945:73;10010:7;10001:6;9990:9;9986:22;9945:73;:::i;10029:836::-;10155:6;10163;10171;10179;10232:3;10220:9;10211:7;10207:23;10203:33;10200:53;;;10249:1;10246;10239:12;10200:53;10289:9;10276:23;10322:18;10314:6;10311:30;10308:50;;;10354:1;10351;10344:12;10308:50;10377:49;10418:7;10409:6;10398:9;10394:22;10377:49;:::i;:::-;10367:59;-1:-1:-1;;10495:2:108;10480:18;;10467:32;;-1:-1:-1;10575:2:108;10560:18;;10547:32;10588:33;10547:32;10588:33;:::i;:::-;10640:7;-1:-1:-1;10700:2:108;10685:18;;10672:32;10729:18;10716:32;;10713:52;;;10761:1;10758;10751:12;10713:52;10784:75;10851:7;10840:8;10829:9;10825:24;10784:75;:::i;10870:815::-;10996:6;11004;11012;11020;11073:3;11061:9;11052:7;11048:23;11044:33;11041:53;;;11090:1;11087;11080:12;11041:53;11130:9;11117:23;11163:18;11155:6;11152:30;11149:50;;;11195:1;11192;11185:12;11149:50;11218:49;11259:7;11250:6;11239:9;11235:22;11218:49;:::i;:::-;11208:59;-1:-1:-1;;11336:2:108;11321:18;;11308:32;;-1:-1:-1;11437:2:108;11422:18;;11409:32;;-1:-1:-1;11520:2:108;11505:18;;11492:32;11549:18;11536:32;;11533:52;;;11581:1;11578;11571:12;11690:250;11775:1;11785:113;11799:6;11796:1;11793:13;11785:113;;;11875:11;;;11869:18;11856:11;;;11849:39;11821:2;11814:10;11785:113;;;-1:-1:-1;;11932:1:108;11914:16;;11907:27;11690:250::o;11945:330::-;11987:3;12025:5;12019:12;12052:6;12047:3;12040:19;12068:76;12137:6;12130:4;12125:3;12121:14;12114:4;12107:5;12103:16;12068:76;:::i;:::-;12189:2;12177:15;12194:66;12173:88;12164:98;;;;12264:4;12160:109;;11945:330;-1:-1:-1;;11945:330:108:o;12280:220::-;12429:2;12418:9;12411:21;12392:4;12449:45;12490:2;12479:9;12475:18;12467:6;12449:45;:::i;12505:1064::-;12639:6;12647;12655;12663;12671;12679;12732:3;12720:9;12711:7;12707:23;12703:33;12700:53;;;12749:1;12746;12739:12;12700:53;12789:9;12776:23;12822:18;12814:6;12811:30;12808:50;;;12854:1;12851;12844:12;12808:50;12877:73;12942:7;12933:6;12922:9;12918:22;12877:73;:::i;:::-;12867:83;;;13000:2;12989:9;12985:18;12972:32;13013:31;13038:5;13013:31;:::i;:::-;13063:5;-1:-1:-1;13141:2:108;13126:18;;13113:32;;-1:-1:-1;13223:2:108;13208:18;;13195:32;13236:33;13195:32;13236:33;:::i;:::-;13288:7;-1:-1:-1;13348:3:108;13333:19;;13320:33;13378:18;13365:32;;13362:52;;;13410:1;13407;13400:12;13362:52;13449:60;13501:7;13490:8;13479:9;13475:24;13449:60;:::i;:::-;12505:1064;;;;-1:-1:-1;12505:1064:108;;-1:-1:-1;12505:1064:108;;13528:8;;12505:1064;-1:-1:-1;;;12505:1064:108:o;13574:508::-;13651:6;13659;13667;13720:2;13708:9;13699:7;13695:23;13691:32;13688:52;;;13736:1;13733;13726:12;13688:52;13775:9;13762:23;13794:31;13819:5;13794:31;:::i;:::-;13844:5;-1:-1:-1;13922:2:108;13907:18;;13894:32;;-1:-1:-1;14004:2:108;13989:18;;13976:32;14017:33;13976:32;14017:33;:::i;:::-;14069:7;14059:17;;;13574:508;;;;;:::o;14389:118::-;14475:5;14468:13;14461:21;14454:5;14451:32;14441:60;;14497:1;14494;14487:12;14512:245;14579:6;14632:2;14620:9;14611:7;14607:23;14603:32;14600:52;;;14648:1;14645;14638:12;14600:52;14680:9;14674:16;14699:28;14721:5;14699:28;:::i;14762:559::-;14820:5;14827:6;14887:3;14874:17;14969:66;14958:8;14942:14;14938:29;14934:102;14914:18;14910:127;14900:155;;15051:1;15048;15041:12;14900:155;15079:33;;15183:4;15170:18;;;-1:-1:-1;15131:21:108;;-1:-1:-1;15211:18:108;15200:30;;15197:50;;;15243:1;15240;15233:12;15197:50;15290:6;15274:14;15270:27;15263:5;15259:39;15256:59;;;15311:1;15308;15301:12;15326:325;15414:6;15409:3;15402:19;15466:6;15459:5;15452:4;15447:3;15443:14;15430:43;;15518:1;15511:4;15502:6;15497:3;15493:16;15489:27;15482:38;15384:3;15640:4;15570:66;15565:2;15557:6;15553:15;15549:88;15544:3;15540:98;15536:109;15529:116;;15326:325;;;;:::o;15656:798::-;15845:2;15834:9;15827:21;15808:4;15883:6;15870:20;15899:31;15924:5;15899:31;:::i;:::-;-1:-1:-1;;;;;15970:5:108;15966:54;15961:2;15950:9;15946:18;15939:82;;16070:2;16062:6;16058:15;16045:29;16106:18;16097:7;16093:32;16156:2;16147:7;16144:15;16134:43;;16173:1;16170;16163:12;16134:43;16213:2;16208;16197:9;16193:18;16186:30;;;16259:55;16310:2;16302:6;16298:15;16290:6;16259:55;:::i;:::-;16352:4;16345;16334:9;16330:20;16323:34;16374:74;16443:3;16432:9;16428:19;16414:12;16400;16374:74;:::i;16459:230::-;16529:6;16582:2;16570:9;16561:7;16557:23;16553:32;16550:52;;;16598:1;16595;16588:12;16550:52;-1:-1:-1;16643:16:108;;16459:230;-1:-1:-1;16459:230:108:o;16694:937::-;16759:3;16805:5;16792:19;16820:33;16845:7;16820:33;:::i;:::-;-1:-1:-1;;;;;16874:56:108;16862:69;;16979:4;16968:16;;16955:30;16994;16955;16994;:::i;:::-;17063:15;17056:23;17049:4;17040:14;;17033:47;17128:4;17117:16;;17104:30;17143:33;17104:30;17143:33;:::i;:::-;-1:-1:-1;;;;;17208:56:108;17201:4;17192:14;;17185:80;17308:55;17357:4;17346:16;;17350:5;17308:55;:::i;:::-;17395:4;17388;17383:3;17379:14;17372:28;17421:69;17484:4;17479:3;17475:14;17461:12;17447;17421:69;:::i;:::-;17559:4;17548:16;;;17535:30;17581:14;;;;17574:31;;;;-1:-1:-1;17409:81:108;;16694:937;-1:-1:-1;;16694:937:108:o;17636:1041::-;18067:3;18056:9;18049:22;18030:4;18094:46;18135:3;18124:9;18120:19;18112:6;18094:46;:::i;:::-;-1:-1:-1;;;;;18180:6:108;18176:55;18171:2;18160:9;18156:18;18149:83;18268:6;18263:2;18252:9;18248:18;18241:34;18311:6;18306:2;18295:9;18291:18;18284:34;18355:6;18349:3;18338:9;18334:19;18327:35;18411:9;18403:6;18399:22;18393:3;18382:9;18378:19;18371:51;18445:49;18487:6;18479;18471;18445:49;:::i;:::-;18431:63;;18531:6;18525:3;18514:9;18510:19;18503:35;18587:9;18579:6;18575:22;18569:3;18558:9;18554:19;18547:51;18615:56;18664:6;18656;18615:56;:::i;:::-;18607:64;17636:1041;-1:-1:-1;;;;;;;;;;;;17636:1041:108:o;18864:364::-;18943:6;18951;19004:2;18992:9;18983:7;18979:23;18975:32;18972:52;;;19020:1;19017;19010:12;18972:52;19052:9;19046:16;19071:31;19096:5;19071:31;:::i;:::-;19192:2;19177:18;;;;19171:25;19121:5;;19171:25;;-1:-1:-1;;;18864:364:108:o;19655:704::-;19974:3;19963:9;19956:22;19937:4;20001:46;20042:3;20031:9;20027:19;20019:6;20001:46;:::i;:::-;20095:9;20087:6;20083:22;20078:2;20067:9;20063:18;20056:50;20129:49;20171:6;20163;20155;20129:49;:::i;:::-;20115:63;;20214:6;20209:2;20198:9;20194:18;20187:34;20269:9;20261:6;20257:22;20252:2;20241:9;20237:18;20230:50;20297:56;20346:6;20338;20297:56;:::i;:::-;20289:64;19655:704;-1:-1:-1;;;;;;;;19655:704:108:o;20364:1105::-;20659:3;20648:9;20641:22;20622:4;20706:46;20745:6;20737;20706:46;:::i;:::-;20789:4;20783:3;20772:9;20768:19;20761:33;20817:74;20886:3;20875:9;20871:19;20857:12;20843;20817:74;:::i;:::-;20803:88;;;20938:4;20930:6;20926:17;20913:31;20953;20978:5;20953:31;:::i;:::-;-1:-1:-1;;;;;21021:54:108;;;21015:3;21000:19;;20993:83;21146:4;21134:17;;;21121:31;21183:3;21168:19;;21161:36;21235:55;;;21228:4;21213:20;;21206:85;21307:20;;21300:36;;;21374:22;;;-1:-1:-1;21352:20:108;;21345:52;21414:49;21378:6;21448;21440;21414:49;:::i;22758:1058::-;23233:3;23222:9;23215:22;23196:4;23260:46;23301:3;23290:9;23286:19;23278:6;23260:46;:::i;:::-;-1:-1:-1;;;;;23346:6:108;23342:55;23337:2;23326:9;23322:18;23315:83;23434:6;23429:2;23418:9;23414:18;23407:34;23477:6;23472:2;23461:9;23457:18;23450:34;23521:6;23515:3;23504:9;23500:19;23493:35;23559:9;23551:6;23547:22;23606:2;23600:3;23589:9;23585:19;23578:31;23633:1;23625:6;23618:17;23672:6;23666:3;23655:9;23651:19;23644:35;23724:2;23720;23716:11;23710:3;23699:9;23695:19;23688:40;;23745:65;23806:2;23798:6;23794:15;23786:6;23745:65;:::i;:::-;23737:73;22758:1058;-1:-1:-1;;;;;;;;;;22758:1058:108:o;25609:287::-;25738:3;25776:6;25770:13;25792:66;25851:6;25846:3;25839:4;25831:6;25827:17;25792:66;:::i;:::-;25874:16;;;;;25609:287;-1:-1:-1;;25609:287:108:o","linkReferences":{},"immutableReferences":{"44509":[{"start":9711,"length":32},{"start":9752,"length":32},{"start":10222,"length":32}]}},"methodIdentifiers":{"DEFAULT_ADMIN_ROLE()":"a217fddf","FUNGIBLE_MODULE_ADDRESS()":"3ce4a5bc","PAUSER_ROLE()":"e63ab1e9","UPGRADE_INTERFACE_VERSION()":"ad3cb1cc","call(bytes,address,bytes,uint256,(address,bool,address,bytes,uint256))":"1cb5ea75","deposit(address,uint256,address)":"f45346dc","depositAndCall((bytes,address,uint256),address,uint256,address,bytes)":"c39aca37","depositAndCall((bytes,address,uint256),uint256,address,bytes)":"21501a95","depositAndRevert(address,uint256,address,(address,uint64,bytes))":"0310eb76","execute((bytes,address,uint256),address,uint256,address,bytes)":"bcf7f32b","executeRevert(address,(address,uint64,bytes))":"717d335f","getRoleAdmin(bytes32)":"248a9ca3","grantRole(bytes32,address)":"2f2ff15d","hasRole(bytes32,address)":"91d14854","initialize(address,address)":"485cc955","pause()":"8456cb59","paused()":"5c975abb","proxiableUUID()":"52d1902d","renounceRole(bytes32,address)":"36568abe","revokeRole(bytes32,address)":"d547741f","supportsInterface(bytes4)":"01ffc9a7","unpause()":"3f4ba83a","upgradeToAndCall(address,bytes)":"4f1ef286","withdraw(bytes,uint256,address,(address,bool,address,bytes,uint256))":"7c0dcb5f","withdraw(bytes,uint256,uint256,(address,bool,address,bytes,uint256))":"97a1cef1","withdrawAndCall(bytes,uint256,address,bytes,uint256,(address,bool,address,bytes,uint256))":"048ae42c","withdrawAndCall(bytes,uint256,uint256,bytes,(address,bool,address,bytes,uint256))":"3b283933","zetaToken()":"21e093b1"},"rawMetadata":"{\"compiler\":{\"version\":\"0.8.26+commit.8a97fa7a\"},\"language\":\"Solidity\",\"output\":{\"abi\":[{\"inputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"constructor\"},{\"inputs\":[],\"name\":\"AccessControlBadConfirmation\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"account\",\"type\":\"address\"},{\"internalType\":\"bytes32\",\"name\":\"neededRole\",\"type\":\"bytes32\"}],\"name\":\"AccessControlUnauthorizedAccount\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"target\",\"type\":\"address\"}],\"name\":\"AddressEmptyCode\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"CallerIsNotFungibleModule\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"implementation\",\"type\":\"address\"}],\"name\":\"ERC1967InvalidImplementation\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"ERC1967NonPayable\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"EmptyMessage\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"EnforcedPause\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"ExpectedPause\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"FailedInnerCall\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"FailedZetaSent\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"GasFeeTransferFailed\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"InsufficientZRC20Amount\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"InsufficientZetaAmount\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"InvalidInitialization\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"InvalidTarget\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"NotInitializing\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"OnlyWZETAOrFungible\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"ReentrancyGuardReentrantCall\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"UUPSUnauthorizedCallContext\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"bytes32\",\"name\":\"slot\",\"type\":\"bytes32\"}],\"name\":\"UUPSUnsupportedProxiableUUID\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"WithdrawalFailed\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"ZRC20BurnFailed\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"ZRC20DepositFailed\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"ZRC20TransferFailed\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"ZeroAddress\",\"type\":\"error\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"sender\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"zrc20\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"bytes\",\"name\":\"receiver\",\"type\":\"bytes\"},{\"indexed\":false,\"internalType\":\"bytes\",\"name\":\"message\",\"type\":\"bytes\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"gasLimit\",\"type\":\"uint256\"},{\"components\":[{\"internalType\":\"address\",\"name\":\"revertAddress\",\"type\":\"address\"},{\"internalType\":\"bool\",\"name\":\"callOnRevert\",\"type\":\"bool\"},{\"internalType\":\"address\",\"name\":\"abortAddress\",\"type\":\"address\"},{\"internalType\":\"bytes\",\"name\":\"revertMessage\",\"type\":\"bytes\"},{\"internalType\":\"uint256\",\"name\":\"onRevertGasLimit\",\"type\":\"uint256\"}],\"indexed\":false,\"internalType\":\"struct RevertOptions\",\"name\":\"revertOptions\",\"type\":\"tuple\"}],\"name\":\"Called\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"uint64\",\"name\":\"version\",\"type\":\"uint64\"}],\"name\":\"Initialized\",\"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\":false,\"internalType\":\"address\",\"name\":\"account\",\"type\":\"address\"}],\"name\":\"Unpaused\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"implementation\",\"type\":\"address\"}],\"name\":\"Upgraded\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"sender\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"uint256\",\"name\":\"chainId\",\"type\":\"uint256\"},{\"indexed\":false,\"internalType\":\"bytes\",\"name\":\"receiver\",\"type\":\"bytes\"},{\"indexed\":false,\"internalType\":\"address\",\"name\":\"zrc20\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"value\",\"type\":\"uint256\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"gasfee\",\"type\":\"uint256\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"protocolFlatFee\",\"type\":\"uint256\"},{\"indexed\":false,\"internalType\":\"bytes\",\"name\":\"message\",\"type\":\"bytes\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"gasLimit\",\"type\":\"uint256\"},{\"components\":[{\"internalType\":\"address\",\"name\":\"revertAddress\",\"type\":\"address\"},{\"internalType\":\"bool\",\"name\":\"callOnRevert\",\"type\":\"bool\"},{\"internalType\":\"address\",\"name\":\"abortAddress\",\"type\":\"address\"},{\"internalType\":\"bytes\",\"name\":\"revertMessage\",\"type\":\"bytes\"},{\"internalType\":\"uint256\",\"name\":\"onRevertGasLimit\",\"type\":\"uint256\"}],\"indexed\":false,\"internalType\":\"struct RevertOptions\",\"name\":\"revertOptions\",\"type\":\"tuple\"}],\"name\":\"Withdrawn\",\"type\":\"event\"},{\"inputs\":[],\"name\":\"DEFAULT_ADMIN_ROLE\",\"outputs\":[{\"internalType\":\"bytes32\",\"name\":\"\",\"type\":\"bytes32\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"FUNGIBLE_MODULE_ADDRESS\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"PAUSER_ROLE\",\"outputs\":[{\"internalType\":\"bytes32\",\"name\":\"\",\"type\":\"bytes32\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"UPGRADE_INTERFACE_VERSION\",\"outputs\":[{\"internalType\":\"string\",\"name\":\"\",\"type\":\"string\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes\",\"name\":\"receiver\",\"type\":\"bytes\"},{\"internalType\":\"address\",\"name\":\"zrc20\",\"type\":\"address\"},{\"internalType\":\"bytes\",\"name\":\"message\",\"type\":\"bytes\"},{\"internalType\":\"uint256\",\"name\":\"gasLimit\",\"type\":\"uint256\"},{\"components\":[{\"internalType\":\"address\",\"name\":\"revertAddress\",\"type\":\"address\"},{\"internalType\":\"bool\",\"name\":\"callOnRevert\",\"type\":\"bool\"},{\"internalType\":\"address\",\"name\":\"abortAddress\",\"type\":\"address\"},{\"internalType\":\"bytes\",\"name\":\"revertMessage\",\"type\":\"bytes\"},{\"internalType\":\"uint256\",\"name\":\"onRevertGasLimit\",\"type\":\"uint256\"}],\"internalType\":\"struct RevertOptions\",\"name\":\"revertOptions\",\"type\":\"tuple\"}],\"name\":\"call\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"zrc20\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"amount\",\"type\":\"uint256\"},{\"internalType\":\"address\",\"name\":\"target\",\"type\":\"address\"}],\"name\":\"deposit\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"components\":[{\"internalType\":\"bytes\",\"name\":\"origin\",\"type\":\"bytes\"},{\"internalType\":\"address\",\"name\":\"sender\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"chainID\",\"type\":\"uint256\"}],\"internalType\":\"struct zContext\",\"name\":\"context\",\"type\":\"tuple\"},{\"internalType\":\"uint256\",\"name\":\"amount\",\"type\":\"uint256\"},{\"internalType\":\"address\",\"name\":\"target\",\"type\":\"address\"},{\"internalType\":\"bytes\",\"name\":\"message\",\"type\":\"bytes\"}],\"name\":\"depositAndCall\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"components\":[{\"internalType\":\"bytes\",\"name\":\"origin\",\"type\":\"bytes\"},{\"internalType\":\"address\",\"name\":\"sender\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"chainID\",\"type\":\"uint256\"}],\"internalType\":\"struct zContext\",\"name\":\"context\",\"type\":\"tuple\"},{\"internalType\":\"address\",\"name\":\"zrc20\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"amount\",\"type\":\"uint256\"},{\"internalType\":\"address\",\"name\":\"target\",\"type\":\"address\"},{\"internalType\":\"bytes\",\"name\":\"message\",\"type\":\"bytes\"}],\"name\":\"depositAndCall\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"zrc20\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"amount\",\"type\":\"uint256\"},{\"internalType\":\"address\",\"name\":\"target\",\"type\":\"address\"},{\"components\":[{\"internalType\":\"address\",\"name\":\"asset\",\"type\":\"address\"},{\"internalType\":\"uint64\",\"name\":\"amount\",\"type\":\"uint64\"},{\"internalType\":\"bytes\",\"name\":\"revertMessage\",\"type\":\"bytes\"}],\"internalType\":\"struct RevertContext\",\"name\":\"revertContext\",\"type\":\"tuple\"}],\"name\":\"depositAndRevert\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"components\":[{\"internalType\":\"bytes\",\"name\":\"origin\",\"type\":\"bytes\"},{\"internalType\":\"address\",\"name\":\"sender\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"chainID\",\"type\":\"uint256\"}],\"internalType\":\"struct zContext\",\"name\":\"context\",\"type\":\"tuple\"},{\"internalType\":\"address\",\"name\":\"zrc20\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"amount\",\"type\":\"uint256\"},{\"internalType\":\"address\",\"name\":\"target\",\"type\":\"address\"},{\"internalType\":\"bytes\",\"name\":\"message\",\"type\":\"bytes\"}],\"name\":\"execute\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"target\",\"type\":\"address\"},{\"components\":[{\"internalType\":\"address\",\"name\":\"asset\",\"type\":\"address\"},{\"internalType\":\"uint64\",\"name\":\"amount\",\"type\":\"uint64\"},{\"internalType\":\"bytes\",\"name\":\"revertMessage\",\"type\":\"bytes\"}],\"internalType\":\"struct RevertContext\",\"name\":\"revertContext\",\"type\":\"tuple\"}],\"name\":\"executeRevert\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"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\":\"address\",\"name\":\"account\",\"type\":\"address\"}],\"name\":\"grantRole\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes32\",\"name\":\"role\",\"type\":\"bytes32\"},{\"internalType\":\"address\",\"name\":\"account\",\"type\":\"address\"}],\"name\":\"hasRole\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"zetaToken_\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"admin_\",\"type\":\"address\"}],\"name\":\"initialize\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"pause\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"paused\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"proxiableUUID\",\"outputs\":[{\"internalType\":\"bytes32\",\"name\":\"\",\"type\":\"bytes32\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes32\",\"name\":\"role\",\"type\":\"bytes32\"},{\"internalType\":\"address\",\"name\":\"callerConfirmation\",\"type\":\"address\"}],\"name\":\"renounceRole\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes32\",\"name\":\"role\",\"type\":\"bytes32\"},{\"internalType\":\"address\",\"name\":\"account\",\"type\":\"address\"}],\"name\":\"revokeRole\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes4\",\"name\":\"interfaceId\",\"type\":\"bytes4\"}],\"name\":\"supportsInterface\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"unpause\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"newImplementation\",\"type\":\"address\"},{\"internalType\":\"bytes\",\"name\":\"data\",\"type\":\"bytes\"}],\"name\":\"upgradeToAndCall\",\"outputs\":[],\"stateMutability\":\"payable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes\",\"name\":\"receiver\",\"type\":\"bytes\"},{\"internalType\":\"uint256\",\"name\":\"amount\",\"type\":\"uint256\"},{\"internalType\":\"address\",\"name\":\"zrc20\",\"type\":\"address\"},{\"components\":[{\"internalType\":\"address\",\"name\":\"revertAddress\",\"type\":\"address\"},{\"internalType\":\"bool\",\"name\":\"callOnRevert\",\"type\":\"bool\"},{\"internalType\":\"address\",\"name\":\"abortAddress\",\"type\":\"address\"},{\"internalType\":\"bytes\",\"name\":\"revertMessage\",\"type\":\"bytes\"},{\"internalType\":\"uint256\",\"name\":\"onRevertGasLimit\",\"type\":\"uint256\"}],\"internalType\":\"struct RevertOptions\",\"name\":\"revertOptions\",\"type\":\"tuple\"}],\"name\":\"withdraw\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes\",\"name\":\"receiver\",\"type\":\"bytes\"},{\"internalType\":\"uint256\",\"name\":\"amount\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"chainId\",\"type\":\"uint256\"},{\"components\":[{\"internalType\":\"address\",\"name\":\"revertAddress\",\"type\":\"address\"},{\"internalType\":\"bool\",\"name\":\"callOnRevert\",\"type\":\"bool\"},{\"internalType\":\"address\",\"name\":\"abortAddress\",\"type\":\"address\"},{\"internalType\":\"bytes\",\"name\":\"revertMessage\",\"type\":\"bytes\"},{\"internalType\":\"uint256\",\"name\":\"onRevertGasLimit\",\"type\":\"uint256\"}],\"internalType\":\"struct RevertOptions\",\"name\":\"revertOptions\",\"type\":\"tuple\"}],\"name\":\"withdraw\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes\",\"name\":\"receiver\",\"type\":\"bytes\"},{\"internalType\":\"uint256\",\"name\":\"amount\",\"type\":\"uint256\"},{\"internalType\":\"address\",\"name\":\"zrc20\",\"type\":\"address\"},{\"internalType\":\"bytes\",\"name\":\"message\",\"type\":\"bytes\"},{\"internalType\":\"uint256\",\"name\":\"gasLimit\",\"type\":\"uint256\"},{\"components\":[{\"internalType\":\"address\",\"name\":\"revertAddress\",\"type\":\"address\"},{\"internalType\":\"bool\",\"name\":\"callOnRevert\",\"type\":\"bool\"},{\"internalType\":\"address\",\"name\":\"abortAddress\",\"type\":\"address\"},{\"internalType\":\"bytes\",\"name\":\"revertMessage\",\"type\":\"bytes\"},{\"internalType\":\"uint256\",\"name\":\"onRevertGasLimit\",\"type\":\"uint256\"}],\"internalType\":\"struct RevertOptions\",\"name\":\"revertOptions\",\"type\":\"tuple\"}],\"name\":\"withdrawAndCall\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes\",\"name\":\"receiver\",\"type\":\"bytes\"},{\"internalType\":\"uint256\",\"name\":\"amount\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"chainId\",\"type\":\"uint256\"},{\"internalType\":\"bytes\",\"name\":\"message\",\"type\":\"bytes\"},{\"components\":[{\"internalType\":\"address\",\"name\":\"revertAddress\",\"type\":\"address\"},{\"internalType\":\"bool\",\"name\":\"callOnRevert\",\"type\":\"bool\"},{\"internalType\":\"address\",\"name\":\"abortAddress\",\"type\":\"address\"},{\"internalType\":\"bytes\",\"name\":\"revertMessage\",\"type\":\"bytes\"},{\"internalType\":\"uint256\",\"name\":\"onRevertGasLimit\",\"type\":\"uint256\"}],\"internalType\":\"struct RevertOptions\",\"name\":\"revertOptions\",\"type\":\"tuple\"}],\"name\":\"withdrawAndCall\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"zetaToken\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"stateMutability\":\"payable\",\"type\":\"receive\"}],\"devdoc\":{\"details\":\"The contract doesn't hold any funds and should never have active allowances.\",\"errors\":{\"AccessControlBadConfirmation()\":[{\"details\":\"The caller of a function is not the expected one. NOTE: Don't confuse with {AccessControlUnauthorizedAccount}.\"}],\"AccessControlUnauthorizedAccount(address,bytes32)\":[{\"details\":\"The `account` is missing a role.\"}],\"AddressEmptyCode(address)\":[{\"details\":\"There's no code at `target` (it is not a contract).\"}],\"ERC1967InvalidImplementation(address)\":[{\"details\":\"The `implementation` of the proxy is invalid.\"}],\"ERC1967NonPayable()\":[{\"details\":\"An upgrade function sees `msg.value > 0` that may be lost.\"}],\"EnforcedPause()\":[{\"details\":\"The operation failed because the contract is paused.\"}],\"ExpectedPause()\":[{\"details\":\"The operation failed because the contract is not paused.\"}],\"FailedInnerCall()\":[{\"details\":\"A call to an address target failed. The target may have reverted.\"}],\"InvalidInitialization()\":[{\"details\":\"The contract is already initialized.\"}],\"NotInitializing()\":[{\"details\":\"The contract is not initializing.\"}],\"ReentrancyGuardReentrantCall()\":[{\"details\":\"Unauthorized reentrant call.\"}],\"UUPSUnauthorizedCallContext()\":[{\"details\":\"The call is from an unauthorized context.\"}],\"UUPSUnsupportedProxiableUUID(bytes32)\":[{\"details\":\"The storage `slot` is unsupported as a UUID.\"}]},\"events\":{\"Called(address,address,bytes,bytes,uint256,(address,bool,address,bytes,uint256))\":{\"params\":{\"gasLimit\":\"Gas limit.\",\"message\":\"The calldata passed to the contract call.\",\"receiver\":\"The receiver address on the external chain.\",\"revertOptions\":\"Revert options.\",\"sender\":\"The address of the sender.\",\"zrc20\":\"Address of zrc20 to pay fees.\"}},\"Initialized(uint64)\":{\"details\":\"Triggered when the contract has been initialized or reinitialized.\"},\"Paused(address)\":{\"details\":\"Emitted when the pause is triggered by `account`.\"},\"RoleAdminChanged(bytes32,bytes32,bytes32)\":{\"details\":\"Emitted when `newAdminRole` is set as ``role``'s admin role, replacing `previousAdminRole` `DEFAULT_ADMIN_ROLE` is the starting admin for all roles, despite {RoleAdminChanged} not being emitted signaling this.\"},\"RoleGranted(bytes32,address,address)\":{\"details\":\"Emitted when `account` is granted `role`. `sender` is the account that originated the contract call, an admin role bearer except when using {AccessControl-_setupRole}.\"},\"RoleRevoked(bytes32,address,address)\":{\"details\":\"Emitted when `account` is revoked `role`. `sender` is the account that originated the contract call: - if using `revokeRole`, it is the admin role bearer - if using `renounceRole`, it is the role bearer (i.e. `account`)\"},\"Unpaused(address)\":{\"details\":\"Emitted when the pause is lifted by `account`.\"},\"Upgraded(address)\":{\"details\":\"Emitted when the implementation is upgraded.\"},\"Withdrawn(address,uint256,bytes,address,uint256,uint256,uint256,bytes,uint256,(address,bool,address,bytes,uint256))\":{\"params\":{\"chainId\":\"Chain id of external chain.\",\"gasLimit\":\"Gas limit.\",\"gasfee\":\"The gas fee for the withdrawal.\",\"message\":\"The calldata passed to the contract call.\",\"protocolFlatFee\":\"The protocol flat fee for the withdrawal.\",\"receiver\":\"The receiver address on the external chain.\",\"revertOptions\":\"Revert options.\",\"sender\":\"The address from which the tokens are withdrawn.\",\"value\":\"The amount of tokens withdrawn.\",\"zrc20\":\"The address of the ZRC20 token.\"}}},\"kind\":\"dev\",\"methods\":{\"call(bytes,address,bytes,uint256,(address,bool,address,bytes,uint256))\":{\"params\":{\"gasLimit\":\"Gas limit.\",\"message\":\"The calldata to pass to the contract call.\",\"receiver\":\"The receiver address on the external chain.\",\"revertOptions\":\"Revert options.\",\"zrc20\":\"Address of zrc20 to pay fees.\"}},\"constructor\":{\"custom:oz-upgrades-unsafe-allow\":\"constructor\"},\"deposit(address,uint256,address)\":{\"params\":{\"amount\":\"The amount of tokens to deposit.\",\"target\":\"The target address to receive the deposited tokens.\",\"zrc20\":\"The address of the ZRC20 token.\"}},\"depositAndCall((bytes,address,uint256),address,uint256,address,bytes)\":{\"params\":{\"amount\":\"The amount of tokens to transfer.\",\"context\":\"The context of the cross-chain call.\",\"message\":\"The calldata to pass to the contract call.\",\"target\":\"The target contract to call.\",\"zrc20\":\"The address of the ZRC20 token.\"}},\"depositAndCall((bytes,address,uint256),uint256,address,bytes)\":{\"params\":{\"amount\":\"The amount of tokens to transfer.\",\"context\":\"The context of the cross-chain call.\",\"message\":\"The calldata to pass to the contract call.\",\"target\":\"The target contract to call.\"}},\"depositAndRevert(address,uint256,address,(address,uint64,bytes))\":{\"params\":{\"amount\":\"The amount of tokens to revert.\",\"revertContext\":\"Revert context to pass to onRevert.\",\"target\":\"The target contract to call.\",\"zrc20\":\"The address of the ZRC20 token.\"}},\"execute((bytes,address,uint256),address,uint256,address,bytes)\":{\"params\":{\"amount\":\"The amount of tokens to transfer.\",\"context\":\"The context of the cross-chain call.\",\"message\":\"The calldata to pass to the contract call.\",\"target\":\"The target contract to call.\",\"zrc20\":\"The address of the ZRC20 token.\"}},\"executeRevert(address,(address,uint64,bytes))\":{\"params\":{\"revertContext\":\"Revert context to pass to onRevert.\",\"target\":\"The target contract to call.\"}},\"getRoleAdmin(bytes32)\":{\"details\":\"Returns the admin role that controls `role`. See {grantRole} and {revokeRole}. To change a role's admin, use {_setRoleAdmin}.\"},\"grantRole(bytes32,address)\":{\"details\":\"Grants `role` to `account`. If `account` had not been already granted `role`, emits a {RoleGranted} event. Requirements: - the caller must have ``role``'s admin role. May emit a {RoleGranted} event.\"},\"hasRole(bytes32,address)\":{\"details\":\"Returns `true` if `account` has been granted `role`.\"},\"initialize(address,address)\":{\"details\":\"Using admin to authorize upgrades and pause.\"},\"paused()\":{\"details\":\"Returns true if the contract is paused, and false otherwise.\"},\"proxiableUUID()\":{\"details\":\"Implementation of the ERC1822 {proxiableUUID} function. This returns the storage slot used by the implementation. It is used to validate the implementation's compatibility when performing an upgrade. IMPORTANT: A proxy pointing at a proxiable contract should not be considered proxiable itself, because this risks bricking a proxy that upgrades to it, by delegating to itself until out of gas. Thus it is critical that this function revert if invoked through a proxy. This is guaranteed by the `notDelegated` modifier.\"},\"renounceRole(bytes32,address)\":{\"details\":\"Revokes `role` from the calling account. Roles are often managed via {grantRole} and {revokeRole}: this function's purpose is to provide a mechanism for accounts to lose their privileges if they are compromised (such as when a trusted device is misplaced). If the calling account had been revoked `role`, emits a {RoleRevoked} event. Requirements: - the caller must be `callerConfirmation`. May emit a {RoleRevoked} event.\"},\"revokeRole(bytes32,address)\":{\"details\":\"Revokes `role` from `account`. If `account` had been granted `role`, emits a {RoleRevoked} event. Requirements: - the caller must have ``role``'s admin role. May emit a {RoleRevoked} event.\"},\"supportsInterface(bytes4)\":{\"details\":\"See {IERC165-supportsInterface}.\"},\"upgradeToAndCall(address,bytes)\":{\"custom:oz-upgrades-unsafe-allow-reachable\":\"delegatecall\",\"details\":\"Upgrade the implementation of the proxy to `newImplementation`, and subsequently execute the function call encoded in `data`. Calls {_authorizeUpgrade}. Emits an {Upgraded} event.\"},\"withdraw(bytes,uint256,address,(address,bool,address,bytes,uint256))\":{\"params\":{\"amount\":\"The amount of tokens to withdraw.\",\"receiver\":\"The receiver address on the external chain.\",\"revertOptions\":\"Revert options.\",\"zrc20\":\"The address of the ZRC20 token.\"}},\"withdraw(bytes,uint256,uint256,(address,bool,address,bytes,uint256))\":{\"params\":{\"amount\":\"The amount of tokens to withdraw.\",\"receiver\":\"The receiver address on the external chain.\",\"revertOptions\":\"Revert options.\"}},\"withdrawAndCall(bytes,uint256,address,bytes,uint256,(address,bool,address,bytes,uint256))\":{\"params\":{\"amount\":\"The amount of tokens to withdraw.\",\"gasLimit\":\"Gas limit.\",\"message\":\"The calldata to pass to the contract call.\",\"receiver\":\"The receiver address on the external chain.\",\"revertOptions\":\"Revert options.\",\"zrc20\":\"The address of the ZRC20 token.\"}},\"withdrawAndCall(bytes,uint256,uint256,bytes,(address,bool,address,bytes,uint256))\":{\"params\":{\"amount\":\"The amount of tokens to withdraw.\",\"chainId\":\"Chain id of the external chain.\",\"message\":\"The calldata to pass to the contract call.\",\"receiver\":\"The receiver address on the external chain.\",\"revertOptions\":\"Revert options.\"}}},\"title\":\"GatewayZEVM\",\"version\":1},\"userdoc\":{\"errors\":{\"CallerIsNotFungibleModule()\":[{\"notice\":\"Error indicating that the caller is not the Fungible module.\"}],\"EmptyMessage()\":[{\"notice\":\"Error indicating call method received empty message as argument.\"}],\"FailedZetaSent()\":[{\"notice\":\"Error indicating a failure to send ZETA tokens.\"}],\"GasFeeTransferFailed()\":[{\"notice\":\"Error indicating a failure to transfer gas fee.\"}],\"InsufficientZRC20Amount()\":[{\"notice\":\"Error indicating an insufficient ZRC20 token amount.\"}],\"InsufficientZetaAmount()\":[{\"notice\":\"Error indicating an insufficient zeta amount.\"}],\"InvalidTarget()\":[{\"notice\":\"Error indicating an invalid target address.\"}],\"OnlyWZETAOrFungible()\":[{\"notice\":\"Error indicating that only WZETA or the Fungible module can call the function.\"}],\"WithdrawalFailed()\":[{\"notice\":\"Error indicating a withdrawal failure.\"}],\"ZRC20BurnFailed()\":[{\"notice\":\"Error indicating a failure to burn ZRC20 tokens.\"}],\"ZRC20DepositFailed()\":[{\"notice\":\"Error indicating a failure to deposit ZRC20 tokens.\"}],\"ZRC20TransferFailed()\":[{\"notice\":\"Error indicating a failure to transfer ZRC20 tokens.\"}],\"ZeroAddress()\":[{\"notice\":\"Error indicating a zero address was provided.\"}]},\"events\":{\"Called(address,address,bytes,bytes,uint256,(address,bool,address,bytes,uint256))\":{\"notice\":\"Emitted when a cross-chain call is made.\"},\"Withdrawn(address,uint256,bytes,address,uint256,uint256,uint256,bytes,uint256,(address,bool,address,bytes,uint256))\":{\"notice\":\"Emitted when a withdrawal is made.\"}},\"kind\":\"user\",\"methods\":{\"FUNGIBLE_MODULE_ADDRESS()\":{\"notice\":\"The constant address of the Fungible module.\"},\"PAUSER_ROLE()\":{\"notice\":\"New role identifier for pauser role.\"},\"call(bytes,address,bytes,uint256,(address,bool,address,bytes,uint256))\":{\"notice\":\"Call a smart contract on an external chain without asset transfer.\"},\"deposit(address,uint256,address)\":{\"notice\":\"Deposit foreign coins into ZRC20.\"},\"depositAndCall((bytes,address,uint256),address,uint256,address,bytes)\":{\"notice\":\"Deposit foreign coins into ZRC20 and call a user-specified contract on ZEVM.\"},\"depositAndCall((bytes,address,uint256),uint256,address,bytes)\":{\"notice\":\"Deposit ZETA and call a user-specified contract on ZEVM.\"},\"depositAndRevert(address,uint256,address,(address,uint64,bytes))\":{\"notice\":\"Deposit foreign coins into ZRC20 and revert a user-specified contract on ZEVM.\"},\"execute((bytes,address,uint256),address,uint256,address,bytes)\":{\"notice\":\"Execute a user-specified contract on ZEVM.\"},\"executeRevert(address,(address,uint64,bytes))\":{\"notice\":\"Revert a user-specified contract on ZEVM.\"},\"initialize(address,address)\":{\"notice\":\"Initialize with address of zeta token and admin account set as DEFAULT_ADMIN_ROLE.\"},\"pause()\":{\"notice\":\"Pause contract.\"},\"unpause()\":{\"notice\":\"Unpause contract.\"},\"withdraw(bytes,uint256,address,(address,bool,address,bytes,uint256))\":{\"notice\":\"Withdraw ZRC20 tokens to an external chain.\"},\"withdraw(bytes,uint256,uint256,(address,bool,address,bytes,uint256))\":{\"notice\":\"Withdraw ZETA tokens to an external chain.\"},\"withdrawAndCall(bytes,uint256,address,bytes,uint256,(address,bool,address,bytes,uint256))\":{\"notice\":\"Withdraw ZRC20 tokens and call a smart contract on an external chain.\"},\"withdrawAndCall(bytes,uint256,uint256,bytes,(address,bool,address,bytes,uint256))\":{\"notice\":\"Withdraw ZETA tokens and call a smart contract on an external chain.\"},\"zetaToken()\":{\"notice\":\"The address of the Zeta token.\"}},\"notice\":\"The GatewayZEVM contract is the endpoint to call smart contracts on omnichain.\",\"version\":1}},\"settings\":{\"compilationTarget\":{\"contracts/zevm/GatewayZEVM.sol\":\"GatewayZEVM\"},\"evmVersion\":\"london\",\"libraries\":{},\"metadata\":{\"bytecodeHash\":\"ipfs\"},\"optimizer\":{\"enabled\":true,\"runs\":10000},\"remappings\":[\":@openzeppelin/contracts-upgradeable/=lib/openzeppelin-contracts-upgradeable/contracts/\",\":@openzeppelin/contracts/=lib/openzeppelin-contracts-upgradeable/lib/openzeppelin-contracts/contracts/\",\":ds-test/=node_modules/ds-test/src/\",\":erc4626-tests/=lib/openzeppelin-contracts-upgradeable/lib/erc4626-tests/\",\":forge-std/=lib/forge-std/src/\",\":openzeppelin-contracts-upgradeable/=lib/openzeppelin-contracts-upgradeable/\",\":openzeppelin-contracts/=lib/openzeppelin-contracts-upgradeable/lib/openzeppelin-contracts/\",\":openzeppelin-foundry-upgrades/=lib/openzeppelin-foundry-upgrades/src/\",\":solidity-stringutils/=lib/openzeppelin-foundry-upgrades/lib/solidity-stringutils/\",\":test/=test/\"]},\"sources\":{\"contracts/Revert.sol\":{\"keccak256\":\"0x4cc63069ff784e32bc89995f30f9c229b4c3e6cf5c917665626c42f34105124b\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://a963620b9cf83465f7a9fb7a9f4e70f6b6905a4e3bb7219dfd7a65ee55ab9409\",\"dweb:/ipfs/QmUQGaQ4TEqhH9VXgdwbudebxgANpUQcuhbSp7ZfyRiDPY\"]},\"contracts/zevm/GatewayZEVM.sol\":{\"keccak256\":\"0x772edf5c1c68d0ab0d338632eeb0e9f080943f4c3a06c6f5b49469ac3842d283\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://7a8f808566eb3d9fe6b5c3161e7a8b2157068667e5f81d1cf37167842b402436\",\"dweb:/ipfs/QmbqTG4TsbP9TCnjVPigAmm3bXgWvcGU5KrADHs3wdaGAB\"]},\"contracts/zevm/interfaces/IGatewayZEVM.sol\":{\"keccak256\":\"0xe9520cce7fbfe8abcc4922654cf82bde005f5836ba77209dd25e5b1650e676b0\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://c1b38d6154acd0b167a5c7858f6b46178480b649511ed8103ab1fba7fda420ec\",\"dweb:/ipfs/QmeDBj5gYBAnsKsCwiNqV41wn88ksU9J2CFs3M79VUh2jS\"]},\"contracts/zevm/interfaces/IWZETA.sol\":{\"keccak256\":\"0x9c90341536af75438f7fa7aed65d0f5f56f87d5deee7fb6f4a07f4f23eb2a106\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://e3110b8de3e8cdcf871090659af3c31efb67048afabd689be3bb3295c172f680\",\"dweb:/ipfs/QmWxpzAxLguM8MtnD2kBo687KXaFBjJ5v2Qeshmmye4XoH\"]},\"contracts/zevm/interfaces/IZRC20.sol\":{\"keccak256\":\"0x2118098ec6a745f69358649d011f0cba691f86c586b3a6f0bcbea16d9753f6e8\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://ddacdf1f3681f936f80ef0102cdac2aa1b4d60c751a1c23d7f3a45f969346cdf\",\"dweb:/ipfs/Qma7wpw8JwBSNJeob4KHGjKtXbtvW2FoThJJrDb8vtXz7X\"]},\"contracts/zevm/interfaces/UniversalContract.sol\":{\"keccak256\":\"0x6523466b88f1bb8c5b59ba9b8915af533ccdd6c0eef91e4a9243ee0acc96b4b4\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://f9314040c4cae46ecdfa0d68f7e7c2cde4eb809b95bd6629ae731fc67f2d5285\",\"dweb:/ipfs/QmUCXokEgigBPwEGP93Q7XL2Evi3gYGr2P8UrdDKPPQhSS\"]},\"lib/openzeppelin-contracts-upgradeable/contracts/access/AccessControlUpgradeable.sol\":{\"keccak256\":\"0x6662ec4e5cefca03eeadd073e9469df8d2944bb2ee8ec8f7622c2c46aab5f225\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://4d8544c6f8daa4d1bc215c6a72fe0acdb748664a105b0e5efc19295667521d45\",\"dweb:/ipfs/QmdGWqdnXT8S3RgCR6aV8XHZrsybieMQLLnug1NtpSjEXN\"]},\"lib/openzeppelin-contracts-upgradeable/contracts/proxy/utils/Initializable.sol\":{\"keccak256\":\"0x631188737069917d2f909d29ce62c4d48611d326686ba6683e26b72a23bfac0b\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://7a61054ae84cd6c4d04c0c4450ba1d6de41e27e0a2c4f1bcdf58f796b401c609\",\"dweb:/ipfs/QmUvtdp7X1mRVyC3CsHrtPbgoqWaXHp3S1ZR24tpAQYJWM\"]},\"lib/openzeppelin-contracts-upgradeable/contracts/proxy/utils/UUPSUpgradeable.sol\":{\"keccak256\":\"0x3f13b947637c4969c0644cab4ef399cdc4b67f101463b8775c5a43b118558e53\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://c6683e6ade6985d394d32baaef5eea0d8b9ff0b3eca86ae413d6cdde114a9930\",\"dweb:/ipfs/QmdBE8T1BTddZxpdECMsb3KiCFyjNWmxcCddYrWFTXmWPj\"]},\"lib/openzeppelin-contracts-upgradeable/contracts/utils/ContextUpgradeable.sol\":{\"keccak256\":\"0xdbef5f0c787055227243a7318ef74c8a5a1108ca3a07f2b3a00ef67769e1e397\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://08e39f23d5b4692f9a40803e53a8156b72b4c1f9902a88cd65ba964db103dab9\",\"dweb:/ipfs/QmPKn6EYDgpga7KtpkA8wV2yJCYGMtc9K4LkJfhKX2RVSV\"]},\"lib/openzeppelin-contracts-upgradeable/contracts/utils/PausableUpgradeable.sol\":{\"keccak256\":\"0x92915b7f7f642c6be3f65bfd1522feb5d5b6ef25f755f4dbb51df32c868f2f97\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://85ad36d5cc7e190e1ee6c94b24659bc3a31396c4c36b6ffa6a509e10661f8007\",\"dweb:/ipfs/QmPFyc4zMh2zo6YWZt25gjm3YdR2hg6wGETaWw256fMmJJ\"]},\"lib/openzeppelin-contracts-upgradeable/contracts/utils/ReentrancyGuardUpgradeable.sol\":{\"keccak256\":\"0xb44e086e941292cdc7f440de51478493894ef0b1aeccb0c4047445919f667f74\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://942dad22fbdc1669f025540ba63aa3ccfad5f8458fc5d4525b31ebf272e7af45\",\"dweb:/ipfs/Qmdo4X2M82aM3AMoW2kf2jhYkSCyC4T1pHNd6obdsDFnAB\"]},\"lib/openzeppelin-contracts-upgradeable/contracts/utils/introspection/ERC165Upgradeable.sol\":{\"keccak256\":\"0xdaba3f7c42c55b2896353f32bd27d4d5f8bae741b3b05d4c53f67abc4dc47ce8\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://1fa2e61141c602510bcd2cd936ed9561922ac8772a9b9c9a9db091a74e354a45\",\"dweb:/ipfs/QmcHQDDoEBwJmwUbzoVkytvJsBx3KVHYFFnDkvRGWh9Wmh\"]},\"lib/openzeppelin-contracts-upgradeable/lib/openzeppelin-contracts/contracts/access/IAccessControl.sol\":{\"keccak256\":\"0xb6b36edd6a2999fd243ff226d6cbf84bd71af2432bbd0dfe19392996a1d9cb41\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://1fd2f35495652e57e3f99bc6c510bc5f7dd398a176ea2e72d8ed730aebc6ca26\",\"dweb:/ipfs/QmTQV6X4gkikTib49cho5iDX3JvSQbdsoEChoDwrk3CbbH\"]},\"lib/openzeppelin-contracts-upgradeable/lib/openzeppelin-contracts/contracts/interfaces/draft-IERC1822.sol\":{\"keccak256\":\"0x2a1f9944df2015c081d89cd41ba22ffaf10aa6285969f0dc612b235cc448999c\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://ef381843676aec64421200ee85eaa0b1356a35f28b9fc67e746a6bbb832077d9\",\"dweb:/ipfs/QmY8aorMYA2TeTCnu6ejDjzb4rW4t7TCtW4GZ6LoxTFm7v\"]},\"lib/openzeppelin-contracts-upgradeable/lib/openzeppelin-contracts/contracts/proxy/ERC1967/ERC1967Utils.sol\":{\"keccak256\":\"0x06a78f9b3ee3e6d0eb4e4cd635ba49960bea34cac1db8c0a27c75f2319f1fd65\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://547d21aa17f4f3f1a1a7edf7167beff8dd9496a0348d5588f15cc8a4b29d052a\",\"dweb:/ipfs/QmT16JtRQSWNpLo9W23jr6CzaMuTAcQcjJJcdRd8HLJ6cE\"]},\"lib/openzeppelin-contracts-upgradeable/lib/openzeppelin-contracts/contracts/proxy/beacon/IBeacon.sol\":{\"keccak256\":\"0xc59a78b07b44b2cf2e8ab4175fca91e8eca1eee2df7357b8d2a8833e5ea1f64c\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://5aa4f07e65444784c29cd7bfcc2341b34381e4e5b5da9f0c5bd00d7f430e66fa\",\"dweb:/ipfs/QmWRMh4Q9DpaU9GvsiXmDdoNYMyyece9if7hnfLz7uqzWM\"]},\"lib/openzeppelin-contracts-upgradeable/lib/openzeppelin-contracts/contracts/utils/Address.sol\":{\"keccak256\":\"0xaf28a975a78550e45f65e559a3ad6a5ad43b9b8a37366999abd1b7084eb70721\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://b7bd24e224f67f65bfadf85dc2929fa965456bb2415478bd0125471b5ce35245\",\"dweb:/ipfs/QmRaydGr8BTHs1kvaZfsNU69pKzUAGFrvABn1KiRSbE51y\"]},\"lib/openzeppelin-contracts-upgradeable/lib/openzeppelin-contracts/contracts/utils/StorageSlot.sol\":{\"keccak256\":\"0x32ba59b4b7299237c8ba56319110989d7978a039faf754793064e967e5894418\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://1ae50c8b562427df610cc4540c9bf104acca7ef8e2dcae567ae7e52272281e9c\",\"dweb:/ipfs/QmTHiadFCSJUPpRjNegc5SahmeU8bAoY8i9Aq6tVscbcKR\"]},\"lib/openzeppelin-contracts-upgradeable/lib/openzeppelin-contracts/contracts/utils/introspection/IERC165.sol\":{\"keccak256\":\"0x4296879f55019b23e135000eb36896057e7101fb7fb859c5ef690cf14643757b\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://87b3541437c8c443ccd36795e56a338ed12855eec17f8da624511b8d1a7e14df\",\"dweb:/ipfs/QmeJQCtZrQjtJLr6u7ZHWeH3pBnjtLWzvRrKViAi7UZqxL\"]}},\"version\":1}","metadata":{"compiler":{"version":"0.8.26+commit.8a97fa7a"},"language":"Solidity","output":{"abi":[{"inputs":[],"stateMutability":"nonpayable","type":"constructor"},{"inputs":[],"type":"error","name":"AccessControlBadConfirmation"},{"inputs":[{"internalType":"address","name":"account","type":"address"},{"internalType":"bytes32","name":"neededRole","type":"bytes32"}],"type":"error","name":"AccessControlUnauthorizedAccount"},{"inputs":[{"internalType":"address","name":"target","type":"address"}],"type":"error","name":"AddressEmptyCode"},{"inputs":[],"type":"error","name":"CallerIsNotFungibleModule"},{"inputs":[{"internalType":"address","name":"implementation","type":"address"}],"type":"error","name":"ERC1967InvalidImplementation"},{"inputs":[],"type":"error","name":"ERC1967NonPayable"},{"inputs":[],"type":"error","name":"EmptyMessage"},{"inputs":[],"type":"error","name":"EnforcedPause"},{"inputs":[],"type":"error","name":"ExpectedPause"},{"inputs":[],"type":"error","name":"FailedInnerCall"},{"inputs":[],"type":"error","name":"FailedZetaSent"},{"inputs":[],"type":"error","name":"GasFeeTransferFailed"},{"inputs":[],"type":"error","name":"InsufficientZRC20Amount"},{"inputs":[],"type":"error","name":"InsufficientZetaAmount"},{"inputs":[],"type":"error","name":"InvalidInitialization"},{"inputs":[],"type":"error","name":"InvalidTarget"},{"inputs":[],"type":"error","name":"NotInitializing"},{"inputs":[],"type":"error","name":"OnlyWZETAOrFungible"},{"inputs":[],"type":"error","name":"ReentrancyGuardReentrantCall"},{"inputs":[],"type":"error","name":"UUPSUnauthorizedCallContext"},{"inputs":[{"internalType":"bytes32","name":"slot","type":"bytes32"}],"type":"error","name":"UUPSUnsupportedProxiableUUID"},{"inputs":[],"type":"error","name":"WithdrawalFailed"},{"inputs":[],"type":"error","name":"ZRC20BurnFailed"},{"inputs":[],"type":"error","name":"ZRC20DepositFailed"},{"inputs":[],"type":"error","name":"ZRC20TransferFailed"},{"inputs":[],"type":"error","name":"ZeroAddress"},{"inputs":[{"internalType":"address","name":"sender","type":"address","indexed":true},{"internalType":"address","name":"zrc20","type":"address","indexed":true},{"internalType":"bytes","name":"receiver","type":"bytes","indexed":false},{"internalType":"bytes","name":"message","type":"bytes","indexed":false},{"internalType":"uint256","name":"gasLimit","type":"uint256","indexed":false},{"internalType":"struct RevertOptions","name":"revertOptions","type":"tuple","components":[{"internalType":"address","name":"revertAddress","type":"address"},{"internalType":"bool","name":"callOnRevert","type":"bool"},{"internalType":"address","name":"abortAddress","type":"address"},{"internalType":"bytes","name":"revertMessage","type":"bytes"},{"internalType":"uint256","name":"onRevertGasLimit","type":"uint256"}],"indexed":false}],"type":"event","name":"Called","anonymous":false},{"inputs":[{"internalType":"uint64","name":"version","type":"uint64","indexed":false}],"type":"event","name":"Initialized","anonymous":false},{"inputs":[{"internalType":"address","name":"account","type":"address","indexed":false}],"type":"event","name":"Paused","anonymous":false},{"inputs":[{"internalType":"bytes32","name":"role","type":"bytes32","indexed":true},{"internalType":"bytes32","name":"previousAdminRole","type":"bytes32","indexed":true},{"internalType":"bytes32","name":"newAdminRole","type":"bytes32","indexed":true}],"type":"event","name":"RoleAdminChanged","anonymous":false},{"inputs":[{"internalType":"bytes32","name":"role","type":"bytes32","indexed":true},{"internalType":"address","name":"account","type":"address","indexed":true},{"internalType":"address","name":"sender","type":"address","indexed":true}],"type":"event","name":"RoleGranted","anonymous":false},{"inputs":[{"internalType":"bytes32","name":"role","type":"bytes32","indexed":true},{"internalType":"address","name":"account","type":"address","indexed":true},{"internalType":"address","name":"sender","type":"address","indexed":true}],"type":"event","name":"RoleRevoked","anonymous":false},{"inputs":[{"internalType":"address","name":"account","type":"address","indexed":false}],"type":"event","name":"Unpaused","anonymous":false},{"inputs":[{"internalType":"address","name":"implementation","type":"address","indexed":true}],"type":"event","name":"Upgraded","anonymous":false},{"inputs":[{"internalType":"address","name":"sender","type":"address","indexed":true},{"internalType":"uint256","name":"chainId","type":"uint256","indexed":true},{"internalType":"bytes","name":"receiver","type":"bytes","indexed":false},{"internalType":"address","name":"zrc20","type":"address","indexed":false},{"internalType":"uint256","name":"value","type":"uint256","indexed":false},{"internalType":"uint256","name":"gasfee","type":"uint256","indexed":false},{"internalType":"uint256","name":"protocolFlatFee","type":"uint256","indexed":false},{"internalType":"bytes","name":"message","type":"bytes","indexed":false},{"internalType":"uint256","name":"gasLimit","type":"uint256","indexed":false},{"internalType":"struct RevertOptions","name":"revertOptions","type":"tuple","components":[{"internalType":"address","name":"revertAddress","type":"address"},{"internalType":"bool","name":"callOnRevert","type":"bool"},{"internalType":"address","name":"abortAddress","type":"address"},{"internalType":"bytes","name":"revertMessage","type":"bytes"},{"internalType":"uint256","name":"onRevertGasLimit","type":"uint256"}],"indexed":false}],"type":"event","name":"Withdrawn","anonymous":false},{"inputs":[],"stateMutability":"view","type":"function","name":"DEFAULT_ADMIN_ROLE","outputs":[{"internalType":"bytes32","name":"","type":"bytes32"}]},{"inputs":[],"stateMutability":"view","type":"function","name":"FUNGIBLE_MODULE_ADDRESS","outputs":[{"internalType":"address","name":"","type":"address"}]},{"inputs":[],"stateMutability":"view","type":"function","name":"PAUSER_ROLE","outputs":[{"internalType":"bytes32","name":"","type":"bytes32"}]},{"inputs":[],"stateMutability":"view","type":"function","name":"UPGRADE_INTERFACE_VERSION","outputs":[{"internalType":"string","name":"","type":"string"}]},{"inputs":[{"internalType":"bytes","name":"receiver","type":"bytes"},{"internalType":"address","name":"zrc20","type":"address"},{"internalType":"bytes","name":"message","type":"bytes"},{"internalType":"uint256","name":"gasLimit","type":"uint256"},{"internalType":"struct RevertOptions","name":"revertOptions","type":"tuple","components":[{"internalType":"address","name":"revertAddress","type":"address"},{"internalType":"bool","name":"callOnRevert","type":"bool"},{"internalType":"address","name":"abortAddress","type":"address"},{"internalType":"bytes","name":"revertMessage","type":"bytes"},{"internalType":"uint256","name":"onRevertGasLimit","type":"uint256"}]}],"stateMutability":"nonpayable","type":"function","name":"call"},{"inputs":[{"internalType":"address","name":"zrc20","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"},{"internalType":"address","name":"target","type":"address"}],"stateMutability":"nonpayable","type":"function","name":"deposit"},{"inputs":[{"internalType":"struct zContext","name":"context","type":"tuple","components":[{"internalType":"bytes","name":"origin","type":"bytes"},{"internalType":"address","name":"sender","type":"address"},{"internalType":"uint256","name":"chainID","type":"uint256"}]},{"internalType":"uint256","name":"amount","type":"uint256"},{"internalType":"address","name":"target","type":"address"},{"internalType":"bytes","name":"message","type":"bytes"}],"stateMutability":"nonpayable","type":"function","name":"depositAndCall"},{"inputs":[{"internalType":"struct zContext","name":"context","type":"tuple","components":[{"internalType":"bytes","name":"origin","type":"bytes"},{"internalType":"address","name":"sender","type":"address"},{"internalType":"uint256","name":"chainID","type":"uint256"}]},{"internalType":"address","name":"zrc20","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"},{"internalType":"address","name":"target","type":"address"},{"internalType":"bytes","name":"message","type":"bytes"}],"stateMutability":"nonpayable","type":"function","name":"depositAndCall"},{"inputs":[{"internalType":"address","name":"zrc20","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"},{"internalType":"address","name":"target","type":"address"},{"internalType":"struct RevertContext","name":"revertContext","type":"tuple","components":[{"internalType":"address","name":"asset","type":"address"},{"internalType":"uint64","name":"amount","type":"uint64"},{"internalType":"bytes","name":"revertMessage","type":"bytes"}]}],"stateMutability":"nonpayable","type":"function","name":"depositAndRevert"},{"inputs":[{"internalType":"struct zContext","name":"context","type":"tuple","components":[{"internalType":"bytes","name":"origin","type":"bytes"},{"internalType":"address","name":"sender","type":"address"},{"internalType":"uint256","name":"chainID","type":"uint256"}]},{"internalType":"address","name":"zrc20","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"},{"internalType":"address","name":"target","type":"address"},{"internalType":"bytes","name":"message","type":"bytes"}],"stateMutability":"nonpayable","type":"function","name":"execute"},{"inputs":[{"internalType":"address","name":"target","type":"address"},{"internalType":"struct RevertContext","name":"revertContext","type":"tuple","components":[{"internalType":"address","name":"asset","type":"address"},{"internalType":"uint64","name":"amount","type":"uint64"},{"internalType":"bytes","name":"revertMessage","type":"bytes"}]}],"stateMutability":"nonpayable","type":"function","name":"executeRevert"},{"inputs":[{"internalType":"bytes32","name":"role","type":"bytes32"}],"stateMutability":"view","type":"function","name":"getRoleAdmin","outputs":[{"internalType":"bytes32","name":"","type":"bytes32"}]},{"inputs":[{"internalType":"bytes32","name":"role","type":"bytes32"},{"internalType":"address","name":"account","type":"address"}],"stateMutability":"nonpayable","type":"function","name":"grantRole"},{"inputs":[{"internalType":"bytes32","name":"role","type":"bytes32"},{"internalType":"address","name":"account","type":"address"}],"stateMutability":"view","type":"function","name":"hasRole","outputs":[{"internalType":"bool","name":"","type":"bool"}]},{"inputs":[{"internalType":"address","name":"zetaToken_","type":"address"},{"internalType":"address","name":"admin_","type":"address"}],"stateMutability":"nonpayable","type":"function","name":"initialize"},{"inputs":[],"stateMutability":"nonpayable","type":"function","name":"pause"},{"inputs":[],"stateMutability":"view","type":"function","name":"paused","outputs":[{"internalType":"bool","name":"","type":"bool"}]},{"inputs":[],"stateMutability":"view","type":"function","name":"proxiableUUID","outputs":[{"internalType":"bytes32","name":"","type":"bytes32"}]},{"inputs":[{"internalType":"bytes32","name":"role","type":"bytes32"},{"internalType":"address","name":"callerConfirmation","type":"address"}],"stateMutability":"nonpayable","type":"function","name":"renounceRole"},{"inputs":[{"internalType":"bytes32","name":"role","type":"bytes32"},{"internalType":"address","name":"account","type":"address"}],"stateMutability":"nonpayable","type":"function","name":"revokeRole"},{"inputs":[{"internalType":"bytes4","name":"interfaceId","type":"bytes4"}],"stateMutability":"view","type":"function","name":"supportsInterface","outputs":[{"internalType":"bool","name":"","type":"bool"}]},{"inputs":[],"stateMutability":"nonpayable","type":"function","name":"unpause"},{"inputs":[{"internalType":"address","name":"newImplementation","type":"address"},{"internalType":"bytes","name":"data","type":"bytes"}],"stateMutability":"payable","type":"function","name":"upgradeToAndCall"},{"inputs":[{"internalType":"bytes","name":"receiver","type":"bytes"},{"internalType":"uint256","name":"amount","type":"uint256"},{"internalType":"address","name":"zrc20","type":"address"},{"internalType":"struct RevertOptions","name":"revertOptions","type":"tuple","components":[{"internalType":"address","name":"revertAddress","type":"address"},{"internalType":"bool","name":"callOnRevert","type":"bool"},{"internalType":"address","name":"abortAddress","type":"address"},{"internalType":"bytes","name":"revertMessage","type":"bytes"},{"internalType":"uint256","name":"onRevertGasLimit","type":"uint256"}]}],"stateMutability":"nonpayable","type":"function","name":"withdraw"},{"inputs":[{"internalType":"bytes","name":"receiver","type":"bytes"},{"internalType":"uint256","name":"amount","type":"uint256"},{"internalType":"uint256","name":"chainId","type":"uint256"},{"internalType":"struct RevertOptions","name":"revertOptions","type":"tuple","components":[{"internalType":"address","name":"revertAddress","type":"address"},{"internalType":"bool","name":"callOnRevert","type":"bool"},{"internalType":"address","name":"abortAddress","type":"address"},{"internalType":"bytes","name":"revertMessage","type":"bytes"},{"internalType":"uint256","name":"onRevertGasLimit","type":"uint256"}]}],"stateMutability":"nonpayable","type":"function","name":"withdraw"},{"inputs":[{"internalType":"bytes","name":"receiver","type":"bytes"},{"internalType":"uint256","name":"amount","type":"uint256"},{"internalType":"address","name":"zrc20","type":"address"},{"internalType":"bytes","name":"message","type":"bytes"},{"internalType":"uint256","name":"gasLimit","type":"uint256"},{"internalType":"struct RevertOptions","name":"revertOptions","type":"tuple","components":[{"internalType":"address","name":"revertAddress","type":"address"},{"internalType":"bool","name":"callOnRevert","type":"bool"},{"internalType":"address","name":"abortAddress","type":"address"},{"internalType":"bytes","name":"revertMessage","type":"bytes"},{"internalType":"uint256","name":"onRevertGasLimit","type":"uint256"}]}],"stateMutability":"nonpayable","type":"function","name":"withdrawAndCall"},{"inputs":[{"internalType":"bytes","name":"receiver","type":"bytes"},{"internalType":"uint256","name":"amount","type":"uint256"},{"internalType":"uint256","name":"chainId","type":"uint256"},{"internalType":"bytes","name":"message","type":"bytes"},{"internalType":"struct RevertOptions","name":"revertOptions","type":"tuple","components":[{"internalType":"address","name":"revertAddress","type":"address"},{"internalType":"bool","name":"callOnRevert","type":"bool"},{"internalType":"address","name":"abortAddress","type":"address"},{"internalType":"bytes","name":"revertMessage","type":"bytes"},{"internalType":"uint256","name":"onRevertGasLimit","type":"uint256"}]}],"stateMutability":"nonpayable","type":"function","name":"withdrawAndCall"},{"inputs":[],"stateMutability":"view","type":"function","name":"zetaToken","outputs":[{"internalType":"address","name":"","type":"address"}]},{"inputs":[],"stateMutability":"payable","type":"receive"}],"devdoc":{"kind":"dev","methods":{"call(bytes,address,bytes,uint256,(address,bool,address,bytes,uint256))":{"params":{"gasLimit":"Gas limit.","message":"The calldata to pass to the contract call.","receiver":"The receiver address on the external chain.","revertOptions":"Revert options.","zrc20":"Address of zrc20 to pay fees."}},"constructor":{"custom:oz-upgrades-unsafe-allow":"constructor"},"deposit(address,uint256,address)":{"params":{"amount":"The amount of tokens to deposit.","target":"The target address to receive the deposited tokens.","zrc20":"The address of the ZRC20 token."}},"depositAndCall((bytes,address,uint256),address,uint256,address,bytes)":{"params":{"amount":"The amount of tokens to transfer.","context":"The context of the cross-chain call.","message":"The calldata to pass to the contract call.","target":"The target contract to call.","zrc20":"The address of the ZRC20 token."}},"depositAndCall((bytes,address,uint256),uint256,address,bytes)":{"params":{"amount":"The amount of tokens to transfer.","context":"The context of the cross-chain call.","message":"The calldata to pass to the contract call.","target":"The target contract to call."}},"depositAndRevert(address,uint256,address,(address,uint64,bytes))":{"params":{"amount":"The amount of tokens to revert.","revertContext":"Revert context to pass to onRevert.","target":"The target contract to call.","zrc20":"The address of the ZRC20 token."}},"execute((bytes,address,uint256),address,uint256,address,bytes)":{"params":{"amount":"The amount of tokens to transfer.","context":"The context of the cross-chain call.","message":"The calldata to pass to the contract call.","target":"The target contract to call.","zrc20":"The address of the ZRC20 token."}},"executeRevert(address,(address,uint64,bytes))":{"params":{"revertContext":"Revert context to pass to onRevert.","target":"The target contract to call."}},"getRoleAdmin(bytes32)":{"details":"Returns the admin role that controls `role`. See {grantRole} and {revokeRole}. To change a role's admin, use {_setRoleAdmin}."},"grantRole(bytes32,address)":{"details":"Grants `role` to `account`. If `account` had not been already granted `role`, emits a {RoleGranted} event. Requirements: - the caller must have ``role``'s admin role. May emit a {RoleGranted} event."},"hasRole(bytes32,address)":{"details":"Returns `true` if `account` has been granted `role`."},"initialize(address,address)":{"details":"Using admin to authorize upgrades and pause."},"paused()":{"details":"Returns true if the contract is paused, and false otherwise."},"proxiableUUID()":{"details":"Implementation of the ERC1822 {proxiableUUID} function. This returns the storage slot used by the implementation. It is used to validate the implementation's compatibility when performing an upgrade. IMPORTANT: A proxy pointing at a proxiable contract should not be considered proxiable itself, because this risks bricking a proxy that upgrades to it, by delegating to itself until out of gas. Thus it is critical that this function revert if invoked through a proxy. This is guaranteed by the `notDelegated` modifier."},"renounceRole(bytes32,address)":{"details":"Revokes `role` from the calling account. Roles are often managed via {grantRole} and {revokeRole}: this function's purpose is to provide a mechanism for accounts to lose their privileges if they are compromised (such as when a trusted device is misplaced). If the calling account had been revoked `role`, emits a {RoleRevoked} event. Requirements: - the caller must be `callerConfirmation`. May emit a {RoleRevoked} event."},"revokeRole(bytes32,address)":{"details":"Revokes `role` from `account`. If `account` had been granted `role`, emits a {RoleRevoked} event. Requirements: - the caller must have ``role``'s admin role. May emit a {RoleRevoked} event."},"supportsInterface(bytes4)":{"details":"See {IERC165-supportsInterface}."},"upgradeToAndCall(address,bytes)":{"custom:oz-upgrades-unsafe-allow-reachable":"delegatecall","details":"Upgrade the implementation of the proxy to `newImplementation`, and subsequently execute the function call encoded in `data`. Calls {_authorizeUpgrade}. Emits an {Upgraded} event."},"withdraw(bytes,uint256,address,(address,bool,address,bytes,uint256))":{"params":{"amount":"The amount of tokens to withdraw.","receiver":"The receiver address on the external chain.","revertOptions":"Revert options.","zrc20":"The address of the ZRC20 token."}},"withdraw(bytes,uint256,uint256,(address,bool,address,bytes,uint256))":{"params":{"amount":"The amount of tokens to withdraw.","receiver":"The receiver address on the external chain.","revertOptions":"Revert options."}},"withdrawAndCall(bytes,uint256,address,bytes,uint256,(address,bool,address,bytes,uint256))":{"params":{"amount":"The amount of tokens to withdraw.","gasLimit":"Gas limit.","message":"The calldata to pass to the contract call.","receiver":"The receiver address on the external chain.","revertOptions":"Revert options.","zrc20":"The address of the ZRC20 token."}},"withdrawAndCall(bytes,uint256,uint256,bytes,(address,bool,address,bytes,uint256))":{"params":{"amount":"The amount of tokens to withdraw.","chainId":"Chain id of the external chain.","message":"The calldata to pass to the contract call.","receiver":"The receiver address on the external chain.","revertOptions":"Revert options."}}},"version":1},"userdoc":{"kind":"user","methods":{"FUNGIBLE_MODULE_ADDRESS()":{"notice":"The constant address of the Fungible module."},"PAUSER_ROLE()":{"notice":"New role identifier for pauser role."},"call(bytes,address,bytes,uint256,(address,bool,address,bytes,uint256))":{"notice":"Call a smart contract on an external chain without asset transfer."},"deposit(address,uint256,address)":{"notice":"Deposit foreign coins into ZRC20."},"depositAndCall((bytes,address,uint256),address,uint256,address,bytes)":{"notice":"Deposit foreign coins into ZRC20 and call a user-specified contract on ZEVM."},"depositAndCall((bytes,address,uint256),uint256,address,bytes)":{"notice":"Deposit ZETA and call a user-specified contract on ZEVM."},"depositAndRevert(address,uint256,address,(address,uint64,bytes))":{"notice":"Deposit foreign coins into ZRC20 and revert a user-specified contract on ZEVM."},"execute((bytes,address,uint256),address,uint256,address,bytes)":{"notice":"Execute a user-specified contract on ZEVM."},"executeRevert(address,(address,uint64,bytes))":{"notice":"Revert a user-specified contract on ZEVM."},"initialize(address,address)":{"notice":"Initialize with address of zeta token and admin account set as DEFAULT_ADMIN_ROLE."},"pause()":{"notice":"Pause contract."},"unpause()":{"notice":"Unpause contract."},"withdraw(bytes,uint256,address,(address,bool,address,bytes,uint256))":{"notice":"Withdraw ZRC20 tokens to an external chain."},"withdraw(bytes,uint256,uint256,(address,bool,address,bytes,uint256))":{"notice":"Withdraw ZETA tokens to an external chain."},"withdrawAndCall(bytes,uint256,address,bytes,uint256,(address,bool,address,bytes,uint256))":{"notice":"Withdraw ZRC20 tokens and call a smart contract on an external chain."},"withdrawAndCall(bytes,uint256,uint256,bytes,(address,bool,address,bytes,uint256))":{"notice":"Withdraw ZETA tokens and call a smart contract on an external chain."},"zetaToken()":{"notice":"The address of the Zeta token."}},"version":1}},"settings":{"remappings":["@openzeppelin/contracts-upgradeable/=lib/openzeppelin-contracts-upgradeable/contracts/","@openzeppelin/contracts/=lib/openzeppelin-contracts-upgradeable/lib/openzeppelin-contracts/contracts/","ds-test/=node_modules/ds-test/src/","erc4626-tests/=lib/openzeppelin-contracts-upgradeable/lib/erc4626-tests/","forge-std/=lib/forge-std/src/","openzeppelin-contracts-upgradeable/=lib/openzeppelin-contracts-upgradeable/","openzeppelin-contracts/=lib/openzeppelin-contracts-upgradeable/lib/openzeppelin-contracts/","openzeppelin-foundry-upgrades/=lib/openzeppelin-foundry-upgrades/src/","solidity-stringutils/=lib/openzeppelin-foundry-upgrades/lib/solidity-stringutils/","test/=test/"],"optimizer":{"enabled":true,"runs":10000},"metadata":{"bytecodeHash":"ipfs"},"compilationTarget":{"contracts/zevm/GatewayZEVM.sol":"GatewayZEVM"},"evmVersion":"london","libraries":{}},"sources":{"contracts/Revert.sol":{"keccak256":"0x4cc63069ff784e32bc89995f30f9c229b4c3e6cf5c917665626c42f34105124b","urls":["bzz-raw://a963620b9cf83465f7a9fb7a9f4e70f6b6905a4e3bb7219dfd7a65ee55ab9409","dweb:/ipfs/QmUQGaQ4TEqhH9VXgdwbudebxgANpUQcuhbSp7ZfyRiDPY"],"license":"MIT"},"contracts/zevm/GatewayZEVM.sol":{"keccak256":"0x772edf5c1c68d0ab0d338632eeb0e9f080943f4c3a06c6f5b49469ac3842d283","urls":["bzz-raw://7a8f808566eb3d9fe6b5c3161e7a8b2157068667e5f81d1cf37167842b402436","dweb:/ipfs/QmbqTG4TsbP9TCnjVPigAmm3bXgWvcGU5KrADHs3wdaGAB"],"license":"MIT"},"contracts/zevm/interfaces/IGatewayZEVM.sol":{"keccak256":"0xe9520cce7fbfe8abcc4922654cf82bde005f5836ba77209dd25e5b1650e676b0","urls":["bzz-raw://c1b38d6154acd0b167a5c7858f6b46178480b649511ed8103ab1fba7fda420ec","dweb:/ipfs/QmeDBj5gYBAnsKsCwiNqV41wn88ksU9J2CFs3M79VUh2jS"],"license":"MIT"},"contracts/zevm/interfaces/IWZETA.sol":{"keccak256":"0x9c90341536af75438f7fa7aed65d0f5f56f87d5deee7fb6f4a07f4f23eb2a106","urls":["bzz-raw://e3110b8de3e8cdcf871090659af3c31efb67048afabd689be3bb3295c172f680","dweb:/ipfs/QmWxpzAxLguM8MtnD2kBo687KXaFBjJ5v2Qeshmmye4XoH"],"license":"MIT"},"contracts/zevm/interfaces/IZRC20.sol":{"keccak256":"0x2118098ec6a745f69358649d011f0cba691f86c586b3a6f0bcbea16d9753f6e8","urls":["bzz-raw://ddacdf1f3681f936f80ef0102cdac2aa1b4d60c751a1c23d7f3a45f969346cdf","dweb:/ipfs/Qma7wpw8JwBSNJeob4KHGjKtXbtvW2FoThJJrDb8vtXz7X"],"license":"MIT"},"contracts/zevm/interfaces/UniversalContract.sol":{"keccak256":"0x6523466b88f1bb8c5b59ba9b8915af533ccdd6c0eef91e4a9243ee0acc96b4b4","urls":["bzz-raw://f9314040c4cae46ecdfa0d68f7e7c2cde4eb809b95bd6629ae731fc67f2d5285","dweb:/ipfs/QmUCXokEgigBPwEGP93Q7XL2Evi3gYGr2P8UrdDKPPQhSS"],"license":"MIT"},"lib/openzeppelin-contracts-upgradeable/contracts/access/AccessControlUpgradeable.sol":{"keccak256":"0x6662ec4e5cefca03eeadd073e9469df8d2944bb2ee8ec8f7622c2c46aab5f225","urls":["bzz-raw://4d8544c6f8daa4d1bc215c6a72fe0acdb748664a105b0e5efc19295667521d45","dweb:/ipfs/QmdGWqdnXT8S3RgCR6aV8XHZrsybieMQLLnug1NtpSjEXN"],"license":"MIT"},"lib/openzeppelin-contracts-upgradeable/contracts/proxy/utils/Initializable.sol":{"keccak256":"0x631188737069917d2f909d29ce62c4d48611d326686ba6683e26b72a23bfac0b","urls":["bzz-raw://7a61054ae84cd6c4d04c0c4450ba1d6de41e27e0a2c4f1bcdf58f796b401c609","dweb:/ipfs/QmUvtdp7X1mRVyC3CsHrtPbgoqWaXHp3S1ZR24tpAQYJWM"],"license":"MIT"},"lib/openzeppelin-contracts-upgradeable/contracts/proxy/utils/UUPSUpgradeable.sol":{"keccak256":"0x3f13b947637c4969c0644cab4ef399cdc4b67f101463b8775c5a43b118558e53","urls":["bzz-raw://c6683e6ade6985d394d32baaef5eea0d8b9ff0b3eca86ae413d6cdde114a9930","dweb:/ipfs/QmdBE8T1BTddZxpdECMsb3KiCFyjNWmxcCddYrWFTXmWPj"],"license":"MIT"},"lib/openzeppelin-contracts-upgradeable/contracts/utils/ContextUpgradeable.sol":{"keccak256":"0xdbef5f0c787055227243a7318ef74c8a5a1108ca3a07f2b3a00ef67769e1e397","urls":["bzz-raw://08e39f23d5b4692f9a40803e53a8156b72b4c1f9902a88cd65ba964db103dab9","dweb:/ipfs/QmPKn6EYDgpga7KtpkA8wV2yJCYGMtc9K4LkJfhKX2RVSV"],"license":"MIT"},"lib/openzeppelin-contracts-upgradeable/contracts/utils/PausableUpgradeable.sol":{"keccak256":"0x92915b7f7f642c6be3f65bfd1522feb5d5b6ef25f755f4dbb51df32c868f2f97","urls":["bzz-raw://85ad36d5cc7e190e1ee6c94b24659bc3a31396c4c36b6ffa6a509e10661f8007","dweb:/ipfs/QmPFyc4zMh2zo6YWZt25gjm3YdR2hg6wGETaWw256fMmJJ"],"license":"MIT"},"lib/openzeppelin-contracts-upgradeable/contracts/utils/ReentrancyGuardUpgradeable.sol":{"keccak256":"0xb44e086e941292cdc7f440de51478493894ef0b1aeccb0c4047445919f667f74","urls":["bzz-raw://942dad22fbdc1669f025540ba63aa3ccfad5f8458fc5d4525b31ebf272e7af45","dweb:/ipfs/Qmdo4X2M82aM3AMoW2kf2jhYkSCyC4T1pHNd6obdsDFnAB"],"license":"MIT"},"lib/openzeppelin-contracts-upgradeable/contracts/utils/introspection/ERC165Upgradeable.sol":{"keccak256":"0xdaba3f7c42c55b2896353f32bd27d4d5f8bae741b3b05d4c53f67abc4dc47ce8","urls":["bzz-raw://1fa2e61141c602510bcd2cd936ed9561922ac8772a9b9c9a9db091a74e354a45","dweb:/ipfs/QmcHQDDoEBwJmwUbzoVkytvJsBx3KVHYFFnDkvRGWh9Wmh"],"license":"MIT"},"lib/openzeppelin-contracts-upgradeable/lib/openzeppelin-contracts/contracts/access/IAccessControl.sol":{"keccak256":"0xb6b36edd6a2999fd243ff226d6cbf84bd71af2432bbd0dfe19392996a1d9cb41","urls":["bzz-raw://1fd2f35495652e57e3f99bc6c510bc5f7dd398a176ea2e72d8ed730aebc6ca26","dweb:/ipfs/QmTQV6X4gkikTib49cho5iDX3JvSQbdsoEChoDwrk3CbbH"],"license":"MIT"},"lib/openzeppelin-contracts-upgradeable/lib/openzeppelin-contracts/contracts/interfaces/draft-IERC1822.sol":{"keccak256":"0x2a1f9944df2015c081d89cd41ba22ffaf10aa6285969f0dc612b235cc448999c","urls":["bzz-raw://ef381843676aec64421200ee85eaa0b1356a35f28b9fc67e746a6bbb832077d9","dweb:/ipfs/QmY8aorMYA2TeTCnu6ejDjzb4rW4t7TCtW4GZ6LoxTFm7v"],"license":"MIT"},"lib/openzeppelin-contracts-upgradeable/lib/openzeppelin-contracts/contracts/proxy/ERC1967/ERC1967Utils.sol":{"keccak256":"0x06a78f9b3ee3e6d0eb4e4cd635ba49960bea34cac1db8c0a27c75f2319f1fd65","urls":["bzz-raw://547d21aa17f4f3f1a1a7edf7167beff8dd9496a0348d5588f15cc8a4b29d052a","dweb:/ipfs/QmT16JtRQSWNpLo9W23jr6CzaMuTAcQcjJJcdRd8HLJ6cE"],"license":"MIT"},"lib/openzeppelin-contracts-upgradeable/lib/openzeppelin-contracts/contracts/proxy/beacon/IBeacon.sol":{"keccak256":"0xc59a78b07b44b2cf2e8ab4175fca91e8eca1eee2df7357b8d2a8833e5ea1f64c","urls":["bzz-raw://5aa4f07e65444784c29cd7bfcc2341b34381e4e5b5da9f0c5bd00d7f430e66fa","dweb:/ipfs/QmWRMh4Q9DpaU9GvsiXmDdoNYMyyece9if7hnfLz7uqzWM"],"license":"MIT"},"lib/openzeppelin-contracts-upgradeable/lib/openzeppelin-contracts/contracts/utils/Address.sol":{"keccak256":"0xaf28a975a78550e45f65e559a3ad6a5ad43b9b8a37366999abd1b7084eb70721","urls":["bzz-raw://b7bd24e224f67f65bfadf85dc2929fa965456bb2415478bd0125471b5ce35245","dweb:/ipfs/QmRaydGr8BTHs1kvaZfsNU69pKzUAGFrvABn1KiRSbE51y"],"license":"MIT"},"lib/openzeppelin-contracts-upgradeable/lib/openzeppelin-contracts/contracts/utils/StorageSlot.sol":{"keccak256":"0x32ba59b4b7299237c8ba56319110989d7978a039faf754793064e967e5894418","urls":["bzz-raw://1ae50c8b562427df610cc4540c9bf104acca7ef8e2dcae567ae7e52272281e9c","dweb:/ipfs/QmTHiadFCSJUPpRjNegc5SahmeU8bAoY8i9Aq6tVscbcKR"],"license":"MIT"},"lib/openzeppelin-contracts-upgradeable/lib/openzeppelin-contracts/contracts/utils/introspection/IERC165.sol":{"keccak256":"0x4296879f55019b23e135000eb36896057e7101fb7fb859c5ef690cf14643757b","urls":["bzz-raw://87b3541437c8c443ccd36795e56a338ed12855eec17f8da624511b8d1a7e14df","dweb:/ipfs/QmeJQCtZrQjtJLr6u7ZHWeH3pBnjtLWzvRrKViAi7UZqxL"],"license":"MIT"}},"version":1},"storageLayout":{"storage":[{"astId":2515,"contract":"contracts/zevm/GatewayZEVM.sol:GatewayZEVM","label":"zetaToken","offset":0,"slot":"0","type":"t_address"}],"types":{"t_address":{"encoding":"inplace","label":"address","numberOfBytes":"20"}}},"ast":{"absolutePath":"contracts/zevm/GatewayZEVM.sol","id":3463,"exportedSymbols":{"AccessControlUpgradeable":[44235],"ContextUpgradeable":[44717],"ERC165Upgradeable":[45062],"ERC1967Utils":[46098],"GatewayZEVM":[3462],"IAccessControl":[45441],"IERC1822Proxiable":[45620],"IGatewayZEVM":[4578],"IWETH9":[4708],"IZRC20":[4825],"Initializable":[44489],"PausableUpgradeable":[44893],"ReentrancyGuardUpgradeable":[45022],"RevertContext":[21],"RevertOptions":[13],"UUPSUpgradeable":[44671],"UniversalContract":[4947],"zContext":[4914]},"nodeType":"SourceUnit","src":"32:14420:10","nodes":[{"id":2476,"nodeType":"PragmaDirective","src":"32:23:10","nodes":[],"literals":["solidity","0.8",".26"]},{"id":2478,"nodeType":"ImportDirective","src":"57:61:10","nodes":[],"absolutePath":"contracts/zevm/interfaces/IGatewayZEVM.sol","file":"./interfaces/IGatewayZEVM.sol","nameLocation":"-1:-1:-1","scope":3463,"sourceUnit":4579,"symbolAliases":[{"foreign":{"id":2477,"name":"IGatewayZEVM","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4578,"src":"66:12:10","typeDescriptions":{}},"nameLocation":"-1:-1:-1"}],"unitAlias":""},{"id":2481,"nodeType":"ImportDirective","src":"120:74:10","nodes":[],"absolutePath":"contracts/Revert.sol","file":"../../contracts/Revert.sol","nameLocation":"-1:-1:-1","scope":3463,"sourceUnit":31,"symbolAliases":[{"foreign":{"id":2479,"name":"RevertContext","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":21,"src":"129:13:10","typeDescriptions":{}},"nameLocation":"-1:-1:-1"},{"foreign":{"id":2480,"name":"RevertOptions","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":13,"src":"144:13:10","typeDescriptions":{}},"nameLocation":"-1:-1:-1"}],"unitAlias":""},{"id":2482,"nodeType":"ImportDirective","src":"195:33:10","nodes":[],"absolutePath":"contracts/zevm/interfaces/IWZETA.sol","file":"./interfaces/IWZETA.sol","nameLocation":"-1:-1:-1","scope":3463,"sourceUnit":4709,"symbolAliases":[],"unitAlias":""},{"id":2484,"nodeType":"ImportDirective","src":"229:49:10","nodes":[],"absolutePath":"contracts/zevm/interfaces/IZRC20.sol","file":"./interfaces/IZRC20.sol","nameLocation":"-1:-1:-1","scope":3463,"sourceUnit":4904,"symbolAliases":[{"foreign":{"id":2483,"name":"IZRC20","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4825,"src":"238:6:10","typeDescriptions":{}},"nameLocation":"-1:-1:-1"}],"unitAlias":""},{"id":2487,"nodeType":"ImportDirective","src":"279:81:10","nodes":[],"absolutePath":"contracts/zevm/interfaces/UniversalContract.sol","file":"./interfaces/UniversalContract.sol","nameLocation":"-1:-1:-1","scope":3463,"sourceUnit":4948,"symbolAliases":[{"foreign":{"id":2485,"name":"UniversalContract","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4947,"src":"288:17:10","typeDescriptions":{}},"nameLocation":"-1:-1:-1"},{"foreign":{"id":2486,"name":"zContext","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4914,"src":"307:8:10","typeDescriptions":{}},"nameLocation":"-1:-1:-1"}],"unitAlias":""},{"id":2488,"nodeType":"ImportDirective","src":"361:81:10","nodes":[],"absolutePath":"lib/openzeppelin-contracts-upgradeable/contracts/access/AccessControlUpgradeable.sol","file":"@openzeppelin/contracts-upgradeable/access/AccessControlUpgradeable.sol","nameLocation":"-1:-1:-1","scope":3463,"sourceUnit":44236,"symbolAliases":[],"unitAlias":""},{"id":2489,"nodeType":"ImportDirective","src":"443:75:10","nodes":[],"absolutePath":"lib/openzeppelin-contracts-upgradeable/contracts/proxy/utils/Initializable.sol","file":"@openzeppelin/contracts-upgradeable/proxy/utils/Initializable.sol","nameLocation":"-1:-1:-1","scope":3463,"sourceUnit":44490,"symbolAliases":[],"unitAlias":""},{"id":2490,"nodeType":"ImportDirective","src":"519:77:10","nodes":[],"absolutePath":"lib/openzeppelin-contracts-upgradeable/contracts/proxy/utils/UUPSUpgradeable.sol","file":"@openzeppelin/contracts-upgradeable/proxy/utils/UUPSUpgradeable.sol","nameLocation":"-1:-1:-1","scope":3463,"sourceUnit":44672,"symbolAliases":[],"unitAlias":""},{"id":2491,"nodeType":"ImportDirective","src":"598:75:10","nodes":[],"absolutePath":"lib/openzeppelin-contracts-upgradeable/contracts/utils/PausableUpgradeable.sol","file":"@openzeppelin/contracts-upgradeable/utils/PausableUpgradeable.sol","nameLocation":"-1:-1:-1","scope":3463,"sourceUnit":44894,"symbolAliases":[],"unitAlias":""},{"id":2492,"nodeType":"ImportDirective","src":"674:82:10","nodes":[],"absolutePath":"lib/openzeppelin-contracts-upgradeable/contracts/utils/ReentrancyGuardUpgradeable.sol","file":"@openzeppelin/contracts-upgradeable/utils/ReentrancyGuardUpgradeable.sol","nameLocation":"-1:-1:-1","scope":3463,"sourceUnit":45023,"symbolAliases":[],"unitAlias":""},{"id":3462,"nodeType":"ContractDefinition","src":"958:13493:10","nodes":[{"id":2508,"nodeType":"ErrorDefinition","src":"1194:20:10","nodes":[],"documentation":{"id":2506,"nodeType":"StructuredDocumentation","src":"1132:57:10","text":"@notice Error indicating a zero address was provided."},"errorSelector":"d92e233d","name":"ZeroAddress","nameLocation":"1200:11:10","parameters":{"id":2507,"nodeType":"ParameterList","parameters":[],"src":"1211:2:10"}},{"id":2512,"nodeType":"VariableDeclaration","src":"1281:92:10","nodes":[],"constant":true,"documentation":{"id":2509,"nodeType":"StructuredDocumentation","src":"1220:56:10","text":"@notice The constant address of the Fungible module."},"functionSelector":"3ce4a5bc","mutability":"constant","name":"FUNGIBLE_MODULE_ADDRESS","nameLocation":"1305:23:10","scope":3462,"stateVariable":true,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":2510,"name":"address","nodeType":"ElementaryTypeName","src":"1281:7:10","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"value":{"hexValue":"307837333562313442423739343633333037414163424544383644416633333232423165363232366142","id":2511,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"1331:42:10","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"value":"0x735b14BB79463307AAcBED86DAf3322B1e6226aB"},"visibility":"public"},{"id":2515,"nodeType":"VariableDeclaration","src":"1426:24:10","nodes":[],"constant":false,"documentation":{"id":2513,"nodeType":"StructuredDocumentation","src":"1379:42:10","text":"@notice The address of the Zeta token."},"functionSelector":"21e093b1","mutability":"mutable","name":"zetaToken","nameLocation":"1441:9:10","scope":3462,"stateVariable":true,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":2514,"name":"address","nodeType":"ElementaryTypeName","src":"1426:7:10","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"public"},{"id":2521,"nodeType":"VariableDeclaration","src":"1510:62:10","nodes":[],"constant":true,"documentation":{"id":2516,"nodeType":"StructuredDocumentation","src":"1457:48:10","text":"@notice New role identifier for pauser role."},"functionSelector":"e63ab1e9","mutability":"constant","name":"PAUSER_ROLE","nameLocation":"1534:11:10","scope":3462,"stateVariable":true,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"},"typeName":{"id":2517,"name":"bytes32","nodeType":"ElementaryTypeName","src":"1510:7:10","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"value":{"arguments":[{"hexValue":"5041555345525f524f4c45","id":2519,"isConstant":false,"isLValue":false,"isPure":true,"kind":"string","lValueRequested":false,"nodeType":"Literal","src":"1558:13:10","typeDescriptions":{"typeIdentifier":"t_stringliteral_65d7a28e3265b37a6474929f336521b332c1681b933f6cb9f3376673440d862a","typeString":"literal_string \"PAUSER_ROLE\""},"value":"PAUSER_ROLE"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_stringliteral_65d7a28e3265b37a6474929f336521b332c1681b933f6cb9f3376673440d862a","typeString":"literal_string \"PAUSER_ROLE\""}],"id":2518,"name":"keccak256","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-8,"src":"1548:9:10","typeDescriptions":{"typeIdentifier":"t_function_keccak256_pure$_t_bytes_memory_ptr_$returns$_t_bytes32_$","typeString":"function (bytes memory) pure returns (bytes32)"}},"id":2520,"isConstant":false,"isLValue":false,"isPure":true,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"1548:24:10","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"visibility":"public"},{"id":2535,"nodeType":"ModifierDefinition","src":"1639:153:10","nodes":[],"body":{"id":2534,"nodeType":"Block","src":"1663:129:10","nodes":[],"statements":[{"condition":{"commonType":{"typeIdentifier":"t_address","typeString":"address"},"id":2527,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"expression":{"id":2524,"name":"msg","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-15,"src":"1677:3:10","typeDescriptions":{"typeIdentifier":"t_magic_message","typeString":"msg"}},"id":2525,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"1681:6:10","memberName":"sender","nodeType":"MemberAccess","src":"1677:10:10","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"nodeType":"BinaryOperation","operator":"!=","rightExpression":{"id":2526,"name":"FUNGIBLE_MODULE_ADDRESS","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2512,"src":"1691:23:10","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"src":"1677:37:10","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":2532,"nodeType":"IfStatement","src":"1673:102:10","trueBody":{"id":2531,"nodeType":"Block","src":"1716:59:10","statements":[{"errorCall":{"arguments":[],"expression":{"argumentTypes":[],"id":2528,"name":"CallerIsNotFungibleModule","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4411,"src":"1737:25:10","typeDescriptions":{"typeIdentifier":"t_function_error_pure$__$returns$_t_error_$","typeString":"function () pure returns (error)"}},"id":2529,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"1737:27:10","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_error","typeString":"error"}},"id":2530,"nodeType":"RevertStatement","src":"1730:34:10"}]}},{"id":2533,"nodeType":"PlaceholderStatement","src":"1784:1:10"}]},"documentation":{"id":2522,"nodeType":"StructuredDocumentation","src":"1579:55:10","text":"@dev Only Fungible module address allowed modifier."},"name":"onlyFungible","nameLocation":"1648:12:10","parameters":{"id":2523,"nodeType":"ParameterList","parameters":[],"src":"1660:2:10"},"virtual":false,"visibility":"internal"},{"id":2543,"nodeType":"FunctionDefinition","src":"1851:53:10","nodes":[],"body":{"id":2542,"nodeType":"Block","src":"1865:39:10","nodes":[],"statements":[{"expression":{"arguments":[],"expression":{"argumentTypes":[],"id":2539,"name":"_disableInitializers","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":44457,"src":"1875:20:10","typeDescriptions":{"typeIdentifier":"t_function_internal_nonpayable$__$returns$__$","typeString":"function ()"}},"id":2540,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"1875:22:10","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":2541,"nodeType":"ExpressionStatement","src":"1875:22:10"}]},"documentation":{"id":2536,"nodeType":"StructuredDocumentation","src":"1798:48:10","text":"@custom:oz-upgrades-unsafe-allow constructor"},"implemented":true,"kind":"constructor","modifiers":[],"name":"","nameLocation":"-1:-1:-1","parameters":{"id":2537,"nodeType":"ParameterList","parameters":[],"src":"1862:2:10"},"returnParameters":{"id":2538,"nodeType":"ParameterList","parameters":[],"src":"1865:0:10"},"scope":3462,"stateMutability":"nonpayable","virtual":false,"visibility":"public"},{"id":2598,"nodeType":"FunctionDefinition","src":"2067:439:10","nodes":[],"body":{"id":2597,"nodeType":"Block","src":"2142:364:10","nodes":[],"statements":[{"condition":{"commonType":{"typeIdentifier":"t_bool","typeString":"bool"},"id":2565,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"commonType":{"typeIdentifier":"t_address","typeString":"address"},"id":2558,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":2553,"name":"zetaToken_","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2546,"src":"2156:10:10","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"nodeType":"BinaryOperation","operator":"==","rightExpression":{"arguments":[{"hexValue":"30","id":2556,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"2178:1:10","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"}],"id":2555,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"2170:7:10","typeDescriptions":{"typeIdentifier":"t_type$_t_address_$","typeString":"type(address)"},"typeName":{"id":2554,"name":"address","nodeType":"ElementaryTypeName","src":"2170:7:10","typeDescriptions":{}}},"id":2557,"isConstant":false,"isLValue":false,"isPure":true,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"2170:10:10","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"src":"2156:24:10","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"nodeType":"BinaryOperation","operator":"||","rightExpression":{"commonType":{"typeIdentifier":"t_address","typeString":"address"},"id":2564,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":2559,"name":"admin_","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2548,"src":"2184:6:10","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"nodeType":"BinaryOperation","operator":"==","rightExpression":{"arguments":[{"hexValue":"30","id":2562,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"2202:1:10","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"}],"id":2561,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"2194:7:10","typeDescriptions":{"typeIdentifier":"t_type$_t_address_$","typeString":"type(address)"},"typeName":{"id":2560,"name":"address","nodeType":"ElementaryTypeName","src":"2194:7:10","typeDescriptions":{}}},"id":2563,"isConstant":false,"isLValue":false,"isPure":true,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"2194:10:10","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"src":"2184:20:10","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"src":"2156:48:10","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":2570,"nodeType":"IfStatement","src":"2152:99:10","trueBody":{"id":2569,"nodeType":"Block","src":"2206:45:10","statements":[{"errorCall":{"arguments":[],"expression":{"argumentTypes":[],"id":2566,"name":"ZeroAddress","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2508,"src":"2227:11:10","typeDescriptions":{"typeIdentifier":"t_function_error_pure$__$returns$_t_error_$","typeString":"function () pure returns (error)"}},"id":2567,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"2227:13:10","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_error","typeString":"error"}},"id":2568,"nodeType":"RevertStatement","src":"2220:20:10"}]}},{"expression":{"arguments":[],"expression":{"argumentTypes":[],"id":2571,"name":"__UUPSUpgradeable_init","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":44543,"src":"2260:22:10","typeDescriptions":{"typeIdentifier":"t_function_internal_nonpayable$__$returns$__$","typeString":"function ()"}},"id":2572,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"2260:24:10","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":2573,"nodeType":"ExpressionStatement","src":"2260:24:10"},{"expression":{"arguments":[],"expression":{"argumentTypes":[],"id":2574,"name":"__AccessControl_init","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":43936,"src":"2294:20:10","typeDescriptions":{"typeIdentifier":"t_function_internal_nonpayable$__$returns$__$","typeString":"function ()"}},"id":2575,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"2294:22:10","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":2576,"nodeType":"ExpressionStatement","src":"2294:22:10"},{"expression":{"arguments":[],"expression":{"argumentTypes":[],"id":2577,"name":"__Pausable_init","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":44769,"src":"2326:15:10","typeDescriptions":{"typeIdentifier":"t_function_internal_nonpayable$__$returns$__$","typeString":"function ()"}},"id":2578,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"2326:17:10","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":2579,"nodeType":"ExpressionStatement","src":"2326:17:10"},{"expression":{"arguments":[],"expression":{"argumentTypes":[],"id":2580,"name":"__ReentrancyGuard_init","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":44933,"src":"2353:22:10","typeDescriptions":{"typeIdentifier":"t_function_internal_nonpayable$__$returns$__$","typeString":"function ()"}},"id":2581,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"2353:24:10","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":2582,"nodeType":"ExpressionStatement","src":"2353:24:10"},{"expression":{"arguments":[{"id":2584,"name":"DEFAULT_ADMIN_ROLE","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":43901,"src":"2399:18:10","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},{"id":2585,"name":"admin_","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2548,"src":"2419:6:10","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bytes32","typeString":"bytes32"},{"typeIdentifier":"t_address","typeString":"address"}],"id":2583,"name":"_grantRole","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":44188,"src":"2388:10:10","typeDescriptions":{"typeIdentifier":"t_function_internal_nonpayable$_t_bytes32_$_t_address_$returns$_t_bool_$","typeString":"function (bytes32,address) returns (bool)"}},"id":2586,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"2388:38:10","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":2587,"nodeType":"ExpressionStatement","src":"2388:38:10"},{"expression":{"arguments":[{"id":2589,"name":"PAUSER_ROLE","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2521,"src":"2447:11:10","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},{"id":2590,"name":"admin_","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2548,"src":"2460:6:10","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bytes32","typeString":"bytes32"},{"typeIdentifier":"t_address","typeString":"address"}],"id":2588,"name":"_grantRole","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":44188,"src":"2436:10:10","typeDescriptions":{"typeIdentifier":"t_function_internal_nonpayable$_t_bytes32_$_t_address_$returns$_t_bool_$","typeString":"function (bytes32,address) returns (bool)"}},"id":2591,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"2436:31:10","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":2592,"nodeType":"ExpressionStatement","src":"2436:31:10"},{"expression":{"id":2595,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":2593,"name":"zetaToken","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2515,"src":"2477:9:10","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"id":2594,"name":"zetaToken_","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2546,"src":"2489:10:10","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"src":"2477:22:10","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"id":2596,"nodeType":"ExpressionStatement","src":"2477:22:10"}]},"documentation":{"id":2544,"nodeType":"StructuredDocumentation","src":"1910:152:10","text":"@notice Initialize with address of zeta token and admin account set as DEFAULT_ADMIN_ROLE.\n @dev Using admin to authorize upgrades and pause."},"functionSelector":"485cc955","implemented":true,"kind":"function","modifiers":[{"id":2551,"kind":"modifierInvocation","modifierName":{"id":2550,"name":"initializer","nameLocations":["2130:11:10"],"nodeType":"IdentifierPath","referencedDeclaration":44343,"src":"2130:11:10"},"nodeType":"ModifierInvocation","src":"2130:11:10"}],"name":"initialize","nameLocation":"2076:10:10","parameters":{"id":2549,"nodeType":"ParameterList","parameters":[{"constant":false,"id":2546,"mutability":"mutable","name":"zetaToken_","nameLocation":"2095:10:10","nodeType":"VariableDeclaration","scope":2598,"src":"2087:18:10","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":2545,"name":"address","nodeType":"ElementaryTypeName","src":"2087:7:10","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":2548,"mutability":"mutable","name":"admin_","nameLocation":"2115:6:10","nodeType":"VariableDeclaration","scope":2598,"src":"2107:14:10","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":2547,"name":"address","nodeType":"ElementaryTypeName","src":"2107:7:10","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"2086:36:10"},"returnParameters":{"id":2552,"nodeType":"ParameterList","parameters":[],"src":"2142:0:10"},"scope":3462,"stateMutability":"nonpayable","virtual":false,"visibility":"public"},{"id":2609,"nodeType":"FunctionDefinition","src":"2637:104:10","nodes":[],"body":{"id":2608,"nodeType":"Block","src":"2738:3:10","nodes":[],"statements":[]},"baseFunctions":[44625],"documentation":{"id":2599,"nodeType":"StructuredDocumentation","src":"2512:120:10","text":"@dev Authorizes the upgrade of the contract.\n @param newImplementation The address of the new implementation."},"implemented":true,"kind":"function","modifiers":[{"arguments":[{"id":2605,"name":"DEFAULT_ADMIN_ROLE","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":43901,"src":"2718:18:10","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}}],"id":2606,"kind":"modifierInvocation","modifierName":{"id":2604,"name":"onlyRole","nameLocations":["2709:8:10"],"nodeType":"IdentifierPath","referencedDeclaration":43930,"src":"2709:8:10"},"nodeType":"ModifierInvocation","src":"2709:28:10"}],"name":"_authorizeUpgrade","nameLocation":"2646:17:10","overrides":{"id":2603,"nodeType":"OverrideSpecifier","overrides":[],"src":"2700:8:10"},"parameters":{"id":2602,"nodeType":"ParameterList","parameters":[{"constant":false,"id":2601,"mutability":"mutable","name":"newImplementation","nameLocation":"2672:17:10","nodeType":"VariableDeclaration","scope":2609,"src":"2664:25:10","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":2600,"name":"address","nodeType":"ElementaryTypeName","src":"2664:7:10","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"2663:27:10"},"returnParameters":{"id":2607,"nodeType":"ParameterList","parameters":[],"src":"2738:0:10"},"scope":3462,"stateMutability":"nonpayable","virtual":false,"visibility":"internal"},{"id":2629,"nodeType":"FunctionDefinition","src":"2816:156:10","nodes":[],"body":{"id":2628,"nodeType":"Block","src":"2857:115:10","nodes":[],"statements":[{"condition":{"commonType":{"typeIdentifier":"t_bool","typeString":"bool"},"id":2623,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"commonType":{"typeIdentifier":"t_address","typeString":"address"},"id":2618,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"expression":{"id":2615,"name":"msg","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-15,"src":"2871:3:10","typeDescriptions":{"typeIdentifier":"t_magic_message","typeString":"msg"}},"id":2616,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"2875:6:10","memberName":"sender","nodeType":"MemberAccess","src":"2871:10:10","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"nodeType":"BinaryOperation","operator":"!=","rightExpression":{"id":2617,"name":"zetaToken","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2515,"src":"2885:9:10","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"src":"2871:23:10","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"nodeType":"BinaryOperation","operator":"&&","rightExpression":{"commonType":{"typeIdentifier":"t_address","typeString":"address"},"id":2622,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"expression":{"id":2619,"name":"msg","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-15,"src":"2898:3:10","typeDescriptions":{"typeIdentifier":"t_magic_message","typeString":"msg"}},"id":2620,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"2902:6:10","memberName":"sender","nodeType":"MemberAccess","src":"2898:10:10","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"nodeType":"BinaryOperation","operator":"!=","rightExpression":{"id":2621,"name":"FUNGIBLE_MODULE_ADDRESS","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2512,"src":"2912:23:10","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"src":"2898:37:10","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"src":"2871:64:10","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":2627,"nodeType":"IfStatement","src":"2867:98:10","trueBody":{"errorCall":{"arguments":[],"expression":{"argumentTypes":[],"id":2624,"name":"OnlyWZETAOrFungible","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4420,"src":"2944:19:10","typeDescriptions":{"typeIdentifier":"t_function_error_pure$__$returns$_t_error_$","typeString":"function () pure returns (error)"}},"id":2625,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"2944:21:10","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_error","typeString":"error"}},"id":2626,"nodeType":"RevertStatement","src":"2937:28:10"}}]},"documentation":{"id":2610,"nodeType":"StructuredDocumentation","src":"2747:64:10","text":"@dev Receive function to receive ZETA from WETH9.withdraw()."},"implemented":true,"kind":"receive","modifiers":[{"id":2613,"kind":"modifierInvocation","modifierName":{"id":2612,"name":"whenNotPaused","nameLocations":["2843:13:10"],"nodeType":"IdentifierPath","referencedDeclaration":44795,"src":"2843:13:10"},"nodeType":"ModifierInvocation","src":"2843:13:10"}],"name":"","nameLocation":"-1:-1:-1","parameters":{"id":2611,"nodeType":"ParameterList","parameters":[],"src":"2823:2:10"},"returnParameters":{"id":2614,"nodeType":"ParameterList","parameters":[],"src":"2857:0:10"},"scope":3462,"stateMutability":"payable","virtual":false,"visibility":"external"},{"id":2640,"nodeType":"FunctionDefinition","src":"3010:73:10","nodes":[],"body":{"id":2639,"nodeType":"Block","src":"3058:25:10","nodes":[],"statements":[{"expression":{"arguments":[],"expression":{"argumentTypes":[],"id":2636,"name":"_pause","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":44868,"src":"3068:6:10","typeDescriptions":{"typeIdentifier":"t_function_internal_nonpayable$__$returns$__$","typeString":"function ()"}},"id":2637,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"3068:8:10","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":2638,"nodeType":"ExpressionStatement","src":"3068:8:10"}]},"documentation":{"id":2630,"nodeType":"StructuredDocumentation","src":"2978:27:10","text":"@notice Pause contract."},"functionSelector":"8456cb59","implemented":true,"kind":"function","modifiers":[{"arguments":[{"id":2633,"name":"PAUSER_ROLE","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2521,"src":"3045:11:10","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}}],"id":2634,"kind":"modifierInvocation","modifierName":{"id":2632,"name":"onlyRole","nameLocations":["3036:8:10"],"nodeType":"IdentifierPath","referencedDeclaration":43930,"src":"3036:8:10"},"nodeType":"ModifierInvocation","src":"3036:21:10"}],"name":"pause","nameLocation":"3019:5:10","parameters":{"id":2631,"nodeType":"ParameterList","parameters":[],"src":"3024:2:10"},"returnParameters":{"id":2635,"nodeType":"ParameterList","parameters":[],"src":"3058:0:10"},"scope":3462,"stateMutability":"nonpayable","virtual":false,"visibility":"external"},{"id":2651,"nodeType":"FunctionDefinition","src":"3123:77:10","nodes":[],"body":{"id":2650,"nodeType":"Block","src":"3173:27:10","nodes":[],"statements":[{"expression":{"arguments":[],"expression":{"argumentTypes":[],"id":2647,"name":"_unpause","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":44892,"src":"3183:8:10","typeDescriptions":{"typeIdentifier":"t_function_internal_nonpayable$__$returns$__$","typeString":"function ()"}},"id":2648,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"3183:10:10","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":2649,"nodeType":"ExpressionStatement","src":"3183:10:10"}]},"documentation":{"id":2641,"nodeType":"StructuredDocumentation","src":"3089:29:10","text":"@notice Unpause contract."},"functionSelector":"3f4ba83a","implemented":true,"kind":"function","modifiers":[{"arguments":[{"id":2644,"name":"PAUSER_ROLE","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2521,"src":"3160:11:10","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}}],"id":2645,"kind":"modifierInvocation","modifierName":{"id":2643,"name":"onlyRole","nameLocations":["3151:8:10"],"nodeType":"IdentifierPath","referencedDeclaration":43930,"src":"3151:8:10"},"nodeType":"ModifierInvocation","src":"3151:21:10"}],"name":"unpause","nameLocation":"3132:7:10","parameters":{"id":2642,"nodeType":"ParameterList","parameters":[],"src":"3139:2:10"},"returnParameters":{"id":2646,"nodeType":"ParameterList","parameters":[],"src":"3173:0:10"},"scope":3462,"stateMutability":"nonpayable","virtual":false,"visibility":"external"},{"id":2672,"nodeType":"FunctionDefinition","src":"3420:210:10","nodes":[],"body":{"id":2671,"nodeType":"Block","src":"3502:128:10","nodes":[],"statements":[{"expression":{"arguments":[{"id":2662,"name":"amount","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2654,"src":"3582:6:10","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},{"id":2663,"name":"zrc20","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2656,"src":"3590:5:10","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"arguments":[],"expression":{"argumentTypes":[],"expression":{"arguments":[{"id":2665,"name":"zrc20","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2656,"src":"3604:5:10","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"}],"id":2664,"name":"IZRC20","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4825,"src":"3597:6:10","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_IZRC20_$4825_$","typeString":"type(contract IZRC20)"}},"id":2666,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"3597:13:10","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_contract$_IZRC20_$4825","typeString":"contract IZRC20"}},"id":2667,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"3611:9:10","memberName":"GAS_LIMIT","nodeType":"MemberAccess","referencedDeclaration":4814,"src":"3597:23:10","typeDescriptions":{"typeIdentifier":"t_function_external_view$__$returns$_t_uint256_$","typeString":"function () view external returns (uint256)"}},"id":2668,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"3597:25:10","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"},{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":2661,"name":"_withdrawZRC20WithGasLimit","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2742,"src":"3555:26:10","typeDescriptions":{"typeIdentifier":"t_function_internal_nonpayable$_t_uint256_$_t_address_$_t_uint256_$returns$_t_uint256_$","typeString":"function (uint256,address,uint256) returns (uint256)"}},"id":2669,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"3555:68:10","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"functionReturnParameters":2660,"id":2670,"nodeType":"Return","src":"3548:75:10"}]},"documentation":{"id":2652,"nodeType":"StructuredDocumentation","src":"3206:209:10","text":"@dev Internal function to withdraw ZRC20 tokens.\n @param amount The amount of tokens to withdraw.\n @param zrc20 The address of the ZRC20 token.\n @return The gas fee for the withdrawal."},"implemented":true,"kind":"function","modifiers":[],"name":"_withdrawZRC20","nameLocation":"3429:14:10","parameters":{"id":2657,"nodeType":"ParameterList","parameters":[{"constant":false,"id":2654,"mutability":"mutable","name":"amount","nameLocation":"3452:6:10","nodeType":"VariableDeclaration","scope":2672,"src":"3444:14:10","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":2653,"name":"uint256","nodeType":"ElementaryTypeName","src":"3444:7:10","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":2656,"mutability":"mutable","name":"zrc20","nameLocation":"3468:5:10","nodeType":"VariableDeclaration","scope":2672,"src":"3460:13:10","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":2655,"name":"address","nodeType":"ElementaryTypeName","src":"3460:7:10","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"3443:31:10"},"returnParameters":{"id":2660,"nodeType":"ParameterList","parameters":[{"constant":false,"id":2659,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":2672,"src":"3493:7:10","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":2658,"name":"uint256","nodeType":"ElementaryTypeName","src":"3493:7:10","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"3492:9:10"},"scope":3462,"stateMutability":"nonpayable","virtual":false,"visibility":"internal"},{"id":2742,"nodeType":"FunctionDefinition","src":"3900:583:10","nodes":[],"body":{"id":2741,"nodeType":"Block","src":"4012:471:10","nodes":[],"statements":[{"assignments":[2685,2687],"declarations":[{"constant":false,"id":2685,"mutability":"mutable","name":"gasZRC20","nameLocation":"4031:8:10","nodeType":"VariableDeclaration","scope":2741,"src":"4023:16:10","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":2684,"name":"address","nodeType":"ElementaryTypeName","src":"4023:7:10","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":2687,"mutability":"mutable","name":"gasFee","nameLocation":"4049:6:10","nodeType":"VariableDeclaration","scope":2741,"src":"4041:14:10","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":2686,"name":"uint256","nodeType":"ElementaryTypeName","src":"4041:7:10","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"id":2694,"initialValue":{"arguments":[{"id":2692,"name":"gasLimit","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2679,"src":"4100:8:10","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"}],"expression":{"arguments":[{"id":2689,"name":"zrc20","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2677,"src":"4066:5:10","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"}],"id":2688,"name":"IZRC20","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4825,"src":"4059:6:10","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_IZRC20_$4825_$","typeString":"type(contract IZRC20)"}},"id":2690,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"4059:13:10","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_contract$_IZRC20_$4825","typeString":"contract IZRC20"}},"id":2691,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"4073:26:10","memberName":"withdrawGasFeeWithGasLimit","nodeType":"MemberAccess","referencedDeclaration":4802,"src":"4059:40:10","typeDescriptions":{"typeIdentifier":"t_function_external_view$_t_uint256_$returns$_t_address_$_t_uint256_$","typeString":"function (uint256) view external returns (address,uint256)"}},"id":2693,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"4059:50:10","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$_t_address_$_t_uint256_$","typeString":"tuple(address,uint256)"}},"nodeType":"VariableDeclarationStatement","src":"4022:87:10"},{"condition":{"id":2704,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"UnaryOperation","operator":"!","prefix":true,"src":"4123:75:10","subExpression":{"arguments":[{"expression":{"id":2699,"name":"msg","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-15,"src":"4154:3:10","typeDescriptions":{"typeIdentifier":"t_magic_message","typeString":"msg"}},"id":2700,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"4158:6:10","memberName":"sender","nodeType":"MemberAccess","src":"4154:10:10","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":2701,"name":"FUNGIBLE_MODULE_ADDRESS","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2512,"src":"4166:23:10","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":2702,"name":"gasFee","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2687,"src":"4191:6:10","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"expression":{"arguments":[{"id":2696,"name":"gasZRC20","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2685,"src":"4131:8:10","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"}],"id":2695,"name":"IZRC20","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4825,"src":"4124:6:10","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_IZRC20_$4825_$","typeString":"type(contract IZRC20)"}},"id":2697,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"4124:16:10","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_contract$_IZRC20_$4825","typeString":"contract IZRC20"}},"id":2698,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"4141:12:10","memberName":"transferFrom","nodeType":"MemberAccess","referencedDeclaration":4761,"src":"4124:29:10","typeDescriptions":{"typeIdentifier":"t_function_external_nonpayable$_t_address_$_t_address_$_t_uint256_$returns$_t_bool_$","typeString":"function (address,address,uint256) external returns (bool)"}},"id":2703,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"4124:74:10","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":2709,"nodeType":"IfStatement","src":"4119:135:10","trueBody":{"id":2708,"nodeType":"Block","src":"4200:54:10","statements":[{"errorCall":{"arguments":[],"expression":{"argumentTypes":[],"id":2705,"name":"GasFeeTransferFailed","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4408,"src":"4221:20:10","typeDescriptions":{"typeIdentifier":"t_function_error_pure$__$returns$_t_error_$","typeString":"function () pure returns (error)"}},"id":2706,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"4221:22:10","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_error","typeString":"error"}},"id":2707,"nodeType":"RevertStatement","src":"4214:29:10"}]}},{"condition":{"id":2722,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"UnaryOperation","operator":"!","prefix":true,"src":"4268:62:10","subExpression":{"arguments":[{"expression":{"id":2714,"name":"msg","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-15,"src":"4296:3:10","typeDescriptions":{"typeIdentifier":"t_magic_message","typeString":"msg"}},"id":2715,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"4300:6:10","memberName":"sender","nodeType":"MemberAccess","src":"4296:10:10","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"arguments":[{"id":2718,"name":"this","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-28,"src":"4316:4:10","typeDescriptions":{"typeIdentifier":"t_contract$_GatewayZEVM_$3462","typeString":"contract GatewayZEVM"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_contract$_GatewayZEVM_$3462","typeString":"contract GatewayZEVM"}],"id":2717,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"4308:7:10","typeDescriptions":{"typeIdentifier":"t_type$_t_address_$","typeString":"type(address)"},"typeName":{"id":2716,"name":"address","nodeType":"ElementaryTypeName","src":"4308:7:10","typeDescriptions":{}}},"id":2719,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"4308:13:10","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":2720,"name":"amount","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2675,"src":"4323:6:10","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"expression":{"arguments":[{"id":2711,"name":"zrc20","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2677,"src":"4276:5:10","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"}],"id":2710,"name":"IZRC20","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4825,"src":"4269:6:10","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_IZRC20_$4825_$","typeString":"type(contract IZRC20)"}},"id":2712,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"4269:13:10","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_contract$_IZRC20_$4825","typeString":"contract IZRC20"}},"id":2713,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"4283:12:10","memberName":"transferFrom","nodeType":"MemberAccess","referencedDeclaration":4761,"src":"4269:26:10","typeDescriptions":{"typeIdentifier":"t_function_external_nonpayable$_t_address_$_t_address_$_t_uint256_$returns$_t_bool_$","typeString":"function (address,address,uint256) external returns (bool)"}},"id":2721,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"4269:61:10","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":2727,"nodeType":"IfStatement","src":"4264:121:10","trueBody":{"id":2726,"nodeType":"Block","src":"4332:53:10","statements":[{"errorCall":{"arguments":[],"expression":{"argumentTypes":[],"id":2723,"name":"ZRC20TransferFailed","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4402,"src":"4353:19:10","typeDescriptions":{"typeIdentifier":"t_function_error_pure$__$returns$_t_error_$","typeString":"function () pure returns (error)"}},"id":2724,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"4353:21:10","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_error","typeString":"error"}},"id":2725,"nodeType":"RevertStatement","src":"4346:28:10"}]}},{"condition":{"id":2734,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"UnaryOperation","operator":"!","prefix":true,"src":"4399:27:10","subExpression":{"arguments":[{"id":2732,"name":"amount","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2675,"src":"4419:6:10","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"}],"expression":{"arguments":[{"id":2729,"name":"zrc20","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2677,"src":"4407:5:10","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"}],"id":2728,"name":"IZRC20","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4825,"src":"4400:6:10","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_IZRC20_$4825_$","typeString":"type(contract IZRC20)"}},"id":2730,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"4400:13:10","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_contract$_IZRC20_$4825","typeString":"contract IZRC20"}},"id":2731,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"4414:4:10","memberName":"burn","nodeType":"MemberAccess","referencedDeclaration":4777,"src":"4400:18:10","typeDescriptions":{"typeIdentifier":"t_function_external_nonpayable$_t_uint256_$returns$_t_bool_$","typeString":"function (uint256) external returns (bool)"}},"id":2733,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"4400:26:10","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":2738,"nodeType":"IfStatement","src":"4395:57:10","trueBody":{"errorCall":{"arguments":[],"expression":{"argumentTypes":[],"id":2735,"name":"ZRC20BurnFailed","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4399,"src":"4435:15:10","typeDescriptions":{"typeIdentifier":"t_function_error_pure$__$returns$_t_error_$","typeString":"function () pure returns (error)"}},"id":2736,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"4435:17:10","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_error","typeString":"error"}},"id":2737,"nodeType":"RevertStatement","src":"4428:24:10"}},{"expression":{"id":2739,"name":"gasFee","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2687,"src":"4470:6:10","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"functionReturnParameters":2683,"id":2740,"nodeType":"Return","src":"4463:13:10"}]},"documentation":{"id":2673,"nodeType":"StructuredDocumentation","src":"3636:259:10","text":"@dev Internal function to withdraw ZRC20 tokens with gas limit.\n @param amount The amount of tokens to withdraw.\n @param zrc20 The address of the ZRC20 token.\n @param gasLimit Gas limit.\n @return The gas fee for the withdrawal."},"implemented":true,"kind":"function","modifiers":[],"name":"_withdrawZRC20WithGasLimit","nameLocation":"3909:26:10","parameters":{"id":2680,"nodeType":"ParameterList","parameters":[{"constant":false,"id":2675,"mutability":"mutable","name":"amount","nameLocation":"3944:6:10","nodeType":"VariableDeclaration","scope":2742,"src":"3936:14:10","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":2674,"name":"uint256","nodeType":"ElementaryTypeName","src":"3936:7:10","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":2677,"mutability":"mutable","name":"zrc20","nameLocation":"3960:5:10","nodeType":"VariableDeclaration","scope":2742,"src":"3952:13:10","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":2676,"name":"address","nodeType":"ElementaryTypeName","src":"3952:7:10","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":2679,"mutability":"mutable","name":"gasLimit","nameLocation":"3975:8:10","nodeType":"VariableDeclaration","scope":2742,"src":"3967:16:10","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":2678,"name":"uint256","nodeType":"ElementaryTypeName","src":"3967:7:10","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"3935:49:10"},"returnParameters":{"id":2683,"nodeType":"ParameterList","parameters":[{"constant":false,"id":2682,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":2742,"src":"4003:7:10","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":2681,"name":"uint256","nodeType":"ElementaryTypeName","src":"4003:7:10","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"4002:9:10"},"scope":3462,"stateMutability":"nonpayable","virtual":false,"visibility":"internal"},{"id":2790,"nodeType":"FunctionDefinition","src":"4658:313:10","nodes":[],"body":{"id":2789,"nodeType":"Block","src":"4718:253:10","nodes":[],"statements":[{"condition":{"id":2762,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"UnaryOperation","operator":"!","prefix":true,"src":"4732:66:10","subExpression":{"arguments":[{"expression":{"id":2754,"name":"msg","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-15,"src":"4764:3:10","typeDescriptions":{"typeIdentifier":"t_magic_message","typeString":"msg"}},"id":2755,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"4768:6:10","memberName":"sender","nodeType":"MemberAccess","src":"4764:10:10","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"arguments":[{"id":2758,"name":"this","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-28,"src":"4784:4:10","typeDescriptions":{"typeIdentifier":"t_contract$_GatewayZEVM_$3462","typeString":"contract GatewayZEVM"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_contract$_GatewayZEVM_$3462","typeString":"contract GatewayZEVM"}],"id":2757,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"4776:7:10","typeDescriptions":{"typeIdentifier":"t_type$_t_address_$","typeString":"type(address)"},"typeName":{"id":2756,"name":"address","nodeType":"ElementaryTypeName","src":"4776:7:10","typeDescriptions":{}}},"id":2759,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"4776:13:10","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":2760,"name":"amount","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2745,"src":"4791:6:10","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"expression":{"arguments":[{"id":2751,"name":"zetaToken","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2515,"src":"4740:9:10","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"}],"id":2750,"name":"IWETH9","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4708,"src":"4733:6:10","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_IWETH9_$4708_$","typeString":"type(contract IWETH9)"}},"id":2752,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"4733:17:10","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_contract$_IWETH9_$4708","typeString":"contract IWETH9"}},"id":2753,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"4751:12:10","memberName":"transferFrom","nodeType":"MemberAccess","referencedDeclaration":4699,"src":"4733:30:10","typeDescriptions":{"typeIdentifier":"t_function_external_nonpayable$_t_address_$_t_address_$_t_uint256_$returns$_t_bool_$","typeString":"function (address,address,uint256) external returns (bool)"}},"id":2761,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"4733:65:10","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":2766,"nodeType":"IfStatement","src":"4728:95:10","trueBody":{"errorCall":{"arguments":[],"expression":{"argumentTypes":[],"id":2763,"name":"FailedZetaSent","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4417,"src":"4807:14:10","typeDescriptions":{"typeIdentifier":"t_function_error_pure$__$returns$_t_error_$","typeString":"function () pure returns (error)"}},"id":2764,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"4807:16:10","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_error","typeString":"error"}},"id":2765,"nodeType":"RevertStatement","src":"4800:23:10"}},{"expression":{"arguments":[{"id":2771,"name":"amount","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2745,"src":"4860:6:10","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"}],"expression":{"arguments":[{"id":2768,"name":"zetaToken","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2515,"src":"4840:9:10","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"}],"id":2767,"name":"IWETH9","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4708,"src":"4833:6:10","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_IWETH9_$4708_$","typeString":"type(contract IWETH9)"}},"id":2769,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"4833:17:10","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_contract$_IWETH9_$4708","typeString":"contract IWETH9"}},"id":2770,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"4851:8:10","memberName":"withdraw","nodeType":"MemberAccess","referencedDeclaration":4707,"src":"4833:26:10","typeDescriptions":{"typeIdentifier":"t_function_external_nonpayable$_t_uint256_$returns$__$","typeString":"function (uint256) external"}},"id":2772,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"4833:34:10","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":2773,"nodeType":"ExpressionStatement","src":"4833:34:10"},{"assignments":[2775,null],"declarations":[{"constant":false,"id":2775,"mutability":"mutable","name":"sent","nameLocation":"4883:4:10","nodeType":"VariableDeclaration","scope":2789,"src":"4878:9:10","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"typeName":{"id":2774,"name":"bool","nodeType":"ElementaryTypeName","src":"4878:4:10","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"visibility":"internal"},null],"id":2782,"initialValue":{"arguments":[{"hexValue":"","id":2780,"isConstant":false,"isLValue":false,"isPure":true,"kind":"string","lValueRequested":false,"nodeType":"Literal","src":"4917:2:10","typeDescriptions":{"typeIdentifier":"t_stringliteral_c5d2460186f7233c927e7db2dcc703c0e500b653ca82273b7bfad8045d85a470","typeString":"literal_string \"\""},"value":""}],"expression":{"argumentTypes":[{"typeIdentifier":"t_stringliteral_c5d2460186f7233c927e7db2dcc703c0e500b653ca82273b7bfad8045d85a470","typeString":"literal_string \"\""}],"expression":{"argumentTypes":[{"typeIdentifier":"t_stringliteral_c5d2460186f7233c927e7db2dcc703c0e500b653ca82273b7bfad8045d85a470","typeString":"literal_string \"\""}],"expression":{"id":2776,"name":"to","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2747,"src":"4892:2:10","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"id":2777,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"4895:4:10","memberName":"call","nodeType":"MemberAccess","src":"4892:7:10","typeDescriptions":{"typeIdentifier":"t_function_barecall_payable$_t_bytes_memory_ptr_$returns$_t_bool_$_t_bytes_memory_ptr_$","typeString":"function (bytes memory) payable returns (bool,bytes memory)"}},"id":2779,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"names":["value"],"nodeType":"FunctionCallOptions","options":[{"id":2778,"name":"amount","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2745,"src":"4908:6:10","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"src":"4892:24:10","typeDescriptions":{"typeIdentifier":"t_function_barecall_payable$_t_bytes_memory_ptr_$returns$_t_bool_$_t_bytes_memory_ptr_$value","typeString":"function (bytes memory) payable returns (bool,bytes memory)"}},"id":2781,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"4892:28:10","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$_t_bool_$_t_bytes_memory_ptr_$","typeString":"tuple(bool,bytes memory)"}},"nodeType":"VariableDeclarationStatement","src":"4877:43:10"},{"condition":{"id":2784,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"UnaryOperation","operator":"!","prefix":true,"src":"4934:5:10","subExpression":{"id":2783,"name":"sent","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2775,"src":"4935:4:10","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":2788,"nodeType":"IfStatement","src":"4930:34:10","trueBody":{"errorCall":{"arguments":[],"expression":{"argumentTypes":[],"id":2785,"name":"FailedZetaSent","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4417,"src":"4948:14:10","typeDescriptions":{"typeIdentifier":"t_function_error_pure$__$returns$_t_error_$","typeString":"function () pure returns (error)"}},"id":2786,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"4948:16:10","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_error","typeString":"error"}},"id":2787,"nodeType":"RevertStatement","src":"4941:23:10"}}]},"documentation":{"id":2743,"nodeType":"StructuredDocumentation","src":"4489:164:10","text":"@dev Internal function to transfer ZETA tokens.\n @param amount The amount of tokens to transfer.\n @param to The address to transfer the tokens to."},"implemented":true,"kind":"function","modifiers":[],"name":"_transferZETA","nameLocation":"4667:13:10","parameters":{"id":2748,"nodeType":"ParameterList","parameters":[{"constant":false,"id":2745,"mutability":"mutable","name":"amount","nameLocation":"4689:6:10","nodeType":"VariableDeclaration","scope":2790,"src":"4681:14:10","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":2744,"name":"uint256","nodeType":"ElementaryTypeName","src":"4681:7:10","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":2747,"mutability":"mutable","name":"to","nameLocation":"4705:2:10","nodeType":"VariableDeclaration","scope":2790,"src":"4697:10:10","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":2746,"name":"address","nodeType":"ElementaryTypeName","src":"4697:7:10","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"4680:28:10"},"returnParameters":{"id":2749,"nodeType":"ParameterList","parameters":[],"src":"4718:0:10"},"scope":3462,"stateMutability":"nonpayable","virtual":false,"visibility":"internal"},{"id":2852,"nodeType":"FunctionDefinition","src":"5259:674:10","nodes":[],"body":{"id":2851,"nodeType":"Block","src":"5471:462:10","nodes":[],"statements":[{"condition":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":2810,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"expression":{"id":2807,"name":"receiver","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2793,"src":"5485:8:10","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}},"id":2808,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"5494:6:10","memberName":"length","nodeType":"MemberAccess","src":"5485:15:10","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"==","rightExpression":{"hexValue":"30","id":2809,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"5504:1:10","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},"src":"5485:20:10","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":2814,"nodeType":"IfStatement","src":"5481:46:10","trueBody":{"errorCall":{"arguments":[],"expression":{"argumentTypes":[],"id":2811,"name":"ZeroAddress","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2508,"src":"5514:11:10","typeDescriptions":{"typeIdentifier":"t_function_error_pure$__$returns$_t_error_$","typeString":"function () pure returns (error)"}},"id":2812,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"5514:13:10","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_error","typeString":"error"}},"id":2813,"nodeType":"RevertStatement","src":"5507:20:10"}},{"condition":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":2817,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":2815,"name":"amount","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2795,"src":"5541:6:10","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"==","rightExpression":{"hexValue":"30","id":2816,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"5551:1:10","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},"src":"5541:11:10","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":2821,"nodeType":"IfStatement","src":"5537:49:10","trueBody":{"errorCall":{"arguments":[],"expression":{"argumentTypes":[],"id":2818,"name":"InsufficientZRC20Amount","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4393,"src":"5561:23:10","typeDescriptions":{"typeIdentifier":"t_function_error_pure$__$returns$_t_error_$","typeString":"function () pure returns (error)"}},"id":2819,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"5561:25:10","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_error","typeString":"error"}},"id":2820,"nodeType":"RevertStatement","src":"5554:32:10"}},{"assignments":[2823],"declarations":[{"constant":false,"id":2823,"mutability":"mutable","name":"gasFee","nameLocation":"5605:6:10","nodeType":"VariableDeclaration","scope":2851,"src":"5597:14:10","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":2822,"name":"uint256","nodeType":"ElementaryTypeName","src":"5597:7:10","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"id":2828,"initialValue":{"arguments":[{"id":2825,"name":"amount","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2795,"src":"5629:6:10","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},{"id":2826,"name":"zrc20","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2797,"src":"5637:5:10","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"},{"typeIdentifier":"t_address","typeString":"address"}],"id":2824,"name":"_withdrawZRC20","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2672,"src":"5614:14:10","typeDescriptions":{"typeIdentifier":"t_function_internal_nonpayable$_t_uint256_$_t_address_$returns$_t_uint256_$","typeString":"function (uint256,address) returns (uint256)"}},"id":2827,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"5614:29:10","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"VariableDeclarationStatement","src":"5597:46:10"},{"eventCall":{"arguments":[{"expression":{"id":2830,"name":"msg","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-15,"src":"5681:3:10","typeDescriptions":{"typeIdentifier":"t_magic_message","typeString":"msg"}},"id":2831,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"5685:6:10","memberName":"sender","nodeType":"MemberAccess","src":"5681:10:10","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"hexValue":"30","id":2832,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"5705:1:10","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},{"id":2833,"name":"receiver","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2793,"src":"5720:8:10","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}},{"id":2834,"name":"zrc20","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2797,"src":"5742:5:10","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":2835,"name":"amount","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2795,"src":"5761:6:10","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},{"id":2836,"name":"gasFee","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2823,"src":"5781:6:10","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},{"arguments":[],"expression":{"argumentTypes":[],"expression":{"arguments":[{"id":2838,"name":"zrc20","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2797,"src":"5808:5:10","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"}],"id":2837,"name":"IZRC20","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4825,"src":"5801:6:10","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_IZRC20_$4825_$","typeString":"type(contract IZRC20)"}},"id":2839,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"5801:13:10","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_contract$_IZRC20_$4825","typeString":"contract IZRC20"}},"id":2840,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"5815:17:10","memberName":"PROTOCOL_FLAT_FEE","nodeType":"MemberAccess","referencedDeclaration":4808,"src":"5801:31:10","typeDescriptions":{"typeIdentifier":"t_function_external_view$__$returns$_t_uint256_$","typeString":"function () view external returns (uint256)"}},"id":2841,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"5801:33:10","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},{"hexValue":"","id":2842,"isConstant":false,"isLValue":false,"isPure":true,"kind":"string","lValueRequested":false,"nodeType":"Literal","src":"5848:2:10","typeDescriptions":{"typeIdentifier":"t_stringliteral_c5d2460186f7233c927e7db2dcc703c0e500b653ca82273b7bfad8045d85a470","typeString":"literal_string \"\""},"value":""},{"arguments":[],"expression":{"argumentTypes":[],"expression":{"arguments":[{"id":2844,"name":"zrc20","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2797,"src":"5871:5:10","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"}],"id":2843,"name":"IZRC20","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4825,"src":"5864:6:10","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_IZRC20_$4825_$","typeString":"type(contract IZRC20)"}},"id":2845,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"5864:13:10","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_contract$_IZRC20_$4825","typeString":"contract IZRC20"}},"id":2846,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"5878:9:10","memberName":"GAS_LIMIT","nodeType":"MemberAccess","referencedDeclaration":4814,"src":"5864:23:10","typeDescriptions":{"typeIdentifier":"t_function_external_view$__$returns$_t_uint256_$","typeString":"function () view external returns (uint256)"}},"id":2847,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"5864:25:10","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},{"id":2848,"name":"revertOptions","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2800,"src":"5903:13:10","typeDescriptions":{"typeIdentifier":"t_struct$_RevertOptions_$13_calldata_ptr","typeString":"struct RevertOptions calldata"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"},{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_uint256","typeString":"uint256"},{"typeIdentifier":"t_uint256","typeString":"uint256"},{"typeIdentifier":"t_uint256","typeString":"uint256"},{"typeIdentifier":"t_stringliteral_c5d2460186f7233c927e7db2dcc703c0e500b653ca82273b7bfad8045d85a470","typeString":"literal_string \"\""},{"typeIdentifier":"t_uint256","typeString":"uint256"},{"typeIdentifier":"t_struct$_RevertOptions_$13_calldata_ptr","typeString":"struct RevertOptions calldata"}],"id":2829,"name":"Withdrawn","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4385,"src":"5658:9:10","typeDescriptions":{"typeIdentifier":"t_function_event_nonpayable$_t_address_$_t_uint256_$_t_bytes_memory_ptr_$_t_address_$_t_uint256_$_t_uint256_$_t_uint256_$_t_bytes_memory_ptr_$_t_uint256_$_t_struct$_RevertOptions_$13_memory_ptr_$returns$__$","typeString":"function (address,uint256,bytes memory,address,uint256,uint256,uint256,bytes memory,uint256,struct RevertOptions memory)"}},"id":2849,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"5658:268:10","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":2850,"nodeType":"EmitStatement","src":"5653:273:10"}]},"baseFunctions":[4442],"documentation":{"id":2791,"nodeType":"StructuredDocumentation","src":"4977:277:10","text":"@notice Withdraw ZRC20 tokens to an external chain.\n @param receiver The receiver address on the external chain.\n @param amount The amount of tokens to withdraw.\n @param zrc20 The address of the ZRC20 token.\n @param revertOptions Revert options."},"functionSelector":"7c0dcb5f","implemented":true,"kind":"function","modifiers":[{"id":2803,"kind":"modifierInvocation","modifierName":{"id":2802,"name":"nonReentrant","nameLocations":["5432:12:10"],"nodeType":"IdentifierPath","referencedDeclaration":44962,"src":"5432:12:10"},"nodeType":"ModifierInvocation","src":"5432:12:10"},{"id":2805,"kind":"modifierInvocation","modifierName":{"id":2804,"name":"whenNotPaused","nameLocations":["5453:13:10"],"nodeType":"IdentifierPath","referencedDeclaration":44795,"src":"5453:13:10"},"nodeType":"ModifierInvocation","src":"5453:13:10"}],"name":"withdraw","nameLocation":"5268:8:10","parameters":{"id":2801,"nodeType":"ParameterList","parameters":[{"constant":false,"id":2793,"mutability":"mutable","name":"receiver","nameLocation":"5299:8:10","nodeType":"VariableDeclaration","scope":2852,"src":"5286:21:10","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes"},"typeName":{"id":2792,"name":"bytes","nodeType":"ElementaryTypeName","src":"5286:5:10","typeDescriptions":{"typeIdentifier":"t_bytes_storage_ptr","typeString":"bytes"}},"visibility":"internal"},{"constant":false,"id":2795,"mutability":"mutable","name":"amount","nameLocation":"5325:6:10","nodeType":"VariableDeclaration","scope":2852,"src":"5317:14:10","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":2794,"name":"uint256","nodeType":"ElementaryTypeName","src":"5317:7:10","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":2797,"mutability":"mutable","name":"zrc20","nameLocation":"5349:5:10","nodeType":"VariableDeclaration","scope":2852,"src":"5341:13:10","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":2796,"name":"address","nodeType":"ElementaryTypeName","src":"5341:7:10","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":2800,"mutability":"mutable","name":"revertOptions","nameLocation":"5387:13:10","nodeType":"VariableDeclaration","scope":2852,"src":"5364:36:10","stateVariable":false,"storageLocation":"calldata","typeDescriptions":{"typeIdentifier":"t_struct$_RevertOptions_$13_calldata_ptr","typeString":"struct RevertOptions"},"typeName":{"id":2799,"nodeType":"UserDefinedTypeName","pathNode":{"id":2798,"name":"RevertOptions","nameLocations":["5364:13:10"],"nodeType":"IdentifierPath","referencedDeclaration":13,"src":"5364:13:10"},"referencedDeclaration":13,"src":"5364:13:10","typeDescriptions":{"typeIdentifier":"t_struct$_RevertOptions_$13_storage_ptr","typeString":"struct RevertOptions"}},"visibility":"internal"}],"src":"5276:130:10"},"returnParameters":{"id":2806,"nodeType":"ParameterList","parameters":[],"src":"5471:0:10"},"scope":3462,"stateMutability":"nonpayable","virtual":false,"visibility":"external"},{"id":2915,"nodeType":"FunctionDefinition","src":"6348:749:10","nodes":[],"body":{"id":2914,"nodeType":"Block","src":"6625:472:10","nodes":[],"statements":[{"condition":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":2876,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"expression":{"id":2873,"name":"receiver","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2855,"src":"6639:8:10","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}},"id":2874,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"6648:6:10","memberName":"length","nodeType":"MemberAccess","src":"6639:15:10","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"==","rightExpression":{"hexValue":"30","id":2875,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"6658:1:10","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},"src":"6639:20:10","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":2880,"nodeType":"IfStatement","src":"6635:46:10","trueBody":{"errorCall":{"arguments":[],"expression":{"argumentTypes":[],"id":2877,"name":"ZeroAddress","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2508,"src":"6668:11:10","typeDescriptions":{"typeIdentifier":"t_function_error_pure$__$returns$_t_error_$","typeString":"function () pure returns (error)"}},"id":2878,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"6668:13:10","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_error","typeString":"error"}},"id":2879,"nodeType":"RevertStatement","src":"6661:20:10"}},{"condition":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":2883,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":2881,"name":"amount","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2857,"src":"6695:6:10","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"==","rightExpression":{"hexValue":"30","id":2882,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"6705:1:10","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},"src":"6695:11:10","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":2887,"nodeType":"IfStatement","src":"6691:49:10","trueBody":{"errorCall":{"arguments":[],"expression":{"argumentTypes":[],"id":2884,"name":"InsufficientZRC20Amount","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4393,"src":"6715:23:10","typeDescriptions":{"typeIdentifier":"t_function_error_pure$__$returns$_t_error_$","typeString":"function () pure returns (error)"}},"id":2885,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"6715:25:10","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_error","typeString":"error"}},"id":2886,"nodeType":"RevertStatement","src":"6708:32:10"}},{"assignments":[2889],"declarations":[{"constant":false,"id":2889,"mutability":"mutable","name":"gasFee","nameLocation":"6759:6:10","nodeType":"VariableDeclaration","scope":2914,"src":"6751:14:10","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":2888,"name":"uint256","nodeType":"ElementaryTypeName","src":"6751:7:10","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"id":2895,"initialValue":{"arguments":[{"id":2891,"name":"amount","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2857,"src":"6795:6:10","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},{"id":2892,"name":"zrc20","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2859,"src":"6803:5:10","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":2893,"name":"gasLimit","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2863,"src":"6810:8:10","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"},{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":2890,"name":"_withdrawZRC20WithGasLimit","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2742,"src":"6768:26:10","typeDescriptions":{"typeIdentifier":"t_function_internal_nonpayable$_t_uint256_$_t_address_$_t_uint256_$returns$_t_uint256_$","typeString":"function (uint256,address,uint256) returns (uint256)"}},"id":2894,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"6768:51:10","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"VariableDeclarationStatement","src":"6751:68:10"},{"eventCall":{"arguments":[{"expression":{"id":2897,"name":"msg","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-15,"src":"6857:3:10","typeDescriptions":{"typeIdentifier":"t_magic_message","typeString":"msg"}},"id":2898,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"6861:6:10","memberName":"sender","nodeType":"MemberAccess","src":"6857:10:10","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"hexValue":"30","id":2899,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"6881:1:10","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},{"id":2900,"name":"receiver","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2855,"src":"6896:8:10","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}},{"id":2901,"name":"zrc20","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2859,"src":"6918:5:10","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":2902,"name":"amount","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2857,"src":"6937:6:10","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},{"id":2903,"name":"gasFee","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2889,"src":"6957:6:10","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},{"arguments":[],"expression":{"argumentTypes":[],"expression":{"arguments":[{"id":2905,"name":"zrc20","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2859,"src":"6984:5:10","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"}],"id":2904,"name":"IZRC20","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4825,"src":"6977:6:10","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_IZRC20_$4825_$","typeString":"type(contract IZRC20)"}},"id":2906,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"6977:13:10","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_contract$_IZRC20_$4825","typeString":"contract IZRC20"}},"id":2907,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"6991:17:10","memberName":"PROTOCOL_FLAT_FEE","nodeType":"MemberAccess","referencedDeclaration":4808,"src":"6977:31:10","typeDescriptions":{"typeIdentifier":"t_function_external_view$__$returns$_t_uint256_$","typeString":"function () view external returns (uint256)"}},"id":2908,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"6977:33:10","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},{"id":2909,"name":"message","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2861,"src":"7024:7:10","typeDescriptions":{"typeIdentifier":"t_bytes_calldata_ptr","typeString":"bytes calldata"}},{"id":2910,"name":"gasLimit","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2863,"src":"7045:8:10","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},{"id":2911,"name":"revertOptions","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2866,"src":"7067:13:10","typeDescriptions":{"typeIdentifier":"t_struct$_RevertOptions_$13_calldata_ptr","typeString":"struct RevertOptions calldata"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"},{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_uint256","typeString":"uint256"},{"typeIdentifier":"t_uint256","typeString":"uint256"},{"typeIdentifier":"t_uint256","typeString":"uint256"},{"typeIdentifier":"t_bytes_calldata_ptr","typeString":"bytes calldata"},{"typeIdentifier":"t_uint256","typeString":"uint256"},{"typeIdentifier":"t_struct$_RevertOptions_$13_calldata_ptr","typeString":"struct RevertOptions calldata"}],"id":2896,"name":"Withdrawn","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4385,"src":"6834:9:10","typeDescriptions":{"typeIdentifier":"t_function_event_nonpayable$_t_address_$_t_uint256_$_t_bytes_memory_ptr_$_t_address_$_t_uint256_$_t_uint256_$_t_uint256_$_t_bytes_memory_ptr_$_t_uint256_$_t_struct$_RevertOptions_$13_memory_ptr_$returns$__$","typeString":"function (address,uint256,bytes memory,address,uint256,uint256,uint256,bytes memory,uint256,struct RevertOptions memory)"}},"id":2912,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"6834:256:10","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":2913,"nodeType":"EmitStatement","src":"6829:261:10"}]},"baseFunctions":[4472],"documentation":{"id":2853,"nodeType":"StructuredDocumentation","src":"5939:404:10","text":"@notice Withdraw ZRC20 tokens and call a smart contract on an external chain.\n @param receiver The receiver address on the external chain.\n @param amount The amount of tokens to withdraw.\n @param zrc20 The address of the ZRC20 token.\n @param message The calldata to pass to the contract call.\n @param gasLimit Gas limit.\n @param revertOptions Revert options."},"functionSelector":"048ae42c","implemented":true,"kind":"function","modifiers":[{"id":2869,"kind":"modifierInvocation","modifierName":{"id":2868,"name":"nonReentrant","nameLocations":["6586:12:10"],"nodeType":"IdentifierPath","referencedDeclaration":44962,"src":"6586:12:10"},"nodeType":"ModifierInvocation","src":"6586:12:10"},{"id":2871,"kind":"modifierInvocation","modifierName":{"id":2870,"name":"whenNotPaused","nameLocations":["6607:13:10"],"nodeType":"IdentifierPath","referencedDeclaration":44795,"src":"6607:13:10"},"nodeType":"ModifierInvocation","src":"6607:13:10"}],"name":"withdrawAndCall","nameLocation":"6357:15:10","parameters":{"id":2867,"nodeType":"ParameterList","parameters":[{"constant":false,"id":2855,"mutability":"mutable","name":"receiver","nameLocation":"6395:8:10","nodeType":"VariableDeclaration","scope":2915,"src":"6382:21:10","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes"},"typeName":{"id":2854,"name":"bytes","nodeType":"ElementaryTypeName","src":"6382:5:10","typeDescriptions":{"typeIdentifier":"t_bytes_storage_ptr","typeString":"bytes"}},"visibility":"internal"},{"constant":false,"id":2857,"mutability":"mutable","name":"amount","nameLocation":"6421:6:10","nodeType":"VariableDeclaration","scope":2915,"src":"6413:14:10","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":2856,"name":"uint256","nodeType":"ElementaryTypeName","src":"6413:7:10","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":2859,"mutability":"mutable","name":"zrc20","nameLocation":"6445:5:10","nodeType":"VariableDeclaration","scope":2915,"src":"6437:13:10","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":2858,"name":"address","nodeType":"ElementaryTypeName","src":"6437:7:10","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":2861,"mutability":"mutable","name":"message","nameLocation":"6475:7:10","nodeType":"VariableDeclaration","scope":2915,"src":"6460:22:10","stateVariable":false,"storageLocation":"calldata","typeDescriptions":{"typeIdentifier":"t_bytes_calldata_ptr","typeString":"bytes"},"typeName":{"id":2860,"name":"bytes","nodeType":"ElementaryTypeName","src":"6460:5:10","typeDescriptions":{"typeIdentifier":"t_bytes_storage_ptr","typeString":"bytes"}},"visibility":"internal"},{"constant":false,"id":2863,"mutability":"mutable","name":"gasLimit","nameLocation":"6500:8:10","nodeType":"VariableDeclaration","scope":2915,"src":"6492:16:10","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":2862,"name":"uint256","nodeType":"ElementaryTypeName","src":"6492:7:10","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":2866,"mutability":"mutable","name":"revertOptions","nameLocation":"6541:13:10","nodeType":"VariableDeclaration","scope":2915,"src":"6518:36:10","stateVariable":false,"storageLocation":"calldata","typeDescriptions":{"typeIdentifier":"t_struct$_RevertOptions_$13_calldata_ptr","typeString":"struct RevertOptions"},"typeName":{"id":2865,"nodeType":"UserDefinedTypeName","pathNode":{"id":2864,"name":"RevertOptions","nameLocations":["6518:13:10"],"nodeType":"IdentifierPath","referencedDeclaration":13,"src":"6518:13:10"},"referencedDeclaration":13,"src":"6518:13:10","typeDescriptions":{"typeIdentifier":"t_struct$_RevertOptions_$13_storage_ptr","typeString":"struct RevertOptions"}},"visibility":"internal"}],"src":"6372:188:10"},"returnParameters":{"id":2872,"nodeType":"ParameterList","parameters":[],"src":"6625:0:10"},"scope":3462,"stateMutability":"nonpayable","virtual":false,"visibility":"external"},{"id":2970,"nodeType":"FunctionDefinition","src":"7331:503:10","nodes":[],"body":{"id":2969,"nodeType":"Block","src":"7545:289:10","nodes":[],"statements":[{"condition":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":2935,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"expression":{"id":2932,"name":"receiver","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2918,"src":"7559:8:10","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}},"id":2933,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"7568:6:10","memberName":"length","nodeType":"MemberAccess","src":"7559:15:10","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"==","rightExpression":{"hexValue":"30","id":2934,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"7578:1:10","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},"src":"7559:20:10","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":2939,"nodeType":"IfStatement","src":"7555:46:10","trueBody":{"errorCall":{"arguments":[],"expression":{"argumentTypes":[],"id":2936,"name":"ZeroAddress","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2508,"src":"7588:11:10","typeDescriptions":{"typeIdentifier":"t_function_error_pure$__$returns$_t_error_$","typeString":"function () pure returns (error)"}},"id":2937,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"7588:13:10","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_error","typeString":"error"}},"id":2938,"nodeType":"RevertStatement","src":"7581:20:10"}},{"condition":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":2942,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":2940,"name":"amount","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2920,"src":"7615:6:10","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"==","rightExpression":{"hexValue":"30","id":2941,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"7625:1:10","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},"src":"7615:11:10","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":2946,"nodeType":"IfStatement","src":"7611:48:10","trueBody":{"errorCall":{"arguments":[],"expression":{"argumentTypes":[],"id":2943,"name":"InsufficientZetaAmount","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4396,"src":"7635:22:10","typeDescriptions":{"typeIdentifier":"t_function_error_pure$__$returns$_t_error_$","typeString":"function () pure returns (error)"}},"id":2944,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"7635:24:10","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_error","typeString":"error"}},"id":2945,"nodeType":"RevertStatement","src":"7628:31:10"}},{"expression":{"arguments":[{"id":2948,"name":"amount","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2920,"src":"7684:6:10","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},{"id":2949,"name":"FUNGIBLE_MODULE_ADDRESS","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2512,"src":"7692:23:10","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"},{"typeIdentifier":"t_address","typeString":"address"}],"id":2947,"name":"_transferZETA","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2790,"src":"7670:13:10","typeDescriptions":{"typeIdentifier":"t_function_internal_nonpayable$_t_uint256_$_t_address_$returns$__$","typeString":"function (uint256,address)"}},"id":2950,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"7670:46:10","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":2951,"nodeType":"ExpressionStatement","src":"7670:46:10"},{"eventCall":{"arguments":[{"expression":{"id":2953,"name":"msg","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-15,"src":"7741:3:10","typeDescriptions":{"typeIdentifier":"t_magic_message","typeString":"msg"}},"id":2954,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"7745:6:10","memberName":"sender","nodeType":"MemberAccess","src":"7741:10:10","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":2955,"name":"chainId","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2922,"src":"7753:7:10","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},{"id":2956,"name":"receiver","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2918,"src":"7762:8:10","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}},{"arguments":[{"id":2959,"name":"zetaToken","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2515,"src":"7780:9:10","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"}],"id":2958,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"7772:7:10","typeDescriptions":{"typeIdentifier":"t_type$_t_address_$","typeString":"type(address)"},"typeName":{"id":2957,"name":"address","nodeType":"ElementaryTypeName","src":"7772:7:10","typeDescriptions":{}}},"id":2960,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"7772:18:10","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":2961,"name":"amount","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2920,"src":"7792:6:10","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},{"hexValue":"30","id":2962,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"7800:1:10","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},{"hexValue":"30","id":2963,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"7803:1:10","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},{"hexValue":"","id":2964,"isConstant":false,"isLValue":false,"isPure":true,"kind":"string","lValueRequested":false,"nodeType":"Literal","src":"7806:2:10","typeDescriptions":{"typeIdentifier":"t_stringliteral_c5d2460186f7233c927e7db2dcc703c0e500b653ca82273b7bfad8045d85a470","typeString":"literal_string \"\""},"value":""},{"hexValue":"30","id":2965,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"7810:1:10","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},{"id":2966,"name":"revertOptions","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2925,"src":"7813:13:10","typeDescriptions":{"typeIdentifier":"t_struct$_RevertOptions_$13_calldata_ptr","typeString":"struct RevertOptions calldata"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_uint256","typeString":"uint256"},{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"},{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_uint256","typeString":"uint256"},{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},{"typeIdentifier":"t_stringliteral_c5d2460186f7233c927e7db2dcc703c0e500b653ca82273b7bfad8045d85a470","typeString":"literal_string \"\""},{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},{"typeIdentifier":"t_struct$_RevertOptions_$13_calldata_ptr","typeString":"struct RevertOptions calldata"}],"id":2952,"name":"Withdrawn","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4385,"src":"7731:9:10","typeDescriptions":{"typeIdentifier":"t_function_event_nonpayable$_t_address_$_t_uint256_$_t_bytes_memory_ptr_$_t_address_$_t_uint256_$_t_uint256_$_t_uint256_$_t_bytes_memory_ptr_$_t_uint256_$_t_struct$_RevertOptions_$13_memory_ptr_$returns$__$","typeString":"function (address,uint256,bytes memory,address,uint256,uint256,uint256,bytes memory,uint256,struct RevertOptions memory)"}},"id":2967,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"7731:96:10","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":2968,"nodeType":"EmitStatement","src":"7726:101:10"}]},"baseFunctions":[4455],"documentation":{"id":2916,"nodeType":"StructuredDocumentation","src":"7103:223:10","text":"@notice Withdraw ZETA tokens to an external chain.\n @param receiver The receiver address on the external chain.\n @param amount The amount of tokens to withdraw.\n @param revertOptions Revert options."},"functionSelector":"97a1cef1","implemented":true,"kind":"function","modifiers":[{"id":2928,"kind":"modifierInvocation","modifierName":{"id":2927,"name":"nonReentrant","nameLocations":["7506:12:10"],"nodeType":"IdentifierPath","referencedDeclaration":44962,"src":"7506:12:10"},"nodeType":"ModifierInvocation","src":"7506:12:10"},{"id":2930,"kind":"modifierInvocation","modifierName":{"id":2929,"name":"whenNotPaused","nameLocations":["7527:13:10"],"nodeType":"IdentifierPath","referencedDeclaration":44795,"src":"7527:13:10"},"nodeType":"ModifierInvocation","src":"7527:13:10"}],"name":"withdraw","nameLocation":"7340:8:10","parameters":{"id":2926,"nodeType":"ParameterList","parameters":[{"constant":false,"id":2918,"mutability":"mutable","name":"receiver","nameLocation":"7371:8:10","nodeType":"VariableDeclaration","scope":2970,"src":"7358:21:10","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes"},"typeName":{"id":2917,"name":"bytes","nodeType":"ElementaryTypeName","src":"7358:5:10","typeDescriptions":{"typeIdentifier":"t_bytes_storage_ptr","typeString":"bytes"}},"visibility":"internal"},{"constant":false,"id":2920,"mutability":"mutable","name":"amount","nameLocation":"7397:6:10","nodeType":"VariableDeclaration","scope":2970,"src":"7389:14:10","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":2919,"name":"uint256","nodeType":"ElementaryTypeName","src":"7389:7:10","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":2922,"mutability":"mutable","name":"chainId","nameLocation":"7421:7:10","nodeType":"VariableDeclaration","scope":2970,"src":"7413:15:10","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":2921,"name":"uint256","nodeType":"ElementaryTypeName","src":"7413:7:10","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":2925,"mutability":"mutable","name":"revertOptions","nameLocation":"7461:13:10","nodeType":"VariableDeclaration","scope":2970,"src":"7438:36:10","stateVariable":false,"storageLocation":"calldata","typeDescriptions":{"typeIdentifier":"t_struct$_RevertOptions_$13_calldata_ptr","typeString":"struct RevertOptions"},"typeName":{"id":2924,"nodeType":"UserDefinedTypeName","pathNode":{"id":2923,"name":"RevertOptions","nameLocations":["7438:13:10"],"nodeType":"IdentifierPath","referencedDeclaration":13,"src":"7438:13:10"},"referencedDeclaration":13,"src":"7438:13:10","typeDescriptions":{"typeIdentifier":"t_struct$_RevertOptions_$13_storage_ptr","typeString":"struct RevertOptions"}},"visibility":"internal"}],"src":"7348:132:10"},"returnParameters":{"id":2931,"nodeType":"ParameterList","parameters":[],"src":"7545:0:10"},"scope":3462,"stateMutability":"nonpayable","virtual":false,"visibility":"external"},{"id":3027,"nodeType":"FunctionDefinition","src":"8215:547:10","nodes":[],"body":{"id":3026,"nodeType":"Block","src":"8468:294:10","nodes":[],"statements":[{"condition":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":2992,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"expression":{"id":2989,"name":"receiver","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2973,"src":"8482:8:10","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}},"id":2990,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"8491:6:10","memberName":"length","nodeType":"MemberAccess","src":"8482:15:10","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"==","rightExpression":{"hexValue":"30","id":2991,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"8501:1:10","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},"src":"8482:20:10","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":2996,"nodeType":"IfStatement","src":"8478:46:10","trueBody":{"errorCall":{"arguments":[],"expression":{"argumentTypes":[],"id":2993,"name":"ZeroAddress","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2508,"src":"8511:11:10","typeDescriptions":{"typeIdentifier":"t_function_error_pure$__$returns$_t_error_$","typeString":"function () pure returns (error)"}},"id":2994,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"8511:13:10","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_error","typeString":"error"}},"id":2995,"nodeType":"RevertStatement","src":"8504:20:10"}},{"condition":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":2999,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":2997,"name":"amount","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2975,"src":"8538:6:10","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"==","rightExpression":{"hexValue":"30","id":2998,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"8548:1:10","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},"src":"8538:11:10","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":3003,"nodeType":"IfStatement","src":"8534:48:10","trueBody":{"errorCall":{"arguments":[],"expression":{"argumentTypes":[],"id":3000,"name":"InsufficientZetaAmount","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4396,"src":"8558:22:10","typeDescriptions":{"typeIdentifier":"t_function_error_pure$__$returns$_t_error_$","typeString":"function () pure returns (error)"}},"id":3001,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"8558:24:10","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_error","typeString":"error"}},"id":3002,"nodeType":"RevertStatement","src":"8551:31:10"}},{"expression":{"arguments":[{"id":3005,"name":"amount","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2975,"src":"8607:6:10","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},{"id":3006,"name":"FUNGIBLE_MODULE_ADDRESS","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2512,"src":"8615:23:10","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"},{"typeIdentifier":"t_address","typeString":"address"}],"id":3004,"name":"_transferZETA","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2790,"src":"8593:13:10","typeDescriptions":{"typeIdentifier":"t_function_internal_nonpayable$_t_uint256_$_t_address_$returns$__$","typeString":"function (uint256,address)"}},"id":3007,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"8593:46:10","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":3008,"nodeType":"ExpressionStatement","src":"8593:46:10"},{"eventCall":{"arguments":[{"expression":{"id":3010,"name":"msg","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-15,"src":"8664:3:10","typeDescriptions":{"typeIdentifier":"t_magic_message","typeString":"msg"}},"id":3011,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"8668:6:10","memberName":"sender","nodeType":"MemberAccess","src":"8664:10:10","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":3012,"name":"chainId","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2977,"src":"8676:7:10","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},{"id":3013,"name":"receiver","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2973,"src":"8685:8:10","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}},{"arguments":[{"id":3016,"name":"zetaToken","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2515,"src":"8703:9:10","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"}],"id":3015,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"8695:7:10","typeDescriptions":{"typeIdentifier":"t_type$_t_address_$","typeString":"type(address)"},"typeName":{"id":3014,"name":"address","nodeType":"ElementaryTypeName","src":"8695:7:10","typeDescriptions":{}}},"id":3017,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"8695:18:10","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":3018,"name":"amount","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2975,"src":"8715:6:10","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},{"hexValue":"30","id":3019,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"8723:1:10","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},{"hexValue":"30","id":3020,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"8726:1:10","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},{"id":3021,"name":"message","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2979,"src":"8729:7:10","typeDescriptions":{"typeIdentifier":"t_bytes_calldata_ptr","typeString":"bytes calldata"}},{"hexValue":"30","id":3022,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"8738:1:10","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},{"id":3023,"name":"revertOptions","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2982,"src":"8741:13:10","typeDescriptions":{"typeIdentifier":"t_struct$_RevertOptions_$13_calldata_ptr","typeString":"struct RevertOptions calldata"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_uint256","typeString":"uint256"},{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"},{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_uint256","typeString":"uint256"},{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},{"typeIdentifier":"t_bytes_calldata_ptr","typeString":"bytes calldata"},{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},{"typeIdentifier":"t_struct$_RevertOptions_$13_calldata_ptr","typeString":"struct RevertOptions calldata"}],"id":3009,"name":"Withdrawn","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4385,"src":"8654:9:10","typeDescriptions":{"typeIdentifier":"t_function_event_nonpayable$_t_address_$_t_uint256_$_t_bytes_memory_ptr_$_t_address_$_t_uint256_$_t_uint256_$_t_uint256_$_t_bytes_memory_ptr_$_t_uint256_$_t_struct$_RevertOptions_$13_memory_ptr_$returns$__$","typeString":"function (address,uint256,bytes memory,address,uint256,uint256,uint256,bytes memory,uint256,struct RevertOptions memory)"}},"id":3024,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"8654:101:10","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":3025,"nodeType":"EmitStatement","src":"8649:106:10"}]},"baseFunctions":[4487],"documentation":{"id":2971,"nodeType":"StructuredDocumentation","src":"7840:370:10","text":"@notice Withdraw ZETA tokens and call a smart contract on an external chain.\n @param receiver The receiver address on the external chain.\n @param amount The amount of tokens to withdraw.\n @param chainId Chain id of the external chain.\n @param message The calldata to pass to the contract call.\n @param revertOptions Revert options."},"functionSelector":"3b283933","implemented":true,"kind":"function","modifiers":[{"id":2985,"kind":"modifierInvocation","modifierName":{"id":2984,"name":"nonReentrant","nameLocations":["8429:12:10"],"nodeType":"IdentifierPath","referencedDeclaration":44962,"src":"8429:12:10"},"nodeType":"ModifierInvocation","src":"8429:12:10"},{"id":2987,"kind":"modifierInvocation","modifierName":{"id":2986,"name":"whenNotPaused","nameLocations":["8450:13:10"],"nodeType":"IdentifierPath","referencedDeclaration":44795,"src":"8450:13:10"},"nodeType":"ModifierInvocation","src":"8450:13:10"}],"name":"withdrawAndCall","nameLocation":"8224:15:10","parameters":{"id":2983,"nodeType":"ParameterList","parameters":[{"constant":false,"id":2973,"mutability":"mutable","name":"receiver","nameLocation":"8262:8:10","nodeType":"VariableDeclaration","scope":3027,"src":"8249:21:10","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes"},"typeName":{"id":2972,"name":"bytes","nodeType":"ElementaryTypeName","src":"8249:5:10","typeDescriptions":{"typeIdentifier":"t_bytes_storage_ptr","typeString":"bytes"}},"visibility":"internal"},{"constant":false,"id":2975,"mutability":"mutable","name":"amount","nameLocation":"8288:6:10","nodeType":"VariableDeclaration","scope":3027,"src":"8280:14:10","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":2974,"name":"uint256","nodeType":"ElementaryTypeName","src":"8280:7:10","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":2977,"mutability":"mutable","name":"chainId","nameLocation":"8312:7:10","nodeType":"VariableDeclaration","scope":3027,"src":"8304:15:10","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":2976,"name":"uint256","nodeType":"ElementaryTypeName","src":"8304:7:10","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":2979,"mutability":"mutable","name":"message","nameLocation":"8344:7:10","nodeType":"VariableDeclaration","scope":3027,"src":"8329:22:10","stateVariable":false,"storageLocation":"calldata","typeDescriptions":{"typeIdentifier":"t_bytes_calldata_ptr","typeString":"bytes"},"typeName":{"id":2978,"name":"bytes","nodeType":"ElementaryTypeName","src":"8329:5:10","typeDescriptions":{"typeIdentifier":"t_bytes_storage_ptr","typeString":"bytes"}},"visibility":"internal"},{"constant":false,"id":2982,"mutability":"mutable","name":"revertOptions","nameLocation":"8384:13:10","nodeType":"VariableDeclaration","scope":3027,"src":"8361:36:10","stateVariable":false,"storageLocation":"calldata","typeDescriptions":{"typeIdentifier":"t_struct$_RevertOptions_$13_calldata_ptr","typeString":"struct RevertOptions"},"typeName":{"id":2981,"nodeType":"UserDefinedTypeName","pathNode":{"id":2980,"name":"RevertOptions","nameLocations":["8361:13:10"],"nodeType":"IdentifierPath","referencedDeclaration":13,"src":"8361:13:10"},"referencedDeclaration":13,"src":"8361:13:10","typeDescriptions":{"typeIdentifier":"t_struct$_RevertOptions_$13_storage_ptr","typeString":"struct RevertOptions"}},"visibility":"internal"}],"src":"8239:164:10"},"returnParameters":{"id":2988,"nodeType":"ParameterList","parameters":[],"src":"8468:0:10"},"scope":3462,"stateMutability":"nonpayable","virtual":false,"visibility":"external"},{"id":3099,"nodeType":"FunctionDefinition","src":"9116:688:10","nodes":[],"body":{"id":3098,"nodeType":"Block","src":"9358:446:10","nodes":[],"statements":[{"condition":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":3049,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"expression":{"id":3046,"name":"receiver","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3030,"src":"9372:8:10","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}},"id":3047,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"9381:6:10","memberName":"length","nodeType":"MemberAccess","src":"9372:15:10","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"==","rightExpression":{"hexValue":"30","id":3048,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"9391:1:10","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},"src":"9372:20:10","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":3053,"nodeType":"IfStatement","src":"9368:46:10","trueBody":{"errorCall":{"arguments":[],"expression":{"argumentTypes":[],"id":3050,"name":"ZeroAddress","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2508,"src":"9401:11:10","typeDescriptions":{"typeIdentifier":"t_function_error_pure$__$returns$_t_error_$","typeString":"function () pure returns (error)"}},"id":3051,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"9401:13:10","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_error","typeString":"error"}},"id":3052,"nodeType":"RevertStatement","src":"9394:20:10"}},{"condition":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":3057,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"expression":{"id":3054,"name":"message","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3034,"src":"9428:7:10","typeDescriptions":{"typeIdentifier":"t_bytes_calldata_ptr","typeString":"bytes calldata"}},"id":3055,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"9436:6:10","memberName":"length","nodeType":"MemberAccess","src":"9428:14:10","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"==","rightExpression":{"hexValue":"30","id":3056,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"9446:1:10","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},"src":"9428:19:10","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":3061,"nodeType":"IfStatement","src":"9424:46:10","trueBody":{"errorCall":{"arguments":[],"expression":{"argumentTypes":[],"id":3058,"name":"EmptyMessage","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4423,"src":"9456:12:10","typeDescriptions":{"typeIdentifier":"t_function_error_pure$__$returns$_t_error_$","typeString":"function () pure returns (error)"}},"id":3059,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"9456:14:10","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_error","typeString":"error"}},"id":3060,"nodeType":"RevertStatement","src":"9449:21:10"}},{"assignments":[3063,3065],"declarations":[{"constant":false,"id":3063,"mutability":"mutable","name":"gasZRC20","nameLocation":"9490:8:10","nodeType":"VariableDeclaration","scope":3098,"src":"9482:16:10","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":3062,"name":"address","nodeType":"ElementaryTypeName","src":"9482:7:10","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":3065,"mutability":"mutable","name":"gasFee","nameLocation":"9508:6:10","nodeType":"VariableDeclaration","scope":3098,"src":"9500:14:10","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":3064,"name":"uint256","nodeType":"ElementaryTypeName","src":"9500:7:10","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"id":3072,"initialValue":{"arguments":[{"id":3070,"name":"gasLimit","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3036,"src":"9559:8:10","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"}],"expression":{"arguments":[{"id":3067,"name":"zrc20","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3032,"src":"9525:5:10","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"}],"id":3066,"name":"IZRC20","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4825,"src":"9518:6:10","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_IZRC20_$4825_$","typeString":"type(contract IZRC20)"}},"id":3068,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"9518:13:10","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_contract$_IZRC20_$4825","typeString":"contract IZRC20"}},"id":3069,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"9532:26:10","memberName":"withdrawGasFeeWithGasLimit","nodeType":"MemberAccess","referencedDeclaration":4802,"src":"9518:40:10","typeDescriptions":{"typeIdentifier":"t_function_external_view$_t_uint256_$returns$_t_address_$_t_uint256_$","typeString":"function (uint256) view external returns (address,uint256)"}},"id":3071,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"9518:50:10","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$_t_address_$_t_uint256_$","typeString":"tuple(address,uint256)"}},"nodeType":"VariableDeclarationStatement","src":"9481:87:10"},{"condition":{"id":3082,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"UnaryOperation","operator":"!","prefix":true,"src":"9582:75:10","subExpression":{"arguments":[{"expression":{"id":3077,"name":"msg","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-15,"src":"9613:3:10","typeDescriptions":{"typeIdentifier":"t_magic_message","typeString":"msg"}},"id":3078,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"9617:6:10","memberName":"sender","nodeType":"MemberAccess","src":"9613:10:10","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":3079,"name":"FUNGIBLE_MODULE_ADDRESS","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2512,"src":"9625:23:10","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":3080,"name":"gasFee","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3065,"src":"9650:6:10","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"expression":{"arguments":[{"id":3074,"name":"gasZRC20","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3063,"src":"9590:8:10","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"}],"id":3073,"name":"IZRC20","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4825,"src":"9583:6:10","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_IZRC20_$4825_$","typeString":"type(contract IZRC20)"}},"id":3075,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"9583:16:10","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_contract$_IZRC20_$4825","typeString":"contract IZRC20"}},"id":3076,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"9600:12:10","memberName":"transferFrom","nodeType":"MemberAccess","referencedDeclaration":4761,"src":"9583:29:10","typeDescriptions":{"typeIdentifier":"t_function_external_nonpayable$_t_address_$_t_address_$_t_uint256_$returns$_t_bool_$","typeString":"function (address,address,uint256) external returns (bool)"}},"id":3081,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"9583:74:10","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":3087,"nodeType":"IfStatement","src":"9578:135:10","trueBody":{"id":3086,"nodeType":"Block","src":"9659:54:10","statements":[{"errorCall":{"arguments":[],"expression":{"argumentTypes":[],"id":3083,"name":"GasFeeTransferFailed","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4408,"src":"9680:20:10","typeDescriptions":{"typeIdentifier":"t_function_error_pure$__$returns$_t_error_$","typeString":"function () pure returns (error)"}},"id":3084,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"9680:22:10","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_error","typeString":"error"}},"id":3085,"nodeType":"RevertStatement","src":"9673:29:10"}]}},{"eventCall":{"arguments":[{"expression":{"id":3089,"name":"msg","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-15,"src":"9735:3:10","typeDescriptions":{"typeIdentifier":"t_magic_message","typeString":"msg"}},"id":3090,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"9739:6:10","memberName":"sender","nodeType":"MemberAccess","src":"9735:10:10","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":3091,"name":"zrc20","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3032,"src":"9747:5:10","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":3092,"name":"receiver","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3030,"src":"9754:8:10","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}},{"id":3093,"name":"message","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3034,"src":"9764:7:10","typeDescriptions":{"typeIdentifier":"t_bytes_calldata_ptr","typeString":"bytes calldata"}},{"id":3094,"name":"gasLimit","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3036,"src":"9773:8:10","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},{"id":3095,"name":"revertOptions","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3039,"src":"9783:13:10","typeDescriptions":{"typeIdentifier":"t_struct$_RevertOptions_$13_calldata_ptr","typeString":"struct RevertOptions calldata"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"},{"typeIdentifier":"t_bytes_calldata_ptr","typeString":"bytes calldata"},{"typeIdentifier":"t_uint256","typeString":"uint256"},{"typeIdentifier":"t_struct$_RevertOptions_$13_calldata_ptr","typeString":"struct RevertOptions calldata"}],"id":3088,"name":"Called","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4361,"src":"9728:6:10","typeDescriptions":{"typeIdentifier":"t_function_event_nonpayable$_t_address_$_t_address_$_t_bytes_memory_ptr_$_t_bytes_memory_ptr_$_t_uint256_$_t_struct$_RevertOptions_$13_memory_ptr_$returns$__$","typeString":"function (address,address,bytes memory,bytes memory,uint256,struct RevertOptions memory)"}},"id":3096,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"9728:69:10","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":3097,"nodeType":"EmitStatement","src":"9723:74:10"}]},"baseFunctions":[4502],"documentation":{"id":3028,"nodeType":"StructuredDocumentation","src":"8768:343:10","text":"@notice Call a smart contract on an external chain without asset transfer.\n @param receiver The receiver address on the external chain.\n @param zrc20 Address of zrc20 to pay fees.\n @param message The calldata to pass to the contract call.\n @param gasLimit Gas limit.\n @param revertOptions Revert options."},"functionSelector":"1cb5ea75","implemented":true,"kind":"function","modifiers":[{"id":3042,"kind":"modifierInvocation","modifierName":{"id":3041,"name":"nonReentrant","nameLocations":["9319:12:10"],"nodeType":"IdentifierPath","referencedDeclaration":44962,"src":"9319:12:10"},"nodeType":"ModifierInvocation","src":"9319:12:10"},{"id":3044,"kind":"modifierInvocation","modifierName":{"id":3043,"name":"whenNotPaused","nameLocations":["9340:13:10"],"nodeType":"IdentifierPath","referencedDeclaration":44795,"src":"9340:13:10"},"nodeType":"ModifierInvocation","src":"9340:13:10"}],"name":"call","nameLocation":"9125:4:10","parameters":{"id":3040,"nodeType":"ParameterList","parameters":[{"constant":false,"id":3030,"mutability":"mutable","name":"receiver","nameLocation":"9152:8:10","nodeType":"VariableDeclaration","scope":3099,"src":"9139:21:10","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes"},"typeName":{"id":3029,"name":"bytes","nodeType":"ElementaryTypeName","src":"9139:5:10","typeDescriptions":{"typeIdentifier":"t_bytes_storage_ptr","typeString":"bytes"}},"visibility":"internal"},{"constant":false,"id":3032,"mutability":"mutable","name":"zrc20","nameLocation":"9178:5:10","nodeType":"VariableDeclaration","scope":3099,"src":"9170:13:10","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":3031,"name":"address","nodeType":"ElementaryTypeName","src":"9170:7:10","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":3034,"mutability":"mutable","name":"message","nameLocation":"9208:7:10","nodeType":"VariableDeclaration","scope":3099,"src":"9193:22:10","stateVariable":false,"storageLocation":"calldata","typeDescriptions":{"typeIdentifier":"t_bytes_calldata_ptr","typeString":"bytes"},"typeName":{"id":3033,"name":"bytes","nodeType":"ElementaryTypeName","src":"9193:5:10","typeDescriptions":{"typeIdentifier":"t_bytes_storage_ptr","typeString":"bytes"}},"visibility":"internal"},{"constant":false,"id":3036,"mutability":"mutable","name":"gasLimit","nameLocation":"9233:8:10","nodeType":"VariableDeclaration","scope":3099,"src":"9225:16:10","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":3035,"name":"uint256","nodeType":"ElementaryTypeName","src":"9225:7:10","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":3039,"mutability":"mutable","name":"revertOptions","nameLocation":"9274:13:10","nodeType":"VariableDeclaration","scope":3099,"src":"9251:36:10","stateVariable":false,"storageLocation":"calldata","typeDescriptions":{"typeIdentifier":"t_struct$_RevertOptions_$13_calldata_ptr","typeString":"struct RevertOptions"},"typeName":{"id":3038,"nodeType":"UserDefinedTypeName","pathNode":{"id":3037,"name":"RevertOptions","nameLocations":["9251:13:10"],"nodeType":"IdentifierPath","referencedDeclaration":13,"src":"9251:13:10"},"referencedDeclaration":13,"src":"9251:13:10","typeDescriptions":{"typeIdentifier":"t_struct$_RevertOptions_$13_storage_ptr","typeString":"struct RevertOptions"}},"visibility":"internal"}],"src":"9129:164:10"},"returnParameters":{"id":3045,"nodeType":"ParameterList","parameters":[],"src":"9358:0:10"},"scope":3462,"stateMutability":"nonpayable","virtual":false,"visibility":"external"},{"id":3164,"nodeType":"FunctionDefinition","src":"10042:426:10","nodes":[],"body":{"id":3163,"nodeType":"Block","src":"10142:326:10","nodes":[],"statements":[{"condition":{"commonType":{"typeIdentifier":"t_bool","typeString":"bool"},"id":3125,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"commonType":{"typeIdentifier":"t_address","typeString":"address"},"id":3118,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":3113,"name":"zrc20","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3102,"src":"10156:5:10","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"nodeType":"BinaryOperation","operator":"==","rightExpression":{"arguments":[{"hexValue":"30","id":3116,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"10173:1:10","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"}],"id":3115,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"10165:7:10","typeDescriptions":{"typeIdentifier":"t_type$_t_address_$","typeString":"type(address)"},"typeName":{"id":3114,"name":"address","nodeType":"ElementaryTypeName","src":"10165:7:10","typeDescriptions":{}}},"id":3117,"isConstant":false,"isLValue":false,"isPure":true,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"10165:10:10","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"src":"10156:19:10","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"nodeType":"BinaryOperation","operator":"||","rightExpression":{"commonType":{"typeIdentifier":"t_address","typeString":"address"},"id":3124,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":3119,"name":"target","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3106,"src":"10179:6:10","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"nodeType":"BinaryOperation","operator":"==","rightExpression":{"arguments":[{"hexValue":"30","id":3122,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"10197:1:10","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"}],"id":3121,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"10189:7:10","typeDescriptions":{"typeIdentifier":"t_type$_t_address_$","typeString":"type(address)"},"typeName":{"id":3120,"name":"address","nodeType":"ElementaryTypeName","src":"10189:7:10","typeDescriptions":{}}},"id":3123,"isConstant":false,"isLValue":false,"isPure":true,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"10189:10:10","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"src":"10179:20:10","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"src":"10156:43:10","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":3129,"nodeType":"IfStatement","src":"10152:69:10","trueBody":{"errorCall":{"arguments":[],"expression":{"argumentTypes":[],"id":3126,"name":"ZeroAddress","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2508,"src":"10208:11:10","typeDescriptions":{"typeIdentifier":"t_function_error_pure$__$returns$_t_error_$","typeString":"function () pure returns (error)"}},"id":3127,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"10208:13:10","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_error","typeString":"error"}},"id":3128,"nodeType":"RevertStatement","src":"10201:20:10"}},{"condition":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":3132,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":3130,"name":"amount","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3104,"src":"10235:6:10","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"==","rightExpression":{"hexValue":"30","id":3131,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"10245:1:10","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},"src":"10235:11:10","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":3136,"nodeType":"IfStatement","src":"10231:49:10","trueBody":{"errorCall":{"arguments":[],"expression":{"argumentTypes":[],"id":3133,"name":"InsufficientZRC20Amount","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4393,"src":"10255:23:10","typeDescriptions":{"typeIdentifier":"t_function_error_pure$__$returns$_t_error_$","typeString":"function () pure returns (error)"}},"id":3134,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"10255:25:10","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_error","typeString":"error"}},"id":3135,"nodeType":"RevertStatement","src":"10248:32:10"}},{"condition":{"commonType":{"typeIdentifier":"t_bool","typeString":"bool"},"id":3146,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"commonType":{"typeIdentifier":"t_address","typeString":"address"},"id":3139,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":3137,"name":"target","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3106,"src":"10295:6:10","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"nodeType":"BinaryOperation","operator":"==","rightExpression":{"id":3138,"name":"FUNGIBLE_MODULE_ADDRESS","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2512,"src":"10305:23:10","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"src":"10295:33:10","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"nodeType":"BinaryOperation","operator":"||","rightExpression":{"commonType":{"typeIdentifier":"t_address","typeString":"address"},"id":3145,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":3140,"name":"target","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3106,"src":"10332:6:10","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"nodeType":"BinaryOperation","operator":"==","rightExpression":{"arguments":[{"id":3143,"name":"this","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-28,"src":"10350:4:10","typeDescriptions":{"typeIdentifier":"t_contract$_GatewayZEVM_$3462","typeString":"contract GatewayZEVM"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_contract$_GatewayZEVM_$3462","typeString":"contract GatewayZEVM"}],"id":3142,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"10342:7:10","typeDescriptions":{"typeIdentifier":"t_type$_t_address_$","typeString":"type(address)"},"typeName":{"id":3141,"name":"address","nodeType":"ElementaryTypeName","src":"10342:7:10","typeDescriptions":{}}},"id":3144,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"10342:13:10","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"src":"10332:23:10","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"src":"10295:60:10","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":3150,"nodeType":"IfStatement","src":"10291:88:10","trueBody":{"errorCall":{"arguments":[],"expression":{"argumentTypes":[],"id":3147,"name":"InvalidTarget","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4414,"src":"10364:13:10","typeDescriptions":{"typeIdentifier":"t_function_error_pure$__$returns$_t_error_$","typeString":"function () pure returns (error)"}},"id":3148,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"10364:15:10","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_error","typeString":"error"}},"id":3149,"nodeType":"RevertStatement","src":"10357:22:10"}},{"condition":{"id":3158,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"UnaryOperation","operator":"!","prefix":true,"src":"10394:38:10","subExpression":{"arguments":[{"id":3155,"name":"target","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3106,"src":"10417:6:10","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":3156,"name":"amount","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3104,"src":"10425:6:10","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"expression":{"arguments":[{"id":3152,"name":"zrc20","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3102,"src":"10402:5:10","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"}],"id":3151,"name":"IZRC20","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4825,"src":"10395:6:10","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_IZRC20_$4825_$","typeString":"type(contract IZRC20)"}},"id":3153,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"10395:13:10","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_contract$_IZRC20_$4825","typeString":"contract IZRC20"}},"id":3154,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"10409:7:10","memberName":"deposit","nodeType":"MemberAccess","referencedDeclaration":4770,"src":"10395:21:10","typeDescriptions":{"typeIdentifier":"t_function_external_nonpayable$_t_address_$_t_uint256_$returns$_t_bool_$","typeString":"function (address,uint256) external returns (bool)"}},"id":3157,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"10395:37:10","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":3162,"nodeType":"IfStatement","src":"10390:71:10","trueBody":{"errorCall":{"arguments":[],"expression":{"argumentTypes":[],"id":3159,"name":"ZRC20DepositFailed","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4405,"src":"10441:18:10","typeDescriptions":{"typeIdentifier":"t_function_error_pure$__$returns$_t_error_$","typeString":"function () pure returns (error)"}},"id":3160,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"10441:20:10","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_error","typeString":"error"}},"id":3161,"nodeType":"RevertStatement","src":"10434:27:10"}}]},"baseFunctions":[4512],"documentation":{"id":3100,"nodeType":"StructuredDocumentation","src":"9810:227:10","text":"@notice Deposit foreign coins into ZRC20.\n @param zrc20 The address of the ZRC20 token.\n @param amount The amount of tokens to deposit.\n @param target The target address to receive the deposited tokens."},"functionSelector":"f45346dc","implemented":true,"kind":"function","modifiers":[{"id":3109,"kind":"modifierInvocation","modifierName":{"id":3108,"name":"onlyFungible","nameLocations":["10115:12:10"],"nodeType":"IdentifierPath","referencedDeclaration":2535,"src":"10115:12:10"},"nodeType":"ModifierInvocation","src":"10115:12:10"},{"id":3111,"kind":"modifierInvocation","modifierName":{"id":3110,"name":"whenNotPaused","nameLocations":["10128:13:10"],"nodeType":"IdentifierPath","referencedDeclaration":44795,"src":"10128:13:10"},"nodeType":"ModifierInvocation","src":"10128:13:10"}],"name":"deposit","nameLocation":"10051:7:10","parameters":{"id":3107,"nodeType":"ParameterList","parameters":[{"constant":false,"id":3102,"mutability":"mutable","name":"zrc20","nameLocation":"10067:5:10","nodeType":"VariableDeclaration","scope":3164,"src":"10059:13:10","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":3101,"name":"address","nodeType":"ElementaryTypeName","src":"10059:7:10","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":3104,"mutability":"mutable","name":"amount","nameLocation":"10082:6:10","nodeType":"VariableDeclaration","scope":3164,"src":"10074:14:10","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":3103,"name":"uint256","nodeType":"ElementaryTypeName","src":"10074:7:10","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":3106,"mutability":"mutable","name":"target","nameLocation":"10098:6:10","nodeType":"VariableDeclaration","scope":3164,"src":"10090:14:10","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":3105,"name":"address","nodeType":"ElementaryTypeName","src":"10090:7:10","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"10058:47:10"},"returnParameters":{"id":3112,"nodeType":"ParameterList","parameters":[],"src":"10142:0:10"},"scope":3462,"stateMutability":"nonpayable","virtual":false,"visibility":"external"},{"id":3211,"nodeType":"FunctionDefinition","src":"10819:397:10","nodes":[],"body":{"id":3210,"nodeType":"Block","src":"11044:172:10","nodes":[],"statements":[{"condition":{"commonType":{"typeIdentifier":"t_bool","typeString":"bool"},"id":3195,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"commonType":{"typeIdentifier":"t_address","typeString":"address"},"id":3188,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":3183,"name":"zrc20","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3170,"src":"11058:5:10","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"nodeType":"BinaryOperation","operator":"==","rightExpression":{"arguments":[{"hexValue":"30","id":3186,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"11075:1:10","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"}],"id":3185,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"11067:7:10","typeDescriptions":{"typeIdentifier":"t_type$_t_address_$","typeString":"type(address)"},"typeName":{"id":3184,"name":"address","nodeType":"ElementaryTypeName","src":"11067:7:10","typeDescriptions":{}}},"id":3187,"isConstant":false,"isLValue":false,"isPure":true,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"11067:10:10","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"src":"11058:19:10","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"nodeType":"BinaryOperation","operator":"||","rightExpression":{"commonType":{"typeIdentifier":"t_address","typeString":"address"},"id":3194,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":3189,"name":"target","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3174,"src":"11081:6:10","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"nodeType":"BinaryOperation","operator":"==","rightExpression":{"arguments":[{"hexValue":"30","id":3192,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"11099:1:10","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"}],"id":3191,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"11091:7:10","typeDescriptions":{"typeIdentifier":"t_type$_t_address_$","typeString":"type(address)"},"typeName":{"id":3190,"name":"address","nodeType":"ElementaryTypeName","src":"11091:7:10","typeDescriptions":{}}},"id":3193,"isConstant":false,"isLValue":false,"isPure":true,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"11091:10:10","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"src":"11081:20:10","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"src":"11058:43:10","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":3199,"nodeType":"IfStatement","src":"11054:69:10","trueBody":{"errorCall":{"arguments":[],"expression":{"argumentTypes":[],"id":3196,"name":"ZeroAddress","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2508,"src":"11110:11:10","typeDescriptions":{"typeIdentifier":"t_function_error_pure$__$returns$_t_error_$","typeString":"function () pure returns (error)"}},"id":3197,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"11110:13:10","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_error","typeString":"error"}},"id":3198,"nodeType":"RevertStatement","src":"11103:20:10"}},{"expression":{"arguments":[{"id":3204,"name":"context","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3168,"src":"11177:7:10","typeDescriptions":{"typeIdentifier":"t_struct$_zContext_$4914_calldata_ptr","typeString":"struct zContext calldata"}},{"id":3205,"name":"zrc20","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3170,"src":"11186:5:10","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":3206,"name":"amount","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3172,"src":"11193:6:10","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},{"id":3207,"name":"message","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3176,"src":"11201:7:10","typeDescriptions":{"typeIdentifier":"t_bytes_calldata_ptr","typeString":"bytes calldata"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_struct$_zContext_$4914_calldata_ptr","typeString":"struct zContext calldata"},{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_uint256","typeString":"uint256"},{"typeIdentifier":"t_bytes_calldata_ptr","typeString":"bytes calldata"}],"expression":{"arguments":[{"id":3201,"name":"target","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3174,"src":"11152:6:10","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"}],"id":3200,"name":"UniversalContract","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4947,"src":"11134:17:10","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_UniversalContract_$4947_$","typeString":"type(contract UniversalContract)"}},"id":3202,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"11134:25:10","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_contract$_UniversalContract_$4947","typeString":"contract UniversalContract"}},"id":3203,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"11160:16:10","memberName":"onCrossChainCall","nodeType":"MemberAccess","referencedDeclaration":4940,"src":"11134:42:10","typeDescriptions":{"typeIdentifier":"t_function_external_nonpayable$_t_struct$_zContext_$4914_memory_ptr_$_t_address_$_t_uint256_$_t_bytes_memory_ptr_$returns$__$","typeString":"function (struct zContext memory,address,uint256,bytes memory) external"}},"id":3208,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"11134:75:10","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":3209,"nodeType":"ExpressionStatement","src":"11134:75:10"}]},"baseFunctions":[4527],"documentation":{"id":3165,"nodeType":"StructuredDocumentation","src":"10474:340:10","text":"@notice Execute a user-specified contract on ZEVM.\n @param context The context of the cross-chain call.\n @param zrc20 The address of the ZRC20 token.\n @param amount The amount of tokens to transfer.\n @param target The target contract to call.\n @param message The calldata to pass to the contract call."},"functionSelector":"bcf7f32b","implemented":true,"kind":"function","modifiers":[{"id":3179,"kind":"modifierInvocation","modifierName":{"id":3178,"name":"onlyFungible","nameLocations":["11005:12:10"],"nodeType":"IdentifierPath","referencedDeclaration":2535,"src":"11005:12:10"},"nodeType":"ModifierInvocation","src":"11005:12:10"},{"id":3181,"kind":"modifierInvocation","modifierName":{"id":3180,"name":"whenNotPaused","nameLocations":["11026:13:10"],"nodeType":"IdentifierPath","referencedDeclaration":44795,"src":"11026:13:10"},"nodeType":"ModifierInvocation","src":"11026:13:10"}],"name":"execute","nameLocation":"10828:7:10","parameters":{"id":3177,"nodeType":"ParameterList","parameters":[{"constant":false,"id":3168,"mutability":"mutable","name":"context","nameLocation":"10863:7:10","nodeType":"VariableDeclaration","scope":3211,"src":"10845:25:10","stateVariable":false,"storageLocation":"calldata","typeDescriptions":{"typeIdentifier":"t_struct$_zContext_$4914_calldata_ptr","typeString":"struct zContext"},"typeName":{"id":3167,"nodeType":"UserDefinedTypeName","pathNode":{"id":3166,"name":"zContext","nameLocations":["10845:8:10"],"nodeType":"IdentifierPath","referencedDeclaration":4914,"src":"10845:8:10"},"referencedDeclaration":4914,"src":"10845:8:10","typeDescriptions":{"typeIdentifier":"t_struct$_zContext_$4914_storage_ptr","typeString":"struct zContext"}},"visibility":"internal"},{"constant":false,"id":3170,"mutability":"mutable","name":"zrc20","nameLocation":"10888:5:10","nodeType":"VariableDeclaration","scope":3211,"src":"10880:13:10","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":3169,"name":"address","nodeType":"ElementaryTypeName","src":"10880:7:10","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":3172,"mutability":"mutable","name":"amount","nameLocation":"10911:6:10","nodeType":"VariableDeclaration","scope":3211,"src":"10903:14:10","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":3171,"name":"uint256","nodeType":"ElementaryTypeName","src":"10903:7:10","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":3174,"mutability":"mutable","name":"target","nameLocation":"10935:6:10","nodeType":"VariableDeclaration","scope":3211,"src":"10927:14:10","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":3173,"name":"address","nodeType":"ElementaryTypeName","src":"10927:7:10","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":3176,"mutability":"mutable","name":"message","nameLocation":"10966:7:10","nodeType":"VariableDeclaration","scope":3211,"src":"10951:22:10","stateVariable":false,"storageLocation":"calldata","typeDescriptions":{"typeIdentifier":"t_bytes_calldata_ptr","typeString":"bytes"},"typeName":{"id":3175,"name":"bytes","nodeType":"ElementaryTypeName","src":"10951:5:10","typeDescriptions":{"typeIdentifier":"t_bytes_storage_ptr","typeString":"bytes"}},"visibility":"internal"}],"src":"10835:144:10"},"returnParameters":{"id":3182,"nodeType":"ParameterList","parameters":[],"src":"11044:0:10"},"scope":3462,"stateMutability":"nonpayable","virtual":false,"visibility":"external"},{"id":3291,"nodeType":"FunctionDefinition","src":"11601:642:10","nodes":[],"body":{"id":3290,"nodeType":"Block","src":"11833:410:10","nodes":[],"statements":[{"condition":{"commonType":{"typeIdentifier":"t_bool","typeString":"bool"},"id":3242,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"commonType":{"typeIdentifier":"t_address","typeString":"address"},"id":3235,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":3230,"name":"zrc20","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3217,"src":"11847:5:10","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"nodeType":"BinaryOperation","operator":"==","rightExpression":{"arguments":[{"hexValue":"30","id":3233,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"11864:1:10","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"}],"id":3232,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"11856:7:10","typeDescriptions":{"typeIdentifier":"t_type$_t_address_$","typeString":"type(address)"},"typeName":{"id":3231,"name":"address","nodeType":"ElementaryTypeName","src":"11856:7:10","typeDescriptions":{}}},"id":3234,"isConstant":false,"isLValue":false,"isPure":true,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"11856:10:10","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"src":"11847:19:10","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"nodeType":"BinaryOperation","operator":"||","rightExpression":{"commonType":{"typeIdentifier":"t_address","typeString":"address"},"id":3241,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":3236,"name":"target","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3221,"src":"11870:6:10","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"nodeType":"BinaryOperation","operator":"==","rightExpression":{"arguments":[{"hexValue":"30","id":3239,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"11888:1:10","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"}],"id":3238,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"11880:7:10","typeDescriptions":{"typeIdentifier":"t_type$_t_address_$","typeString":"type(address)"},"typeName":{"id":3237,"name":"address","nodeType":"ElementaryTypeName","src":"11880:7:10","typeDescriptions":{}}},"id":3240,"isConstant":false,"isLValue":false,"isPure":true,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"11880:10:10","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"src":"11870:20:10","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"src":"11847:43:10","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":3246,"nodeType":"IfStatement","src":"11843:69:10","trueBody":{"errorCall":{"arguments":[],"expression":{"argumentTypes":[],"id":3243,"name":"ZeroAddress","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2508,"src":"11899:11:10","typeDescriptions":{"typeIdentifier":"t_function_error_pure$__$returns$_t_error_$","typeString":"function () pure returns (error)"}},"id":3244,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"11899:13:10","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_error","typeString":"error"}},"id":3245,"nodeType":"RevertStatement","src":"11892:20:10"}},{"condition":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":3249,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":3247,"name":"amount","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3219,"src":"11926:6:10","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"==","rightExpression":{"hexValue":"30","id":3248,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"11936:1:10","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},"src":"11926:11:10","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":3253,"nodeType":"IfStatement","src":"11922:49:10","trueBody":{"errorCall":{"arguments":[],"expression":{"argumentTypes":[],"id":3250,"name":"InsufficientZRC20Amount","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4393,"src":"11946:23:10","typeDescriptions":{"typeIdentifier":"t_function_error_pure$__$returns$_t_error_$","typeString":"function () pure returns (error)"}},"id":3251,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"11946:25:10","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_error","typeString":"error"}},"id":3252,"nodeType":"RevertStatement","src":"11939:32:10"}},{"condition":{"commonType":{"typeIdentifier":"t_bool","typeString":"bool"},"id":3263,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"commonType":{"typeIdentifier":"t_address","typeString":"address"},"id":3256,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":3254,"name":"target","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3221,"src":"11985:6:10","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"nodeType":"BinaryOperation","operator":"==","rightExpression":{"id":3255,"name":"FUNGIBLE_MODULE_ADDRESS","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2512,"src":"11995:23:10","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"src":"11985:33:10","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"nodeType":"BinaryOperation","operator":"||","rightExpression":{"commonType":{"typeIdentifier":"t_address","typeString":"address"},"id":3262,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":3257,"name":"target","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3221,"src":"12022:6:10","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"nodeType":"BinaryOperation","operator":"==","rightExpression":{"arguments":[{"id":3260,"name":"this","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-28,"src":"12040:4:10","typeDescriptions":{"typeIdentifier":"t_contract$_GatewayZEVM_$3462","typeString":"contract GatewayZEVM"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_contract$_GatewayZEVM_$3462","typeString":"contract GatewayZEVM"}],"id":3259,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"12032:7:10","typeDescriptions":{"typeIdentifier":"t_type$_t_address_$","typeString":"type(address)"},"typeName":{"id":3258,"name":"address","nodeType":"ElementaryTypeName","src":"12032:7:10","typeDescriptions":{}}},"id":3261,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"12032:13:10","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"src":"12022:23:10","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"src":"11985:60:10","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":3267,"nodeType":"IfStatement","src":"11981:88:10","trueBody":{"errorCall":{"arguments":[],"expression":{"argumentTypes":[],"id":3264,"name":"InvalidTarget","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4414,"src":"12054:13:10","typeDescriptions":{"typeIdentifier":"t_function_error_pure$__$returns$_t_error_$","typeString":"function () pure returns (error)"}},"id":3265,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"12054:15:10","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_error","typeString":"error"}},"id":3266,"nodeType":"RevertStatement","src":"12047:22:10"}},{"condition":{"id":3275,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"UnaryOperation","operator":"!","prefix":true,"src":"12084:38:10","subExpression":{"arguments":[{"id":3272,"name":"target","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3221,"src":"12107:6:10","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":3273,"name":"amount","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3219,"src":"12115:6:10","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"expression":{"arguments":[{"id":3269,"name":"zrc20","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3217,"src":"12092:5:10","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"}],"id":3268,"name":"IZRC20","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4825,"src":"12085:6:10","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_IZRC20_$4825_$","typeString":"type(contract IZRC20)"}},"id":3270,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"12085:13:10","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_contract$_IZRC20_$4825","typeString":"contract IZRC20"}},"id":3271,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"12099:7:10","memberName":"deposit","nodeType":"MemberAccess","referencedDeclaration":4770,"src":"12085:21:10","typeDescriptions":{"typeIdentifier":"t_function_external_nonpayable$_t_address_$_t_uint256_$returns$_t_bool_$","typeString":"function (address,uint256) external returns (bool)"}},"id":3274,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"12085:37:10","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":3279,"nodeType":"IfStatement","src":"12080:71:10","trueBody":{"errorCall":{"arguments":[],"expression":{"argumentTypes":[],"id":3276,"name":"ZRC20DepositFailed","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4405,"src":"12131:18:10","typeDescriptions":{"typeIdentifier":"t_function_error_pure$__$returns$_t_error_$","typeString":"function () pure returns (error)"}},"id":3277,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"12131:20:10","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_error","typeString":"error"}},"id":3278,"nodeType":"RevertStatement","src":"12124:27:10"}},{"expression":{"arguments":[{"id":3284,"name":"context","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3215,"src":"12204:7:10","typeDescriptions":{"typeIdentifier":"t_struct$_zContext_$4914_calldata_ptr","typeString":"struct zContext calldata"}},{"id":3285,"name":"zrc20","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3217,"src":"12213:5:10","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":3286,"name":"amount","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3219,"src":"12220:6:10","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},{"id":3287,"name":"message","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3223,"src":"12228:7:10","typeDescriptions":{"typeIdentifier":"t_bytes_calldata_ptr","typeString":"bytes calldata"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_struct$_zContext_$4914_calldata_ptr","typeString":"struct zContext calldata"},{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_uint256","typeString":"uint256"},{"typeIdentifier":"t_bytes_calldata_ptr","typeString":"bytes calldata"}],"expression":{"arguments":[{"id":3281,"name":"target","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3221,"src":"12179:6:10","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"}],"id":3280,"name":"UniversalContract","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4947,"src":"12161:17:10","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_UniversalContract_$4947_$","typeString":"type(contract UniversalContract)"}},"id":3282,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"12161:25:10","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_contract$_UniversalContract_$4947","typeString":"contract UniversalContract"}},"id":3283,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"12187:16:10","memberName":"onCrossChainCall","nodeType":"MemberAccess","referencedDeclaration":4940,"src":"12161:42:10","typeDescriptions":{"typeIdentifier":"t_function_external_nonpayable$_t_struct$_zContext_$4914_memory_ptr_$_t_address_$_t_uint256_$_t_bytes_memory_ptr_$returns$__$","typeString":"function (struct zContext memory,address,uint256,bytes memory) external"}},"id":3288,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"12161:75:10","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":3289,"nodeType":"ExpressionStatement","src":"12161:75:10"}]},"baseFunctions":[4542],"documentation":{"id":3212,"nodeType":"StructuredDocumentation","src":"11222:374:10","text":"@notice Deposit foreign coins into ZRC20 and call a user-specified contract on ZEVM.\n @param context The context of the cross-chain call.\n @param zrc20 The address of the ZRC20 token.\n @param amount The amount of tokens to transfer.\n @param target The target contract to call.\n @param message The calldata to pass to the contract call."},"functionSelector":"c39aca37","implemented":true,"kind":"function","modifiers":[{"id":3226,"kind":"modifierInvocation","modifierName":{"id":3225,"name":"onlyFungible","nameLocations":["11794:12:10"],"nodeType":"IdentifierPath","referencedDeclaration":2535,"src":"11794:12:10"},"nodeType":"ModifierInvocation","src":"11794:12:10"},{"id":3228,"kind":"modifierInvocation","modifierName":{"id":3227,"name":"whenNotPaused","nameLocations":["11815:13:10"],"nodeType":"IdentifierPath","referencedDeclaration":44795,"src":"11815:13:10"},"nodeType":"ModifierInvocation","src":"11815:13:10"}],"name":"depositAndCall","nameLocation":"11610:14:10","parameters":{"id":3224,"nodeType":"ParameterList","parameters":[{"constant":false,"id":3215,"mutability":"mutable","name":"context","nameLocation":"11652:7:10","nodeType":"VariableDeclaration","scope":3291,"src":"11634:25:10","stateVariable":false,"storageLocation":"calldata","typeDescriptions":{"typeIdentifier":"t_struct$_zContext_$4914_calldata_ptr","typeString":"struct zContext"},"typeName":{"id":3214,"nodeType":"UserDefinedTypeName","pathNode":{"id":3213,"name":"zContext","nameLocations":["11634:8:10"],"nodeType":"IdentifierPath","referencedDeclaration":4914,"src":"11634:8:10"},"referencedDeclaration":4914,"src":"11634:8:10","typeDescriptions":{"typeIdentifier":"t_struct$_zContext_$4914_storage_ptr","typeString":"struct zContext"}},"visibility":"internal"},{"constant":false,"id":3217,"mutability":"mutable","name":"zrc20","nameLocation":"11677:5:10","nodeType":"VariableDeclaration","scope":3291,"src":"11669:13:10","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":3216,"name":"address","nodeType":"ElementaryTypeName","src":"11669:7:10","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":3219,"mutability":"mutable","name":"amount","nameLocation":"11700:6:10","nodeType":"VariableDeclaration","scope":3291,"src":"11692:14:10","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":3218,"name":"uint256","nodeType":"ElementaryTypeName","src":"11692:7:10","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":3221,"mutability":"mutable","name":"target","nameLocation":"11724:6:10","nodeType":"VariableDeclaration","scope":3291,"src":"11716:14:10","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":3220,"name":"address","nodeType":"ElementaryTypeName","src":"11716:7:10","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":3223,"mutability":"mutable","name":"message","nameLocation":"11755:7:10","nodeType":"VariableDeclaration","scope":3291,"src":"11740:22:10","stateVariable":false,"storageLocation":"calldata","typeDescriptions":{"typeIdentifier":"t_bytes_calldata_ptr","typeString":"bytes"},"typeName":{"id":3222,"name":"bytes","nodeType":"ElementaryTypeName","src":"11740:5:10","typeDescriptions":{"typeIdentifier":"t_bytes_storage_ptr","typeString":"bytes"}},"visibility":"internal"}],"src":"11624:144:10"},"returnParameters":{"id":3229,"nodeType":"ParameterList","parameters":[],"src":"11833:0:10"},"scope":3462,"stateMutability":"nonpayable","virtual":false,"visibility":"external"},{"id":3355,"nodeType":"FunctionDefinition","src":"12555:557:10","nodes":[],"body":{"id":3354,"nodeType":"Block","src":"12764:348:10","nodes":[],"statements":[{"condition":{"commonType":{"typeIdentifier":"t_address","typeString":"address"},"id":3313,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":3308,"name":"target","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3299,"src":"12778:6:10","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"nodeType":"BinaryOperation","operator":"==","rightExpression":{"arguments":[{"hexValue":"30","id":3311,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"12796:1:10","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"}],"id":3310,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"12788:7:10","typeDescriptions":{"typeIdentifier":"t_type$_t_address_$","typeString":"type(address)"},"typeName":{"id":3309,"name":"address","nodeType":"ElementaryTypeName","src":"12788:7:10","typeDescriptions":{}}},"id":3312,"isConstant":false,"isLValue":false,"isPure":true,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"12788:10:10","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"src":"12778:20:10","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":3317,"nodeType":"IfStatement","src":"12774:46:10","trueBody":{"errorCall":{"arguments":[],"expression":{"argumentTypes":[],"id":3314,"name":"ZeroAddress","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2508,"src":"12807:11:10","typeDescriptions":{"typeIdentifier":"t_function_error_pure$__$returns$_t_error_$","typeString":"function () pure returns (error)"}},"id":3315,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"12807:13:10","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_error","typeString":"error"}},"id":3316,"nodeType":"RevertStatement","src":"12800:20:10"}},{"condition":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":3320,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":3318,"name":"amount","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3297,"src":"12834:6:10","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"==","rightExpression":{"hexValue":"30","id":3319,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"12844:1:10","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},"src":"12834:11:10","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":3324,"nodeType":"IfStatement","src":"12830:48:10","trueBody":{"errorCall":{"arguments":[],"expression":{"argumentTypes":[],"id":3321,"name":"InsufficientZetaAmount","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4396,"src":"12854:22:10","typeDescriptions":{"typeIdentifier":"t_function_error_pure$__$returns$_t_error_$","typeString":"function () pure returns (error)"}},"id":3322,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"12854:24:10","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_error","typeString":"error"}},"id":3323,"nodeType":"RevertStatement","src":"12847:31:10"}},{"condition":{"commonType":{"typeIdentifier":"t_bool","typeString":"bool"},"id":3334,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"commonType":{"typeIdentifier":"t_address","typeString":"address"},"id":3327,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":3325,"name":"target","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3299,"src":"12892:6:10","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"nodeType":"BinaryOperation","operator":"==","rightExpression":{"id":3326,"name":"FUNGIBLE_MODULE_ADDRESS","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2512,"src":"12902:23:10","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"src":"12892:33:10","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"nodeType":"BinaryOperation","operator":"||","rightExpression":{"commonType":{"typeIdentifier":"t_address","typeString":"address"},"id":3333,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":3328,"name":"target","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3299,"src":"12929:6:10","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"nodeType":"BinaryOperation","operator":"==","rightExpression":{"arguments":[{"id":3331,"name":"this","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-28,"src":"12947:4:10","typeDescriptions":{"typeIdentifier":"t_contract$_GatewayZEVM_$3462","typeString":"contract GatewayZEVM"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_contract$_GatewayZEVM_$3462","typeString":"contract GatewayZEVM"}],"id":3330,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"12939:7:10","typeDescriptions":{"typeIdentifier":"t_type$_t_address_$","typeString":"type(address)"},"typeName":{"id":3329,"name":"address","nodeType":"ElementaryTypeName","src":"12939:7:10","typeDescriptions":{}}},"id":3332,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"12939:13:10","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"src":"12929:23:10","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"src":"12892:60:10","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":3338,"nodeType":"IfStatement","src":"12888:88:10","trueBody":{"errorCall":{"arguments":[],"expression":{"argumentTypes":[],"id":3335,"name":"InvalidTarget","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4414,"src":"12961:13:10","typeDescriptions":{"typeIdentifier":"t_function_error_pure$__$returns$_t_error_$","typeString":"function () pure returns (error)"}},"id":3336,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"12961:15:10","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_error","typeString":"error"}},"id":3337,"nodeType":"RevertStatement","src":"12954:22:10"}},{"expression":{"arguments":[{"id":3340,"name":"amount","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3297,"src":"13001:6:10","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},{"id":3341,"name":"target","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3299,"src":"13009:6:10","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"},{"typeIdentifier":"t_address","typeString":"address"}],"id":3339,"name":"_transferZETA","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2790,"src":"12987:13:10","typeDescriptions":{"typeIdentifier":"t_function_internal_nonpayable$_t_uint256_$_t_address_$returns$__$","typeString":"function (uint256,address)"}},"id":3342,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"12987:29:10","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":3343,"nodeType":"ExpressionStatement","src":"12987:29:10"},{"expression":{"arguments":[{"id":3348,"name":"context","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3295,"src":"13069:7:10","typeDescriptions":{"typeIdentifier":"t_struct$_zContext_$4914_calldata_ptr","typeString":"struct zContext calldata"}},{"id":3349,"name":"zetaToken","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2515,"src":"13078:9:10","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":3350,"name":"amount","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3297,"src":"13089:6:10","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},{"id":3351,"name":"message","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3301,"src":"13097:7:10","typeDescriptions":{"typeIdentifier":"t_bytes_calldata_ptr","typeString":"bytes calldata"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_struct$_zContext_$4914_calldata_ptr","typeString":"struct zContext calldata"},{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_uint256","typeString":"uint256"},{"typeIdentifier":"t_bytes_calldata_ptr","typeString":"bytes calldata"}],"expression":{"arguments":[{"id":3345,"name":"target","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3299,"src":"13044:6:10","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"}],"id":3344,"name":"UniversalContract","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4947,"src":"13026:17:10","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_UniversalContract_$4947_$","typeString":"type(contract UniversalContract)"}},"id":3346,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"13026:25:10","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_contract$_UniversalContract_$4947","typeString":"contract UniversalContract"}},"id":3347,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"13052:16:10","memberName":"onCrossChainCall","nodeType":"MemberAccess","referencedDeclaration":4940,"src":"13026:42:10","typeDescriptions":{"typeIdentifier":"t_function_external_nonpayable$_t_struct$_zContext_$4914_memory_ptr_$_t_address_$_t_uint256_$_t_bytes_memory_ptr_$returns$__$","typeString":"function (struct zContext memory,address,uint256,bytes memory) external"}},"id":3352,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"13026:79:10","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":3353,"nodeType":"ExpressionStatement","src":"13026:79:10"}]},"baseFunctions":[4555],"documentation":{"id":3292,"nodeType":"StructuredDocumentation","src":"12249:301:10","text":"@notice Deposit ZETA and call a user-specified contract on ZEVM.\n @param context The context of the cross-chain call.\n @param amount The amount of tokens to transfer.\n @param target The target contract to call.\n @param message The calldata to pass to the contract call."},"functionSelector":"21501a95","implemented":true,"kind":"function","modifiers":[{"id":3304,"kind":"modifierInvocation","modifierName":{"id":3303,"name":"onlyFungible","nameLocations":["12725:12:10"],"nodeType":"IdentifierPath","referencedDeclaration":2535,"src":"12725:12:10"},"nodeType":"ModifierInvocation","src":"12725:12:10"},{"id":3306,"kind":"modifierInvocation","modifierName":{"id":3305,"name":"whenNotPaused","nameLocations":["12746:13:10"],"nodeType":"IdentifierPath","referencedDeclaration":44795,"src":"12746:13:10"},"nodeType":"ModifierInvocation","src":"12746:13:10"}],"name":"depositAndCall","nameLocation":"12564:14:10","parameters":{"id":3302,"nodeType":"ParameterList","parameters":[{"constant":false,"id":3295,"mutability":"mutable","name":"context","nameLocation":"12606:7:10","nodeType":"VariableDeclaration","scope":3355,"src":"12588:25:10","stateVariable":false,"storageLocation":"calldata","typeDescriptions":{"typeIdentifier":"t_struct$_zContext_$4914_calldata_ptr","typeString":"struct zContext"},"typeName":{"id":3294,"nodeType":"UserDefinedTypeName","pathNode":{"id":3293,"name":"zContext","nameLocations":["12588:8:10"],"nodeType":"IdentifierPath","referencedDeclaration":4914,"src":"12588:8:10"},"referencedDeclaration":4914,"src":"12588:8:10","typeDescriptions":{"typeIdentifier":"t_struct$_zContext_$4914_storage_ptr","typeString":"struct zContext"}},"visibility":"internal"},{"constant":false,"id":3297,"mutability":"mutable","name":"amount","nameLocation":"12631:6:10","nodeType":"VariableDeclaration","scope":3355,"src":"12623:14:10","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":3296,"name":"uint256","nodeType":"ElementaryTypeName","src":"12623:7:10","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":3299,"mutability":"mutable","name":"target","nameLocation":"12655:6:10","nodeType":"VariableDeclaration","scope":3355,"src":"12647:14:10","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":3298,"name":"address","nodeType":"ElementaryTypeName","src":"12647:7:10","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":3301,"mutability":"mutable","name":"message","nameLocation":"12686:7:10","nodeType":"VariableDeclaration","scope":3355,"src":"12671:22:10","stateVariable":false,"storageLocation":"calldata","typeDescriptions":{"typeIdentifier":"t_bytes_calldata_ptr","typeString":"bytes"},"typeName":{"id":3300,"name":"bytes","nodeType":"ElementaryTypeName","src":"12671:5:10","typeDescriptions":{"typeIdentifier":"t_bytes_storage_ptr","typeString":"bytes"}},"visibility":"internal"}],"src":"12578:121:10"},"returnParameters":{"id":3307,"nodeType":"ParameterList","parameters":[],"src":"12764:0:10"},"scope":3462,"stateMutability":"nonpayable","virtual":false,"visibility":"external"},{"id":3386,"nodeType":"FunctionDefinition","src":"13292:236:10","nodes":[],"body":{"id":3385,"nodeType":"Block","src":"13405:123:10","nodes":[],"statements":[{"condition":{"commonType":{"typeIdentifier":"t_address","typeString":"address"},"id":3373,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":3368,"name":"target","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3358,"src":"13419:6:10","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"nodeType":"BinaryOperation","operator":"==","rightExpression":{"arguments":[{"hexValue":"30","id":3371,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"13437:1:10","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"}],"id":3370,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"13429:7:10","typeDescriptions":{"typeIdentifier":"t_type$_t_address_$","typeString":"type(address)"},"typeName":{"id":3369,"name":"address","nodeType":"ElementaryTypeName","src":"13429:7:10","typeDescriptions":{}}},"id":3372,"isConstant":false,"isLValue":false,"isPure":true,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"13429:10:10","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"src":"13419:20:10","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":3377,"nodeType":"IfStatement","src":"13415:46:10","trueBody":{"errorCall":{"arguments":[],"expression":{"argumentTypes":[],"id":3374,"name":"ZeroAddress","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2508,"src":"13448:11:10","typeDescriptions":{"typeIdentifier":"t_function_error_pure$__$returns$_t_error_$","typeString":"function () pure returns (error)"}},"id":3375,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"13448:13:10","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_error","typeString":"error"}},"id":3376,"nodeType":"RevertStatement","src":"13441:20:10"}},{"expression":{"arguments":[{"id":3382,"name":"revertContext","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3361,"src":"13507:13:10","typeDescriptions":{"typeIdentifier":"t_struct$_RevertContext_$21_calldata_ptr","typeString":"struct RevertContext calldata"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_struct$_RevertContext_$21_calldata_ptr","typeString":"struct RevertContext calldata"}],"expression":{"arguments":[{"id":3379,"name":"target","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3358,"src":"13490:6:10","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"}],"id":3378,"name":"UniversalContract","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4947,"src":"13472:17:10","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_UniversalContract_$4947_$","typeString":"type(contract UniversalContract)"}},"id":3380,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"13472:25:10","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_contract$_UniversalContract_$4947","typeString":"contract UniversalContract"}},"id":3381,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"13498:8:10","memberName":"onRevert","nodeType":"MemberAccess","referencedDeclaration":4946,"src":"13472:34:10","typeDescriptions":{"typeIdentifier":"t_function_external_nonpayable$_t_struct$_RevertContext_$21_memory_ptr_$returns$__$","typeString":"function (struct RevertContext memory) external"}},"id":3383,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"13472:49:10","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":3384,"nodeType":"ExpressionStatement","src":"13472:49:10"}]},"baseFunctions":[4564],"documentation":{"id":3356,"nodeType":"StructuredDocumentation","src":"13118:169:10","text":"@notice Revert a user-specified contract on ZEVM.\n @param target The target contract to call.\n @param revertContext Revert context to pass to onRevert."},"functionSelector":"717d335f","implemented":true,"kind":"function","modifiers":[{"id":3364,"kind":"modifierInvocation","modifierName":{"id":3363,"name":"onlyFungible","nameLocations":["13378:12:10"],"nodeType":"IdentifierPath","referencedDeclaration":2535,"src":"13378:12:10"},"nodeType":"ModifierInvocation","src":"13378:12:10"},{"id":3366,"kind":"modifierInvocation","modifierName":{"id":3365,"name":"whenNotPaused","nameLocations":["13391:13:10"],"nodeType":"IdentifierPath","referencedDeclaration":44795,"src":"13391:13:10"},"nodeType":"ModifierInvocation","src":"13391:13:10"}],"name":"executeRevert","nameLocation":"13301:13:10","parameters":{"id":3362,"nodeType":"ParameterList","parameters":[{"constant":false,"id":3358,"mutability":"mutable","name":"target","nameLocation":"13323:6:10","nodeType":"VariableDeclaration","scope":3386,"src":"13315:14:10","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":3357,"name":"address","nodeType":"ElementaryTypeName","src":"13315:7:10","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":3361,"mutability":"mutable","name":"revertContext","nameLocation":"13354:13:10","nodeType":"VariableDeclaration","scope":3386,"src":"13331:36:10","stateVariable":false,"storageLocation":"calldata","typeDescriptions":{"typeIdentifier":"t_struct$_RevertContext_$21_calldata_ptr","typeString":"struct RevertContext"},"typeName":{"id":3360,"nodeType":"UserDefinedTypeName","pathNode":{"id":3359,"name":"RevertContext","nameLocations":["13331:13:10"],"nodeType":"IdentifierPath","referencedDeclaration":21,"src":"13331:13:10"},"referencedDeclaration":21,"src":"13331:13:10","typeDescriptions":{"typeIdentifier":"t_struct$_RevertContext_$21_storage_ptr","typeString":"struct RevertContext"}},"visibility":"internal"}],"src":"13314:54:10"},"returnParameters":{"id":3367,"nodeType":"ParameterList","parameters":[],"src":"13405:0:10"},"scope":3462,"stateMutability":"nonpayable","virtual":false,"visibility":"external"},{"id":3461,"nodeType":"FunctionDefinition","src":"13852:597:10","nodes":[],"body":{"id":3460,"nodeType":"Block","src":"14065:384:10","nodes":[],"statements":[{"condition":{"commonType":{"typeIdentifier":"t_bool","typeString":"bool"},"id":3415,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"commonType":{"typeIdentifier":"t_address","typeString":"address"},"id":3408,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":3403,"name":"zrc20","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3389,"src":"14079:5:10","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"nodeType":"BinaryOperation","operator":"==","rightExpression":{"arguments":[{"hexValue":"30","id":3406,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"14096:1:10","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"}],"id":3405,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"14088:7:10","typeDescriptions":{"typeIdentifier":"t_type$_t_address_$","typeString":"type(address)"},"typeName":{"id":3404,"name":"address","nodeType":"ElementaryTypeName","src":"14088:7:10","typeDescriptions":{}}},"id":3407,"isConstant":false,"isLValue":false,"isPure":true,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"14088:10:10","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"src":"14079:19:10","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"nodeType":"BinaryOperation","operator":"||","rightExpression":{"commonType":{"typeIdentifier":"t_address","typeString":"address"},"id":3414,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":3409,"name":"target","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3393,"src":"14102:6:10","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"nodeType":"BinaryOperation","operator":"==","rightExpression":{"arguments":[{"hexValue":"30","id":3412,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"14120:1:10","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"}],"id":3411,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"14112:7:10","typeDescriptions":{"typeIdentifier":"t_type$_t_address_$","typeString":"type(address)"},"typeName":{"id":3410,"name":"address","nodeType":"ElementaryTypeName","src":"14112:7:10","typeDescriptions":{}}},"id":3413,"isConstant":false,"isLValue":false,"isPure":true,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"14112:10:10","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"src":"14102:20:10","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"src":"14079:43:10","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":3419,"nodeType":"IfStatement","src":"14075:69:10","trueBody":{"errorCall":{"arguments":[],"expression":{"argumentTypes":[],"id":3416,"name":"ZeroAddress","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2508,"src":"14131:11:10","typeDescriptions":{"typeIdentifier":"t_function_error_pure$__$returns$_t_error_$","typeString":"function () pure returns (error)"}},"id":3417,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"14131:13:10","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_error","typeString":"error"}},"id":3418,"nodeType":"RevertStatement","src":"14124:20:10"}},{"condition":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":3422,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":3420,"name":"amount","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3391,"src":"14158:6:10","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"==","rightExpression":{"hexValue":"30","id":3421,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"14168:1:10","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},"src":"14158:11:10","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":3426,"nodeType":"IfStatement","src":"14154:49:10","trueBody":{"errorCall":{"arguments":[],"expression":{"argumentTypes":[],"id":3423,"name":"InsufficientZRC20Amount","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4393,"src":"14178:23:10","typeDescriptions":{"typeIdentifier":"t_function_error_pure$__$returns$_t_error_$","typeString":"function () pure returns (error)"}},"id":3424,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"14178:25:10","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_error","typeString":"error"}},"id":3425,"nodeType":"RevertStatement","src":"14171:32:10"}},{"condition":{"commonType":{"typeIdentifier":"t_bool","typeString":"bool"},"id":3436,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"commonType":{"typeIdentifier":"t_address","typeString":"address"},"id":3429,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":3427,"name":"target","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3393,"src":"14217:6:10","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"nodeType":"BinaryOperation","operator":"==","rightExpression":{"id":3428,"name":"FUNGIBLE_MODULE_ADDRESS","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2512,"src":"14227:23:10","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"src":"14217:33:10","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"nodeType":"BinaryOperation","operator":"||","rightExpression":{"commonType":{"typeIdentifier":"t_address","typeString":"address"},"id":3435,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":3430,"name":"target","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3393,"src":"14254:6:10","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"nodeType":"BinaryOperation","operator":"==","rightExpression":{"arguments":[{"id":3433,"name":"this","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-28,"src":"14272:4:10","typeDescriptions":{"typeIdentifier":"t_contract$_GatewayZEVM_$3462","typeString":"contract GatewayZEVM"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_contract$_GatewayZEVM_$3462","typeString":"contract GatewayZEVM"}],"id":3432,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"14264:7:10","typeDescriptions":{"typeIdentifier":"t_type$_t_address_$","typeString":"type(address)"},"typeName":{"id":3431,"name":"address","nodeType":"ElementaryTypeName","src":"14264:7:10","typeDescriptions":{}}},"id":3434,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"14264:13:10","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"src":"14254:23:10","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"src":"14217:60:10","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":3440,"nodeType":"IfStatement","src":"14213:88:10","trueBody":{"errorCall":{"arguments":[],"expression":{"argumentTypes":[],"id":3437,"name":"InvalidTarget","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4414,"src":"14286:13:10","typeDescriptions":{"typeIdentifier":"t_function_error_pure$__$returns$_t_error_$","typeString":"function () pure returns (error)"}},"id":3438,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"14286:15:10","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_error","typeString":"error"}},"id":3439,"nodeType":"RevertStatement","src":"14279:22:10"}},{"condition":{"id":3448,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"UnaryOperation","operator":"!","prefix":true,"src":"14316:38:10","subExpression":{"arguments":[{"id":3445,"name":"target","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3393,"src":"14339:6:10","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":3446,"name":"amount","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3391,"src":"14347:6:10","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"expression":{"arguments":[{"id":3442,"name":"zrc20","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3389,"src":"14324:5:10","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"}],"id":3441,"name":"IZRC20","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4825,"src":"14317:6:10","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_IZRC20_$4825_$","typeString":"type(contract IZRC20)"}},"id":3443,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"14317:13:10","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_contract$_IZRC20_$4825","typeString":"contract IZRC20"}},"id":3444,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"14331:7:10","memberName":"deposit","nodeType":"MemberAccess","referencedDeclaration":4770,"src":"14317:21:10","typeDescriptions":{"typeIdentifier":"t_function_external_nonpayable$_t_address_$_t_uint256_$returns$_t_bool_$","typeString":"function (address,uint256) external returns (bool)"}},"id":3447,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"14317:37:10","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":3452,"nodeType":"IfStatement","src":"14312:71:10","trueBody":{"errorCall":{"arguments":[],"expression":{"argumentTypes":[],"id":3449,"name":"ZRC20DepositFailed","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4405,"src":"14363:18:10","typeDescriptions":{"typeIdentifier":"t_function_error_pure$__$returns$_t_error_$","typeString":"function () pure returns (error)"}},"id":3450,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"14363:20:10","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_error","typeString":"error"}},"id":3451,"nodeType":"RevertStatement","src":"14356:27:10"}},{"expression":{"arguments":[{"id":3457,"name":"revertContext","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3396,"src":"14428:13:10","typeDescriptions":{"typeIdentifier":"t_struct$_RevertContext_$21_calldata_ptr","typeString":"struct RevertContext calldata"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_struct$_RevertContext_$21_calldata_ptr","typeString":"struct RevertContext calldata"}],"expression":{"arguments":[{"id":3454,"name":"target","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3393,"src":"14411:6:10","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"}],"id":3453,"name":"UniversalContract","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4947,"src":"14393:17:10","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_UniversalContract_$4947_$","typeString":"type(contract UniversalContract)"}},"id":3455,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"14393:25:10","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_contract$_UniversalContract_$4947","typeString":"contract UniversalContract"}},"id":3456,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"14419:8:10","memberName":"onRevert","nodeType":"MemberAccess","referencedDeclaration":4946,"src":"14393:34:10","typeDescriptions":{"typeIdentifier":"t_function_external_nonpayable$_t_struct$_RevertContext_$21_memory_ptr_$returns$__$","typeString":"function (struct RevertContext memory) external"}},"id":3458,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"14393:49:10","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":3459,"nodeType":"ExpressionStatement","src":"14393:49:10"}]},"baseFunctions":[4577],"documentation":{"id":3387,"nodeType":"StructuredDocumentation","src":"13534:313:10","text":"@notice Deposit foreign coins into ZRC20 and revert a user-specified contract on ZEVM.\n @param zrc20 The address of the ZRC20 token.\n @param amount The amount of tokens to revert.\n @param target The target contract to call.\n @param revertContext Revert context to pass to onRevert."},"functionSelector":"0310eb76","implemented":true,"kind":"function","modifiers":[{"id":3399,"kind":"modifierInvocation","modifierName":{"id":3398,"name":"onlyFungible","nameLocations":["14026:12:10"],"nodeType":"IdentifierPath","referencedDeclaration":2535,"src":"14026:12:10"},"nodeType":"ModifierInvocation","src":"14026:12:10"},{"id":3401,"kind":"modifierInvocation","modifierName":{"id":3400,"name":"whenNotPaused","nameLocations":["14047:13:10"],"nodeType":"IdentifierPath","referencedDeclaration":44795,"src":"14047:13:10"},"nodeType":"ModifierInvocation","src":"14047:13:10"}],"name":"depositAndRevert","nameLocation":"13861:16:10","parameters":{"id":3397,"nodeType":"ParameterList","parameters":[{"constant":false,"id":3389,"mutability":"mutable","name":"zrc20","nameLocation":"13895:5:10","nodeType":"VariableDeclaration","scope":3461,"src":"13887:13:10","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":3388,"name":"address","nodeType":"ElementaryTypeName","src":"13887:7:10","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":3391,"mutability":"mutable","name":"amount","nameLocation":"13918:6:10","nodeType":"VariableDeclaration","scope":3461,"src":"13910:14:10","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":3390,"name":"uint256","nodeType":"ElementaryTypeName","src":"13910:7:10","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":3393,"mutability":"mutable","name":"target","nameLocation":"13942:6:10","nodeType":"VariableDeclaration","scope":3461,"src":"13934:14:10","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":3392,"name":"address","nodeType":"ElementaryTypeName","src":"13934:7:10","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":3396,"mutability":"mutable","name":"revertContext","nameLocation":"13981:13:10","nodeType":"VariableDeclaration","scope":3461,"src":"13958:36:10","stateVariable":false,"storageLocation":"calldata","typeDescriptions":{"typeIdentifier":"t_struct$_RevertContext_$21_calldata_ptr","typeString":"struct RevertContext"},"typeName":{"id":3395,"nodeType":"UserDefinedTypeName","pathNode":{"id":3394,"name":"RevertContext","nameLocations":["13958:13:10"],"nodeType":"IdentifierPath","referencedDeclaration":21,"src":"13958:13:10"},"referencedDeclaration":21,"src":"13958:13:10","typeDescriptions":{"typeIdentifier":"t_struct$_RevertContext_$21_storage_ptr","typeString":"struct RevertContext"}},"visibility":"internal"}],"src":"13877:123:10"},"returnParameters":{"id":3402,"nodeType":"ParameterList","parameters":[],"src":"14065:0:10"},"scope":3462,"stateMutability":"nonpayable","virtual":false,"visibility":"external"}],"abstract":false,"baseContracts":[{"baseName":{"id":2494,"name":"IGatewayZEVM","nameLocations":["986:12:10"],"nodeType":"IdentifierPath","referencedDeclaration":4578,"src":"986:12:10"},"id":2495,"nodeType":"InheritanceSpecifier","src":"986:12:10"},{"baseName":{"id":2496,"name":"Initializable","nameLocations":["1004:13:10"],"nodeType":"IdentifierPath","referencedDeclaration":44489,"src":"1004:13:10"},"id":2497,"nodeType":"InheritanceSpecifier","src":"1004:13:10"},{"baseName":{"id":2498,"name":"AccessControlUpgradeable","nameLocations":["1023:24:10"],"nodeType":"IdentifierPath","referencedDeclaration":44235,"src":"1023:24:10"},"id":2499,"nodeType":"InheritanceSpecifier","src":"1023:24:10"},{"baseName":{"id":2500,"name":"UUPSUpgradeable","nameLocations":["1053:15:10"],"nodeType":"IdentifierPath","referencedDeclaration":44671,"src":"1053:15:10"},"id":2501,"nodeType":"InheritanceSpecifier","src":"1053:15:10"},{"baseName":{"id":2502,"name":"ReentrancyGuardUpgradeable","nameLocations":["1074:26:10"],"nodeType":"IdentifierPath","referencedDeclaration":45022,"src":"1074:26:10"},"id":2503,"nodeType":"InheritanceSpecifier","src":"1074:26:10"},{"baseName":{"id":2504,"name":"PausableUpgradeable","nameLocations":["1106:19:10"],"nodeType":"IdentifierPath","referencedDeclaration":44893,"src":"1106:19:10"},"id":2505,"nodeType":"InheritanceSpecifier","src":"1106:19:10"}],"canonicalName":"GatewayZEVM","contractDependencies":[],"contractKind":"contract","documentation":{"id":2493,"nodeType":"StructuredDocumentation","src":"758:200:10","text":"@title GatewayZEVM\n @notice The GatewayZEVM contract is the endpoint to call smart contracts on omnichain.\n @dev The contract doesn't hold any funds and should never have active allowances."},"fullyImplemented":true,"linearizedBaseContracts":[3462,44893,45022,44671,45620,44235,45062,48334,45441,44717,44489,4578,4386,4424],"name":"GatewayZEVM","nameLocation":"967:11:10","scope":3463,"usedErrors":[2508,4390,4393,4396,4399,4402,4405,4408,4411,4414,4417,4420,4423,44252,44255,44516,44521,44756,44759,44924,45368,45371,45830,45843,47477,47480],"usedEvents":[4361,4385,44260,44748,44753,45380,45389,45398,45809]}],"license":"MIT"},"id":10} \ No newline at end of file diff --git a/packages/client/src/abi/ZRC20.sol/ZRC20.json b/packages/client/src/abi/ZRC20.sol/ZRC20.json deleted file mode 100644 index 50900b98..00000000 --- a/packages/client/src/abi/ZRC20.sol/ZRC20.json +++ /dev/null @@ -1 +0,0 @@ -{"abi":[{"type":"constructor","inputs":[{"name":"name_","type":"string","internalType":"string"},{"name":"symbol_","type":"string","internalType":"string"},{"name":"decimals_","type":"uint8","internalType":"uint8"},{"name":"chainid_","type":"uint256","internalType":"uint256"},{"name":"coinType_","type":"uint8","internalType":"enum CoinType"},{"name":"gasLimit_","type":"uint256","internalType":"uint256"},{"name":"systemContractAddress_","type":"address","internalType":"address"},{"name":"gatewayAddress_","type":"address","internalType":"address"}],"stateMutability":"nonpayable"},{"type":"function","name":"CHAIN_ID","inputs":[],"outputs":[{"name":"","type":"uint256","internalType":"uint256"}],"stateMutability":"view"},{"type":"function","name":"COIN_TYPE","inputs":[],"outputs":[{"name":"","type":"uint8","internalType":"enum CoinType"}],"stateMutability":"view"},{"type":"function","name":"FUNGIBLE_MODULE_ADDRESS","inputs":[],"outputs":[{"name":"","type":"address","internalType":"address"}],"stateMutability":"view"},{"type":"function","name":"GAS_LIMIT","inputs":[],"outputs":[{"name":"","type":"uint256","internalType":"uint256"}],"stateMutability":"view"},{"type":"function","name":"PROTOCOL_FLAT_FEE","inputs":[],"outputs":[{"name":"","type":"uint256","internalType":"uint256"}],"stateMutability":"view"},{"type":"function","name":"SYSTEM_CONTRACT_ADDRESS","inputs":[],"outputs":[{"name":"","type":"address","internalType":"address"}],"stateMutability":"view"},{"type":"function","name":"allowance","inputs":[{"name":"owner","type":"address","internalType":"address"},{"name":"spender","type":"address","internalType":"address"}],"outputs":[{"name":"","type":"uint256","internalType":"uint256"}],"stateMutability":"view"},{"type":"function","name":"approve","inputs":[{"name":"spender","type":"address","internalType":"address"},{"name":"amount","type":"uint256","internalType":"uint256"}],"outputs":[{"name":"","type":"bool","internalType":"bool"}],"stateMutability":"nonpayable"},{"type":"function","name":"balanceOf","inputs":[{"name":"account","type":"address","internalType":"address"}],"outputs":[{"name":"","type":"uint256","internalType":"uint256"}],"stateMutability":"view"},{"type":"function","name":"burn","inputs":[{"name":"amount","type":"uint256","internalType":"uint256"}],"outputs":[{"name":"","type":"bool","internalType":"bool"}],"stateMutability":"nonpayable"},{"type":"function","name":"decimals","inputs":[],"outputs":[{"name":"","type":"uint8","internalType":"uint8"}],"stateMutability":"view"},{"type":"function","name":"deposit","inputs":[{"name":"to","type":"address","internalType":"address"},{"name":"amount","type":"uint256","internalType":"uint256"}],"outputs":[{"name":"","type":"bool","internalType":"bool"}],"stateMutability":"nonpayable"},{"type":"function","name":"gatewayAddress","inputs":[],"outputs":[{"name":"","type":"address","internalType":"address"}],"stateMutability":"view"},{"type":"function","name":"name","inputs":[],"outputs":[{"name":"","type":"string","internalType":"string"}],"stateMutability":"view"},{"type":"function","name":"setName","inputs":[{"name":"newName","type":"string","internalType":"string"}],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"setSymbol","inputs":[{"name":"newSymbol","type":"string","internalType":"string"}],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"symbol","inputs":[],"outputs":[{"name":"","type":"string","internalType":"string"}],"stateMutability":"view"},{"type":"function","name":"totalSupply","inputs":[],"outputs":[{"name":"","type":"uint256","internalType":"uint256"}],"stateMutability":"view"},{"type":"function","name":"transfer","inputs":[{"name":"recipient","type":"address","internalType":"address"},{"name":"amount","type":"uint256","internalType":"uint256"}],"outputs":[{"name":"","type":"bool","internalType":"bool"}],"stateMutability":"nonpayable"},{"type":"function","name":"transferFrom","inputs":[{"name":"sender","type":"address","internalType":"address"},{"name":"recipient","type":"address","internalType":"address"},{"name":"amount","type":"uint256","internalType":"uint256"}],"outputs":[{"name":"","type":"bool","internalType":"bool"}],"stateMutability":"nonpayable"},{"type":"function","name":"updateGasLimit","inputs":[{"name":"gasLimit_","type":"uint256","internalType":"uint256"}],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"updateGatewayAddress","inputs":[{"name":"addr","type":"address","internalType":"address"}],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"updateProtocolFlatFee","inputs":[{"name":"protocolFlatFee_","type":"uint256","internalType":"uint256"}],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"updateSystemContractAddress","inputs":[{"name":"addr","type":"address","internalType":"address"}],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"withdraw","inputs":[{"name":"to","type":"bytes","internalType":"bytes"},{"name":"amount","type":"uint256","internalType":"uint256"}],"outputs":[{"name":"","type":"bool","internalType":"bool"}],"stateMutability":"nonpayable"},{"type":"function","name":"withdrawGasFee","inputs":[],"outputs":[{"name":"","type":"address","internalType":"address"},{"name":"","type":"uint256","internalType":"uint256"}],"stateMutability":"view"},{"type":"function","name":"withdrawGasFeeWithGasLimit","inputs":[{"name":"gasLimit","type":"uint256","internalType":"uint256"}],"outputs":[{"name":"","type":"address","internalType":"address"},{"name":"","type":"uint256","internalType":"uint256"}],"stateMutability":"view"},{"type":"event","name":"Approval","inputs":[{"name":"owner","type":"address","indexed":true,"internalType":"address"},{"name":"spender","type":"address","indexed":true,"internalType":"address"},{"name":"value","type":"uint256","indexed":false,"internalType":"uint256"}],"anonymous":false},{"type":"event","name":"Deposit","inputs":[{"name":"from","type":"bytes","indexed":false,"internalType":"bytes"},{"name":"to","type":"address","indexed":true,"internalType":"address"},{"name":"value","type":"uint256","indexed":false,"internalType":"uint256"}],"anonymous":false},{"type":"event","name":"Transfer","inputs":[{"name":"from","type":"address","indexed":true,"internalType":"address"},{"name":"to","type":"address","indexed":true,"internalType":"address"},{"name":"value","type":"uint256","indexed":false,"internalType":"uint256"}],"anonymous":false},{"type":"event","name":"UpdatedGasLimit","inputs":[{"name":"gasLimit","type":"uint256","indexed":false,"internalType":"uint256"}],"anonymous":false},{"type":"event","name":"UpdatedGateway","inputs":[{"name":"gateway","type":"address","indexed":false,"internalType":"address"}],"anonymous":false},{"type":"event","name":"UpdatedProtocolFlatFee","inputs":[{"name":"protocolFlatFee","type":"uint256","indexed":false,"internalType":"uint256"}],"anonymous":false},{"type":"event","name":"UpdatedSystemContract","inputs":[{"name":"systemContract","type":"address","indexed":false,"internalType":"address"}],"anonymous":false},{"type":"event","name":"Withdrawal","inputs":[{"name":"from","type":"address","indexed":true,"internalType":"address"},{"name":"to","type":"bytes","indexed":false,"internalType":"bytes"},{"name":"value","type":"uint256","indexed":false,"internalType":"uint256"},{"name":"gasFee","type":"uint256","indexed":false,"internalType":"uint256"},{"name":"protocolFlatFee","type":"uint256","indexed":false,"internalType":"uint256"}],"anonymous":false},{"type":"error","name":"CallerIsNotFungibleModule","inputs":[]},{"type":"error","name":"GasFeeTransferFailed","inputs":[]},{"type":"error","name":"InvalidSender","inputs":[]},{"type":"error","name":"LowAllowance","inputs":[]},{"type":"error","name":"LowBalance","inputs":[]},{"type":"error","name":"ZeroAddress","inputs":[]},{"type":"error","name":"ZeroGasCoin","inputs":[]},{"type":"error","name":"ZeroGasPrice","inputs":[]}],"bytecode":{"object":"0x60c060405234801561001057600080fd5b506040516120a63803806120a683398101604081905261002f91610224565b3373735b14bb79463307aacbed86daf3322b1e6226ab1461006357604051632b2add3d60e01b815260040160405180910390fd5b6001600160a01b038216158061008057506001600160a01b038116155b1561009e5760405163d92e233d60e01b815260040160405180910390fd5b60066100aa8982610376565b5060076100b78882610376565b506008805460ff191660ff881617905560808590528360028111156100de576100de610434565b60a08160028111156100f2576100f2610434565b905250600192909255600080546001600160a01b039283166001600160a01b0319909116179055600880549190921661010002610100600160a81b03199091161790555061044a9350505050565b634e487b7160e01b600052604160045260246000fd5b600082601f83011261016757600080fd5b81516001600160401b0381111561018057610180610140565b604051601f8201601f19908116603f011681016001600160401b03811182821017156101ae576101ae610140565b6040528181528382016020018510156101c657600080fd5b60005b828110156101e5576020818601810151838301820152016101c9565b506000918101602001919091529392505050565b80516003811061020857600080fd5b919050565b80516001600160a01b038116811461020857600080fd5b600080600080600080600080610100898b03121561024157600080fd5b88516001600160401b0381111561025757600080fd5b6102638b828c01610156565b60208b015190995090506001600160401b0381111561028157600080fd5b61028d8b828c01610156565b975050604089015160ff811681146102a457600080fd5b60608a015190965094506102ba60808a016101f9565b60a08a015190945092506102d060c08a0161020d565b91506102de60e08a0161020d565b90509295985092959890939650565b600181811c9082168061030157607f821691505b60208210810361032157634e487b7160e01b600052602260045260246000fd5b50919050565b601f82111561037157806000526020600020601f840160051c8101602085101561034e5750805b601f840160051c820191505b8181101561036e576000815560010161035a565b50505b505050565b81516001600160401b0381111561038f5761038f610140565b6103a38161039d84546102ed565b84610327565b6020601f8211600181146103d757600083156103bf5750848201515b600019600385901b1c1916600184901b17845561036e565b600084815260208120601f198516915b8281101561040757878501518255602094850194600190920191016103e7565b50848210156104255786840151600019600387901b60f8161c191681555b50505050600190811b01905550565b634e487b7160e01b600052602160045260246000fd5b60805160a051611c1b61048b60003960006103440152600081816102f001528181610bdc01528181610ce201528181610efe01526110040152611c1b6000f3fe608060405234801561001057600080fd5b50600436106101b95760003560e01c806395d89b41116100f9578063ccc7759911610097578063eddeb12311610071578063eddeb12314610461578063f2441b3214610474578063f687d12a14610494578063fc5fecd5146104a757600080fd5b8063ccc77599146103d4578063d9eeebed146103e7578063dd62ed3e1461041b57600080fd5b8063b84c8246116100d3578063b84c824614610386578063c47f00271461039b578063c7012626146103ae578063c835d7cc146103c157600080fd5b806395d89b4114610337578063a3413d031461033f578063a9059cbb1461037357600080fd5b80633ce4a5bc116101665780634d8943bb116101405780634d8943bb146102ac57806370a08231146102b557806385e1f4d0146102eb5780638b851b951461031257600080fd5b80633ce4a5bc1461024657806342966c681461028657806347e7ef241461029957600080fd5b806318160ddd1161019757806318160ddd1461021657806323b872dd1461021e578063313ce5671461023157600080fd5b806306fdde03146101be578063091d2788146101dc578063095ea7b3146101f3575b600080fd5b6101c66104ba565b6040516101d39190611648565b60405180910390f35b6101e560015481565b6040519081526020016101d3565b610206610201366004611687565b61054c565b60405190151581526020016101d3565b6005546101e5565b61020661022c3660046116b3565b610563565b60085460405160ff90911681526020016101d3565b61026173735b14bb79463307aacbed86daf3322b1e6226ab81565b60405173ffffffffffffffffffffffffffffffffffffffff90911681526020016101d3565b6102066102943660046116f4565b6105fa565b6102066102a7366004611687565b61060e565b6101e560025481565b6101e56102c336600461170d565b73ffffffffffffffffffffffffffffffffffffffff1660009081526003602052604090205490565b6101e57f000000000000000000000000000000000000000000000000000000000000000081565b60085461026190610100900473ffffffffffffffffffffffffffffffffffffffff1681565b6101c6610767565b6103667f000000000000000000000000000000000000000000000000000000000000000081565b6040516101d3919061172a565b610206610381366004611687565b610776565b610399610394366004611832565b610783565b005b6103996103a9366004611832565b6107e0565b6102066103bc366004611883565b610839565b6103996103cf36600461170d565b610988565b6103996103e236600461170d565b610a9c565b6103ef610bb0565b6040805173ffffffffffffffffffffffffffffffffffffffff90931683526020830191909152016101d3565b6101e56104293660046118dc565b73ffffffffffffffffffffffffffffffffffffffff918216600090815260046020908152604080832093909416825291909152205490565b61039961046f3660046116f4565b610dce565b6000546102619073ffffffffffffffffffffffffffffffffffffffff1681565b6103996104a23660046116f4565b610e50565b6103ef6104b53660046116f4565b610ed2565b6060600680546104c990611915565b80601f01602080910402602001604051908101604052809291908181526020018280546104f590611915565b80156105425780601f1061051757610100808354040283529160200191610542565b820191906000526020600020905b81548152906001019060200180831161052557829003601f168201915b5050505050905090565b60006105593384846110ee565b5060015b92915050565b60006105708484846111f7565b73ffffffffffffffffffffffffffffffffffffffff84166000908152600460209081526040808320338452909152902054828110156105db576040517f10bad14700000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6105ef85336105ea8685611997565b6110ee565b506001949350505050565b600061060633836113b2565b506001919050565b60003373735b14bb79463307aacbed86daf3322b1e6226ab1480159061064c575060005473ffffffffffffffffffffffffffffffffffffffff163314155b80156106755750600854610100900473ffffffffffffffffffffffffffffffffffffffff163314155b156106ac576040517fddb5de5e00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6106b683836114f4565b6040517f735b14bb79463307aacbed86daf3322b1e6226ab000000000000000000000000602082015273ffffffffffffffffffffffffffffffffffffffff8416907f67fc7bdaed5b0ec550d8706b87d60568ab70c6b781263c70101d54cd1564aab390603401604080517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0818403018152908290526107569186906119aa565b60405180910390a250600192915050565b6060600780546104c990611915565b60006105593384846111f7565b3373735b14bb79463307aacbed86daf3322b1e6226ab146107d0576040517f2b2add3d00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b60076107dc8282611a1b565b5050565b3373735b14bb79463307aacbed86daf3322b1e6226ab1461082d576040517f2b2add3d00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b60066107dc8282611a1b565b6000806000610846610bb0565b6040517f23b872dd00000000000000000000000000000000000000000000000000000000815233600482015273735b14bb79463307aacbed86daf3322b1e6226ab602482015260448101829052919350915073ffffffffffffffffffffffffffffffffffffffff8316906323b872dd906064016020604051808303816000875af11580156108d8573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906108fc9190611b34565b610932576040517f0a7cd6d600000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b61093c33856113b2565b60025460405133917f9ffbffc04a397460ee1dbe8c9503e098090567d6b7f4b3c02a8617d800b6d9559161097591899189918791611b56565b60405180910390a2506001949350505050565b3373735b14bb79463307aacbed86daf3322b1e6226ab146109d5576040517f2b2add3d00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b73ffffffffffffffffffffffffffffffffffffffff8116610a22576040517fd92e233d00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b600080547fffffffffffffffffffffffff00000000000000000000000000000000000000001673ffffffffffffffffffffffffffffffffffffffff83169081179091556040519081527fd55614e962c5fd6ece71614f6348d702468a997a394dd5e5c1677950226d97ae906020015b60405180910390a150565b3373735b14bb79463307aacbed86daf3322b1e6226ab14610ae9576040517f2b2add3d00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b73ffffffffffffffffffffffffffffffffffffffff8116610b36576040517fd92e233d00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b600880547fffffffffffffffffffffff0000000000000000000000000000000000000000ff1661010073ffffffffffffffffffffffffffffffffffffffff8416908102919091179091556040519081527f88815d964e380677e86d817e7d65dea59cb7b4c3b5b7a0c8ec7ea4a74f90a38790602001610a91565b600080546040517f0be155470000000000000000000000000000000000000000000000000000000081527f000000000000000000000000000000000000000000000000000000000000000060048201528291829173ffffffffffffffffffffffffffffffffffffffff90911690630be1554790602401602060405180830381865afa158015610c43573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610c679190611b85565b905073ffffffffffffffffffffffffffffffffffffffff8116610cb6576040517f78fff39600000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b600080546040517fd7fd7afb0000000000000000000000000000000000000000000000000000000081527f0000000000000000000000000000000000000000000000000000000000000000600482015273ffffffffffffffffffffffffffffffffffffffff9091169063d7fd7afb90602401602060405180830381865afa158015610d45573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610d699190611ba2565b905080600003610da5576040517fe661aed000000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b600060025460015483610db89190611bbb565b610dc29190611bd2565b92959294509192505050565b3373735b14bb79463307aacbed86daf3322b1e6226ab14610e1b576040517f2b2add3d00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b60028190556040518181527fef13af88e424b5d15f49c77758542c1938b08b8b95b91ed0751f98ba99000d8f90602001610a91565b3373735b14bb79463307aacbed86daf3322b1e6226ab14610e9d576040517f2b2add3d00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b60018190556040518181527fff5788270f43bfc1ca41c503606d2594aa3023a1a7547de403a3e2f146a4a80a90602001610a91565b600080546040517f0be155470000000000000000000000000000000000000000000000000000000081527f000000000000000000000000000000000000000000000000000000000000000060048201528291829173ffffffffffffffffffffffffffffffffffffffff90911690630be1554790602401602060405180830381865afa158015610f65573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610f899190611b85565b905073ffffffffffffffffffffffffffffffffffffffff8116610fd8576040517f78fff39600000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b600080546040517fd7fd7afb0000000000000000000000000000000000000000000000000000000081527f0000000000000000000000000000000000000000000000000000000000000000600482015273ffffffffffffffffffffffffffffffffffffffff9091169063d7fd7afb90602401602060405180830381865afa158015611067573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061108b9190611ba2565b9050806000036110c7576040517fe661aed000000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6002546000906110d78784611bbb565b6110e19190611bd2565b9296929550919350505050565b73ffffffffffffffffffffffffffffffffffffffff831661113b576040517fd92e233d00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b73ffffffffffffffffffffffffffffffffffffffff8216611188576040517fd92e233d00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b73ffffffffffffffffffffffffffffffffffffffff83811660008181526004602090815260408083209487168084529482529182902085905590518481527f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b92591015b60405180910390a3505050565b73ffffffffffffffffffffffffffffffffffffffff8316611244576040517fd92e233d00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b73ffffffffffffffffffffffffffffffffffffffff8216611291576040517fd92e233d00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b73ffffffffffffffffffffffffffffffffffffffff8316600090815260036020526040902054818110156112f1576040517ffe382aa700000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6112fb8282611997565b73ffffffffffffffffffffffffffffffffffffffff808616600090815260036020526040808220939093559085168152908120805484929061133e908490611bd2565b925050819055508273ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef846040516113a491815260200190565b60405180910390a350505050565b73ffffffffffffffffffffffffffffffffffffffff82166113ff576040517fd92e233d00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b73ffffffffffffffffffffffffffffffffffffffff82166000908152600360205260409020548181101561145f576040517ffe382aa700000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6114698282611997565b73ffffffffffffffffffffffffffffffffffffffff8416600090815260036020526040812091909155600580548492906114a4908490611997565b909155505060405182815260009073ffffffffffffffffffffffffffffffffffffffff8516907fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef906020016111ea565b73ffffffffffffffffffffffffffffffffffffffff8216611541576040517fd92e233d00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b80600560008282546115539190611bd2565b909155505073ffffffffffffffffffffffffffffffffffffffff82166000908152600360205260408120805483929061158d908490611bd2565b909155505060405181815273ffffffffffffffffffffffffffffffffffffffff8316906000907fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef9060200160405180910390a35050565b6000815180845260005b8181101561160a576020818501810151868301820152016115ee565b5060006020828601015260207fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0601f83011685010191505092915050565b60208152600061165b60208301846115e4565b9392505050565b73ffffffffffffffffffffffffffffffffffffffff8116811461168457600080fd5b50565b6000806040838503121561169a57600080fd5b82356116a581611662565b946020939093013593505050565b6000806000606084860312156116c857600080fd5b83356116d381611662565b925060208401356116e381611662565b929592945050506040919091013590565b60006020828403121561170657600080fd5b5035919050565b60006020828403121561171f57600080fd5b813561165b81611662565b6020810160038310611765577f4e487b7100000000000000000000000000000000000000000000000000000000600052602160045260246000fd5b91905290565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b60008067ffffffffffffffff8411156117b5576117b561176b565b506040517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0601f85018116603f0116810181811067ffffffffffffffff821117156118025761180261176b565b60405283815290508082840185101561181a57600080fd5b83836020830137600060208583010152509392505050565b60006020828403121561184457600080fd5b813567ffffffffffffffff81111561185b57600080fd5b8201601f8101841361186c57600080fd5b61187b8482356020840161179a565b949350505050565b6000806040838503121561189657600080fd5b823567ffffffffffffffff8111156118ad57600080fd5b8301601f810185136118be57600080fd5b6118cd8582356020840161179a565b95602094909401359450505050565b600080604083850312156118ef57600080fd5b82356118fa81611662565b9150602083013561190a81611662565b809150509250929050565b600181811c9082168061192957607f821691505b602082108103611962577f4e487b7100000000000000000000000000000000000000000000000000000000600052602260045260246000fd5b50919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b8181038181111561055d5761055d611968565b6040815260006119bd60408301856115e4565b90508260208301529392505050565b601f821115611a1657806000526020600020601f840160051c810160208510156119f35750805b601f840160051c820191505b81811015611a1357600081556001016119ff565b50505b505050565b815167ffffffffffffffff811115611a3557611a3561176b565b611a4981611a438454611915565b846119cc565b6020601f821160018114611a9b5760008315611a655750848201515b7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff600385901b1c1916600184901b178455611a13565b6000848152602081207fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe08516915b82811015611ae95787850151825560209485019460019092019101611ac9565b5084821015611b2557868401517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff600387901b60f8161c191681555b50505050600190811b01905550565b600060208284031215611b4657600080fd5b8151801515811461165b57600080fd5b608081526000611b6960808301876115e4565b6020830195909552506040810192909252606090910152919050565b600060208284031215611b9757600080fd5b815161165b81611662565b600060208284031215611bb457600080fd5b5051919050565b808202811582820484141761055d5761055d611968565b8082018082111561055d5761055d61196856fea26469706673582212206ca0b4ba92c818c2268a96a059d56787769a64b137c4c1fa704309dae852329a64736f6c634300081a0033","sourceMap":"704:11440:11:-:0;;;2380:728;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;2651:10;905:42;2651:37;2647:77;;2697:27;;-1:-1:-1;;;2697:27:11;;;;;;;;;;;2647:77;-1:-1:-1;;;;;2738:36:11;;;;:69;;-1:-1:-1;;;;;;2778:29:11;;;2738:69;2734:95;;;2816:13;;-1:-1:-1;;;2816:13:11;;;;;;;;;;;2734:95;2839:5;:13;2847:5;2839;:13;:::i;:::-;-1:-1:-1;2862:7:11;:17;2872:7;2862;:17;:::i;:::-;-1:-1:-1;2889:9:11;:21;;-1:-1:-1;;2889:21:11;;;;;;;2920:19;;;;2961:9;2949:21;;;;;;;;:::i;:::-;;;;;;;;;;;:::i;:::-;;;-1:-1:-1;2980:9:11;:21;;;;3011:23;:48;;-1:-1:-1;;;;;3011:48:11;;;-1:-1:-1;;;;;;3011:48:11;;;;;;3069:14;:32;;;;;;3011:48;3069:32;-1:-1:-1;;;;;;3069:32:11;;;;;;-1:-1:-1;704:11440:11;;-1:-1:-1;;;;704:11440:11;14:127:108;75:10;70:3;66:20;63:1;56:31;106:4;103:1;96:15;130:4;127:1;120:15;146:834;200:5;253:3;246:4;238:6;234:17;230:27;220:55;;271:1;268;261:12;220:55;298:13;;-1:-1:-1;;;;;323:30:108;;320:56;;;356:18;;:::i;:::-;405:2;399:9;497:2;459:17;;-1:-1:-1;;455:31:108;;;488:2;451:40;447:54;435:67;;-1:-1:-1;;;;;517:34:108;;553:22;;;514:62;511:88;;;579:18;;:::i;:::-;615:2;608:22;639;;;680:19;;;701:4;676:30;673:39;-1:-1:-1;670:59:108;;;725:1;722;715:12;670:59;747:1;757:143;771:6;768:1;765:13;757:143;;;883:4;867:14;;;863:25;;857:32;834:14;;;830:25;;823:67;786:12;757:143;;;-1:-1:-1;948:1:108;920:19;;;941:4;916:30;909:41;;;;924:6;146:834;-1:-1:-1;;;146:834:108:o;985:153::-;1070:13;;1112:1;1102:12;;1092:40;;1128:1;1125;1118:12;1092:40;985:153;;;:::o;1143:177::-;1222:13;;-1:-1:-1;;;;;1264:31:108;;1254:42;;1244:70;;1310:1;1307;1300:12;1325:1212;1489:6;1497;1505;1513;1521;1529;1537;1545;1598:3;1586:9;1577:7;1573:23;1569:33;1566:53;;;1615:1;1612;1605:12;1566:53;1642:16;;-1:-1:-1;;;;;1670:30:108;;1667:50;;;1713:1;1710;1703:12;1667:50;1736:61;1789:7;1780:6;1769:9;1765:22;1736:61;:::i;:::-;1843:2;1828:18;;1822:25;1726:71;;-1:-1:-1;1822:25:108;-1:-1:-1;;;;;;1859:32:108;;1856:52;;;1904:1;1901;1894:12;1856:52;1927:63;1982:7;1971:8;1960:9;1956:24;1927:63;:::i;:::-;1917:73;;;2033:2;2022:9;2018:18;2012:25;2077:4;2070:5;2066:16;2059:5;2056:27;2046:55;;2097:1;2094;2087:12;2046:55;2191:2;2176:18;;2170:25;2120:5;;-1:-1:-1;2170:25:108;-1:-1:-1;2240:56:108;2291:3;2276:19;;2240:56;:::i;:::-;2362:3;2347:19;;2341:26;2230:66;;-1:-1:-1;2341:26:108;-1:-1:-1;2412:50:108;2457:3;2442:19;;2412:50;:::i;:::-;2402:60;;2481:50;2526:3;2515:9;2511:19;2481:50;:::i;:::-;2471:60;;1325:1212;;;;;;;;;;;:::o;2542:380::-;2621:1;2617:12;;;;2664;;;2685:61;;2739:4;2731:6;2727:17;2717:27;;2685:61;2792:2;2784:6;2781:14;2761:18;2758:38;2755:161;;2838:10;2833:3;2829:20;2826:1;2819:31;2873:4;2870:1;2863:15;2901:4;2898:1;2891:15;2755:161;;2542:380;;;:::o;3053:518::-;3155:2;3150:3;3147:11;3144:421;;;3191:5;3188:1;3181:16;3235:4;3232:1;3222:18;3305:2;3293:10;3289:19;3286:1;3282:27;3276:4;3272:38;3341:4;3329:10;3326:20;3323:47;;;-1:-1:-1;3364:4:108;3323:47;3419:2;3414:3;3410:12;3407:1;3403:20;3397:4;3393:31;3383:41;;3474:81;3492:2;3485:5;3482:13;3474:81;;;3551:1;3537:16;;3518:1;3507:13;3474:81;;;3478:3;;3144:421;3053:518;;;:::o;3747:1299::-;3867:10;;-1:-1:-1;;;;;3889:30:108;;3886:56;;;3922:18;;:::i;:::-;3951:97;4041:6;4001:38;4033:4;4027:11;4001:38;:::i;:::-;3995:4;3951:97;:::i;:::-;4097:4;4128:2;4117:14;;4145:1;4140:649;;;;4833:1;4850:6;4847:89;;;-1:-1:-1;4902:19:108;;;4896:26;4847:89;-1:-1:-1;;3704:1:108;3700:11;;;3696:24;3692:29;3682:40;3728:1;3724:11;;;3679:57;4949:81;;4110:930;;4140:649;3000:1;2993:14;;;3037:4;3024:18;;-1:-1:-1;;4176:20:108;;;4294:222;4308:7;4305:1;4302:14;4294:222;;;4390:19;;;4384:26;4369:42;;4497:4;4482:20;;;;4450:1;4438:14;;;;4324:12;4294:222;;;4298:3;4544:6;4535:7;4532:19;4529:201;;;4605:19;;;4599:26;-1:-1:-1;;4688:1:108;4684:14;;;4700:3;4680:24;4676:37;4672:42;4657:58;4642:74;;4529:201;-1:-1:-1;;;;4776:1:108;4760:14;;;4756:22;4743:36;;-1:-1:-1;3747:1299:108:o;5051:127::-;5112:10;5107:3;5103:20;5100:1;5093:31;5143:4;5140:1;5133:15;5167:4;5164:1;5157:15;5051:127;704:11440:11;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;","linkReferences":{}},"deployedBytecode":{"object":"0x608060405234801561001057600080fd5b50600436106101b95760003560e01c806395d89b41116100f9578063ccc7759911610097578063eddeb12311610071578063eddeb12314610461578063f2441b3214610474578063f687d12a14610494578063fc5fecd5146104a757600080fd5b8063ccc77599146103d4578063d9eeebed146103e7578063dd62ed3e1461041b57600080fd5b8063b84c8246116100d3578063b84c824614610386578063c47f00271461039b578063c7012626146103ae578063c835d7cc146103c157600080fd5b806395d89b4114610337578063a3413d031461033f578063a9059cbb1461037357600080fd5b80633ce4a5bc116101665780634d8943bb116101405780634d8943bb146102ac57806370a08231146102b557806385e1f4d0146102eb5780638b851b951461031257600080fd5b80633ce4a5bc1461024657806342966c681461028657806347e7ef241461029957600080fd5b806318160ddd1161019757806318160ddd1461021657806323b872dd1461021e578063313ce5671461023157600080fd5b806306fdde03146101be578063091d2788146101dc578063095ea7b3146101f3575b600080fd5b6101c66104ba565b6040516101d39190611648565b60405180910390f35b6101e560015481565b6040519081526020016101d3565b610206610201366004611687565b61054c565b60405190151581526020016101d3565b6005546101e5565b61020661022c3660046116b3565b610563565b60085460405160ff90911681526020016101d3565b61026173735b14bb79463307aacbed86daf3322b1e6226ab81565b60405173ffffffffffffffffffffffffffffffffffffffff90911681526020016101d3565b6102066102943660046116f4565b6105fa565b6102066102a7366004611687565b61060e565b6101e560025481565b6101e56102c336600461170d565b73ffffffffffffffffffffffffffffffffffffffff1660009081526003602052604090205490565b6101e57f000000000000000000000000000000000000000000000000000000000000000081565b60085461026190610100900473ffffffffffffffffffffffffffffffffffffffff1681565b6101c6610767565b6103667f000000000000000000000000000000000000000000000000000000000000000081565b6040516101d3919061172a565b610206610381366004611687565b610776565b610399610394366004611832565b610783565b005b6103996103a9366004611832565b6107e0565b6102066103bc366004611883565b610839565b6103996103cf36600461170d565b610988565b6103996103e236600461170d565b610a9c565b6103ef610bb0565b6040805173ffffffffffffffffffffffffffffffffffffffff90931683526020830191909152016101d3565b6101e56104293660046118dc565b73ffffffffffffffffffffffffffffffffffffffff918216600090815260046020908152604080832093909416825291909152205490565b61039961046f3660046116f4565b610dce565b6000546102619073ffffffffffffffffffffffffffffffffffffffff1681565b6103996104a23660046116f4565b610e50565b6103ef6104b53660046116f4565b610ed2565b6060600680546104c990611915565b80601f01602080910402602001604051908101604052809291908181526020018280546104f590611915565b80156105425780601f1061051757610100808354040283529160200191610542565b820191906000526020600020905b81548152906001019060200180831161052557829003601f168201915b5050505050905090565b60006105593384846110ee565b5060015b92915050565b60006105708484846111f7565b73ffffffffffffffffffffffffffffffffffffffff84166000908152600460209081526040808320338452909152902054828110156105db576040517f10bad14700000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6105ef85336105ea8685611997565b6110ee565b506001949350505050565b600061060633836113b2565b506001919050565b60003373735b14bb79463307aacbed86daf3322b1e6226ab1480159061064c575060005473ffffffffffffffffffffffffffffffffffffffff163314155b80156106755750600854610100900473ffffffffffffffffffffffffffffffffffffffff163314155b156106ac576040517fddb5de5e00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6106b683836114f4565b6040517f735b14bb79463307aacbed86daf3322b1e6226ab000000000000000000000000602082015273ffffffffffffffffffffffffffffffffffffffff8416907f67fc7bdaed5b0ec550d8706b87d60568ab70c6b781263c70101d54cd1564aab390603401604080517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0818403018152908290526107569186906119aa565b60405180910390a250600192915050565b6060600780546104c990611915565b60006105593384846111f7565b3373735b14bb79463307aacbed86daf3322b1e6226ab146107d0576040517f2b2add3d00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b60076107dc8282611a1b565b5050565b3373735b14bb79463307aacbed86daf3322b1e6226ab1461082d576040517f2b2add3d00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b60066107dc8282611a1b565b6000806000610846610bb0565b6040517f23b872dd00000000000000000000000000000000000000000000000000000000815233600482015273735b14bb79463307aacbed86daf3322b1e6226ab602482015260448101829052919350915073ffffffffffffffffffffffffffffffffffffffff8316906323b872dd906064016020604051808303816000875af11580156108d8573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906108fc9190611b34565b610932576040517f0a7cd6d600000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b61093c33856113b2565b60025460405133917f9ffbffc04a397460ee1dbe8c9503e098090567d6b7f4b3c02a8617d800b6d9559161097591899189918791611b56565b60405180910390a2506001949350505050565b3373735b14bb79463307aacbed86daf3322b1e6226ab146109d5576040517f2b2add3d00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b73ffffffffffffffffffffffffffffffffffffffff8116610a22576040517fd92e233d00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b600080547fffffffffffffffffffffffff00000000000000000000000000000000000000001673ffffffffffffffffffffffffffffffffffffffff83169081179091556040519081527fd55614e962c5fd6ece71614f6348d702468a997a394dd5e5c1677950226d97ae906020015b60405180910390a150565b3373735b14bb79463307aacbed86daf3322b1e6226ab14610ae9576040517f2b2add3d00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b73ffffffffffffffffffffffffffffffffffffffff8116610b36576040517fd92e233d00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b600880547fffffffffffffffffffffff0000000000000000000000000000000000000000ff1661010073ffffffffffffffffffffffffffffffffffffffff8416908102919091179091556040519081527f88815d964e380677e86d817e7d65dea59cb7b4c3b5b7a0c8ec7ea4a74f90a38790602001610a91565b600080546040517f0be155470000000000000000000000000000000000000000000000000000000081527f000000000000000000000000000000000000000000000000000000000000000060048201528291829173ffffffffffffffffffffffffffffffffffffffff90911690630be1554790602401602060405180830381865afa158015610c43573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610c679190611b85565b905073ffffffffffffffffffffffffffffffffffffffff8116610cb6576040517f78fff39600000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b600080546040517fd7fd7afb0000000000000000000000000000000000000000000000000000000081527f0000000000000000000000000000000000000000000000000000000000000000600482015273ffffffffffffffffffffffffffffffffffffffff9091169063d7fd7afb90602401602060405180830381865afa158015610d45573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610d699190611ba2565b905080600003610da5576040517fe661aed000000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b600060025460015483610db89190611bbb565b610dc29190611bd2565b92959294509192505050565b3373735b14bb79463307aacbed86daf3322b1e6226ab14610e1b576040517f2b2add3d00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b60028190556040518181527fef13af88e424b5d15f49c77758542c1938b08b8b95b91ed0751f98ba99000d8f90602001610a91565b3373735b14bb79463307aacbed86daf3322b1e6226ab14610e9d576040517f2b2add3d00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b60018190556040518181527fff5788270f43bfc1ca41c503606d2594aa3023a1a7547de403a3e2f146a4a80a90602001610a91565b600080546040517f0be155470000000000000000000000000000000000000000000000000000000081527f000000000000000000000000000000000000000000000000000000000000000060048201528291829173ffffffffffffffffffffffffffffffffffffffff90911690630be1554790602401602060405180830381865afa158015610f65573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610f899190611b85565b905073ffffffffffffffffffffffffffffffffffffffff8116610fd8576040517f78fff39600000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b600080546040517fd7fd7afb0000000000000000000000000000000000000000000000000000000081527f0000000000000000000000000000000000000000000000000000000000000000600482015273ffffffffffffffffffffffffffffffffffffffff9091169063d7fd7afb90602401602060405180830381865afa158015611067573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061108b9190611ba2565b9050806000036110c7576040517fe661aed000000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6002546000906110d78784611bbb565b6110e19190611bd2565b9296929550919350505050565b73ffffffffffffffffffffffffffffffffffffffff831661113b576040517fd92e233d00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b73ffffffffffffffffffffffffffffffffffffffff8216611188576040517fd92e233d00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b73ffffffffffffffffffffffffffffffffffffffff83811660008181526004602090815260408083209487168084529482529182902085905590518481527f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b92591015b60405180910390a3505050565b73ffffffffffffffffffffffffffffffffffffffff8316611244576040517fd92e233d00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b73ffffffffffffffffffffffffffffffffffffffff8216611291576040517fd92e233d00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b73ffffffffffffffffffffffffffffffffffffffff8316600090815260036020526040902054818110156112f1576040517ffe382aa700000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6112fb8282611997565b73ffffffffffffffffffffffffffffffffffffffff808616600090815260036020526040808220939093559085168152908120805484929061133e908490611bd2565b925050819055508273ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef846040516113a491815260200190565b60405180910390a350505050565b73ffffffffffffffffffffffffffffffffffffffff82166113ff576040517fd92e233d00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b73ffffffffffffffffffffffffffffffffffffffff82166000908152600360205260409020548181101561145f576040517ffe382aa700000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6114698282611997565b73ffffffffffffffffffffffffffffffffffffffff8416600090815260036020526040812091909155600580548492906114a4908490611997565b909155505060405182815260009073ffffffffffffffffffffffffffffffffffffffff8516907fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef906020016111ea565b73ffffffffffffffffffffffffffffffffffffffff8216611541576040517fd92e233d00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b80600560008282546115539190611bd2565b909155505073ffffffffffffffffffffffffffffffffffffffff82166000908152600360205260408120805483929061158d908490611bd2565b909155505060405181815273ffffffffffffffffffffffffffffffffffffffff8316906000907fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef9060200160405180910390a35050565b6000815180845260005b8181101561160a576020818501810151868301820152016115ee565b5060006020828601015260207fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0601f83011685010191505092915050565b60208152600061165b60208301846115e4565b9392505050565b73ffffffffffffffffffffffffffffffffffffffff8116811461168457600080fd5b50565b6000806040838503121561169a57600080fd5b82356116a581611662565b946020939093013593505050565b6000806000606084860312156116c857600080fd5b83356116d381611662565b925060208401356116e381611662565b929592945050506040919091013590565b60006020828403121561170657600080fd5b5035919050565b60006020828403121561171f57600080fd5b813561165b81611662565b6020810160038310611765577f4e487b7100000000000000000000000000000000000000000000000000000000600052602160045260246000fd5b91905290565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b60008067ffffffffffffffff8411156117b5576117b561176b565b506040517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0601f85018116603f0116810181811067ffffffffffffffff821117156118025761180261176b565b60405283815290508082840185101561181a57600080fd5b83836020830137600060208583010152509392505050565b60006020828403121561184457600080fd5b813567ffffffffffffffff81111561185b57600080fd5b8201601f8101841361186c57600080fd5b61187b8482356020840161179a565b949350505050565b6000806040838503121561189657600080fd5b823567ffffffffffffffff8111156118ad57600080fd5b8301601f810185136118be57600080fd5b6118cd8582356020840161179a565b95602094909401359450505050565b600080604083850312156118ef57600080fd5b82356118fa81611662565b9150602083013561190a81611662565b809150509250929050565b600181811c9082168061192957607f821691505b602082108103611962577f4e487b7100000000000000000000000000000000000000000000000000000000600052602260045260246000fd5b50919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b8181038181111561055d5761055d611968565b6040815260006119bd60408301856115e4565b90508260208301529392505050565b601f821115611a1657806000526020600020601f840160051c810160208510156119f35750805b601f840160051c820191505b81811015611a1357600081556001016119ff565b50505b505050565b815167ffffffffffffffff811115611a3557611a3561176b565b611a4981611a438454611915565b846119cc565b6020601f821160018114611a9b5760008315611a655750848201515b7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff600385901b1c1916600184901b178455611a13565b6000848152602081207fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe08516915b82811015611ae95787850151825560209485019460019092019101611ac9565b5084821015611b2557868401517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff600387901b60f8161c191681555b50505050600190811b01905550565b600060208284031215611b4657600080fd5b8151801515811461165b57600080fd5b608081526000611b6960808301876115e4565b6020830195909552506040810192909252606090910152919050565b600060208284031215611b9757600080fd5b815161165b81611662565b600060208284031215611bb457600080fd5b5051919050565b808202811582820484141761055d5761055d611968565b8082018082111561055d5761055d61196856fea26469706673582212206ca0b4ba92c818c2268a96a059d56787769a64b137c4c1fa704309dae852329a64736f6c634300081a0033","sourceMap":"704:11440:11:-:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;3183:98;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;1384:24;;;;;;;;;849:25:108;;;837:2;822:18;1384:24:11;703:177:108;5417:166:11;;;;;;:::i;:::-;;:::i;:::-;;;1581:14:108;;1574:22;1556:41;;1544:2;1529:18;5417:166:11;1416:187:108;4130:106:11;4217:12;;4130:106;;5831:388;;;;;;:::i;:::-;;:::i;3933:98::-;4015:9;;3933:98;;4015:9;;;;2263:36:108;;2251:2;2236:18;3933:98:11;2121:184:108;855:92:11;;905:42;855:92;;;;;2486:42:108;2474:55;;;2456:74;;2444:2;2429:18;855:92:11;2310:226:108;6365:126:11;;;;;;:::i;:::-;;:::i;8150:396::-;;;;;;:::i;:::-;;:::i;1528:41::-;;;;;;4418:125;;;;;;:::i;:::-;4518:18;;4492:7;4518:18;;;:9;:18;;;;;;;4418:125;982:33;;;;;1958:29;;;;;;;;;;;;3742:102;;;:::i;1073:35::-;;;;;;;;;;;;:::i;4741:172::-;;;;;;:::i;:::-;;:::i;3550:111::-;;;;;;:::i;:::-;;:::i;:::-;;3363:103;;;;;;:::i;:::-;;:::i;10352:430::-;;;;;;:::i;:::-;;:::i;10942:216::-;;;;;;:::i;:::-;;:::i;11320:193::-;;;;;;:::i;:::-;;:::i;8731:498::-;;;:::i;:::-;;;;5688:42:108;5676:55;;;5658:74;;5763:2;5748:18;;5741:34;;;;5631:18;8731:498:11;5484:297:108;5064:149:11;;;;;;:::i;:::-;5179:18;;;;5153:7;5179:18;;;:11;:18;;;;;;;;:27;;;;;;;;;;;;;5064:149;11954:188;;;;;;:::i;:::-;;:::i;1234:38::-;;;;;;;;;11650:144;;;;;;:::i;:::-;;:::i;9437:525::-;;;;;;:::i;:::-;;:::i;3183:98::-;3237:13;3269:5;3262:12;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;3183:98;:::o;5417:166::-;5500:4;5516:39;2073:10;5539:7;5548:6;5516:8;:39::i;:::-;-1:-1:-1;5572:4:11;5417:166;;;;;:::o;5831:388::-;5937:4;5953:36;5963:6;5971:9;5982:6;5953:9;:36::i;:::-;6027:19;;;6000:24;6027:19;;;:11;:19;;;;;;;;2073:10;6027:33;;;;;;;;6074:25;;;6070:52;;;6108:14;;;;;;;;;;;;;;6070:52;6133:57;6142:6;2073:10;6164:25;6183:6;6164:16;:25;:::i;:::-;6133:8;:57::i;:::-;-1:-1:-1;6208:4:11;;5831:388;-1:-1:-1;;;;5831:388:11:o;6365:126::-;6422:4;6438:25;6444:10;6456:6;6438:5;:25::i;:::-;-1:-1:-1;6480:4:11;;6365:126;-1:-1:-1;6365:126:11:o;8150:396::-;8222:4;8255:10;905:42;8255:37;;;;:78;;-1:-1:-1;8310:23:11;;;;8296:10;:37;;8255:78;:126;;;;-1:-1:-1;8367:14:11;;;;;;;8353:10;:28;;8255:126;8238:176;;;8399:15;;;;;;;;;;;;;;8238:176;8424:17;8430:2;8434:6;8424:5;:17::i;:::-;8464:41;;7088:15:108;8464:41:11;;;7072:101:108;8456:62:11;;;;;;7189:12:108;;8464:41:11;;;;;;;;;;;;;;8456:62;;8511:6;;8456:62;:::i;:::-;;;;;;;;-1:-1:-1;8535:4:11;8150:396;;;;:::o;3742:102::-;3798:13;3830:7;3823:14;;;;;:::i;4741:172::-;4827:4;4843:42;2073:10;4867:9;4878:6;4843:9;:42::i;3550:111::-;2193:10;905:42;2193:37;2189:77;;2239:27;;;;;;;;;;;;;;2189:77;3635:7:::1;:19;3645:9:::0;3635:7;:19:::1;:::i;:::-;;3550:111:::0;:::o;3363:103::-;2193:10;905:42;2193:37;2189:77;;2239:27;;;;;;;;;;;;;;2189:77;3444:5:::1;:15;3452:7:::0;3444:5;:15:::1;:::i;10352:430::-:0;10430:4;10447:16;10465:14;10483:16;:14;:16::i;:::-;10514:74;;;;;10544:10;10514:74;;;10011::108;905:42:11;10101:18:108;;;10094:83;10193:18;;;10186:34;;;10446:53:11;;-1:-1:-1;10446:53:11;-1:-1:-1;10514:29:11;;;;;;9984:18:108;;10514:74:11;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;10509:135;;10611:22;;;;;;;;;;;;;;10509:135;10653:25;10659:10;10671:6;10653:5;:25::i;:::-;10736:17;;10693:61;;10704:10;;10693:61;;;;10716:2;;10720:6;;10728;;10693:61;:::i;:::-;;;;;;;;-1:-1:-1;10771:4:11;;10352:430;-1:-1:-1;;;;10352:430:11:o;10942:216::-;2193:10;905:42;2193:37;2189:77;;2239:27;;;;;;;;;;;;;;2189:77;11029:18:::1;::::0;::::1;11025:44;;11056:13;;;;;;;;;;;;;;11025:44;11079:23;:30:::0;;;::::1;;::::0;::::1;::::0;;::::1;::::0;;;11124:27:::1;::::0;2456:74:108;;;11124:27:11::1;::::0;2444:2:108;2429:18;11124:27:11::1;;;;;;;;10942:216:::0;:::o;11320:193::-;2193:10;905:42;2193:37;2189:77;;2239:27;;;;;;;;;;;;;;2189:77;11400:18:::1;::::0;::::1;11396:44;;11427:13;;;;;;;;;;;;;;11396:44;11450:14;:21:::0;;;::::1;;;::::0;::::1;::::0;;::::1;::::0;;;::::1;::::0;;;11486:20:::1;::::0;2456:74:108;;;11486:20:11::1;::::0;2444:2:108;2429:18;11486:20:11::1;2310:226:108::0;8731:498:11;8787:7;8842:23;;8834:64;;;;;8889:8;8834:64;;;849:25:108;8787:7:11;;;;8842:23;;;;;8834:54;;822:18:108;;8834:64:11;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;8815:83;-1:-1:-1;8912:22:11;;;8908:48;;8943:13;;;;;;;;;;;;;;8908:48;8967:16;8994:23;;8986:60;;;;;9037:8;8986:60;;;849:25:108;8994:23:11;;;;;8986:50;;822:18:108;;8986:60:11;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;8967:79;;9060:8;9072:1;9060:13;9056:65;;9096:14;;;;;;;;;;;;;;9056:65;9130:14;9170:17;;9158:9;;9147:8;:20;;;;:::i;:::-;:40;;;;:::i;:::-;9205:8;;9130:57;;-1:-1:-1;8731:498:11;;-1:-1:-1;;;8731:498:11:o;11954:188::-;2193:10;905:42;2193:37;2189:77;;2239:27;;;;;;;;;;;;;;2189:77;12043:17:::1;:36:::0;;;12094:41:::1;::::0;849:25:108;;;12094:41:11::1;::::0;837:2:108;822:18;12094:41:11::1;703:177:108::0;11650:144:11;2193:10;905:42;2193:37;2189:77;;2239:27;;;;;;;;;;;;;;2189:77;11725:9:::1;:21:::0;;;11761:26:::1;::::0;849:25:108;;;11761:26:11::1;::::0;837:2:108;822:18;11761:26:11::1;703:177:108::0;9437:525:11;9521:7;9576:23;;9568:64;;;;;9623:8;9568:64;;;849:25:108;9521:7:11;;;;9576:23;;;;;9568:54;;822:18:108;;9568:64:11;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;9549:83;-1:-1:-1;9646:22:11;;;9642:48;;9677:13;;;;;;;;;;;;;;9642:48;9701:16;9728:23;;9720:60;;;;;9771:8;9720:60;;;849:25:108;9728:23:11;;;;;9720:50;;822:18:108;;9720:60:11;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;9701:79;;9794:8;9806:1;9794:13;9790:65;;9830:14;;;;;;;;;;;;;;9790:65;9903:17;;9864:14;;9881:19;9892:8;9881;:19;:::i;:::-;:39;;;;:::i;:::-;9938:8;;9864:56;;-1:-1:-1;9437:525:11;;-1:-1:-1;;;;9437:525:11:o;7610:296::-;7707:19;;;7703:45;;7735:13;;;;;;;;;;;;;;7703:45;7762:21;;;7758:47;;7792:13;;;;;;;;;;;;;;7758:47;7816:18;;;;;;;;:11;:18;;;;;;;;:27;;;;;;;;;;;;;:36;;;7867:32;;849:25:108;;;7867:32:11;;822:18:108;7867:32:11;;;;;;;;7610:296;;;:::o;6497:462::-;6598:20;;;6594:46;;6627:13;;;;;;;;;;;;;;6594:46;6654:23;;;6650:49;;6686:13;;;;;;;;;;;;;;6650:49;6734:17;;;6710:21;6734:17;;;:9;:17;;;;;;6765:22;;;6761:47;;;6796:12;;;;;;;;;;;;;;6761:47;6839:22;6855:6;6839:13;:22;:::i;:::-;6819:17;;;;;;;;:9;:17;;;;;;:42;;;;6871:20;;;;;;;;:30;;6895:6;;6819:17;6871:30;;6895:6;;6871:30;:::i;:::-;;;;;;;;6934:9;6917:35;;6926:6;6917:35;;;6945:6;6917:35;;;;849:25:108;;837:2;822:18;;703:177;6917:35:11;;;;;;;;6584:375;6497:462;;;:::o;7223:381::-;7302:21;;;7298:47;;7332:13;;;;;;;;;;;;;;7298:47;7381:18;;;7356:22;7381:18;;;:9;:18;;;;;;7413:23;;;7409:48;;;7445:12;;;;;;;;;;;;;;7409:48;7489:23;7506:6;7489:14;:23;:::i;:::-;7468:18;;;;;;;:9;:18;;;;;:44;;;;7522:12;:22;;7538:6;;7468:18;7522:22;;7538:6;;7522:22;:::i;:::-;;;;-1:-1:-1;;7560:37:11;;849:25:108;;;7586:1:11;;7560:37;;;;;;837:2:108;822:18;7560:37:11;703:177:108;6965:252:11;7044:21;;;7040:47;;7074:13;;;;;;;;;;;;;;7040:47;7114:6;7098:12;;:22;;;;;;;:::i;:::-;;;;-1:-1:-1;;7130:18:11;;;;;;;:9;:18;;;;;:28;;7152:6;;7130:18;:28;;7152:6;;7130:28;:::i;:::-;;;;-1:-1:-1;;7173:37:11;;849:25:108;;;7173:37:11;;;;7190:1;;7173:37;;837:2:108;822:18;7173:37:11;;;;;;;6965:252;;:::o;14:459:108:-;56:3;94:5;88:12;121:6;116:3;109:19;146:1;156:139;170:6;167:1;164:13;156:139;;;278:4;263:13;;;259:24;;253:31;233:11;;;229:22;;222:63;185:12;156:139;;;160:3;340:1;333:4;324:6;319:3;315:16;311:27;304:38;462:4;392:66;387:2;379:6;375:15;371:88;366:3;362:98;358:109;351:116;;;14:459;;;;:::o;478:220::-;627:2;616:9;609:21;590:4;647:45;688:2;677:9;673:18;665:6;647:45;:::i;:::-;639:53;478:220;-1:-1:-1;;;478:220:108:o;885:154::-;971:42;964:5;960:54;953:5;950:65;940:93;;1029:1;1026;1019:12;940:93;885:154;:::o;1044:367::-;1112:6;1120;1173:2;1161:9;1152:7;1148:23;1144:32;1141:52;;;1189:1;1186;1179:12;1141:52;1228:9;1215:23;1247:31;1272:5;1247:31;:::i;:::-;1297:5;1375:2;1360:18;;;;1347:32;;-1:-1:-1;;;1044:367:108:o;1608:508::-;1685:6;1693;1701;1754:2;1742:9;1733:7;1729:23;1725:32;1722:52;;;1770:1;1767;1760:12;1722:52;1809:9;1796:23;1828:31;1853:5;1828:31;:::i;:::-;1878:5;-1:-1:-1;1935:2:108;1920:18;;1907:32;1948:33;1907:32;1948:33;:::i;:::-;1608:508;;2000:7;;-1:-1:-1;;;2080:2:108;2065:18;;;;2052:32;;1608:508::o;2541:226::-;2600:6;2653:2;2641:9;2632:7;2628:23;2624:32;2621:52;;;2669:1;2666;2659:12;2621:52;-1:-1:-1;2714:23:108;;2541:226;-1:-1:-1;2541:226:108:o;2772:247::-;2831:6;2884:2;2872:9;2863:7;2859:23;2855:32;2852:52;;;2900:1;2897;2890:12;2852:52;2939:9;2926:23;2958:31;2983:5;2958:31;:::i;3024:398::-;3169:2;3154:18;;3202:1;3191:13;;3181:201;;3238:77;3235:1;3228:88;3339:4;3336:1;3329:15;3367:4;3364:1;3357:15;3181:201;3391:25;;;3024:398;:::o;3427:184::-;3479:77;3476:1;3469:88;3576:4;3573:1;3566:15;3600:4;3597:1;3590:15;3616:834;3681:5;3713:1;3737:18;3729:6;3726:30;3723:56;;;3759:18;;:::i;:::-;-1:-1:-1;3973:2:108;3967:9;3823:66;3818:2;3806:15;;3802:88;;4031:2;4019:15;4015:88;4003:101;;4155:22;;;4134:18;4119:34;;4116:62;4113:88;;;4181:18;;:::i;:::-;4217:2;4210:22;4265;;;4250:6;-1:-1:-1;4250:6:108;4302:16;;;4299:25;-1:-1:-1;4296:45:108;;;4337:1;4334;4327:12;4296:45;4387:6;4382:3;4375:4;4367:6;4363:17;4350:44;4442:1;4435:4;4426:6;4418;4414:19;4410:30;4403:41;;3616:834;;;;;:::o;4455:451::-;4524:6;4577:2;4565:9;4556:7;4552:23;4548:32;4545:52;;;4593:1;4590;4583:12;4545:52;4633:9;4620:23;4666:18;4658:6;4655:30;4652:50;;;4698:1;4695;4688:12;4652:50;4721:22;;4774:4;4766:13;;4762:27;-1:-1:-1;4752:55:108;;4803:1;4800;4793:12;4752:55;4826:74;4892:7;4887:2;4874:16;4869:2;4865;4861:11;4826:74;:::i;:::-;4816:84;4455:451;-1:-1:-1;;;;4455:451:108:o;4911:568::-;4988:6;4996;5049:2;5037:9;5028:7;5024:23;5020:32;5017:52;;;5065:1;5062;5055:12;5017:52;5105:9;5092:23;5138:18;5130:6;5127:30;5124:50;;;5170:1;5167;5160:12;5124:50;5193:22;;5246:4;5238:13;;5234:27;-1:-1:-1;5224:55:108;;5275:1;5272;5265:12;5224:55;5298:76;5366:7;5361:2;5348:16;5341:4;5337:2;5333:13;5298:76;:::i;:::-;5288:86;5443:4;5428:20;;;;5415:34;;-1:-1:-1;;;;4911:568:108:o;5786:388::-;5854:6;5862;5915:2;5903:9;5894:7;5890:23;5886:32;5883:52;;;5931:1;5928;5921:12;5883:52;5970:9;5957:23;5989:31;6014:5;5989:31;:::i;:::-;6039:5;-1:-1:-1;6096:2:108;6081:18;;6068:32;6109:33;6068:32;6109:33;:::i;:::-;6161:7;6151:17;;;5786:388;;;;;:::o;6179:437::-;6258:1;6254:12;;;;6301;;;6322:61;;6376:4;6368:6;6364:17;6354:27;;6322:61;6429:2;6421:6;6418:14;6398:18;6395:38;6392:218;;6466:77;6463:1;6456:88;6567:4;6564:1;6557:15;6595:4;6592:1;6585:15;6392:218;;6179:437;;;:::o;6621:184::-;6673:77;6670:1;6663:88;6770:4;6767:1;6760:15;6794:4;6791:1;6784:15;6810:128;6877:9;;;6898:11;;;6895:37;;;6912:18;;:::i;7212:289::-;7387:2;7376:9;7369:21;7350:4;7407:45;7448:2;7437:9;7433:18;7425:6;7407:45;:::i;:::-;7399:53;;7488:6;7483:2;7472:9;7468:18;7461:34;7212:289;;;;;:::o;7632:518::-;7734:2;7729:3;7726:11;7723:421;;;7770:5;7767:1;7760:16;7814:4;7811:1;7801:18;7884:2;7872:10;7868:19;7865:1;7861:27;7855:4;7851:38;7920:4;7908:10;7905:20;7902:47;;;-1:-1:-1;7943:4:108;7902:47;7998:2;7993:3;7989:12;7986:1;7982:20;7976:4;7972:31;7962:41;;8053:81;8071:2;8064:5;8061:13;8053:81;;;8130:1;8116:16;;8097:1;8086:13;8053:81;;;8057:3;;7723:421;7632:518;;;:::o;8386:1418::-;8512:3;8506:10;8539:18;8531:6;8528:30;8525:56;;;8561:18;;:::i;:::-;8590:97;8680:6;8640:38;8672:4;8666:11;8640:38;:::i;:::-;8634:4;8590:97;:::i;:::-;8736:4;8767:2;8756:14;;8784:1;8779:768;;;;9591:1;9608:6;9605:89;;;-1:-1:-1;9660:19:108;;;9654:26;9605:89;8292:66;8283:1;8279:11;;;8275:84;8271:89;8261:100;8367:1;8363:11;;;8258:117;9707:81;;8749:1049;;8779:768;7579:1;7572:14;;;7616:4;7603:18;;8827:66;8815:79;;;8992:222;9006:7;9003:1;9000:14;8992:222;;;9088:19;;;9082:26;9067:42;;9195:4;9180:20;;;;9148:1;9136:14;;;;9022:12;8992:222;;;8996:3;9242:6;9233:7;9230:19;9227:261;;;9303:19;;;9297:26;9404:66;9386:1;9382:14;;;9398:3;9378:24;9374:97;9370:102;9355:118;9340:134;;9227:261;-1:-1:-1;;;;9534:1:108;9518:14;;;9514:22;9501:36;;-1:-1:-1;8386:1418:108:o;10231:277::-;10298:6;10351:2;10339:9;10330:7;10326:23;10322:32;10319:52;;;10367:1;10364;10357:12;10319:52;10399:9;10393:16;10452:5;10445:13;10438:21;10431:5;10428:32;10418:60;;10474:1;10471;10464:12;10513:433;10744:3;10733:9;10726:22;10707:4;10765:46;10806:3;10795:9;10791:19;10783:6;10765:46;:::i;:::-;10842:2;10827:18;;10820:34;;;;-1:-1:-1;10885:2:108;10870:18;;10863:34;;;;10928:2;10913:18;;;10906:34;10757:54;10513:433;-1:-1:-1;10513:433:108:o;10951:251::-;11021:6;11074:2;11062:9;11053:7;11049:23;11045:32;11042:52;;;11090:1;11087;11080:12;11042:52;11122:9;11116:16;11141:31;11166:5;11141:31;:::i;11207:184::-;11277:6;11330:2;11318:9;11309:7;11305:23;11301:32;11298:52;;;11346:1;11343;11336:12;11298:52;-1:-1:-1;11369:16:108;;11207:184;-1:-1:-1;11207:184:108:o;11396:168::-;11469:9;;;11500;;11517:15;;;11511:22;;11497:37;11487:71;;11538:18;;:::i;11569:125::-;11634:9;;;11655:10;;;11652:36;;;11668:18;;:::i","linkReferences":{},"immutableReferences":{"3497":[{"start":752,"length":32},{"start":3036,"length":32},{"start":3298,"length":32},{"start":3838,"length":32},{"start":4100,"length":32}],"3501":[{"start":836,"length":32}]}},"methodIdentifiers":{"CHAIN_ID()":"85e1f4d0","COIN_TYPE()":"a3413d03","FUNGIBLE_MODULE_ADDRESS()":"3ce4a5bc","GAS_LIMIT()":"091d2788","PROTOCOL_FLAT_FEE()":"4d8943bb","SYSTEM_CONTRACT_ADDRESS()":"f2441b32","allowance(address,address)":"dd62ed3e","approve(address,uint256)":"095ea7b3","balanceOf(address)":"70a08231","burn(uint256)":"42966c68","decimals()":"313ce567","deposit(address,uint256)":"47e7ef24","gatewayAddress()":"8b851b95","name()":"06fdde03","setName(string)":"c47f0027","setSymbol(string)":"b84c8246","symbol()":"95d89b41","totalSupply()":"18160ddd","transfer(address,uint256)":"a9059cbb","transferFrom(address,address,uint256)":"23b872dd","updateGasLimit(uint256)":"f687d12a","updateGatewayAddress(address)":"ccc77599","updateProtocolFlatFee(uint256)":"eddeb123","updateSystemContractAddress(address)":"c835d7cc","withdraw(bytes,uint256)":"c7012626","withdrawGasFee()":"d9eeebed","withdrawGasFeeWithGasLimit(uint256)":"fc5fecd5"},"rawMetadata":"{\"compiler\":{\"version\":\"0.8.26+commit.8a97fa7a\"},\"language\":\"Solidity\",\"output\":{\"abi\":[{\"inputs\":[{\"internalType\":\"string\",\"name\":\"name_\",\"type\":\"string\"},{\"internalType\":\"string\",\"name\":\"symbol_\",\"type\":\"string\"},{\"internalType\":\"uint8\",\"name\":\"decimals_\",\"type\":\"uint8\"},{\"internalType\":\"uint256\",\"name\":\"chainid_\",\"type\":\"uint256\"},{\"internalType\":\"enum CoinType\",\"name\":\"coinType_\",\"type\":\"uint8\"},{\"internalType\":\"uint256\",\"name\":\"gasLimit_\",\"type\":\"uint256\"},{\"internalType\":\"address\",\"name\":\"systemContractAddress_\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"gatewayAddress_\",\"type\":\"address\"}],\"stateMutability\":\"nonpayable\",\"type\":\"constructor\"},{\"inputs\":[],\"name\":\"CallerIsNotFungibleModule\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"GasFeeTransferFailed\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"InvalidSender\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"LowAllowance\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"LowBalance\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"ZeroAddress\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"ZeroGasCoin\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"ZeroGasPrice\",\"type\":\"error\"},{\"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\":\"bytes\",\"name\":\"from\",\"type\":\"bytes\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"to\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"value\",\"type\":\"uint256\"}],\"name\":\"Deposit\",\"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\":\"uint256\",\"name\":\"gasLimit\",\"type\":\"uint256\"}],\"name\":\"UpdatedGasLimit\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"address\",\"name\":\"gateway\",\"type\":\"address\"}],\"name\":\"UpdatedGateway\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"protocolFlatFee\",\"type\":\"uint256\"}],\"name\":\"UpdatedProtocolFlatFee\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"address\",\"name\":\"systemContract\",\"type\":\"address\"}],\"name\":\"UpdatedSystemContract\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"from\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"bytes\",\"name\":\"to\",\"type\":\"bytes\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"value\",\"type\":\"uint256\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"gasFee\",\"type\":\"uint256\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"protocolFlatFee\",\"type\":\"uint256\"}],\"name\":\"Withdrawal\",\"type\":\"event\"},{\"inputs\":[],\"name\":\"CHAIN_ID\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"COIN_TYPE\",\"outputs\":[{\"internalType\":\"enum CoinType\",\"name\":\"\",\"type\":\"uint8\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"FUNGIBLE_MODULE_ADDRESS\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"GAS_LIMIT\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"PROTOCOL_FLAT_FEE\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"SYSTEM_CONTRACT_ADDRESS\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"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\"},{\"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\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"account\",\"type\":\"address\"}],\"name\":\"balanceOf\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"amount\",\"type\":\"uint256\"}],\"name\":\"burn\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"decimals\",\"outputs\":[{\"internalType\":\"uint8\",\"name\":\"\",\"type\":\"uint8\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"to\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"amount\",\"type\":\"uint256\"}],\"name\":\"deposit\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"gatewayAddress\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"name\",\"outputs\":[{\"internalType\":\"string\",\"name\":\"\",\"type\":\"string\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"string\",\"name\":\"newName\",\"type\":\"string\"}],\"name\":\"setName\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"string\",\"name\":\"newSymbol\",\"type\":\"string\"}],\"name\":\"setSymbol\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"symbol\",\"outputs\":[{\"internalType\":\"string\",\"name\":\"\",\"type\":\"string\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"totalSupply\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"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\"},{\"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\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"gasLimit_\",\"type\":\"uint256\"}],\"name\":\"updateGasLimit\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"addr\",\"type\":\"address\"}],\"name\":\"updateGatewayAddress\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"protocolFlatFee_\",\"type\":\"uint256\"}],\"name\":\"updateProtocolFlatFee\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"addr\",\"type\":\"address\"}],\"name\":\"updateSystemContractAddress\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes\",\"name\":\"to\",\"type\":\"bytes\"},{\"internalType\":\"uint256\",\"name\":\"amount\",\"type\":\"uint256\"}],\"name\":\"withdraw\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"withdrawGasFee\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"gasLimit\",\"type\":\"uint256\"}],\"name\":\"withdrawGasFeeWithGasLimit\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"}],\"devdoc\":{\"kind\":\"dev\",\"methods\":{\"allowance(address,address)\":{\"details\":\"Returns token allowance from owner to spender.\",\"params\":{\"owner\":\", owner address.\"},\"returns\":{\"_0\":\"uint256 allowance.\"}},\"approve(address,uint256)\":{\"details\":\"Approves amount transferFrom for spender.\",\"params\":{\"amount\":\", amount to approve.\",\"spender\":\", spender address.\"},\"returns\":{\"_0\":\"true/false if succeeded/failed.\"}},\"balanceOf(address)\":{\"details\":\"Returns ZRC20 balance of an account.\",\"params\":{\"account\":\", account address for which balance is requested.\"},\"returns\":{\"_0\":\"uint256 account balance.\"}},\"burn(uint256)\":{\"details\":\"Burns an amount of tokens.\",\"params\":{\"amount\":\", amount to burn.\"},\"returns\":{\"_0\":\"true/false if succeeded/failed.\"}},\"constructor\":{\"details\":\"The only one allowed to deploy new ZRC20 is fungible address.\"},\"decimals()\":{\"details\":\"ZRC20 decimals.\",\"returns\":{\"_0\":\"returns uint8 decimals.\"}},\"deposit(address,uint256)\":{\"details\":\"Deposits corresponding tokens from external chain, only callable by Fungible module.\",\"params\":{\"amount\":\", amount to deposit.\",\"to\":\", recipient address.\"},\"returns\":{\"_0\":\"true/false if succeeded/failed.\"}},\"name()\":{\"details\":\"ZRC20 name\",\"returns\":{\"_0\":\"name as string\"}},\"setName(string)\":{\"details\":\"Name can be updated by fungible module account.\"},\"setSymbol(string)\":{\"details\":\"Symbol can be updated by fungible module account.\"},\"symbol()\":{\"details\":\"ZRC20 symbol.\",\"returns\":{\"_0\":\"symbol as string.\"}},\"totalSupply()\":{\"details\":\"ZRC20 total supply.\",\"returns\":{\"_0\":\"returns uint256 total supply.\"}},\"transfer(address,uint256)\":{\"details\":\"Returns ZRC20 balance of an account.\",\"params\":{\"recipient\":\", recipiuent address to which transfer is done.\"},\"returns\":{\"_0\":\"true/false if transfer succeeded/failed.\"}},\"transferFrom(address,address,uint256)\":{\"details\":\"Transfers tokens from sender to recipient.\",\"params\":{\"amount\":\", amount to transfer.\",\"recipient\":\", recipient address.\",\"sender\":\", sender address.\"},\"returns\":{\"_0\":\"true/false if succeeded/failed.\"}},\"updateGasLimit(uint256)\":{\"details\":\"Updates gas limit. Can only be updated by the fungible module.\",\"params\":{\"gasLimit_\":\", new gas limit.\"}},\"updateGatewayAddress(address)\":{\"details\":\"Updates gateway contract address. Can only be updated by the fungible module.\",\"params\":{\"addr\":\", new gateway contract address.\"}},\"updateProtocolFlatFee(uint256)\":{\"details\":\"Updates protocol flat fee. Can only be updated by the fungible module.\",\"params\":{\"protocolFlatFee_\":\", new protocol flat fee.\"}},\"updateSystemContractAddress(address)\":{\"details\":\"Updates system contract address. Can only be updated by the fungible module.\",\"params\":{\"addr\":\", new system contract address.\"}},\"withdraw(bytes,uint256)\":{\"details\":\"Withraws ZRC20 tokens to external chains, this function causes cctx module to send out outbound tx to the outbound chain this contract should be given enough allowance of the gas ZRC20 to pay for outbound tx gas fee.\",\"params\":{\"amount\":\", amount to deposit.\",\"to\":\", recipient address.\"},\"returns\":{\"_0\":\"true/false if succeeded/failed.\"}},\"withdrawGasFee()\":{\"details\":\"Withdraws gas fees.\",\"returns\":{\"_0\":\"returns the ZRC20 address for gas on the same chain of this ZRC20, and calculates the gas fee for withdraw()\"}},\"withdrawGasFeeWithGasLimit(uint256)\":{\"details\":\"Withdraws gas fees with specified gasLimit\",\"returns\":{\"_0\":\"returns the ZRC20 address for gas on the same chain of this ZRC20, and calculates the gas fee for withdraw()\"}}},\"stateVariables\":{\"GAS_LIMIT\":{\"details\":\"Name is in upper case to maintain compatibility with ZRC20.sol v1\"},\"PROTOCOL_FLAT_FEE\":{\"details\":\"Name is in upper case to maintain compatibility with ZRC20.sol v1\"},\"SYSTEM_CONTRACT_ADDRESS\":{\"details\":\"Name is in upper case to maintain compatibility with ZRC20.sol v1\"},\"gatewayAddress\":{\"details\":\"This variable is added at last position to maintain storage layout with ZRC20.sol v1\"}},\"version\":1},\"userdoc\":{\"kind\":\"user\",\"methods\":{\"CHAIN_ID()\":{\"notice\":\"Chain id.abi\"},\"COIN_TYPE()\":{\"notice\":\"Coin type, checkout Interfaces.sol.\"},\"FUNGIBLE_MODULE_ADDRESS()\":{\"notice\":\"Fungible address is always the same, maintained at the protocol level\"},\"GAS_LIMIT()\":{\"notice\":\"Gas limit.\"},\"PROTOCOL_FLAT_FEE()\":{\"notice\":\"Protocol flat fee.\"},\"SYSTEM_CONTRACT_ADDRESS()\":{\"notice\":\"System contract address.\"},\"gatewayAddress()\":{\"notice\":\"Gateway contract address.\"}},\"version\":1}},\"settings\":{\"compilationTarget\":{\"contracts/zevm/ZRC20.sol\":\"ZRC20\"},\"evmVersion\":\"london\",\"libraries\":{},\"metadata\":{\"bytecodeHash\":\"ipfs\"},\"optimizer\":{\"enabled\":true,\"runs\":10000},\"remappings\":[\":@openzeppelin/contracts-upgradeable/=lib/openzeppelin-contracts-upgradeable/contracts/\",\":@openzeppelin/contracts/=lib/openzeppelin-contracts-upgradeable/lib/openzeppelin-contracts/contracts/\",\":ds-test/=node_modules/ds-test/src/\",\":erc4626-tests/=lib/openzeppelin-contracts-upgradeable/lib/erc4626-tests/\",\":forge-std/=lib/forge-std/src/\",\":openzeppelin-contracts-upgradeable/=lib/openzeppelin-contracts-upgradeable/\",\":openzeppelin-contracts/=lib/openzeppelin-contracts-upgradeable/lib/openzeppelin-contracts/\",\":openzeppelin-foundry-upgrades/=lib/openzeppelin-foundry-upgrades/src/\",\":solidity-stringutils/=lib/openzeppelin-foundry-upgrades/lib/solidity-stringutils/\",\":test/=test/\"]},\"sources\":{\"contracts/zevm/ZRC20.sol\":{\"keccak256\":\"0x968ad4d26d5711350651fd626e09f2ccf85fff5548cf6a037f5db6a700a689cc\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://52c451104d1732d88d8ce60427b4eec969416843348869eacfbd4e9b9a74b36e\",\"dweb:/ipfs/QmRvTPCXhPHFvEUK8XpfcpgcuM9DGdne634Y5t4rR3w8Mi\"]},\"contracts/zevm/interfaces/ISystem.sol\":{\"keccak256\":\"0x5602e9af1bd4645ed3e9988b4a2039e86b57e5901903d16fde8dce2d05d0f1df\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://a8a348733bc0d6d8237de64bc006cbfb8390b4ad5a31f76c7a465b5c0036636d\",\"dweb:/ipfs/QmeXKD9fRzg7tYYuf2oSwyu8Rwh86NVTZbuTFecVfX9X9u\"]},\"contracts/zevm/interfaces/IZRC20.sol\":{\"keccak256\":\"0x2118098ec6a745f69358649d011f0cba691f86c586b3a6f0bcbea16d9753f6e8\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://ddacdf1f3681f936f80ef0102cdac2aa1b4d60c751a1c23d7f3a45f969346cdf\",\"dweb:/ipfs/Qma7wpw8JwBSNJeob4KHGjKtXbtvW2FoThJJrDb8vtXz7X\"]}},\"version\":1}","metadata":{"compiler":{"version":"0.8.26+commit.8a97fa7a"},"language":"Solidity","output":{"abi":[{"inputs":[{"internalType":"string","name":"name_","type":"string"},{"internalType":"string","name":"symbol_","type":"string"},{"internalType":"uint8","name":"decimals_","type":"uint8"},{"internalType":"uint256","name":"chainid_","type":"uint256"},{"internalType":"enum CoinType","name":"coinType_","type":"uint8"},{"internalType":"uint256","name":"gasLimit_","type":"uint256"},{"internalType":"address","name":"systemContractAddress_","type":"address"},{"internalType":"address","name":"gatewayAddress_","type":"address"}],"stateMutability":"nonpayable","type":"constructor"},{"inputs":[],"type":"error","name":"CallerIsNotFungibleModule"},{"inputs":[],"type":"error","name":"GasFeeTransferFailed"},{"inputs":[],"type":"error","name":"InvalidSender"},{"inputs":[],"type":"error","name":"LowAllowance"},{"inputs":[],"type":"error","name":"LowBalance"},{"inputs":[],"type":"error","name":"ZeroAddress"},{"inputs":[],"type":"error","name":"ZeroGasCoin"},{"inputs":[],"type":"error","name":"ZeroGasPrice"},{"inputs":[{"internalType":"address","name":"owner","type":"address","indexed":true},{"internalType":"address","name":"spender","type":"address","indexed":true},{"internalType":"uint256","name":"value","type":"uint256","indexed":false}],"type":"event","name":"Approval","anonymous":false},{"inputs":[{"internalType":"bytes","name":"from","type":"bytes","indexed":false},{"internalType":"address","name":"to","type":"address","indexed":true},{"internalType":"uint256","name":"value","type":"uint256","indexed":false}],"type":"event","name":"Deposit","anonymous":false},{"inputs":[{"internalType":"address","name":"from","type":"address","indexed":true},{"internalType":"address","name":"to","type":"address","indexed":true},{"internalType":"uint256","name":"value","type":"uint256","indexed":false}],"type":"event","name":"Transfer","anonymous":false},{"inputs":[{"internalType":"uint256","name":"gasLimit","type":"uint256","indexed":false}],"type":"event","name":"UpdatedGasLimit","anonymous":false},{"inputs":[{"internalType":"address","name":"gateway","type":"address","indexed":false}],"type":"event","name":"UpdatedGateway","anonymous":false},{"inputs":[{"internalType":"uint256","name":"protocolFlatFee","type":"uint256","indexed":false}],"type":"event","name":"UpdatedProtocolFlatFee","anonymous":false},{"inputs":[{"internalType":"address","name":"systemContract","type":"address","indexed":false}],"type":"event","name":"UpdatedSystemContract","anonymous":false},{"inputs":[{"internalType":"address","name":"from","type":"address","indexed":true},{"internalType":"bytes","name":"to","type":"bytes","indexed":false},{"internalType":"uint256","name":"value","type":"uint256","indexed":false},{"internalType":"uint256","name":"gasFee","type":"uint256","indexed":false},{"internalType":"uint256","name":"protocolFlatFee","type":"uint256","indexed":false}],"type":"event","name":"Withdrawal","anonymous":false},{"inputs":[],"stateMutability":"view","type":"function","name":"CHAIN_ID","outputs":[{"internalType":"uint256","name":"","type":"uint256"}]},{"inputs":[],"stateMutability":"view","type":"function","name":"COIN_TYPE","outputs":[{"internalType":"enum CoinType","name":"","type":"uint8"}]},{"inputs":[],"stateMutability":"view","type":"function","name":"FUNGIBLE_MODULE_ADDRESS","outputs":[{"internalType":"address","name":"","type":"address"}]},{"inputs":[],"stateMutability":"view","type":"function","name":"GAS_LIMIT","outputs":[{"internalType":"uint256","name":"","type":"uint256"}]},{"inputs":[],"stateMutability":"view","type":"function","name":"PROTOCOL_FLAT_FEE","outputs":[{"internalType":"uint256","name":"","type":"uint256"}]},{"inputs":[],"stateMutability":"view","type":"function","name":"SYSTEM_CONTRACT_ADDRESS","outputs":[{"internalType":"address","name":"","type":"address"}]},{"inputs":[{"internalType":"address","name":"owner","type":"address"},{"internalType":"address","name":"spender","type":"address"}],"stateMutability":"view","type":"function","name":"allowance","outputs":[{"internalType":"uint256","name":"","type":"uint256"}]},{"inputs":[{"internalType":"address","name":"spender","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"stateMutability":"nonpayable","type":"function","name":"approve","outputs":[{"internalType":"bool","name":"","type":"bool"}]},{"inputs":[{"internalType":"address","name":"account","type":"address"}],"stateMutability":"view","type":"function","name":"balanceOf","outputs":[{"internalType":"uint256","name":"","type":"uint256"}]},{"inputs":[{"internalType":"uint256","name":"amount","type":"uint256"}],"stateMutability":"nonpayable","type":"function","name":"burn","outputs":[{"internalType":"bool","name":"","type":"bool"}]},{"inputs":[],"stateMutability":"view","type":"function","name":"decimals","outputs":[{"internalType":"uint8","name":"","type":"uint8"}]},{"inputs":[{"internalType":"address","name":"to","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"stateMutability":"nonpayable","type":"function","name":"deposit","outputs":[{"internalType":"bool","name":"","type":"bool"}]},{"inputs":[],"stateMutability":"view","type":"function","name":"gatewayAddress","outputs":[{"internalType":"address","name":"","type":"address"}]},{"inputs":[],"stateMutability":"view","type":"function","name":"name","outputs":[{"internalType":"string","name":"","type":"string"}]},{"inputs":[{"internalType":"string","name":"newName","type":"string"}],"stateMutability":"nonpayable","type":"function","name":"setName"},{"inputs":[{"internalType":"string","name":"newSymbol","type":"string"}],"stateMutability":"nonpayable","type":"function","name":"setSymbol"},{"inputs":[],"stateMutability":"view","type":"function","name":"symbol","outputs":[{"internalType":"string","name":"","type":"string"}]},{"inputs":[],"stateMutability":"view","type":"function","name":"totalSupply","outputs":[{"internalType":"uint256","name":"","type":"uint256"}]},{"inputs":[{"internalType":"address","name":"recipient","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"stateMutability":"nonpayable","type":"function","name":"transfer","outputs":[{"internalType":"bool","name":"","type":"bool"}]},{"inputs":[{"internalType":"address","name":"sender","type":"address"},{"internalType":"address","name":"recipient","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"stateMutability":"nonpayable","type":"function","name":"transferFrom","outputs":[{"internalType":"bool","name":"","type":"bool"}]},{"inputs":[{"internalType":"uint256","name":"gasLimit_","type":"uint256"}],"stateMutability":"nonpayable","type":"function","name":"updateGasLimit"},{"inputs":[{"internalType":"address","name":"addr","type":"address"}],"stateMutability":"nonpayable","type":"function","name":"updateGatewayAddress"},{"inputs":[{"internalType":"uint256","name":"protocolFlatFee_","type":"uint256"}],"stateMutability":"nonpayable","type":"function","name":"updateProtocolFlatFee"},{"inputs":[{"internalType":"address","name":"addr","type":"address"}],"stateMutability":"nonpayable","type":"function","name":"updateSystemContractAddress"},{"inputs":[{"internalType":"bytes","name":"to","type":"bytes"},{"internalType":"uint256","name":"amount","type":"uint256"}],"stateMutability":"nonpayable","type":"function","name":"withdraw","outputs":[{"internalType":"bool","name":"","type":"bool"}]},{"inputs":[],"stateMutability":"view","type":"function","name":"withdrawGasFee","outputs":[{"internalType":"address","name":"","type":"address"},{"internalType":"uint256","name":"","type":"uint256"}]},{"inputs":[{"internalType":"uint256","name":"gasLimit","type":"uint256"}],"stateMutability":"view","type":"function","name":"withdrawGasFeeWithGasLimit","outputs":[{"internalType":"address","name":"","type":"address"},{"internalType":"uint256","name":"","type":"uint256"}]}],"devdoc":{"kind":"dev","methods":{"allowance(address,address)":{"details":"Returns token allowance from owner to spender.","params":{"owner":", owner address."},"returns":{"_0":"uint256 allowance."}},"approve(address,uint256)":{"details":"Approves amount transferFrom for spender.","params":{"amount":", amount to approve.","spender":", spender address."},"returns":{"_0":"true/false if succeeded/failed."}},"balanceOf(address)":{"details":"Returns ZRC20 balance of an account.","params":{"account":", account address for which balance is requested."},"returns":{"_0":"uint256 account balance."}},"burn(uint256)":{"details":"Burns an amount of tokens.","params":{"amount":", amount to burn."},"returns":{"_0":"true/false if succeeded/failed."}},"constructor":{"details":"The only one allowed to deploy new ZRC20 is fungible address."},"decimals()":{"details":"ZRC20 decimals.","returns":{"_0":"returns uint8 decimals."}},"deposit(address,uint256)":{"details":"Deposits corresponding tokens from external chain, only callable by Fungible module.","params":{"amount":", amount to deposit.","to":", recipient address."},"returns":{"_0":"true/false if succeeded/failed."}},"name()":{"details":"ZRC20 name","returns":{"_0":"name as string"}},"setName(string)":{"details":"Name can be updated by fungible module account."},"setSymbol(string)":{"details":"Symbol can be updated by fungible module account."},"symbol()":{"details":"ZRC20 symbol.","returns":{"_0":"symbol as string."}},"totalSupply()":{"details":"ZRC20 total supply.","returns":{"_0":"returns uint256 total supply."}},"transfer(address,uint256)":{"details":"Returns ZRC20 balance of an account.","params":{"recipient":", recipiuent address to which transfer is done."},"returns":{"_0":"true/false if transfer succeeded/failed."}},"transferFrom(address,address,uint256)":{"details":"Transfers tokens from sender to recipient.","params":{"amount":", amount to transfer.","recipient":", recipient address.","sender":", sender address."},"returns":{"_0":"true/false if succeeded/failed."}},"updateGasLimit(uint256)":{"details":"Updates gas limit. Can only be updated by the fungible module.","params":{"gasLimit_":", new gas limit."}},"updateGatewayAddress(address)":{"details":"Updates gateway contract address. Can only be updated by the fungible module.","params":{"addr":", new gateway contract address."}},"updateProtocolFlatFee(uint256)":{"details":"Updates protocol flat fee. Can only be updated by the fungible module.","params":{"protocolFlatFee_":", new protocol flat fee."}},"updateSystemContractAddress(address)":{"details":"Updates system contract address. Can only be updated by the fungible module.","params":{"addr":", new system contract address."}},"withdraw(bytes,uint256)":{"details":"Withraws ZRC20 tokens to external chains, this function causes cctx module to send out outbound tx to the outbound chain this contract should be given enough allowance of the gas ZRC20 to pay for outbound tx gas fee.","params":{"amount":", amount to deposit.","to":", recipient address."},"returns":{"_0":"true/false if succeeded/failed."}},"withdrawGasFee()":{"details":"Withdraws gas fees.","returns":{"_0":"returns the ZRC20 address for gas on the same chain of this ZRC20, and calculates the gas fee for withdraw()"}},"withdrawGasFeeWithGasLimit(uint256)":{"details":"Withdraws gas fees with specified gasLimit","returns":{"_0":"returns the ZRC20 address for gas on the same chain of this ZRC20, and calculates the gas fee for withdraw()"}}},"version":1},"userdoc":{"kind":"user","methods":{"CHAIN_ID()":{"notice":"Chain id.abi"},"COIN_TYPE()":{"notice":"Coin type, checkout Interfaces.sol."},"FUNGIBLE_MODULE_ADDRESS()":{"notice":"Fungible address is always the same, maintained at the protocol level"},"GAS_LIMIT()":{"notice":"Gas limit."},"PROTOCOL_FLAT_FEE()":{"notice":"Protocol flat fee."},"SYSTEM_CONTRACT_ADDRESS()":{"notice":"System contract address."},"gatewayAddress()":{"notice":"Gateway contract address."}},"version":1}},"settings":{"remappings":["@openzeppelin/contracts-upgradeable/=lib/openzeppelin-contracts-upgradeable/contracts/","@openzeppelin/contracts/=lib/openzeppelin-contracts-upgradeable/lib/openzeppelin-contracts/contracts/","ds-test/=node_modules/ds-test/src/","erc4626-tests/=lib/openzeppelin-contracts-upgradeable/lib/erc4626-tests/","forge-std/=lib/forge-std/src/","openzeppelin-contracts-upgradeable/=lib/openzeppelin-contracts-upgradeable/","openzeppelin-contracts/=lib/openzeppelin-contracts-upgradeable/lib/openzeppelin-contracts/","openzeppelin-foundry-upgrades/=lib/openzeppelin-foundry-upgrades/src/","solidity-stringutils/=lib/openzeppelin-foundry-upgrades/lib/solidity-stringutils/","test/=test/"],"optimizer":{"enabled":true,"runs":10000},"metadata":{"bytecodeHash":"ipfs"},"compilationTarget":{"contracts/zevm/ZRC20.sol":"ZRC20"},"evmVersion":"london","libraries":{}},"sources":{"contracts/zevm/ZRC20.sol":{"keccak256":"0x968ad4d26d5711350651fd626e09f2ccf85fff5548cf6a037f5db6a700a689cc","urls":["bzz-raw://52c451104d1732d88d8ce60427b4eec969416843348869eacfbd4e9b9a74b36e","dweb:/ipfs/QmRvTPCXhPHFvEUK8XpfcpgcuM9DGdne634Y5t4rR3w8Mi"],"license":"MIT"},"contracts/zevm/interfaces/ISystem.sol":{"keccak256":"0x5602e9af1bd4645ed3e9988b4a2039e86b57e5901903d16fde8dce2d05d0f1df","urls":["bzz-raw://a8a348733bc0d6d8237de64bc006cbfb8390b4ad5a31f76c7a465b5c0036636d","dweb:/ipfs/QmeXKD9fRzg7tYYuf2oSwyu8Rwh86NVTZbuTFecVfX9X9u"],"license":"MIT"},"contracts/zevm/interfaces/IZRC20.sol":{"keccak256":"0x2118098ec6a745f69358649d011f0cba691f86c586b3a6f0bcbea16d9753f6e8","urls":["bzz-raw://ddacdf1f3681f936f80ef0102cdac2aa1b4d60c751a1c23d7f3a45f969346cdf","dweb:/ipfs/Qma7wpw8JwBSNJeob4KHGjKtXbtvW2FoThJJrDb8vtXz7X"],"license":"MIT"}},"version":1},"storageLayout":{"storage":[{"astId":3504,"contract":"contracts/zevm/ZRC20.sol:ZRC20","label":"SYSTEM_CONTRACT_ADDRESS","offset":0,"slot":"0","type":"t_address"},{"astId":3507,"contract":"contracts/zevm/ZRC20.sol:ZRC20","label":"GAS_LIMIT","offset":0,"slot":"1","type":"t_uint256"},{"astId":3511,"contract":"contracts/zevm/ZRC20.sol:ZRC20","label":"PROTOCOL_FLAT_FEE","offset":0,"slot":"2","type":"t_uint256"},{"astId":3515,"contract":"contracts/zevm/ZRC20.sol:ZRC20","label":"_balances","offset":0,"slot":"3","type":"t_mapping(t_address,t_uint256)"},{"astId":3521,"contract":"contracts/zevm/ZRC20.sol:ZRC20","label":"_allowances","offset":0,"slot":"4","type":"t_mapping(t_address,t_mapping(t_address,t_uint256))"},{"astId":3523,"contract":"contracts/zevm/ZRC20.sol:ZRC20","label":"_totalSupply","offset":0,"slot":"5","type":"t_uint256"},{"astId":3525,"contract":"contracts/zevm/ZRC20.sol:ZRC20","label":"_name","offset":0,"slot":"6","type":"t_string_storage"},{"astId":3527,"contract":"contracts/zevm/ZRC20.sol:ZRC20","label":"_symbol","offset":0,"slot":"7","type":"t_string_storage"},{"astId":3529,"contract":"contracts/zevm/ZRC20.sol:ZRC20","label":"_decimals","offset":0,"slot":"8","type":"t_uint8"},{"astId":3532,"contract":"contracts/zevm/ZRC20.sol:ZRC20","label":"gatewayAddress","offset":1,"slot":"8","type":"t_address"}],"types":{"t_address":{"encoding":"inplace","label":"address","numberOfBytes":"20"},"t_mapping(t_address,t_mapping(t_address,t_uint256))":{"encoding":"mapping","key":"t_address","label":"mapping(address => mapping(address => uint256))","numberOfBytes":"32","value":"t_mapping(t_address,t_uint256)"},"t_mapping(t_address,t_uint256)":{"encoding":"mapping","key":"t_address","label":"mapping(address => uint256)","numberOfBytes":"32","value":"t_uint256"},"t_string_storage":{"encoding":"bytes","label":"string","numberOfBytes":"32"},"t_uint256":{"encoding":"inplace","label":"uint256","numberOfBytes":"32"},"t_uint8":{"encoding":"inplace","label":"uint8","numberOfBytes":"1"}}},"ast":{"absolutePath":"contracts/zevm/ZRC20.sol","id":4341,"exportedSymbols":{"CoinType":[4903],"ISystem":[4618],"IZRC20":[4825],"IZRC20Metadata":[4844],"ZRC20":[4340],"ZRC20Errors":[3484],"ZRC20Events":[4898]},"nodeType":"SourceUnit","src":"32:12113:11","nodes":[{"id":3464,"nodeType":"PragmaDirective","src":"32:23:11","nodes":[],"literals":["solidity","0.8",".26"]},{"id":3465,"nodeType":"ImportDirective","src":"57:53:11","nodes":[],"absolutePath":"contracts/zevm/interfaces/ISystem.sol","file":"../../contracts/zevm/interfaces/ISystem.sol","nameLocation":"-1:-1:-1","scope":4341,"sourceUnit":4619,"symbolAliases":[],"unitAlias":""},{"id":3466,"nodeType":"ImportDirective","src":"111:52:11","nodes":[],"absolutePath":"contracts/zevm/interfaces/IZRC20.sol","file":"../../contracts/zevm/interfaces/IZRC20.sol","nameLocation":"-1:-1:-1","scope":4341,"sourceUnit":4904,"symbolAliases":[],"unitAlias":""},{"id":3484,"nodeType":"ContractDefinition","src":"205:316:11","nodes":[{"id":3469,"nodeType":"ErrorDefinition","src":"298:34:11","nodes":[],"errorSelector":"2b2add3d","name":"CallerIsNotFungibleModule","nameLocation":"304:25:11","parameters":{"id":3468,"nodeType":"ParameterList","parameters":[],"src":"329:2:11"}},{"id":3471,"nodeType":"ErrorDefinition","src":"337:22:11","nodes":[],"errorSelector":"ddb5de5e","name":"InvalidSender","nameLocation":"343:13:11","parameters":{"id":3470,"nodeType":"ParameterList","parameters":[],"src":"356:2:11"}},{"id":3473,"nodeType":"ErrorDefinition","src":"364:29:11","nodes":[],"errorSelector":"0a7cd6d6","name":"GasFeeTransferFailed","nameLocation":"370:20:11","parameters":{"id":3472,"nodeType":"ParameterList","parameters":[],"src":"390:2:11"}},{"id":3475,"nodeType":"ErrorDefinition","src":"398:20:11","nodes":[],"errorSelector":"78fff396","name":"ZeroGasCoin","nameLocation":"404:11:11","parameters":{"id":3474,"nodeType":"ParameterList","parameters":[],"src":"415:2:11"}},{"id":3477,"nodeType":"ErrorDefinition","src":"423:21:11","nodes":[],"errorSelector":"e661aed0","name":"ZeroGasPrice","nameLocation":"429:12:11","parameters":{"id":3476,"nodeType":"ParameterList","parameters":[],"src":"441:2:11"}},{"id":3479,"nodeType":"ErrorDefinition","src":"449:21:11","nodes":[],"errorSelector":"10bad147","name":"LowAllowance","nameLocation":"455:12:11","parameters":{"id":3478,"nodeType":"ParameterList","parameters":[],"src":"467:2:11"}},{"id":3481,"nodeType":"ErrorDefinition","src":"475:19:11","nodes":[],"errorSelector":"fe382aa7","name":"LowBalance","nameLocation":"481:10:11","parameters":{"id":3480,"nodeType":"ParameterList","parameters":[],"src":"491:2:11"}},{"id":3483,"nodeType":"ErrorDefinition","src":"499:20:11","nodes":[],"errorSelector":"d92e233d","name":"ZeroAddress","nameLocation":"505:11:11","parameters":{"id":3482,"nodeType":"ParameterList","parameters":[],"src":"516:2:11"}}],"abstract":false,"baseContracts":[],"canonicalName":"ZRC20Errors","contractDependencies":[],"contractKind":"interface","documentation":{"id":3467,"nodeType":"StructuredDocumentation","src":"165:39:11","text":" @dev Custom errors for ZRC20"},"fullyImplemented":true,"linearizedBaseContracts":[3484],"name":"ZRC20Errors","nameLocation":"215:11:11","scope":4341,"usedErrors":[3469,3471,3473,3475,3477,3479,3481,3483],"usedEvents":[]},{"id":4340,"nodeType":"ContractDefinition","src":"704:11440:11","nodes":[{"id":3494,"nodeType":"VariableDeclaration","src":"855:92:11","nodes":[],"constant":true,"documentation":{"id":3491,"nodeType":"StructuredDocumentation","src":"769:81:11","text":"@notice Fungible address is always the same, maintained at the protocol level"},"functionSelector":"3ce4a5bc","mutability":"constant","name":"FUNGIBLE_MODULE_ADDRESS","nameLocation":"879:23:11","scope":4340,"stateVariable":true,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":3492,"name":"address","nodeType":"ElementaryTypeName","src":"855:7:11","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"value":{"hexValue":"307837333562313442423739343633333037414163424544383644416633333232423165363232366142","id":3493,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"905:42:11","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"value":"0x735b14BB79463307AAcBED86DAf3322B1e6226aB"},"visibility":"public"},{"id":3497,"nodeType":"VariableDeclaration","src":"982:33:11","nodes":[],"constant":false,"documentation":{"id":3495,"nodeType":"StructuredDocumentation","src":"953:24:11","text":"@notice Chain id.abi"},"functionSelector":"85e1f4d0","mutability":"immutable","name":"CHAIN_ID","nameLocation":"1007:8:11","scope":4340,"stateVariable":true,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":3496,"name":"uint256","nodeType":"ElementaryTypeName","src":"982:7:11","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"public"},{"id":3501,"nodeType":"VariableDeclaration","src":"1073:35:11","nodes":[],"constant":false,"documentation":{"id":3498,"nodeType":"StructuredDocumentation","src":"1021:47:11","text":"@notice Coin type, checkout Interfaces.sol."},"functionSelector":"a3413d03","mutability":"immutable","name":"COIN_TYPE","nameLocation":"1099:9:11","scope":4340,"stateVariable":true,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_enum$_CoinType_$4903","typeString":"enum CoinType"},"typeName":{"id":3500,"nodeType":"UserDefinedTypeName","pathNode":{"id":3499,"name":"CoinType","nameLocations":["1073:8:11"],"nodeType":"IdentifierPath","referencedDeclaration":4903,"src":"1073:8:11"},"referencedDeclaration":4903,"src":"1073:8:11","typeDescriptions":{"typeIdentifier":"t_enum$_CoinType_$4903","typeString":"enum CoinType"}},"visibility":"public"},{"id":3504,"nodeType":"VariableDeclaration","src":"1234:38:11","nodes":[],"constant":false,"documentation":{"id":3502,"nodeType":"StructuredDocumentation","src":"1114:115:11","text":"@notice System contract address.\n @dev Name is in upper case to maintain compatibility with ZRC20.sol v1"},"functionSelector":"f2441b32","mutability":"mutable","name":"SYSTEM_CONTRACT_ADDRESS","nameLocation":"1249:23:11","scope":4340,"stateVariable":true,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":3503,"name":"address","nodeType":"ElementaryTypeName","src":"1234:7:11","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"public"},{"id":3507,"nodeType":"VariableDeclaration","src":"1384:24:11","nodes":[],"baseFunctions":[4814],"constant":false,"documentation":{"id":3505,"nodeType":"StructuredDocumentation","src":"1278:101:11","text":"@notice Gas limit.\n @dev Name is in upper case to maintain compatibility with ZRC20.sol v1"},"functionSelector":"091d2788","mutability":"mutable","name":"GAS_LIMIT","nameLocation":"1399:9:11","scope":4340,"stateVariable":true,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":3506,"name":"uint256","nodeType":"ElementaryTypeName","src":"1384:7:11","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"public"},{"id":3511,"nodeType":"VariableDeclaration","src":"1528:41:11","nodes":[],"baseFunctions":[4808],"constant":false,"documentation":{"id":3508,"nodeType":"StructuredDocumentation","src":"1414:109:11","text":"@notice Protocol flat fee.\n @dev Name is in upper case to maintain compatibility with ZRC20.sol v1"},"functionSelector":"4d8943bb","mutability":"mutable","name":"PROTOCOL_FLAT_FEE","nameLocation":"1552:17:11","overrides":{"id":3510,"nodeType":"OverrideSpecifier","overrides":[],"src":"1543:8:11"},"scope":4340,"stateVariable":true,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":3509,"name":"uint256","nodeType":"ElementaryTypeName","src":"1528:7:11","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"public"},{"id":3515,"nodeType":"VariableDeclaration","src":"1576:45:11","nodes":[],"constant":false,"mutability":"mutable","name":"_balances","nameLocation":"1612:9:11","scope":4340,"stateVariable":true,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_mapping$_t_address_$_t_uint256_$","typeString":"mapping(address => uint256)"},"typeName":{"id":3514,"keyName":"","keyNameLocation":"-1:-1:-1","keyType":{"id":3512,"name":"address","nodeType":"ElementaryTypeName","src":"1584:7:11","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"nodeType":"Mapping","src":"1576:27:11","typeDescriptions":{"typeIdentifier":"t_mapping$_t_address_$_t_uint256_$","typeString":"mapping(address => uint256)"},"valueName":"","valueNameLocation":"-1:-1:-1","valueType":{"id":3513,"name":"uint256","nodeType":"ElementaryTypeName","src":"1595:7:11","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}},"visibility":"private"},{"id":3521,"nodeType":"VariableDeclaration","src":"1627:67:11","nodes":[],"constant":false,"mutability":"mutable","name":"_allowances","nameLocation":"1683:11:11","scope":4340,"stateVariable":true,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_mapping$_t_address_$_t_mapping$_t_address_$_t_uint256_$_$","typeString":"mapping(address => mapping(address => uint256))"},"typeName":{"id":3520,"keyName":"","keyNameLocation":"-1:-1:-1","keyType":{"id":3516,"name":"address","nodeType":"ElementaryTypeName","src":"1635:7:11","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"nodeType":"Mapping","src":"1627:47:11","typeDescriptions":{"typeIdentifier":"t_mapping$_t_address_$_t_mapping$_t_address_$_t_uint256_$_$","typeString":"mapping(address => mapping(address => uint256))"},"valueName":"","valueNameLocation":"-1:-1:-1","valueType":{"id":3519,"keyName":"","keyNameLocation":"-1:-1:-1","keyType":{"id":3517,"name":"address","nodeType":"ElementaryTypeName","src":"1654:7:11","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"nodeType":"Mapping","src":"1646:27:11","typeDescriptions":{"typeIdentifier":"t_mapping$_t_address_$_t_uint256_$","typeString":"mapping(address => uint256)"},"valueName":"","valueNameLocation":"-1:-1:-1","valueType":{"id":3518,"name":"uint256","nodeType":"ElementaryTypeName","src":"1665:7:11","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}}},"visibility":"private"},{"id":3523,"nodeType":"VariableDeclaration","src":"1700:28:11","nodes":[],"constant":false,"mutability":"mutable","name":"_totalSupply","nameLocation":"1716:12:11","scope":4340,"stateVariable":true,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":3522,"name":"uint256","nodeType":"ElementaryTypeName","src":"1700:7:11","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"private"},{"id":3525,"nodeType":"VariableDeclaration","src":"1734:20:11","nodes":[],"constant":false,"mutability":"mutable","name":"_name","nameLocation":"1749:5:11","scope":4340,"stateVariable":true,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_string_storage","typeString":"string"},"typeName":{"id":3524,"name":"string","nodeType":"ElementaryTypeName","src":"1734:6:11","typeDescriptions":{"typeIdentifier":"t_string_storage_ptr","typeString":"string"}},"visibility":"private"},{"id":3527,"nodeType":"VariableDeclaration","src":"1760:22:11","nodes":[],"constant":false,"mutability":"mutable","name":"_symbol","nameLocation":"1775:7:11","scope":4340,"stateVariable":true,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_string_storage","typeString":"string"},"typeName":{"id":3526,"name":"string","nodeType":"ElementaryTypeName","src":"1760:6:11","typeDescriptions":{"typeIdentifier":"t_string_storage_ptr","typeString":"string"}},"visibility":"private"},{"id":3529,"nodeType":"VariableDeclaration","src":"1788:23:11","nodes":[],"constant":false,"mutability":"mutable","name":"_decimals","nameLocation":"1802:9:11","scope":4340,"stateVariable":true,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint8","typeString":"uint8"},"typeName":{"id":3528,"name":"uint8","nodeType":"ElementaryTypeName","src":"1788:5:11","typeDescriptions":{"typeIdentifier":"t_uint8","typeString":"uint8"}},"visibility":"private"},{"id":3532,"nodeType":"VariableDeclaration","src":"1958:29:11","nodes":[],"constant":false,"documentation":{"id":3530,"nodeType":"StructuredDocumentation","src":"1818:135:11","text":"@notice Gateway contract address.\n @dev This variable is added at last position to maintain storage layout with ZRC20.sol v1"},"functionSelector":"8b851b95","mutability":"mutable","name":"gatewayAddress","nameLocation":"1973:14:11","scope":4340,"stateVariable":true,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":3531,"name":"address","nodeType":"ElementaryTypeName","src":"1958:7:11","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"public"},{"id":3541,"nodeType":"FunctionDefinition","src":"1994:96:11","nodes":[],"body":{"id":3540,"nodeType":"Block","src":"2056:34:11","nodes":[],"statements":[{"expression":{"expression":{"id":3537,"name":"msg","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-15,"src":"2073:3:11","typeDescriptions":{"typeIdentifier":"t_magic_message","typeString":"msg"}},"id":3538,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"2077:6:11","memberName":"sender","nodeType":"MemberAccess","src":"2073:10:11","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"functionReturnParameters":3536,"id":3539,"nodeType":"Return","src":"2066:17:11"}]},"implemented":true,"kind":"function","modifiers":[],"name":"_msgSender","nameLocation":"2003:10:11","parameters":{"id":3533,"nodeType":"ParameterList","parameters":[],"src":"2013:2:11"},"returnParameters":{"id":3536,"nodeType":"ParameterList","parameters":[{"constant":false,"id":3535,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":3541,"src":"2047:7:11","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":3534,"name":"address","nodeType":"ElementaryTypeName","src":"2047:7:11","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"2046:9:11"},"scope":4340,"stateMutability":"view","virtual":true,"visibility":"internal"},{"id":3554,"nodeType":"ModifierDefinition","src":"2155:129:11","nodes":[],"body":{"id":3553,"nodeType":"Block","src":"2179:105:11","nodes":[],"statements":[{"condition":{"commonType":{"typeIdentifier":"t_address","typeString":"address"},"id":3547,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"expression":{"id":3544,"name":"msg","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-15,"src":"2193:3:11","typeDescriptions":{"typeIdentifier":"t_magic_message","typeString":"msg"}},"id":3545,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"2197:6:11","memberName":"sender","nodeType":"MemberAccess","src":"2193:10:11","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"nodeType":"BinaryOperation","operator":"!=","rightExpression":{"id":3546,"name":"FUNGIBLE_MODULE_ADDRESS","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3494,"src":"2207:23:11","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"src":"2193:37:11","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":3551,"nodeType":"IfStatement","src":"2189:77:11","trueBody":{"errorCall":{"arguments":[],"expression":{"argumentTypes":[],"id":3548,"name":"CallerIsNotFungibleModule","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3469,"src":"2239:25:11","typeDescriptions":{"typeIdentifier":"t_function_error_pure$__$returns$_t_error_$","typeString":"function () pure returns (error)"}},"id":3549,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"2239:27:11","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_error","typeString":"error"}},"id":3550,"nodeType":"RevertStatement","src":"2232:34:11"}},{"id":3552,"nodeType":"PlaceholderStatement","src":"2276:1:11"}]},"documentation":{"id":3542,"nodeType":"StructuredDocumentation","src":"2096:54:11","text":" @dev Only fungible module modifier."},"name":"onlyFungible","nameLocation":"2164:12:11","parameters":{"id":3543,"nodeType":"ParameterList","parameters":[],"src":"2176:2:11"},"virtual":false,"visibility":"internal"},{"id":3633,"nodeType":"FunctionDefinition","src":"2380:728:11","nodes":[],"body":{"id":3632,"nodeType":"Block","src":"2637:471:11","nodes":[],"statements":[{"condition":{"commonType":{"typeIdentifier":"t_address","typeString":"address"},"id":3578,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"expression":{"id":3575,"name":"msg","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-15,"src":"2651:3:11","typeDescriptions":{"typeIdentifier":"t_magic_message","typeString":"msg"}},"id":3576,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"2655:6:11","memberName":"sender","nodeType":"MemberAccess","src":"2651:10:11","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"nodeType":"BinaryOperation","operator":"!=","rightExpression":{"id":3577,"name":"FUNGIBLE_MODULE_ADDRESS","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3494,"src":"2665:23:11","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"src":"2651:37:11","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":3582,"nodeType":"IfStatement","src":"2647:77:11","trueBody":{"errorCall":{"arguments":[],"expression":{"argumentTypes":[],"id":3579,"name":"CallerIsNotFungibleModule","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3469,"src":"2697:25:11","typeDescriptions":{"typeIdentifier":"t_function_error_pure$__$returns$_t_error_$","typeString":"function () pure returns (error)"}},"id":3580,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"2697:27:11","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_error","typeString":"error"}},"id":3581,"nodeType":"RevertStatement","src":"2690:34:11"}},{"condition":{"commonType":{"typeIdentifier":"t_bool","typeString":"bool"},"id":3595,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"commonType":{"typeIdentifier":"t_address","typeString":"address"},"id":3588,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":3583,"name":"systemContractAddress_","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3570,"src":"2738:22:11","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"nodeType":"BinaryOperation","operator":"==","rightExpression":{"arguments":[{"hexValue":"30","id":3586,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"2772:1:11","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"}],"id":3585,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"2764:7:11","typeDescriptions":{"typeIdentifier":"t_type$_t_address_$","typeString":"type(address)"},"typeName":{"id":3584,"name":"address","nodeType":"ElementaryTypeName","src":"2764:7:11","typeDescriptions":{}}},"id":3587,"isConstant":false,"isLValue":false,"isPure":true,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"2764:10:11","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"src":"2738:36:11","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"nodeType":"BinaryOperation","operator":"||","rightExpression":{"commonType":{"typeIdentifier":"t_address","typeString":"address"},"id":3594,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":3589,"name":"gatewayAddress_","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3572,"src":"2778:15:11","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"nodeType":"BinaryOperation","operator":"==","rightExpression":{"arguments":[{"hexValue":"30","id":3592,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"2805:1:11","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"}],"id":3591,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"2797:7:11","typeDescriptions":{"typeIdentifier":"t_type$_t_address_$","typeString":"type(address)"},"typeName":{"id":3590,"name":"address","nodeType":"ElementaryTypeName","src":"2797:7:11","typeDescriptions":{}}},"id":3593,"isConstant":false,"isLValue":false,"isPure":true,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"2797:10:11","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"src":"2778:29:11","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"src":"2738:69:11","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":3599,"nodeType":"IfStatement","src":"2734:95:11","trueBody":{"errorCall":{"arguments":[],"expression":{"argumentTypes":[],"id":3596,"name":"ZeroAddress","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3483,"src":"2816:11:11","typeDescriptions":{"typeIdentifier":"t_function_error_pure$__$returns$_t_error_$","typeString":"function () pure returns (error)"}},"id":3597,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"2816:13:11","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_error","typeString":"error"}},"id":3598,"nodeType":"RevertStatement","src":"2809:20:11"}},{"expression":{"id":3602,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":3600,"name":"_name","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3525,"src":"2839:5:11","typeDescriptions":{"typeIdentifier":"t_string_storage","typeString":"string storage ref"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"id":3601,"name":"name_","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3557,"src":"2847:5:11","typeDescriptions":{"typeIdentifier":"t_string_memory_ptr","typeString":"string memory"}},"src":"2839:13:11","typeDescriptions":{"typeIdentifier":"t_string_storage","typeString":"string storage ref"}},"id":3603,"nodeType":"ExpressionStatement","src":"2839:13:11"},{"expression":{"id":3606,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":3604,"name":"_symbol","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3527,"src":"2862:7:11","typeDescriptions":{"typeIdentifier":"t_string_storage","typeString":"string storage ref"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"id":3605,"name":"symbol_","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3559,"src":"2872:7:11","typeDescriptions":{"typeIdentifier":"t_string_memory_ptr","typeString":"string memory"}},"src":"2862:17:11","typeDescriptions":{"typeIdentifier":"t_string_storage","typeString":"string storage ref"}},"id":3607,"nodeType":"ExpressionStatement","src":"2862:17:11"},{"expression":{"id":3610,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":3608,"name":"_decimals","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3529,"src":"2889:9:11","typeDescriptions":{"typeIdentifier":"t_uint8","typeString":"uint8"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"id":3609,"name":"decimals_","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3561,"src":"2901:9:11","typeDescriptions":{"typeIdentifier":"t_uint8","typeString":"uint8"}},"src":"2889:21:11","typeDescriptions":{"typeIdentifier":"t_uint8","typeString":"uint8"}},"id":3611,"nodeType":"ExpressionStatement","src":"2889:21:11"},{"expression":{"id":3614,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":3612,"name":"CHAIN_ID","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3497,"src":"2920:8:11","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"id":3613,"name":"chainid_","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3563,"src":"2931:8:11","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"2920:19:11","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":3615,"nodeType":"ExpressionStatement","src":"2920:19:11"},{"expression":{"id":3618,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":3616,"name":"COIN_TYPE","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3501,"src":"2949:9:11","typeDescriptions":{"typeIdentifier":"t_enum$_CoinType_$4903","typeString":"enum CoinType"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"id":3617,"name":"coinType_","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3566,"src":"2961:9:11","typeDescriptions":{"typeIdentifier":"t_enum$_CoinType_$4903","typeString":"enum CoinType"}},"src":"2949:21:11","typeDescriptions":{"typeIdentifier":"t_enum$_CoinType_$4903","typeString":"enum CoinType"}},"id":3619,"nodeType":"ExpressionStatement","src":"2949:21:11"},{"expression":{"id":3622,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":3620,"name":"GAS_LIMIT","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3507,"src":"2980:9:11","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"id":3621,"name":"gasLimit_","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3568,"src":"2992:9:11","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"2980:21:11","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":3623,"nodeType":"ExpressionStatement","src":"2980:21:11"},{"expression":{"id":3626,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":3624,"name":"SYSTEM_CONTRACT_ADDRESS","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3504,"src":"3011:23:11","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"id":3625,"name":"systemContractAddress_","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3570,"src":"3037:22:11","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"src":"3011:48:11","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"id":3627,"nodeType":"ExpressionStatement","src":"3011:48:11"},{"expression":{"id":3630,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":3628,"name":"gatewayAddress","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3532,"src":"3069:14:11","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"id":3629,"name":"gatewayAddress_","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3572,"src":"3086:15:11","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"src":"3069:32:11","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"id":3631,"nodeType":"ExpressionStatement","src":"3069:32:11"}]},"documentation":{"id":3555,"nodeType":"StructuredDocumentation","src":"2290:85:11","text":" @dev The only one allowed to deploy new ZRC20 is fungible address."},"implemented":true,"kind":"constructor","modifiers":[],"name":"","nameLocation":"-1:-1:-1","parameters":{"id":3573,"nodeType":"ParameterList","parameters":[{"constant":false,"id":3557,"mutability":"mutable","name":"name_","nameLocation":"2415:5:11","nodeType":"VariableDeclaration","scope":3633,"src":"2401:19:11","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_string_memory_ptr","typeString":"string"},"typeName":{"id":3556,"name":"string","nodeType":"ElementaryTypeName","src":"2401:6:11","typeDescriptions":{"typeIdentifier":"t_string_storage_ptr","typeString":"string"}},"visibility":"internal"},{"constant":false,"id":3559,"mutability":"mutable","name":"symbol_","nameLocation":"2444:7:11","nodeType":"VariableDeclaration","scope":3633,"src":"2430:21:11","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_string_memory_ptr","typeString":"string"},"typeName":{"id":3558,"name":"string","nodeType":"ElementaryTypeName","src":"2430:6:11","typeDescriptions":{"typeIdentifier":"t_string_storage_ptr","typeString":"string"}},"visibility":"internal"},{"constant":false,"id":3561,"mutability":"mutable","name":"decimals_","nameLocation":"2467:9:11","nodeType":"VariableDeclaration","scope":3633,"src":"2461:15:11","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint8","typeString":"uint8"},"typeName":{"id":3560,"name":"uint8","nodeType":"ElementaryTypeName","src":"2461:5:11","typeDescriptions":{"typeIdentifier":"t_uint8","typeString":"uint8"}},"visibility":"internal"},{"constant":false,"id":3563,"mutability":"mutable","name":"chainid_","nameLocation":"2494:8:11","nodeType":"VariableDeclaration","scope":3633,"src":"2486:16:11","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":3562,"name":"uint256","nodeType":"ElementaryTypeName","src":"2486:7:11","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":3566,"mutability":"mutable","name":"coinType_","nameLocation":"2521:9:11","nodeType":"VariableDeclaration","scope":3633,"src":"2512:18:11","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_enum$_CoinType_$4903","typeString":"enum CoinType"},"typeName":{"id":3565,"nodeType":"UserDefinedTypeName","pathNode":{"id":3564,"name":"CoinType","nameLocations":["2512:8:11"],"nodeType":"IdentifierPath","referencedDeclaration":4903,"src":"2512:8:11"},"referencedDeclaration":4903,"src":"2512:8:11","typeDescriptions":{"typeIdentifier":"t_enum$_CoinType_$4903","typeString":"enum CoinType"}},"visibility":"internal"},{"constant":false,"id":3568,"mutability":"mutable","name":"gasLimit_","nameLocation":"2548:9:11","nodeType":"VariableDeclaration","scope":3633,"src":"2540:17:11","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":3567,"name":"uint256","nodeType":"ElementaryTypeName","src":"2540:7:11","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":3570,"mutability":"mutable","name":"systemContractAddress_","nameLocation":"2575:22:11","nodeType":"VariableDeclaration","scope":3633,"src":"2567:30:11","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":3569,"name":"address","nodeType":"ElementaryTypeName","src":"2567:7:11","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":3572,"mutability":"mutable","name":"gatewayAddress_","nameLocation":"2615:15:11","nodeType":"VariableDeclaration","scope":3633,"src":"2607:23:11","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":3571,"name":"address","nodeType":"ElementaryTypeName","src":"2607:7:11","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"2391:245:11"},"returnParameters":{"id":3574,"nodeType":"ParameterList","parameters":[],"src":"2637:0:11"},"scope":4340,"stateMutability":"nonpayable","virtual":false,"visibility":"public"},{"id":3643,"nodeType":"FunctionDefinition","src":"3183:98:11","nodes":[],"body":{"id":3642,"nodeType":"Block","src":"3252:29:11","nodes":[],"statements":[{"expression":{"id":3640,"name":"_name","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3525,"src":"3269:5:11","typeDescriptions":{"typeIdentifier":"t_string_storage","typeString":"string storage ref"}},"functionReturnParameters":3639,"id":3641,"nodeType":"Return","src":"3262:12:11"}]},"baseFunctions":[4833],"documentation":{"id":3634,"nodeType":"StructuredDocumentation","src":"3114:64:11","text":" @dev ZRC20 name\n @return name as string"},"functionSelector":"06fdde03","implemented":true,"kind":"function","modifiers":[],"name":"name","nameLocation":"3192:4:11","overrides":{"id":3636,"nodeType":"OverrideSpecifier","overrides":[],"src":"3219:8:11"},"parameters":{"id":3635,"nodeType":"ParameterList","parameters":[],"src":"3196:2:11"},"returnParameters":{"id":3639,"nodeType":"ParameterList","parameters":[{"constant":false,"id":3638,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":3643,"src":"3237:13:11","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_string_memory_ptr","typeString":"string"},"typeName":{"id":3637,"name":"string","nodeType":"ElementaryTypeName","src":"3237:6:11","typeDescriptions":{"typeIdentifier":"t_string_storage_ptr","typeString":"string"}},"visibility":"internal"}],"src":"3236:15:11"},"scope":4340,"stateMutability":"view","virtual":true,"visibility":"public"},{"id":3657,"nodeType":"FunctionDefinition","src":"3363:103:11","nodes":[],"body":{"id":3656,"nodeType":"Block","src":"3434:32:11","nodes":[],"statements":[{"expression":{"id":3654,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":3652,"name":"_name","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3525,"src":"3444:5:11","typeDescriptions":{"typeIdentifier":"t_string_storage","typeString":"string storage ref"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"id":3653,"name":"newName","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3646,"src":"3452:7:11","typeDescriptions":{"typeIdentifier":"t_string_memory_ptr","typeString":"string memory"}},"src":"3444:15:11","typeDescriptions":{"typeIdentifier":"t_string_storage","typeString":"string storage ref"}},"id":3655,"nodeType":"ExpressionStatement","src":"3444:15:11"}]},"baseFunctions":[4819],"documentation":{"id":3644,"nodeType":"StructuredDocumentation","src":"3287:71:11","text":" @dev Name can be updated by fungible module account."},"functionSelector":"c47f0027","implemented":true,"kind":"function","modifiers":[{"id":3650,"kind":"modifierInvocation","modifierName":{"id":3649,"name":"onlyFungible","nameLocations":["3421:12:11"],"nodeType":"IdentifierPath","referencedDeclaration":3554,"src":"3421:12:11"},"nodeType":"ModifierInvocation","src":"3421:12:11"}],"name":"setName","nameLocation":"3372:7:11","overrides":{"id":3648,"nodeType":"OverrideSpecifier","overrides":[],"src":"3412:8:11"},"parameters":{"id":3647,"nodeType":"ParameterList","parameters":[{"constant":false,"id":3646,"mutability":"mutable","name":"newName","nameLocation":"3394:7:11","nodeType":"VariableDeclaration","scope":3657,"src":"3380:21:11","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_string_memory_ptr","typeString":"string"},"typeName":{"id":3645,"name":"string","nodeType":"ElementaryTypeName","src":"3380:6:11","typeDescriptions":{"typeIdentifier":"t_string_storage_ptr","typeString":"string"}},"visibility":"internal"}],"src":"3379:23:11"},"returnParameters":{"id":3651,"nodeType":"ParameterList","parameters":[],"src":"3434:0:11"},"scope":4340,"stateMutability":"nonpayable","virtual":false,"visibility":"external"},{"id":3671,"nodeType":"FunctionDefinition","src":"3550:111:11","nodes":[],"body":{"id":3670,"nodeType":"Block","src":"3625:36:11","nodes":[],"statements":[{"expression":{"id":3668,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":3666,"name":"_symbol","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3527,"src":"3635:7:11","typeDescriptions":{"typeIdentifier":"t_string_storage","typeString":"string storage ref"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"id":3667,"name":"newSymbol","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3660,"src":"3645:9:11","typeDescriptions":{"typeIdentifier":"t_string_memory_ptr","typeString":"string memory"}},"src":"3635:19:11","typeDescriptions":{"typeIdentifier":"t_string_storage","typeString":"string storage ref"}},"id":3669,"nodeType":"ExpressionStatement","src":"3635:19:11"}]},"baseFunctions":[4824],"documentation":{"id":3658,"nodeType":"StructuredDocumentation","src":"3472:73:11","text":" @dev Symbol can be updated by fungible module account."},"functionSelector":"b84c8246","implemented":true,"kind":"function","modifiers":[{"id":3664,"kind":"modifierInvocation","modifierName":{"id":3663,"name":"onlyFungible","nameLocations":["3612:12:11"],"nodeType":"IdentifierPath","referencedDeclaration":3554,"src":"3612:12:11"},"nodeType":"ModifierInvocation","src":"3612:12:11"}],"name":"setSymbol","nameLocation":"3559:9:11","overrides":{"id":3662,"nodeType":"OverrideSpecifier","overrides":[],"src":"3603:8:11"},"parameters":{"id":3661,"nodeType":"ParameterList","parameters":[{"constant":false,"id":3660,"mutability":"mutable","name":"newSymbol","nameLocation":"3583:9:11","nodeType":"VariableDeclaration","scope":3671,"src":"3569:23:11","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_string_memory_ptr","typeString":"string"},"typeName":{"id":3659,"name":"string","nodeType":"ElementaryTypeName","src":"3569:6:11","typeDescriptions":{"typeIdentifier":"t_string_storage_ptr","typeString":"string"}},"visibility":"internal"}],"src":"3568:25:11"},"returnParameters":{"id":3665,"nodeType":"ParameterList","parameters":[],"src":"3625:0:11"},"scope":4340,"stateMutability":"nonpayable","virtual":false,"visibility":"external"},{"id":3681,"nodeType":"FunctionDefinition","src":"3742:102:11","nodes":[],"body":{"id":3680,"nodeType":"Block","src":"3813:31:11","nodes":[],"statements":[{"expression":{"id":3678,"name":"_symbol","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3527,"src":"3830:7:11","typeDescriptions":{"typeIdentifier":"t_string_storage","typeString":"string storage ref"}},"functionReturnParameters":3677,"id":3679,"nodeType":"Return","src":"3823:14:11"}]},"baseFunctions":[4838],"documentation":{"id":3672,"nodeType":"StructuredDocumentation","src":"3667:70:11","text":" @dev ZRC20 symbol.\n @return symbol as string."},"functionSelector":"95d89b41","implemented":true,"kind":"function","modifiers":[],"name":"symbol","nameLocation":"3751:6:11","overrides":{"id":3674,"nodeType":"OverrideSpecifier","overrides":[],"src":"3780:8:11"},"parameters":{"id":3673,"nodeType":"ParameterList","parameters":[],"src":"3757:2:11"},"returnParameters":{"id":3677,"nodeType":"ParameterList","parameters":[{"constant":false,"id":3676,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":3681,"src":"3798:13:11","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_string_memory_ptr","typeString":"string"},"typeName":{"id":3675,"name":"string","nodeType":"ElementaryTypeName","src":"3798:6:11","typeDescriptions":{"typeIdentifier":"t_string_storage_ptr","typeString":"string"}},"visibility":"internal"}],"src":"3797:15:11"},"scope":4340,"stateMutability":"view","virtual":true,"visibility":"public"},{"id":3691,"nodeType":"FunctionDefinition","src":"3933:98:11","nodes":[],"body":{"id":3690,"nodeType":"Block","src":"3998:33:11","nodes":[],"statements":[{"expression":{"id":3688,"name":"_decimals","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3529,"src":"4015:9:11","typeDescriptions":{"typeIdentifier":"t_uint8","typeString":"uint8"}},"functionReturnParameters":3687,"id":3689,"nodeType":"Return","src":"4008:16:11"}]},"baseFunctions":[4843],"documentation":{"id":3682,"nodeType":"StructuredDocumentation","src":"3850:78:11","text":" @dev ZRC20 decimals.\n @return returns uint8 decimals."},"functionSelector":"313ce567","implemented":true,"kind":"function","modifiers":[],"name":"decimals","nameLocation":"3942:8:11","overrides":{"id":3684,"nodeType":"OverrideSpecifier","overrides":[],"src":"3973:8:11"},"parameters":{"id":3683,"nodeType":"ParameterList","parameters":[],"src":"3950:2:11"},"returnParameters":{"id":3687,"nodeType":"ParameterList","parameters":[{"constant":false,"id":3686,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":3691,"src":"3991:5:11","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint8","typeString":"uint8"},"typeName":{"id":3685,"name":"uint8","nodeType":"ElementaryTypeName","src":"3991:5:11","typeDescriptions":{"typeIdentifier":"t_uint8","typeString":"uint8"}},"visibility":"internal"}],"src":"3990:7:11"},"scope":4340,"stateMutability":"view","virtual":true,"visibility":"public"},{"id":3701,"nodeType":"FunctionDefinition","src":"4130:106:11","nodes":[],"body":{"id":3700,"nodeType":"Block","src":"4200:36:11","nodes":[],"statements":[{"expression":{"id":3698,"name":"_totalSupply","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3523,"src":"4217:12:11","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"functionReturnParameters":3697,"id":3699,"nodeType":"Return","src":"4210:19:11"}]},"baseFunctions":[4716],"documentation":{"id":3692,"nodeType":"StructuredDocumentation","src":"4037:88:11","text":" @dev ZRC20 total supply.\n @return returns uint256 total supply."},"functionSelector":"18160ddd","implemented":true,"kind":"function","modifiers":[],"name":"totalSupply","nameLocation":"4139:11:11","overrides":{"id":3694,"nodeType":"OverrideSpecifier","overrides":[],"src":"4173:8:11"},"parameters":{"id":3693,"nodeType":"ParameterList","parameters":[],"src":"4150:2:11"},"returnParameters":{"id":3697,"nodeType":"ParameterList","parameters":[{"constant":false,"id":3696,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":3701,"src":"4191:7:11","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":3695,"name":"uint256","nodeType":"ElementaryTypeName","src":"4191:7:11","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"4190:9:11"},"scope":4340,"stateMutability":"view","virtual":true,"visibility":"public"},{"id":3715,"nodeType":"FunctionDefinition","src":"4418:125:11","nodes":[],"body":{"id":3714,"nodeType":"Block","src":"4501:42:11","nodes":[],"statements":[{"expression":{"baseExpression":{"id":3710,"name":"_balances","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3515,"src":"4518:9:11","typeDescriptions":{"typeIdentifier":"t_mapping$_t_address_$_t_uint256_$","typeString":"mapping(address => uint256)"}},"id":3712,"indexExpression":{"id":3711,"name":"account","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3704,"src":"4528:7:11","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"nodeType":"IndexAccess","src":"4518:18:11","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"functionReturnParameters":3709,"id":3713,"nodeType":"Return","src":"4511:25:11"}]},"baseFunctions":[4723],"documentation":{"id":3702,"nodeType":"StructuredDocumentation","src":"4242:171:11","text":" @dev Returns ZRC20 balance of an account.\n @param account, account address for which balance is requested.\n @return uint256 account balance."},"functionSelector":"70a08231","implemented":true,"kind":"function","modifiers":[],"name":"balanceOf","nameLocation":"4427:9:11","overrides":{"id":3706,"nodeType":"OverrideSpecifier","overrides":[],"src":"4474:8:11"},"parameters":{"id":3705,"nodeType":"ParameterList","parameters":[{"constant":false,"id":3704,"mutability":"mutable","name":"account","nameLocation":"4445:7:11","nodeType":"VariableDeclaration","scope":3715,"src":"4437:15:11","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":3703,"name":"address","nodeType":"ElementaryTypeName","src":"4437:7:11","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"4436:17:11"},"returnParameters":{"id":3709,"nodeType":"ParameterList","parameters":[{"constant":false,"id":3708,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":3715,"src":"4492:7:11","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":3707,"name":"uint256","nodeType":"ElementaryTypeName","src":"4492:7:11","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"4491:9:11"},"scope":4340,"stateMutability":"view","virtual":true,"visibility":"public"},{"id":3736,"nodeType":"FunctionDefinition","src":"4741:172:11","nodes":[],"body":{"id":3735,"nodeType":"Block","src":"4833:80:11","nodes":[],"statements":[{"expression":{"arguments":[{"arguments":[],"expression":{"argumentTypes":[],"id":3727,"name":"_msgSender","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3541,"src":"4853:10:11","typeDescriptions":{"typeIdentifier":"t_function_internal_view$__$returns$_t_address_$","typeString":"function () view returns (address)"}},"id":3728,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"4853:12:11","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":3729,"name":"recipient","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3718,"src":"4867:9:11","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":3730,"name":"amount","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3720,"src":"4878:6:11","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":3726,"name":"_transfer","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3903,"src":"4843:9:11","typeDescriptions":{"typeIdentifier":"t_function_internal_nonpayable$_t_address_$_t_address_$_t_uint256_$returns$__$","typeString":"function (address,address,uint256)"}},"id":3731,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"4843:42:11","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":3732,"nodeType":"ExpressionStatement","src":"4843:42:11"},{"expression":{"hexValue":"74727565","id":3733,"isConstant":false,"isLValue":false,"isPure":true,"kind":"bool","lValueRequested":false,"nodeType":"Literal","src":"4902:4:11","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"value":"true"},"functionReturnParameters":3725,"id":3734,"nodeType":"Return","src":"4895:11:11"}]},"baseFunctions":[4732],"documentation":{"id":3716,"nodeType":"StructuredDocumentation","src":"4549:187:11","text":" @dev Returns ZRC20 balance of an account.\n @param recipient, recipiuent address to which transfer is done.\n @return true/false if transfer succeeded/failed."},"functionSelector":"a9059cbb","implemented":true,"kind":"function","modifiers":[],"name":"transfer","nameLocation":"4750:8:11","overrides":{"id":3722,"nodeType":"OverrideSpecifier","overrides":[],"src":"4809:8:11"},"parameters":{"id":3721,"nodeType":"ParameterList","parameters":[{"constant":false,"id":3718,"mutability":"mutable","name":"recipient","nameLocation":"4767:9:11","nodeType":"VariableDeclaration","scope":3736,"src":"4759:17:11","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":3717,"name":"address","nodeType":"ElementaryTypeName","src":"4759:7:11","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":3720,"mutability":"mutable","name":"amount","nameLocation":"4786:6:11","nodeType":"VariableDeclaration","scope":3736,"src":"4778:14:11","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":3719,"name":"uint256","nodeType":"ElementaryTypeName","src":"4778:7:11","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"4758:35:11"},"returnParameters":{"id":3725,"nodeType":"ParameterList","parameters":[{"constant":false,"id":3724,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":3736,"src":"4827:4:11","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"typeName":{"id":3723,"name":"bool","nodeType":"ElementaryTypeName","src":"4827:4:11","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"visibility":"internal"}],"src":"4826:6:11"},"scope":4340,"stateMutability":"nonpayable","virtual":true,"visibility":"public"},{"id":3754,"nodeType":"FunctionDefinition","src":"5064:149:11","nodes":[],"body":{"id":3753,"nodeType":"Block","src":"5162:51:11","nodes":[],"statements":[{"expression":{"baseExpression":{"baseExpression":{"id":3747,"name":"_allowances","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3521,"src":"5179:11:11","typeDescriptions":{"typeIdentifier":"t_mapping$_t_address_$_t_mapping$_t_address_$_t_uint256_$_$","typeString":"mapping(address => mapping(address => uint256))"}},"id":3749,"indexExpression":{"id":3748,"name":"owner","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3739,"src":"5191:5:11","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"nodeType":"IndexAccess","src":"5179:18:11","typeDescriptions":{"typeIdentifier":"t_mapping$_t_address_$_t_uint256_$","typeString":"mapping(address => uint256)"}},"id":3751,"indexExpression":{"id":3750,"name":"spender","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3741,"src":"5198:7:11","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"nodeType":"IndexAccess","src":"5179:27:11","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"functionReturnParameters":3746,"id":3752,"nodeType":"Return","src":"5172:34:11"}]},"baseFunctions":[4741],"documentation":{"id":3737,"nodeType":"StructuredDocumentation","src":"4919:140:11","text":" @dev Returns token allowance from owner to spender.\n @param owner, owner address.\n @return uint256 allowance."},"functionSelector":"dd62ed3e","implemented":true,"kind":"function","modifiers":[],"name":"allowance","nameLocation":"5073:9:11","overrides":{"id":3743,"nodeType":"OverrideSpecifier","overrides":[],"src":"5135:8:11"},"parameters":{"id":3742,"nodeType":"ParameterList","parameters":[{"constant":false,"id":3739,"mutability":"mutable","name":"owner","nameLocation":"5091:5:11","nodeType":"VariableDeclaration","scope":3754,"src":"5083:13:11","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":3738,"name":"address","nodeType":"ElementaryTypeName","src":"5083:7:11","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":3741,"mutability":"mutable","name":"spender","nameLocation":"5106:7:11","nodeType":"VariableDeclaration","scope":3754,"src":"5098:15:11","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":3740,"name":"address","nodeType":"ElementaryTypeName","src":"5098:7:11","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"5082:32:11"},"returnParameters":{"id":3746,"nodeType":"ParameterList","parameters":[{"constant":false,"id":3745,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":3754,"src":"5153:7:11","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":3744,"name":"uint256","nodeType":"ElementaryTypeName","src":"5153:7:11","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"5152:9:11"},"scope":4340,"stateMutability":"view","virtual":true,"visibility":"public"},{"id":3775,"nodeType":"FunctionDefinition","src":"5417:166:11","nodes":[],"body":{"id":3774,"nodeType":"Block","src":"5506:77:11","nodes":[],"statements":[{"expression":{"arguments":[{"arguments":[],"expression":{"argumentTypes":[],"id":3766,"name":"_msgSender","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3541,"src":"5525:10:11","typeDescriptions":{"typeIdentifier":"t_function_internal_view$__$returns$_t_address_$","typeString":"function () view returns (address)"}},"id":3767,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"5525:12:11","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":3768,"name":"spender","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3757,"src":"5539:7:11","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":3769,"name":"amount","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3759,"src":"5548:6:11","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":3765,"name":"_approve","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4036,"src":"5516:8:11","typeDescriptions":{"typeIdentifier":"t_function_internal_nonpayable$_t_address_$_t_address_$_t_uint256_$returns$__$","typeString":"function (address,address,uint256)"}},"id":3770,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"5516:39:11","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":3771,"nodeType":"ExpressionStatement","src":"5516:39:11"},{"expression":{"hexValue":"74727565","id":3772,"isConstant":false,"isLValue":false,"isPure":true,"kind":"bool","lValueRequested":false,"nodeType":"Literal","src":"5572:4:11","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"value":"true"},"functionReturnParameters":3764,"id":3773,"nodeType":"Return","src":"5565:11:11"}]},"baseFunctions":[4750],"documentation":{"id":3755,"nodeType":"StructuredDocumentation","src":"5219:193:11","text":" @dev Approves amount transferFrom for spender.\n @param spender, spender address.\n @param amount, amount to approve.\n @return true/false if succeeded/failed."},"functionSelector":"095ea7b3","implemented":true,"kind":"function","modifiers":[],"name":"approve","nameLocation":"5426:7:11","overrides":{"id":3761,"nodeType":"OverrideSpecifier","overrides":[],"src":"5482:8:11"},"parameters":{"id":3760,"nodeType":"ParameterList","parameters":[{"constant":false,"id":3757,"mutability":"mutable","name":"spender","nameLocation":"5442:7:11","nodeType":"VariableDeclaration","scope":3775,"src":"5434:15:11","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":3756,"name":"address","nodeType":"ElementaryTypeName","src":"5434:7:11","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":3759,"mutability":"mutable","name":"amount","nameLocation":"5459:6:11","nodeType":"VariableDeclaration","scope":3775,"src":"5451:14:11","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":3758,"name":"uint256","nodeType":"ElementaryTypeName","src":"5451:7:11","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"5433:33:11"},"returnParameters":{"id":3764,"nodeType":"ParameterList","parameters":[{"constant":false,"id":3763,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":3775,"src":"5500:4:11","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"typeName":{"id":3762,"name":"bool","nodeType":"ElementaryTypeName","src":"5500:4:11","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"visibility":"internal"}],"src":"5499:6:11"},"scope":4340,"stateMutability":"nonpayable","virtual":true,"visibility":"public"},{"id":3822,"nodeType":"FunctionDefinition","src":"5831:388:11","nodes":[],"body":{"id":3821,"nodeType":"Block","src":"5943:276:11","nodes":[],"statements":[{"expression":{"arguments":[{"id":3789,"name":"sender","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3778,"src":"5963:6:11","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":3790,"name":"recipient","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3780,"src":"5971:9:11","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":3791,"name":"amount","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3782,"src":"5982:6:11","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":3788,"name":"_transfer","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3903,"src":"5953:9:11","typeDescriptions":{"typeIdentifier":"t_function_internal_nonpayable$_t_address_$_t_address_$_t_uint256_$returns$__$","typeString":"function (address,address,uint256)"}},"id":3792,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"5953:36:11","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":3793,"nodeType":"ExpressionStatement","src":"5953:36:11"},{"assignments":[3795],"declarations":[{"constant":false,"id":3795,"mutability":"mutable","name":"currentAllowance","nameLocation":"6008:16:11","nodeType":"VariableDeclaration","scope":3821,"src":"6000:24:11","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":3794,"name":"uint256","nodeType":"ElementaryTypeName","src":"6000:7:11","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"id":3802,"initialValue":{"baseExpression":{"baseExpression":{"id":3796,"name":"_allowances","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3521,"src":"6027:11:11","typeDescriptions":{"typeIdentifier":"t_mapping$_t_address_$_t_mapping$_t_address_$_t_uint256_$_$","typeString":"mapping(address => mapping(address => uint256))"}},"id":3798,"indexExpression":{"id":3797,"name":"sender","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3778,"src":"6039:6:11","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"nodeType":"IndexAccess","src":"6027:19:11","typeDescriptions":{"typeIdentifier":"t_mapping$_t_address_$_t_uint256_$","typeString":"mapping(address => uint256)"}},"id":3801,"indexExpression":{"arguments":[],"expression":{"argumentTypes":[],"id":3799,"name":"_msgSender","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3541,"src":"6047:10:11","typeDescriptions":{"typeIdentifier":"t_function_internal_view$__$returns$_t_address_$","typeString":"function () view returns (address)"}},"id":3800,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"6047:12:11","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"nodeType":"IndexAccess","src":"6027:33:11","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"VariableDeclarationStatement","src":"6000:60:11"},{"condition":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":3805,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":3803,"name":"currentAllowance","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3795,"src":"6074:16:11","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"<","rightExpression":{"id":3804,"name":"amount","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3782,"src":"6093:6:11","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"6074:25:11","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":3809,"nodeType":"IfStatement","src":"6070:52:11","trueBody":{"errorCall":{"arguments":[],"expression":{"argumentTypes":[],"id":3806,"name":"LowAllowance","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3479,"src":"6108:12:11","typeDescriptions":{"typeIdentifier":"t_function_error_pure$__$returns$_t_error_$","typeString":"function () pure returns (error)"}},"id":3807,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"6108:14:11","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_error","typeString":"error"}},"id":3808,"nodeType":"RevertStatement","src":"6101:21:11"}},{"expression":{"arguments":[{"id":3811,"name":"sender","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3778,"src":"6142:6:11","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"arguments":[],"expression":{"argumentTypes":[],"id":3812,"name":"_msgSender","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3541,"src":"6150:10:11","typeDescriptions":{"typeIdentifier":"t_function_internal_view$__$returns$_t_address_$","typeString":"function () view returns (address)"}},"id":3813,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"6150:12:11","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":3816,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":3814,"name":"currentAllowance","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3795,"src":"6164:16:11","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"-","rightExpression":{"id":3815,"name":"amount","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3782,"src":"6183:6:11","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"6164:25:11","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":3810,"name":"_approve","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4036,"src":"6133:8:11","typeDescriptions":{"typeIdentifier":"t_function_internal_nonpayable$_t_address_$_t_address_$_t_uint256_$returns$__$","typeString":"function (address,address,uint256)"}},"id":3817,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"6133:57:11","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":3818,"nodeType":"ExpressionStatement","src":"6133:57:11"},{"expression":{"hexValue":"74727565","id":3819,"isConstant":false,"isLValue":false,"isPure":true,"kind":"bool","lValueRequested":false,"nodeType":"Literal","src":"6208:4:11","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"value":"true"},"functionReturnParameters":3787,"id":3820,"nodeType":"Return","src":"6201:11:11"}]},"baseFunctions":[4761],"documentation":{"id":3776,"nodeType":"StructuredDocumentation","src":"5589:237:11","text":" @dev Transfers tokens from sender to recipient.\n @param sender, sender address.\n @param recipient, recipient address.\n @param amount, amount to transfer.\n @return true/false if succeeded/failed."},"functionSelector":"23b872dd","implemented":true,"kind":"function","modifiers":[],"name":"transferFrom","nameLocation":"5840:12:11","overrides":{"id":3784,"nodeType":"OverrideSpecifier","overrides":[],"src":"5919:8:11"},"parameters":{"id":3783,"nodeType":"ParameterList","parameters":[{"constant":false,"id":3778,"mutability":"mutable","name":"sender","nameLocation":"5861:6:11","nodeType":"VariableDeclaration","scope":3822,"src":"5853:14:11","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":3777,"name":"address","nodeType":"ElementaryTypeName","src":"5853:7:11","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":3780,"mutability":"mutable","name":"recipient","nameLocation":"5877:9:11","nodeType":"VariableDeclaration","scope":3822,"src":"5869:17:11","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":3779,"name":"address","nodeType":"ElementaryTypeName","src":"5869:7:11","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":3782,"mutability":"mutable","name":"amount","nameLocation":"5896:6:11","nodeType":"VariableDeclaration","scope":3822,"src":"5888:14:11","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":3781,"name":"uint256","nodeType":"ElementaryTypeName","src":"5888:7:11","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"5852:51:11"},"returnParameters":{"id":3787,"nodeType":"ParameterList","parameters":[{"constant":false,"id":3786,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":3822,"src":"5937:4:11","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"typeName":{"id":3785,"name":"bool","nodeType":"ElementaryTypeName","src":"5937:4:11","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"visibility":"internal"}],"src":"5936:6:11"},"scope":4340,"stateMutability":"nonpayable","virtual":true,"visibility":"public"},{"id":3840,"nodeType":"FunctionDefinition","src":"6365:126:11","nodes":[],"body":{"id":3839,"nodeType":"Block","src":"6428:63:11","nodes":[],"statements":[{"expression":{"arguments":[{"expression":{"id":3832,"name":"msg","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-15,"src":"6444:3:11","typeDescriptions":{"typeIdentifier":"t_magic_message","typeString":"msg"}},"id":3833,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"6448:6:11","memberName":"sender","nodeType":"MemberAccess","src":"6444:10:11","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":3834,"name":"amount","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3825,"src":"6456:6:11","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":3831,"name":"_burn","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3992,"src":"6438:5:11","typeDescriptions":{"typeIdentifier":"t_function_internal_nonpayable$_t_address_$_t_uint256_$returns$__$","typeString":"function (address,uint256)"}},"id":3835,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"6438:25:11","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":3836,"nodeType":"ExpressionStatement","src":"6438:25:11"},{"expression":{"hexValue":"74727565","id":3837,"isConstant":false,"isLValue":false,"isPure":true,"kind":"bool","lValueRequested":false,"nodeType":"Literal","src":"6480:4:11","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"value":"true"},"functionReturnParameters":3830,"id":3838,"nodeType":"Return","src":"6473:11:11"}]},"baseFunctions":[4777],"documentation":{"id":3823,"nodeType":"StructuredDocumentation","src":"6225:135:11","text":" @dev Burns an amount of tokens.\n @param amount, amount to burn.\n @return true/false if succeeded/failed."},"functionSelector":"42966c68","implemented":true,"kind":"function","modifiers":[],"name":"burn","nameLocation":"6374:4:11","overrides":{"id":3827,"nodeType":"OverrideSpecifier","overrides":[],"src":"6404:8:11"},"parameters":{"id":3826,"nodeType":"ParameterList","parameters":[{"constant":false,"id":3825,"mutability":"mutable","name":"amount","nameLocation":"6387:6:11","nodeType":"VariableDeclaration","scope":3840,"src":"6379:14:11","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":3824,"name":"uint256","nodeType":"ElementaryTypeName","src":"6379:7:11","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"6378:16:11"},"returnParameters":{"id":3830,"nodeType":"ParameterList","parameters":[{"constant":false,"id":3829,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":3840,"src":"6422:4:11","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"typeName":{"id":3828,"name":"bool","nodeType":"ElementaryTypeName","src":"6422:4:11","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"visibility":"internal"}],"src":"6421:6:11"},"scope":4340,"stateMutability":"nonpayable","virtual":false,"visibility":"external"},{"id":3903,"nodeType":"FunctionDefinition","src":"6497:462:11","nodes":[],"body":{"id":3902,"nodeType":"Block","src":"6584:375:11","nodes":[],"statements":[{"condition":{"commonType":{"typeIdentifier":"t_address","typeString":"address"},"id":3854,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":3849,"name":"sender","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3842,"src":"6598:6:11","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"nodeType":"BinaryOperation","operator":"==","rightExpression":{"arguments":[{"hexValue":"30","id":3852,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"6616:1:11","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"}],"id":3851,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"6608:7:11","typeDescriptions":{"typeIdentifier":"t_type$_t_address_$","typeString":"type(address)"},"typeName":{"id":3850,"name":"address","nodeType":"ElementaryTypeName","src":"6608:7:11","typeDescriptions":{}}},"id":3853,"isConstant":false,"isLValue":false,"isPure":true,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"6608:10:11","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"src":"6598:20:11","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":3858,"nodeType":"IfStatement","src":"6594:46:11","trueBody":{"errorCall":{"arguments":[],"expression":{"argumentTypes":[],"id":3855,"name":"ZeroAddress","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3483,"src":"6627:11:11","typeDescriptions":{"typeIdentifier":"t_function_error_pure$__$returns$_t_error_$","typeString":"function () pure returns (error)"}},"id":3856,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"6627:13:11","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_error","typeString":"error"}},"id":3857,"nodeType":"RevertStatement","src":"6620:20:11"}},{"condition":{"commonType":{"typeIdentifier":"t_address","typeString":"address"},"id":3864,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":3859,"name":"recipient","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3844,"src":"6654:9:11","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"nodeType":"BinaryOperation","operator":"==","rightExpression":{"arguments":[{"hexValue":"30","id":3862,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"6675:1:11","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"}],"id":3861,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"6667:7:11","typeDescriptions":{"typeIdentifier":"t_type$_t_address_$","typeString":"type(address)"},"typeName":{"id":3860,"name":"address","nodeType":"ElementaryTypeName","src":"6667:7:11","typeDescriptions":{}}},"id":3863,"isConstant":false,"isLValue":false,"isPure":true,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"6667:10:11","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"src":"6654:23:11","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":3868,"nodeType":"IfStatement","src":"6650:49:11","trueBody":{"errorCall":{"arguments":[],"expression":{"argumentTypes":[],"id":3865,"name":"ZeroAddress","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3483,"src":"6686:11:11","typeDescriptions":{"typeIdentifier":"t_function_error_pure$__$returns$_t_error_$","typeString":"function () pure returns (error)"}},"id":3866,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"6686:13:11","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_error","typeString":"error"}},"id":3867,"nodeType":"RevertStatement","src":"6679:20:11"}},{"assignments":[3870],"declarations":[{"constant":false,"id":3870,"mutability":"mutable","name":"senderBalance","nameLocation":"6718:13:11","nodeType":"VariableDeclaration","scope":3902,"src":"6710:21:11","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":3869,"name":"uint256","nodeType":"ElementaryTypeName","src":"6710:7:11","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"id":3874,"initialValue":{"baseExpression":{"id":3871,"name":"_balances","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3515,"src":"6734:9:11","typeDescriptions":{"typeIdentifier":"t_mapping$_t_address_$_t_uint256_$","typeString":"mapping(address => uint256)"}},"id":3873,"indexExpression":{"id":3872,"name":"sender","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3842,"src":"6744:6:11","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"nodeType":"IndexAccess","src":"6734:17:11","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"VariableDeclarationStatement","src":"6710:41:11"},{"condition":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":3877,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":3875,"name":"senderBalance","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3870,"src":"6765:13:11","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"<","rightExpression":{"id":3876,"name":"amount","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3846,"src":"6781:6:11","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"6765:22:11","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":3881,"nodeType":"IfStatement","src":"6761:47:11","trueBody":{"errorCall":{"arguments":[],"expression":{"argumentTypes":[],"id":3878,"name":"LowBalance","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3481,"src":"6796:10:11","typeDescriptions":{"typeIdentifier":"t_function_error_pure$__$returns$_t_error_$","typeString":"function () pure returns (error)"}},"id":3879,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"6796:12:11","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_error","typeString":"error"}},"id":3880,"nodeType":"RevertStatement","src":"6789:19:11"}},{"expression":{"id":3888,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"baseExpression":{"id":3882,"name":"_balances","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3515,"src":"6819:9:11","typeDescriptions":{"typeIdentifier":"t_mapping$_t_address_$_t_uint256_$","typeString":"mapping(address => uint256)"}},"id":3884,"indexExpression":{"id":3883,"name":"sender","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3842,"src":"6829:6:11","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":true,"nodeType":"IndexAccess","src":"6819:17:11","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":3887,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":3885,"name":"senderBalance","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3870,"src":"6839:13:11","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"-","rightExpression":{"id":3886,"name":"amount","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3846,"src":"6855:6:11","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"6839:22:11","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"6819:42:11","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":3889,"nodeType":"ExpressionStatement","src":"6819:42:11"},{"expression":{"id":3894,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"baseExpression":{"id":3890,"name":"_balances","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3515,"src":"6871:9:11","typeDescriptions":{"typeIdentifier":"t_mapping$_t_address_$_t_uint256_$","typeString":"mapping(address => uint256)"}},"id":3892,"indexExpression":{"id":3891,"name":"recipient","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3844,"src":"6881:9:11","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":true,"nodeType":"IndexAccess","src":"6871:20:11","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":"+=","rightHandSide":{"id":3893,"name":"amount","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3846,"src":"6895:6:11","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"6871:30:11","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":3895,"nodeType":"ExpressionStatement","src":"6871:30:11"},{"eventCall":{"arguments":[{"id":3897,"name":"sender","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3842,"src":"6926:6:11","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":3898,"name":"recipient","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3844,"src":"6934:9:11","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":3899,"name":"amount","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3846,"src":"6945:6:11","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":3896,"name":"Transfer","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4853,"src":"6917:8:11","typeDescriptions":{"typeIdentifier":"t_function_event_nonpayable$_t_address_$_t_address_$_t_uint256_$returns$__$","typeString":"function (address,address,uint256)"}},"id":3900,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"6917:35:11","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":3901,"nodeType":"EmitStatement","src":"6912:40:11"}]},"implemented":true,"kind":"function","modifiers":[],"name":"_transfer","nameLocation":"6506:9:11","parameters":{"id":3847,"nodeType":"ParameterList","parameters":[{"constant":false,"id":3842,"mutability":"mutable","name":"sender","nameLocation":"6524:6:11","nodeType":"VariableDeclaration","scope":3903,"src":"6516:14:11","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":3841,"name":"address","nodeType":"ElementaryTypeName","src":"6516:7:11","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":3844,"mutability":"mutable","name":"recipient","nameLocation":"6540:9:11","nodeType":"VariableDeclaration","scope":3903,"src":"6532:17:11","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":3843,"name":"address","nodeType":"ElementaryTypeName","src":"6532:7:11","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":3846,"mutability":"mutable","name":"amount","nameLocation":"6559:6:11","nodeType":"VariableDeclaration","scope":3903,"src":"6551:14:11","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":3845,"name":"uint256","nodeType":"ElementaryTypeName","src":"6551:7:11","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"6515:51:11"},"returnParameters":{"id":3848,"nodeType":"ParameterList","parameters":[],"src":"6584:0:11"},"scope":4340,"stateMutability":"nonpayable","virtual":true,"visibility":"internal"},{"id":3940,"nodeType":"FunctionDefinition","src":"6965:252:11","nodes":[],"body":{"id":3939,"nodeType":"Block","src":"7030:187:11","nodes":[],"statements":[{"condition":{"commonType":{"typeIdentifier":"t_address","typeString":"address"},"id":3915,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":3910,"name":"account","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3905,"src":"7044:7:11","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"nodeType":"BinaryOperation","operator":"==","rightExpression":{"arguments":[{"hexValue":"30","id":3913,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"7063:1:11","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"}],"id":3912,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"7055:7:11","typeDescriptions":{"typeIdentifier":"t_type$_t_address_$","typeString":"type(address)"},"typeName":{"id":3911,"name":"address","nodeType":"ElementaryTypeName","src":"7055:7:11","typeDescriptions":{}}},"id":3914,"isConstant":false,"isLValue":false,"isPure":true,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"7055:10:11","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"src":"7044:21:11","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":3919,"nodeType":"IfStatement","src":"7040:47:11","trueBody":{"errorCall":{"arguments":[],"expression":{"argumentTypes":[],"id":3916,"name":"ZeroAddress","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3483,"src":"7074:11:11","typeDescriptions":{"typeIdentifier":"t_function_error_pure$__$returns$_t_error_$","typeString":"function () pure returns (error)"}},"id":3917,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"7074:13:11","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_error","typeString":"error"}},"id":3918,"nodeType":"RevertStatement","src":"7067:20:11"}},{"expression":{"id":3922,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":3920,"name":"_totalSupply","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3523,"src":"7098:12:11","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":"+=","rightHandSide":{"id":3921,"name":"amount","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3907,"src":"7114:6:11","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"7098:22:11","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":3923,"nodeType":"ExpressionStatement","src":"7098:22:11"},{"expression":{"id":3928,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"baseExpression":{"id":3924,"name":"_balances","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3515,"src":"7130:9:11","typeDescriptions":{"typeIdentifier":"t_mapping$_t_address_$_t_uint256_$","typeString":"mapping(address => uint256)"}},"id":3926,"indexExpression":{"id":3925,"name":"account","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3905,"src":"7140:7:11","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":true,"nodeType":"IndexAccess","src":"7130:18:11","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":"+=","rightHandSide":{"id":3927,"name":"amount","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3907,"src":"7152:6:11","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"7130:28:11","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":3929,"nodeType":"ExpressionStatement","src":"7130:28:11"},{"eventCall":{"arguments":[{"arguments":[{"hexValue":"30","id":3933,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"7190:1:11","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"}],"id":3932,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"7182:7:11","typeDescriptions":{"typeIdentifier":"t_type$_t_address_$","typeString":"type(address)"},"typeName":{"id":3931,"name":"address","nodeType":"ElementaryTypeName","src":"7182:7:11","typeDescriptions":{}}},"id":3934,"isConstant":false,"isLValue":false,"isPure":true,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"7182:10:11","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":3935,"name":"account","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3905,"src":"7194:7:11","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":3936,"name":"amount","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3907,"src":"7203:6:11","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":3930,"name":"Transfer","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4853,"src":"7173:8:11","typeDescriptions":{"typeIdentifier":"t_function_event_nonpayable$_t_address_$_t_address_$_t_uint256_$returns$__$","typeString":"function (address,address,uint256)"}},"id":3937,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"7173:37:11","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":3938,"nodeType":"EmitStatement","src":"7168:42:11"}]},"implemented":true,"kind":"function","modifiers":[],"name":"_mint","nameLocation":"6974:5:11","parameters":{"id":3908,"nodeType":"ParameterList","parameters":[{"constant":false,"id":3905,"mutability":"mutable","name":"account","nameLocation":"6988:7:11","nodeType":"VariableDeclaration","scope":3940,"src":"6980:15:11","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":3904,"name":"address","nodeType":"ElementaryTypeName","src":"6980:7:11","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":3907,"mutability":"mutable","name":"amount","nameLocation":"7005:6:11","nodeType":"VariableDeclaration","scope":3940,"src":"6997:14:11","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":3906,"name":"uint256","nodeType":"ElementaryTypeName","src":"6997:7:11","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"6979:33:11"},"returnParameters":{"id":3909,"nodeType":"ParameterList","parameters":[],"src":"7030:0:11"},"scope":4340,"stateMutability":"nonpayable","virtual":true,"visibility":"internal"},{"id":3992,"nodeType":"FunctionDefinition","src":"7223:381:11","nodes":[],"body":{"id":3991,"nodeType":"Block","src":"7288:316:11","nodes":[],"statements":[{"condition":{"commonType":{"typeIdentifier":"t_address","typeString":"address"},"id":3952,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":3947,"name":"account","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3942,"src":"7302:7:11","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"nodeType":"BinaryOperation","operator":"==","rightExpression":{"arguments":[{"hexValue":"30","id":3950,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"7321:1:11","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"}],"id":3949,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"7313:7:11","typeDescriptions":{"typeIdentifier":"t_type$_t_address_$","typeString":"type(address)"},"typeName":{"id":3948,"name":"address","nodeType":"ElementaryTypeName","src":"7313:7:11","typeDescriptions":{}}},"id":3951,"isConstant":false,"isLValue":false,"isPure":true,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"7313:10:11","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"src":"7302:21:11","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":3956,"nodeType":"IfStatement","src":"7298:47:11","trueBody":{"errorCall":{"arguments":[],"expression":{"argumentTypes":[],"id":3953,"name":"ZeroAddress","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3483,"src":"7332:11:11","typeDescriptions":{"typeIdentifier":"t_function_error_pure$__$returns$_t_error_$","typeString":"function () pure returns (error)"}},"id":3954,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"7332:13:11","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_error","typeString":"error"}},"id":3955,"nodeType":"RevertStatement","src":"7325:20:11"}},{"assignments":[3958],"declarations":[{"constant":false,"id":3958,"mutability":"mutable","name":"accountBalance","nameLocation":"7364:14:11","nodeType":"VariableDeclaration","scope":3991,"src":"7356:22:11","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":3957,"name":"uint256","nodeType":"ElementaryTypeName","src":"7356:7:11","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"id":3962,"initialValue":{"baseExpression":{"id":3959,"name":"_balances","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3515,"src":"7381:9:11","typeDescriptions":{"typeIdentifier":"t_mapping$_t_address_$_t_uint256_$","typeString":"mapping(address => uint256)"}},"id":3961,"indexExpression":{"id":3960,"name":"account","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3942,"src":"7391:7:11","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"nodeType":"IndexAccess","src":"7381:18:11","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"VariableDeclarationStatement","src":"7356:43:11"},{"condition":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":3965,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":3963,"name":"accountBalance","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3958,"src":"7413:14:11","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"<","rightExpression":{"id":3964,"name":"amount","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3944,"src":"7430:6:11","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"7413:23:11","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":3969,"nodeType":"IfStatement","src":"7409:48:11","trueBody":{"errorCall":{"arguments":[],"expression":{"argumentTypes":[],"id":3966,"name":"LowBalance","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3481,"src":"7445:10:11","typeDescriptions":{"typeIdentifier":"t_function_error_pure$__$returns$_t_error_$","typeString":"function () pure returns (error)"}},"id":3967,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"7445:12:11","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_error","typeString":"error"}},"id":3968,"nodeType":"RevertStatement","src":"7438:19:11"}},{"expression":{"id":3976,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"baseExpression":{"id":3970,"name":"_balances","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3515,"src":"7468:9:11","typeDescriptions":{"typeIdentifier":"t_mapping$_t_address_$_t_uint256_$","typeString":"mapping(address => uint256)"}},"id":3972,"indexExpression":{"id":3971,"name":"account","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3942,"src":"7478:7:11","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":true,"nodeType":"IndexAccess","src":"7468:18:11","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":3975,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":3973,"name":"accountBalance","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3958,"src":"7489:14:11","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"-","rightExpression":{"id":3974,"name":"amount","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3944,"src":"7506:6:11","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"7489:23:11","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"7468:44:11","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":3977,"nodeType":"ExpressionStatement","src":"7468:44:11"},{"expression":{"id":3980,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":3978,"name":"_totalSupply","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3523,"src":"7522:12:11","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":"-=","rightHandSide":{"id":3979,"name":"amount","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3944,"src":"7538:6:11","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"7522:22:11","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":3981,"nodeType":"ExpressionStatement","src":"7522:22:11"},{"eventCall":{"arguments":[{"id":3983,"name":"account","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3942,"src":"7569:7:11","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"arguments":[{"hexValue":"30","id":3986,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"7586:1:11","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"}],"id":3985,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"7578:7:11","typeDescriptions":{"typeIdentifier":"t_type$_t_address_$","typeString":"type(address)"},"typeName":{"id":3984,"name":"address","nodeType":"ElementaryTypeName","src":"7578:7:11","typeDescriptions":{}}},"id":3987,"isConstant":false,"isLValue":false,"isPure":true,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"7578:10:11","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":3988,"name":"amount","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3944,"src":"7590:6:11","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":3982,"name":"Transfer","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4853,"src":"7560:8:11","typeDescriptions":{"typeIdentifier":"t_function_event_nonpayable$_t_address_$_t_address_$_t_uint256_$returns$__$","typeString":"function (address,address,uint256)"}},"id":3989,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"7560:37:11","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":3990,"nodeType":"EmitStatement","src":"7555:42:11"}]},"implemented":true,"kind":"function","modifiers":[],"name":"_burn","nameLocation":"7232:5:11","parameters":{"id":3945,"nodeType":"ParameterList","parameters":[{"constant":false,"id":3942,"mutability":"mutable","name":"account","nameLocation":"7246:7:11","nodeType":"VariableDeclaration","scope":3992,"src":"7238:15:11","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":3941,"name":"address","nodeType":"ElementaryTypeName","src":"7238:7:11","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":3944,"mutability":"mutable","name":"amount","nameLocation":"7263:6:11","nodeType":"VariableDeclaration","scope":3992,"src":"7255:14:11","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":3943,"name":"uint256","nodeType":"ElementaryTypeName","src":"7255:7:11","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"7237:33:11"},"returnParameters":{"id":3946,"nodeType":"ParameterList","parameters":[],"src":"7288:0:11"},"scope":4340,"stateMutability":"nonpayable","virtual":true,"visibility":"internal"},{"id":4036,"nodeType":"FunctionDefinition","src":"7610:296:11","nodes":[],"body":{"id":4035,"nodeType":"Block","src":"7693:213:11","nodes":[],"statements":[{"condition":{"commonType":{"typeIdentifier":"t_address","typeString":"address"},"id":4006,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":4001,"name":"owner","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3994,"src":"7707:5:11","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"nodeType":"BinaryOperation","operator":"==","rightExpression":{"arguments":[{"hexValue":"30","id":4004,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"7724:1:11","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"}],"id":4003,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"7716:7:11","typeDescriptions":{"typeIdentifier":"t_type$_t_address_$","typeString":"type(address)"},"typeName":{"id":4002,"name":"address","nodeType":"ElementaryTypeName","src":"7716:7:11","typeDescriptions":{}}},"id":4005,"isConstant":false,"isLValue":false,"isPure":true,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"7716:10:11","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"src":"7707:19:11","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":4010,"nodeType":"IfStatement","src":"7703:45:11","trueBody":{"errorCall":{"arguments":[],"expression":{"argumentTypes":[],"id":4007,"name":"ZeroAddress","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3483,"src":"7735:11:11","typeDescriptions":{"typeIdentifier":"t_function_error_pure$__$returns$_t_error_$","typeString":"function () pure returns (error)"}},"id":4008,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"7735:13:11","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_error","typeString":"error"}},"id":4009,"nodeType":"RevertStatement","src":"7728:20:11"}},{"condition":{"commonType":{"typeIdentifier":"t_address","typeString":"address"},"id":4016,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":4011,"name":"spender","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3996,"src":"7762:7:11","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"nodeType":"BinaryOperation","operator":"==","rightExpression":{"arguments":[{"hexValue":"30","id":4014,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"7781:1:11","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"}],"id":4013,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"7773:7:11","typeDescriptions":{"typeIdentifier":"t_type$_t_address_$","typeString":"type(address)"},"typeName":{"id":4012,"name":"address","nodeType":"ElementaryTypeName","src":"7773:7:11","typeDescriptions":{}}},"id":4015,"isConstant":false,"isLValue":false,"isPure":true,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"7773:10:11","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"src":"7762:21:11","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":4020,"nodeType":"IfStatement","src":"7758:47:11","trueBody":{"errorCall":{"arguments":[],"expression":{"argumentTypes":[],"id":4017,"name":"ZeroAddress","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3483,"src":"7792:11:11","typeDescriptions":{"typeIdentifier":"t_function_error_pure$__$returns$_t_error_$","typeString":"function () pure returns (error)"}},"id":4018,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"7792:13:11","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_error","typeString":"error"}},"id":4019,"nodeType":"RevertStatement","src":"7785:20:11"}},{"expression":{"id":4027,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"baseExpression":{"baseExpression":{"id":4021,"name":"_allowances","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3521,"src":"7816:11:11","typeDescriptions":{"typeIdentifier":"t_mapping$_t_address_$_t_mapping$_t_address_$_t_uint256_$_$","typeString":"mapping(address => mapping(address => uint256))"}},"id":4024,"indexExpression":{"id":4022,"name":"owner","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3994,"src":"7828:5:11","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"nodeType":"IndexAccess","src":"7816:18:11","typeDescriptions":{"typeIdentifier":"t_mapping$_t_address_$_t_uint256_$","typeString":"mapping(address => uint256)"}},"id":4025,"indexExpression":{"id":4023,"name":"spender","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3996,"src":"7835:7:11","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":true,"nodeType":"IndexAccess","src":"7816:27:11","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"id":4026,"name":"amount","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3998,"src":"7846:6:11","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"7816:36:11","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":4028,"nodeType":"ExpressionStatement","src":"7816:36:11"},{"eventCall":{"arguments":[{"id":4030,"name":"owner","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3994,"src":"7876:5:11","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":4031,"name":"spender","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3996,"src":"7883:7:11","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":4032,"name":"amount","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3998,"src":"7892:6:11","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":4029,"name":"Approval","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4861,"src":"7867:8:11","typeDescriptions":{"typeIdentifier":"t_function_event_nonpayable$_t_address_$_t_address_$_t_uint256_$returns$__$","typeString":"function (address,address,uint256)"}},"id":4033,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"7867:32:11","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":4034,"nodeType":"EmitStatement","src":"7862:37:11"}]},"implemented":true,"kind":"function","modifiers":[],"name":"_approve","nameLocation":"7619:8:11","parameters":{"id":3999,"nodeType":"ParameterList","parameters":[{"constant":false,"id":3994,"mutability":"mutable","name":"owner","nameLocation":"7636:5:11","nodeType":"VariableDeclaration","scope":4036,"src":"7628:13:11","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":3993,"name":"address","nodeType":"ElementaryTypeName","src":"7628:7:11","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":3996,"mutability":"mutable","name":"spender","nameLocation":"7651:7:11","nodeType":"VariableDeclaration","scope":4036,"src":"7643:15:11","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":3995,"name":"address","nodeType":"ElementaryTypeName","src":"7643:7:11","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":3998,"mutability":"mutable","name":"amount","nameLocation":"7668:6:11","nodeType":"VariableDeclaration","scope":4036,"src":"7660:14:11","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":3997,"name":"uint256","nodeType":"ElementaryTypeName","src":"7660:7:11","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"7627:48:11"},"returnParameters":{"id":4000,"nodeType":"ParameterList","parameters":[],"src":"7693:0:11"},"scope":4340,"stateMutability":"nonpayable","virtual":true,"visibility":"internal"},{"id":4082,"nodeType":"FunctionDefinition","src":"8150:396:11","nodes":[],"body":{"id":4081,"nodeType":"Block","src":"8228:318:11","nodes":[],"statements":[{"condition":{"commonType":{"typeIdentifier":"t_bool","typeString":"bool"},"id":4060,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"commonType":{"typeIdentifier":"t_bool","typeString":"bool"},"id":4055,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"commonType":{"typeIdentifier":"t_address","typeString":"address"},"id":4050,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"expression":{"id":4047,"name":"msg","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-15,"src":"8255:3:11","typeDescriptions":{"typeIdentifier":"t_magic_message","typeString":"msg"}},"id":4048,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"8259:6:11","memberName":"sender","nodeType":"MemberAccess","src":"8255:10:11","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"nodeType":"BinaryOperation","operator":"!=","rightExpression":{"id":4049,"name":"FUNGIBLE_MODULE_ADDRESS","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3494,"src":"8269:23:11","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"src":"8255:37:11","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"nodeType":"BinaryOperation","operator":"&&","rightExpression":{"commonType":{"typeIdentifier":"t_address","typeString":"address"},"id":4054,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"expression":{"id":4051,"name":"msg","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-15,"src":"8296:3:11","typeDescriptions":{"typeIdentifier":"t_magic_message","typeString":"msg"}},"id":4052,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"8300:6:11","memberName":"sender","nodeType":"MemberAccess","src":"8296:10:11","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"nodeType":"BinaryOperation","operator":"!=","rightExpression":{"id":4053,"name":"SYSTEM_CONTRACT_ADDRESS","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3504,"src":"8310:23:11","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"src":"8296:37:11","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"src":"8255:78:11","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"nodeType":"BinaryOperation","operator":"&&","rightExpression":{"commonType":{"typeIdentifier":"t_address","typeString":"address"},"id":4059,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"expression":{"id":4056,"name":"msg","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-15,"src":"8353:3:11","typeDescriptions":{"typeIdentifier":"t_magic_message","typeString":"msg"}},"id":4057,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"8357:6:11","memberName":"sender","nodeType":"MemberAccess","src":"8353:10:11","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"nodeType":"BinaryOperation","operator":"!=","rightExpression":{"id":4058,"name":"gatewayAddress","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3532,"src":"8367:14:11","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"src":"8353:28:11","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"src":"8255:126:11","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":4064,"nodeType":"IfStatement","src":"8238:176:11","trueBody":{"errorCall":{"arguments":[],"expression":{"argumentTypes":[],"id":4061,"name":"InvalidSender","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3471,"src":"8399:13:11","typeDescriptions":{"typeIdentifier":"t_function_error_pure$__$returns$_t_error_$","typeString":"function () pure returns (error)"}},"id":4062,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"8399:15:11","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_error","typeString":"error"}},"id":4063,"nodeType":"RevertStatement","src":"8392:22:11"}},{"expression":{"arguments":[{"id":4066,"name":"to","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4039,"src":"8430:2:11","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":4067,"name":"amount","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4041,"src":"8434:6:11","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":4065,"name":"_mint","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3940,"src":"8424:5:11","typeDescriptions":{"typeIdentifier":"t_function_internal_nonpayable$_t_address_$_t_uint256_$returns$__$","typeString":"function (address,uint256)"}},"id":4068,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"8424:17:11","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":4069,"nodeType":"ExpressionStatement","src":"8424:17:11"},{"eventCall":{"arguments":[{"arguments":[{"id":4073,"name":"FUNGIBLE_MODULE_ADDRESS","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3494,"src":"8481:23:11","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"}],"expression":{"id":4071,"name":"abi","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-1,"src":"8464:3:11","typeDescriptions":{"typeIdentifier":"t_magic_abi","typeString":"abi"}},"id":4072,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"memberLocation":"8468:12:11","memberName":"encodePacked","nodeType":"MemberAccess","src":"8464:16:11","typeDescriptions":{"typeIdentifier":"t_function_abiencodepacked_pure$__$returns$_t_bytes_memory_ptr_$","typeString":"function () pure returns (bytes memory)"}},"id":4074,"isConstant":false,"isLValue":false,"isPure":true,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"8464:41:11","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}},{"id":4075,"name":"to","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4039,"src":"8507:2:11","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":4076,"name":"amount","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4041,"src":"8511:6:11","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"},{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":4070,"name":"Deposit","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4869,"src":"8456:7:11","typeDescriptions":{"typeIdentifier":"t_function_event_nonpayable$_t_bytes_memory_ptr_$_t_address_$_t_uint256_$returns$__$","typeString":"function (bytes memory,address,uint256)"}},"id":4077,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"8456:62:11","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":4078,"nodeType":"EmitStatement","src":"8451:67:11"},{"expression":{"hexValue":"74727565","id":4079,"isConstant":false,"isLValue":false,"isPure":true,"kind":"bool","lValueRequested":false,"nodeType":"Literal","src":"8535:4:11","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"value":"true"},"functionReturnParameters":4046,"id":4080,"nodeType":"Return","src":"8528:11:11"}]},"baseFunctions":[4770],"documentation":{"id":4037,"nodeType":"StructuredDocumentation","src":"7912:233:11","text":" @dev Deposits corresponding tokens from external chain, only callable by Fungible module.\n @param to, recipient address.\n @param amount, amount to deposit.\n @return true/false if succeeded/failed."},"functionSelector":"47e7ef24","implemented":true,"kind":"function","modifiers":[],"name":"deposit","nameLocation":"8159:7:11","overrides":{"id":4043,"nodeType":"OverrideSpecifier","overrides":[],"src":"8204:8:11"},"parameters":{"id":4042,"nodeType":"ParameterList","parameters":[{"constant":false,"id":4039,"mutability":"mutable","name":"to","nameLocation":"8175:2:11","nodeType":"VariableDeclaration","scope":4082,"src":"8167:10:11","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":4038,"name":"address","nodeType":"ElementaryTypeName","src":"8167:7:11","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":4041,"mutability":"mutable","name":"amount","nameLocation":"8187:6:11","nodeType":"VariableDeclaration","scope":4082,"src":"8179:14:11","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":4040,"name":"uint256","nodeType":"ElementaryTypeName","src":"8179:7:11","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"8166:28:11"},"returnParameters":{"id":4046,"nodeType":"ParameterList","parameters":[{"constant":false,"id":4045,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":4082,"src":"8222:4:11","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"typeName":{"id":4044,"name":"bool","nodeType":"ElementaryTypeName","src":"8222:4:11","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"visibility":"internal"}],"src":"8221:6:11"},"scope":4340,"stateMutability":"nonpayable","virtual":false,"visibility":"external"},{"id":4140,"nodeType":"FunctionDefinition","src":"8731:498:11","nodes":[],"body":{"id":4139,"nodeType":"Block","src":"8805:424:11","nodes":[],"statements":[{"assignments":[4092],"declarations":[{"constant":false,"id":4092,"mutability":"mutable","name":"gasZRC20","nameLocation":"8823:8:11","nodeType":"VariableDeclaration","scope":4139,"src":"8815:16:11","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":4091,"name":"address","nodeType":"ElementaryTypeName","src":"8815:7:11","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"id":4099,"initialValue":{"arguments":[{"id":4097,"name":"CHAIN_ID","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3497,"src":"8889:8:11","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"}],"expression":{"arguments":[{"id":4094,"name":"SYSTEM_CONTRACT_ADDRESS","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3504,"src":"8842:23:11","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"}],"id":4093,"name":"ISystem","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4618,"src":"8834:7:11","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_ISystem_$4618_$","typeString":"type(contract ISystem)"}},"id":4095,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"8834:32:11","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_contract$_ISystem_$4618","typeString":"contract ISystem"}},"id":4096,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"8867:21:11","memberName":"gasCoinZRC20ByChainId","nodeType":"MemberAccess","referencedDeclaration":4610,"src":"8834:54:11","typeDescriptions":{"typeIdentifier":"t_function_external_view$_t_uint256_$returns$_t_address_$","typeString":"function (uint256) view external returns (address)"}},"id":4098,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"8834:64:11","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"nodeType":"VariableDeclarationStatement","src":"8815:83:11"},{"condition":{"commonType":{"typeIdentifier":"t_address","typeString":"address"},"id":4105,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":4100,"name":"gasZRC20","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4092,"src":"8912:8:11","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"nodeType":"BinaryOperation","operator":"==","rightExpression":{"arguments":[{"hexValue":"30","id":4103,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"8932:1:11","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"}],"id":4102,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"8924:7:11","typeDescriptions":{"typeIdentifier":"t_type$_t_address_$","typeString":"type(address)"},"typeName":{"id":4101,"name":"address","nodeType":"ElementaryTypeName","src":"8924:7:11","typeDescriptions":{}}},"id":4104,"isConstant":false,"isLValue":false,"isPure":true,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"8924:10:11","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"src":"8912:22:11","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":4109,"nodeType":"IfStatement","src":"8908:48:11","trueBody":{"errorCall":{"arguments":[],"expression":{"argumentTypes":[],"id":4106,"name":"ZeroGasCoin","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3475,"src":"8943:11:11","typeDescriptions":{"typeIdentifier":"t_function_error_pure$__$returns$_t_error_$","typeString":"function () pure returns (error)"}},"id":4107,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"8943:13:11","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_error","typeString":"error"}},"id":4108,"nodeType":"RevertStatement","src":"8936:20:11"}},{"assignments":[4111],"declarations":[{"constant":false,"id":4111,"mutability":"mutable","name":"gasPrice","nameLocation":"8975:8:11","nodeType":"VariableDeclaration","scope":4139,"src":"8967:16:11","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":4110,"name":"uint256","nodeType":"ElementaryTypeName","src":"8967:7:11","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"id":4118,"initialValue":{"arguments":[{"id":4116,"name":"CHAIN_ID","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3497,"src":"9037:8:11","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"}],"expression":{"arguments":[{"id":4113,"name":"SYSTEM_CONTRACT_ADDRESS","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3504,"src":"8994:23:11","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"}],"id":4112,"name":"ISystem","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4618,"src":"8986:7:11","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_ISystem_$4618_$","typeString":"type(contract ISystem)"}},"id":4114,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"8986:32:11","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_contract$_ISystem_$4618","typeString":"contract ISystem"}},"id":4115,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"9019:17:11","memberName":"gasPriceByChainId","nodeType":"MemberAccess","referencedDeclaration":4603,"src":"8986:50:11","typeDescriptions":{"typeIdentifier":"t_function_external_view$_t_uint256_$returns$_t_uint256_$","typeString":"function (uint256) view external returns (uint256)"}},"id":4117,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"8986:60:11","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"VariableDeclarationStatement","src":"8967:79:11"},{"condition":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":4121,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":4119,"name":"gasPrice","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4111,"src":"9060:8:11","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"==","rightExpression":{"hexValue":"30","id":4120,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"9072:1:11","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},"src":"9060:13:11","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":4126,"nodeType":"IfStatement","src":"9056:65:11","trueBody":{"id":4125,"nodeType":"Block","src":"9075:46:11","statements":[{"errorCall":{"arguments":[],"expression":{"argumentTypes":[],"id":4122,"name":"ZeroGasPrice","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3477,"src":"9096:12:11","typeDescriptions":{"typeIdentifier":"t_function_error_pure$__$returns$_t_error_$","typeString":"function () pure returns (error)"}},"id":4123,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"9096:14:11","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_error","typeString":"error"}},"id":4124,"nodeType":"RevertStatement","src":"9089:21:11"}]}},{"assignments":[4128],"declarations":[{"constant":false,"id":4128,"mutability":"mutable","name":"gasFee","nameLocation":"9138:6:11","nodeType":"VariableDeclaration","scope":4139,"src":"9130:14:11","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":4127,"name":"uint256","nodeType":"ElementaryTypeName","src":"9130:7:11","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"id":4134,"initialValue":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":4133,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":4131,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":4129,"name":"gasPrice","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4111,"src":"9147:8:11","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"*","rightExpression":{"id":4130,"name":"GAS_LIMIT","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3507,"src":"9158:9:11","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"9147:20:11","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"+","rightExpression":{"id":4132,"name":"PROTOCOL_FLAT_FEE","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3511,"src":"9170:17:11","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"9147:40:11","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"VariableDeclarationStatement","src":"9130:57:11"},{"expression":{"components":[{"id":4135,"name":"gasZRC20","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4092,"src":"9205:8:11","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":4136,"name":"gasFee","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4128,"src":"9215:6:11","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"id":4137,"isConstant":false,"isInlineArray":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"TupleExpression","src":"9204:18:11","typeDescriptions":{"typeIdentifier":"t_tuple$_t_address_$_t_uint256_$","typeString":"tuple(address,uint256)"}},"functionReturnParameters":4090,"id":4138,"nodeType":"Return","src":"9197:25:11"}]},"baseFunctions":[4793],"documentation":{"id":4083,"nodeType":"StructuredDocumentation","src":"8552:174:11","text":" @dev Withdraws gas fees.\n @return returns the ZRC20 address for gas on the same chain of this ZRC20, and calculates the gas fee for\n withdraw()"},"functionSelector":"d9eeebed","implemented":true,"kind":"function","modifiers":[],"name":"withdrawGasFee","nameLocation":"8740:14:11","overrides":{"id":4085,"nodeType":"OverrideSpecifier","overrides":[],"src":"8769:8:11"},"parameters":{"id":4084,"nodeType":"ParameterList","parameters":[],"src":"8754:2:11"},"returnParameters":{"id":4090,"nodeType":"ParameterList","parameters":[{"constant":false,"id":4087,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":4140,"src":"8787:7:11","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":4086,"name":"address","nodeType":"ElementaryTypeName","src":"8787:7:11","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":4089,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":4140,"src":"8796:7:11","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":4088,"name":"uint256","nodeType":"ElementaryTypeName","src":"8796:7:11","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"8786:18:11"},"scope":4340,"stateMutability":"view","virtual":false,"visibility":"public"},{"id":4200,"nodeType":"FunctionDefinition","src":"9437:525:11","nodes":[],"body":{"id":4199,"nodeType":"Block","src":"9539:423:11","nodes":[],"statements":[{"assignments":[4152],"declarations":[{"constant":false,"id":4152,"mutability":"mutable","name":"gasZRC20","nameLocation":"9557:8:11","nodeType":"VariableDeclaration","scope":4199,"src":"9549:16:11","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":4151,"name":"address","nodeType":"ElementaryTypeName","src":"9549:7:11","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"id":4159,"initialValue":{"arguments":[{"id":4157,"name":"CHAIN_ID","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3497,"src":"9623:8:11","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"}],"expression":{"arguments":[{"id":4154,"name":"SYSTEM_CONTRACT_ADDRESS","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3504,"src":"9576:23:11","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"}],"id":4153,"name":"ISystem","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4618,"src":"9568:7:11","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_ISystem_$4618_$","typeString":"type(contract ISystem)"}},"id":4155,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"9568:32:11","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_contract$_ISystem_$4618","typeString":"contract ISystem"}},"id":4156,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"9601:21:11","memberName":"gasCoinZRC20ByChainId","nodeType":"MemberAccess","referencedDeclaration":4610,"src":"9568:54:11","typeDescriptions":{"typeIdentifier":"t_function_external_view$_t_uint256_$returns$_t_address_$","typeString":"function (uint256) view external returns (address)"}},"id":4158,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"9568:64:11","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"nodeType":"VariableDeclarationStatement","src":"9549:83:11"},{"condition":{"commonType":{"typeIdentifier":"t_address","typeString":"address"},"id":4165,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":4160,"name":"gasZRC20","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4152,"src":"9646:8:11","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"nodeType":"BinaryOperation","operator":"==","rightExpression":{"arguments":[{"hexValue":"30","id":4163,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"9666:1:11","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"}],"id":4162,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"9658:7:11","typeDescriptions":{"typeIdentifier":"t_type$_t_address_$","typeString":"type(address)"},"typeName":{"id":4161,"name":"address","nodeType":"ElementaryTypeName","src":"9658:7:11","typeDescriptions":{}}},"id":4164,"isConstant":false,"isLValue":false,"isPure":true,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"9658:10:11","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"src":"9646:22:11","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":4169,"nodeType":"IfStatement","src":"9642:48:11","trueBody":{"errorCall":{"arguments":[],"expression":{"argumentTypes":[],"id":4166,"name":"ZeroGasCoin","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3475,"src":"9677:11:11","typeDescriptions":{"typeIdentifier":"t_function_error_pure$__$returns$_t_error_$","typeString":"function () pure returns (error)"}},"id":4167,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"9677:13:11","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_error","typeString":"error"}},"id":4168,"nodeType":"RevertStatement","src":"9670:20:11"}},{"assignments":[4171],"declarations":[{"constant":false,"id":4171,"mutability":"mutable","name":"gasPrice","nameLocation":"9709:8:11","nodeType":"VariableDeclaration","scope":4199,"src":"9701:16:11","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":4170,"name":"uint256","nodeType":"ElementaryTypeName","src":"9701:7:11","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"id":4178,"initialValue":{"arguments":[{"id":4176,"name":"CHAIN_ID","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3497,"src":"9771:8:11","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"}],"expression":{"arguments":[{"id":4173,"name":"SYSTEM_CONTRACT_ADDRESS","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3504,"src":"9728:23:11","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"}],"id":4172,"name":"ISystem","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4618,"src":"9720:7:11","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_ISystem_$4618_$","typeString":"type(contract ISystem)"}},"id":4174,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"9720:32:11","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_contract$_ISystem_$4618","typeString":"contract ISystem"}},"id":4175,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"9753:17:11","memberName":"gasPriceByChainId","nodeType":"MemberAccess","referencedDeclaration":4603,"src":"9720:50:11","typeDescriptions":{"typeIdentifier":"t_function_external_view$_t_uint256_$returns$_t_uint256_$","typeString":"function (uint256) view external returns (uint256)"}},"id":4177,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"9720:60:11","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"VariableDeclarationStatement","src":"9701:79:11"},{"condition":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":4181,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":4179,"name":"gasPrice","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4171,"src":"9794:8:11","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"==","rightExpression":{"hexValue":"30","id":4180,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"9806:1:11","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},"src":"9794:13:11","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":4186,"nodeType":"IfStatement","src":"9790:65:11","trueBody":{"id":4185,"nodeType":"Block","src":"9809:46:11","statements":[{"errorCall":{"arguments":[],"expression":{"argumentTypes":[],"id":4182,"name":"ZeroGasPrice","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3477,"src":"9830:12:11","typeDescriptions":{"typeIdentifier":"t_function_error_pure$__$returns$_t_error_$","typeString":"function () pure returns (error)"}},"id":4183,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"9830:14:11","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_error","typeString":"error"}},"id":4184,"nodeType":"RevertStatement","src":"9823:21:11"}]}},{"assignments":[4188],"declarations":[{"constant":false,"id":4188,"mutability":"mutable","name":"gasFee","nameLocation":"9872:6:11","nodeType":"VariableDeclaration","scope":4199,"src":"9864:14:11","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":4187,"name":"uint256","nodeType":"ElementaryTypeName","src":"9864:7:11","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"id":4194,"initialValue":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":4193,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":4191,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":4189,"name":"gasPrice","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4171,"src":"9881:8:11","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"*","rightExpression":{"id":4190,"name":"gasLimit","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4143,"src":"9892:8:11","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"9881:19:11","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"+","rightExpression":{"id":4192,"name":"PROTOCOL_FLAT_FEE","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3511,"src":"9903:17:11","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"9881:39:11","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"VariableDeclarationStatement","src":"9864:56:11"},{"expression":{"components":[{"id":4195,"name":"gasZRC20","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4152,"src":"9938:8:11","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":4196,"name":"gasFee","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4188,"src":"9948:6:11","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"id":4197,"isConstant":false,"isInlineArray":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"TupleExpression","src":"9937:18:11","typeDescriptions":{"typeIdentifier":"t_tuple$_t_address_$_t_uint256_$","typeString":"tuple(address,uint256)"}},"functionReturnParameters":4150,"id":4198,"nodeType":"Return","src":"9930:25:11"}]},"baseFunctions":[4802],"documentation":{"id":4141,"nodeType":"StructuredDocumentation","src":"9235:197:11","text":" @dev Withdraws gas fees with specified gasLimit\n @return returns the ZRC20 address for gas on the same chain of this ZRC20, and calculates the gas fee for\n withdraw()"},"functionSelector":"fc5fecd5","implemented":true,"kind":"function","modifiers":[],"name":"withdrawGasFeeWithGasLimit","nameLocation":"9446:26:11","overrides":{"id":4145,"nodeType":"OverrideSpecifier","overrides":[],"src":"9503:8:11"},"parameters":{"id":4144,"nodeType":"ParameterList","parameters":[{"constant":false,"id":4143,"mutability":"mutable","name":"gasLimit","nameLocation":"9481:8:11","nodeType":"VariableDeclaration","scope":4200,"src":"9473:16:11","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":4142,"name":"uint256","nodeType":"ElementaryTypeName","src":"9473:7:11","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"9472:18:11"},"returnParameters":{"id":4150,"nodeType":"ParameterList","parameters":[{"constant":false,"id":4147,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":4200,"src":"9521:7:11","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":4146,"name":"address","nodeType":"ElementaryTypeName","src":"9521:7:11","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":4149,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":4200,"src":"9530:7:11","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":4148,"name":"uint256","nodeType":"ElementaryTypeName","src":"9530:7:11","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"9520:18:11"},"scope":4340,"stateMutability":"view","virtual":false,"visibility":"public"},{"id":4251,"nodeType":"FunctionDefinition","src":"10352:430:11","nodes":[],"body":{"id":4250,"nodeType":"Block","src":"10436:346:11","nodes":[],"statements":[{"assignments":[4212,4214],"declarations":[{"constant":false,"id":4212,"mutability":"mutable","name":"gasZRC20","nameLocation":"10455:8:11","nodeType":"VariableDeclaration","scope":4250,"src":"10447:16:11","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":4211,"name":"address","nodeType":"ElementaryTypeName","src":"10447:7:11","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":4214,"mutability":"mutable","name":"gasFee","nameLocation":"10473:6:11","nodeType":"VariableDeclaration","scope":4250,"src":"10465:14:11","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":4213,"name":"uint256","nodeType":"ElementaryTypeName","src":"10465:7:11","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"id":4217,"initialValue":{"arguments":[],"expression":{"argumentTypes":[],"id":4215,"name":"withdrawGasFee","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4140,"src":"10483:14:11","typeDescriptions":{"typeIdentifier":"t_function_internal_view$__$returns$_t_address_$_t_uint256_$","typeString":"function () view returns (address,uint256)"}},"id":4216,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"10483:16:11","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$_t_address_$_t_uint256_$","typeString":"tuple(address,uint256)"}},"nodeType":"VariableDeclarationStatement","src":"10446:53:11"},{"condition":{"id":4227,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"UnaryOperation","operator":"!","prefix":true,"src":"10513:75:11","subExpression":{"arguments":[{"expression":{"id":4222,"name":"msg","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-15,"src":"10544:3:11","typeDescriptions":{"typeIdentifier":"t_magic_message","typeString":"msg"}},"id":4223,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"10548:6:11","memberName":"sender","nodeType":"MemberAccess","src":"10544:10:11","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":4224,"name":"FUNGIBLE_MODULE_ADDRESS","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3494,"src":"10556:23:11","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":4225,"name":"gasFee","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4214,"src":"10581:6:11","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"expression":{"arguments":[{"id":4219,"name":"gasZRC20","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4212,"src":"10521:8:11","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"}],"id":4218,"name":"IZRC20","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4825,"src":"10514:6:11","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_IZRC20_$4825_$","typeString":"type(contract IZRC20)"}},"id":4220,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"10514:16:11","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_contract$_IZRC20_$4825","typeString":"contract IZRC20"}},"id":4221,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"10531:12:11","memberName":"transferFrom","nodeType":"MemberAccess","referencedDeclaration":4761,"src":"10514:29:11","typeDescriptions":{"typeIdentifier":"t_function_external_nonpayable$_t_address_$_t_address_$_t_uint256_$returns$_t_bool_$","typeString":"function (address,address,uint256) external returns (bool)"}},"id":4226,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"10514:74:11","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":4232,"nodeType":"IfStatement","src":"10509:135:11","trueBody":{"id":4231,"nodeType":"Block","src":"10590:54:11","statements":[{"errorCall":{"arguments":[],"expression":{"argumentTypes":[],"id":4228,"name":"GasFeeTransferFailed","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3473,"src":"10611:20:11","typeDescriptions":{"typeIdentifier":"t_function_error_pure$__$returns$_t_error_$","typeString":"function () pure returns (error)"}},"id":4229,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"10611:22:11","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_error","typeString":"error"}},"id":4230,"nodeType":"RevertStatement","src":"10604:29:11"}]}},{"expression":{"arguments":[{"expression":{"id":4234,"name":"msg","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-15,"src":"10659:3:11","typeDescriptions":{"typeIdentifier":"t_magic_message","typeString":"msg"}},"id":4235,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"10663:6:11","memberName":"sender","nodeType":"MemberAccess","src":"10659:10:11","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":4236,"name":"amount","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4205,"src":"10671:6:11","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":4233,"name":"_burn","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3992,"src":"10653:5:11","typeDescriptions":{"typeIdentifier":"t_function_internal_nonpayable$_t_address_$_t_uint256_$returns$__$","typeString":"function (address,uint256)"}},"id":4237,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"10653:25:11","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":4238,"nodeType":"ExpressionStatement","src":"10653:25:11"},{"eventCall":{"arguments":[{"expression":{"id":4240,"name":"msg","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-15,"src":"10704:3:11","typeDescriptions":{"typeIdentifier":"t_magic_message","typeString":"msg"}},"id":4241,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"10708:6:11","memberName":"sender","nodeType":"MemberAccess","src":"10704:10:11","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":4242,"name":"to","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4203,"src":"10716:2:11","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}},{"id":4243,"name":"amount","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4205,"src":"10720:6:11","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},{"id":4244,"name":"gasFee","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4214,"src":"10728:6:11","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},{"id":4245,"name":"PROTOCOL_FLAT_FEE","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3511,"src":"10736:17:11","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"},{"typeIdentifier":"t_uint256","typeString":"uint256"},{"typeIdentifier":"t_uint256","typeString":"uint256"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":4239,"name":"Withdrawal","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4881,"src":"10693:10:11","typeDescriptions":{"typeIdentifier":"t_function_event_nonpayable$_t_address_$_t_bytes_memory_ptr_$_t_uint256_$_t_uint256_$_t_uint256_$returns$__$","typeString":"function (address,bytes memory,uint256,uint256,uint256)"}},"id":4246,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"10693:61:11","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":4247,"nodeType":"EmitStatement","src":"10688:66:11"},{"expression":{"hexValue":"74727565","id":4248,"isConstant":false,"isLValue":false,"isPure":true,"kind":"bool","lValueRequested":false,"nodeType":"Literal","src":"10771:4:11","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"value":"true"},"functionReturnParameters":4210,"id":4249,"nodeType":"Return","src":"10764:11:11"}]},"baseFunctions":[4786],"documentation":{"id":4201,"nodeType":"StructuredDocumentation","src":"9968:379:11","text":" @dev Withraws ZRC20 tokens to external chains, this function causes cctx module to send out outbound tx to the\n outbound chain\n this contract should be given enough allowance of the gas ZRC20 to pay for outbound tx gas fee.\n @param to, recipient address.\n @param amount, amount to deposit.\n @return true/false if succeeded/failed."},"functionSelector":"c7012626","implemented":true,"kind":"function","modifiers":[],"name":"withdraw","nameLocation":"10361:8:11","overrides":{"id":4207,"nodeType":"OverrideSpecifier","overrides":[],"src":"10412:8:11"},"parameters":{"id":4206,"nodeType":"ParameterList","parameters":[{"constant":false,"id":4203,"mutability":"mutable","name":"to","nameLocation":"10383:2:11","nodeType":"VariableDeclaration","scope":4251,"src":"10370:15:11","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes"},"typeName":{"id":4202,"name":"bytes","nodeType":"ElementaryTypeName","src":"10370:5:11","typeDescriptions":{"typeIdentifier":"t_bytes_storage_ptr","typeString":"bytes"}},"visibility":"internal"},{"constant":false,"id":4205,"mutability":"mutable","name":"amount","nameLocation":"10395:6:11","nodeType":"VariableDeclaration","scope":4251,"src":"10387:14:11","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":4204,"name":"uint256","nodeType":"ElementaryTypeName","src":"10387:7:11","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"10369:33:11"},"returnParameters":{"id":4210,"nodeType":"ParameterList","parameters":[{"constant":false,"id":4209,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":4251,"src":"10430:4:11","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"typeName":{"id":4208,"name":"bool","nodeType":"ElementaryTypeName","src":"10430:4:11","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"visibility":"internal"}],"src":"10429:6:11"},"scope":4340,"stateMutability":"nonpayable","virtual":false,"visibility":"external"},{"id":4278,"nodeType":"FunctionDefinition","src":"10942:216:11","nodes":[],"body":{"id":4277,"nodeType":"Block","src":"11015:143:11","nodes":[],"statements":[{"condition":{"commonType":{"typeIdentifier":"t_address","typeString":"address"},"id":4264,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":4259,"name":"addr","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4254,"src":"11029:4:11","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"nodeType":"BinaryOperation","operator":"==","rightExpression":{"arguments":[{"hexValue":"30","id":4262,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"11045:1:11","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"}],"id":4261,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"11037:7:11","typeDescriptions":{"typeIdentifier":"t_type$_t_address_$","typeString":"type(address)"},"typeName":{"id":4260,"name":"address","nodeType":"ElementaryTypeName","src":"11037:7:11","typeDescriptions":{}}},"id":4263,"isConstant":false,"isLValue":false,"isPure":true,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"11037:10:11","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"src":"11029:18:11","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":4268,"nodeType":"IfStatement","src":"11025:44:11","trueBody":{"errorCall":{"arguments":[],"expression":{"argumentTypes":[],"id":4265,"name":"ZeroAddress","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3483,"src":"11056:11:11","typeDescriptions":{"typeIdentifier":"t_function_error_pure$__$returns$_t_error_$","typeString":"function () pure returns (error)"}},"id":4266,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"11056:13:11","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_error","typeString":"error"}},"id":4267,"nodeType":"RevertStatement","src":"11049:20:11"}},{"expression":{"id":4271,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":4269,"name":"SYSTEM_CONTRACT_ADDRESS","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3504,"src":"11079:23:11","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"id":4270,"name":"addr","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4254,"src":"11105:4:11","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"src":"11079:30:11","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"id":4272,"nodeType":"ExpressionStatement","src":"11079:30:11"},{"eventCall":{"arguments":[{"id":4274,"name":"addr","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4254,"src":"11146:4:11","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"}],"id":4273,"name":"UpdatedSystemContract","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4885,"src":"11124:21:11","typeDescriptions":{"typeIdentifier":"t_function_event_nonpayable$_t_address_$returns$__$","typeString":"function (address)"}},"id":4275,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"11124:27:11","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":4276,"nodeType":"EmitStatement","src":"11119:32:11"}]},"documentation":{"id":4252,"nodeType":"StructuredDocumentation","src":"10788:149:11","text":" @dev Updates system contract address. Can only be updated by the fungible module.\n @param addr, new system contract address."},"functionSelector":"c835d7cc","implemented":true,"kind":"function","modifiers":[{"id":4257,"kind":"modifierInvocation","modifierName":{"id":4256,"name":"onlyFungible","nameLocations":["11002:12:11"],"nodeType":"IdentifierPath","referencedDeclaration":3554,"src":"11002:12:11"},"nodeType":"ModifierInvocation","src":"11002:12:11"}],"name":"updateSystemContractAddress","nameLocation":"10951:27:11","parameters":{"id":4255,"nodeType":"ParameterList","parameters":[{"constant":false,"id":4254,"mutability":"mutable","name":"addr","nameLocation":"10987:4:11","nodeType":"VariableDeclaration","scope":4278,"src":"10979:12:11","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":4253,"name":"address","nodeType":"ElementaryTypeName","src":"10979:7:11","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"10978:14:11"},"returnParameters":{"id":4258,"nodeType":"ParameterList","parameters":[],"src":"11015:0:11"},"scope":4340,"stateMutability":"nonpayable","virtual":false,"visibility":"external"},{"id":4305,"nodeType":"FunctionDefinition","src":"11320:193:11","nodes":[],"body":{"id":4304,"nodeType":"Block","src":"11386:127:11","nodes":[],"statements":[{"condition":{"commonType":{"typeIdentifier":"t_address","typeString":"address"},"id":4291,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":4286,"name":"addr","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4281,"src":"11400:4:11","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"nodeType":"BinaryOperation","operator":"==","rightExpression":{"arguments":[{"hexValue":"30","id":4289,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"11416:1:11","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"}],"id":4288,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"11408:7:11","typeDescriptions":{"typeIdentifier":"t_type$_t_address_$","typeString":"type(address)"},"typeName":{"id":4287,"name":"address","nodeType":"ElementaryTypeName","src":"11408:7:11","typeDescriptions":{}}},"id":4290,"isConstant":false,"isLValue":false,"isPure":true,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"11408:10:11","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"src":"11400:18:11","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":4295,"nodeType":"IfStatement","src":"11396:44:11","trueBody":{"errorCall":{"arguments":[],"expression":{"argumentTypes":[],"id":4292,"name":"ZeroAddress","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3483,"src":"11427:11:11","typeDescriptions":{"typeIdentifier":"t_function_error_pure$__$returns$_t_error_$","typeString":"function () pure returns (error)"}},"id":4293,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"11427:13:11","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_error","typeString":"error"}},"id":4294,"nodeType":"RevertStatement","src":"11420:20:11"}},{"expression":{"id":4298,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":4296,"name":"gatewayAddress","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3532,"src":"11450:14:11","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"id":4297,"name":"addr","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4281,"src":"11467:4:11","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"src":"11450:21:11","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"id":4299,"nodeType":"ExpressionStatement","src":"11450:21:11"},{"eventCall":{"arguments":[{"id":4301,"name":"addr","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4281,"src":"11501:4:11","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"}],"id":4300,"name":"UpdatedGateway","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4889,"src":"11486:14:11","typeDescriptions":{"typeIdentifier":"t_function_event_nonpayable$_t_address_$returns$__$","typeString":"function (address)"}},"id":4302,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"11486:20:11","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":4303,"nodeType":"EmitStatement","src":"11481:25:11"}]},"documentation":{"id":4279,"nodeType":"StructuredDocumentation","src":"11164:151:11","text":" @dev Updates gateway contract address. Can only be updated by the fungible module.\n @param addr, new gateway contract address."},"functionSelector":"ccc77599","implemented":true,"kind":"function","modifiers":[{"id":4284,"kind":"modifierInvocation","modifierName":{"id":4283,"name":"onlyFungible","nameLocations":["11373:12:11"],"nodeType":"IdentifierPath","referencedDeclaration":3554,"src":"11373:12:11"},"nodeType":"ModifierInvocation","src":"11373:12:11"}],"name":"updateGatewayAddress","nameLocation":"11329:20:11","parameters":{"id":4282,"nodeType":"ParameterList","parameters":[{"constant":false,"id":4281,"mutability":"mutable","name":"addr","nameLocation":"11358:4:11","nodeType":"VariableDeclaration","scope":4305,"src":"11350:12:11","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":4280,"name":"address","nodeType":"ElementaryTypeName","src":"11350:7:11","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"11349:14:11"},"returnParameters":{"id":4285,"nodeType":"ParameterList","parameters":[],"src":"11386:0:11"},"scope":4340,"stateMutability":"nonpayable","virtual":false,"visibility":"external"},{"id":4322,"nodeType":"FunctionDefinition","src":"11650:144:11","nodes":[],"body":{"id":4321,"nodeType":"Block","src":"11715:79:11","nodes":[],"statements":[{"expression":{"id":4315,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":4313,"name":"GAS_LIMIT","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3507,"src":"11725:9:11","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"id":4314,"name":"gasLimit_","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4308,"src":"11737:9:11","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"11725:21:11","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":4316,"nodeType":"ExpressionStatement","src":"11725:21:11"},{"eventCall":{"arguments":[{"id":4318,"name":"GAS_LIMIT","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3507,"src":"11777:9:11","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":4317,"name":"UpdatedGasLimit","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4893,"src":"11761:15:11","typeDescriptions":{"typeIdentifier":"t_function_event_nonpayable$_t_uint256_$returns$__$","typeString":"function (uint256)"}},"id":4319,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"11761:26:11","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":4320,"nodeType":"EmitStatement","src":"11756:31:11"}]},"documentation":{"id":4306,"nodeType":"StructuredDocumentation","src":"11519:126:11","text":" @dev Updates gas limit. Can only be updated by the fungible module.\n @param gasLimit_, new gas limit."},"functionSelector":"f687d12a","implemented":true,"kind":"function","modifiers":[{"id":4311,"kind":"modifierInvocation","modifierName":{"id":4310,"name":"onlyFungible","nameLocations":["11702:12:11"],"nodeType":"IdentifierPath","referencedDeclaration":3554,"src":"11702:12:11"},"nodeType":"ModifierInvocation","src":"11702:12:11"}],"name":"updateGasLimit","nameLocation":"11659:14:11","parameters":{"id":4309,"nodeType":"ParameterList","parameters":[{"constant":false,"id":4308,"mutability":"mutable","name":"gasLimit_","nameLocation":"11682:9:11","nodeType":"VariableDeclaration","scope":4322,"src":"11674:17:11","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":4307,"name":"uint256","nodeType":"ElementaryTypeName","src":"11674:7:11","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"11673:19:11"},"returnParameters":{"id":4312,"nodeType":"ParameterList","parameters":[],"src":"11715:0:11"},"scope":4340,"stateMutability":"nonpayable","virtual":false,"visibility":"external"},{"id":4339,"nodeType":"FunctionDefinition","src":"11954:188:11","nodes":[],"body":{"id":4338,"nodeType":"Block","src":"12033:109:11","nodes":[],"statements":[{"expression":{"id":4332,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":4330,"name":"PROTOCOL_FLAT_FEE","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3511,"src":"12043:17:11","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"id":4331,"name":"protocolFlatFee_","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4325,"src":"12063:16:11","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"12043:36:11","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":4333,"nodeType":"ExpressionStatement","src":"12043:36:11"},{"eventCall":{"arguments":[{"id":4335,"name":"PROTOCOL_FLAT_FEE","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3511,"src":"12117:17:11","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":4334,"name":"UpdatedProtocolFlatFee","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4897,"src":"12094:22:11","typeDescriptions":{"typeIdentifier":"t_function_event_nonpayable$_t_uint256_$returns$__$","typeString":"function (uint256)"}},"id":4336,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"12094:41:11","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":4337,"nodeType":"EmitStatement","src":"12089:46:11"}]},"documentation":{"id":4323,"nodeType":"StructuredDocumentation","src":"11800:149:11","text":" @dev Updates protocol flat fee. Can only be updated by the fungible module.\n @param protocolFlatFee_, new protocol flat fee."},"functionSelector":"eddeb123","implemented":true,"kind":"function","modifiers":[{"id":4328,"kind":"modifierInvocation","modifierName":{"id":4327,"name":"onlyFungible","nameLocations":["12020:12:11"],"nodeType":"IdentifierPath","referencedDeclaration":3554,"src":"12020:12:11"},"nodeType":"ModifierInvocation","src":"12020:12:11"}],"name":"updateProtocolFlatFee","nameLocation":"11963:21:11","parameters":{"id":4326,"nodeType":"ParameterList","parameters":[{"constant":false,"id":4325,"mutability":"mutable","name":"protocolFlatFee_","nameLocation":"11993:16:11","nodeType":"VariableDeclaration","scope":4339,"src":"11985:24:11","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":4324,"name":"uint256","nodeType":"ElementaryTypeName","src":"11985:7:11","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"11984:26:11"},"returnParameters":{"id":4329,"nodeType":"ParameterList","parameters":[],"src":"12033:0:11"},"scope":4340,"stateMutability":"nonpayable","virtual":false,"visibility":"external"}],"abstract":false,"baseContracts":[{"baseName":{"id":3485,"name":"IZRC20Metadata","nameLocations":["722:14:11"],"nodeType":"IdentifierPath","referencedDeclaration":4844,"src":"722:14:11"},"id":3486,"nodeType":"InheritanceSpecifier","src":"722:14:11"},{"baseName":{"id":3487,"name":"ZRC20Errors","nameLocations":["738:11:11"],"nodeType":"IdentifierPath","referencedDeclaration":3484,"src":"738:11:11"},"id":3488,"nodeType":"InheritanceSpecifier","src":"738:11:11"},{"baseName":{"id":3489,"name":"ZRC20Events","nameLocations":["751:11:11"],"nodeType":"IdentifierPath","referencedDeclaration":4898,"src":"751:11:11"},"id":3490,"nodeType":"InheritanceSpecifier","src":"751:11:11"}],"canonicalName":"ZRC20","contractDependencies":[],"contractKind":"contract","fullyImplemented":true,"linearizedBaseContracts":[4340,4898,3484,4844,4825],"name":"ZRC20","nameLocation":"713:5:11","scope":4341,"usedErrors":[3469,3471,3473,3475,3477,3479,3481,3483],"usedEvents":[4853,4861,4869,4881,4885,4889,4893,4897]}],"license":"MIT"},"id":11} \ No newline at end of file diff --git a/packages/client/src/abi/ZRC20.sol/ZRC20Errors.json b/packages/client/src/abi/ZRC20.sol/ZRC20Errors.json deleted file mode 100644 index 00dcb325..00000000 --- a/packages/client/src/abi/ZRC20.sol/ZRC20Errors.json +++ /dev/null @@ -1 +0,0 @@ -{"abi":[{"type":"error","name":"CallerIsNotFungibleModule","inputs":[]},{"type":"error","name":"GasFeeTransferFailed","inputs":[]},{"type":"error","name":"InvalidSender","inputs":[]},{"type":"error","name":"LowAllowance","inputs":[]},{"type":"error","name":"LowBalance","inputs":[]},{"type":"error","name":"ZeroAddress","inputs":[]},{"type":"error","name":"ZeroGasCoin","inputs":[]},{"type":"error","name":"ZeroGasPrice","inputs":[]}],"bytecode":{"object":"0x","sourceMap":"","linkReferences":{}},"deployedBytecode":{"object":"0x","sourceMap":"","linkReferences":{}},"methodIdentifiers":{},"rawMetadata":"{\"compiler\":{\"version\":\"0.8.26+commit.8a97fa7a\"},\"language\":\"Solidity\",\"output\":{\"abi\":[{\"inputs\":[],\"name\":\"CallerIsNotFungibleModule\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"GasFeeTransferFailed\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"InvalidSender\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"LowAllowance\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"LowBalance\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"ZeroAddress\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"ZeroGasCoin\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"ZeroGasPrice\",\"type\":\"error\"}],\"devdoc\":{\"details\":\"Custom errors for ZRC20\",\"kind\":\"dev\",\"methods\":{},\"version\":1},\"userdoc\":{\"kind\":\"user\",\"methods\":{},\"version\":1}},\"settings\":{\"compilationTarget\":{\"contracts/zevm/ZRC20.sol\":\"ZRC20Errors\"},\"evmVersion\":\"london\",\"libraries\":{},\"metadata\":{\"bytecodeHash\":\"ipfs\"},\"optimizer\":{\"enabled\":true,\"runs\":10000},\"remappings\":[\":@openzeppelin/contracts-upgradeable/=lib/openzeppelin-contracts-upgradeable/contracts/\",\":@openzeppelin/contracts/=lib/openzeppelin-contracts-upgradeable/lib/openzeppelin-contracts/contracts/\",\":ds-test/=node_modules/ds-test/src/\",\":erc4626-tests/=lib/openzeppelin-contracts-upgradeable/lib/erc4626-tests/\",\":forge-std/=lib/forge-std/src/\",\":openzeppelin-contracts-upgradeable/=lib/openzeppelin-contracts-upgradeable/\",\":openzeppelin-contracts/=lib/openzeppelin-contracts-upgradeable/lib/openzeppelin-contracts/\",\":openzeppelin-foundry-upgrades/=lib/openzeppelin-foundry-upgrades/src/\",\":solidity-stringutils/=lib/openzeppelin-foundry-upgrades/lib/solidity-stringutils/\",\":test/=test/\"]},\"sources\":{\"contracts/zevm/ZRC20.sol\":{\"keccak256\":\"0x968ad4d26d5711350651fd626e09f2ccf85fff5548cf6a037f5db6a700a689cc\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://52c451104d1732d88d8ce60427b4eec969416843348869eacfbd4e9b9a74b36e\",\"dweb:/ipfs/QmRvTPCXhPHFvEUK8XpfcpgcuM9DGdne634Y5t4rR3w8Mi\"]},\"contracts/zevm/interfaces/ISystem.sol\":{\"keccak256\":\"0x5602e9af1bd4645ed3e9988b4a2039e86b57e5901903d16fde8dce2d05d0f1df\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://a8a348733bc0d6d8237de64bc006cbfb8390b4ad5a31f76c7a465b5c0036636d\",\"dweb:/ipfs/QmeXKD9fRzg7tYYuf2oSwyu8Rwh86NVTZbuTFecVfX9X9u\"]},\"contracts/zevm/interfaces/IZRC20.sol\":{\"keccak256\":\"0x2118098ec6a745f69358649d011f0cba691f86c586b3a6f0bcbea16d9753f6e8\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://ddacdf1f3681f936f80ef0102cdac2aa1b4d60c751a1c23d7f3a45f969346cdf\",\"dweb:/ipfs/Qma7wpw8JwBSNJeob4KHGjKtXbtvW2FoThJJrDb8vtXz7X\"]}},\"version\":1}","metadata":{"compiler":{"version":"0.8.26+commit.8a97fa7a"},"language":"Solidity","output":{"abi":[{"inputs":[],"type":"error","name":"CallerIsNotFungibleModule"},{"inputs":[],"type":"error","name":"GasFeeTransferFailed"},{"inputs":[],"type":"error","name":"InvalidSender"},{"inputs":[],"type":"error","name":"LowAllowance"},{"inputs":[],"type":"error","name":"LowBalance"},{"inputs":[],"type":"error","name":"ZeroAddress"},{"inputs":[],"type":"error","name":"ZeroGasCoin"},{"inputs":[],"type":"error","name":"ZeroGasPrice"}],"devdoc":{"kind":"dev","methods":{},"version":1},"userdoc":{"kind":"user","methods":{},"version":1}},"settings":{"remappings":["@openzeppelin/contracts-upgradeable/=lib/openzeppelin-contracts-upgradeable/contracts/","@openzeppelin/contracts/=lib/openzeppelin-contracts-upgradeable/lib/openzeppelin-contracts/contracts/","ds-test/=node_modules/ds-test/src/","erc4626-tests/=lib/openzeppelin-contracts-upgradeable/lib/erc4626-tests/","forge-std/=lib/forge-std/src/","openzeppelin-contracts-upgradeable/=lib/openzeppelin-contracts-upgradeable/","openzeppelin-contracts/=lib/openzeppelin-contracts-upgradeable/lib/openzeppelin-contracts/","openzeppelin-foundry-upgrades/=lib/openzeppelin-foundry-upgrades/src/","solidity-stringutils/=lib/openzeppelin-foundry-upgrades/lib/solidity-stringutils/","test/=test/"],"optimizer":{"enabled":true,"runs":10000},"metadata":{"bytecodeHash":"ipfs"},"compilationTarget":{"contracts/zevm/ZRC20.sol":"ZRC20Errors"},"evmVersion":"london","libraries":{}},"sources":{"contracts/zevm/ZRC20.sol":{"keccak256":"0x968ad4d26d5711350651fd626e09f2ccf85fff5548cf6a037f5db6a700a689cc","urls":["bzz-raw://52c451104d1732d88d8ce60427b4eec969416843348869eacfbd4e9b9a74b36e","dweb:/ipfs/QmRvTPCXhPHFvEUK8XpfcpgcuM9DGdne634Y5t4rR3w8Mi"],"license":"MIT"},"contracts/zevm/interfaces/ISystem.sol":{"keccak256":"0x5602e9af1bd4645ed3e9988b4a2039e86b57e5901903d16fde8dce2d05d0f1df","urls":["bzz-raw://a8a348733bc0d6d8237de64bc006cbfb8390b4ad5a31f76c7a465b5c0036636d","dweb:/ipfs/QmeXKD9fRzg7tYYuf2oSwyu8Rwh86NVTZbuTFecVfX9X9u"],"license":"MIT"},"contracts/zevm/interfaces/IZRC20.sol":{"keccak256":"0x2118098ec6a745f69358649d011f0cba691f86c586b3a6f0bcbea16d9753f6e8","urls":["bzz-raw://ddacdf1f3681f936f80ef0102cdac2aa1b4d60c751a1c23d7f3a45f969346cdf","dweb:/ipfs/Qma7wpw8JwBSNJeob4KHGjKtXbtvW2FoThJJrDb8vtXz7X"],"license":"MIT"}},"version":1},"storageLayout":{"storage":[],"types":{}},"ast":{"absolutePath":"contracts/zevm/ZRC20.sol","id":4341,"exportedSymbols":{"CoinType":[4903],"ISystem":[4618],"IZRC20":[4825],"IZRC20Metadata":[4844],"ZRC20":[4340],"ZRC20Errors":[3484],"ZRC20Events":[4898]},"nodeType":"SourceUnit","src":"32:12113:11","nodes":[{"id":3464,"nodeType":"PragmaDirective","src":"32:23:11","nodes":[],"literals":["solidity","0.8",".26"]},{"id":3465,"nodeType":"ImportDirective","src":"57:53:11","nodes":[],"absolutePath":"contracts/zevm/interfaces/ISystem.sol","file":"../../contracts/zevm/interfaces/ISystem.sol","nameLocation":"-1:-1:-1","scope":4341,"sourceUnit":4619,"symbolAliases":[],"unitAlias":""},{"id":3466,"nodeType":"ImportDirective","src":"111:52:11","nodes":[],"absolutePath":"contracts/zevm/interfaces/IZRC20.sol","file":"../../contracts/zevm/interfaces/IZRC20.sol","nameLocation":"-1:-1:-1","scope":4341,"sourceUnit":4904,"symbolAliases":[],"unitAlias":""},{"id":3484,"nodeType":"ContractDefinition","src":"205:316:11","nodes":[{"id":3469,"nodeType":"ErrorDefinition","src":"298:34:11","nodes":[],"errorSelector":"2b2add3d","name":"CallerIsNotFungibleModule","nameLocation":"304:25:11","parameters":{"id":3468,"nodeType":"ParameterList","parameters":[],"src":"329:2:11"}},{"id":3471,"nodeType":"ErrorDefinition","src":"337:22:11","nodes":[],"errorSelector":"ddb5de5e","name":"InvalidSender","nameLocation":"343:13:11","parameters":{"id":3470,"nodeType":"ParameterList","parameters":[],"src":"356:2:11"}},{"id":3473,"nodeType":"ErrorDefinition","src":"364:29:11","nodes":[],"errorSelector":"0a7cd6d6","name":"GasFeeTransferFailed","nameLocation":"370:20:11","parameters":{"id":3472,"nodeType":"ParameterList","parameters":[],"src":"390:2:11"}},{"id":3475,"nodeType":"ErrorDefinition","src":"398:20:11","nodes":[],"errorSelector":"78fff396","name":"ZeroGasCoin","nameLocation":"404:11:11","parameters":{"id":3474,"nodeType":"ParameterList","parameters":[],"src":"415:2:11"}},{"id":3477,"nodeType":"ErrorDefinition","src":"423:21:11","nodes":[],"errorSelector":"e661aed0","name":"ZeroGasPrice","nameLocation":"429:12:11","parameters":{"id":3476,"nodeType":"ParameterList","parameters":[],"src":"441:2:11"}},{"id":3479,"nodeType":"ErrorDefinition","src":"449:21:11","nodes":[],"errorSelector":"10bad147","name":"LowAllowance","nameLocation":"455:12:11","parameters":{"id":3478,"nodeType":"ParameterList","parameters":[],"src":"467:2:11"}},{"id":3481,"nodeType":"ErrorDefinition","src":"475:19:11","nodes":[],"errorSelector":"fe382aa7","name":"LowBalance","nameLocation":"481:10:11","parameters":{"id":3480,"nodeType":"ParameterList","parameters":[],"src":"491:2:11"}},{"id":3483,"nodeType":"ErrorDefinition","src":"499:20:11","nodes":[],"errorSelector":"d92e233d","name":"ZeroAddress","nameLocation":"505:11:11","parameters":{"id":3482,"nodeType":"ParameterList","parameters":[],"src":"516:2:11"}}],"abstract":false,"baseContracts":[],"canonicalName":"ZRC20Errors","contractDependencies":[],"contractKind":"interface","documentation":{"id":3467,"nodeType":"StructuredDocumentation","src":"165:39:11","text":" @dev Custom errors for ZRC20"},"fullyImplemented":true,"linearizedBaseContracts":[3484],"name":"ZRC20Errors","nameLocation":"215:11:11","scope":4341,"usedErrors":[3469,3471,3473,3475,3477,3479,3481,3483],"usedEvents":[]},{"id":4340,"nodeType":"ContractDefinition","src":"704:11440:11","nodes":[{"id":3494,"nodeType":"VariableDeclaration","src":"855:92:11","nodes":[],"constant":true,"documentation":{"id":3491,"nodeType":"StructuredDocumentation","src":"769:81:11","text":"@notice Fungible address is always the same, maintained at the protocol level"},"functionSelector":"3ce4a5bc","mutability":"constant","name":"FUNGIBLE_MODULE_ADDRESS","nameLocation":"879:23:11","scope":4340,"stateVariable":true,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":3492,"name":"address","nodeType":"ElementaryTypeName","src":"855:7:11","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"value":{"hexValue":"307837333562313442423739343633333037414163424544383644416633333232423165363232366142","id":3493,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"905:42:11","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"value":"0x735b14BB79463307AAcBED86DAf3322B1e6226aB"},"visibility":"public"},{"id":3497,"nodeType":"VariableDeclaration","src":"982:33:11","nodes":[],"constant":false,"documentation":{"id":3495,"nodeType":"StructuredDocumentation","src":"953:24:11","text":"@notice Chain id.abi"},"functionSelector":"85e1f4d0","mutability":"immutable","name":"CHAIN_ID","nameLocation":"1007:8:11","scope":4340,"stateVariable":true,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":3496,"name":"uint256","nodeType":"ElementaryTypeName","src":"982:7:11","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"public"},{"id":3501,"nodeType":"VariableDeclaration","src":"1073:35:11","nodes":[],"constant":false,"documentation":{"id":3498,"nodeType":"StructuredDocumentation","src":"1021:47:11","text":"@notice Coin type, checkout Interfaces.sol."},"functionSelector":"a3413d03","mutability":"immutable","name":"COIN_TYPE","nameLocation":"1099:9:11","scope":4340,"stateVariable":true,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_enum$_CoinType_$4903","typeString":"enum CoinType"},"typeName":{"id":3500,"nodeType":"UserDefinedTypeName","pathNode":{"id":3499,"name":"CoinType","nameLocations":["1073:8:11"],"nodeType":"IdentifierPath","referencedDeclaration":4903,"src":"1073:8:11"},"referencedDeclaration":4903,"src":"1073:8:11","typeDescriptions":{"typeIdentifier":"t_enum$_CoinType_$4903","typeString":"enum CoinType"}},"visibility":"public"},{"id":3504,"nodeType":"VariableDeclaration","src":"1234:38:11","nodes":[],"constant":false,"documentation":{"id":3502,"nodeType":"StructuredDocumentation","src":"1114:115:11","text":"@notice System contract address.\n @dev Name is in upper case to maintain compatibility with ZRC20.sol v1"},"functionSelector":"f2441b32","mutability":"mutable","name":"SYSTEM_CONTRACT_ADDRESS","nameLocation":"1249:23:11","scope":4340,"stateVariable":true,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":3503,"name":"address","nodeType":"ElementaryTypeName","src":"1234:7:11","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"public"},{"id":3507,"nodeType":"VariableDeclaration","src":"1384:24:11","nodes":[],"baseFunctions":[4814],"constant":false,"documentation":{"id":3505,"nodeType":"StructuredDocumentation","src":"1278:101:11","text":"@notice Gas limit.\n @dev Name is in upper case to maintain compatibility with ZRC20.sol v1"},"functionSelector":"091d2788","mutability":"mutable","name":"GAS_LIMIT","nameLocation":"1399:9:11","scope":4340,"stateVariable":true,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":3506,"name":"uint256","nodeType":"ElementaryTypeName","src":"1384:7:11","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"public"},{"id":3511,"nodeType":"VariableDeclaration","src":"1528:41:11","nodes":[],"baseFunctions":[4808],"constant":false,"documentation":{"id":3508,"nodeType":"StructuredDocumentation","src":"1414:109:11","text":"@notice Protocol flat fee.\n @dev Name is in upper case to maintain compatibility with ZRC20.sol v1"},"functionSelector":"4d8943bb","mutability":"mutable","name":"PROTOCOL_FLAT_FEE","nameLocation":"1552:17:11","overrides":{"id":3510,"nodeType":"OverrideSpecifier","overrides":[],"src":"1543:8:11"},"scope":4340,"stateVariable":true,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":3509,"name":"uint256","nodeType":"ElementaryTypeName","src":"1528:7:11","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"public"},{"id":3515,"nodeType":"VariableDeclaration","src":"1576:45:11","nodes":[],"constant":false,"mutability":"mutable","name":"_balances","nameLocation":"1612:9:11","scope":4340,"stateVariable":true,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_mapping$_t_address_$_t_uint256_$","typeString":"mapping(address => uint256)"},"typeName":{"id":3514,"keyName":"","keyNameLocation":"-1:-1:-1","keyType":{"id":3512,"name":"address","nodeType":"ElementaryTypeName","src":"1584:7:11","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"nodeType":"Mapping","src":"1576:27:11","typeDescriptions":{"typeIdentifier":"t_mapping$_t_address_$_t_uint256_$","typeString":"mapping(address => uint256)"},"valueName":"","valueNameLocation":"-1:-1:-1","valueType":{"id":3513,"name":"uint256","nodeType":"ElementaryTypeName","src":"1595:7:11","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}},"visibility":"private"},{"id":3521,"nodeType":"VariableDeclaration","src":"1627:67:11","nodes":[],"constant":false,"mutability":"mutable","name":"_allowances","nameLocation":"1683:11:11","scope":4340,"stateVariable":true,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_mapping$_t_address_$_t_mapping$_t_address_$_t_uint256_$_$","typeString":"mapping(address => mapping(address => uint256))"},"typeName":{"id":3520,"keyName":"","keyNameLocation":"-1:-1:-1","keyType":{"id":3516,"name":"address","nodeType":"ElementaryTypeName","src":"1635:7:11","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"nodeType":"Mapping","src":"1627:47:11","typeDescriptions":{"typeIdentifier":"t_mapping$_t_address_$_t_mapping$_t_address_$_t_uint256_$_$","typeString":"mapping(address => mapping(address => uint256))"},"valueName":"","valueNameLocation":"-1:-1:-1","valueType":{"id":3519,"keyName":"","keyNameLocation":"-1:-1:-1","keyType":{"id":3517,"name":"address","nodeType":"ElementaryTypeName","src":"1654:7:11","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"nodeType":"Mapping","src":"1646:27:11","typeDescriptions":{"typeIdentifier":"t_mapping$_t_address_$_t_uint256_$","typeString":"mapping(address => uint256)"},"valueName":"","valueNameLocation":"-1:-1:-1","valueType":{"id":3518,"name":"uint256","nodeType":"ElementaryTypeName","src":"1665:7:11","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}}},"visibility":"private"},{"id":3523,"nodeType":"VariableDeclaration","src":"1700:28:11","nodes":[],"constant":false,"mutability":"mutable","name":"_totalSupply","nameLocation":"1716:12:11","scope":4340,"stateVariable":true,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":3522,"name":"uint256","nodeType":"ElementaryTypeName","src":"1700:7:11","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"private"},{"id":3525,"nodeType":"VariableDeclaration","src":"1734:20:11","nodes":[],"constant":false,"mutability":"mutable","name":"_name","nameLocation":"1749:5:11","scope":4340,"stateVariable":true,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_string_storage","typeString":"string"},"typeName":{"id":3524,"name":"string","nodeType":"ElementaryTypeName","src":"1734:6:11","typeDescriptions":{"typeIdentifier":"t_string_storage_ptr","typeString":"string"}},"visibility":"private"},{"id":3527,"nodeType":"VariableDeclaration","src":"1760:22:11","nodes":[],"constant":false,"mutability":"mutable","name":"_symbol","nameLocation":"1775:7:11","scope":4340,"stateVariable":true,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_string_storage","typeString":"string"},"typeName":{"id":3526,"name":"string","nodeType":"ElementaryTypeName","src":"1760:6:11","typeDescriptions":{"typeIdentifier":"t_string_storage_ptr","typeString":"string"}},"visibility":"private"},{"id":3529,"nodeType":"VariableDeclaration","src":"1788:23:11","nodes":[],"constant":false,"mutability":"mutable","name":"_decimals","nameLocation":"1802:9:11","scope":4340,"stateVariable":true,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint8","typeString":"uint8"},"typeName":{"id":3528,"name":"uint8","nodeType":"ElementaryTypeName","src":"1788:5:11","typeDescriptions":{"typeIdentifier":"t_uint8","typeString":"uint8"}},"visibility":"private"},{"id":3532,"nodeType":"VariableDeclaration","src":"1958:29:11","nodes":[],"constant":false,"documentation":{"id":3530,"nodeType":"StructuredDocumentation","src":"1818:135:11","text":"@notice Gateway contract address.\n @dev This variable is added at last position to maintain storage layout with ZRC20.sol v1"},"functionSelector":"8b851b95","mutability":"mutable","name":"gatewayAddress","nameLocation":"1973:14:11","scope":4340,"stateVariable":true,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":3531,"name":"address","nodeType":"ElementaryTypeName","src":"1958:7:11","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"public"},{"id":3541,"nodeType":"FunctionDefinition","src":"1994:96:11","nodes":[],"body":{"id":3540,"nodeType":"Block","src":"2056:34:11","nodes":[],"statements":[{"expression":{"expression":{"id":3537,"name":"msg","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-15,"src":"2073:3:11","typeDescriptions":{"typeIdentifier":"t_magic_message","typeString":"msg"}},"id":3538,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"2077:6:11","memberName":"sender","nodeType":"MemberAccess","src":"2073:10:11","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"functionReturnParameters":3536,"id":3539,"nodeType":"Return","src":"2066:17:11"}]},"implemented":true,"kind":"function","modifiers":[],"name":"_msgSender","nameLocation":"2003:10:11","parameters":{"id":3533,"nodeType":"ParameterList","parameters":[],"src":"2013:2:11"},"returnParameters":{"id":3536,"nodeType":"ParameterList","parameters":[{"constant":false,"id":3535,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":3541,"src":"2047:7:11","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":3534,"name":"address","nodeType":"ElementaryTypeName","src":"2047:7:11","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"2046:9:11"},"scope":4340,"stateMutability":"view","virtual":true,"visibility":"internal"},{"id":3554,"nodeType":"ModifierDefinition","src":"2155:129:11","nodes":[],"body":{"id":3553,"nodeType":"Block","src":"2179:105:11","nodes":[],"statements":[{"condition":{"commonType":{"typeIdentifier":"t_address","typeString":"address"},"id":3547,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"expression":{"id":3544,"name":"msg","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-15,"src":"2193:3:11","typeDescriptions":{"typeIdentifier":"t_magic_message","typeString":"msg"}},"id":3545,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"2197:6:11","memberName":"sender","nodeType":"MemberAccess","src":"2193:10:11","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"nodeType":"BinaryOperation","operator":"!=","rightExpression":{"id":3546,"name":"FUNGIBLE_MODULE_ADDRESS","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3494,"src":"2207:23:11","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"src":"2193:37:11","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":3551,"nodeType":"IfStatement","src":"2189:77:11","trueBody":{"errorCall":{"arguments":[],"expression":{"argumentTypes":[],"id":3548,"name":"CallerIsNotFungibleModule","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3469,"src":"2239:25:11","typeDescriptions":{"typeIdentifier":"t_function_error_pure$__$returns$_t_error_$","typeString":"function () pure returns (error)"}},"id":3549,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"2239:27:11","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_error","typeString":"error"}},"id":3550,"nodeType":"RevertStatement","src":"2232:34:11"}},{"id":3552,"nodeType":"PlaceholderStatement","src":"2276:1:11"}]},"documentation":{"id":3542,"nodeType":"StructuredDocumentation","src":"2096:54:11","text":" @dev Only fungible module modifier."},"name":"onlyFungible","nameLocation":"2164:12:11","parameters":{"id":3543,"nodeType":"ParameterList","parameters":[],"src":"2176:2:11"},"virtual":false,"visibility":"internal"},{"id":3633,"nodeType":"FunctionDefinition","src":"2380:728:11","nodes":[],"body":{"id":3632,"nodeType":"Block","src":"2637:471:11","nodes":[],"statements":[{"condition":{"commonType":{"typeIdentifier":"t_address","typeString":"address"},"id":3578,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"expression":{"id":3575,"name":"msg","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-15,"src":"2651:3:11","typeDescriptions":{"typeIdentifier":"t_magic_message","typeString":"msg"}},"id":3576,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"2655:6:11","memberName":"sender","nodeType":"MemberAccess","src":"2651:10:11","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"nodeType":"BinaryOperation","operator":"!=","rightExpression":{"id":3577,"name":"FUNGIBLE_MODULE_ADDRESS","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3494,"src":"2665:23:11","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"src":"2651:37:11","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":3582,"nodeType":"IfStatement","src":"2647:77:11","trueBody":{"errorCall":{"arguments":[],"expression":{"argumentTypes":[],"id":3579,"name":"CallerIsNotFungibleModule","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3469,"src":"2697:25:11","typeDescriptions":{"typeIdentifier":"t_function_error_pure$__$returns$_t_error_$","typeString":"function () pure returns (error)"}},"id":3580,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"2697:27:11","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_error","typeString":"error"}},"id":3581,"nodeType":"RevertStatement","src":"2690:34:11"}},{"condition":{"commonType":{"typeIdentifier":"t_bool","typeString":"bool"},"id":3595,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"commonType":{"typeIdentifier":"t_address","typeString":"address"},"id":3588,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":3583,"name":"systemContractAddress_","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3570,"src":"2738:22:11","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"nodeType":"BinaryOperation","operator":"==","rightExpression":{"arguments":[{"hexValue":"30","id":3586,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"2772:1:11","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"}],"id":3585,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"2764:7:11","typeDescriptions":{"typeIdentifier":"t_type$_t_address_$","typeString":"type(address)"},"typeName":{"id":3584,"name":"address","nodeType":"ElementaryTypeName","src":"2764:7:11","typeDescriptions":{}}},"id":3587,"isConstant":false,"isLValue":false,"isPure":true,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"2764:10:11","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"src":"2738:36:11","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"nodeType":"BinaryOperation","operator":"||","rightExpression":{"commonType":{"typeIdentifier":"t_address","typeString":"address"},"id":3594,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":3589,"name":"gatewayAddress_","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3572,"src":"2778:15:11","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"nodeType":"BinaryOperation","operator":"==","rightExpression":{"arguments":[{"hexValue":"30","id":3592,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"2805:1:11","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"}],"id":3591,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"2797:7:11","typeDescriptions":{"typeIdentifier":"t_type$_t_address_$","typeString":"type(address)"},"typeName":{"id":3590,"name":"address","nodeType":"ElementaryTypeName","src":"2797:7:11","typeDescriptions":{}}},"id":3593,"isConstant":false,"isLValue":false,"isPure":true,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"2797:10:11","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"src":"2778:29:11","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"src":"2738:69:11","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":3599,"nodeType":"IfStatement","src":"2734:95:11","trueBody":{"errorCall":{"arguments":[],"expression":{"argumentTypes":[],"id":3596,"name":"ZeroAddress","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3483,"src":"2816:11:11","typeDescriptions":{"typeIdentifier":"t_function_error_pure$__$returns$_t_error_$","typeString":"function () pure returns (error)"}},"id":3597,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"2816:13:11","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_error","typeString":"error"}},"id":3598,"nodeType":"RevertStatement","src":"2809:20:11"}},{"expression":{"id":3602,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":3600,"name":"_name","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3525,"src":"2839:5:11","typeDescriptions":{"typeIdentifier":"t_string_storage","typeString":"string storage ref"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"id":3601,"name":"name_","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3557,"src":"2847:5:11","typeDescriptions":{"typeIdentifier":"t_string_memory_ptr","typeString":"string memory"}},"src":"2839:13:11","typeDescriptions":{"typeIdentifier":"t_string_storage","typeString":"string storage ref"}},"id":3603,"nodeType":"ExpressionStatement","src":"2839:13:11"},{"expression":{"id":3606,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":3604,"name":"_symbol","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3527,"src":"2862:7:11","typeDescriptions":{"typeIdentifier":"t_string_storage","typeString":"string storage ref"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"id":3605,"name":"symbol_","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3559,"src":"2872:7:11","typeDescriptions":{"typeIdentifier":"t_string_memory_ptr","typeString":"string memory"}},"src":"2862:17:11","typeDescriptions":{"typeIdentifier":"t_string_storage","typeString":"string storage ref"}},"id":3607,"nodeType":"ExpressionStatement","src":"2862:17:11"},{"expression":{"id":3610,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":3608,"name":"_decimals","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3529,"src":"2889:9:11","typeDescriptions":{"typeIdentifier":"t_uint8","typeString":"uint8"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"id":3609,"name":"decimals_","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3561,"src":"2901:9:11","typeDescriptions":{"typeIdentifier":"t_uint8","typeString":"uint8"}},"src":"2889:21:11","typeDescriptions":{"typeIdentifier":"t_uint8","typeString":"uint8"}},"id":3611,"nodeType":"ExpressionStatement","src":"2889:21:11"},{"expression":{"id":3614,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":3612,"name":"CHAIN_ID","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3497,"src":"2920:8:11","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"id":3613,"name":"chainid_","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3563,"src":"2931:8:11","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"2920:19:11","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":3615,"nodeType":"ExpressionStatement","src":"2920:19:11"},{"expression":{"id":3618,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":3616,"name":"COIN_TYPE","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3501,"src":"2949:9:11","typeDescriptions":{"typeIdentifier":"t_enum$_CoinType_$4903","typeString":"enum CoinType"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"id":3617,"name":"coinType_","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3566,"src":"2961:9:11","typeDescriptions":{"typeIdentifier":"t_enum$_CoinType_$4903","typeString":"enum CoinType"}},"src":"2949:21:11","typeDescriptions":{"typeIdentifier":"t_enum$_CoinType_$4903","typeString":"enum CoinType"}},"id":3619,"nodeType":"ExpressionStatement","src":"2949:21:11"},{"expression":{"id":3622,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":3620,"name":"GAS_LIMIT","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3507,"src":"2980:9:11","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"id":3621,"name":"gasLimit_","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3568,"src":"2992:9:11","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"2980:21:11","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":3623,"nodeType":"ExpressionStatement","src":"2980:21:11"},{"expression":{"id":3626,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":3624,"name":"SYSTEM_CONTRACT_ADDRESS","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3504,"src":"3011:23:11","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"id":3625,"name":"systemContractAddress_","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3570,"src":"3037:22:11","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"src":"3011:48:11","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"id":3627,"nodeType":"ExpressionStatement","src":"3011:48:11"},{"expression":{"id":3630,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":3628,"name":"gatewayAddress","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3532,"src":"3069:14:11","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"id":3629,"name":"gatewayAddress_","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3572,"src":"3086:15:11","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"src":"3069:32:11","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"id":3631,"nodeType":"ExpressionStatement","src":"3069:32:11"}]},"documentation":{"id":3555,"nodeType":"StructuredDocumentation","src":"2290:85:11","text":" @dev The only one allowed to deploy new ZRC20 is fungible address."},"implemented":true,"kind":"constructor","modifiers":[],"name":"","nameLocation":"-1:-1:-1","parameters":{"id":3573,"nodeType":"ParameterList","parameters":[{"constant":false,"id":3557,"mutability":"mutable","name":"name_","nameLocation":"2415:5:11","nodeType":"VariableDeclaration","scope":3633,"src":"2401:19:11","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_string_memory_ptr","typeString":"string"},"typeName":{"id":3556,"name":"string","nodeType":"ElementaryTypeName","src":"2401:6:11","typeDescriptions":{"typeIdentifier":"t_string_storage_ptr","typeString":"string"}},"visibility":"internal"},{"constant":false,"id":3559,"mutability":"mutable","name":"symbol_","nameLocation":"2444:7:11","nodeType":"VariableDeclaration","scope":3633,"src":"2430:21:11","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_string_memory_ptr","typeString":"string"},"typeName":{"id":3558,"name":"string","nodeType":"ElementaryTypeName","src":"2430:6:11","typeDescriptions":{"typeIdentifier":"t_string_storage_ptr","typeString":"string"}},"visibility":"internal"},{"constant":false,"id":3561,"mutability":"mutable","name":"decimals_","nameLocation":"2467:9:11","nodeType":"VariableDeclaration","scope":3633,"src":"2461:15:11","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint8","typeString":"uint8"},"typeName":{"id":3560,"name":"uint8","nodeType":"ElementaryTypeName","src":"2461:5:11","typeDescriptions":{"typeIdentifier":"t_uint8","typeString":"uint8"}},"visibility":"internal"},{"constant":false,"id":3563,"mutability":"mutable","name":"chainid_","nameLocation":"2494:8:11","nodeType":"VariableDeclaration","scope":3633,"src":"2486:16:11","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":3562,"name":"uint256","nodeType":"ElementaryTypeName","src":"2486:7:11","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":3566,"mutability":"mutable","name":"coinType_","nameLocation":"2521:9:11","nodeType":"VariableDeclaration","scope":3633,"src":"2512:18:11","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_enum$_CoinType_$4903","typeString":"enum CoinType"},"typeName":{"id":3565,"nodeType":"UserDefinedTypeName","pathNode":{"id":3564,"name":"CoinType","nameLocations":["2512:8:11"],"nodeType":"IdentifierPath","referencedDeclaration":4903,"src":"2512:8:11"},"referencedDeclaration":4903,"src":"2512:8:11","typeDescriptions":{"typeIdentifier":"t_enum$_CoinType_$4903","typeString":"enum CoinType"}},"visibility":"internal"},{"constant":false,"id":3568,"mutability":"mutable","name":"gasLimit_","nameLocation":"2548:9:11","nodeType":"VariableDeclaration","scope":3633,"src":"2540:17:11","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":3567,"name":"uint256","nodeType":"ElementaryTypeName","src":"2540:7:11","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":3570,"mutability":"mutable","name":"systemContractAddress_","nameLocation":"2575:22:11","nodeType":"VariableDeclaration","scope":3633,"src":"2567:30:11","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":3569,"name":"address","nodeType":"ElementaryTypeName","src":"2567:7:11","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":3572,"mutability":"mutable","name":"gatewayAddress_","nameLocation":"2615:15:11","nodeType":"VariableDeclaration","scope":3633,"src":"2607:23:11","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":3571,"name":"address","nodeType":"ElementaryTypeName","src":"2607:7:11","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"2391:245:11"},"returnParameters":{"id":3574,"nodeType":"ParameterList","parameters":[],"src":"2637:0:11"},"scope":4340,"stateMutability":"nonpayable","virtual":false,"visibility":"public"},{"id":3643,"nodeType":"FunctionDefinition","src":"3183:98:11","nodes":[],"body":{"id":3642,"nodeType":"Block","src":"3252:29:11","nodes":[],"statements":[{"expression":{"id":3640,"name":"_name","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3525,"src":"3269:5:11","typeDescriptions":{"typeIdentifier":"t_string_storage","typeString":"string storage ref"}},"functionReturnParameters":3639,"id":3641,"nodeType":"Return","src":"3262:12:11"}]},"baseFunctions":[4833],"documentation":{"id":3634,"nodeType":"StructuredDocumentation","src":"3114:64:11","text":" @dev ZRC20 name\n @return name as string"},"functionSelector":"06fdde03","implemented":true,"kind":"function","modifiers":[],"name":"name","nameLocation":"3192:4:11","overrides":{"id":3636,"nodeType":"OverrideSpecifier","overrides":[],"src":"3219:8:11"},"parameters":{"id":3635,"nodeType":"ParameterList","parameters":[],"src":"3196:2:11"},"returnParameters":{"id":3639,"nodeType":"ParameterList","parameters":[{"constant":false,"id":3638,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":3643,"src":"3237:13:11","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_string_memory_ptr","typeString":"string"},"typeName":{"id":3637,"name":"string","nodeType":"ElementaryTypeName","src":"3237:6:11","typeDescriptions":{"typeIdentifier":"t_string_storage_ptr","typeString":"string"}},"visibility":"internal"}],"src":"3236:15:11"},"scope":4340,"stateMutability":"view","virtual":true,"visibility":"public"},{"id":3657,"nodeType":"FunctionDefinition","src":"3363:103:11","nodes":[],"body":{"id":3656,"nodeType":"Block","src":"3434:32:11","nodes":[],"statements":[{"expression":{"id":3654,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":3652,"name":"_name","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3525,"src":"3444:5:11","typeDescriptions":{"typeIdentifier":"t_string_storage","typeString":"string storage ref"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"id":3653,"name":"newName","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3646,"src":"3452:7:11","typeDescriptions":{"typeIdentifier":"t_string_memory_ptr","typeString":"string memory"}},"src":"3444:15:11","typeDescriptions":{"typeIdentifier":"t_string_storage","typeString":"string storage ref"}},"id":3655,"nodeType":"ExpressionStatement","src":"3444:15:11"}]},"baseFunctions":[4819],"documentation":{"id":3644,"nodeType":"StructuredDocumentation","src":"3287:71:11","text":" @dev Name can be updated by fungible module account."},"functionSelector":"c47f0027","implemented":true,"kind":"function","modifiers":[{"id":3650,"kind":"modifierInvocation","modifierName":{"id":3649,"name":"onlyFungible","nameLocations":["3421:12:11"],"nodeType":"IdentifierPath","referencedDeclaration":3554,"src":"3421:12:11"},"nodeType":"ModifierInvocation","src":"3421:12:11"}],"name":"setName","nameLocation":"3372:7:11","overrides":{"id":3648,"nodeType":"OverrideSpecifier","overrides":[],"src":"3412:8:11"},"parameters":{"id":3647,"nodeType":"ParameterList","parameters":[{"constant":false,"id":3646,"mutability":"mutable","name":"newName","nameLocation":"3394:7:11","nodeType":"VariableDeclaration","scope":3657,"src":"3380:21:11","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_string_memory_ptr","typeString":"string"},"typeName":{"id":3645,"name":"string","nodeType":"ElementaryTypeName","src":"3380:6:11","typeDescriptions":{"typeIdentifier":"t_string_storage_ptr","typeString":"string"}},"visibility":"internal"}],"src":"3379:23:11"},"returnParameters":{"id":3651,"nodeType":"ParameterList","parameters":[],"src":"3434:0:11"},"scope":4340,"stateMutability":"nonpayable","virtual":false,"visibility":"external"},{"id":3671,"nodeType":"FunctionDefinition","src":"3550:111:11","nodes":[],"body":{"id":3670,"nodeType":"Block","src":"3625:36:11","nodes":[],"statements":[{"expression":{"id":3668,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":3666,"name":"_symbol","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3527,"src":"3635:7:11","typeDescriptions":{"typeIdentifier":"t_string_storage","typeString":"string storage ref"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"id":3667,"name":"newSymbol","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3660,"src":"3645:9:11","typeDescriptions":{"typeIdentifier":"t_string_memory_ptr","typeString":"string memory"}},"src":"3635:19:11","typeDescriptions":{"typeIdentifier":"t_string_storage","typeString":"string storage ref"}},"id":3669,"nodeType":"ExpressionStatement","src":"3635:19:11"}]},"baseFunctions":[4824],"documentation":{"id":3658,"nodeType":"StructuredDocumentation","src":"3472:73:11","text":" @dev Symbol can be updated by fungible module account."},"functionSelector":"b84c8246","implemented":true,"kind":"function","modifiers":[{"id":3664,"kind":"modifierInvocation","modifierName":{"id":3663,"name":"onlyFungible","nameLocations":["3612:12:11"],"nodeType":"IdentifierPath","referencedDeclaration":3554,"src":"3612:12:11"},"nodeType":"ModifierInvocation","src":"3612:12:11"}],"name":"setSymbol","nameLocation":"3559:9:11","overrides":{"id":3662,"nodeType":"OverrideSpecifier","overrides":[],"src":"3603:8:11"},"parameters":{"id":3661,"nodeType":"ParameterList","parameters":[{"constant":false,"id":3660,"mutability":"mutable","name":"newSymbol","nameLocation":"3583:9:11","nodeType":"VariableDeclaration","scope":3671,"src":"3569:23:11","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_string_memory_ptr","typeString":"string"},"typeName":{"id":3659,"name":"string","nodeType":"ElementaryTypeName","src":"3569:6:11","typeDescriptions":{"typeIdentifier":"t_string_storage_ptr","typeString":"string"}},"visibility":"internal"}],"src":"3568:25:11"},"returnParameters":{"id":3665,"nodeType":"ParameterList","parameters":[],"src":"3625:0:11"},"scope":4340,"stateMutability":"nonpayable","virtual":false,"visibility":"external"},{"id":3681,"nodeType":"FunctionDefinition","src":"3742:102:11","nodes":[],"body":{"id":3680,"nodeType":"Block","src":"3813:31:11","nodes":[],"statements":[{"expression":{"id":3678,"name":"_symbol","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3527,"src":"3830:7:11","typeDescriptions":{"typeIdentifier":"t_string_storage","typeString":"string storage ref"}},"functionReturnParameters":3677,"id":3679,"nodeType":"Return","src":"3823:14:11"}]},"baseFunctions":[4838],"documentation":{"id":3672,"nodeType":"StructuredDocumentation","src":"3667:70:11","text":" @dev ZRC20 symbol.\n @return symbol as string."},"functionSelector":"95d89b41","implemented":true,"kind":"function","modifiers":[],"name":"symbol","nameLocation":"3751:6:11","overrides":{"id":3674,"nodeType":"OverrideSpecifier","overrides":[],"src":"3780:8:11"},"parameters":{"id":3673,"nodeType":"ParameterList","parameters":[],"src":"3757:2:11"},"returnParameters":{"id":3677,"nodeType":"ParameterList","parameters":[{"constant":false,"id":3676,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":3681,"src":"3798:13:11","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_string_memory_ptr","typeString":"string"},"typeName":{"id":3675,"name":"string","nodeType":"ElementaryTypeName","src":"3798:6:11","typeDescriptions":{"typeIdentifier":"t_string_storage_ptr","typeString":"string"}},"visibility":"internal"}],"src":"3797:15:11"},"scope":4340,"stateMutability":"view","virtual":true,"visibility":"public"},{"id":3691,"nodeType":"FunctionDefinition","src":"3933:98:11","nodes":[],"body":{"id":3690,"nodeType":"Block","src":"3998:33:11","nodes":[],"statements":[{"expression":{"id":3688,"name":"_decimals","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3529,"src":"4015:9:11","typeDescriptions":{"typeIdentifier":"t_uint8","typeString":"uint8"}},"functionReturnParameters":3687,"id":3689,"nodeType":"Return","src":"4008:16:11"}]},"baseFunctions":[4843],"documentation":{"id":3682,"nodeType":"StructuredDocumentation","src":"3850:78:11","text":" @dev ZRC20 decimals.\n @return returns uint8 decimals."},"functionSelector":"313ce567","implemented":true,"kind":"function","modifiers":[],"name":"decimals","nameLocation":"3942:8:11","overrides":{"id":3684,"nodeType":"OverrideSpecifier","overrides":[],"src":"3973:8:11"},"parameters":{"id":3683,"nodeType":"ParameterList","parameters":[],"src":"3950:2:11"},"returnParameters":{"id":3687,"nodeType":"ParameterList","parameters":[{"constant":false,"id":3686,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":3691,"src":"3991:5:11","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint8","typeString":"uint8"},"typeName":{"id":3685,"name":"uint8","nodeType":"ElementaryTypeName","src":"3991:5:11","typeDescriptions":{"typeIdentifier":"t_uint8","typeString":"uint8"}},"visibility":"internal"}],"src":"3990:7:11"},"scope":4340,"stateMutability":"view","virtual":true,"visibility":"public"},{"id":3701,"nodeType":"FunctionDefinition","src":"4130:106:11","nodes":[],"body":{"id":3700,"nodeType":"Block","src":"4200:36:11","nodes":[],"statements":[{"expression":{"id":3698,"name":"_totalSupply","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3523,"src":"4217:12:11","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"functionReturnParameters":3697,"id":3699,"nodeType":"Return","src":"4210:19:11"}]},"baseFunctions":[4716],"documentation":{"id":3692,"nodeType":"StructuredDocumentation","src":"4037:88:11","text":" @dev ZRC20 total supply.\n @return returns uint256 total supply."},"functionSelector":"18160ddd","implemented":true,"kind":"function","modifiers":[],"name":"totalSupply","nameLocation":"4139:11:11","overrides":{"id":3694,"nodeType":"OverrideSpecifier","overrides":[],"src":"4173:8:11"},"parameters":{"id":3693,"nodeType":"ParameterList","parameters":[],"src":"4150:2:11"},"returnParameters":{"id":3697,"nodeType":"ParameterList","parameters":[{"constant":false,"id":3696,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":3701,"src":"4191:7:11","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":3695,"name":"uint256","nodeType":"ElementaryTypeName","src":"4191:7:11","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"4190:9:11"},"scope":4340,"stateMutability":"view","virtual":true,"visibility":"public"},{"id":3715,"nodeType":"FunctionDefinition","src":"4418:125:11","nodes":[],"body":{"id":3714,"nodeType":"Block","src":"4501:42:11","nodes":[],"statements":[{"expression":{"baseExpression":{"id":3710,"name":"_balances","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3515,"src":"4518:9:11","typeDescriptions":{"typeIdentifier":"t_mapping$_t_address_$_t_uint256_$","typeString":"mapping(address => uint256)"}},"id":3712,"indexExpression":{"id":3711,"name":"account","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3704,"src":"4528:7:11","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"nodeType":"IndexAccess","src":"4518:18:11","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"functionReturnParameters":3709,"id":3713,"nodeType":"Return","src":"4511:25:11"}]},"baseFunctions":[4723],"documentation":{"id":3702,"nodeType":"StructuredDocumentation","src":"4242:171:11","text":" @dev Returns ZRC20 balance of an account.\n @param account, account address for which balance is requested.\n @return uint256 account balance."},"functionSelector":"70a08231","implemented":true,"kind":"function","modifiers":[],"name":"balanceOf","nameLocation":"4427:9:11","overrides":{"id":3706,"nodeType":"OverrideSpecifier","overrides":[],"src":"4474:8:11"},"parameters":{"id":3705,"nodeType":"ParameterList","parameters":[{"constant":false,"id":3704,"mutability":"mutable","name":"account","nameLocation":"4445:7:11","nodeType":"VariableDeclaration","scope":3715,"src":"4437:15:11","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":3703,"name":"address","nodeType":"ElementaryTypeName","src":"4437:7:11","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"4436:17:11"},"returnParameters":{"id":3709,"nodeType":"ParameterList","parameters":[{"constant":false,"id":3708,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":3715,"src":"4492:7:11","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":3707,"name":"uint256","nodeType":"ElementaryTypeName","src":"4492:7:11","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"4491:9:11"},"scope":4340,"stateMutability":"view","virtual":true,"visibility":"public"},{"id":3736,"nodeType":"FunctionDefinition","src":"4741:172:11","nodes":[],"body":{"id":3735,"nodeType":"Block","src":"4833:80:11","nodes":[],"statements":[{"expression":{"arguments":[{"arguments":[],"expression":{"argumentTypes":[],"id":3727,"name":"_msgSender","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3541,"src":"4853:10:11","typeDescriptions":{"typeIdentifier":"t_function_internal_view$__$returns$_t_address_$","typeString":"function () view returns (address)"}},"id":3728,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"4853:12:11","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":3729,"name":"recipient","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3718,"src":"4867:9:11","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":3730,"name":"amount","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3720,"src":"4878:6:11","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":3726,"name":"_transfer","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3903,"src":"4843:9:11","typeDescriptions":{"typeIdentifier":"t_function_internal_nonpayable$_t_address_$_t_address_$_t_uint256_$returns$__$","typeString":"function (address,address,uint256)"}},"id":3731,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"4843:42:11","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":3732,"nodeType":"ExpressionStatement","src":"4843:42:11"},{"expression":{"hexValue":"74727565","id":3733,"isConstant":false,"isLValue":false,"isPure":true,"kind":"bool","lValueRequested":false,"nodeType":"Literal","src":"4902:4:11","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"value":"true"},"functionReturnParameters":3725,"id":3734,"nodeType":"Return","src":"4895:11:11"}]},"baseFunctions":[4732],"documentation":{"id":3716,"nodeType":"StructuredDocumentation","src":"4549:187:11","text":" @dev Returns ZRC20 balance of an account.\n @param recipient, recipiuent address to which transfer is done.\n @return true/false if transfer succeeded/failed."},"functionSelector":"a9059cbb","implemented":true,"kind":"function","modifiers":[],"name":"transfer","nameLocation":"4750:8:11","overrides":{"id":3722,"nodeType":"OverrideSpecifier","overrides":[],"src":"4809:8:11"},"parameters":{"id":3721,"nodeType":"ParameterList","parameters":[{"constant":false,"id":3718,"mutability":"mutable","name":"recipient","nameLocation":"4767:9:11","nodeType":"VariableDeclaration","scope":3736,"src":"4759:17:11","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":3717,"name":"address","nodeType":"ElementaryTypeName","src":"4759:7:11","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":3720,"mutability":"mutable","name":"amount","nameLocation":"4786:6:11","nodeType":"VariableDeclaration","scope":3736,"src":"4778:14:11","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":3719,"name":"uint256","nodeType":"ElementaryTypeName","src":"4778:7:11","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"4758:35:11"},"returnParameters":{"id":3725,"nodeType":"ParameterList","parameters":[{"constant":false,"id":3724,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":3736,"src":"4827:4:11","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"typeName":{"id":3723,"name":"bool","nodeType":"ElementaryTypeName","src":"4827:4:11","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"visibility":"internal"}],"src":"4826:6:11"},"scope":4340,"stateMutability":"nonpayable","virtual":true,"visibility":"public"},{"id":3754,"nodeType":"FunctionDefinition","src":"5064:149:11","nodes":[],"body":{"id":3753,"nodeType":"Block","src":"5162:51:11","nodes":[],"statements":[{"expression":{"baseExpression":{"baseExpression":{"id":3747,"name":"_allowances","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3521,"src":"5179:11:11","typeDescriptions":{"typeIdentifier":"t_mapping$_t_address_$_t_mapping$_t_address_$_t_uint256_$_$","typeString":"mapping(address => mapping(address => uint256))"}},"id":3749,"indexExpression":{"id":3748,"name":"owner","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3739,"src":"5191:5:11","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"nodeType":"IndexAccess","src":"5179:18:11","typeDescriptions":{"typeIdentifier":"t_mapping$_t_address_$_t_uint256_$","typeString":"mapping(address => uint256)"}},"id":3751,"indexExpression":{"id":3750,"name":"spender","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3741,"src":"5198:7:11","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"nodeType":"IndexAccess","src":"5179:27:11","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"functionReturnParameters":3746,"id":3752,"nodeType":"Return","src":"5172:34:11"}]},"baseFunctions":[4741],"documentation":{"id":3737,"nodeType":"StructuredDocumentation","src":"4919:140:11","text":" @dev Returns token allowance from owner to spender.\n @param owner, owner address.\n @return uint256 allowance."},"functionSelector":"dd62ed3e","implemented":true,"kind":"function","modifiers":[],"name":"allowance","nameLocation":"5073:9:11","overrides":{"id":3743,"nodeType":"OverrideSpecifier","overrides":[],"src":"5135:8:11"},"parameters":{"id":3742,"nodeType":"ParameterList","parameters":[{"constant":false,"id":3739,"mutability":"mutable","name":"owner","nameLocation":"5091:5:11","nodeType":"VariableDeclaration","scope":3754,"src":"5083:13:11","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":3738,"name":"address","nodeType":"ElementaryTypeName","src":"5083:7:11","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":3741,"mutability":"mutable","name":"spender","nameLocation":"5106:7:11","nodeType":"VariableDeclaration","scope":3754,"src":"5098:15:11","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":3740,"name":"address","nodeType":"ElementaryTypeName","src":"5098:7:11","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"5082:32:11"},"returnParameters":{"id":3746,"nodeType":"ParameterList","parameters":[{"constant":false,"id":3745,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":3754,"src":"5153:7:11","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":3744,"name":"uint256","nodeType":"ElementaryTypeName","src":"5153:7:11","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"5152:9:11"},"scope":4340,"stateMutability":"view","virtual":true,"visibility":"public"},{"id":3775,"nodeType":"FunctionDefinition","src":"5417:166:11","nodes":[],"body":{"id":3774,"nodeType":"Block","src":"5506:77:11","nodes":[],"statements":[{"expression":{"arguments":[{"arguments":[],"expression":{"argumentTypes":[],"id":3766,"name":"_msgSender","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3541,"src":"5525:10:11","typeDescriptions":{"typeIdentifier":"t_function_internal_view$__$returns$_t_address_$","typeString":"function () view returns (address)"}},"id":3767,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"5525:12:11","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":3768,"name":"spender","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3757,"src":"5539:7:11","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":3769,"name":"amount","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3759,"src":"5548:6:11","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":3765,"name":"_approve","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4036,"src":"5516:8:11","typeDescriptions":{"typeIdentifier":"t_function_internal_nonpayable$_t_address_$_t_address_$_t_uint256_$returns$__$","typeString":"function (address,address,uint256)"}},"id":3770,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"5516:39:11","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":3771,"nodeType":"ExpressionStatement","src":"5516:39:11"},{"expression":{"hexValue":"74727565","id":3772,"isConstant":false,"isLValue":false,"isPure":true,"kind":"bool","lValueRequested":false,"nodeType":"Literal","src":"5572:4:11","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"value":"true"},"functionReturnParameters":3764,"id":3773,"nodeType":"Return","src":"5565:11:11"}]},"baseFunctions":[4750],"documentation":{"id":3755,"nodeType":"StructuredDocumentation","src":"5219:193:11","text":" @dev Approves amount transferFrom for spender.\n @param spender, spender address.\n @param amount, amount to approve.\n @return true/false if succeeded/failed."},"functionSelector":"095ea7b3","implemented":true,"kind":"function","modifiers":[],"name":"approve","nameLocation":"5426:7:11","overrides":{"id":3761,"nodeType":"OverrideSpecifier","overrides":[],"src":"5482:8:11"},"parameters":{"id":3760,"nodeType":"ParameterList","parameters":[{"constant":false,"id":3757,"mutability":"mutable","name":"spender","nameLocation":"5442:7:11","nodeType":"VariableDeclaration","scope":3775,"src":"5434:15:11","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":3756,"name":"address","nodeType":"ElementaryTypeName","src":"5434:7:11","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":3759,"mutability":"mutable","name":"amount","nameLocation":"5459:6:11","nodeType":"VariableDeclaration","scope":3775,"src":"5451:14:11","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":3758,"name":"uint256","nodeType":"ElementaryTypeName","src":"5451:7:11","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"5433:33:11"},"returnParameters":{"id":3764,"nodeType":"ParameterList","parameters":[{"constant":false,"id":3763,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":3775,"src":"5500:4:11","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"typeName":{"id":3762,"name":"bool","nodeType":"ElementaryTypeName","src":"5500:4:11","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"visibility":"internal"}],"src":"5499:6:11"},"scope":4340,"stateMutability":"nonpayable","virtual":true,"visibility":"public"},{"id":3822,"nodeType":"FunctionDefinition","src":"5831:388:11","nodes":[],"body":{"id":3821,"nodeType":"Block","src":"5943:276:11","nodes":[],"statements":[{"expression":{"arguments":[{"id":3789,"name":"sender","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3778,"src":"5963:6:11","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":3790,"name":"recipient","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3780,"src":"5971:9:11","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":3791,"name":"amount","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3782,"src":"5982:6:11","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":3788,"name":"_transfer","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3903,"src":"5953:9:11","typeDescriptions":{"typeIdentifier":"t_function_internal_nonpayable$_t_address_$_t_address_$_t_uint256_$returns$__$","typeString":"function (address,address,uint256)"}},"id":3792,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"5953:36:11","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":3793,"nodeType":"ExpressionStatement","src":"5953:36:11"},{"assignments":[3795],"declarations":[{"constant":false,"id":3795,"mutability":"mutable","name":"currentAllowance","nameLocation":"6008:16:11","nodeType":"VariableDeclaration","scope":3821,"src":"6000:24:11","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":3794,"name":"uint256","nodeType":"ElementaryTypeName","src":"6000:7:11","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"id":3802,"initialValue":{"baseExpression":{"baseExpression":{"id":3796,"name":"_allowances","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3521,"src":"6027:11:11","typeDescriptions":{"typeIdentifier":"t_mapping$_t_address_$_t_mapping$_t_address_$_t_uint256_$_$","typeString":"mapping(address => mapping(address => uint256))"}},"id":3798,"indexExpression":{"id":3797,"name":"sender","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3778,"src":"6039:6:11","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"nodeType":"IndexAccess","src":"6027:19:11","typeDescriptions":{"typeIdentifier":"t_mapping$_t_address_$_t_uint256_$","typeString":"mapping(address => uint256)"}},"id":3801,"indexExpression":{"arguments":[],"expression":{"argumentTypes":[],"id":3799,"name":"_msgSender","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3541,"src":"6047:10:11","typeDescriptions":{"typeIdentifier":"t_function_internal_view$__$returns$_t_address_$","typeString":"function () view returns (address)"}},"id":3800,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"6047:12:11","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"nodeType":"IndexAccess","src":"6027:33:11","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"VariableDeclarationStatement","src":"6000:60:11"},{"condition":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":3805,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":3803,"name":"currentAllowance","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3795,"src":"6074:16:11","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"<","rightExpression":{"id":3804,"name":"amount","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3782,"src":"6093:6:11","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"6074:25:11","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":3809,"nodeType":"IfStatement","src":"6070:52:11","trueBody":{"errorCall":{"arguments":[],"expression":{"argumentTypes":[],"id":3806,"name":"LowAllowance","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3479,"src":"6108:12:11","typeDescriptions":{"typeIdentifier":"t_function_error_pure$__$returns$_t_error_$","typeString":"function () pure returns (error)"}},"id":3807,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"6108:14:11","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_error","typeString":"error"}},"id":3808,"nodeType":"RevertStatement","src":"6101:21:11"}},{"expression":{"arguments":[{"id":3811,"name":"sender","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3778,"src":"6142:6:11","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"arguments":[],"expression":{"argumentTypes":[],"id":3812,"name":"_msgSender","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3541,"src":"6150:10:11","typeDescriptions":{"typeIdentifier":"t_function_internal_view$__$returns$_t_address_$","typeString":"function () view returns (address)"}},"id":3813,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"6150:12:11","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":3816,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":3814,"name":"currentAllowance","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3795,"src":"6164:16:11","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"-","rightExpression":{"id":3815,"name":"amount","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3782,"src":"6183:6:11","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"6164:25:11","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":3810,"name":"_approve","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4036,"src":"6133:8:11","typeDescriptions":{"typeIdentifier":"t_function_internal_nonpayable$_t_address_$_t_address_$_t_uint256_$returns$__$","typeString":"function (address,address,uint256)"}},"id":3817,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"6133:57:11","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":3818,"nodeType":"ExpressionStatement","src":"6133:57:11"},{"expression":{"hexValue":"74727565","id":3819,"isConstant":false,"isLValue":false,"isPure":true,"kind":"bool","lValueRequested":false,"nodeType":"Literal","src":"6208:4:11","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"value":"true"},"functionReturnParameters":3787,"id":3820,"nodeType":"Return","src":"6201:11:11"}]},"baseFunctions":[4761],"documentation":{"id":3776,"nodeType":"StructuredDocumentation","src":"5589:237:11","text":" @dev Transfers tokens from sender to recipient.\n @param sender, sender address.\n @param recipient, recipient address.\n @param amount, amount to transfer.\n @return true/false if succeeded/failed."},"functionSelector":"23b872dd","implemented":true,"kind":"function","modifiers":[],"name":"transferFrom","nameLocation":"5840:12:11","overrides":{"id":3784,"nodeType":"OverrideSpecifier","overrides":[],"src":"5919:8:11"},"parameters":{"id":3783,"nodeType":"ParameterList","parameters":[{"constant":false,"id":3778,"mutability":"mutable","name":"sender","nameLocation":"5861:6:11","nodeType":"VariableDeclaration","scope":3822,"src":"5853:14:11","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":3777,"name":"address","nodeType":"ElementaryTypeName","src":"5853:7:11","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":3780,"mutability":"mutable","name":"recipient","nameLocation":"5877:9:11","nodeType":"VariableDeclaration","scope":3822,"src":"5869:17:11","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":3779,"name":"address","nodeType":"ElementaryTypeName","src":"5869:7:11","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":3782,"mutability":"mutable","name":"amount","nameLocation":"5896:6:11","nodeType":"VariableDeclaration","scope":3822,"src":"5888:14:11","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":3781,"name":"uint256","nodeType":"ElementaryTypeName","src":"5888:7:11","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"5852:51:11"},"returnParameters":{"id":3787,"nodeType":"ParameterList","parameters":[{"constant":false,"id":3786,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":3822,"src":"5937:4:11","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"typeName":{"id":3785,"name":"bool","nodeType":"ElementaryTypeName","src":"5937:4:11","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"visibility":"internal"}],"src":"5936:6:11"},"scope":4340,"stateMutability":"nonpayable","virtual":true,"visibility":"public"},{"id":3840,"nodeType":"FunctionDefinition","src":"6365:126:11","nodes":[],"body":{"id":3839,"nodeType":"Block","src":"6428:63:11","nodes":[],"statements":[{"expression":{"arguments":[{"expression":{"id":3832,"name":"msg","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-15,"src":"6444:3:11","typeDescriptions":{"typeIdentifier":"t_magic_message","typeString":"msg"}},"id":3833,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"6448:6:11","memberName":"sender","nodeType":"MemberAccess","src":"6444:10:11","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":3834,"name":"amount","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3825,"src":"6456:6:11","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":3831,"name":"_burn","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3992,"src":"6438:5:11","typeDescriptions":{"typeIdentifier":"t_function_internal_nonpayable$_t_address_$_t_uint256_$returns$__$","typeString":"function (address,uint256)"}},"id":3835,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"6438:25:11","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":3836,"nodeType":"ExpressionStatement","src":"6438:25:11"},{"expression":{"hexValue":"74727565","id":3837,"isConstant":false,"isLValue":false,"isPure":true,"kind":"bool","lValueRequested":false,"nodeType":"Literal","src":"6480:4:11","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"value":"true"},"functionReturnParameters":3830,"id":3838,"nodeType":"Return","src":"6473:11:11"}]},"baseFunctions":[4777],"documentation":{"id":3823,"nodeType":"StructuredDocumentation","src":"6225:135:11","text":" @dev Burns an amount of tokens.\n @param amount, amount to burn.\n @return true/false if succeeded/failed."},"functionSelector":"42966c68","implemented":true,"kind":"function","modifiers":[],"name":"burn","nameLocation":"6374:4:11","overrides":{"id":3827,"nodeType":"OverrideSpecifier","overrides":[],"src":"6404:8:11"},"parameters":{"id":3826,"nodeType":"ParameterList","parameters":[{"constant":false,"id":3825,"mutability":"mutable","name":"amount","nameLocation":"6387:6:11","nodeType":"VariableDeclaration","scope":3840,"src":"6379:14:11","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":3824,"name":"uint256","nodeType":"ElementaryTypeName","src":"6379:7:11","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"6378:16:11"},"returnParameters":{"id":3830,"nodeType":"ParameterList","parameters":[{"constant":false,"id":3829,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":3840,"src":"6422:4:11","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"typeName":{"id":3828,"name":"bool","nodeType":"ElementaryTypeName","src":"6422:4:11","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"visibility":"internal"}],"src":"6421:6:11"},"scope":4340,"stateMutability":"nonpayable","virtual":false,"visibility":"external"},{"id":3903,"nodeType":"FunctionDefinition","src":"6497:462:11","nodes":[],"body":{"id":3902,"nodeType":"Block","src":"6584:375:11","nodes":[],"statements":[{"condition":{"commonType":{"typeIdentifier":"t_address","typeString":"address"},"id":3854,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":3849,"name":"sender","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3842,"src":"6598:6:11","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"nodeType":"BinaryOperation","operator":"==","rightExpression":{"arguments":[{"hexValue":"30","id":3852,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"6616:1:11","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"}],"id":3851,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"6608:7:11","typeDescriptions":{"typeIdentifier":"t_type$_t_address_$","typeString":"type(address)"},"typeName":{"id":3850,"name":"address","nodeType":"ElementaryTypeName","src":"6608:7:11","typeDescriptions":{}}},"id":3853,"isConstant":false,"isLValue":false,"isPure":true,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"6608:10:11","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"src":"6598:20:11","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":3858,"nodeType":"IfStatement","src":"6594:46:11","trueBody":{"errorCall":{"arguments":[],"expression":{"argumentTypes":[],"id":3855,"name":"ZeroAddress","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3483,"src":"6627:11:11","typeDescriptions":{"typeIdentifier":"t_function_error_pure$__$returns$_t_error_$","typeString":"function () pure returns (error)"}},"id":3856,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"6627:13:11","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_error","typeString":"error"}},"id":3857,"nodeType":"RevertStatement","src":"6620:20:11"}},{"condition":{"commonType":{"typeIdentifier":"t_address","typeString":"address"},"id":3864,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":3859,"name":"recipient","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3844,"src":"6654:9:11","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"nodeType":"BinaryOperation","operator":"==","rightExpression":{"arguments":[{"hexValue":"30","id":3862,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"6675:1:11","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"}],"id":3861,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"6667:7:11","typeDescriptions":{"typeIdentifier":"t_type$_t_address_$","typeString":"type(address)"},"typeName":{"id":3860,"name":"address","nodeType":"ElementaryTypeName","src":"6667:7:11","typeDescriptions":{}}},"id":3863,"isConstant":false,"isLValue":false,"isPure":true,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"6667:10:11","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"src":"6654:23:11","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":3868,"nodeType":"IfStatement","src":"6650:49:11","trueBody":{"errorCall":{"arguments":[],"expression":{"argumentTypes":[],"id":3865,"name":"ZeroAddress","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3483,"src":"6686:11:11","typeDescriptions":{"typeIdentifier":"t_function_error_pure$__$returns$_t_error_$","typeString":"function () pure returns (error)"}},"id":3866,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"6686:13:11","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_error","typeString":"error"}},"id":3867,"nodeType":"RevertStatement","src":"6679:20:11"}},{"assignments":[3870],"declarations":[{"constant":false,"id":3870,"mutability":"mutable","name":"senderBalance","nameLocation":"6718:13:11","nodeType":"VariableDeclaration","scope":3902,"src":"6710:21:11","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":3869,"name":"uint256","nodeType":"ElementaryTypeName","src":"6710:7:11","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"id":3874,"initialValue":{"baseExpression":{"id":3871,"name":"_balances","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3515,"src":"6734:9:11","typeDescriptions":{"typeIdentifier":"t_mapping$_t_address_$_t_uint256_$","typeString":"mapping(address => uint256)"}},"id":3873,"indexExpression":{"id":3872,"name":"sender","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3842,"src":"6744:6:11","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"nodeType":"IndexAccess","src":"6734:17:11","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"VariableDeclarationStatement","src":"6710:41:11"},{"condition":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":3877,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":3875,"name":"senderBalance","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3870,"src":"6765:13:11","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"<","rightExpression":{"id":3876,"name":"amount","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3846,"src":"6781:6:11","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"6765:22:11","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":3881,"nodeType":"IfStatement","src":"6761:47:11","trueBody":{"errorCall":{"arguments":[],"expression":{"argumentTypes":[],"id":3878,"name":"LowBalance","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3481,"src":"6796:10:11","typeDescriptions":{"typeIdentifier":"t_function_error_pure$__$returns$_t_error_$","typeString":"function () pure returns (error)"}},"id":3879,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"6796:12:11","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_error","typeString":"error"}},"id":3880,"nodeType":"RevertStatement","src":"6789:19:11"}},{"expression":{"id":3888,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"baseExpression":{"id":3882,"name":"_balances","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3515,"src":"6819:9:11","typeDescriptions":{"typeIdentifier":"t_mapping$_t_address_$_t_uint256_$","typeString":"mapping(address => uint256)"}},"id":3884,"indexExpression":{"id":3883,"name":"sender","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3842,"src":"6829:6:11","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":true,"nodeType":"IndexAccess","src":"6819:17:11","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":3887,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":3885,"name":"senderBalance","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3870,"src":"6839:13:11","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"-","rightExpression":{"id":3886,"name":"amount","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3846,"src":"6855:6:11","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"6839:22:11","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"6819:42:11","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":3889,"nodeType":"ExpressionStatement","src":"6819:42:11"},{"expression":{"id":3894,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"baseExpression":{"id":3890,"name":"_balances","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3515,"src":"6871:9:11","typeDescriptions":{"typeIdentifier":"t_mapping$_t_address_$_t_uint256_$","typeString":"mapping(address => uint256)"}},"id":3892,"indexExpression":{"id":3891,"name":"recipient","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3844,"src":"6881:9:11","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":true,"nodeType":"IndexAccess","src":"6871:20:11","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":"+=","rightHandSide":{"id":3893,"name":"amount","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3846,"src":"6895:6:11","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"6871:30:11","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":3895,"nodeType":"ExpressionStatement","src":"6871:30:11"},{"eventCall":{"arguments":[{"id":3897,"name":"sender","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3842,"src":"6926:6:11","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":3898,"name":"recipient","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3844,"src":"6934:9:11","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":3899,"name":"amount","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3846,"src":"6945:6:11","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":3896,"name":"Transfer","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4853,"src":"6917:8:11","typeDescriptions":{"typeIdentifier":"t_function_event_nonpayable$_t_address_$_t_address_$_t_uint256_$returns$__$","typeString":"function (address,address,uint256)"}},"id":3900,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"6917:35:11","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":3901,"nodeType":"EmitStatement","src":"6912:40:11"}]},"implemented":true,"kind":"function","modifiers":[],"name":"_transfer","nameLocation":"6506:9:11","parameters":{"id":3847,"nodeType":"ParameterList","parameters":[{"constant":false,"id":3842,"mutability":"mutable","name":"sender","nameLocation":"6524:6:11","nodeType":"VariableDeclaration","scope":3903,"src":"6516:14:11","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":3841,"name":"address","nodeType":"ElementaryTypeName","src":"6516:7:11","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":3844,"mutability":"mutable","name":"recipient","nameLocation":"6540:9:11","nodeType":"VariableDeclaration","scope":3903,"src":"6532:17:11","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":3843,"name":"address","nodeType":"ElementaryTypeName","src":"6532:7:11","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":3846,"mutability":"mutable","name":"amount","nameLocation":"6559:6:11","nodeType":"VariableDeclaration","scope":3903,"src":"6551:14:11","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":3845,"name":"uint256","nodeType":"ElementaryTypeName","src":"6551:7:11","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"6515:51:11"},"returnParameters":{"id":3848,"nodeType":"ParameterList","parameters":[],"src":"6584:0:11"},"scope":4340,"stateMutability":"nonpayable","virtual":true,"visibility":"internal"},{"id":3940,"nodeType":"FunctionDefinition","src":"6965:252:11","nodes":[],"body":{"id":3939,"nodeType":"Block","src":"7030:187:11","nodes":[],"statements":[{"condition":{"commonType":{"typeIdentifier":"t_address","typeString":"address"},"id":3915,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":3910,"name":"account","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3905,"src":"7044:7:11","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"nodeType":"BinaryOperation","operator":"==","rightExpression":{"arguments":[{"hexValue":"30","id":3913,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"7063:1:11","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"}],"id":3912,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"7055:7:11","typeDescriptions":{"typeIdentifier":"t_type$_t_address_$","typeString":"type(address)"},"typeName":{"id":3911,"name":"address","nodeType":"ElementaryTypeName","src":"7055:7:11","typeDescriptions":{}}},"id":3914,"isConstant":false,"isLValue":false,"isPure":true,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"7055:10:11","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"src":"7044:21:11","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":3919,"nodeType":"IfStatement","src":"7040:47:11","trueBody":{"errorCall":{"arguments":[],"expression":{"argumentTypes":[],"id":3916,"name":"ZeroAddress","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3483,"src":"7074:11:11","typeDescriptions":{"typeIdentifier":"t_function_error_pure$__$returns$_t_error_$","typeString":"function () pure returns (error)"}},"id":3917,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"7074:13:11","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_error","typeString":"error"}},"id":3918,"nodeType":"RevertStatement","src":"7067:20:11"}},{"expression":{"id":3922,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":3920,"name":"_totalSupply","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3523,"src":"7098:12:11","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":"+=","rightHandSide":{"id":3921,"name":"amount","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3907,"src":"7114:6:11","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"7098:22:11","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":3923,"nodeType":"ExpressionStatement","src":"7098:22:11"},{"expression":{"id":3928,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"baseExpression":{"id":3924,"name":"_balances","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3515,"src":"7130:9:11","typeDescriptions":{"typeIdentifier":"t_mapping$_t_address_$_t_uint256_$","typeString":"mapping(address => uint256)"}},"id":3926,"indexExpression":{"id":3925,"name":"account","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3905,"src":"7140:7:11","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":true,"nodeType":"IndexAccess","src":"7130:18:11","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":"+=","rightHandSide":{"id":3927,"name":"amount","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3907,"src":"7152:6:11","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"7130:28:11","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":3929,"nodeType":"ExpressionStatement","src":"7130:28:11"},{"eventCall":{"arguments":[{"arguments":[{"hexValue":"30","id":3933,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"7190:1:11","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"}],"id":3932,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"7182:7:11","typeDescriptions":{"typeIdentifier":"t_type$_t_address_$","typeString":"type(address)"},"typeName":{"id":3931,"name":"address","nodeType":"ElementaryTypeName","src":"7182:7:11","typeDescriptions":{}}},"id":3934,"isConstant":false,"isLValue":false,"isPure":true,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"7182:10:11","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":3935,"name":"account","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3905,"src":"7194:7:11","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":3936,"name":"amount","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3907,"src":"7203:6:11","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":3930,"name":"Transfer","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4853,"src":"7173:8:11","typeDescriptions":{"typeIdentifier":"t_function_event_nonpayable$_t_address_$_t_address_$_t_uint256_$returns$__$","typeString":"function (address,address,uint256)"}},"id":3937,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"7173:37:11","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":3938,"nodeType":"EmitStatement","src":"7168:42:11"}]},"implemented":true,"kind":"function","modifiers":[],"name":"_mint","nameLocation":"6974:5:11","parameters":{"id":3908,"nodeType":"ParameterList","parameters":[{"constant":false,"id":3905,"mutability":"mutable","name":"account","nameLocation":"6988:7:11","nodeType":"VariableDeclaration","scope":3940,"src":"6980:15:11","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":3904,"name":"address","nodeType":"ElementaryTypeName","src":"6980:7:11","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":3907,"mutability":"mutable","name":"amount","nameLocation":"7005:6:11","nodeType":"VariableDeclaration","scope":3940,"src":"6997:14:11","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":3906,"name":"uint256","nodeType":"ElementaryTypeName","src":"6997:7:11","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"6979:33:11"},"returnParameters":{"id":3909,"nodeType":"ParameterList","parameters":[],"src":"7030:0:11"},"scope":4340,"stateMutability":"nonpayable","virtual":true,"visibility":"internal"},{"id":3992,"nodeType":"FunctionDefinition","src":"7223:381:11","nodes":[],"body":{"id":3991,"nodeType":"Block","src":"7288:316:11","nodes":[],"statements":[{"condition":{"commonType":{"typeIdentifier":"t_address","typeString":"address"},"id":3952,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":3947,"name":"account","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3942,"src":"7302:7:11","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"nodeType":"BinaryOperation","operator":"==","rightExpression":{"arguments":[{"hexValue":"30","id":3950,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"7321:1:11","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"}],"id":3949,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"7313:7:11","typeDescriptions":{"typeIdentifier":"t_type$_t_address_$","typeString":"type(address)"},"typeName":{"id":3948,"name":"address","nodeType":"ElementaryTypeName","src":"7313:7:11","typeDescriptions":{}}},"id":3951,"isConstant":false,"isLValue":false,"isPure":true,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"7313:10:11","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"src":"7302:21:11","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":3956,"nodeType":"IfStatement","src":"7298:47:11","trueBody":{"errorCall":{"arguments":[],"expression":{"argumentTypes":[],"id":3953,"name":"ZeroAddress","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3483,"src":"7332:11:11","typeDescriptions":{"typeIdentifier":"t_function_error_pure$__$returns$_t_error_$","typeString":"function () pure returns (error)"}},"id":3954,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"7332:13:11","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_error","typeString":"error"}},"id":3955,"nodeType":"RevertStatement","src":"7325:20:11"}},{"assignments":[3958],"declarations":[{"constant":false,"id":3958,"mutability":"mutable","name":"accountBalance","nameLocation":"7364:14:11","nodeType":"VariableDeclaration","scope":3991,"src":"7356:22:11","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":3957,"name":"uint256","nodeType":"ElementaryTypeName","src":"7356:7:11","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"id":3962,"initialValue":{"baseExpression":{"id":3959,"name":"_balances","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3515,"src":"7381:9:11","typeDescriptions":{"typeIdentifier":"t_mapping$_t_address_$_t_uint256_$","typeString":"mapping(address => uint256)"}},"id":3961,"indexExpression":{"id":3960,"name":"account","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3942,"src":"7391:7:11","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"nodeType":"IndexAccess","src":"7381:18:11","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"VariableDeclarationStatement","src":"7356:43:11"},{"condition":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":3965,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":3963,"name":"accountBalance","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3958,"src":"7413:14:11","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"<","rightExpression":{"id":3964,"name":"amount","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3944,"src":"7430:6:11","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"7413:23:11","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":3969,"nodeType":"IfStatement","src":"7409:48:11","trueBody":{"errorCall":{"arguments":[],"expression":{"argumentTypes":[],"id":3966,"name":"LowBalance","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3481,"src":"7445:10:11","typeDescriptions":{"typeIdentifier":"t_function_error_pure$__$returns$_t_error_$","typeString":"function () pure returns (error)"}},"id":3967,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"7445:12:11","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_error","typeString":"error"}},"id":3968,"nodeType":"RevertStatement","src":"7438:19:11"}},{"expression":{"id":3976,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"baseExpression":{"id":3970,"name":"_balances","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3515,"src":"7468:9:11","typeDescriptions":{"typeIdentifier":"t_mapping$_t_address_$_t_uint256_$","typeString":"mapping(address => uint256)"}},"id":3972,"indexExpression":{"id":3971,"name":"account","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3942,"src":"7478:7:11","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":true,"nodeType":"IndexAccess","src":"7468:18:11","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":3975,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":3973,"name":"accountBalance","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3958,"src":"7489:14:11","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"-","rightExpression":{"id":3974,"name":"amount","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3944,"src":"7506:6:11","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"7489:23:11","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"7468:44:11","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":3977,"nodeType":"ExpressionStatement","src":"7468:44:11"},{"expression":{"id":3980,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":3978,"name":"_totalSupply","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3523,"src":"7522:12:11","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":"-=","rightHandSide":{"id":3979,"name":"amount","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3944,"src":"7538:6:11","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"7522:22:11","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":3981,"nodeType":"ExpressionStatement","src":"7522:22:11"},{"eventCall":{"arguments":[{"id":3983,"name":"account","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3942,"src":"7569:7:11","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"arguments":[{"hexValue":"30","id":3986,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"7586:1:11","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"}],"id":3985,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"7578:7:11","typeDescriptions":{"typeIdentifier":"t_type$_t_address_$","typeString":"type(address)"},"typeName":{"id":3984,"name":"address","nodeType":"ElementaryTypeName","src":"7578:7:11","typeDescriptions":{}}},"id":3987,"isConstant":false,"isLValue":false,"isPure":true,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"7578:10:11","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":3988,"name":"amount","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3944,"src":"7590:6:11","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":3982,"name":"Transfer","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4853,"src":"7560:8:11","typeDescriptions":{"typeIdentifier":"t_function_event_nonpayable$_t_address_$_t_address_$_t_uint256_$returns$__$","typeString":"function (address,address,uint256)"}},"id":3989,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"7560:37:11","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":3990,"nodeType":"EmitStatement","src":"7555:42:11"}]},"implemented":true,"kind":"function","modifiers":[],"name":"_burn","nameLocation":"7232:5:11","parameters":{"id":3945,"nodeType":"ParameterList","parameters":[{"constant":false,"id":3942,"mutability":"mutable","name":"account","nameLocation":"7246:7:11","nodeType":"VariableDeclaration","scope":3992,"src":"7238:15:11","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":3941,"name":"address","nodeType":"ElementaryTypeName","src":"7238:7:11","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":3944,"mutability":"mutable","name":"amount","nameLocation":"7263:6:11","nodeType":"VariableDeclaration","scope":3992,"src":"7255:14:11","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":3943,"name":"uint256","nodeType":"ElementaryTypeName","src":"7255:7:11","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"7237:33:11"},"returnParameters":{"id":3946,"nodeType":"ParameterList","parameters":[],"src":"7288:0:11"},"scope":4340,"stateMutability":"nonpayable","virtual":true,"visibility":"internal"},{"id":4036,"nodeType":"FunctionDefinition","src":"7610:296:11","nodes":[],"body":{"id":4035,"nodeType":"Block","src":"7693:213:11","nodes":[],"statements":[{"condition":{"commonType":{"typeIdentifier":"t_address","typeString":"address"},"id":4006,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":4001,"name":"owner","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3994,"src":"7707:5:11","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"nodeType":"BinaryOperation","operator":"==","rightExpression":{"arguments":[{"hexValue":"30","id":4004,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"7724:1:11","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"}],"id":4003,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"7716:7:11","typeDescriptions":{"typeIdentifier":"t_type$_t_address_$","typeString":"type(address)"},"typeName":{"id":4002,"name":"address","nodeType":"ElementaryTypeName","src":"7716:7:11","typeDescriptions":{}}},"id":4005,"isConstant":false,"isLValue":false,"isPure":true,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"7716:10:11","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"src":"7707:19:11","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":4010,"nodeType":"IfStatement","src":"7703:45:11","trueBody":{"errorCall":{"arguments":[],"expression":{"argumentTypes":[],"id":4007,"name":"ZeroAddress","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3483,"src":"7735:11:11","typeDescriptions":{"typeIdentifier":"t_function_error_pure$__$returns$_t_error_$","typeString":"function () pure returns (error)"}},"id":4008,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"7735:13:11","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_error","typeString":"error"}},"id":4009,"nodeType":"RevertStatement","src":"7728:20:11"}},{"condition":{"commonType":{"typeIdentifier":"t_address","typeString":"address"},"id":4016,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":4011,"name":"spender","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3996,"src":"7762:7:11","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"nodeType":"BinaryOperation","operator":"==","rightExpression":{"arguments":[{"hexValue":"30","id":4014,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"7781:1:11","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"}],"id":4013,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"7773:7:11","typeDescriptions":{"typeIdentifier":"t_type$_t_address_$","typeString":"type(address)"},"typeName":{"id":4012,"name":"address","nodeType":"ElementaryTypeName","src":"7773:7:11","typeDescriptions":{}}},"id":4015,"isConstant":false,"isLValue":false,"isPure":true,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"7773:10:11","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"src":"7762:21:11","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":4020,"nodeType":"IfStatement","src":"7758:47:11","trueBody":{"errorCall":{"arguments":[],"expression":{"argumentTypes":[],"id":4017,"name":"ZeroAddress","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3483,"src":"7792:11:11","typeDescriptions":{"typeIdentifier":"t_function_error_pure$__$returns$_t_error_$","typeString":"function () pure returns (error)"}},"id":4018,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"7792:13:11","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_error","typeString":"error"}},"id":4019,"nodeType":"RevertStatement","src":"7785:20:11"}},{"expression":{"id":4027,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"baseExpression":{"baseExpression":{"id":4021,"name":"_allowances","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3521,"src":"7816:11:11","typeDescriptions":{"typeIdentifier":"t_mapping$_t_address_$_t_mapping$_t_address_$_t_uint256_$_$","typeString":"mapping(address => mapping(address => uint256))"}},"id":4024,"indexExpression":{"id":4022,"name":"owner","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3994,"src":"7828:5:11","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"nodeType":"IndexAccess","src":"7816:18:11","typeDescriptions":{"typeIdentifier":"t_mapping$_t_address_$_t_uint256_$","typeString":"mapping(address => uint256)"}},"id":4025,"indexExpression":{"id":4023,"name":"spender","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3996,"src":"7835:7:11","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":true,"nodeType":"IndexAccess","src":"7816:27:11","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"id":4026,"name":"amount","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3998,"src":"7846:6:11","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"7816:36:11","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":4028,"nodeType":"ExpressionStatement","src":"7816:36:11"},{"eventCall":{"arguments":[{"id":4030,"name":"owner","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3994,"src":"7876:5:11","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":4031,"name":"spender","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3996,"src":"7883:7:11","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":4032,"name":"amount","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3998,"src":"7892:6:11","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":4029,"name":"Approval","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4861,"src":"7867:8:11","typeDescriptions":{"typeIdentifier":"t_function_event_nonpayable$_t_address_$_t_address_$_t_uint256_$returns$__$","typeString":"function (address,address,uint256)"}},"id":4033,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"7867:32:11","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":4034,"nodeType":"EmitStatement","src":"7862:37:11"}]},"implemented":true,"kind":"function","modifiers":[],"name":"_approve","nameLocation":"7619:8:11","parameters":{"id":3999,"nodeType":"ParameterList","parameters":[{"constant":false,"id":3994,"mutability":"mutable","name":"owner","nameLocation":"7636:5:11","nodeType":"VariableDeclaration","scope":4036,"src":"7628:13:11","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":3993,"name":"address","nodeType":"ElementaryTypeName","src":"7628:7:11","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":3996,"mutability":"mutable","name":"spender","nameLocation":"7651:7:11","nodeType":"VariableDeclaration","scope":4036,"src":"7643:15:11","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":3995,"name":"address","nodeType":"ElementaryTypeName","src":"7643:7:11","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":3998,"mutability":"mutable","name":"amount","nameLocation":"7668:6:11","nodeType":"VariableDeclaration","scope":4036,"src":"7660:14:11","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":3997,"name":"uint256","nodeType":"ElementaryTypeName","src":"7660:7:11","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"7627:48:11"},"returnParameters":{"id":4000,"nodeType":"ParameterList","parameters":[],"src":"7693:0:11"},"scope":4340,"stateMutability":"nonpayable","virtual":true,"visibility":"internal"},{"id":4082,"nodeType":"FunctionDefinition","src":"8150:396:11","nodes":[],"body":{"id":4081,"nodeType":"Block","src":"8228:318:11","nodes":[],"statements":[{"condition":{"commonType":{"typeIdentifier":"t_bool","typeString":"bool"},"id":4060,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"commonType":{"typeIdentifier":"t_bool","typeString":"bool"},"id":4055,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"commonType":{"typeIdentifier":"t_address","typeString":"address"},"id":4050,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"expression":{"id":4047,"name":"msg","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-15,"src":"8255:3:11","typeDescriptions":{"typeIdentifier":"t_magic_message","typeString":"msg"}},"id":4048,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"8259:6:11","memberName":"sender","nodeType":"MemberAccess","src":"8255:10:11","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"nodeType":"BinaryOperation","operator":"!=","rightExpression":{"id":4049,"name":"FUNGIBLE_MODULE_ADDRESS","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3494,"src":"8269:23:11","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"src":"8255:37:11","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"nodeType":"BinaryOperation","operator":"&&","rightExpression":{"commonType":{"typeIdentifier":"t_address","typeString":"address"},"id":4054,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"expression":{"id":4051,"name":"msg","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-15,"src":"8296:3:11","typeDescriptions":{"typeIdentifier":"t_magic_message","typeString":"msg"}},"id":4052,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"8300:6:11","memberName":"sender","nodeType":"MemberAccess","src":"8296:10:11","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"nodeType":"BinaryOperation","operator":"!=","rightExpression":{"id":4053,"name":"SYSTEM_CONTRACT_ADDRESS","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3504,"src":"8310:23:11","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"src":"8296:37:11","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"src":"8255:78:11","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"nodeType":"BinaryOperation","operator":"&&","rightExpression":{"commonType":{"typeIdentifier":"t_address","typeString":"address"},"id":4059,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"expression":{"id":4056,"name":"msg","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-15,"src":"8353:3:11","typeDescriptions":{"typeIdentifier":"t_magic_message","typeString":"msg"}},"id":4057,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"8357:6:11","memberName":"sender","nodeType":"MemberAccess","src":"8353:10:11","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"nodeType":"BinaryOperation","operator":"!=","rightExpression":{"id":4058,"name":"gatewayAddress","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3532,"src":"8367:14:11","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"src":"8353:28:11","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"src":"8255:126:11","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":4064,"nodeType":"IfStatement","src":"8238:176:11","trueBody":{"errorCall":{"arguments":[],"expression":{"argumentTypes":[],"id":4061,"name":"InvalidSender","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3471,"src":"8399:13:11","typeDescriptions":{"typeIdentifier":"t_function_error_pure$__$returns$_t_error_$","typeString":"function () pure returns (error)"}},"id":4062,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"8399:15:11","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_error","typeString":"error"}},"id":4063,"nodeType":"RevertStatement","src":"8392:22:11"}},{"expression":{"arguments":[{"id":4066,"name":"to","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4039,"src":"8430:2:11","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":4067,"name":"amount","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4041,"src":"8434:6:11","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":4065,"name":"_mint","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3940,"src":"8424:5:11","typeDescriptions":{"typeIdentifier":"t_function_internal_nonpayable$_t_address_$_t_uint256_$returns$__$","typeString":"function (address,uint256)"}},"id":4068,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"8424:17:11","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":4069,"nodeType":"ExpressionStatement","src":"8424:17:11"},{"eventCall":{"arguments":[{"arguments":[{"id":4073,"name":"FUNGIBLE_MODULE_ADDRESS","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3494,"src":"8481:23:11","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"}],"expression":{"id":4071,"name":"abi","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-1,"src":"8464:3:11","typeDescriptions":{"typeIdentifier":"t_magic_abi","typeString":"abi"}},"id":4072,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"memberLocation":"8468:12:11","memberName":"encodePacked","nodeType":"MemberAccess","src":"8464:16:11","typeDescriptions":{"typeIdentifier":"t_function_abiencodepacked_pure$__$returns$_t_bytes_memory_ptr_$","typeString":"function () pure returns (bytes memory)"}},"id":4074,"isConstant":false,"isLValue":false,"isPure":true,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"8464:41:11","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}},{"id":4075,"name":"to","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4039,"src":"8507:2:11","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":4076,"name":"amount","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4041,"src":"8511:6:11","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"},{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":4070,"name":"Deposit","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4869,"src":"8456:7:11","typeDescriptions":{"typeIdentifier":"t_function_event_nonpayable$_t_bytes_memory_ptr_$_t_address_$_t_uint256_$returns$__$","typeString":"function (bytes memory,address,uint256)"}},"id":4077,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"8456:62:11","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":4078,"nodeType":"EmitStatement","src":"8451:67:11"},{"expression":{"hexValue":"74727565","id":4079,"isConstant":false,"isLValue":false,"isPure":true,"kind":"bool","lValueRequested":false,"nodeType":"Literal","src":"8535:4:11","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"value":"true"},"functionReturnParameters":4046,"id":4080,"nodeType":"Return","src":"8528:11:11"}]},"baseFunctions":[4770],"documentation":{"id":4037,"nodeType":"StructuredDocumentation","src":"7912:233:11","text":" @dev Deposits corresponding tokens from external chain, only callable by Fungible module.\n @param to, recipient address.\n @param amount, amount to deposit.\n @return true/false if succeeded/failed."},"functionSelector":"47e7ef24","implemented":true,"kind":"function","modifiers":[],"name":"deposit","nameLocation":"8159:7:11","overrides":{"id":4043,"nodeType":"OverrideSpecifier","overrides":[],"src":"8204:8:11"},"parameters":{"id":4042,"nodeType":"ParameterList","parameters":[{"constant":false,"id":4039,"mutability":"mutable","name":"to","nameLocation":"8175:2:11","nodeType":"VariableDeclaration","scope":4082,"src":"8167:10:11","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":4038,"name":"address","nodeType":"ElementaryTypeName","src":"8167:7:11","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":4041,"mutability":"mutable","name":"amount","nameLocation":"8187:6:11","nodeType":"VariableDeclaration","scope":4082,"src":"8179:14:11","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":4040,"name":"uint256","nodeType":"ElementaryTypeName","src":"8179:7:11","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"8166:28:11"},"returnParameters":{"id":4046,"nodeType":"ParameterList","parameters":[{"constant":false,"id":4045,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":4082,"src":"8222:4:11","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"typeName":{"id":4044,"name":"bool","nodeType":"ElementaryTypeName","src":"8222:4:11","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"visibility":"internal"}],"src":"8221:6:11"},"scope":4340,"stateMutability":"nonpayable","virtual":false,"visibility":"external"},{"id":4140,"nodeType":"FunctionDefinition","src":"8731:498:11","nodes":[],"body":{"id":4139,"nodeType":"Block","src":"8805:424:11","nodes":[],"statements":[{"assignments":[4092],"declarations":[{"constant":false,"id":4092,"mutability":"mutable","name":"gasZRC20","nameLocation":"8823:8:11","nodeType":"VariableDeclaration","scope":4139,"src":"8815:16:11","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":4091,"name":"address","nodeType":"ElementaryTypeName","src":"8815:7:11","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"id":4099,"initialValue":{"arguments":[{"id":4097,"name":"CHAIN_ID","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3497,"src":"8889:8:11","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"}],"expression":{"arguments":[{"id":4094,"name":"SYSTEM_CONTRACT_ADDRESS","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3504,"src":"8842:23:11","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"}],"id":4093,"name":"ISystem","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4618,"src":"8834:7:11","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_ISystem_$4618_$","typeString":"type(contract ISystem)"}},"id":4095,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"8834:32:11","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_contract$_ISystem_$4618","typeString":"contract ISystem"}},"id":4096,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"8867:21:11","memberName":"gasCoinZRC20ByChainId","nodeType":"MemberAccess","referencedDeclaration":4610,"src":"8834:54:11","typeDescriptions":{"typeIdentifier":"t_function_external_view$_t_uint256_$returns$_t_address_$","typeString":"function (uint256) view external returns (address)"}},"id":4098,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"8834:64:11","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"nodeType":"VariableDeclarationStatement","src":"8815:83:11"},{"condition":{"commonType":{"typeIdentifier":"t_address","typeString":"address"},"id":4105,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":4100,"name":"gasZRC20","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4092,"src":"8912:8:11","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"nodeType":"BinaryOperation","operator":"==","rightExpression":{"arguments":[{"hexValue":"30","id":4103,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"8932:1:11","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"}],"id":4102,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"8924:7:11","typeDescriptions":{"typeIdentifier":"t_type$_t_address_$","typeString":"type(address)"},"typeName":{"id":4101,"name":"address","nodeType":"ElementaryTypeName","src":"8924:7:11","typeDescriptions":{}}},"id":4104,"isConstant":false,"isLValue":false,"isPure":true,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"8924:10:11","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"src":"8912:22:11","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":4109,"nodeType":"IfStatement","src":"8908:48:11","trueBody":{"errorCall":{"arguments":[],"expression":{"argumentTypes":[],"id":4106,"name":"ZeroGasCoin","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3475,"src":"8943:11:11","typeDescriptions":{"typeIdentifier":"t_function_error_pure$__$returns$_t_error_$","typeString":"function () pure returns (error)"}},"id":4107,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"8943:13:11","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_error","typeString":"error"}},"id":4108,"nodeType":"RevertStatement","src":"8936:20:11"}},{"assignments":[4111],"declarations":[{"constant":false,"id":4111,"mutability":"mutable","name":"gasPrice","nameLocation":"8975:8:11","nodeType":"VariableDeclaration","scope":4139,"src":"8967:16:11","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":4110,"name":"uint256","nodeType":"ElementaryTypeName","src":"8967:7:11","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"id":4118,"initialValue":{"arguments":[{"id":4116,"name":"CHAIN_ID","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3497,"src":"9037:8:11","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"}],"expression":{"arguments":[{"id":4113,"name":"SYSTEM_CONTRACT_ADDRESS","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3504,"src":"8994:23:11","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"}],"id":4112,"name":"ISystem","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4618,"src":"8986:7:11","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_ISystem_$4618_$","typeString":"type(contract ISystem)"}},"id":4114,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"8986:32:11","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_contract$_ISystem_$4618","typeString":"contract ISystem"}},"id":4115,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"9019:17:11","memberName":"gasPriceByChainId","nodeType":"MemberAccess","referencedDeclaration":4603,"src":"8986:50:11","typeDescriptions":{"typeIdentifier":"t_function_external_view$_t_uint256_$returns$_t_uint256_$","typeString":"function (uint256) view external returns (uint256)"}},"id":4117,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"8986:60:11","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"VariableDeclarationStatement","src":"8967:79:11"},{"condition":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":4121,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":4119,"name":"gasPrice","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4111,"src":"9060:8:11","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"==","rightExpression":{"hexValue":"30","id":4120,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"9072:1:11","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},"src":"9060:13:11","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":4126,"nodeType":"IfStatement","src":"9056:65:11","trueBody":{"id":4125,"nodeType":"Block","src":"9075:46:11","statements":[{"errorCall":{"arguments":[],"expression":{"argumentTypes":[],"id":4122,"name":"ZeroGasPrice","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3477,"src":"9096:12:11","typeDescriptions":{"typeIdentifier":"t_function_error_pure$__$returns$_t_error_$","typeString":"function () pure returns (error)"}},"id":4123,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"9096:14:11","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_error","typeString":"error"}},"id":4124,"nodeType":"RevertStatement","src":"9089:21:11"}]}},{"assignments":[4128],"declarations":[{"constant":false,"id":4128,"mutability":"mutable","name":"gasFee","nameLocation":"9138:6:11","nodeType":"VariableDeclaration","scope":4139,"src":"9130:14:11","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":4127,"name":"uint256","nodeType":"ElementaryTypeName","src":"9130:7:11","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"id":4134,"initialValue":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":4133,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":4131,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":4129,"name":"gasPrice","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4111,"src":"9147:8:11","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"*","rightExpression":{"id":4130,"name":"GAS_LIMIT","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3507,"src":"9158:9:11","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"9147:20:11","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"+","rightExpression":{"id":4132,"name":"PROTOCOL_FLAT_FEE","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3511,"src":"9170:17:11","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"9147:40:11","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"VariableDeclarationStatement","src":"9130:57:11"},{"expression":{"components":[{"id":4135,"name":"gasZRC20","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4092,"src":"9205:8:11","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":4136,"name":"gasFee","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4128,"src":"9215:6:11","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"id":4137,"isConstant":false,"isInlineArray":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"TupleExpression","src":"9204:18:11","typeDescriptions":{"typeIdentifier":"t_tuple$_t_address_$_t_uint256_$","typeString":"tuple(address,uint256)"}},"functionReturnParameters":4090,"id":4138,"nodeType":"Return","src":"9197:25:11"}]},"baseFunctions":[4793],"documentation":{"id":4083,"nodeType":"StructuredDocumentation","src":"8552:174:11","text":" @dev Withdraws gas fees.\n @return returns the ZRC20 address for gas on the same chain of this ZRC20, and calculates the gas fee for\n withdraw()"},"functionSelector":"d9eeebed","implemented":true,"kind":"function","modifiers":[],"name":"withdrawGasFee","nameLocation":"8740:14:11","overrides":{"id":4085,"nodeType":"OverrideSpecifier","overrides":[],"src":"8769:8:11"},"parameters":{"id":4084,"nodeType":"ParameterList","parameters":[],"src":"8754:2:11"},"returnParameters":{"id":4090,"nodeType":"ParameterList","parameters":[{"constant":false,"id":4087,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":4140,"src":"8787:7:11","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":4086,"name":"address","nodeType":"ElementaryTypeName","src":"8787:7:11","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":4089,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":4140,"src":"8796:7:11","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":4088,"name":"uint256","nodeType":"ElementaryTypeName","src":"8796:7:11","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"8786:18:11"},"scope":4340,"stateMutability":"view","virtual":false,"visibility":"public"},{"id":4200,"nodeType":"FunctionDefinition","src":"9437:525:11","nodes":[],"body":{"id":4199,"nodeType":"Block","src":"9539:423:11","nodes":[],"statements":[{"assignments":[4152],"declarations":[{"constant":false,"id":4152,"mutability":"mutable","name":"gasZRC20","nameLocation":"9557:8:11","nodeType":"VariableDeclaration","scope":4199,"src":"9549:16:11","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":4151,"name":"address","nodeType":"ElementaryTypeName","src":"9549:7:11","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"id":4159,"initialValue":{"arguments":[{"id":4157,"name":"CHAIN_ID","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3497,"src":"9623:8:11","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"}],"expression":{"arguments":[{"id":4154,"name":"SYSTEM_CONTRACT_ADDRESS","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3504,"src":"9576:23:11","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"}],"id":4153,"name":"ISystem","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4618,"src":"9568:7:11","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_ISystem_$4618_$","typeString":"type(contract ISystem)"}},"id":4155,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"9568:32:11","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_contract$_ISystem_$4618","typeString":"contract ISystem"}},"id":4156,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"9601:21:11","memberName":"gasCoinZRC20ByChainId","nodeType":"MemberAccess","referencedDeclaration":4610,"src":"9568:54:11","typeDescriptions":{"typeIdentifier":"t_function_external_view$_t_uint256_$returns$_t_address_$","typeString":"function (uint256) view external returns (address)"}},"id":4158,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"9568:64:11","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"nodeType":"VariableDeclarationStatement","src":"9549:83:11"},{"condition":{"commonType":{"typeIdentifier":"t_address","typeString":"address"},"id":4165,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":4160,"name":"gasZRC20","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4152,"src":"9646:8:11","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"nodeType":"BinaryOperation","operator":"==","rightExpression":{"arguments":[{"hexValue":"30","id":4163,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"9666:1:11","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"}],"id":4162,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"9658:7:11","typeDescriptions":{"typeIdentifier":"t_type$_t_address_$","typeString":"type(address)"},"typeName":{"id":4161,"name":"address","nodeType":"ElementaryTypeName","src":"9658:7:11","typeDescriptions":{}}},"id":4164,"isConstant":false,"isLValue":false,"isPure":true,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"9658:10:11","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"src":"9646:22:11","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":4169,"nodeType":"IfStatement","src":"9642:48:11","trueBody":{"errorCall":{"arguments":[],"expression":{"argumentTypes":[],"id":4166,"name":"ZeroGasCoin","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3475,"src":"9677:11:11","typeDescriptions":{"typeIdentifier":"t_function_error_pure$__$returns$_t_error_$","typeString":"function () pure returns (error)"}},"id":4167,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"9677:13:11","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_error","typeString":"error"}},"id":4168,"nodeType":"RevertStatement","src":"9670:20:11"}},{"assignments":[4171],"declarations":[{"constant":false,"id":4171,"mutability":"mutable","name":"gasPrice","nameLocation":"9709:8:11","nodeType":"VariableDeclaration","scope":4199,"src":"9701:16:11","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":4170,"name":"uint256","nodeType":"ElementaryTypeName","src":"9701:7:11","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"id":4178,"initialValue":{"arguments":[{"id":4176,"name":"CHAIN_ID","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3497,"src":"9771:8:11","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"}],"expression":{"arguments":[{"id":4173,"name":"SYSTEM_CONTRACT_ADDRESS","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3504,"src":"9728:23:11","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"}],"id":4172,"name":"ISystem","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4618,"src":"9720:7:11","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_ISystem_$4618_$","typeString":"type(contract ISystem)"}},"id":4174,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"9720:32:11","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_contract$_ISystem_$4618","typeString":"contract ISystem"}},"id":4175,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"9753:17:11","memberName":"gasPriceByChainId","nodeType":"MemberAccess","referencedDeclaration":4603,"src":"9720:50:11","typeDescriptions":{"typeIdentifier":"t_function_external_view$_t_uint256_$returns$_t_uint256_$","typeString":"function (uint256) view external returns (uint256)"}},"id":4177,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"9720:60:11","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"VariableDeclarationStatement","src":"9701:79:11"},{"condition":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":4181,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":4179,"name":"gasPrice","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4171,"src":"9794:8:11","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"==","rightExpression":{"hexValue":"30","id":4180,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"9806:1:11","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},"src":"9794:13:11","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":4186,"nodeType":"IfStatement","src":"9790:65:11","trueBody":{"id":4185,"nodeType":"Block","src":"9809:46:11","statements":[{"errorCall":{"arguments":[],"expression":{"argumentTypes":[],"id":4182,"name":"ZeroGasPrice","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3477,"src":"9830:12:11","typeDescriptions":{"typeIdentifier":"t_function_error_pure$__$returns$_t_error_$","typeString":"function () pure returns (error)"}},"id":4183,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"9830:14:11","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_error","typeString":"error"}},"id":4184,"nodeType":"RevertStatement","src":"9823:21:11"}]}},{"assignments":[4188],"declarations":[{"constant":false,"id":4188,"mutability":"mutable","name":"gasFee","nameLocation":"9872:6:11","nodeType":"VariableDeclaration","scope":4199,"src":"9864:14:11","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":4187,"name":"uint256","nodeType":"ElementaryTypeName","src":"9864:7:11","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"id":4194,"initialValue":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":4193,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":4191,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":4189,"name":"gasPrice","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4171,"src":"9881:8:11","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"*","rightExpression":{"id":4190,"name":"gasLimit","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4143,"src":"9892:8:11","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"9881:19:11","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"+","rightExpression":{"id":4192,"name":"PROTOCOL_FLAT_FEE","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3511,"src":"9903:17:11","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"9881:39:11","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"VariableDeclarationStatement","src":"9864:56:11"},{"expression":{"components":[{"id":4195,"name":"gasZRC20","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4152,"src":"9938:8:11","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":4196,"name":"gasFee","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4188,"src":"9948:6:11","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"id":4197,"isConstant":false,"isInlineArray":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"TupleExpression","src":"9937:18:11","typeDescriptions":{"typeIdentifier":"t_tuple$_t_address_$_t_uint256_$","typeString":"tuple(address,uint256)"}},"functionReturnParameters":4150,"id":4198,"nodeType":"Return","src":"9930:25:11"}]},"baseFunctions":[4802],"documentation":{"id":4141,"nodeType":"StructuredDocumentation","src":"9235:197:11","text":" @dev Withdraws gas fees with specified gasLimit\n @return returns the ZRC20 address for gas on the same chain of this ZRC20, and calculates the gas fee for\n withdraw()"},"functionSelector":"fc5fecd5","implemented":true,"kind":"function","modifiers":[],"name":"withdrawGasFeeWithGasLimit","nameLocation":"9446:26:11","overrides":{"id":4145,"nodeType":"OverrideSpecifier","overrides":[],"src":"9503:8:11"},"parameters":{"id":4144,"nodeType":"ParameterList","parameters":[{"constant":false,"id":4143,"mutability":"mutable","name":"gasLimit","nameLocation":"9481:8:11","nodeType":"VariableDeclaration","scope":4200,"src":"9473:16:11","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":4142,"name":"uint256","nodeType":"ElementaryTypeName","src":"9473:7:11","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"9472:18:11"},"returnParameters":{"id":4150,"nodeType":"ParameterList","parameters":[{"constant":false,"id":4147,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":4200,"src":"9521:7:11","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":4146,"name":"address","nodeType":"ElementaryTypeName","src":"9521:7:11","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":4149,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":4200,"src":"9530:7:11","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":4148,"name":"uint256","nodeType":"ElementaryTypeName","src":"9530:7:11","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"9520:18:11"},"scope":4340,"stateMutability":"view","virtual":false,"visibility":"public"},{"id":4251,"nodeType":"FunctionDefinition","src":"10352:430:11","nodes":[],"body":{"id":4250,"nodeType":"Block","src":"10436:346:11","nodes":[],"statements":[{"assignments":[4212,4214],"declarations":[{"constant":false,"id":4212,"mutability":"mutable","name":"gasZRC20","nameLocation":"10455:8:11","nodeType":"VariableDeclaration","scope":4250,"src":"10447:16:11","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":4211,"name":"address","nodeType":"ElementaryTypeName","src":"10447:7:11","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":4214,"mutability":"mutable","name":"gasFee","nameLocation":"10473:6:11","nodeType":"VariableDeclaration","scope":4250,"src":"10465:14:11","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":4213,"name":"uint256","nodeType":"ElementaryTypeName","src":"10465:7:11","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"id":4217,"initialValue":{"arguments":[],"expression":{"argumentTypes":[],"id":4215,"name":"withdrawGasFee","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4140,"src":"10483:14:11","typeDescriptions":{"typeIdentifier":"t_function_internal_view$__$returns$_t_address_$_t_uint256_$","typeString":"function () view returns (address,uint256)"}},"id":4216,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"10483:16:11","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$_t_address_$_t_uint256_$","typeString":"tuple(address,uint256)"}},"nodeType":"VariableDeclarationStatement","src":"10446:53:11"},{"condition":{"id":4227,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"UnaryOperation","operator":"!","prefix":true,"src":"10513:75:11","subExpression":{"arguments":[{"expression":{"id":4222,"name":"msg","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-15,"src":"10544:3:11","typeDescriptions":{"typeIdentifier":"t_magic_message","typeString":"msg"}},"id":4223,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"10548:6:11","memberName":"sender","nodeType":"MemberAccess","src":"10544:10:11","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":4224,"name":"FUNGIBLE_MODULE_ADDRESS","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3494,"src":"10556:23:11","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":4225,"name":"gasFee","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4214,"src":"10581:6:11","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"expression":{"arguments":[{"id":4219,"name":"gasZRC20","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4212,"src":"10521:8:11","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"}],"id":4218,"name":"IZRC20","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4825,"src":"10514:6:11","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_IZRC20_$4825_$","typeString":"type(contract IZRC20)"}},"id":4220,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"10514:16:11","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_contract$_IZRC20_$4825","typeString":"contract IZRC20"}},"id":4221,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"10531:12:11","memberName":"transferFrom","nodeType":"MemberAccess","referencedDeclaration":4761,"src":"10514:29:11","typeDescriptions":{"typeIdentifier":"t_function_external_nonpayable$_t_address_$_t_address_$_t_uint256_$returns$_t_bool_$","typeString":"function (address,address,uint256) external returns (bool)"}},"id":4226,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"10514:74:11","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":4232,"nodeType":"IfStatement","src":"10509:135:11","trueBody":{"id":4231,"nodeType":"Block","src":"10590:54:11","statements":[{"errorCall":{"arguments":[],"expression":{"argumentTypes":[],"id":4228,"name":"GasFeeTransferFailed","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3473,"src":"10611:20:11","typeDescriptions":{"typeIdentifier":"t_function_error_pure$__$returns$_t_error_$","typeString":"function () pure returns (error)"}},"id":4229,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"10611:22:11","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_error","typeString":"error"}},"id":4230,"nodeType":"RevertStatement","src":"10604:29:11"}]}},{"expression":{"arguments":[{"expression":{"id":4234,"name":"msg","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-15,"src":"10659:3:11","typeDescriptions":{"typeIdentifier":"t_magic_message","typeString":"msg"}},"id":4235,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"10663:6:11","memberName":"sender","nodeType":"MemberAccess","src":"10659:10:11","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":4236,"name":"amount","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4205,"src":"10671:6:11","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":4233,"name":"_burn","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3992,"src":"10653:5:11","typeDescriptions":{"typeIdentifier":"t_function_internal_nonpayable$_t_address_$_t_uint256_$returns$__$","typeString":"function (address,uint256)"}},"id":4237,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"10653:25:11","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":4238,"nodeType":"ExpressionStatement","src":"10653:25:11"},{"eventCall":{"arguments":[{"expression":{"id":4240,"name":"msg","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-15,"src":"10704:3:11","typeDescriptions":{"typeIdentifier":"t_magic_message","typeString":"msg"}},"id":4241,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"10708:6:11","memberName":"sender","nodeType":"MemberAccess","src":"10704:10:11","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":4242,"name":"to","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4203,"src":"10716:2:11","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}},{"id":4243,"name":"amount","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4205,"src":"10720:6:11","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},{"id":4244,"name":"gasFee","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4214,"src":"10728:6:11","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},{"id":4245,"name":"PROTOCOL_FLAT_FEE","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3511,"src":"10736:17:11","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"},{"typeIdentifier":"t_uint256","typeString":"uint256"},{"typeIdentifier":"t_uint256","typeString":"uint256"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":4239,"name":"Withdrawal","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4881,"src":"10693:10:11","typeDescriptions":{"typeIdentifier":"t_function_event_nonpayable$_t_address_$_t_bytes_memory_ptr_$_t_uint256_$_t_uint256_$_t_uint256_$returns$__$","typeString":"function (address,bytes memory,uint256,uint256,uint256)"}},"id":4246,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"10693:61:11","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":4247,"nodeType":"EmitStatement","src":"10688:66:11"},{"expression":{"hexValue":"74727565","id":4248,"isConstant":false,"isLValue":false,"isPure":true,"kind":"bool","lValueRequested":false,"nodeType":"Literal","src":"10771:4:11","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"value":"true"},"functionReturnParameters":4210,"id":4249,"nodeType":"Return","src":"10764:11:11"}]},"baseFunctions":[4786],"documentation":{"id":4201,"nodeType":"StructuredDocumentation","src":"9968:379:11","text":" @dev Withraws ZRC20 tokens to external chains, this function causes cctx module to send out outbound tx to the\n outbound chain\n this contract should be given enough allowance of the gas ZRC20 to pay for outbound tx gas fee.\n @param to, recipient address.\n @param amount, amount to deposit.\n @return true/false if succeeded/failed."},"functionSelector":"c7012626","implemented":true,"kind":"function","modifiers":[],"name":"withdraw","nameLocation":"10361:8:11","overrides":{"id":4207,"nodeType":"OverrideSpecifier","overrides":[],"src":"10412:8:11"},"parameters":{"id":4206,"nodeType":"ParameterList","parameters":[{"constant":false,"id":4203,"mutability":"mutable","name":"to","nameLocation":"10383:2:11","nodeType":"VariableDeclaration","scope":4251,"src":"10370:15:11","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes"},"typeName":{"id":4202,"name":"bytes","nodeType":"ElementaryTypeName","src":"10370:5:11","typeDescriptions":{"typeIdentifier":"t_bytes_storage_ptr","typeString":"bytes"}},"visibility":"internal"},{"constant":false,"id":4205,"mutability":"mutable","name":"amount","nameLocation":"10395:6:11","nodeType":"VariableDeclaration","scope":4251,"src":"10387:14:11","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":4204,"name":"uint256","nodeType":"ElementaryTypeName","src":"10387:7:11","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"10369:33:11"},"returnParameters":{"id":4210,"nodeType":"ParameterList","parameters":[{"constant":false,"id":4209,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":4251,"src":"10430:4:11","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"typeName":{"id":4208,"name":"bool","nodeType":"ElementaryTypeName","src":"10430:4:11","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"visibility":"internal"}],"src":"10429:6:11"},"scope":4340,"stateMutability":"nonpayable","virtual":false,"visibility":"external"},{"id":4278,"nodeType":"FunctionDefinition","src":"10942:216:11","nodes":[],"body":{"id":4277,"nodeType":"Block","src":"11015:143:11","nodes":[],"statements":[{"condition":{"commonType":{"typeIdentifier":"t_address","typeString":"address"},"id":4264,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":4259,"name":"addr","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4254,"src":"11029:4:11","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"nodeType":"BinaryOperation","operator":"==","rightExpression":{"arguments":[{"hexValue":"30","id":4262,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"11045:1:11","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"}],"id":4261,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"11037:7:11","typeDescriptions":{"typeIdentifier":"t_type$_t_address_$","typeString":"type(address)"},"typeName":{"id":4260,"name":"address","nodeType":"ElementaryTypeName","src":"11037:7:11","typeDescriptions":{}}},"id":4263,"isConstant":false,"isLValue":false,"isPure":true,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"11037:10:11","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"src":"11029:18:11","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":4268,"nodeType":"IfStatement","src":"11025:44:11","trueBody":{"errorCall":{"arguments":[],"expression":{"argumentTypes":[],"id":4265,"name":"ZeroAddress","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3483,"src":"11056:11:11","typeDescriptions":{"typeIdentifier":"t_function_error_pure$__$returns$_t_error_$","typeString":"function () pure returns (error)"}},"id":4266,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"11056:13:11","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_error","typeString":"error"}},"id":4267,"nodeType":"RevertStatement","src":"11049:20:11"}},{"expression":{"id":4271,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":4269,"name":"SYSTEM_CONTRACT_ADDRESS","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3504,"src":"11079:23:11","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"id":4270,"name":"addr","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4254,"src":"11105:4:11","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"src":"11079:30:11","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"id":4272,"nodeType":"ExpressionStatement","src":"11079:30:11"},{"eventCall":{"arguments":[{"id":4274,"name":"addr","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4254,"src":"11146:4:11","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"}],"id":4273,"name":"UpdatedSystemContract","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4885,"src":"11124:21:11","typeDescriptions":{"typeIdentifier":"t_function_event_nonpayable$_t_address_$returns$__$","typeString":"function (address)"}},"id":4275,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"11124:27:11","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":4276,"nodeType":"EmitStatement","src":"11119:32:11"}]},"documentation":{"id":4252,"nodeType":"StructuredDocumentation","src":"10788:149:11","text":" @dev Updates system contract address. Can only be updated by the fungible module.\n @param addr, new system contract address."},"functionSelector":"c835d7cc","implemented":true,"kind":"function","modifiers":[{"id":4257,"kind":"modifierInvocation","modifierName":{"id":4256,"name":"onlyFungible","nameLocations":["11002:12:11"],"nodeType":"IdentifierPath","referencedDeclaration":3554,"src":"11002:12:11"},"nodeType":"ModifierInvocation","src":"11002:12:11"}],"name":"updateSystemContractAddress","nameLocation":"10951:27:11","parameters":{"id":4255,"nodeType":"ParameterList","parameters":[{"constant":false,"id":4254,"mutability":"mutable","name":"addr","nameLocation":"10987:4:11","nodeType":"VariableDeclaration","scope":4278,"src":"10979:12:11","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":4253,"name":"address","nodeType":"ElementaryTypeName","src":"10979:7:11","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"10978:14:11"},"returnParameters":{"id":4258,"nodeType":"ParameterList","parameters":[],"src":"11015:0:11"},"scope":4340,"stateMutability":"nonpayable","virtual":false,"visibility":"external"},{"id":4305,"nodeType":"FunctionDefinition","src":"11320:193:11","nodes":[],"body":{"id":4304,"nodeType":"Block","src":"11386:127:11","nodes":[],"statements":[{"condition":{"commonType":{"typeIdentifier":"t_address","typeString":"address"},"id":4291,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":4286,"name":"addr","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4281,"src":"11400:4:11","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"nodeType":"BinaryOperation","operator":"==","rightExpression":{"arguments":[{"hexValue":"30","id":4289,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"11416:1:11","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"}],"id":4288,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"11408:7:11","typeDescriptions":{"typeIdentifier":"t_type$_t_address_$","typeString":"type(address)"},"typeName":{"id":4287,"name":"address","nodeType":"ElementaryTypeName","src":"11408:7:11","typeDescriptions":{}}},"id":4290,"isConstant":false,"isLValue":false,"isPure":true,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"11408:10:11","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"src":"11400:18:11","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":4295,"nodeType":"IfStatement","src":"11396:44:11","trueBody":{"errorCall":{"arguments":[],"expression":{"argumentTypes":[],"id":4292,"name":"ZeroAddress","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3483,"src":"11427:11:11","typeDescriptions":{"typeIdentifier":"t_function_error_pure$__$returns$_t_error_$","typeString":"function () pure returns (error)"}},"id":4293,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"11427:13:11","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_error","typeString":"error"}},"id":4294,"nodeType":"RevertStatement","src":"11420:20:11"}},{"expression":{"id":4298,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":4296,"name":"gatewayAddress","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3532,"src":"11450:14:11","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"id":4297,"name":"addr","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4281,"src":"11467:4:11","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"src":"11450:21:11","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"id":4299,"nodeType":"ExpressionStatement","src":"11450:21:11"},{"eventCall":{"arguments":[{"id":4301,"name":"addr","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4281,"src":"11501:4:11","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"}],"id":4300,"name":"UpdatedGateway","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4889,"src":"11486:14:11","typeDescriptions":{"typeIdentifier":"t_function_event_nonpayable$_t_address_$returns$__$","typeString":"function (address)"}},"id":4302,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"11486:20:11","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":4303,"nodeType":"EmitStatement","src":"11481:25:11"}]},"documentation":{"id":4279,"nodeType":"StructuredDocumentation","src":"11164:151:11","text":" @dev Updates gateway contract address. Can only be updated by the fungible module.\n @param addr, new gateway contract address."},"functionSelector":"ccc77599","implemented":true,"kind":"function","modifiers":[{"id":4284,"kind":"modifierInvocation","modifierName":{"id":4283,"name":"onlyFungible","nameLocations":["11373:12:11"],"nodeType":"IdentifierPath","referencedDeclaration":3554,"src":"11373:12:11"},"nodeType":"ModifierInvocation","src":"11373:12:11"}],"name":"updateGatewayAddress","nameLocation":"11329:20:11","parameters":{"id":4282,"nodeType":"ParameterList","parameters":[{"constant":false,"id":4281,"mutability":"mutable","name":"addr","nameLocation":"11358:4:11","nodeType":"VariableDeclaration","scope":4305,"src":"11350:12:11","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":4280,"name":"address","nodeType":"ElementaryTypeName","src":"11350:7:11","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"11349:14:11"},"returnParameters":{"id":4285,"nodeType":"ParameterList","parameters":[],"src":"11386:0:11"},"scope":4340,"stateMutability":"nonpayable","virtual":false,"visibility":"external"},{"id":4322,"nodeType":"FunctionDefinition","src":"11650:144:11","nodes":[],"body":{"id":4321,"nodeType":"Block","src":"11715:79:11","nodes":[],"statements":[{"expression":{"id":4315,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":4313,"name":"GAS_LIMIT","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3507,"src":"11725:9:11","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"id":4314,"name":"gasLimit_","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4308,"src":"11737:9:11","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"11725:21:11","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":4316,"nodeType":"ExpressionStatement","src":"11725:21:11"},{"eventCall":{"arguments":[{"id":4318,"name":"GAS_LIMIT","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3507,"src":"11777:9:11","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":4317,"name":"UpdatedGasLimit","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4893,"src":"11761:15:11","typeDescriptions":{"typeIdentifier":"t_function_event_nonpayable$_t_uint256_$returns$__$","typeString":"function (uint256)"}},"id":4319,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"11761:26:11","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":4320,"nodeType":"EmitStatement","src":"11756:31:11"}]},"documentation":{"id":4306,"nodeType":"StructuredDocumentation","src":"11519:126:11","text":" @dev Updates gas limit. Can only be updated by the fungible module.\n @param gasLimit_, new gas limit."},"functionSelector":"f687d12a","implemented":true,"kind":"function","modifiers":[{"id":4311,"kind":"modifierInvocation","modifierName":{"id":4310,"name":"onlyFungible","nameLocations":["11702:12:11"],"nodeType":"IdentifierPath","referencedDeclaration":3554,"src":"11702:12:11"},"nodeType":"ModifierInvocation","src":"11702:12:11"}],"name":"updateGasLimit","nameLocation":"11659:14:11","parameters":{"id":4309,"nodeType":"ParameterList","parameters":[{"constant":false,"id":4308,"mutability":"mutable","name":"gasLimit_","nameLocation":"11682:9:11","nodeType":"VariableDeclaration","scope":4322,"src":"11674:17:11","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":4307,"name":"uint256","nodeType":"ElementaryTypeName","src":"11674:7:11","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"11673:19:11"},"returnParameters":{"id":4312,"nodeType":"ParameterList","parameters":[],"src":"11715:0:11"},"scope":4340,"stateMutability":"nonpayable","virtual":false,"visibility":"external"},{"id":4339,"nodeType":"FunctionDefinition","src":"11954:188:11","nodes":[],"body":{"id":4338,"nodeType":"Block","src":"12033:109:11","nodes":[],"statements":[{"expression":{"id":4332,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":4330,"name":"PROTOCOL_FLAT_FEE","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3511,"src":"12043:17:11","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"id":4331,"name":"protocolFlatFee_","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4325,"src":"12063:16:11","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"12043:36:11","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":4333,"nodeType":"ExpressionStatement","src":"12043:36:11"},{"eventCall":{"arguments":[{"id":4335,"name":"PROTOCOL_FLAT_FEE","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3511,"src":"12117:17:11","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":4334,"name":"UpdatedProtocolFlatFee","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4897,"src":"12094:22:11","typeDescriptions":{"typeIdentifier":"t_function_event_nonpayable$_t_uint256_$returns$__$","typeString":"function (uint256)"}},"id":4336,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"12094:41:11","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":4337,"nodeType":"EmitStatement","src":"12089:46:11"}]},"documentation":{"id":4323,"nodeType":"StructuredDocumentation","src":"11800:149:11","text":" @dev Updates protocol flat fee. Can only be updated by the fungible module.\n @param protocolFlatFee_, new protocol flat fee."},"functionSelector":"eddeb123","implemented":true,"kind":"function","modifiers":[{"id":4328,"kind":"modifierInvocation","modifierName":{"id":4327,"name":"onlyFungible","nameLocations":["12020:12:11"],"nodeType":"IdentifierPath","referencedDeclaration":3554,"src":"12020:12:11"},"nodeType":"ModifierInvocation","src":"12020:12:11"}],"name":"updateProtocolFlatFee","nameLocation":"11963:21:11","parameters":{"id":4326,"nodeType":"ParameterList","parameters":[{"constant":false,"id":4325,"mutability":"mutable","name":"protocolFlatFee_","nameLocation":"11993:16:11","nodeType":"VariableDeclaration","scope":4339,"src":"11985:24:11","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":4324,"name":"uint256","nodeType":"ElementaryTypeName","src":"11985:7:11","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"11984:26:11"},"returnParameters":{"id":4329,"nodeType":"ParameterList","parameters":[],"src":"12033:0:11"},"scope":4340,"stateMutability":"nonpayable","virtual":false,"visibility":"external"}],"abstract":false,"baseContracts":[{"baseName":{"id":3485,"name":"IZRC20Metadata","nameLocations":["722:14:11"],"nodeType":"IdentifierPath","referencedDeclaration":4844,"src":"722:14:11"},"id":3486,"nodeType":"InheritanceSpecifier","src":"722:14:11"},{"baseName":{"id":3487,"name":"ZRC20Errors","nameLocations":["738:11:11"],"nodeType":"IdentifierPath","referencedDeclaration":3484,"src":"738:11:11"},"id":3488,"nodeType":"InheritanceSpecifier","src":"738:11:11"},{"baseName":{"id":3489,"name":"ZRC20Events","nameLocations":["751:11:11"],"nodeType":"IdentifierPath","referencedDeclaration":4898,"src":"751:11:11"},"id":3490,"nodeType":"InheritanceSpecifier","src":"751:11:11"}],"canonicalName":"ZRC20","contractDependencies":[],"contractKind":"contract","fullyImplemented":true,"linearizedBaseContracts":[4340,4898,3484,4844,4825],"name":"ZRC20","nameLocation":"713:5:11","scope":4341,"usedErrors":[3469,3471,3473,3475,3477,3479,3481,3483],"usedEvents":[4853,4861,4869,4881,4885,4889,4893,4897]}],"license":"MIT"},"id":11} \ No newline at end of file diff --git a/packages/client/src/client.ts b/packages/client/src/client.ts index 3098191e..5d55208e 100644 --- a/packages/client/src/client.ts +++ b/packages/client/src/client.ts @@ -3,7 +3,6 @@ import type { Signer, Wallet } from "ethers"; import merge from "lodash/merge"; import { - deposit, evmCall, evmDeposit, evmDepositAndCall, @@ -22,7 +21,6 @@ import { sendZeta, solanaDeposit, trackCCTX, - withdraw, zetachainCall, zetachainWithdraw, zetachainWithdrawAndCall, @@ -124,8 +122,6 @@ export class ZetaChainClient { getFees = getFees; getPools = getPools; trackCCTX = trackCCTX; - deposit = deposit; - withdraw = withdraw; sendZeta = sendZeta; getChainId = getChainId; getQuote = getQuote; diff --git a/packages/client/src/deposit.ts b/packages/client/src/deposit.ts deleted file mode 100644 index 0bd3616b..00000000 --- a/packages/client/src/deposit.ts +++ /dev/null @@ -1,107 +0,0 @@ -import ERC20_ABI from "@openzeppelin/contracts/build/contracts/ERC20.json"; -import { getAddress, ParamChainName } from "@zetachain/protocol-contracts"; -import ERC20Custody from "@zetachain/protocol-contracts/abi/evm/ERC20Custody.sol/ERC20Custody.json"; -import { ethers } from "ethers"; - -import { ZetaChainClient } from "./client"; -import { prepareParams } from "./prepareData"; - -/** - * Initiates a deposit transaction of native gas or ERC-20 assets as ZRC-20 from - * a connected chain to ZetaChain. - * - * @param this - ZetaChainClient instance. - * @param options - Deposit options. - * @param options.chain - Label of the connected chain from which the deposit is - * made. - * @param options.amount - Amount to be deposited in human readable form. For - * example, 1.5 ETH is "1.5". - * @param options.erc20 - If an ERC-20 token is being deposited, the address of - * the ERC-20 token contract. If not provided, the deposit is assumed to be in - * native gas token. - * @param options.message - If a message is specified, ZetaChain will deposit - * tokens into the `recipient` contract and call with with the message as an argument. - * @param options.recipient - Recipient address for the deposit. If not provided, - * the deposit is made to the signer's address. - * - * @returns A promise that resolves with the transaction details upon success. - */ -export const deposit = async function ( - this: ZetaChainClient, - { - chain, - amount, - recipient, - erc20, - message, - }: { - amount: string; - chain: string; - erc20?: string; - message?: [string[], string[]]; - recipient: string; - } -) { - let signer; - if (this.signer) { - signer = this.signer; - } else if (this.wallet) { - const rpc = this.getEndpoint("evm", chain); - if (!rpc) throw new Error(`No EVM RPC endpoint found for ${chain} chain.`); - const provider = new ethers.providers.JsonRpcProvider(rpc); - signer = this.wallet.connect(provider); - } else { - throw new Error("No wallet or signer found."); - } - if (message && !recipient) { - throw new Error("Please, provide a valid contract address as recipient."); - } - - const recipientHex = ethers.utils.hexZeroPad(recipient, 20); - const encodedMessage = message - ? ethers.utils.defaultAbiCoder.encode(message[0], message[1]).slice(2) - : ""; - const data = recipientHex + encodedMessage; - - if (erc20) { - const custody = getAddress( - "erc20Custody", - chain as ParamChainName - ) as string; - if (!custody) { - throw new Error(`No ERC-20 custody contract found for ${chain} chain.`); - } - const custodyContract = new ethers.Contract( - custody, - ERC20Custody.abi, - signer - ); - const contract = new ethers.Contract(erc20, ERC20_ABI.abi, signer); - const decimals = await contract.decimals(); - let value; - try { - value = ethers.utils.parseUnits(amount, decimals); - } catch (e) { - throw new Error("Amount cannot be parsed."); - } - const signerAddress = await signer.getAddress(); - const balance = await contract.balanceOf(signerAddress); - if (balance.lt(value)) { - throw new Error("Insufficient token balance."); - } - const approveTx = await contract.approve(custody, value); - await approveTx.wait(); - return await custodyContract.deposit(recipient, erc20, value, data); - } else { - const tss = getAddress("tss", chain as ParamChainName); - if (!tss) { - throw new Error(`No TSS contract found for ${chain} chain.`); - } - const tx = { - data, - to: tss, - value: ethers.utils.parseUnits(amount, 18), - }; - return await signer.sendTransaction(tx); - } -}; diff --git a/packages/client/src/evmCall.ts b/packages/client/src/evmCall.ts index d05ee5fa..b2b5f4f4 100644 --- a/packages/client/src/evmCall.ts +++ b/packages/client/src/evmCall.ts @@ -1,6 +1,6 @@ +import GatewayABI from "@zetachain/protocol-contracts/abi/GatewayEVM.sol/GatewayEVM.json"; import { ethers } from "ethers"; -import GatewayABI from "./abi/GatewayEVM.sol/GatewayEVM.json"; import { ZetaChainClient } from "./client"; import type { revertOptions, txOptions } from "./types"; diff --git a/packages/client/src/evmDeposit.ts b/packages/client/src/evmDeposit.ts index de556728..75111d67 100644 --- a/packages/client/src/evmDeposit.ts +++ b/packages/client/src/evmDeposit.ts @@ -1,7 +1,7 @@ import ERC20_ABI from "@openzeppelin/contracts/build/contracts/ERC20.json"; +import GatewayABI from "@zetachain/protocol-contracts/abi/GatewayEVM.sol/GatewayEVM.json"; import { ethers } from "ethers"; -import GatewayABI from "./abi/GatewayEVM.sol/GatewayEVM.json"; import { ZetaChainClient } from "./client"; import type { revertOptions, txOptions } from "./types"; diff --git a/packages/client/src/evmDepositAndCall.ts b/packages/client/src/evmDepositAndCall.ts index c5a1833d..301361d1 100644 --- a/packages/client/src/evmDepositAndCall.ts +++ b/packages/client/src/evmDepositAndCall.ts @@ -1,7 +1,7 @@ import ERC20_ABI from "@openzeppelin/contracts/build/contracts/ERC20.json"; +import GatewayABI from "@zetachain/protocol-contracts/abi/GatewayEVM.sol/GatewayEVM.json"; import { ethers } from "ethers"; -import GatewayABI from "./abi/GatewayEVM.sol/GatewayEVM.json"; import { ZetaChainClient } from "./client"; import type { revertOptions, txOptions } from "./types"; diff --git a/packages/client/src/getBalances.ts b/packages/client/src/getBalances.ts index 15cf05f3..25a2132a 100644 --- a/packages/client/src/getBalances.ts +++ b/packages/client/src/getBalances.ts @@ -1,6 +1,6 @@ import ERC20_ABI from "@openzeppelin/contracts/build/contracts/ERC20.json"; import { getAddress } from "@zetachain/protocol-contracts"; -import ZRC20 from "@zetachain/protocol-contracts/abi/zevm/ZRC20.sol/ZRC20.json"; +import ZRC20 from "@zetachain/protocol-contracts/abi/ZRC20.sol/ZRC20.json"; import { ethers } from "ethers"; import { formatUnits } from "ethers/lib/utils"; import fetch from "isomorphic-fetch"; diff --git a/packages/client/src/getFees.ts b/packages/client/src/getFees.ts index 54a5d59b..1c0d9554 100644 --- a/packages/client/src/getFees.ts +++ b/packages/client/src/getFees.ts @@ -1,5 +1,5 @@ import { mainnet, testnet } from "@zetachain/protocol-contracts"; -import ZRC20 from "@zetachain/protocol-contracts/abi/zevm/ZRC20.sol/ZRC20.json"; +import ZRC20 from "@zetachain/protocol-contracts/abi/ZRC20.sol/ZRC20.json"; import { ethers, utils } from "ethers"; import fetch from "isomorphic-fetch"; diff --git a/packages/client/src/getPools.ts b/packages/client/src/getPools.ts index 5b408884..fe45a929 100644 --- a/packages/client/src/getPools.ts +++ b/packages/client/src/getPools.ts @@ -1,7 +1,7 @@ import UniswapV2Factory from "@uniswap/v2-core/build/UniswapV2Factory.json"; import UniswapV2Pair from "@uniswap/v2-core/build/UniswapV2Pair.json"; import { getAddress, ParamChainName } from "@zetachain/protocol-contracts"; -import SystemContract from "@zetachain/protocol-contracts/abi/zevm/SystemContract.sol/SystemContract.json"; +import SystemContract from "@zetachain/protocol-contracts/abi/SystemContract.sol/SystemContract.json"; import { ethers } from "ethers"; import { ZetaChainClient } from "./client"; diff --git a/packages/client/src/getQuote.ts b/packages/client/src/getQuote.ts index 8047a427..a9e9722a 100644 --- a/packages/client/src/getQuote.ts +++ b/packages/client/src/getQuote.ts @@ -1,7 +1,7 @@ import { parseUnits } from "@ethersproject/units"; import UniswapV2RouterABI from "@uniswap/v2-periphery/build/IUniswapV2Router02.json"; import { getAddress } from "@zetachain/protocol-contracts"; -import ZRC20 from "@zetachain/protocol-contracts/abi/zevm/ZRC20.sol/ZRC20.json"; +import ZRC20 from "@zetachain/protocol-contracts/abi/ZRC20.sol/ZRC20.json"; import { ethers } from "ethers"; import { ZetaChainClient } from "./client"; diff --git a/packages/client/src/index.ts b/packages/client/src/index.ts index 27f71902..e93fbfae 100644 --- a/packages/client/src/index.ts +++ b/packages/client/src/index.ts @@ -1,5 +1,4 @@ export * from "./client"; -export * from "./deposit"; export * from "./evmCall"; export * from "./evmDeposit"; export * from "./evmDepositAndCall"; @@ -16,7 +15,6 @@ export * from "./prepareData"; export * from "./sendZeta"; export * from "./solanaDeposit"; export * from "./trackCCTX"; -export * from "./withdraw"; export * from "./zetachainCall"; export * from "./zetachainWithdraw"; export * from "./zetachainWithdrawAndCall"; diff --git a/packages/client/src/sendZeta.ts b/packages/client/src/sendZeta.ts index 263fe4bc..4420124d 100644 --- a/packages/client/src/sendZeta.ts +++ b/packages/client/src/sendZeta.ts @@ -1,7 +1,7 @@ import { getAddress, ParamChainName } from "@zetachain/protocol-contracts"; -import ZetaToken from "@zetachain/protocol-contracts/abi/evm/Zeta.eth.sol/ZetaEth.json"; -import ZetaConnectorEth from "@zetachain/protocol-contracts/abi/evm/ZetaConnector.eth.sol/ZetaConnectorEth.json"; -import ZetaConnectorZEVM from "@zetachain/protocol-contracts/abi/zevm/ZetaConnectorZEVM.sol/ZetaConnectorZEVM.json"; +import ZetaToken from "@zetachain/protocol-contracts/abi/Zeta.non-eth.sol/ZetaNonEth.json"; +import ZetaConnectorEth from "@zetachain/protocol-contracts/abi/ZetaConnectorNative.sol/ZetaConnectorNative.json"; +import ZetaConnectorZEVM from "@zetachain/protocol-contracts/abi/ZetaConnectorNonNative.sol/ZetaConnectorNonNative.json"; import { ethers } from "ethers"; import { ZetaChainClient } from "./client"; diff --git a/packages/client/src/withdraw.ts b/packages/client/src/withdraw.ts deleted file mode 100644 index 2ef1b343..00000000 --- a/packages/client/src/withdraw.ts +++ /dev/null @@ -1,56 +0,0 @@ -import ZRC20 from "@zetachain/protocol-contracts/abi/zevm/ZRC20.sol/ZRC20.json"; -import { ethers } from "ethers"; - -import { ZetaChainClient } from "./client"; - -/** - * Initiates a withdraw transaction of a ZRC-20 token from ZetaChain to a - * connected chain as a native gas or ERC-20 token. - * - * @param this - ZetaChainClient instance. - * @param options - Withdrawal options. - * @param options.amount - Amount to be withdrawn in human readable form. - * @param options.zrc20 - ZRC-20 token contract address. - * @param options.recipient - Recipient address for the withdrawal. If not provided, - * the withdrawal is made to the signer's address. - * - * @returns A promise that resolves with the transaction details upon success. - */ -export const withdraw = async function ( - this: ZetaChainClient, - { - amount, - zrc20, - recipient, - }: { - amount: string; - recipient: string; - zrc20: string; - } -) { - let signer; - if (this.signer) { - signer = this.signer; - } else if (this.wallet) { - const chain = `zeta_${this.network}`; - const rpc = this.getEndpoint("evm", chain); - if (!rpc) throw new Error(`No EVM RPC endpoint found for ${chain} chain.`); - const provider = new ethers.providers.JsonRpcProvider(rpc); - signer = this.wallet.connect(provider); - } else { - throw new Error("No wallet or signer found."); - } - - const targetContract = new ethers.Contract(zrc20, ZRC20.abi, signer); - const targetDecimals = await targetContract.decimals(); - - const [gasAddress, gasFee] = await targetContract.withdrawGasFee(); - const gasContract = new ethers.Contract(gasAddress, ZRC20.abi, signer); - - const value = ethers.utils.parseUnits(amount, targetDecimals); - - await (await gasContract.connect(signer).approve(zrc20, gasFee)).wait(); - - const to = recipient; - return await targetContract.connect(signer).withdraw(to, value); -}; diff --git a/packages/client/src/zetachainCall.ts b/packages/client/src/zetachainCall.ts index 8355723e..6f4d43a6 100644 --- a/packages/client/src/zetachainCall.ts +++ b/packages/client/src/zetachainCall.ts @@ -1,7 +1,7 @@ +import GatewayABI from "@zetachain/protocol-contracts/abi/GatewayZEVM.sol/GatewayZEVM.json"; +import ZRC20ABI from "@zetachain/protocol-contracts/abi/ZRC20.sol/ZRC20.json"; import { ethers } from "ethers"; -import GatewayABI from "./abi/GatewayZEVM.sol/GatewayZEVM.json"; -import ZRC20ABI from "./abi/ZRC20.sol/ZRC20.json"; import { ZetaChainClient } from "./client"; import type { revertOptions, txOptions } from "./types"; @@ -17,7 +17,7 @@ import type { revertOptions, txOptions } from "./types"; * @param {string} args.types - JSON string representing the types of the function parameters (e.g., ["uint256", "address"]). * @param {Array} args.values - The values to be passed to the function (should match the types). * @param {string} args.zrc20 - The address of the ZRC20 token contract used for paying gas fees. - * @param {number} args.gasLimit - The amount of gas to be used for the call. + * @param {object} args.callOptions - Call options. * @param {txOptions} args.txOptions - Transaction options such as gasPrice, nonce, etc. * @param {revertOptions} args.revertOptions - Options to handle call reversion, including revert address and message. * @@ -30,8 +30,8 @@ import type { revertOptions, txOptions } from "./types"; export const zetachainCall = async function ( this: ZetaChainClient, args: { + callOptions: any; function: string; - gasLimit: number; gatewayZetaChain: string; receiver: string; revertOptions: revertOptions; @@ -88,7 +88,7 @@ export const zetachainCall = async function ( ); const zrc20 = new ethers.Contract(args.zrc20, ZRC20ABI.abi, signer); const [gasZRC20, gasFee] = await zrc20.withdrawGasFeeWithGasLimit( - args.gasLimit + args.callOptions.gasLimit ); const gasZRC20Contract = new ethers.Contract(gasZRC20, ZRC20ABI.abi, signer); const approve = await gasZRC20Contract.approve( @@ -98,12 +98,12 @@ export const zetachainCall = async function ( ); await approve.wait(); const tx = await gateway[ - "call(bytes,address,bytes,uint256,(address,bool,address,bytes,uint256))" + "call(bytes,address,bytes,(uint256,bool),(address,bool,address,bytes,uint256))" ]( utils.hexlify(args.receiver), gasZRC20, message, - args.gasLimit, + args.callOptions, revertOptions, args.txOptions ); diff --git a/packages/client/src/zetachainWithdraw.ts b/packages/client/src/zetachainWithdraw.ts index daf6bbfb..5fdb7993 100644 --- a/packages/client/src/zetachainWithdraw.ts +++ b/packages/client/src/zetachainWithdraw.ts @@ -1,7 +1,7 @@ +import GatewayABI from "@zetachain/protocol-contracts/abi/GatewayZEVM.sol/GatewayZEVM.json"; +import ZRC20ABI from "@zetachain/protocol-contracts/abi/ZRC20.sol/ZRC20.json"; import { ethers } from "ethers"; -import GatewayABI from "./abi/GatewayZEVM.sol/GatewayZEVM.json"; -import ZRC20ABI from "./abi/ZRC20.sol/ZRC20.json"; import { ZetaChainClient } from "./client"; import type { revertOptions, txOptions } from "./types"; diff --git a/packages/client/src/zetachainWithdrawAndCall.ts b/packages/client/src/zetachainWithdrawAndCall.ts index 91d8521a..63ecc46c 100644 --- a/packages/client/src/zetachainWithdrawAndCall.ts +++ b/packages/client/src/zetachainWithdrawAndCall.ts @@ -1,7 +1,7 @@ +import GatewayABI from "@zetachain/protocol-contracts/abi/GatewayZEVM.sol/GatewayZEVM.json"; +import ZRC20ABI from "@zetachain/protocol-contracts/abi/ZRC20.sol/ZRC20.json"; import { ethers } from "ethers"; -import GatewayABI from "./abi/GatewayZEVM.sol/GatewayZEVM.json"; -import ZRC20ABI from "./abi/ZRC20.sol/ZRC20.json"; import { ZetaChainClient } from "./client"; import type { revertOptions, txOptions } from "./types"; @@ -18,7 +18,7 @@ import type { revertOptions, txOptions } from "./types"; * @param {string} args.types - JSON string representing the types of the function parameters (e.g., ["uint256", "address"]). * @param {Array} args.values - The values to be passed to the function (should match the types). * @param {string} args.zrc20 - The address of the ZRC20 token contract used for the withdrawal and fee payment. - * @param {number} args.gasLimit - The gas limit for the transaction. + * @param {any} args.callOptions - Call options. * @param {txOptions} args.txOptions - Transaction options such as gasPrice, nonce, etc. * @param {revertOptions} args.revertOptions - Options to handle call reversion, including revert address and message. * @@ -32,8 +32,8 @@ export const zetachainWithdrawAndCall = async function ( this: ZetaChainClient, args: { amount: string; - function: string; - gasLimit: number; + callOptions: any; + function?: string; gatewayZetaChain: string; receiver: string; revertOptions: revertOptions; @@ -62,8 +62,6 @@ export const zetachainWithdrawAndCall = async function ( ), }; - const functionSignature = utils.id(args.function).slice(0, 10); - const valuesArray = args.values.map((value, index) => { const type = args.types[index]; @@ -85,14 +83,22 @@ export const zetachainWithdrawAndCall = async function ( valuesArray ); - const message = utils.hexlify( - utils.concat([functionSignature, encodedParameters]) - ); + let message; + + if (args.callOptions.isArbitraryCall && args.function) { + let functionSignature = ethers.utils.id(args.function).slice(0, 10); + message = ethers.utils.hexlify( + ethers.utils.concat([functionSignature, encodedParameters]) + ); + } else { + message = encodedParameters; + } + const zrc20 = new ethers.Contract(args.zrc20, ZRC20ABI.abi, signer); const decimals = await zrc20.decimals(); const value = utils.parseUnits(args.amount, decimals); const [gasZRC20, gasFee] = await zrc20.withdrawGasFeeWithGasLimit( - args.gasLimit + args.callOptions.gasLimit ); if (args.zrc20 === gasZRC20) { const approveGasAndWithdraw = await zrc20.approve( @@ -120,14 +126,15 @@ export const zetachainWithdrawAndCall = async function ( ); await approveWithdraw.wait(); } + const method = - "withdrawAndCall(bytes,uint256,address,bytes,uint256,(address,bool,address,bytes,uint256))"; + "withdrawAndCall(bytes,uint256,address,bytes,(uint256,bool),(address,bool,address,bytes,uint256))"; const tx = await gateway[method]( utils.hexlify(args.receiver), value, args.zrc20, message, - args.gasLimit, + args.callOptions, revertOptions, args.txOptions ); diff --git a/packages/tasks/src/deposit.ts b/packages/tasks/src/deposit.ts deleted file mode 100644 index c2382dc2..00000000 --- a/packages/tasks/src/deposit.ts +++ /dev/null @@ -1,156 +0,0 @@ -import confirm from "@inquirer/confirm"; -import ERC20_ABI from "@openzeppelin/contracts/build/contracts/ERC20.json"; -import { task } from "hardhat/config"; -import { HardhatRuntimeEnvironment } from "hardhat/types"; - -import { ZetaChainClient } from "../../client/src"; - -const main = async (args: any, hre: HardhatRuntimeEnvironment) => { - const { ethers } = hre as any; - const [signer] = await ethers.getSigners(); - if (!signer) { - throw new Error( - "signer not found. Please, set the PRIVATE_KEY env variable." - ); - } - - const client = new ZetaChainClient({ network: "testnet", signer }); - - const { amount, erc20 } = args; - - let inputToken = args.erc20 - ? await client.getZRC20FromERC20(erc20) - : await client.getZRC20GasToken(hre.network.name); - - const refundFee = await client.getRefundFee(inputToken); - const refundFeeAmount = ethers.utils.formatUnits( - refundFee.amount, - refundFee.decimals - ); - - let decimals = 18; - - if (erc20) { - const contract = new ethers.Contract(erc20, ERC20_ABI.abi, signer); - decimals = await contract.decimals(); - } - - const value = ethers.utils.parseUnits(amount, decimals); - - let message; - if (args.message) { - try { - const msg = JSON.parse(args.message); - if ( - Array.isArray(msg) && - msg.length === 2 && - Array.isArray(msg[0]) && - msg[0].every((item: string) => typeof item === "string") - ) { - message = JSON.parse(args.message); - } else { - throw new Error(`must be an array like '[["string"], ["hello"]]'`); - } - } catch (e) { - throw new Error(`invalid message, ${e}`); - } - } - - const chain = hre.network.name; - - if (!args.ignoreChecks) { - if (chain === "zeta_testnet" || chain === "zeta_mainnet") { - throw new Error( - "the --network defines the chain from which the deposit will be made. The --network value cannot be zeta_testnet or zeta_mainnet" - ); - } - - if (args.recipient) { - if (!ethers.utils.isAddress(args.recipient)) { - throw new Error("--recipient must be a valid address"); - } - } - - if (message) { - if (!args.recipient) { - throw new Error( - "--recipient is not specified. Please, provide a valid omnichain contract address on ZetaChain" - ); - } - const rpc = client.getEndpoint("evm", "zeta_testnet"); - const provider = new ethers.providers.StaticJsonRpcProvider(rpc); - const code = await provider.getCode(args.recipient); - if (code === "0x") { - throw new Error( - "seems like --recipient is an EOA and not a contract on ZetaChain. At the same time the --message is not empty, which indicates this is a 'deposit and call' operation. Please, provide a valid omnichain contract address as the --recipient value" - ); - } - } - } - - const data = { amount, chain, erc20, message, recipient: args.recipient }; - - let symbol; - if (erc20) { - try { - const contract = new ethers.Contract(erc20, ERC20_ABI.abi, signer); - symbol = await contract.symbol(); - } catch (e) { - throw new Error("invalid ERC-20 address"); - } - } else { - const coins = await client.getForeignCoins(); - const chainId = client.getChainId(chain)?.toString(); - symbol = coins.find( - (c: any) => c.coin_type === "Gas" && c.foreign_chain_id === chainId - )?.symbol; - } - - const signerAddress = await signer.getAddress(); - - if (args.json) { - const tx = await client.deposit(data); - console.log(JSON.stringify(tx, null, 2)); - } else { - console.log(` -Networks: ${chain} → zeta_testnet -Amount sent: ${amount} ${symbol || ""} -Sender: ${signerAddress} -Recipient: ${args.recipient}`); - if (message) { - console.log(`Message: ${args.message}`); - } - if (value.lt(refundFee.amount)) { - console.log(` -WARNING! Amount ${amount} is less than refund fee ${refundFeeAmount}. -This means if this transaction fails, you will not be able to get -the refund of deposited tokens. Consider increasing the amount. -`); - } - try { - await confirm( - { - message: `Please, confirm the transaction`, - }, - { clearPromptOnDone: true } - ); - } catch (e) { - console.log("Transaction cancelled"); - } - const tx = await client.deposit(data); - console.log(`Transaction successfully broadcasted! -Hash: ${tx.hash}`); - } -}; - -export const depositTask = task( - "deposit", - "Deposit native gas or ERC-20 assets to ZetaChain as ZRC-20.", - main -) - .addParam("amount", "Amount tokens to send") - .addParam("recipient", "Recipient address") - .addOptionalParam("erc20", "ERC-20 token address") - .addOptionalParam("message", `Message, like '[["string"], ["hello"]]'`) - .addFlag("json", "Output in JSON") - .addFlag("ignoreChecks", "Ignore checks and send the tx"); diff --git a/packages/tasks/src/index.ts b/packages/tasks/src/index.ts index bb01e1fc..e03682c5 100644 --- a/packages/tasks/src/index.ts +++ b/packages/tasks/src/index.ts @@ -1,7 +1,9 @@ export { accountTask } from "./account"; export { balancesTask } from "./balances"; export { cctxTask } from "./cctx"; -export { depositTask } from "./deposit"; +export { evmCall } from "./evmCall"; +export { evmDeposit } from "./evmDeposit"; +export { evmDepositAndCall } from "./evmDepositAndCall"; export { faucetTask } from "./faucet"; export { feesTask } from "./fees"; export { messagingTask } from "./messaging"; @@ -9,13 +11,8 @@ export { omnichainTask } from "./omnichain"; export { poolsTask } from "./pools"; export { sendBTCTask } from "./sendBTC"; export { sendZETATask } from "./sendZETA"; -// export { verifyTask } from "./verify"; -export { evmCall } from "./evmCall"; -export { evmDeposit } from "./evmDeposit"; -export { evmDepositAndCall } from "./evmDepositAndCall"; export { solanaDeposit } from "./solanaDeposit"; export { tokensTask } from "./tokens"; -export { withdrawTask } from "./withdraw"; export { zetachainCall } from "./zetachainCall"; export { zetachainWithdraw } from "./zetachainWithdraw"; export { zetachainWithdrawAndCall } from "./zetachainWithdrawAndCall"; diff --git a/packages/tasks/src/withdraw.ts b/packages/tasks/src/withdraw.ts deleted file mode 100644 index 7a92f3b0..00000000 --- a/packages/tasks/src/withdraw.ts +++ /dev/null @@ -1,47 +0,0 @@ -import confirm from "@inquirer/confirm"; -import ERC20_ABI from "@openzeppelin/contracts/build/contracts/ERC20.json"; -import { task } from "hardhat/config"; -import { HardhatRuntimeEnvironment } from "hardhat/types"; - -import { ZetaChainClient } from "../../client/src"; - -const main = async (args: any, hre: HardhatRuntimeEnvironment) => { - const { ethers } = hre as any; - const [signer] = await ethers.getSigners(); - if (!signer) { - throw new Error( - "signer not found. Please, set the PRIVATE_KEY env variable." - ); - } - - const client = new ZetaChainClient({ network: "testnet", signer }); - - const signerAddress = await signer.getAddress(); - - const recipient = args.recipient || signerAddress; - const amount = args.amount; - const zrc20 = args.zrc20; - - await confirm( - { - message: `Please, confirm the transaction`, - }, - { clearPromptOnDone: true } - ); - const tx = await client.withdraw({ - amount, - recipient, - zrc20, - }); - console.log(`Transaction successfully broadcasted! -Hash: ${tx.hash}`); -}; - -export const withdrawTask = task( - "withdraw", - "Withdraw ZRC-20 from ZetaChain to a connected chain as native asset or ERC-20.", - main -) - .addParam("amount", "Amount of ZRC-20 to withdraw") - .addParam("zrc20", "ZRC-20 token address") - .addOptionalParam("recipient", "Recipient address"); diff --git a/packages/tasks/src/zetachainCall.ts b/packages/tasks/src/zetachainCall.ts index 1def729c..0599e4e0 100644 --- a/packages/tasks/src/zetachainCall.ts +++ b/packages/tasks/src/zetachainCall.ts @@ -7,12 +7,17 @@ export const zetachainCall = async ( args: any, hre: HardhatRuntimeEnvironment ) => { + const callOptions = { + gasLimit: args.callOptionsGasLimit, + isArbitraryCall: args.callOptionsIsArbitraryCall, + }; + try { const [signer] = await hre.ethers.getSigners(); const client = new ZetaChainClient({ network: "testnet", signer }); const response = await client.zetachainCall({ + callOptions, function: args.function, - gasLimit: args.gasLimit, gatewayZetaChain: args.gatewayZetaChain, receiver: args.receiver, revertOptions: { @@ -49,12 +54,6 @@ task("zetachain-call", "Call a contract on a connected chain", zetachainCall) "Revert address", "0x0000000000000000000000000000000000000000" ) - .addOptionalParam( - "gasLimit", - "The gas limit for the transaction", - 7000000, - types.int - ) .addOptionalParam( "txOptionsGasPrice", "The gas price for the transaction", @@ -78,6 +77,13 @@ task("zetachain-call", "Call a contract on a connected chain", zetachainCall) 7000000, types.int ) + .addFlag("callOptionsIsArbitraryCall", "Call any function") + .addOptionalParam( + "callOptionsGasLimit", + "The gas limit for the call", + 7000000, + types.int + ) .addParam("function", `Function to call (example: "hello(string)")`) .addParam("types", `The types of the parameters (example: '["string"]')`) .addVariadicPositionalParam("values", "The values of the parameters"); diff --git a/packages/tasks/src/zetachainWithdrawAndCall.ts b/packages/tasks/src/zetachainWithdrawAndCall.ts index 24506818..5f8fef4c 100644 --- a/packages/tasks/src/zetachainWithdrawAndCall.ts +++ b/packages/tasks/src/zetachainWithdrawAndCall.ts @@ -8,12 +8,17 @@ export const zetachainWithdrawAndCall = async ( hre: HardhatRuntimeEnvironment ) => { try { + const callOptions = { + gasLimit: args.callOptionsGasLimit, + isArbitraryCall: args.callOptionsIsArbitraryCall, + }; + const [signer] = await hre.ethers.getSigners(); const client = new ZetaChainClient({ network: "testnet", signer }); const response = await client.zetachainWithdrawAndCall({ amount: args.amount, + callOptions, function: args.function, - gasLimit: args.gasLimit, gatewayZetaChain: args.gatewayZetaChain, receiver: args.receiver, revertOptions: { @@ -78,7 +83,14 @@ task( 7000000, types.int ) + .addFlag("callOptionsIsArbitraryCall", "Call any function") + .addOptionalParam( + "callOptionsGasLimit", + "The gas limit for the call", + 7000000, + types.int + ) .addParam("amount", "The amount of tokens to send") - .addParam("function", `Function to call (example: "hello(string)")`) + .addOptionalParam("function", `Function to call (example: "hello(string)")`) .addParam("types", `The types of the parameters (example: '["string"]')`) .addVariadicPositionalParam("values", "The values of the parameters"); diff --git a/packages/test/src/helpers.ts b/packages/test/src/helpers.ts deleted file mode 100644 index 65cfed41..00000000 --- a/packages/test/src/helpers.ts +++ /dev/null @@ -1,178 +0,0 @@ -import { MaxUint256 } from "@ethersproject/constants"; -import { parseEther, parseUnits } from "@ethersproject/units"; -import { SignerWithAddress } from "@nomiclabs/hardhat-ethers/signers"; -import { expect } from "chai"; -import { ethers } from "hardhat"; - -import { - MockSystemContract, - MockSystemContract__factory, - MockZRC20, - MockZRC20__factory, - TestUniswapRouter, - TestUniswapRouter__factory, - UniswapV2Factory, - UniswapV2Factory__factory, - WZETA, - WZETA__factory, -} from "../../../typechain-types"; - -export const deployWZETA = async ( - signer: SignerWithAddress -): Promise => { - const WZETAFactory = (await ethers.getContractFactory( - "WZETA" - )) as WZETA__factory; - const wZETAContract = (await WZETAFactory.deploy()) as WZETA; - await wZETAContract.deployed(); - await wZETAContract.deposit({ value: parseEther("10") }); - return wZETAContract; -}; - -interface UniswapDeployResult { - uniswapFactory: UniswapV2Factory; - uniswapRouter: TestUniswapRouter; -} - -export const deployUniswap = async ( - signer: SignerWithAddress, - wZETA: string -): Promise => { - const UniswapV2Factory = (await ethers.getContractFactory( - "UniswapV2Factory" - )) as UniswapV2Factory__factory; - const uniswapFactory = (await UniswapV2Factory.deploy( - signer.address - )) as UniswapV2Factory; - await uniswapFactory.deployed(); - - const UniswapRouter = (await ethers.getContractFactory( - "TestUniswapRouter" - )) as TestUniswapRouter__factory; - const uniswapRouter = (await UniswapRouter.deploy( - uniswapFactory.address, - wZETA - )) as TestUniswapRouter; - await uniswapRouter.deployed(); - - return { uniswapFactory, uniswapRouter }; -}; - -const addZetaEthLiquidity = async ( - signer: SignerWithAddress, - token: MockZRC20, - uniswapRouterAddr: string -) => { - const block = await ethers.provider.getBlock("latest"); - - const tx1 = await token.approve(uniswapRouterAddr, MaxUint256); - await tx1.wait(); - - const uniswapRouterFork = TestUniswapRouter__factory.connect( - uniswapRouterAddr, - signer - ); - - const tx2 = await uniswapRouterFork.addLiquidityETH( - token.address, - parseUnits("2000"), - 0, - 0, - signer.address, - block.timestamp + 360, - { - gasLimit: 10_000_000, - value: parseUnits("10"), - } - ); - await tx2.wait(); -}; - -interface EvmSetupResult { - ZRC20Contracts: MockZRC20[]; - systemContract: MockSystemContract; -} - -export const evmSetup = async ( - gasTokenAddr: string, - uniswapFactoryAddr: string, - uniswapRouterAddr: string -): Promise => { - const [signer] = await ethers.getSigners(); - - const ZRC20Factory = (await ethers.getContractFactory( - "MockZRC20" - )) as MockZRC20__factory; - - const token1Contract = (await ZRC20Factory.deploy( - parseUnits("1000000"), - "tBNB", - "tBNB" - )) as MockZRC20; - const token2Contract = (await ZRC20Factory.deploy( - parseUnits("1000000"), - "gETH", - "gETH" - )) as MockZRC20; - const token3Contract = (await ZRC20Factory.deploy( - parseUnits("1000000"), - "tMATIC", - "tMATIC" - )) as MockZRC20; - const token4Contract = (await ZRC20Factory.deploy( - parseUnits("1000000"), - "USDC", - "USDC" - )) as MockZRC20; - const token5Contract = (await ZRC20Factory.deploy( - parseUnits("1000000"), - "tBTC", - "tBTC" - )) as MockZRC20; - - const ZRC20Contracts = [ - token1Contract, - token2Contract, - token3Contract, - token4Contract, - token5Contract, - ]; - - const SystemContractFactory = (await ethers.getContractFactory( - "MockSystemContract" - )) as MockSystemContract__factory; - - const systemContract = (await SystemContractFactory.deploy( - gasTokenAddr, - uniswapFactoryAddr, - uniswapRouterAddr - )) as MockSystemContract; - - await systemContract.setGasCoinZRC20(97, ZRC20Contracts[0].address); - await systemContract.setGasCoinZRC20(5, ZRC20Contracts[1].address); - await systemContract.setGasCoinZRC20(80001, ZRC20Contracts[2].address); - await systemContract.setGasCoinZRC20(18332, ZRC20Contracts[4].address); - - await ZRC20Contracts[0].setGasFeeAddress(ZRC20Contracts[0].address); - await ZRC20Contracts[0].setGasFee(parseEther("0.01")); - - await ZRC20Contracts[1].setGasFeeAddress(ZRC20Contracts[1].address); - await ZRC20Contracts[1].setGasFee(parseEther("0.01")); - - await ZRC20Contracts[2].setGasFeeAddress(ZRC20Contracts[2].address); - await ZRC20Contracts[2].setGasFee(parseEther("0.01")); - - await ZRC20Contracts[3].setGasFeeAddress(ZRC20Contracts[1].address); - await ZRC20Contracts[3].setGasFee(parseEther("0.01")); - - await ZRC20Contracts[4].setGasFeeAddress(ZRC20Contracts[4].address); - await ZRC20Contracts[4].setGasFee(parseEther("0.01")); - - await addZetaEthLiquidity(signer, ZRC20Contracts[0], uniswapRouterAddr); - await addZetaEthLiquidity(signer, ZRC20Contracts[1], uniswapRouterAddr); - await addZetaEthLiquidity(signer, ZRC20Contracts[2], uniswapRouterAddr); - await addZetaEthLiquidity(signer, ZRC20Contracts[3], uniswapRouterAddr); - await addZetaEthLiquidity(signer, ZRC20Contracts[4], uniswapRouterAddr); - - return { ZRC20Contracts, systemContract }; -}; diff --git a/packages/test/src/index.ts b/packages/test/src/index.ts deleted file mode 100644 index d4e09d7b..00000000 --- a/packages/test/src/index.ts +++ /dev/null @@ -1 +0,0 @@ -export * from "./helpers"; diff --git a/typechain-types/@openzeppelin/contracts/index.ts b/typechain-types/@openzeppelin/contracts/index.ts index c2d4e462..b248dd25 100644 --- a/typechain-types/@openzeppelin/contracts/index.ts +++ b/typechain-types/@openzeppelin/contracts/index.ts @@ -1,5 +1,7 @@ /* Autogenerated file. Do not edit manually. */ /* tslint:disable */ /* eslint-disable */ +import type * as interfaces from "./interfaces"; +export type { interfaces }; import type * as token from "./token"; export type { token }; diff --git a/typechain-types/@zetachain/protocol-contracts/contracts/evm/interfaces/ZetaInterfaces.sol/ZetaCommonErrors.ts b/typechain-types/@openzeppelin/contracts/interfaces/draft-IERC6093.sol/IERC1155Errors.ts similarity index 85% rename from typechain-types/@zetachain/protocol-contracts/contracts/evm/interfaces/ZetaInterfaces.sol/ZetaCommonErrors.ts rename to typechain-types/@openzeppelin/contracts/interfaces/draft-IERC6093.sol/IERC1155Errors.ts index 289c0369..2bd94bb0 100644 --- a/typechain-types/@zetachain/protocol-contracts/contracts/evm/interfaces/ZetaInterfaces.sol/ZetaCommonErrors.ts +++ b/typechain-types/@openzeppelin/contracts/interfaces/draft-IERC6093.sol/IERC1155Errors.ts @@ -9,20 +9,20 @@ import type { TypedEvent, TypedListener, OnEvent, -} from "../../../../../../common"; +} from "../../../../common"; -export interface ZetaCommonErrorsInterface extends utils.Interface { +export interface IERC1155ErrorsInterface extends utils.Interface { functions: {}; events: {}; } -export interface ZetaCommonErrors extends BaseContract { +export interface IERC1155Errors extends BaseContract { connect(signerOrProvider: Signer | Provider | string): this; attach(addressOrName: string): this; deployed(): Promise; - interface: ZetaCommonErrorsInterface; + interface: IERC1155ErrorsInterface; queryFilter( event: TypedEventFilter, diff --git a/typechain-types/contracts/shared/MockSystemContract.sol/SystemContractErrors.ts b/typechain-types/@openzeppelin/contracts/interfaces/draft-IERC6093.sol/IERC20Errors.ts similarity index 85% rename from typechain-types/contracts/shared/MockSystemContract.sol/SystemContractErrors.ts rename to typechain-types/@openzeppelin/contracts/interfaces/draft-IERC6093.sol/IERC20Errors.ts index d9fef0d7..3314d6e9 100644 --- a/typechain-types/contracts/shared/MockSystemContract.sol/SystemContractErrors.ts +++ b/typechain-types/@openzeppelin/contracts/interfaces/draft-IERC6093.sol/IERC20Errors.ts @@ -9,20 +9,20 @@ import type { TypedEvent, TypedListener, OnEvent, -} from "../../../common"; +} from "../../../../common"; -export interface SystemContractErrorsInterface extends utils.Interface { +export interface IERC20ErrorsInterface extends utils.Interface { functions: {}; events: {}; } -export interface SystemContractErrors extends BaseContract { +export interface IERC20Errors extends BaseContract { connect(signerOrProvider: Signer | Provider | string): this; attach(addressOrName: string): this; deployed(): Promise; - interface: SystemContractErrorsInterface; + interface: IERC20ErrorsInterface; queryFilter( event: TypedEventFilter, diff --git a/typechain-types/@openzeppelin/contracts/interfaces/draft-IERC6093.sol/IERC721Errors.ts b/typechain-types/@openzeppelin/contracts/interfaces/draft-IERC6093.sol/IERC721Errors.ts new file mode 100644 index 00000000..e5e734ef --- /dev/null +++ b/typechain-types/@openzeppelin/contracts/interfaces/draft-IERC6093.sol/IERC721Errors.ts @@ -0,0 +1,55 @@ +/* Autogenerated file. Do not edit manually. */ +/* tslint:disable */ +/* eslint-disable */ +import type { BaseContract, Signer, utils } from "ethers"; + +import type { Listener, Provider } from "@ethersproject/providers"; +import type { + TypedEventFilter, + TypedEvent, + TypedListener, + OnEvent, +} from "../../../../common"; + +export interface IERC721ErrorsInterface extends utils.Interface { + functions: {}; + + events: {}; +} + +export interface IERC721Errors extends BaseContract { + connect(signerOrProvider: Signer | Provider | string): this; + attach(addressOrName: string): this; + deployed(): Promise; + + interface: IERC721ErrorsInterface; + + queryFilter( + event: TypedEventFilter, + fromBlockOrBlockhash?: string | number | undefined, + toBlock?: string | number | undefined + ): Promise>; + + listeners( + eventFilter?: TypedEventFilter + ): Array>; + listeners(eventName?: string): Array; + removeAllListeners( + eventFilter: TypedEventFilter + ): this; + removeAllListeners(eventName?: string): this; + off: OnEvent; + on: OnEvent; + once: OnEvent; + removeListener: OnEvent; + + functions: {}; + + callStatic: {}; + + filters: {}; + + estimateGas: {}; + + populateTransaction: {}; +} diff --git a/typechain-types/@openzeppelin/contracts/interfaces/draft-IERC6093.sol/index.ts b/typechain-types/@openzeppelin/contracts/interfaces/draft-IERC6093.sol/index.ts new file mode 100644 index 00000000..9415fdf5 --- /dev/null +++ b/typechain-types/@openzeppelin/contracts/interfaces/draft-IERC6093.sol/index.ts @@ -0,0 +1,6 @@ +/* Autogenerated file. Do not edit manually. */ +/* tslint:disable */ +/* eslint-disable */ +export type { IERC1155Errors } from "./IERC1155Errors"; +export type { IERC20Errors } from "./IERC20Errors"; +export type { IERC721Errors } from "./IERC721Errors"; diff --git a/typechain-types/@openzeppelin/contracts/interfaces/index.ts b/typechain-types/@openzeppelin/contracts/interfaces/index.ts new file mode 100644 index 00000000..d70b374b --- /dev/null +++ b/typechain-types/@openzeppelin/contracts/interfaces/index.ts @@ -0,0 +1,5 @@ +/* Autogenerated file. Do not edit manually. */ +/* tslint:disable */ +/* eslint-disable */ +import type * as draftIerc6093Sol from "./draft-IERC6093.sol"; +export type { draftIerc6093Sol }; diff --git a/typechain-types/@openzeppelin/contracts/token/ERC20/ERC20.ts b/typechain-types/@openzeppelin/contracts/token/ERC20/ERC20.ts index 682e3cfd..74ffff9b 100644 --- a/typechain-types/@openzeppelin/contracts/token/ERC20/ERC20.ts +++ b/typechain-types/@openzeppelin/contracts/token/ERC20/ERC20.ts @@ -33,8 +33,6 @@ export interface ERC20Interface extends utils.Interface { "approve(address,uint256)": FunctionFragment; "balanceOf(address)": FunctionFragment; "decimals()": FunctionFragment; - "decreaseAllowance(address,uint256)": FunctionFragment; - "increaseAllowance(address,uint256)": FunctionFragment; "name()": FunctionFragment; "symbol()": FunctionFragment; "totalSupply()": FunctionFragment; @@ -48,8 +46,6 @@ export interface ERC20Interface extends utils.Interface { | "approve" | "balanceOf" | "decimals" - | "decreaseAllowance" - | "increaseAllowance" | "name" | "symbol" | "totalSupply" @@ -70,14 +66,6 @@ export interface ERC20Interface extends utils.Interface { values: [PromiseOrValue] ): string; encodeFunctionData(functionFragment: "decimals", values?: undefined): string; - encodeFunctionData( - functionFragment: "decreaseAllowance", - values: [PromiseOrValue, PromiseOrValue] - ): string; - encodeFunctionData( - functionFragment: "increaseAllowance", - values: [PromiseOrValue, PromiseOrValue] - ): string; encodeFunctionData(functionFragment: "name", values?: undefined): string; encodeFunctionData(functionFragment: "symbol", values?: undefined): string; encodeFunctionData( @@ -101,14 +89,6 @@ export interface ERC20Interface extends utils.Interface { decodeFunctionResult(functionFragment: "approve", data: BytesLike): Result; decodeFunctionResult(functionFragment: "balanceOf", data: BytesLike): Result; decodeFunctionResult(functionFragment: "decimals", data: BytesLike): Result; - decodeFunctionResult( - functionFragment: "decreaseAllowance", - data: BytesLike - ): Result; - decodeFunctionResult( - functionFragment: "increaseAllowance", - data: BytesLike - ): Result; decodeFunctionResult(functionFragment: "name", data: BytesLike): Result; decodeFunctionResult(functionFragment: "symbol", data: BytesLike): Result; decodeFunctionResult( @@ -189,7 +169,7 @@ export interface ERC20 extends BaseContract { approve( spender: PromiseOrValue, - amount: PromiseOrValue, + value: PromiseOrValue, overrides?: Overrides & { from?: PromiseOrValue } ): Promise; @@ -200,18 +180,6 @@ export interface ERC20 extends BaseContract { decimals(overrides?: CallOverrides): Promise<[number]>; - decreaseAllowance( - spender: PromiseOrValue, - subtractedValue: PromiseOrValue, - overrides?: Overrides & { from?: PromiseOrValue } - ): Promise; - - increaseAllowance( - spender: PromiseOrValue, - addedValue: PromiseOrValue, - overrides?: Overrides & { from?: PromiseOrValue } - ): Promise; - name(overrides?: CallOverrides): Promise<[string]>; symbol(overrides?: CallOverrides): Promise<[string]>; @@ -220,14 +188,14 @@ export interface ERC20 extends BaseContract { transfer( to: PromiseOrValue, - amount: PromiseOrValue, + value: PromiseOrValue, overrides?: Overrides & { from?: PromiseOrValue } ): Promise; transferFrom( from: PromiseOrValue, to: PromiseOrValue, - amount: PromiseOrValue, + value: PromiseOrValue, overrides?: Overrides & { from?: PromiseOrValue } ): Promise; }; @@ -240,7 +208,7 @@ export interface ERC20 extends BaseContract { approve( spender: PromiseOrValue, - amount: PromiseOrValue, + value: PromiseOrValue, overrides?: Overrides & { from?: PromiseOrValue } ): Promise; @@ -251,18 +219,6 @@ export interface ERC20 extends BaseContract { decimals(overrides?: CallOverrides): Promise; - decreaseAllowance( - spender: PromiseOrValue, - subtractedValue: PromiseOrValue, - overrides?: Overrides & { from?: PromiseOrValue } - ): Promise; - - increaseAllowance( - spender: PromiseOrValue, - addedValue: PromiseOrValue, - overrides?: Overrides & { from?: PromiseOrValue } - ): Promise; - name(overrides?: CallOverrides): Promise; symbol(overrides?: CallOverrides): Promise; @@ -271,14 +227,14 @@ export interface ERC20 extends BaseContract { transfer( to: PromiseOrValue, - amount: PromiseOrValue, + value: PromiseOrValue, overrides?: Overrides & { from?: PromiseOrValue } ): Promise; transferFrom( from: PromiseOrValue, to: PromiseOrValue, - amount: PromiseOrValue, + value: PromiseOrValue, overrides?: Overrides & { from?: PromiseOrValue } ): Promise; @@ -291,7 +247,7 @@ export interface ERC20 extends BaseContract { approve( spender: PromiseOrValue, - amount: PromiseOrValue, + value: PromiseOrValue, overrides?: CallOverrides ): Promise; @@ -302,18 +258,6 @@ export interface ERC20 extends BaseContract { decimals(overrides?: CallOverrides): Promise; - decreaseAllowance( - spender: PromiseOrValue, - subtractedValue: PromiseOrValue, - overrides?: CallOverrides - ): Promise; - - increaseAllowance( - spender: PromiseOrValue, - addedValue: PromiseOrValue, - overrides?: CallOverrides - ): Promise; - name(overrides?: CallOverrides): Promise; symbol(overrides?: CallOverrides): Promise; @@ -322,14 +266,14 @@ export interface ERC20 extends BaseContract { transfer( to: PromiseOrValue, - amount: PromiseOrValue, + value: PromiseOrValue, overrides?: CallOverrides ): Promise; transferFrom( from: PromiseOrValue, to: PromiseOrValue, - amount: PromiseOrValue, + value: PromiseOrValue, overrides?: CallOverrides ): Promise; }; @@ -367,7 +311,7 @@ export interface ERC20 extends BaseContract { approve( spender: PromiseOrValue, - amount: PromiseOrValue, + value: PromiseOrValue, overrides?: Overrides & { from?: PromiseOrValue } ): Promise; @@ -378,18 +322,6 @@ export interface ERC20 extends BaseContract { decimals(overrides?: CallOverrides): Promise; - decreaseAllowance( - spender: PromiseOrValue, - subtractedValue: PromiseOrValue, - overrides?: Overrides & { from?: PromiseOrValue } - ): Promise; - - increaseAllowance( - spender: PromiseOrValue, - addedValue: PromiseOrValue, - overrides?: Overrides & { from?: PromiseOrValue } - ): Promise; - name(overrides?: CallOverrides): Promise; symbol(overrides?: CallOverrides): Promise; @@ -398,14 +330,14 @@ export interface ERC20 extends BaseContract { transfer( to: PromiseOrValue, - amount: PromiseOrValue, + value: PromiseOrValue, overrides?: Overrides & { from?: PromiseOrValue } ): Promise; transferFrom( from: PromiseOrValue, to: PromiseOrValue, - amount: PromiseOrValue, + value: PromiseOrValue, overrides?: Overrides & { from?: PromiseOrValue } ): Promise; }; @@ -419,7 +351,7 @@ export interface ERC20 extends BaseContract { approve( spender: PromiseOrValue, - amount: PromiseOrValue, + value: PromiseOrValue, overrides?: Overrides & { from?: PromiseOrValue } ): Promise; @@ -430,18 +362,6 @@ export interface ERC20 extends BaseContract { decimals(overrides?: CallOverrides): Promise; - decreaseAllowance( - spender: PromiseOrValue, - subtractedValue: PromiseOrValue, - overrides?: Overrides & { from?: PromiseOrValue } - ): Promise; - - increaseAllowance( - spender: PromiseOrValue, - addedValue: PromiseOrValue, - overrides?: Overrides & { from?: PromiseOrValue } - ): Promise; - name(overrides?: CallOverrides): Promise; symbol(overrides?: CallOverrides): Promise; @@ -450,14 +370,14 @@ export interface ERC20 extends BaseContract { transfer( to: PromiseOrValue, - amount: PromiseOrValue, + value: PromiseOrValue, overrides?: Overrides & { from?: PromiseOrValue } ): Promise; transferFrom( from: PromiseOrValue, to: PromiseOrValue, - amount: PromiseOrValue, + value: PromiseOrValue, overrides?: Overrides & { from?: PromiseOrValue } ): Promise; }; diff --git a/typechain-types/@openzeppelin/contracts/token/ERC20/IERC20.ts b/typechain-types/@openzeppelin/contracts/token/ERC20/IERC20.ts index e99e80b8..2057fc6a 100644 --- a/typechain-types/@openzeppelin/contracts/token/ERC20/IERC20.ts +++ b/typechain-types/@openzeppelin/contracts/token/ERC20/IERC20.ts @@ -157,7 +157,7 @@ export interface IERC20 extends BaseContract { approve( spender: PromiseOrValue, - amount: PromiseOrValue, + value: PromiseOrValue, overrides?: Overrides & { from?: PromiseOrValue } ): Promise; @@ -170,14 +170,14 @@ export interface IERC20 extends BaseContract { transfer( to: PromiseOrValue, - amount: PromiseOrValue, + value: PromiseOrValue, overrides?: Overrides & { from?: PromiseOrValue } ): Promise; transferFrom( from: PromiseOrValue, to: PromiseOrValue, - amount: PromiseOrValue, + value: PromiseOrValue, overrides?: Overrides & { from?: PromiseOrValue } ): Promise; }; @@ -190,7 +190,7 @@ export interface IERC20 extends BaseContract { approve( spender: PromiseOrValue, - amount: PromiseOrValue, + value: PromiseOrValue, overrides?: Overrides & { from?: PromiseOrValue } ): Promise; @@ -203,14 +203,14 @@ export interface IERC20 extends BaseContract { transfer( to: PromiseOrValue, - amount: PromiseOrValue, + value: PromiseOrValue, overrides?: Overrides & { from?: PromiseOrValue } ): Promise; transferFrom( from: PromiseOrValue, to: PromiseOrValue, - amount: PromiseOrValue, + value: PromiseOrValue, overrides?: Overrides & { from?: PromiseOrValue } ): Promise; @@ -223,7 +223,7 @@ export interface IERC20 extends BaseContract { approve( spender: PromiseOrValue, - amount: PromiseOrValue, + value: PromiseOrValue, overrides?: CallOverrides ): Promise; @@ -236,14 +236,14 @@ export interface IERC20 extends BaseContract { transfer( to: PromiseOrValue, - amount: PromiseOrValue, + value: PromiseOrValue, overrides?: CallOverrides ): Promise; transferFrom( from: PromiseOrValue, to: PromiseOrValue, - amount: PromiseOrValue, + value: PromiseOrValue, overrides?: CallOverrides ): Promise; }; @@ -281,7 +281,7 @@ export interface IERC20 extends BaseContract { approve( spender: PromiseOrValue, - amount: PromiseOrValue, + value: PromiseOrValue, overrides?: Overrides & { from?: PromiseOrValue } ): Promise; @@ -294,14 +294,14 @@ export interface IERC20 extends BaseContract { transfer( to: PromiseOrValue, - amount: PromiseOrValue, + value: PromiseOrValue, overrides?: Overrides & { from?: PromiseOrValue } ): Promise; transferFrom( from: PromiseOrValue, to: PromiseOrValue, - amount: PromiseOrValue, + value: PromiseOrValue, overrides?: Overrides & { from?: PromiseOrValue } ): Promise; }; @@ -315,7 +315,7 @@ export interface IERC20 extends BaseContract { approve( spender: PromiseOrValue, - amount: PromiseOrValue, + value: PromiseOrValue, overrides?: Overrides & { from?: PromiseOrValue } ): Promise; @@ -328,14 +328,14 @@ export interface IERC20 extends BaseContract { transfer( to: PromiseOrValue, - amount: PromiseOrValue, + value: PromiseOrValue, overrides?: Overrides & { from?: PromiseOrValue } ): Promise; transferFrom( from: PromiseOrValue, to: PromiseOrValue, - amount: PromiseOrValue, + value: PromiseOrValue, overrides?: Overrides & { from?: PromiseOrValue } ): Promise; }; diff --git a/typechain-types/@openzeppelin/contracts/token/ERC20/extensions/IERC20Metadata.ts b/typechain-types/@openzeppelin/contracts/token/ERC20/extensions/IERC20Metadata.ts index 7a94b724..5dfaa60a 100644 --- a/typechain-types/@openzeppelin/contracts/token/ERC20/extensions/IERC20Metadata.ts +++ b/typechain-types/@openzeppelin/contracts/token/ERC20/extensions/IERC20Metadata.ts @@ -169,7 +169,7 @@ export interface IERC20Metadata extends BaseContract { approve( spender: PromiseOrValue, - amount: PromiseOrValue, + value: PromiseOrValue, overrides?: Overrides & { from?: PromiseOrValue } ): Promise; @@ -188,14 +188,14 @@ export interface IERC20Metadata extends BaseContract { transfer( to: PromiseOrValue, - amount: PromiseOrValue, + value: PromiseOrValue, overrides?: Overrides & { from?: PromiseOrValue } ): Promise; transferFrom( from: PromiseOrValue, to: PromiseOrValue, - amount: PromiseOrValue, + value: PromiseOrValue, overrides?: Overrides & { from?: PromiseOrValue } ): Promise; }; @@ -208,7 +208,7 @@ export interface IERC20Metadata extends BaseContract { approve( spender: PromiseOrValue, - amount: PromiseOrValue, + value: PromiseOrValue, overrides?: Overrides & { from?: PromiseOrValue } ): Promise; @@ -227,14 +227,14 @@ export interface IERC20Metadata extends BaseContract { transfer( to: PromiseOrValue, - amount: PromiseOrValue, + value: PromiseOrValue, overrides?: Overrides & { from?: PromiseOrValue } ): Promise; transferFrom( from: PromiseOrValue, to: PromiseOrValue, - amount: PromiseOrValue, + value: PromiseOrValue, overrides?: Overrides & { from?: PromiseOrValue } ): Promise; @@ -247,7 +247,7 @@ export interface IERC20Metadata extends BaseContract { approve( spender: PromiseOrValue, - amount: PromiseOrValue, + value: PromiseOrValue, overrides?: CallOverrides ): Promise; @@ -266,14 +266,14 @@ export interface IERC20Metadata extends BaseContract { transfer( to: PromiseOrValue, - amount: PromiseOrValue, + value: PromiseOrValue, overrides?: CallOverrides ): Promise; transferFrom( from: PromiseOrValue, to: PromiseOrValue, - amount: PromiseOrValue, + value: PromiseOrValue, overrides?: CallOverrides ): Promise; }; @@ -311,7 +311,7 @@ export interface IERC20Metadata extends BaseContract { approve( spender: PromiseOrValue, - amount: PromiseOrValue, + value: PromiseOrValue, overrides?: Overrides & { from?: PromiseOrValue } ): Promise; @@ -330,14 +330,14 @@ export interface IERC20Metadata extends BaseContract { transfer( to: PromiseOrValue, - amount: PromiseOrValue, + value: PromiseOrValue, overrides?: Overrides & { from?: PromiseOrValue } ): Promise; transferFrom( from: PromiseOrValue, to: PromiseOrValue, - amount: PromiseOrValue, + value: PromiseOrValue, overrides?: Overrides & { from?: PromiseOrValue } ): Promise; }; @@ -351,7 +351,7 @@ export interface IERC20Metadata extends BaseContract { approve( spender: PromiseOrValue, - amount: PromiseOrValue, + value: PromiseOrValue, overrides?: Overrides & { from?: PromiseOrValue } ): Promise; @@ -370,14 +370,14 @@ export interface IERC20Metadata extends BaseContract { transfer( to: PromiseOrValue, - amount: PromiseOrValue, + value: PromiseOrValue, overrides?: Overrides & { from?: PromiseOrValue } ): Promise; transferFrom( from: PromiseOrValue, to: PromiseOrValue, - amount: PromiseOrValue, + value: PromiseOrValue, overrides?: Overrides & { from?: PromiseOrValue } ): Promise; }; diff --git a/typechain-types/@zetachain/protocol-contracts/contracts/evm/interfaces/ZetaInterfaces.sol/ZetaConnector.ts b/typechain-types/@zetachain/protocol-contracts/contracts/Revert.sol/Revertable.ts similarity index 56% rename from typechain-types/@zetachain/protocol-contracts/contracts/evm/interfaces/ZetaInterfaces.sol/ZetaConnector.ts rename to typechain-types/@zetachain/protocol-contracts/contracts/Revert.sol/Revertable.ts index 5f03a7a0..e5927d7b 100644 --- a/typechain-types/@zetachain/protocol-contracts/contracts/evm/interfaces/ZetaInterfaces.sol/ZetaConnector.ts +++ b/typechain-types/@zetachain/protocol-contracts/contracts/Revert.sol/Revertable.ts @@ -21,58 +21,45 @@ import type { TypedListener, OnEvent, PromiseOrValue, -} from "../../../../../../common"; - -export declare namespace ZetaInterfaces { - export type SendInputStruct = { - destinationChainId: PromiseOrValue; - destinationAddress: PromiseOrValue; - destinationGasLimit: PromiseOrValue; - message: PromiseOrValue; - zetaValueAndGas: PromiseOrValue; - zetaParams: PromiseOrValue; - }; - - export type SendInputStructOutput = [ - BigNumber, - string, - BigNumber, - string, - BigNumber, - string - ] & { - destinationChainId: BigNumber; - destinationAddress: string; - destinationGasLimit: BigNumber; - message: string; - zetaValueAndGas: BigNumber; - zetaParams: string; - }; -} - -export interface ZetaConnectorInterface extends utils.Interface { +} from "../../../../common"; + +export type RevertContextStruct = { + sender: PromiseOrValue; + asset: PromiseOrValue; + amount: PromiseOrValue; + revertMessage: PromiseOrValue; +}; + +export type RevertContextStructOutput = [string, string, BigNumber, string] & { + sender: string; + asset: string; + amount: BigNumber; + revertMessage: string; +}; + +export interface RevertableInterface extends utils.Interface { functions: { - "send((uint256,bytes,uint256,bytes,uint256,bytes))": FunctionFragment; + "onRevert((address,address,uint256,bytes))": FunctionFragment; }; - getFunction(nameOrSignatureOrTopic: "send"): FunctionFragment; + getFunction(nameOrSignatureOrTopic: "onRevert"): FunctionFragment; encodeFunctionData( - functionFragment: "send", - values: [ZetaInterfaces.SendInputStruct] + functionFragment: "onRevert", + values: [RevertContextStruct] ): string; - decodeFunctionResult(functionFragment: "send", data: BytesLike): Result; + decodeFunctionResult(functionFragment: "onRevert", data: BytesLike): Result; events: {}; } -export interface ZetaConnector extends BaseContract { +export interface Revertable extends BaseContract { connect(signerOrProvider: Signer | Provider | string): this; attach(addressOrName: string): this; deployed(): Promise; - interface: ZetaConnectorInterface; + interface: RevertableInterface; queryFilter( event: TypedEventFilter, @@ -94,20 +81,20 @@ export interface ZetaConnector extends BaseContract { removeListener: OnEvent; functions: { - send( - input: ZetaInterfaces.SendInputStruct, + onRevert( + revertContext: RevertContextStruct, overrides?: Overrides & { from?: PromiseOrValue } ): Promise; }; - send( - input: ZetaInterfaces.SendInputStruct, + onRevert( + revertContext: RevertContextStruct, overrides?: Overrides & { from?: PromiseOrValue } ): Promise; callStatic: { - send( - input: ZetaInterfaces.SendInputStruct, + onRevert( + revertContext: RevertContextStruct, overrides?: CallOverrides ): Promise; }; @@ -115,15 +102,15 @@ export interface ZetaConnector extends BaseContract { filters: {}; estimateGas: { - send( - input: ZetaInterfaces.SendInputStruct, + onRevert( + revertContext: RevertContextStruct, overrides?: Overrides & { from?: PromiseOrValue } ): Promise; }; populateTransaction: { - send( - input: ZetaInterfaces.SendInputStruct, + onRevert( + revertContext: RevertContextStruct, overrides?: Overrides & { from?: PromiseOrValue } ): Promise; }; diff --git a/typechain-types/factories/@zetachain/protocol-contracts/contracts/evm/index.ts b/typechain-types/@zetachain/protocol-contracts/contracts/Revert.sol/index.ts similarity index 65% rename from typechain-types/factories/@zetachain/protocol-contracts/contracts/evm/index.ts rename to typechain-types/@zetachain/protocol-contracts/contracts/Revert.sol/index.ts index 1d3444d5..12a1db84 100644 --- a/typechain-types/factories/@zetachain/protocol-contracts/contracts/evm/index.ts +++ b/typechain-types/@zetachain/protocol-contracts/contracts/Revert.sol/index.ts @@ -1,4 +1,4 @@ /* Autogenerated file. Do not edit manually. */ /* tslint:disable */ /* eslint-disable */ -export * as interfaces from "./interfaces"; +export type { Revertable } from "./Revertable"; diff --git a/typechain-types/@zetachain/protocol-contracts/contracts/evm/index.ts b/typechain-types/@zetachain/protocol-contracts/contracts/evm/index.ts deleted file mode 100644 index 92159233..00000000 --- a/typechain-types/@zetachain/protocol-contracts/contracts/evm/index.ts +++ /dev/null @@ -1,5 +0,0 @@ -/* Autogenerated file. Do not edit manually. */ -/* tslint:disable */ -/* eslint-disable */ -import type * as interfaces from "./interfaces"; -export type { interfaces }; diff --git a/typechain-types/@zetachain/protocol-contracts/contracts/evm/interfaces/ZetaInterfaces.sol/ZetaReceiver.ts b/typechain-types/@zetachain/protocol-contracts/contracts/evm/interfaces/ZetaInterfaces.sol/ZetaReceiver.ts deleted file mode 100644 index aebb6039..00000000 --- a/typechain-types/@zetachain/protocol-contracts/contracts/evm/interfaces/ZetaInterfaces.sol/ZetaReceiver.ts +++ /dev/null @@ -1,191 +0,0 @@ -/* Autogenerated file. Do not edit manually. */ -/* tslint:disable */ -/* eslint-disable */ -import type { - BaseContract, - BigNumber, - BigNumberish, - BytesLike, - CallOverrides, - ContractTransaction, - Overrides, - PopulatedTransaction, - Signer, - utils, -} from "ethers"; -import type { FunctionFragment, Result } from "@ethersproject/abi"; -import type { Listener, Provider } from "@ethersproject/providers"; -import type { - TypedEventFilter, - TypedEvent, - TypedListener, - OnEvent, - PromiseOrValue, -} from "../../../../../../common"; - -export declare namespace ZetaInterfaces { - export type ZetaMessageStruct = { - zetaTxSenderAddress: PromiseOrValue; - sourceChainId: PromiseOrValue; - destinationAddress: PromiseOrValue; - zetaValue: PromiseOrValue; - message: PromiseOrValue; - }; - - export type ZetaMessageStructOutput = [ - string, - BigNumber, - string, - BigNumber, - string - ] & { - zetaTxSenderAddress: string; - sourceChainId: BigNumber; - destinationAddress: string; - zetaValue: BigNumber; - message: string; - }; - - export type ZetaRevertStruct = { - zetaTxSenderAddress: PromiseOrValue; - sourceChainId: PromiseOrValue; - destinationAddress: PromiseOrValue; - destinationChainId: PromiseOrValue; - remainingZetaValue: PromiseOrValue; - message: PromiseOrValue; - }; - - export type ZetaRevertStructOutput = [ - string, - BigNumber, - string, - BigNumber, - BigNumber, - string - ] & { - zetaTxSenderAddress: string; - sourceChainId: BigNumber; - destinationAddress: string; - destinationChainId: BigNumber; - remainingZetaValue: BigNumber; - message: string; - }; -} - -export interface ZetaReceiverInterface extends utils.Interface { - functions: { - "onZetaMessage((bytes,uint256,address,uint256,bytes))": FunctionFragment; - "onZetaRevert((address,uint256,bytes,uint256,uint256,bytes))": FunctionFragment; - }; - - getFunction( - nameOrSignatureOrTopic: "onZetaMessage" | "onZetaRevert" - ): FunctionFragment; - - encodeFunctionData( - functionFragment: "onZetaMessage", - values: [ZetaInterfaces.ZetaMessageStruct] - ): string; - encodeFunctionData( - functionFragment: "onZetaRevert", - values: [ZetaInterfaces.ZetaRevertStruct] - ): string; - - decodeFunctionResult( - functionFragment: "onZetaMessage", - data: BytesLike - ): Result; - decodeFunctionResult( - functionFragment: "onZetaRevert", - data: BytesLike - ): Result; - - events: {}; -} - -export interface ZetaReceiver extends BaseContract { - connect(signerOrProvider: Signer | Provider | string): this; - attach(addressOrName: string): this; - deployed(): Promise; - - interface: ZetaReceiverInterface; - - queryFilter( - event: TypedEventFilter, - fromBlockOrBlockhash?: string | number | undefined, - toBlock?: string | number | undefined - ): Promise>; - - listeners( - eventFilter?: TypedEventFilter - ): Array>; - listeners(eventName?: string): Array; - removeAllListeners( - eventFilter: TypedEventFilter - ): this; - removeAllListeners(eventName?: string): this; - off: OnEvent; - on: OnEvent; - once: OnEvent; - removeListener: OnEvent; - - functions: { - onZetaMessage( - zetaMessage: ZetaInterfaces.ZetaMessageStruct, - overrides?: Overrides & { from?: PromiseOrValue } - ): Promise; - - onZetaRevert( - zetaRevert: ZetaInterfaces.ZetaRevertStruct, - overrides?: Overrides & { from?: PromiseOrValue } - ): Promise; - }; - - onZetaMessage( - zetaMessage: ZetaInterfaces.ZetaMessageStruct, - overrides?: Overrides & { from?: PromiseOrValue } - ): Promise; - - onZetaRevert( - zetaRevert: ZetaInterfaces.ZetaRevertStruct, - overrides?: Overrides & { from?: PromiseOrValue } - ): Promise; - - callStatic: { - onZetaMessage( - zetaMessage: ZetaInterfaces.ZetaMessageStruct, - overrides?: CallOverrides - ): Promise; - - onZetaRevert( - zetaRevert: ZetaInterfaces.ZetaRevertStruct, - overrides?: CallOverrides - ): Promise; - }; - - filters: {}; - - estimateGas: { - onZetaMessage( - zetaMessage: ZetaInterfaces.ZetaMessageStruct, - overrides?: Overrides & { from?: PromiseOrValue } - ): Promise; - - onZetaRevert( - zetaRevert: ZetaInterfaces.ZetaRevertStruct, - overrides?: Overrides & { from?: PromiseOrValue } - ): Promise; - }; - - populateTransaction: { - onZetaMessage( - zetaMessage: ZetaInterfaces.ZetaMessageStruct, - overrides?: Overrides & { from?: PromiseOrValue } - ): Promise; - - onZetaRevert( - zetaRevert: ZetaInterfaces.ZetaRevertStruct, - overrides?: Overrides & { from?: PromiseOrValue } - ): Promise; - }; -} diff --git a/typechain-types/@zetachain/protocol-contracts/contracts/evm/interfaces/ZetaInterfaces.sol/ZetaTokenConsumer.ts b/typechain-types/@zetachain/protocol-contracts/contracts/evm/interfaces/ZetaInterfaces.sol/ZetaTokenConsumer.ts deleted file mode 100644 index dfefdbf8..00000000 --- a/typechain-types/@zetachain/protocol-contracts/contracts/evm/interfaces/ZetaInterfaces.sol/ZetaTokenConsumer.ts +++ /dev/null @@ -1,398 +0,0 @@ -/* Autogenerated file. Do not edit manually. */ -/* tslint:disable */ -/* eslint-disable */ -import type { - BaseContract, - BigNumber, - BigNumberish, - BytesLike, - CallOverrides, - ContractTransaction, - Overrides, - PayableOverrides, - PopulatedTransaction, - Signer, - utils, -} from "ethers"; -import type { - FunctionFragment, - Result, - EventFragment, -} from "@ethersproject/abi"; -import type { Listener, Provider } from "@ethersproject/providers"; -import type { - TypedEventFilter, - TypedEvent, - TypedListener, - OnEvent, - PromiseOrValue, -} from "../../../../../../common"; - -export interface ZetaTokenConsumerInterface extends utils.Interface { - functions: { - "getEthFromZeta(address,uint256,uint256)": FunctionFragment; - "getTokenFromZeta(address,uint256,address,uint256)": FunctionFragment; - "getZetaFromEth(address,uint256)": FunctionFragment; - "getZetaFromToken(address,uint256,address,uint256)": FunctionFragment; - "hasZetaLiquidity()": FunctionFragment; - }; - - getFunction( - nameOrSignatureOrTopic: - | "getEthFromZeta" - | "getTokenFromZeta" - | "getZetaFromEth" - | "getZetaFromToken" - | "hasZetaLiquidity" - ): FunctionFragment; - - encodeFunctionData( - functionFragment: "getEthFromZeta", - values: [ - PromiseOrValue, - PromiseOrValue, - PromiseOrValue - ] - ): string; - encodeFunctionData( - functionFragment: "getTokenFromZeta", - values: [ - PromiseOrValue, - PromiseOrValue, - PromiseOrValue, - PromiseOrValue - ] - ): string; - encodeFunctionData( - functionFragment: "getZetaFromEth", - values: [PromiseOrValue, PromiseOrValue] - ): string; - encodeFunctionData( - functionFragment: "getZetaFromToken", - values: [ - PromiseOrValue, - PromiseOrValue, - PromiseOrValue, - PromiseOrValue - ] - ): string; - encodeFunctionData( - functionFragment: "hasZetaLiquidity", - values?: undefined - ): string; - - decodeFunctionResult( - functionFragment: "getEthFromZeta", - data: BytesLike - ): Result; - decodeFunctionResult( - functionFragment: "getTokenFromZeta", - data: BytesLike - ): Result; - decodeFunctionResult( - functionFragment: "getZetaFromEth", - data: BytesLike - ): Result; - decodeFunctionResult( - functionFragment: "getZetaFromToken", - data: BytesLike - ): Result; - decodeFunctionResult( - functionFragment: "hasZetaLiquidity", - data: BytesLike - ): Result; - - events: { - "EthExchangedForZeta(uint256,uint256)": EventFragment; - "TokenExchangedForZeta(address,uint256,uint256)": EventFragment; - "ZetaExchangedForEth(uint256,uint256)": EventFragment; - "ZetaExchangedForToken(address,uint256,uint256)": EventFragment; - }; - - getEvent(nameOrSignatureOrTopic: "EthExchangedForZeta"): EventFragment; - getEvent(nameOrSignatureOrTopic: "TokenExchangedForZeta"): EventFragment; - getEvent(nameOrSignatureOrTopic: "ZetaExchangedForEth"): EventFragment; - getEvent(nameOrSignatureOrTopic: "ZetaExchangedForToken"): EventFragment; -} - -export interface EthExchangedForZetaEventObject { - amountIn: BigNumber; - amountOut: BigNumber; -} -export type EthExchangedForZetaEvent = TypedEvent< - [BigNumber, BigNumber], - EthExchangedForZetaEventObject ->; - -export type EthExchangedForZetaEventFilter = - TypedEventFilter; - -export interface TokenExchangedForZetaEventObject { - token: string; - amountIn: BigNumber; - amountOut: BigNumber; -} -export type TokenExchangedForZetaEvent = TypedEvent< - [string, BigNumber, BigNumber], - TokenExchangedForZetaEventObject ->; - -export type TokenExchangedForZetaEventFilter = - TypedEventFilter; - -export interface ZetaExchangedForEthEventObject { - amountIn: BigNumber; - amountOut: BigNumber; -} -export type ZetaExchangedForEthEvent = TypedEvent< - [BigNumber, BigNumber], - ZetaExchangedForEthEventObject ->; - -export type ZetaExchangedForEthEventFilter = - TypedEventFilter; - -export interface ZetaExchangedForTokenEventObject { - token: string; - amountIn: BigNumber; - amountOut: BigNumber; -} -export type ZetaExchangedForTokenEvent = TypedEvent< - [string, BigNumber, BigNumber], - ZetaExchangedForTokenEventObject ->; - -export type ZetaExchangedForTokenEventFilter = - TypedEventFilter; - -export interface ZetaTokenConsumer extends BaseContract { - connect(signerOrProvider: Signer | Provider | string): this; - attach(addressOrName: string): this; - deployed(): Promise; - - interface: ZetaTokenConsumerInterface; - - queryFilter( - event: TypedEventFilter, - fromBlockOrBlockhash?: string | number | undefined, - toBlock?: string | number | undefined - ): Promise>; - - listeners( - eventFilter?: TypedEventFilter - ): Array>; - listeners(eventName?: string): Array; - removeAllListeners( - eventFilter: TypedEventFilter - ): this; - removeAllListeners(eventName?: string): this; - off: OnEvent; - on: OnEvent; - once: OnEvent; - removeListener: OnEvent; - - functions: { - getEthFromZeta( - destinationAddress: PromiseOrValue, - minAmountOut: PromiseOrValue, - zetaTokenAmount: PromiseOrValue, - overrides?: Overrides & { from?: PromiseOrValue } - ): Promise; - - getTokenFromZeta( - destinationAddress: PromiseOrValue, - minAmountOut: PromiseOrValue, - outputToken: PromiseOrValue, - zetaTokenAmount: PromiseOrValue, - overrides?: Overrides & { from?: PromiseOrValue } - ): Promise; - - getZetaFromEth( - destinationAddress: PromiseOrValue, - minAmountOut: PromiseOrValue, - overrides?: PayableOverrides & { from?: PromiseOrValue } - ): Promise; - - getZetaFromToken( - destinationAddress: PromiseOrValue, - minAmountOut: PromiseOrValue, - inputToken: PromiseOrValue, - inputTokenAmount: PromiseOrValue, - overrides?: Overrides & { from?: PromiseOrValue } - ): Promise; - - hasZetaLiquidity(overrides?: CallOverrides): Promise<[boolean]>; - }; - - getEthFromZeta( - destinationAddress: PromiseOrValue, - minAmountOut: PromiseOrValue, - zetaTokenAmount: PromiseOrValue, - overrides?: Overrides & { from?: PromiseOrValue } - ): Promise; - - getTokenFromZeta( - destinationAddress: PromiseOrValue, - minAmountOut: PromiseOrValue, - outputToken: PromiseOrValue, - zetaTokenAmount: PromiseOrValue, - overrides?: Overrides & { from?: PromiseOrValue } - ): Promise; - - getZetaFromEth( - destinationAddress: PromiseOrValue, - minAmountOut: PromiseOrValue, - overrides?: PayableOverrides & { from?: PromiseOrValue } - ): Promise; - - getZetaFromToken( - destinationAddress: PromiseOrValue, - minAmountOut: PromiseOrValue, - inputToken: PromiseOrValue, - inputTokenAmount: PromiseOrValue, - overrides?: Overrides & { from?: PromiseOrValue } - ): Promise; - - hasZetaLiquidity(overrides?: CallOverrides): Promise; - - callStatic: { - getEthFromZeta( - destinationAddress: PromiseOrValue, - minAmountOut: PromiseOrValue, - zetaTokenAmount: PromiseOrValue, - overrides?: CallOverrides - ): Promise; - - getTokenFromZeta( - destinationAddress: PromiseOrValue, - minAmountOut: PromiseOrValue, - outputToken: PromiseOrValue, - zetaTokenAmount: PromiseOrValue, - overrides?: CallOverrides - ): Promise; - - getZetaFromEth( - destinationAddress: PromiseOrValue, - minAmountOut: PromiseOrValue, - overrides?: CallOverrides - ): Promise; - - getZetaFromToken( - destinationAddress: PromiseOrValue, - minAmountOut: PromiseOrValue, - inputToken: PromiseOrValue, - inputTokenAmount: PromiseOrValue, - overrides?: CallOverrides - ): Promise; - - hasZetaLiquidity(overrides?: CallOverrides): Promise; - }; - - filters: { - "EthExchangedForZeta(uint256,uint256)"( - amountIn?: null, - amountOut?: null - ): EthExchangedForZetaEventFilter; - EthExchangedForZeta( - amountIn?: null, - amountOut?: null - ): EthExchangedForZetaEventFilter; - - "TokenExchangedForZeta(address,uint256,uint256)"( - token?: null, - amountIn?: null, - amountOut?: null - ): TokenExchangedForZetaEventFilter; - TokenExchangedForZeta( - token?: null, - amountIn?: null, - amountOut?: null - ): TokenExchangedForZetaEventFilter; - - "ZetaExchangedForEth(uint256,uint256)"( - amountIn?: null, - amountOut?: null - ): ZetaExchangedForEthEventFilter; - ZetaExchangedForEth( - amountIn?: null, - amountOut?: null - ): ZetaExchangedForEthEventFilter; - - "ZetaExchangedForToken(address,uint256,uint256)"( - token?: null, - amountIn?: null, - amountOut?: null - ): ZetaExchangedForTokenEventFilter; - ZetaExchangedForToken( - token?: null, - amountIn?: null, - amountOut?: null - ): ZetaExchangedForTokenEventFilter; - }; - - estimateGas: { - getEthFromZeta( - destinationAddress: PromiseOrValue, - minAmountOut: PromiseOrValue, - zetaTokenAmount: PromiseOrValue, - overrides?: Overrides & { from?: PromiseOrValue } - ): Promise; - - getTokenFromZeta( - destinationAddress: PromiseOrValue, - minAmountOut: PromiseOrValue, - outputToken: PromiseOrValue, - zetaTokenAmount: PromiseOrValue, - overrides?: Overrides & { from?: PromiseOrValue } - ): Promise; - - getZetaFromEth( - destinationAddress: PromiseOrValue, - minAmountOut: PromiseOrValue, - overrides?: PayableOverrides & { from?: PromiseOrValue } - ): Promise; - - getZetaFromToken( - destinationAddress: PromiseOrValue, - minAmountOut: PromiseOrValue, - inputToken: PromiseOrValue, - inputTokenAmount: PromiseOrValue, - overrides?: Overrides & { from?: PromiseOrValue } - ): Promise; - - hasZetaLiquidity(overrides?: CallOverrides): Promise; - }; - - populateTransaction: { - getEthFromZeta( - destinationAddress: PromiseOrValue, - minAmountOut: PromiseOrValue, - zetaTokenAmount: PromiseOrValue, - overrides?: Overrides & { from?: PromiseOrValue } - ): Promise; - - getTokenFromZeta( - destinationAddress: PromiseOrValue, - minAmountOut: PromiseOrValue, - outputToken: PromiseOrValue, - zetaTokenAmount: PromiseOrValue, - overrides?: Overrides & { from?: PromiseOrValue } - ): Promise; - - getZetaFromEth( - destinationAddress: PromiseOrValue, - minAmountOut: PromiseOrValue, - overrides?: PayableOverrides & { from?: PromiseOrValue } - ): Promise; - - getZetaFromToken( - destinationAddress: PromiseOrValue, - minAmountOut: PromiseOrValue, - inputToken: PromiseOrValue, - inputTokenAmount: PromiseOrValue, - overrides?: Overrides & { from?: PromiseOrValue } - ): Promise; - - hasZetaLiquidity(overrides?: CallOverrides): Promise; - }; -} diff --git a/typechain-types/@zetachain/protocol-contracts/contracts/evm/interfaces/ZetaInterfaces.sol/index.ts b/typechain-types/@zetachain/protocol-contracts/contracts/evm/interfaces/ZetaInterfaces.sol/index.ts deleted file mode 100644 index a4f4c2aa..00000000 --- a/typechain-types/@zetachain/protocol-contracts/contracts/evm/interfaces/ZetaInterfaces.sol/index.ts +++ /dev/null @@ -1,7 +0,0 @@ -/* Autogenerated file. Do not edit manually. */ -/* tslint:disable */ -/* eslint-disable */ -export type { ZetaCommonErrors } from "./ZetaCommonErrors"; -export type { ZetaConnector } from "./ZetaConnector"; -export type { ZetaReceiver } from "./ZetaReceiver"; -export type { ZetaTokenConsumer } from "./ZetaTokenConsumer"; diff --git a/typechain-types/@zetachain/protocol-contracts/contracts/evm/interfaces/index.ts b/typechain-types/@zetachain/protocol-contracts/contracts/evm/interfaces/index.ts deleted file mode 100644 index 935a91ac..00000000 --- a/typechain-types/@zetachain/protocol-contracts/contracts/evm/interfaces/index.ts +++ /dev/null @@ -1,5 +0,0 @@ -/* Autogenerated file. Do not edit manually. */ -/* tslint:disable */ -/* eslint-disable */ -import type * as zetaInterfacesSol from "./ZetaInterfaces.sol"; -export type { zetaInterfacesSol }; diff --git a/typechain-types/@zetachain/protocol-contracts/contracts/index.ts b/typechain-types/@zetachain/protocol-contracts/contracts/index.ts index 9efb820b..bc90612c 100644 --- a/typechain-types/@zetachain/protocol-contracts/contracts/index.ts +++ b/typechain-types/@zetachain/protocol-contracts/contracts/index.ts @@ -1,7 +1,7 @@ /* Autogenerated file. Do not edit manually. */ /* tslint:disable */ /* eslint-disable */ -import type * as evm from "./evm"; -export type { evm }; +import type * as revertSol from "./Revert.sol"; +export type { revertSol }; import type * as zevm from "./zevm"; export type { zevm }; diff --git a/typechain-types/@zetachain/protocol-contracts/contracts/zevm/interfaces/IZRC20.sol/IZRC20.ts b/typechain-types/@zetachain/protocol-contracts/contracts/zevm/interfaces/IZRC20.sol/IZRC20.ts index e21571a8..da0fd214 100644 --- a/typechain-types/@zetachain/protocol-contracts/contracts/zevm/interfaces/IZRC20.sol/IZRC20.ts +++ b/typechain-types/@zetachain/protocol-contracts/contracts/zevm/interfaces/IZRC20.sol/IZRC20.ts @@ -25,34 +25,43 @@ import type { export interface IZRC20Interface extends utils.Interface { functions: { + "GAS_LIMIT()": FunctionFragment; "PROTOCOL_FLAT_FEE()": FunctionFragment; "allowance(address,address)": FunctionFragment; "approve(address,uint256)": FunctionFragment; "balanceOf(address)": FunctionFragment; "burn(uint256)": FunctionFragment; "deposit(address,uint256)": FunctionFragment; + "setName(string)": FunctionFragment; + "setSymbol(string)": FunctionFragment; "totalSupply()": FunctionFragment; "transfer(address,uint256)": FunctionFragment; "transferFrom(address,address,uint256)": FunctionFragment; "withdraw(bytes,uint256)": FunctionFragment; "withdrawGasFee()": FunctionFragment; + "withdrawGasFeeWithGasLimit(uint256)": FunctionFragment; }; getFunction( nameOrSignatureOrTopic: + | "GAS_LIMIT" | "PROTOCOL_FLAT_FEE" | "allowance" | "approve" | "balanceOf" | "burn" | "deposit" + | "setName" + | "setSymbol" | "totalSupply" | "transfer" | "transferFrom" | "withdraw" | "withdrawGasFee" + | "withdrawGasFeeWithGasLimit" ): FunctionFragment; + encodeFunctionData(functionFragment: "GAS_LIMIT", values?: undefined): string; encodeFunctionData( functionFragment: "PROTOCOL_FLAT_FEE", values?: undefined @@ -77,6 +86,14 @@ export interface IZRC20Interface extends utils.Interface { functionFragment: "deposit", values: [PromiseOrValue, PromiseOrValue] ): string; + encodeFunctionData( + functionFragment: "setName", + values: [PromiseOrValue] + ): string; + encodeFunctionData( + functionFragment: "setSymbol", + values: [PromiseOrValue] + ): string; encodeFunctionData( functionFragment: "totalSupply", values?: undefined @@ -101,7 +118,12 @@ export interface IZRC20Interface extends utils.Interface { functionFragment: "withdrawGasFee", values?: undefined ): string; + encodeFunctionData( + functionFragment: "withdrawGasFeeWithGasLimit", + values: [PromiseOrValue] + ): string; + decodeFunctionResult(functionFragment: "GAS_LIMIT", data: BytesLike): Result; decodeFunctionResult( functionFragment: "PROTOCOL_FLAT_FEE", data: BytesLike @@ -111,6 +133,8 @@ export interface IZRC20Interface extends utils.Interface { decodeFunctionResult(functionFragment: "balanceOf", data: BytesLike): Result; decodeFunctionResult(functionFragment: "burn", data: BytesLike): Result; decodeFunctionResult(functionFragment: "deposit", data: BytesLike): Result; + decodeFunctionResult(functionFragment: "setName", data: BytesLike): Result; + decodeFunctionResult(functionFragment: "setSymbol", data: BytesLike): Result; decodeFunctionResult( functionFragment: "totalSupply", data: BytesLike @@ -125,6 +149,10 @@ export interface IZRC20Interface extends utils.Interface { functionFragment: "withdrawGasFee", data: BytesLike ): Result; + decodeFunctionResult( + functionFragment: "withdrawGasFeeWithGasLimit", + data: BytesLike + ): Result; events: {}; } @@ -156,6 +184,8 @@ export interface IZRC20 extends BaseContract { removeListener: OnEvent; functions: { + GAS_LIMIT(overrides?: CallOverrides): Promise<[BigNumber]>; + PROTOCOL_FLAT_FEE(overrides?: CallOverrides): Promise<[BigNumber]>; allowance( @@ -186,6 +216,16 @@ export interface IZRC20 extends BaseContract { overrides?: Overrides & { from?: PromiseOrValue } ): Promise; + setName( + newName: PromiseOrValue, + overrides?: Overrides & { from?: PromiseOrValue } + ): Promise; + + setSymbol( + newSymbol: PromiseOrValue, + overrides?: Overrides & { from?: PromiseOrValue } + ): Promise; + totalSupply(overrides?: CallOverrides): Promise<[BigNumber]>; transfer( @@ -208,8 +248,15 @@ export interface IZRC20 extends BaseContract { ): Promise; withdrawGasFee(overrides?: CallOverrides): Promise<[string, BigNumber]>; + + withdrawGasFeeWithGasLimit( + gasLimit: PromiseOrValue, + overrides?: CallOverrides + ): Promise<[string, BigNumber]>; }; + GAS_LIMIT(overrides?: CallOverrides): Promise; + PROTOCOL_FLAT_FEE(overrides?: CallOverrides): Promise; allowance( @@ -240,6 +287,16 @@ export interface IZRC20 extends BaseContract { overrides?: Overrides & { from?: PromiseOrValue } ): Promise; + setName( + newName: PromiseOrValue, + overrides?: Overrides & { from?: PromiseOrValue } + ): Promise; + + setSymbol( + newSymbol: PromiseOrValue, + overrides?: Overrides & { from?: PromiseOrValue } + ): Promise; + totalSupply(overrides?: CallOverrides): Promise; transfer( @@ -263,7 +320,14 @@ export interface IZRC20 extends BaseContract { withdrawGasFee(overrides?: CallOverrides): Promise<[string, BigNumber]>; + withdrawGasFeeWithGasLimit( + gasLimit: PromiseOrValue, + overrides?: CallOverrides + ): Promise<[string, BigNumber]>; + callStatic: { + GAS_LIMIT(overrides?: CallOverrides): Promise; + PROTOCOL_FLAT_FEE(overrides?: CallOverrides): Promise; allowance( @@ -294,6 +358,16 @@ export interface IZRC20 extends BaseContract { overrides?: CallOverrides ): Promise; + setName( + newName: PromiseOrValue, + overrides?: CallOverrides + ): Promise; + + setSymbol( + newSymbol: PromiseOrValue, + overrides?: CallOverrides + ): Promise; + totalSupply(overrides?: CallOverrides): Promise; transfer( @@ -316,11 +390,18 @@ export interface IZRC20 extends BaseContract { ): Promise; withdrawGasFee(overrides?: CallOverrides): Promise<[string, BigNumber]>; + + withdrawGasFeeWithGasLimit( + gasLimit: PromiseOrValue, + overrides?: CallOverrides + ): Promise<[string, BigNumber]>; }; filters: {}; estimateGas: { + GAS_LIMIT(overrides?: CallOverrides): Promise; + PROTOCOL_FLAT_FEE(overrides?: CallOverrides): Promise; allowance( @@ -351,6 +432,16 @@ export interface IZRC20 extends BaseContract { overrides?: Overrides & { from?: PromiseOrValue } ): Promise; + setName( + newName: PromiseOrValue, + overrides?: Overrides & { from?: PromiseOrValue } + ): Promise; + + setSymbol( + newSymbol: PromiseOrValue, + overrides?: Overrides & { from?: PromiseOrValue } + ): Promise; + totalSupply(overrides?: CallOverrides): Promise; transfer( @@ -373,9 +464,16 @@ export interface IZRC20 extends BaseContract { ): Promise; withdrawGasFee(overrides?: CallOverrides): Promise; + + withdrawGasFeeWithGasLimit( + gasLimit: PromiseOrValue, + overrides?: CallOverrides + ): Promise; }; populateTransaction: { + GAS_LIMIT(overrides?: CallOverrides): Promise; + PROTOCOL_FLAT_FEE(overrides?: CallOverrides): Promise; allowance( @@ -406,6 +504,16 @@ export interface IZRC20 extends BaseContract { overrides?: Overrides & { from?: PromiseOrValue } ): Promise; + setName( + newName: PromiseOrValue, + overrides?: Overrides & { from?: PromiseOrValue } + ): Promise; + + setSymbol( + newSymbol: PromiseOrValue, + overrides?: Overrides & { from?: PromiseOrValue } + ): Promise; + totalSupply(overrides?: CallOverrides): Promise; transfer( @@ -428,5 +536,10 @@ export interface IZRC20 extends BaseContract { ): Promise; withdrawGasFee(overrides?: CallOverrides): Promise; + + withdrawGasFeeWithGasLimit( + gasLimit: PromiseOrValue, + overrides?: CallOverrides + ): Promise; }; } diff --git a/typechain-types/@zetachain/protocol-contracts/contracts/zevm/interfaces/IZRC20.sol/IZRC20Metadata.ts b/typechain-types/@zetachain/protocol-contracts/contracts/zevm/interfaces/IZRC20.sol/IZRC20Metadata.ts index 1ee53182..86b00cc3 100644 --- a/typechain-types/@zetachain/protocol-contracts/contracts/zevm/interfaces/IZRC20.sol/IZRC20Metadata.ts +++ b/typechain-types/@zetachain/protocol-contracts/contracts/zevm/interfaces/IZRC20.sol/IZRC20Metadata.ts @@ -25,6 +25,7 @@ import type { export interface IZRC20MetadataInterface extends utils.Interface { functions: { + "GAS_LIMIT()": FunctionFragment; "PROTOCOL_FLAT_FEE()": FunctionFragment; "allowance(address,address)": FunctionFragment; "approve(address,uint256)": FunctionFragment; @@ -33,16 +34,20 @@ export interface IZRC20MetadataInterface extends utils.Interface { "decimals()": FunctionFragment; "deposit(address,uint256)": FunctionFragment; "name()": FunctionFragment; + "setName(string)": FunctionFragment; + "setSymbol(string)": FunctionFragment; "symbol()": FunctionFragment; "totalSupply()": FunctionFragment; "transfer(address,uint256)": FunctionFragment; "transferFrom(address,address,uint256)": FunctionFragment; "withdraw(bytes,uint256)": FunctionFragment; "withdrawGasFee()": FunctionFragment; + "withdrawGasFeeWithGasLimit(uint256)": FunctionFragment; }; getFunction( nameOrSignatureOrTopic: + | "GAS_LIMIT" | "PROTOCOL_FLAT_FEE" | "allowance" | "approve" @@ -51,14 +56,18 @@ export interface IZRC20MetadataInterface extends utils.Interface { | "decimals" | "deposit" | "name" + | "setName" + | "setSymbol" | "symbol" | "totalSupply" | "transfer" | "transferFrom" | "withdraw" | "withdrawGasFee" + | "withdrawGasFeeWithGasLimit" ): FunctionFragment; + encodeFunctionData(functionFragment: "GAS_LIMIT", values?: undefined): string; encodeFunctionData( functionFragment: "PROTOCOL_FLAT_FEE", values?: undefined @@ -85,6 +94,14 @@ export interface IZRC20MetadataInterface extends utils.Interface { values: [PromiseOrValue, PromiseOrValue] ): string; encodeFunctionData(functionFragment: "name", values?: undefined): string; + encodeFunctionData( + functionFragment: "setName", + values: [PromiseOrValue] + ): string; + encodeFunctionData( + functionFragment: "setSymbol", + values: [PromiseOrValue] + ): string; encodeFunctionData(functionFragment: "symbol", values?: undefined): string; encodeFunctionData( functionFragment: "totalSupply", @@ -110,7 +127,12 @@ export interface IZRC20MetadataInterface extends utils.Interface { functionFragment: "withdrawGasFee", values?: undefined ): string; + encodeFunctionData( + functionFragment: "withdrawGasFeeWithGasLimit", + values: [PromiseOrValue] + ): string; + decodeFunctionResult(functionFragment: "GAS_LIMIT", data: BytesLike): Result; decodeFunctionResult( functionFragment: "PROTOCOL_FLAT_FEE", data: BytesLike @@ -122,6 +144,8 @@ export interface IZRC20MetadataInterface extends utils.Interface { decodeFunctionResult(functionFragment: "decimals", data: BytesLike): Result; decodeFunctionResult(functionFragment: "deposit", data: BytesLike): Result; decodeFunctionResult(functionFragment: "name", data: BytesLike): Result; + decodeFunctionResult(functionFragment: "setName", data: BytesLike): Result; + decodeFunctionResult(functionFragment: "setSymbol", data: BytesLike): Result; decodeFunctionResult(functionFragment: "symbol", data: BytesLike): Result; decodeFunctionResult( functionFragment: "totalSupply", @@ -137,6 +161,10 @@ export interface IZRC20MetadataInterface extends utils.Interface { functionFragment: "withdrawGasFee", data: BytesLike ): Result; + decodeFunctionResult( + functionFragment: "withdrawGasFeeWithGasLimit", + data: BytesLike + ): Result; events: {}; } @@ -168,6 +196,8 @@ export interface IZRC20Metadata extends BaseContract { removeListener: OnEvent; functions: { + GAS_LIMIT(overrides?: CallOverrides): Promise<[BigNumber]>; + PROTOCOL_FLAT_FEE(overrides?: CallOverrides): Promise<[BigNumber]>; allowance( @@ -202,6 +232,16 @@ export interface IZRC20Metadata extends BaseContract { name(overrides?: CallOverrides): Promise<[string]>; + setName( + newName: PromiseOrValue, + overrides?: Overrides & { from?: PromiseOrValue } + ): Promise; + + setSymbol( + newSymbol: PromiseOrValue, + overrides?: Overrides & { from?: PromiseOrValue } + ): Promise; + symbol(overrides?: CallOverrides): Promise<[string]>; totalSupply(overrides?: CallOverrides): Promise<[BigNumber]>; @@ -226,8 +266,15 @@ export interface IZRC20Metadata extends BaseContract { ): Promise; withdrawGasFee(overrides?: CallOverrides): Promise<[string, BigNumber]>; + + withdrawGasFeeWithGasLimit( + gasLimit: PromiseOrValue, + overrides?: CallOverrides + ): Promise<[string, BigNumber]>; }; + GAS_LIMIT(overrides?: CallOverrides): Promise; + PROTOCOL_FLAT_FEE(overrides?: CallOverrides): Promise; allowance( @@ -262,6 +309,16 @@ export interface IZRC20Metadata extends BaseContract { name(overrides?: CallOverrides): Promise; + setName( + newName: PromiseOrValue, + overrides?: Overrides & { from?: PromiseOrValue } + ): Promise; + + setSymbol( + newSymbol: PromiseOrValue, + overrides?: Overrides & { from?: PromiseOrValue } + ): Promise; + symbol(overrides?: CallOverrides): Promise; totalSupply(overrides?: CallOverrides): Promise; @@ -287,7 +344,14 @@ export interface IZRC20Metadata extends BaseContract { withdrawGasFee(overrides?: CallOverrides): Promise<[string, BigNumber]>; + withdrawGasFeeWithGasLimit( + gasLimit: PromiseOrValue, + overrides?: CallOverrides + ): Promise<[string, BigNumber]>; + callStatic: { + GAS_LIMIT(overrides?: CallOverrides): Promise; + PROTOCOL_FLAT_FEE(overrides?: CallOverrides): Promise; allowance( @@ -322,6 +386,16 @@ export interface IZRC20Metadata extends BaseContract { name(overrides?: CallOverrides): Promise; + setName( + newName: PromiseOrValue, + overrides?: CallOverrides + ): Promise; + + setSymbol( + newSymbol: PromiseOrValue, + overrides?: CallOverrides + ): Promise; + symbol(overrides?: CallOverrides): Promise; totalSupply(overrides?: CallOverrides): Promise; @@ -346,11 +420,18 @@ export interface IZRC20Metadata extends BaseContract { ): Promise; withdrawGasFee(overrides?: CallOverrides): Promise<[string, BigNumber]>; + + withdrawGasFeeWithGasLimit( + gasLimit: PromiseOrValue, + overrides?: CallOverrides + ): Promise<[string, BigNumber]>; }; filters: {}; estimateGas: { + GAS_LIMIT(overrides?: CallOverrides): Promise; + PROTOCOL_FLAT_FEE(overrides?: CallOverrides): Promise; allowance( @@ -385,6 +466,16 @@ export interface IZRC20Metadata extends BaseContract { name(overrides?: CallOverrides): Promise; + setName( + newName: PromiseOrValue, + overrides?: Overrides & { from?: PromiseOrValue } + ): Promise; + + setSymbol( + newSymbol: PromiseOrValue, + overrides?: Overrides & { from?: PromiseOrValue } + ): Promise; + symbol(overrides?: CallOverrides): Promise; totalSupply(overrides?: CallOverrides): Promise; @@ -409,9 +500,16 @@ export interface IZRC20Metadata extends BaseContract { ): Promise; withdrawGasFee(overrides?: CallOverrides): Promise; + + withdrawGasFeeWithGasLimit( + gasLimit: PromiseOrValue, + overrides?: CallOverrides + ): Promise; }; populateTransaction: { + GAS_LIMIT(overrides?: CallOverrides): Promise; + PROTOCOL_FLAT_FEE(overrides?: CallOverrides): Promise; allowance( @@ -446,6 +544,16 @@ export interface IZRC20Metadata extends BaseContract { name(overrides?: CallOverrides): Promise; + setName( + newName: PromiseOrValue, + overrides?: Overrides & { from?: PromiseOrValue } + ): Promise; + + setSymbol( + newSymbol: PromiseOrValue, + overrides?: Overrides & { from?: PromiseOrValue } + ): Promise; + symbol(overrides?: CallOverrides): Promise; totalSupply(overrides?: CallOverrides): Promise; @@ -470,5 +578,10 @@ export interface IZRC20Metadata extends BaseContract { ): Promise; withdrawGasFee(overrides?: CallOverrides): Promise; + + withdrawGasFeeWithGasLimit( + gasLimit: PromiseOrValue, + overrides?: CallOverrides + ): Promise; }; } diff --git a/typechain-types/@zetachain/protocol-contracts/contracts/zevm/interfaces/IZRC20.sol/ZRC20Events.ts b/typechain-types/@zetachain/protocol-contracts/contracts/zevm/interfaces/IZRC20.sol/ZRC20Events.ts index 9baca34a..8bf337ad 100644 --- a/typechain-types/@zetachain/protocol-contracts/contracts/zevm/interfaces/IZRC20.sol/ZRC20Events.ts +++ b/typechain-types/@zetachain/protocol-contracts/contracts/zevm/interfaces/IZRC20.sol/ZRC20Events.ts @@ -20,6 +20,7 @@ export interface ZRC20EventsInterface extends utils.Interface { "Deposit(bytes,address,uint256)": EventFragment; "Transfer(address,address,uint256)": EventFragment; "UpdatedGasLimit(uint256)": EventFragment; + "UpdatedGateway(address)": EventFragment; "UpdatedProtocolFlatFee(uint256)": EventFragment; "UpdatedSystemContract(address)": EventFragment; "Withdrawal(address,bytes,uint256,uint256,uint256)": EventFragment; @@ -29,6 +30,7 @@ export interface ZRC20EventsInterface extends utils.Interface { getEvent(nameOrSignatureOrTopic: "Deposit"): EventFragment; getEvent(nameOrSignatureOrTopic: "Transfer"): EventFragment; getEvent(nameOrSignatureOrTopic: "UpdatedGasLimit"): EventFragment; + getEvent(nameOrSignatureOrTopic: "UpdatedGateway"): EventFragment; getEvent(nameOrSignatureOrTopic: "UpdatedProtocolFlatFee"): EventFragment; getEvent(nameOrSignatureOrTopic: "UpdatedSystemContract"): EventFragment; getEvent(nameOrSignatureOrTopic: "Withdrawal"): EventFragment; @@ -80,6 +82,16 @@ export type UpdatedGasLimitEvent = TypedEvent< export type UpdatedGasLimitEventFilter = TypedEventFilter; +export interface UpdatedGatewayEventObject { + gateway: string; +} +export type UpdatedGatewayEvent = TypedEvent< + [string], + UpdatedGatewayEventObject +>; + +export type UpdatedGatewayEventFilter = TypedEventFilter; + export interface UpdatedProtocolFlatFeeEventObject { protocolFlatFee: BigNumber; } @@ -183,6 +195,9 @@ export interface ZRC20Events extends BaseContract { "UpdatedGasLimit(uint256)"(gasLimit?: null): UpdatedGasLimitEventFilter; UpdatedGasLimit(gasLimit?: null): UpdatedGasLimitEventFilter; + "UpdatedGateway(address)"(gateway?: null): UpdatedGatewayEventFilter; + UpdatedGateway(gateway?: null): UpdatedGatewayEventFilter; + "UpdatedProtocolFlatFee(uint256)"( protocolFlatFee?: null ): UpdatedProtocolFlatFeeEventFilter; diff --git a/typechain-types/@zetachain/protocol-contracts/contracts/zevm/interfaces/zContract.sol/UniversalContract.ts b/typechain-types/@zetachain/protocol-contracts/contracts/zevm/interfaces/UniversalContract.sol/UniversalContract.ts similarity index 52% rename from typechain-types/@zetachain/protocol-contracts/contracts/zevm/interfaces/zContract.sol/UniversalContract.ts rename to typechain-types/@zetachain/protocol-contracts/contracts/zevm/interfaces/UniversalContract.sol/UniversalContract.ts index 4cd9621b..62546e42 100644 --- a/typechain-types/@zetachain/protocol-contracts/contracts/zevm/interfaces/zContract.sol/UniversalContract.ts +++ b/typechain-types/@zetachain/protocol-contracts/contracts/zevm/interfaces/UniversalContract.sol/UniversalContract.ts @@ -23,25 +23,13 @@ import type { PromiseOrValue, } from "../../../../../../common"; -export type ZContextStruct = { +export type MessageContextStruct = { origin: PromiseOrValue; sender: PromiseOrValue; chainID: PromiseOrValue; }; -export type ZContextStructOutput = [string, string, BigNumber] & { - origin: string; - sender: string; - chainID: BigNumber; -}; - -export type RevertContextStruct = { - origin: PromiseOrValue; - sender: PromiseOrValue; - chainID: PromiseOrValue; -}; - -export type RevertContextStructOutput = [string, string, BigNumber] & { +export type MessageContextStructOutput = [string, string, BigNumber] & { origin: string; sender: string; chainID: BigNumber; @@ -49,38 +37,22 @@ export type RevertContextStructOutput = [string, string, BigNumber] & { export interface UniversalContractInterface extends utils.Interface { functions: { - "onCrossChainCall((bytes,address,uint256),address,uint256,bytes)": FunctionFragment; - "onRevert((bytes,address,uint256),address,uint256,bytes)": FunctionFragment; + "onCall((bytes,address,uint256),address,uint256,bytes)": FunctionFragment; }; - getFunction( - nameOrSignatureOrTopic: "onCrossChainCall" | "onRevert" - ): FunctionFragment; + getFunction(nameOrSignatureOrTopic: "onCall"): FunctionFragment; encodeFunctionData( - functionFragment: "onCrossChainCall", - values: [ - ZContextStruct, - PromiseOrValue, - PromiseOrValue, - PromiseOrValue - ] - ): string; - encodeFunctionData( - functionFragment: "onRevert", + functionFragment: "onCall", values: [ - RevertContextStruct, + MessageContextStruct, PromiseOrValue, PromiseOrValue, PromiseOrValue ] ): string; - decodeFunctionResult( - functionFragment: "onCrossChainCall", - data: BytesLike - ): Result; - decodeFunctionResult(functionFragment: "onRevert", data: BytesLike): Result; + decodeFunctionResult(functionFragment: "onCall", data: BytesLike): Result; events: {}; } @@ -112,16 +84,8 @@ export interface UniversalContract extends BaseContract { removeListener: OnEvent; functions: { - onCrossChainCall( - context: ZContextStruct, - zrc20: PromiseOrValue, - amount: PromiseOrValue, - message: PromiseOrValue, - overrides?: Overrides & { from?: PromiseOrValue } - ): Promise; - - onRevert( - context: RevertContextStruct, + onCall( + context: MessageContextStruct, zrc20: PromiseOrValue, amount: PromiseOrValue, message: PromiseOrValue, @@ -129,16 +93,8 @@ export interface UniversalContract extends BaseContract { ): Promise; }; - onCrossChainCall( - context: ZContextStruct, - zrc20: PromiseOrValue, - amount: PromiseOrValue, - message: PromiseOrValue, - overrides?: Overrides & { from?: PromiseOrValue } - ): Promise; - - onRevert( - context: RevertContextStruct, + onCall( + context: MessageContextStruct, zrc20: PromiseOrValue, amount: PromiseOrValue, message: PromiseOrValue, @@ -146,16 +102,8 @@ export interface UniversalContract extends BaseContract { ): Promise; callStatic: { - onCrossChainCall( - context: ZContextStruct, - zrc20: PromiseOrValue, - amount: PromiseOrValue, - message: PromiseOrValue, - overrides?: CallOverrides - ): Promise; - - onRevert( - context: RevertContextStruct, + onCall( + context: MessageContextStruct, zrc20: PromiseOrValue, amount: PromiseOrValue, message: PromiseOrValue, @@ -166,16 +114,8 @@ export interface UniversalContract extends BaseContract { filters: {}; estimateGas: { - onCrossChainCall( - context: ZContextStruct, - zrc20: PromiseOrValue, - amount: PromiseOrValue, - message: PromiseOrValue, - overrides?: Overrides & { from?: PromiseOrValue } - ): Promise; - - onRevert( - context: RevertContextStruct, + onCall( + context: MessageContextStruct, zrc20: PromiseOrValue, amount: PromiseOrValue, message: PromiseOrValue, @@ -184,16 +124,8 @@ export interface UniversalContract extends BaseContract { }; populateTransaction: { - onCrossChainCall( - context: ZContextStruct, - zrc20: PromiseOrValue, - amount: PromiseOrValue, - message: PromiseOrValue, - overrides?: Overrides & { from?: PromiseOrValue } - ): Promise; - - onRevert( - context: RevertContextStruct, + onCall( + context: MessageContextStruct, zrc20: PromiseOrValue, amount: PromiseOrValue, message: PromiseOrValue, diff --git a/typechain-types/@zetachain/protocol-contracts/contracts/zevm/interfaces/zContract.sol/ZContract.ts b/typechain-types/@zetachain/protocol-contracts/contracts/zevm/interfaces/UniversalContract.sol/ZContract.ts similarity index 100% rename from typechain-types/@zetachain/protocol-contracts/contracts/zevm/interfaces/zContract.sol/ZContract.ts rename to typechain-types/@zetachain/protocol-contracts/contracts/zevm/interfaces/UniversalContract.sol/ZContract.ts diff --git a/typechain-types/@zetachain/protocol-contracts/contracts/zevm/interfaces/zContract.sol/index.ts b/typechain-types/@zetachain/protocol-contracts/contracts/zevm/interfaces/UniversalContract.sol/index.ts similarity index 100% rename from typechain-types/@zetachain/protocol-contracts/contracts/zevm/interfaces/zContract.sol/index.ts rename to typechain-types/@zetachain/protocol-contracts/contracts/zevm/interfaces/UniversalContract.sol/index.ts diff --git a/typechain-types/@zetachain/protocol-contracts/contracts/zevm/interfaces/index.ts b/typechain-types/@zetachain/protocol-contracts/contracts/zevm/interfaces/index.ts index 92e52029..d2728109 100644 --- a/typechain-types/@zetachain/protocol-contracts/contracts/zevm/interfaces/index.ts +++ b/typechain-types/@zetachain/protocol-contracts/contracts/zevm/interfaces/index.ts @@ -3,5 +3,5 @@ /* eslint-disable */ import type * as izrc20Sol from "./IZRC20.sol"; export type { izrc20Sol }; -import type * as zContractSol from "./zContract.sol"; -export type { zContractSol }; +import type * as universalContractSol from "./UniversalContract.sol"; +export type { universalContractSol }; diff --git a/typechain-types/contracts/EthZetaMock.sol/ZetaEthMock.ts b/typechain-types/contracts/EthZetaMock.sol/ZetaEthMock.ts index 0fcf505d..30c78b96 100644 --- a/typechain-types/contracts/EthZetaMock.sol/ZetaEthMock.ts +++ b/typechain-types/contracts/EthZetaMock.sol/ZetaEthMock.ts @@ -33,8 +33,6 @@ export interface ZetaEthMockInterface extends utils.Interface { "approve(address,uint256)": FunctionFragment; "balanceOf(address)": FunctionFragment; "decimals()": FunctionFragment; - "decreaseAllowance(address,uint256)": FunctionFragment; - "increaseAllowance(address,uint256)": FunctionFragment; "name()": FunctionFragment; "symbol()": FunctionFragment; "totalSupply()": FunctionFragment; @@ -48,8 +46,6 @@ export interface ZetaEthMockInterface extends utils.Interface { | "approve" | "balanceOf" | "decimals" - | "decreaseAllowance" - | "increaseAllowance" | "name" | "symbol" | "totalSupply" @@ -70,14 +66,6 @@ export interface ZetaEthMockInterface extends utils.Interface { values: [PromiseOrValue] ): string; encodeFunctionData(functionFragment: "decimals", values?: undefined): string; - encodeFunctionData( - functionFragment: "decreaseAllowance", - values: [PromiseOrValue, PromiseOrValue] - ): string; - encodeFunctionData( - functionFragment: "increaseAllowance", - values: [PromiseOrValue, PromiseOrValue] - ): string; encodeFunctionData(functionFragment: "name", values?: undefined): string; encodeFunctionData(functionFragment: "symbol", values?: undefined): string; encodeFunctionData( @@ -101,14 +89,6 @@ export interface ZetaEthMockInterface extends utils.Interface { decodeFunctionResult(functionFragment: "approve", data: BytesLike): Result; decodeFunctionResult(functionFragment: "balanceOf", data: BytesLike): Result; decodeFunctionResult(functionFragment: "decimals", data: BytesLike): Result; - decodeFunctionResult( - functionFragment: "decreaseAllowance", - data: BytesLike - ): Result; - decodeFunctionResult( - functionFragment: "increaseAllowance", - data: BytesLike - ): Result; decodeFunctionResult(functionFragment: "name", data: BytesLike): Result; decodeFunctionResult(functionFragment: "symbol", data: BytesLike): Result; decodeFunctionResult( @@ -189,7 +169,7 @@ export interface ZetaEthMock extends BaseContract { approve( spender: PromiseOrValue, - amount: PromiseOrValue, + value: PromiseOrValue, overrides?: Overrides & { from?: PromiseOrValue } ): Promise; @@ -200,18 +180,6 @@ export interface ZetaEthMock extends BaseContract { decimals(overrides?: CallOverrides): Promise<[number]>; - decreaseAllowance( - spender: PromiseOrValue, - subtractedValue: PromiseOrValue, - overrides?: Overrides & { from?: PromiseOrValue } - ): Promise; - - increaseAllowance( - spender: PromiseOrValue, - addedValue: PromiseOrValue, - overrides?: Overrides & { from?: PromiseOrValue } - ): Promise; - name(overrides?: CallOverrides): Promise<[string]>; symbol(overrides?: CallOverrides): Promise<[string]>; @@ -220,14 +188,14 @@ export interface ZetaEthMock extends BaseContract { transfer( to: PromiseOrValue, - amount: PromiseOrValue, + value: PromiseOrValue, overrides?: Overrides & { from?: PromiseOrValue } ): Promise; transferFrom( from: PromiseOrValue, to: PromiseOrValue, - amount: PromiseOrValue, + value: PromiseOrValue, overrides?: Overrides & { from?: PromiseOrValue } ): Promise; }; @@ -240,7 +208,7 @@ export interface ZetaEthMock extends BaseContract { approve( spender: PromiseOrValue, - amount: PromiseOrValue, + value: PromiseOrValue, overrides?: Overrides & { from?: PromiseOrValue } ): Promise; @@ -251,18 +219,6 @@ export interface ZetaEthMock extends BaseContract { decimals(overrides?: CallOverrides): Promise; - decreaseAllowance( - spender: PromiseOrValue, - subtractedValue: PromiseOrValue, - overrides?: Overrides & { from?: PromiseOrValue } - ): Promise; - - increaseAllowance( - spender: PromiseOrValue, - addedValue: PromiseOrValue, - overrides?: Overrides & { from?: PromiseOrValue } - ): Promise; - name(overrides?: CallOverrides): Promise; symbol(overrides?: CallOverrides): Promise; @@ -271,14 +227,14 @@ export interface ZetaEthMock extends BaseContract { transfer( to: PromiseOrValue, - amount: PromiseOrValue, + value: PromiseOrValue, overrides?: Overrides & { from?: PromiseOrValue } ): Promise; transferFrom( from: PromiseOrValue, to: PromiseOrValue, - amount: PromiseOrValue, + value: PromiseOrValue, overrides?: Overrides & { from?: PromiseOrValue } ): Promise; @@ -291,7 +247,7 @@ export interface ZetaEthMock extends BaseContract { approve( spender: PromiseOrValue, - amount: PromiseOrValue, + value: PromiseOrValue, overrides?: CallOverrides ): Promise; @@ -302,18 +258,6 @@ export interface ZetaEthMock extends BaseContract { decimals(overrides?: CallOverrides): Promise; - decreaseAllowance( - spender: PromiseOrValue, - subtractedValue: PromiseOrValue, - overrides?: CallOverrides - ): Promise; - - increaseAllowance( - spender: PromiseOrValue, - addedValue: PromiseOrValue, - overrides?: CallOverrides - ): Promise; - name(overrides?: CallOverrides): Promise; symbol(overrides?: CallOverrides): Promise; @@ -322,14 +266,14 @@ export interface ZetaEthMock extends BaseContract { transfer( to: PromiseOrValue, - amount: PromiseOrValue, + value: PromiseOrValue, overrides?: CallOverrides ): Promise; transferFrom( from: PromiseOrValue, to: PromiseOrValue, - amount: PromiseOrValue, + value: PromiseOrValue, overrides?: CallOverrides ): Promise; }; @@ -367,7 +311,7 @@ export interface ZetaEthMock extends BaseContract { approve( spender: PromiseOrValue, - amount: PromiseOrValue, + value: PromiseOrValue, overrides?: Overrides & { from?: PromiseOrValue } ): Promise; @@ -378,18 +322,6 @@ export interface ZetaEthMock extends BaseContract { decimals(overrides?: CallOverrides): Promise; - decreaseAllowance( - spender: PromiseOrValue, - subtractedValue: PromiseOrValue, - overrides?: Overrides & { from?: PromiseOrValue } - ): Promise; - - increaseAllowance( - spender: PromiseOrValue, - addedValue: PromiseOrValue, - overrides?: Overrides & { from?: PromiseOrValue } - ): Promise; - name(overrides?: CallOverrides): Promise; symbol(overrides?: CallOverrides): Promise; @@ -398,14 +330,14 @@ export interface ZetaEthMock extends BaseContract { transfer( to: PromiseOrValue, - amount: PromiseOrValue, + value: PromiseOrValue, overrides?: Overrides & { from?: PromiseOrValue } ): Promise; transferFrom( from: PromiseOrValue, to: PromiseOrValue, - amount: PromiseOrValue, + value: PromiseOrValue, overrides?: Overrides & { from?: PromiseOrValue } ): Promise; }; @@ -419,7 +351,7 @@ export interface ZetaEthMock extends BaseContract { approve( spender: PromiseOrValue, - amount: PromiseOrValue, + value: PromiseOrValue, overrides?: Overrides & { from?: PromiseOrValue } ): Promise; @@ -430,18 +362,6 @@ export interface ZetaEthMock extends BaseContract { decimals(overrides?: CallOverrides): Promise; - decreaseAllowance( - spender: PromiseOrValue, - subtractedValue: PromiseOrValue, - overrides?: Overrides & { from?: PromiseOrValue } - ): Promise; - - increaseAllowance( - spender: PromiseOrValue, - addedValue: PromiseOrValue, - overrides?: Overrides & { from?: PromiseOrValue } - ): Promise; - name(overrides?: CallOverrides): Promise; symbol(overrides?: CallOverrides): Promise; @@ -450,14 +370,14 @@ export interface ZetaEthMock extends BaseContract { transfer( to: PromiseOrValue, - amount: PromiseOrValue, + value: PromiseOrValue, overrides?: Overrides & { from?: PromiseOrValue } ): Promise; transferFrom( from: PromiseOrValue, to: PromiseOrValue, - amount: PromiseOrValue, + value: PromiseOrValue, overrides?: Overrides & { from?: PromiseOrValue } ): Promise; }; diff --git a/typechain-types/contracts/TestSystemContract.ts b/typechain-types/contracts/TestSystemContract.ts deleted file mode 100644 index c0761aa5..00000000 --- a/typechain-types/contracts/TestSystemContract.ts +++ /dev/null @@ -1,449 +0,0 @@ -/* Autogenerated file. Do not edit manually. */ -/* tslint:disable */ -/* eslint-disable */ -import type { - BaseContract, - BigNumber, - BigNumberish, - BytesLike, - CallOverrides, - ContractTransaction, - Overrides, - PopulatedTransaction, - Signer, - utils, -} from "ethers"; -import type { - FunctionFragment, - Result, - EventFragment, -} from "@ethersproject/abi"; -import type { Listener, Provider } from "@ethersproject/providers"; -import type { - TypedEventFilter, - TypedEvent, - TypedListener, - OnEvent, - PromiseOrValue, -} from "../common"; - -export interface TestSystemContractInterface extends utils.Interface { - functions: { - "gasCoinZRC20ByChainId(uint256)": FunctionFragment; - "gasPriceByChainId(uint256)": FunctionFragment; - "gasZetaPoolByChainId(uint256)": FunctionFragment; - "setGasCoinZRC20(uint256,address)": FunctionFragment; - "setGasPrice(uint256,uint256)": FunctionFragment; - "setWZETAContractAddress(address)": FunctionFragment; - "uniswapv2FactoryAddress()": FunctionFragment; - "uniswapv2Router02Address()": FunctionFragment; - "wZetaContractAddress()": FunctionFragment; - }; - - getFunction( - nameOrSignatureOrTopic: - | "gasCoinZRC20ByChainId" - | "gasPriceByChainId" - | "gasZetaPoolByChainId" - | "setGasCoinZRC20" - | "setGasPrice" - | "setWZETAContractAddress" - | "uniswapv2FactoryAddress" - | "uniswapv2Router02Address" - | "wZetaContractAddress" - ): FunctionFragment; - - encodeFunctionData( - functionFragment: "gasCoinZRC20ByChainId", - values: [PromiseOrValue] - ): string; - encodeFunctionData( - functionFragment: "gasPriceByChainId", - values: [PromiseOrValue] - ): string; - encodeFunctionData( - functionFragment: "gasZetaPoolByChainId", - values: [PromiseOrValue] - ): string; - encodeFunctionData( - functionFragment: "setGasCoinZRC20", - values: [PromiseOrValue, PromiseOrValue] - ): string; - encodeFunctionData( - functionFragment: "setGasPrice", - values: [PromiseOrValue, PromiseOrValue] - ): string; - encodeFunctionData( - functionFragment: "setWZETAContractAddress", - values: [PromiseOrValue] - ): string; - encodeFunctionData( - functionFragment: "uniswapv2FactoryAddress", - values?: undefined - ): string; - encodeFunctionData( - functionFragment: "uniswapv2Router02Address", - values?: undefined - ): string; - encodeFunctionData( - functionFragment: "wZetaContractAddress", - values?: undefined - ): string; - - decodeFunctionResult( - functionFragment: "gasCoinZRC20ByChainId", - data: BytesLike - ): Result; - decodeFunctionResult( - functionFragment: "gasPriceByChainId", - data: BytesLike - ): Result; - decodeFunctionResult( - functionFragment: "gasZetaPoolByChainId", - data: BytesLike - ): Result; - decodeFunctionResult( - functionFragment: "setGasCoinZRC20", - data: BytesLike - ): Result; - decodeFunctionResult( - functionFragment: "setGasPrice", - data: BytesLike - ): Result; - decodeFunctionResult( - functionFragment: "setWZETAContractAddress", - data: BytesLike - ): Result; - decodeFunctionResult( - functionFragment: "uniswapv2FactoryAddress", - data: BytesLike - ): Result; - decodeFunctionResult( - functionFragment: "uniswapv2Router02Address", - data: BytesLike - ): Result; - decodeFunctionResult( - functionFragment: "wZetaContractAddress", - data: BytesLike - ): Result; - - events: { - "SetGasCoin(uint256,address)": EventFragment; - "SetGasPrice(uint256,uint256)": EventFragment; - "SetGasZetaPool(uint256,address)": EventFragment; - "SetWZeta(address)": EventFragment; - "SystemContractDeployed()": EventFragment; - }; - - getEvent(nameOrSignatureOrTopic: "SetGasCoin"): EventFragment; - getEvent(nameOrSignatureOrTopic: "SetGasPrice"): EventFragment; - getEvent(nameOrSignatureOrTopic: "SetGasZetaPool"): EventFragment; - getEvent(nameOrSignatureOrTopic: "SetWZeta"): EventFragment; - getEvent(nameOrSignatureOrTopic: "SystemContractDeployed"): EventFragment; -} - -export interface SetGasCoinEventObject { - arg0: BigNumber; - arg1: string; -} -export type SetGasCoinEvent = TypedEvent< - [BigNumber, string], - SetGasCoinEventObject ->; - -export type SetGasCoinEventFilter = TypedEventFilter; - -export interface SetGasPriceEventObject { - arg0: BigNumber; - arg1: BigNumber; -} -export type SetGasPriceEvent = TypedEvent< - [BigNumber, BigNumber], - SetGasPriceEventObject ->; - -export type SetGasPriceEventFilter = TypedEventFilter; - -export interface SetGasZetaPoolEventObject { - arg0: BigNumber; - arg1: string; -} -export type SetGasZetaPoolEvent = TypedEvent< - [BigNumber, string], - SetGasZetaPoolEventObject ->; - -export type SetGasZetaPoolEventFilter = TypedEventFilter; - -export interface SetWZetaEventObject { - arg0: string; -} -export type SetWZetaEvent = TypedEvent<[string], SetWZetaEventObject>; - -export type SetWZetaEventFilter = TypedEventFilter; - -export interface SystemContractDeployedEventObject {} -export type SystemContractDeployedEvent = TypedEvent< - [], - SystemContractDeployedEventObject ->; - -export type SystemContractDeployedEventFilter = - TypedEventFilter; - -export interface TestSystemContract extends BaseContract { - connect(signerOrProvider: Signer | Provider | string): this; - attach(addressOrName: string): this; - deployed(): Promise; - - interface: TestSystemContractInterface; - - queryFilter( - event: TypedEventFilter, - fromBlockOrBlockhash?: string | number | undefined, - toBlock?: string | number | undefined - ): Promise>; - - listeners( - eventFilter?: TypedEventFilter - ): Array>; - listeners(eventName?: string): Array; - removeAllListeners( - eventFilter: TypedEventFilter - ): this; - removeAllListeners(eventName?: string): this; - off: OnEvent; - on: OnEvent; - once: OnEvent; - removeListener: OnEvent; - - functions: { - gasCoinZRC20ByChainId( - arg0: PromiseOrValue, - overrides?: CallOverrides - ): Promise<[string]>; - - gasPriceByChainId( - arg0: PromiseOrValue, - overrides?: CallOverrides - ): Promise<[BigNumber]>; - - gasZetaPoolByChainId( - arg0: PromiseOrValue, - overrides?: CallOverrides - ): Promise<[string]>; - - setGasCoinZRC20( - chainID: PromiseOrValue, - zrc20: PromiseOrValue, - overrides?: Overrides & { from?: PromiseOrValue } - ): Promise; - - setGasPrice( - chainID: PromiseOrValue, - price: PromiseOrValue, - overrides?: Overrides & { from?: PromiseOrValue } - ): Promise; - - setWZETAContractAddress( - addr: PromiseOrValue, - overrides?: Overrides & { from?: PromiseOrValue } - ): Promise; - - uniswapv2FactoryAddress(overrides?: CallOverrides): Promise<[string]>; - - uniswapv2Router02Address(overrides?: CallOverrides): Promise<[string]>; - - wZetaContractAddress(overrides?: CallOverrides): Promise<[string]>; - }; - - gasCoinZRC20ByChainId( - arg0: PromiseOrValue, - overrides?: CallOverrides - ): Promise; - - gasPriceByChainId( - arg0: PromiseOrValue, - overrides?: CallOverrides - ): Promise; - - gasZetaPoolByChainId( - arg0: PromiseOrValue, - overrides?: CallOverrides - ): Promise; - - setGasCoinZRC20( - chainID: PromiseOrValue, - zrc20: PromiseOrValue, - overrides?: Overrides & { from?: PromiseOrValue } - ): Promise; - - setGasPrice( - chainID: PromiseOrValue, - price: PromiseOrValue, - overrides?: Overrides & { from?: PromiseOrValue } - ): Promise; - - setWZETAContractAddress( - addr: PromiseOrValue, - overrides?: Overrides & { from?: PromiseOrValue } - ): Promise; - - uniswapv2FactoryAddress(overrides?: CallOverrides): Promise; - - uniswapv2Router02Address(overrides?: CallOverrides): Promise; - - wZetaContractAddress(overrides?: CallOverrides): Promise; - - callStatic: { - gasCoinZRC20ByChainId( - arg0: PromiseOrValue, - overrides?: CallOverrides - ): Promise; - - gasPriceByChainId( - arg0: PromiseOrValue, - overrides?: CallOverrides - ): Promise; - - gasZetaPoolByChainId( - arg0: PromiseOrValue, - overrides?: CallOverrides - ): Promise; - - setGasCoinZRC20( - chainID: PromiseOrValue, - zrc20: PromiseOrValue, - overrides?: CallOverrides - ): Promise; - - setGasPrice( - chainID: PromiseOrValue, - price: PromiseOrValue, - overrides?: CallOverrides - ): Promise; - - setWZETAContractAddress( - addr: PromiseOrValue, - overrides?: CallOverrides - ): Promise; - - uniswapv2FactoryAddress(overrides?: CallOverrides): Promise; - - uniswapv2Router02Address(overrides?: CallOverrides): Promise; - - wZetaContractAddress(overrides?: CallOverrides): Promise; - }; - - filters: { - "SetGasCoin(uint256,address)"( - arg0?: null, - arg1?: null - ): SetGasCoinEventFilter; - SetGasCoin(arg0?: null, arg1?: null): SetGasCoinEventFilter; - - "SetGasPrice(uint256,uint256)"( - arg0?: null, - arg1?: null - ): SetGasPriceEventFilter; - SetGasPrice(arg0?: null, arg1?: null): SetGasPriceEventFilter; - - "SetGasZetaPool(uint256,address)"( - arg0?: null, - arg1?: null - ): SetGasZetaPoolEventFilter; - SetGasZetaPool(arg0?: null, arg1?: null): SetGasZetaPoolEventFilter; - - "SetWZeta(address)"(arg0?: null): SetWZetaEventFilter; - SetWZeta(arg0?: null): SetWZetaEventFilter; - - "SystemContractDeployed()"(): SystemContractDeployedEventFilter; - SystemContractDeployed(): SystemContractDeployedEventFilter; - }; - - estimateGas: { - gasCoinZRC20ByChainId( - arg0: PromiseOrValue, - overrides?: CallOverrides - ): Promise; - - gasPriceByChainId( - arg0: PromiseOrValue, - overrides?: CallOverrides - ): Promise; - - gasZetaPoolByChainId( - arg0: PromiseOrValue, - overrides?: CallOverrides - ): Promise; - - setGasCoinZRC20( - chainID: PromiseOrValue, - zrc20: PromiseOrValue, - overrides?: Overrides & { from?: PromiseOrValue } - ): Promise; - - setGasPrice( - chainID: PromiseOrValue, - price: PromiseOrValue, - overrides?: Overrides & { from?: PromiseOrValue } - ): Promise; - - setWZETAContractAddress( - addr: PromiseOrValue, - overrides?: Overrides & { from?: PromiseOrValue } - ): Promise; - - uniswapv2FactoryAddress(overrides?: CallOverrides): Promise; - - uniswapv2Router02Address(overrides?: CallOverrides): Promise; - - wZetaContractAddress(overrides?: CallOverrides): Promise; - }; - - populateTransaction: { - gasCoinZRC20ByChainId( - arg0: PromiseOrValue, - overrides?: CallOverrides - ): Promise; - - gasPriceByChainId( - arg0: PromiseOrValue, - overrides?: CallOverrides - ): Promise; - - gasZetaPoolByChainId( - arg0: PromiseOrValue, - overrides?: CallOverrides - ): Promise; - - setGasCoinZRC20( - chainID: PromiseOrValue, - zrc20: PromiseOrValue, - overrides?: Overrides & { from?: PromiseOrValue } - ): Promise; - - setGasPrice( - chainID: PromiseOrValue, - price: PromiseOrValue, - overrides?: Overrides & { from?: PromiseOrValue } - ): Promise; - - setWZETAContractAddress( - addr: PromiseOrValue, - overrides?: Overrides & { from?: PromiseOrValue } - ): Promise; - - uniswapv2FactoryAddress( - overrides?: CallOverrides - ): Promise; - - uniswapv2Router02Address( - overrides?: CallOverrides - ): Promise; - - wZetaContractAddress( - overrides?: CallOverrides - ): Promise; - }; -} diff --git a/typechain-types/contracts/TestZRC20.ts b/typechain-types/contracts/TestZRC20.ts index 59949bac..0431e979 100644 --- a/typechain-types/contracts/TestZRC20.ts +++ b/typechain-types/contracts/TestZRC20.ts @@ -34,9 +34,7 @@ export interface TestZRC20Interface extends utils.Interface { "balanceOf(address)": FunctionFragment; "bytesToAddress(bytes,uint256,uint256)": FunctionFragment; "decimals()": FunctionFragment; - "decreaseAllowance(address,uint256)": FunctionFragment; "deposit(address,uint256)": FunctionFragment; - "increaseAllowance(address,uint256)": FunctionFragment; "name()": FunctionFragment; "symbol()": FunctionFragment; "totalSupply()": FunctionFragment; @@ -53,9 +51,7 @@ export interface TestZRC20Interface extends utils.Interface { | "balanceOf" | "bytesToAddress" | "decimals" - | "decreaseAllowance" | "deposit" - | "increaseAllowance" | "name" | "symbol" | "totalSupply" @@ -86,18 +82,10 @@ export interface TestZRC20Interface extends utils.Interface { ] ): string; encodeFunctionData(functionFragment: "decimals", values?: undefined): string; - encodeFunctionData( - functionFragment: "decreaseAllowance", - values: [PromiseOrValue, PromiseOrValue] - ): string; encodeFunctionData( functionFragment: "deposit", values: [PromiseOrValue, PromiseOrValue] ): string; - encodeFunctionData( - functionFragment: "increaseAllowance", - values: [PromiseOrValue, PromiseOrValue] - ): string; encodeFunctionData(functionFragment: "name", values?: undefined): string; encodeFunctionData(functionFragment: "symbol", values?: undefined): string; encodeFunctionData( @@ -133,15 +121,7 @@ export interface TestZRC20Interface extends utils.Interface { data: BytesLike ): Result; decodeFunctionResult(functionFragment: "decimals", data: BytesLike): Result; - decodeFunctionResult( - functionFragment: "decreaseAllowance", - data: BytesLike - ): Result; decodeFunctionResult(functionFragment: "deposit", data: BytesLike): Result; - decodeFunctionResult( - functionFragment: "increaseAllowance", - data: BytesLike - ): Result; decodeFunctionResult(functionFragment: "name", data: BytesLike): Result; decodeFunctionResult(functionFragment: "symbol", data: BytesLike): Result; decodeFunctionResult( @@ -227,7 +207,7 @@ export interface TestZRC20 extends BaseContract { approve( spender: PromiseOrValue, - amount: PromiseOrValue, + value: PromiseOrValue, overrides?: Overrides & { from?: PromiseOrValue } ): Promise; @@ -245,24 +225,12 @@ export interface TestZRC20 extends BaseContract { decimals(overrides?: CallOverrides): Promise<[number]>; - decreaseAllowance( - spender: PromiseOrValue, - subtractedValue: PromiseOrValue, - overrides?: Overrides & { from?: PromiseOrValue } - ): Promise; - deposit( to: PromiseOrValue, amount: PromiseOrValue, overrides?: Overrides & { from?: PromiseOrValue } ): Promise; - increaseAllowance( - spender: PromiseOrValue, - addedValue: PromiseOrValue, - overrides?: Overrides & { from?: PromiseOrValue } - ): Promise; - name(overrides?: CallOverrides): Promise<[string]>; symbol(overrides?: CallOverrides): Promise<[string]>; @@ -271,14 +239,14 @@ export interface TestZRC20 extends BaseContract { transfer( to: PromiseOrValue, - amount: PromiseOrValue, + value: PromiseOrValue, overrides?: Overrides & { from?: PromiseOrValue } ): Promise; transferFrom( from: PromiseOrValue, to: PromiseOrValue, - amount: PromiseOrValue, + value: PromiseOrValue, overrides?: Overrides & { from?: PromiseOrValue } ): Promise; @@ -299,7 +267,7 @@ export interface TestZRC20 extends BaseContract { approve( spender: PromiseOrValue, - amount: PromiseOrValue, + value: PromiseOrValue, overrides?: Overrides & { from?: PromiseOrValue } ): Promise; @@ -317,24 +285,12 @@ export interface TestZRC20 extends BaseContract { decimals(overrides?: CallOverrides): Promise; - decreaseAllowance( - spender: PromiseOrValue, - subtractedValue: PromiseOrValue, - overrides?: Overrides & { from?: PromiseOrValue } - ): Promise; - deposit( to: PromiseOrValue, amount: PromiseOrValue, overrides?: Overrides & { from?: PromiseOrValue } ): Promise; - increaseAllowance( - spender: PromiseOrValue, - addedValue: PromiseOrValue, - overrides?: Overrides & { from?: PromiseOrValue } - ): Promise; - name(overrides?: CallOverrides): Promise; symbol(overrides?: CallOverrides): Promise; @@ -343,14 +299,14 @@ export interface TestZRC20 extends BaseContract { transfer( to: PromiseOrValue, - amount: PromiseOrValue, + value: PromiseOrValue, overrides?: Overrides & { from?: PromiseOrValue } ): Promise; transferFrom( from: PromiseOrValue, to: PromiseOrValue, - amount: PromiseOrValue, + value: PromiseOrValue, overrides?: Overrides & { from?: PromiseOrValue } ): Promise; @@ -371,7 +327,7 @@ export interface TestZRC20 extends BaseContract { approve( spender: PromiseOrValue, - amount: PromiseOrValue, + value: PromiseOrValue, overrides?: CallOverrides ): Promise; @@ -389,24 +345,12 @@ export interface TestZRC20 extends BaseContract { decimals(overrides?: CallOverrides): Promise; - decreaseAllowance( - spender: PromiseOrValue, - subtractedValue: PromiseOrValue, - overrides?: CallOverrides - ): Promise; - deposit( to: PromiseOrValue, amount: PromiseOrValue, overrides?: CallOverrides ): Promise; - increaseAllowance( - spender: PromiseOrValue, - addedValue: PromiseOrValue, - overrides?: CallOverrides - ): Promise; - name(overrides?: CallOverrides): Promise; symbol(overrides?: CallOverrides): Promise; @@ -415,14 +359,14 @@ export interface TestZRC20 extends BaseContract { transfer( to: PromiseOrValue, - amount: PromiseOrValue, + value: PromiseOrValue, overrides?: CallOverrides ): Promise; transferFrom( from: PromiseOrValue, to: PromiseOrValue, - amount: PromiseOrValue, + value: PromiseOrValue, overrides?: CallOverrides ): Promise; @@ -468,7 +412,7 @@ export interface TestZRC20 extends BaseContract { approve( spender: PromiseOrValue, - amount: PromiseOrValue, + value: PromiseOrValue, overrides?: Overrides & { from?: PromiseOrValue } ): Promise; @@ -486,24 +430,12 @@ export interface TestZRC20 extends BaseContract { decimals(overrides?: CallOverrides): Promise; - decreaseAllowance( - spender: PromiseOrValue, - subtractedValue: PromiseOrValue, - overrides?: Overrides & { from?: PromiseOrValue } - ): Promise; - deposit( to: PromiseOrValue, amount: PromiseOrValue, overrides?: Overrides & { from?: PromiseOrValue } ): Promise; - increaseAllowance( - spender: PromiseOrValue, - addedValue: PromiseOrValue, - overrides?: Overrides & { from?: PromiseOrValue } - ): Promise; - name(overrides?: CallOverrides): Promise; symbol(overrides?: CallOverrides): Promise; @@ -512,14 +444,14 @@ export interface TestZRC20 extends BaseContract { transfer( to: PromiseOrValue, - amount: PromiseOrValue, + value: PromiseOrValue, overrides?: Overrides & { from?: PromiseOrValue } ): Promise; transferFrom( from: PromiseOrValue, to: PromiseOrValue, - amount: PromiseOrValue, + value: PromiseOrValue, overrides?: Overrides & { from?: PromiseOrValue } ): Promise; @@ -541,7 +473,7 @@ export interface TestZRC20 extends BaseContract { approve( spender: PromiseOrValue, - amount: PromiseOrValue, + value: PromiseOrValue, overrides?: Overrides & { from?: PromiseOrValue } ): Promise; @@ -559,24 +491,12 @@ export interface TestZRC20 extends BaseContract { decimals(overrides?: CallOverrides): Promise; - decreaseAllowance( - spender: PromiseOrValue, - subtractedValue: PromiseOrValue, - overrides?: Overrides & { from?: PromiseOrValue } - ): Promise; - deposit( to: PromiseOrValue, amount: PromiseOrValue, overrides?: Overrides & { from?: PromiseOrValue } ): Promise; - increaseAllowance( - spender: PromiseOrValue, - addedValue: PromiseOrValue, - overrides?: Overrides & { from?: PromiseOrValue } - ): Promise; - name(overrides?: CallOverrides): Promise; symbol(overrides?: CallOverrides): Promise; @@ -585,14 +505,14 @@ export interface TestZRC20 extends BaseContract { transfer( to: PromiseOrValue, - amount: PromiseOrValue, + value: PromiseOrValue, overrides?: Overrides & { from?: PromiseOrValue } ): Promise; transferFrom( from: PromiseOrValue, to: PromiseOrValue, - amount: PromiseOrValue, + value: PromiseOrValue, overrides?: Overrides & { from?: PromiseOrValue } ): Promise; diff --git a/typechain-types/contracts/ZetaConnectorMock.sol/ZetaConnectorMockValue.ts b/typechain-types/contracts/ZetaConnectorMock.sol/ZetaConnectorMockValue.ts deleted file mode 100644 index 78027355..00000000 --- a/typechain-types/contracts/ZetaConnectorMock.sol/ZetaConnectorMockValue.ts +++ /dev/null @@ -1,130 +0,0 @@ -/* Autogenerated file. Do not edit manually. */ -/* tslint:disable */ -/* eslint-disable */ -import type { - BaseContract, - BigNumber, - BigNumberish, - BytesLike, - CallOverrides, - ContractTransaction, - Overrides, - PopulatedTransaction, - Signer, - utils, -} from "ethers"; -import type { FunctionFragment, Result } from "@ethersproject/abi"; -import type { Listener, Provider } from "@ethersproject/providers"; -import type { - TypedEventFilter, - TypedEvent, - TypedListener, - OnEvent, - PromiseOrValue, -} from "../../common"; - -export declare namespace ZetaInterfaces { - export type SendInputStruct = { - destinationChainId: PromiseOrValue; - destinationAddress: PromiseOrValue; - destinationGasLimit: PromiseOrValue; - message: PromiseOrValue; - zetaValueAndGas: PromiseOrValue; - zetaParams: PromiseOrValue; - }; - - export type SendInputStructOutput = [ - BigNumber, - string, - BigNumber, - string, - BigNumber, - string - ] & { - destinationChainId: BigNumber; - destinationAddress: string; - destinationGasLimit: BigNumber; - message: string; - zetaValueAndGas: BigNumber; - zetaParams: string; - }; -} - -export interface ZetaConnectorMockValueInterface extends utils.Interface { - functions: { - "send((uint256,bytes,uint256,bytes,uint256,bytes))": FunctionFragment; - }; - - getFunction(nameOrSignatureOrTopic: "send"): FunctionFragment; - - encodeFunctionData( - functionFragment: "send", - values: [ZetaInterfaces.SendInputStruct] - ): string; - - decodeFunctionResult(functionFragment: "send", data: BytesLike): Result; - - events: {}; -} - -export interface ZetaConnectorMockValue extends BaseContract { - connect(signerOrProvider: Signer | Provider | string): this; - attach(addressOrName: string): this; - deployed(): Promise; - - interface: ZetaConnectorMockValueInterface; - - queryFilter( - event: TypedEventFilter, - fromBlockOrBlockhash?: string | number | undefined, - toBlock?: string | number | undefined - ): Promise>; - - listeners( - eventFilter?: TypedEventFilter - ): Array>; - listeners(eventName?: string): Array; - removeAllListeners( - eventFilter: TypedEventFilter - ): this; - removeAllListeners(eventName?: string): this; - off: OnEvent; - on: OnEvent; - once: OnEvent; - removeListener: OnEvent; - - functions: { - send( - input: ZetaInterfaces.SendInputStruct, - overrides?: Overrides & { from?: PromiseOrValue } - ): Promise; - }; - - send( - input: ZetaInterfaces.SendInputStruct, - overrides?: Overrides & { from?: PromiseOrValue } - ): Promise; - - callStatic: { - send( - input: ZetaInterfaces.SendInputStruct, - overrides?: CallOverrides - ): Promise; - }; - - filters: {}; - - estimateGas: { - send( - input: ZetaInterfaces.SendInputStruct, - overrides?: Overrides & { from?: PromiseOrValue } - ): Promise; - }; - - populateTransaction: { - send( - input: ZetaInterfaces.SendInputStruct, - overrides?: Overrides & { from?: PromiseOrValue } - ): Promise; - }; -} diff --git a/typechain-types/contracts/index.ts b/typechain-types/contracts/index.ts index f3975564..4b826a5b 100644 --- a/typechain-types/contracts/index.ts +++ b/typechain-types/contracts/index.ts @@ -9,12 +9,9 @@ import type * as systemContractSol from "./SystemContract.sol"; export type { systemContractSol }; import type * as universalContractSol from "./UniversalContract.sol"; export type { universalContractSol }; -import type * as zetaConnectorMockSol from "./ZetaConnectorMock.sol"; -export type { zetaConnectorMockSol }; import type * as shared from "./shared"; export type { shared }; export type { BytesHelperLib } from "./BytesHelperLib"; export type { OnlySystem } from "./OnlySystem"; export type { SwapHelperLib } from "./SwapHelperLib"; -export type { TestSystemContract } from "./TestSystemContract"; export type { TestZRC20 } from "./TestZRC20"; diff --git a/typechain-types/contracts/shared/MockSystemContract.sol/MockSystemContract.ts b/typechain-types/contracts/shared/MockSystemContract.sol/MockSystemContract.ts deleted file mode 100644 index e6c11c21..00000000 --- a/typechain-types/contracts/shared/MockSystemContract.sol/MockSystemContract.ts +++ /dev/null @@ -1,559 +0,0 @@ -/* Autogenerated file. Do not edit manually. */ -/* tslint:disable */ -/* eslint-disable */ -import type { - BaseContract, - BigNumber, - BigNumberish, - BytesLike, - CallOverrides, - ContractTransaction, - Overrides, - PopulatedTransaction, - Signer, - utils, -} from "ethers"; -import type { - FunctionFragment, - Result, - EventFragment, -} from "@ethersproject/abi"; -import type { Listener, Provider } from "@ethersproject/providers"; -import type { - TypedEventFilter, - TypedEvent, - TypedListener, - OnEvent, - PromiseOrValue, -} from "../../../common"; - -export interface MockSystemContractInterface extends utils.Interface { - functions: { - "gasCoinZRC20ByChainId(uint256)": FunctionFragment; - "gasPriceByChainId(uint256)": FunctionFragment; - "gasZetaPoolByChainId(uint256)": FunctionFragment; - "onCrossChainCall(uint256,address,address,uint256,bytes)": FunctionFragment; - "setGasCoinZRC20(uint256,address)": FunctionFragment; - "setGasPrice(uint256,uint256)": FunctionFragment; - "setWZETAContractAddress(address)": FunctionFragment; - "uniswapv2FactoryAddress()": FunctionFragment; - "uniswapv2PairFor(address,address,address)": FunctionFragment; - "uniswapv2Router02Address()": FunctionFragment; - "wZetaContractAddress()": FunctionFragment; - }; - - getFunction( - nameOrSignatureOrTopic: - | "gasCoinZRC20ByChainId" - | "gasPriceByChainId" - | "gasZetaPoolByChainId" - | "onCrossChainCall" - | "setGasCoinZRC20" - | "setGasPrice" - | "setWZETAContractAddress" - | "uniswapv2FactoryAddress" - | "uniswapv2PairFor" - | "uniswapv2Router02Address" - | "wZetaContractAddress" - ): FunctionFragment; - - encodeFunctionData( - functionFragment: "gasCoinZRC20ByChainId", - values: [PromiseOrValue] - ): string; - encodeFunctionData( - functionFragment: "gasPriceByChainId", - values: [PromiseOrValue] - ): string; - encodeFunctionData( - functionFragment: "gasZetaPoolByChainId", - values: [PromiseOrValue] - ): string; - encodeFunctionData( - functionFragment: "onCrossChainCall", - values: [ - PromiseOrValue, - PromiseOrValue, - PromiseOrValue, - PromiseOrValue, - PromiseOrValue - ] - ): string; - encodeFunctionData( - functionFragment: "setGasCoinZRC20", - values: [PromiseOrValue, PromiseOrValue] - ): string; - encodeFunctionData( - functionFragment: "setGasPrice", - values: [PromiseOrValue, PromiseOrValue] - ): string; - encodeFunctionData( - functionFragment: "setWZETAContractAddress", - values: [PromiseOrValue] - ): string; - encodeFunctionData( - functionFragment: "uniswapv2FactoryAddress", - values?: undefined - ): string; - encodeFunctionData( - functionFragment: "uniswapv2PairFor", - values: [ - PromiseOrValue, - PromiseOrValue, - PromiseOrValue - ] - ): string; - encodeFunctionData( - functionFragment: "uniswapv2Router02Address", - values?: undefined - ): string; - encodeFunctionData( - functionFragment: "wZetaContractAddress", - values?: undefined - ): string; - - decodeFunctionResult( - functionFragment: "gasCoinZRC20ByChainId", - data: BytesLike - ): Result; - decodeFunctionResult( - functionFragment: "gasPriceByChainId", - data: BytesLike - ): Result; - decodeFunctionResult( - functionFragment: "gasZetaPoolByChainId", - data: BytesLike - ): Result; - decodeFunctionResult( - functionFragment: "onCrossChainCall", - data: BytesLike - ): Result; - decodeFunctionResult( - functionFragment: "setGasCoinZRC20", - data: BytesLike - ): Result; - decodeFunctionResult( - functionFragment: "setGasPrice", - data: BytesLike - ): Result; - decodeFunctionResult( - functionFragment: "setWZETAContractAddress", - data: BytesLike - ): Result; - decodeFunctionResult( - functionFragment: "uniswapv2FactoryAddress", - data: BytesLike - ): Result; - decodeFunctionResult( - functionFragment: "uniswapv2PairFor", - data: BytesLike - ): Result; - decodeFunctionResult( - functionFragment: "uniswapv2Router02Address", - data: BytesLike - ): Result; - decodeFunctionResult( - functionFragment: "wZetaContractAddress", - data: BytesLike - ): Result; - - events: { - "SetGasCoin(uint256,address)": EventFragment; - "SetGasPrice(uint256,uint256)": EventFragment; - "SetGasZetaPool(uint256,address)": EventFragment; - "SetWZeta(address)": EventFragment; - "SystemContractDeployed()": EventFragment; - }; - - getEvent(nameOrSignatureOrTopic: "SetGasCoin"): EventFragment; - getEvent(nameOrSignatureOrTopic: "SetGasPrice"): EventFragment; - getEvent(nameOrSignatureOrTopic: "SetGasZetaPool"): EventFragment; - getEvent(nameOrSignatureOrTopic: "SetWZeta"): EventFragment; - getEvent(nameOrSignatureOrTopic: "SystemContractDeployed"): EventFragment; -} - -export interface SetGasCoinEventObject { - arg0: BigNumber; - arg1: string; -} -export type SetGasCoinEvent = TypedEvent< - [BigNumber, string], - SetGasCoinEventObject ->; - -export type SetGasCoinEventFilter = TypedEventFilter; - -export interface SetGasPriceEventObject { - arg0: BigNumber; - arg1: BigNumber; -} -export type SetGasPriceEvent = TypedEvent< - [BigNumber, BigNumber], - SetGasPriceEventObject ->; - -export type SetGasPriceEventFilter = TypedEventFilter; - -export interface SetGasZetaPoolEventObject { - arg0: BigNumber; - arg1: string; -} -export type SetGasZetaPoolEvent = TypedEvent< - [BigNumber, string], - SetGasZetaPoolEventObject ->; - -export type SetGasZetaPoolEventFilter = TypedEventFilter; - -export interface SetWZetaEventObject { - arg0: string; -} -export type SetWZetaEvent = TypedEvent<[string], SetWZetaEventObject>; - -export type SetWZetaEventFilter = TypedEventFilter; - -export interface SystemContractDeployedEventObject {} -export type SystemContractDeployedEvent = TypedEvent< - [], - SystemContractDeployedEventObject ->; - -export type SystemContractDeployedEventFilter = - TypedEventFilter; - -export interface MockSystemContract extends BaseContract { - connect(signerOrProvider: Signer | Provider | string): this; - attach(addressOrName: string): this; - deployed(): Promise; - - interface: MockSystemContractInterface; - - queryFilter( - event: TypedEventFilter, - fromBlockOrBlockhash?: string | number | undefined, - toBlock?: string | number | undefined - ): Promise>; - - listeners( - eventFilter?: TypedEventFilter - ): Array>; - listeners(eventName?: string): Array; - removeAllListeners( - eventFilter: TypedEventFilter - ): this; - removeAllListeners(eventName?: string): this; - off: OnEvent; - on: OnEvent; - once: OnEvent; - removeListener: OnEvent; - - functions: { - gasCoinZRC20ByChainId( - arg0: PromiseOrValue, - overrides?: CallOverrides - ): Promise<[string]>; - - gasPriceByChainId( - arg0: PromiseOrValue, - overrides?: CallOverrides - ): Promise<[BigNumber]>; - - gasZetaPoolByChainId( - arg0: PromiseOrValue, - overrides?: CallOverrides - ): Promise<[string]>; - - onCrossChainCall( - chainID: PromiseOrValue, - target: PromiseOrValue, - zrc20: PromiseOrValue, - amount: PromiseOrValue, - message: PromiseOrValue, - overrides?: Overrides & { from?: PromiseOrValue } - ): Promise; - - setGasCoinZRC20( - chainID: PromiseOrValue, - zrc20: PromiseOrValue, - overrides?: Overrides & { from?: PromiseOrValue } - ): Promise; - - setGasPrice( - chainID: PromiseOrValue, - price: PromiseOrValue, - overrides?: Overrides & { from?: PromiseOrValue } - ): Promise; - - setWZETAContractAddress( - addr: PromiseOrValue, - overrides?: Overrides & { from?: PromiseOrValue } - ): Promise; - - uniswapv2FactoryAddress(overrides?: CallOverrides): Promise<[string]>; - - uniswapv2PairFor( - factory: PromiseOrValue, - tokenA: PromiseOrValue, - tokenB: PromiseOrValue, - overrides?: CallOverrides - ): Promise<[string] & { pair: string }>; - - uniswapv2Router02Address(overrides?: CallOverrides): Promise<[string]>; - - wZetaContractAddress(overrides?: CallOverrides): Promise<[string]>; - }; - - gasCoinZRC20ByChainId( - arg0: PromiseOrValue, - overrides?: CallOverrides - ): Promise; - - gasPriceByChainId( - arg0: PromiseOrValue, - overrides?: CallOverrides - ): Promise; - - gasZetaPoolByChainId( - arg0: PromiseOrValue, - overrides?: CallOverrides - ): Promise; - - onCrossChainCall( - chainID: PromiseOrValue, - target: PromiseOrValue, - zrc20: PromiseOrValue, - amount: PromiseOrValue, - message: PromiseOrValue, - overrides?: Overrides & { from?: PromiseOrValue } - ): Promise; - - setGasCoinZRC20( - chainID: PromiseOrValue, - zrc20: PromiseOrValue, - overrides?: Overrides & { from?: PromiseOrValue } - ): Promise; - - setGasPrice( - chainID: PromiseOrValue, - price: PromiseOrValue, - overrides?: Overrides & { from?: PromiseOrValue } - ): Promise; - - setWZETAContractAddress( - addr: PromiseOrValue, - overrides?: Overrides & { from?: PromiseOrValue } - ): Promise; - - uniswapv2FactoryAddress(overrides?: CallOverrides): Promise; - - uniswapv2PairFor( - factory: PromiseOrValue, - tokenA: PromiseOrValue, - tokenB: PromiseOrValue, - overrides?: CallOverrides - ): Promise; - - uniswapv2Router02Address(overrides?: CallOverrides): Promise; - - wZetaContractAddress(overrides?: CallOverrides): Promise; - - callStatic: { - gasCoinZRC20ByChainId( - arg0: PromiseOrValue, - overrides?: CallOverrides - ): Promise; - - gasPriceByChainId( - arg0: PromiseOrValue, - overrides?: CallOverrides - ): Promise; - - gasZetaPoolByChainId( - arg0: PromiseOrValue, - overrides?: CallOverrides - ): Promise; - - onCrossChainCall( - chainID: PromiseOrValue, - target: PromiseOrValue, - zrc20: PromiseOrValue, - amount: PromiseOrValue, - message: PromiseOrValue, - overrides?: CallOverrides - ): Promise; - - setGasCoinZRC20( - chainID: PromiseOrValue, - zrc20: PromiseOrValue, - overrides?: CallOverrides - ): Promise; - - setGasPrice( - chainID: PromiseOrValue, - price: PromiseOrValue, - overrides?: CallOverrides - ): Promise; - - setWZETAContractAddress( - addr: PromiseOrValue, - overrides?: CallOverrides - ): Promise; - - uniswapv2FactoryAddress(overrides?: CallOverrides): Promise; - - uniswapv2PairFor( - factory: PromiseOrValue, - tokenA: PromiseOrValue, - tokenB: PromiseOrValue, - overrides?: CallOverrides - ): Promise; - - uniswapv2Router02Address(overrides?: CallOverrides): Promise; - - wZetaContractAddress(overrides?: CallOverrides): Promise; - }; - - filters: { - "SetGasCoin(uint256,address)"( - arg0?: null, - arg1?: null - ): SetGasCoinEventFilter; - SetGasCoin(arg0?: null, arg1?: null): SetGasCoinEventFilter; - - "SetGasPrice(uint256,uint256)"( - arg0?: null, - arg1?: null - ): SetGasPriceEventFilter; - SetGasPrice(arg0?: null, arg1?: null): SetGasPriceEventFilter; - - "SetGasZetaPool(uint256,address)"( - arg0?: null, - arg1?: null - ): SetGasZetaPoolEventFilter; - SetGasZetaPool(arg0?: null, arg1?: null): SetGasZetaPoolEventFilter; - - "SetWZeta(address)"(arg0?: null): SetWZetaEventFilter; - SetWZeta(arg0?: null): SetWZetaEventFilter; - - "SystemContractDeployed()"(): SystemContractDeployedEventFilter; - SystemContractDeployed(): SystemContractDeployedEventFilter; - }; - - estimateGas: { - gasCoinZRC20ByChainId( - arg0: PromiseOrValue, - overrides?: CallOverrides - ): Promise; - - gasPriceByChainId( - arg0: PromiseOrValue, - overrides?: CallOverrides - ): Promise; - - gasZetaPoolByChainId( - arg0: PromiseOrValue, - overrides?: CallOverrides - ): Promise; - - onCrossChainCall( - chainID: PromiseOrValue, - target: PromiseOrValue, - zrc20: PromiseOrValue, - amount: PromiseOrValue, - message: PromiseOrValue, - overrides?: Overrides & { from?: PromiseOrValue } - ): Promise; - - setGasCoinZRC20( - chainID: PromiseOrValue, - zrc20: PromiseOrValue, - overrides?: Overrides & { from?: PromiseOrValue } - ): Promise; - - setGasPrice( - chainID: PromiseOrValue, - price: PromiseOrValue, - overrides?: Overrides & { from?: PromiseOrValue } - ): Promise; - - setWZETAContractAddress( - addr: PromiseOrValue, - overrides?: Overrides & { from?: PromiseOrValue } - ): Promise; - - uniswapv2FactoryAddress(overrides?: CallOverrides): Promise; - - uniswapv2PairFor( - factory: PromiseOrValue, - tokenA: PromiseOrValue, - tokenB: PromiseOrValue, - overrides?: CallOverrides - ): Promise; - - uniswapv2Router02Address(overrides?: CallOverrides): Promise; - - wZetaContractAddress(overrides?: CallOverrides): Promise; - }; - - populateTransaction: { - gasCoinZRC20ByChainId( - arg0: PromiseOrValue, - overrides?: CallOverrides - ): Promise; - - gasPriceByChainId( - arg0: PromiseOrValue, - overrides?: CallOverrides - ): Promise; - - gasZetaPoolByChainId( - arg0: PromiseOrValue, - overrides?: CallOverrides - ): Promise; - - onCrossChainCall( - chainID: PromiseOrValue, - target: PromiseOrValue, - zrc20: PromiseOrValue, - amount: PromiseOrValue, - message: PromiseOrValue, - overrides?: Overrides & { from?: PromiseOrValue } - ): Promise; - - setGasCoinZRC20( - chainID: PromiseOrValue, - zrc20: PromiseOrValue, - overrides?: Overrides & { from?: PromiseOrValue } - ): Promise; - - setGasPrice( - chainID: PromiseOrValue, - price: PromiseOrValue, - overrides?: Overrides & { from?: PromiseOrValue } - ): Promise; - - setWZETAContractAddress( - addr: PromiseOrValue, - overrides?: Overrides & { from?: PromiseOrValue } - ): Promise; - - uniswapv2FactoryAddress( - overrides?: CallOverrides - ): Promise; - - uniswapv2PairFor( - factory: PromiseOrValue, - tokenA: PromiseOrValue, - tokenB: PromiseOrValue, - overrides?: CallOverrides - ): Promise; - - uniswapv2Router02Address( - overrides?: CallOverrides - ): Promise; - - wZetaContractAddress( - overrides?: CallOverrides - ): Promise; - }; -} diff --git a/typechain-types/contracts/shared/MockSystemContract.sol/index.ts b/typechain-types/contracts/shared/MockSystemContract.sol/index.ts deleted file mode 100644 index da3a6f9a..00000000 --- a/typechain-types/contracts/shared/MockSystemContract.sol/index.ts +++ /dev/null @@ -1,5 +0,0 @@ -/* Autogenerated file. Do not edit manually. */ -/* tslint:disable */ -/* eslint-disable */ -export type { MockSystemContract } from "./MockSystemContract"; -export type { SystemContractErrors } from "./SystemContractErrors"; diff --git a/typechain-types/contracts/shared/MockZRC20.ts b/typechain-types/contracts/shared/MockZRC20.ts index b1392243..4272829d 100644 --- a/typechain-types/contracts/shared/MockZRC20.ts +++ b/typechain-types/contracts/shared/MockZRC20.ts @@ -34,11 +34,9 @@ export interface MockZRC20Interface extends utils.Interface { "balanceOf(address)": FunctionFragment; "bytesToAddress(bytes,uint256,uint256)": FunctionFragment; "decimals()": FunctionFragment; - "decreaseAllowance(address,uint256)": FunctionFragment; "deposit(address,uint256)": FunctionFragment; "gasFee()": FunctionFragment; "gasFeeAddress()": FunctionFragment; - "increaseAllowance(address,uint256)": FunctionFragment; "name()": FunctionFragment; "setGasFee(uint256)": FunctionFragment; "setGasFeeAddress(address)": FunctionFragment; @@ -57,11 +55,9 @@ export interface MockZRC20Interface extends utils.Interface { | "balanceOf" | "bytesToAddress" | "decimals" - | "decreaseAllowance" | "deposit" | "gasFee" | "gasFeeAddress" - | "increaseAllowance" | "name" | "setGasFee" | "setGasFeeAddress" @@ -94,10 +90,6 @@ export interface MockZRC20Interface extends utils.Interface { ] ): string; encodeFunctionData(functionFragment: "decimals", values?: undefined): string; - encodeFunctionData( - functionFragment: "decreaseAllowance", - values: [PromiseOrValue, PromiseOrValue] - ): string; encodeFunctionData( functionFragment: "deposit", values: [PromiseOrValue, PromiseOrValue] @@ -107,10 +99,6 @@ export interface MockZRC20Interface extends utils.Interface { functionFragment: "gasFeeAddress", values?: undefined ): string; - encodeFunctionData( - functionFragment: "increaseAllowance", - values: [PromiseOrValue, PromiseOrValue] - ): string; encodeFunctionData(functionFragment: "name", values?: undefined): string; encodeFunctionData( functionFragment: "setGasFee", @@ -154,20 +142,12 @@ export interface MockZRC20Interface extends utils.Interface { data: BytesLike ): Result; decodeFunctionResult(functionFragment: "decimals", data: BytesLike): Result; - decodeFunctionResult( - functionFragment: "decreaseAllowance", - data: BytesLike - ): Result; decodeFunctionResult(functionFragment: "deposit", data: BytesLike): Result; decodeFunctionResult(functionFragment: "gasFee", data: BytesLike): Result; decodeFunctionResult( functionFragment: "gasFeeAddress", data: BytesLike ): Result; - decodeFunctionResult( - functionFragment: "increaseAllowance", - data: BytesLike - ): Result; decodeFunctionResult(functionFragment: "name", data: BytesLike): Result; decodeFunctionResult(functionFragment: "setGasFee", data: BytesLike): Result; decodeFunctionResult( @@ -274,7 +254,7 @@ export interface MockZRC20 extends BaseContract { approve( spender: PromiseOrValue, - amount: PromiseOrValue, + value: PromiseOrValue, overrides?: Overrides & { from?: PromiseOrValue } ): Promise; @@ -292,12 +272,6 @@ export interface MockZRC20 extends BaseContract { decimals(overrides?: CallOverrides): Promise<[number]>; - decreaseAllowance( - spender: PromiseOrValue, - subtractedValue: PromiseOrValue, - overrides?: Overrides & { from?: PromiseOrValue } - ): Promise; - deposit( to: PromiseOrValue, amount: PromiseOrValue, @@ -308,12 +282,6 @@ export interface MockZRC20 extends BaseContract { gasFeeAddress(overrides?: CallOverrides): Promise<[string]>; - increaseAllowance( - spender: PromiseOrValue, - addedValue: PromiseOrValue, - overrides?: Overrides & { from?: PromiseOrValue } - ): Promise; - name(overrides?: CallOverrides): Promise<[string]>; setGasFee( @@ -332,14 +300,14 @@ export interface MockZRC20 extends BaseContract { transfer( to: PromiseOrValue, - amount: PromiseOrValue, + value: PromiseOrValue, overrides?: Overrides & { from?: PromiseOrValue } ): Promise; transferFrom( from: PromiseOrValue, to: PromiseOrValue, - amount: PromiseOrValue, + value: PromiseOrValue, overrides?: Overrides & { from?: PromiseOrValue } ): Promise; @@ -360,7 +328,7 @@ export interface MockZRC20 extends BaseContract { approve( spender: PromiseOrValue, - amount: PromiseOrValue, + value: PromiseOrValue, overrides?: Overrides & { from?: PromiseOrValue } ): Promise; @@ -378,12 +346,6 @@ export interface MockZRC20 extends BaseContract { decimals(overrides?: CallOverrides): Promise; - decreaseAllowance( - spender: PromiseOrValue, - subtractedValue: PromiseOrValue, - overrides?: Overrides & { from?: PromiseOrValue } - ): Promise; - deposit( to: PromiseOrValue, amount: PromiseOrValue, @@ -394,12 +356,6 @@ export interface MockZRC20 extends BaseContract { gasFeeAddress(overrides?: CallOverrides): Promise; - increaseAllowance( - spender: PromiseOrValue, - addedValue: PromiseOrValue, - overrides?: Overrides & { from?: PromiseOrValue } - ): Promise; - name(overrides?: CallOverrides): Promise; setGasFee( @@ -418,14 +374,14 @@ export interface MockZRC20 extends BaseContract { transfer( to: PromiseOrValue, - amount: PromiseOrValue, + value: PromiseOrValue, overrides?: Overrides & { from?: PromiseOrValue } ): Promise; transferFrom( from: PromiseOrValue, to: PromiseOrValue, - amount: PromiseOrValue, + value: PromiseOrValue, overrides?: Overrides & { from?: PromiseOrValue } ): Promise; @@ -446,7 +402,7 @@ export interface MockZRC20 extends BaseContract { approve( spender: PromiseOrValue, - amount: PromiseOrValue, + value: PromiseOrValue, overrides?: CallOverrides ): Promise; @@ -464,12 +420,6 @@ export interface MockZRC20 extends BaseContract { decimals(overrides?: CallOverrides): Promise; - decreaseAllowance( - spender: PromiseOrValue, - subtractedValue: PromiseOrValue, - overrides?: CallOverrides - ): Promise; - deposit( to: PromiseOrValue, amount: PromiseOrValue, @@ -480,12 +430,6 @@ export interface MockZRC20 extends BaseContract { gasFeeAddress(overrides?: CallOverrides): Promise; - increaseAllowance( - spender: PromiseOrValue, - addedValue: PromiseOrValue, - overrides?: CallOverrides - ): Promise; - name(overrides?: CallOverrides): Promise; setGasFee( @@ -504,14 +448,14 @@ export interface MockZRC20 extends BaseContract { transfer( to: PromiseOrValue, - amount: PromiseOrValue, + value: PromiseOrValue, overrides?: CallOverrides ): Promise; transferFrom( from: PromiseOrValue, to: PromiseOrValue, - amount: PromiseOrValue, + value: PromiseOrValue, overrides?: CallOverrides ): Promise; @@ -572,7 +516,7 @@ export interface MockZRC20 extends BaseContract { approve( spender: PromiseOrValue, - amount: PromiseOrValue, + value: PromiseOrValue, overrides?: Overrides & { from?: PromiseOrValue } ): Promise; @@ -590,12 +534,6 @@ export interface MockZRC20 extends BaseContract { decimals(overrides?: CallOverrides): Promise; - decreaseAllowance( - spender: PromiseOrValue, - subtractedValue: PromiseOrValue, - overrides?: Overrides & { from?: PromiseOrValue } - ): Promise; - deposit( to: PromiseOrValue, amount: PromiseOrValue, @@ -606,12 +544,6 @@ export interface MockZRC20 extends BaseContract { gasFeeAddress(overrides?: CallOverrides): Promise; - increaseAllowance( - spender: PromiseOrValue, - addedValue: PromiseOrValue, - overrides?: Overrides & { from?: PromiseOrValue } - ): Promise; - name(overrides?: CallOverrides): Promise; setGasFee( @@ -630,14 +562,14 @@ export interface MockZRC20 extends BaseContract { transfer( to: PromiseOrValue, - amount: PromiseOrValue, + value: PromiseOrValue, overrides?: Overrides & { from?: PromiseOrValue } ): Promise; transferFrom( from: PromiseOrValue, to: PromiseOrValue, - amount: PromiseOrValue, + value: PromiseOrValue, overrides?: Overrides & { from?: PromiseOrValue } ): Promise; @@ -659,7 +591,7 @@ export interface MockZRC20 extends BaseContract { approve( spender: PromiseOrValue, - amount: PromiseOrValue, + value: PromiseOrValue, overrides?: Overrides & { from?: PromiseOrValue } ): Promise; @@ -677,12 +609,6 @@ export interface MockZRC20 extends BaseContract { decimals(overrides?: CallOverrides): Promise; - decreaseAllowance( - spender: PromiseOrValue, - subtractedValue: PromiseOrValue, - overrides?: Overrides & { from?: PromiseOrValue } - ): Promise; - deposit( to: PromiseOrValue, amount: PromiseOrValue, @@ -693,12 +619,6 @@ export interface MockZRC20 extends BaseContract { gasFeeAddress(overrides?: CallOverrides): Promise; - increaseAllowance( - spender: PromiseOrValue, - addedValue: PromiseOrValue, - overrides?: Overrides & { from?: PromiseOrValue } - ): Promise; - name(overrides?: CallOverrides): Promise; setGasFee( @@ -717,14 +637,14 @@ export interface MockZRC20 extends BaseContract { transfer( to: PromiseOrValue, - amount: PromiseOrValue, + value: PromiseOrValue, overrides?: Overrides & { from?: PromiseOrValue } ): Promise; transferFrom( from: PromiseOrValue, to: PromiseOrValue, - amount: PromiseOrValue, + value: PromiseOrValue, overrides?: Overrides & { from?: PromiseOrValue } ): Promise; diff --git a/typechain-types/contracts/shared/index.ts b/typechain-types/contracts/shared/index.ts index ca611ab0..2a7ceeeb 100644 --- a/typechain-types/contracts/shared/index.ts +++ b/typechain-types/contracts/shared/index.ts @@ -1,8 +1,6 @@ /* Autogenerated file. Do not edit manually. */ /* tslint:disable */ /* eslint-disable */ -import type * as mockSystemContractSol from "./MockSystemContract.sol"; -export type { mockSystemContractSol }; import type * as interfaces from "./interfaces"; export type { interfaces }; import type * as libraries from "./libraries"; diff --git a/typechain-types/factories/@openzeppelin/contracts/index.ts b/typechain-types/factories/@openzeppelin/contracts/index.ts index a9780efc..074241cc 100644 --- a/typechain-types/factories/@openzeppelin/contracts/index.ts +++ b/typechain-types/factories/@openzeppelin/contracts/index.ts @@ -1,4 +1,5 @@ /* Autogenerated file. Do not edit manually. */ /* tslint:disable */ /* eslint-disable */ +export * as interfaces from "./interfaces"; export * as token from "./token"; diff --git a/typechain-types/factories/@openzeppelin/contracts/interfaces/draft-IERC6093.sol/IERC1155Errors__factory.ts b/typechain-types/factories/@openzeppelin/contracts/interfaces/draft-IERC6093.sol/IERC1155Errors__factory.ts new file mode 100644 index 00000000..ed45b0f3 --- /dev/null +++ b/typechain-types/factories/@openzeppelin/contracts/interfaces/draft-IERC6093.sol/IERC1155Errors__factory.ts @@ -0,0 +1,128 @@ +/* Autogenerated file. Do not edit manually. */ +/* tslint:disable */ +/* eslint-disable */ + +import { Contract, Signer, utils } from "ethers"; +import type { Provider } from "@ethersproject/providers"; +import type { + IERC1155Errors, + IERC1155ErrorsInterface, +} from "../../../../../@openzeppelin/contracts/interfaces/draft-IERC6093.sol/IERC1155Errors"; + +const _abi = [ + { + inputs: [ + { + internalType: "address", + name: "sender", + type: "address", + }, + { + internalType: "uint256", + name: "balance", + type: "uint256", + }, + { + internalType: "uint256", + name: "needed", + type: "uint256", + }, + { + internalType: "uint256", + name: "tokenId", + type: "uint256", + }, + ], + name: "ERC1155InsufficientBalance", + type: "error", + }, + { + inputs: [ + { + internalType: "address", + name: "approver", + type: "address", + }, + ], + name: "ERC1155InvalidApprover", + type: "error", + }, + { + inputs: [ + { + internalType: "uint256", + name: "idsLength", + type: "uint256", + }, + { + internalType: "uint256", + name: "valuesLength", + type: "uint256", + }, + ], + name: "ERC1155InvalidArrayLength", + type: "error", + }, + { + inputs: [ + { + internalType: "address", + name: "operator", + type: "address", + }, + ], + name: "ERC1155InvalidOperator", + type: "error", + }, + { + inputs: [ + { + internalType: "address", + name: "receiver", + type: "address", + }, + ], + name: "ERC1155InvalidReceiver", + type: "error", + }, + { + inputs: [ + { + internalType: "address", + name: "sender", + type: "address", + }, + ], + name: "ERC1155InvalidSender", + type: "error", + }, + { + inputs: [ + { + internalType: "address", + name: "operator", + type: "address", + }, + { + internalType: "address", + name: "owner", + type: "address", + }, + ], + name: "ERC1155MissingApprovalForAll", + type: "error", + }, +] as const; + +export class IERC1155Errors__factory { + static readonly abi = _abi; + static createInterface(): IERC1155ErrorsInterface { + return new utils.Interface(_abi) as IERC1155ErrorsInterface; + } + static connect( + address: string, + signerOrProvider: Signer | Provider + ): IERC1155Errors { + return new Contract(address, _abi, signerOrProvider) as IERC1155Errors; + } +} diff --git a/typechain-types/factories/@openzeppelin/contracts/interfaces/draft-IERC6093.sol/IERC20Errors__factory.ts b/typechain-types/factories/@openzeppelin/contracts/interfaces/draft-IERC6093.sol/IERC20Errors__factory.ts new file mode 100644 index 00000000..8daa8d82 --- /dev/null +++ b/typechain-types/factories/@openzeppelin/contracts/interfaces/draft-IERC6093.sol/IERC20Errors__factory.ts @@ -0,0 +1,112 @@ +/* Autogenerated file. Do not edit manually. */ +/* tslint:disable */ +/* eslint-disable */ + +import { Contract, Signer, utils } from "ethers"; +import type { Provider } from "@ethersproject/providers"; +import type { + IERC20Errors, + IERC20ErrorsInterface, +} from "../../../../../@openzeppelin/contracts/interfaces/draft-IERC6093.sol/IERC20Errors"; + +const _abi = [ + { + inputs: [ + { + internalType: "address", + name: "spender", + type: "address", + }, + { + internalType: "uint256", + name: "allowance", + type: "uint256", + }, + { + internalType: "uint256", + name: "needed", + type: "uint256", + }, + ], + name: "ERC20InsufficientAllowance", + type: "error", + }, + { + inputs: [ + { + internalType: "address", + name: "sender", + type: "address", + }, + { + internalType: "uint256", + name: "balance", + type: "uint256", + }, + { + internalType: "uint256", + name: "needed", + type: "uint256", + }, + ], + name: "ERC20InsufficientBalance", + type: "error", + }, + { + inputs: [ + { + internalType: "address", + name: "approver", + type: "address", + }, + ], + name: "ERC20InvalidApprover", + type: "error", + }, + { + inputs: [ + { + internalType: "address", + name: "receiver", + type: "address", + }, + ], + name: "ERC20InvalidReceiver", + type: "error", + }, + { + inputs: [ + { + internalType: "address", + name: "sender", + type: "address", + }, + ], + name: "ERC20InvalidSender", + type: "error", + }, + { + inputs: [ + { + internalType: "address", + name: "spender", + type: "address", + }, + ], + name: "ERC20InvalidSpender", + type: "error", + }, +] as const; + +export class IERC20Errors__factory { + static readonly abi = _abi; + static createInterface(): IERC20ErrorsInterface { + return new utils.Interface(_abi) as IERC20ErrorsInterface; + } + static connect( + address: string, + signerOrProvider: Signer | Provider + ): IERC20Errors { + return new Contract(address, _abi, signerOrProvider) as IERC20Errors; + } +} diff --git a/typechain-types/factories/@openzeppelin/contracts/interfaces/draft-IERC6093.sol/IERC721Errors__factory.ts b/typechain-types/factories/@openzeppelin/contracts/interfaces/draft-IERC6093.sol/IERC721Errors__factory.ts new file mode 100644 index 00000000..ae4681c2 --- /dev/null +++ b/typechain-types/factories/@openzeppelin/contracts/interfaces/draft-IERC6093.sol/IERC721Errors__factory.ts @@ -0,0 +1,129 @@ +/* Autogenerated file. Do not edit manually. */ +/* tslint:disable */ +/* eslint-disable */ + +import { Contract, Signer, utils } from "ethers"; +import type { Provider } from "@ethersproject/providers"; +import type { + IERC721Errors, + IERC721ErrorsInterface, +} from "../../../../../@openzeppelin/contracts/interfaces/draft-IERC6093.sol/IERC721Errors"; + +const _abi = [ + { + inputs: [ + { + internalType: "address", + name: "sender", + type: "address", + }, + { + internalType: "uint256", + name: "tokenId", + type: "uint256", + }, + { + internalType: "address", + name: "owner", + type: "address", + }, + ], + name: "ERC721IncorrectOwner", + type: "error", + }, + { + inputs: [ + { + internalType: "address", + name: "operator", + type: "address", + }, + { + internalType: "uint256", + name: "tokenId", + type: "uint256", + }, + ], + name: "ERC721InsufficientApproval", + type: "error", + }, + { + inputs: [ + { + internalType: "address", + name: "approver", + type: "address", + }, + ], + name: "ERC721InvalidApprover", + type: "error", + }, + { + inputs: [ + { + internalType: "address", + name: "operator", + type: "address", + }, + ], + name: "ERC721InvalidOperator", + type: "error", + }, + { + inputs: [ + { + internalType: "address", + name: "owner", + type: "address", + }, + ], + name: "ERC721InvalidOwner", + type: "error", + }, + { + inputs: [ + { + internalType: "address", + name: "receiver", + type: "address", + }, + ], + name: "ERC721InvalidReceiver", + type: "error", + }, + { + inputs: [ + { + internalType: "address", + name: "sender", + type: "address", + }, + ], + name: "ERC721InvalidSender", + type: "error", + }, + { + inputs: [ + { + internalType: "uint256", + name: "tokenId", + type: "uint256", + }, + ], + name: "ERC721NonexistentToken", + type: "error", + }, +] as const; + +export class IERC721Errors__factory { + static readonly abi = _abi; + static createInterface(): IERC721ErrorsInterface { + return new utils.Interface(_abi) as IERC721ErrorsInterface; + } + static connect( + address: string, + signerOrProvider: Signer | Provider + ): IERC721Errors { + return new Contract(address, _abi, signerOrProvider) as IERC721Errors; + } +} diff --git a/typechain-types/factories/@openzeppelin/contracts/interfaces/draft-IERC6093.sol/index.ts b/typechain-types/factories/@openzeppelin/contracts/interfaces/draft-IERC6093.sol/index.ts new file mode 100644 index 00000000..571330ea --- /dev/null +++ b/typechain-types/factories/@openzeppelin/contracts/interfaces/draft-IERC6093.sol/index.ts @@ -0,0 +1,6 @@ +/* Autogenerated file. Do not edit manually. */ +/* tslint:disable */ +/* eslint-disable */ +export { IERC1155Errors__factory } from "./IERC1155Errors__factory"; +export { IERC20Errors__factory } from "./IERC20Errors__factory"; +export { IERC721Errors__factory } from "./IERC721Errors__factory"; diff --git a/typechain-types/factories/@zetachain/protocol-contracts/contracts/evm/interfaces/index.ts b/typechain-types/factories/@openzeppelin/contracts/interfaces/index.ts similarity index 60% rename from typechain-types/factories/@zetachain/protocol-contracts/contracts/evm/interfaces/index.ts rename to typechain-types/factories/@openzeppelin/contracts/interfaces/index.ts index e9347caa..82d047e8 100644 --- a/typechain-types/factories/@zetachain/protocol-contracts/contracts/evm/interfaces/index.ts +++ b/typechain-types/factories/@openzeppelin/contracts/interfaces/index.ts @@ -1,4 +1,4 @@ /* Autogenerated file. Do not edit manually. */ /* tslint:disable */ /* eslint-disable */ -export * as zetaInterfacesSol from "./ZetaInterfaces.sol"; +export * as draftIerc6093Sol from "./draft-IERC6093.sol"; diff --git a/typechain-types/factories/@openzeppelin/contracts/token/ERC20/ERC20__factory.ts b/typechain-types/factories/@openzeppelin/contracts/token/ERC20/ERC20__factory.ts index 5b02ab32..a7ef16c0 100644 --- a/typechain-types/factories/@openzeppelin/contracts/token/ERC20/ERC20__factory.ts +++ b/typechain-types/factories/@openzeppelin/contracts/token/ERC20/ERC20__factory.ts @@ -1,9 +1,9 @@ /* Autogenerated file. Do not edit manually. */ /* tslint:disable */ /* eslint-disable */ -import { Signer, utils, Contract, ContractFactory, Overrides } from "ethers"; -import type { Provider, TransactionRequest } from "@ethersproject/providers"; -import type { PromiseOrValue } from "../../../../../common"; + +import { Contract, Signer, utils } from "ethers"; +import type { Provider } from "@ethersproject/providers"; import type { ERC20, ERC20Interface, @@ -13,18 +13,88 @@ const _abi = [ { inputs: [ { - internalType: "string", - name: "name_", - type: "string", + internalType: "address", + name: "spender", + type: "address", }, { - internalType: "string", - name: "symbol_", - type: "string", + internalType: "uint256", + name: "allowance", + type: "uint256", + }, + { + internalType: "uint256", + name: "needed", + type: "uint256", }, ], - stateMutability: "nonpayable", - type: "constructor", + name: "ERC20InsufficientAllowance", + type: "error", + }, + { + inputs: [ + { + internalType: "address", + name: "sender", + type: "address", + }, + { + internalType: "uint256", + name: "balance", + type: "uint256", + }, + { + internalType: "uint256", + name: "needed", + type: "uint256", + }, + ], + name: "ERC20InsufficientBalance", + type: "error", + }, + { + inputs: [ + { + internalType: "address", + name: "approver", + type: "address", + }, + ], + name: "ERC20InvalidApprover", + type: "error", + }, + { + inputs: [ + { + internalType: "address", + name: "receiver", + type: "address", + }, + ], + name: "ERC20InvalidReceiver", + type: "error", + }, + { + inputs: [ + { + internalType: "address", + name: "sender", + type: "address", + }, + ], + name: "ERC20InvalidSender", + type: "error", + }, + { + inputs: [ + { + internalType: "address", + name: "spender", + type: "address", + }, + ], + name: "ERC20InvalidSpender", + type: "error", }, { anonymous: false, @@ -109,7 +179,7 @@ const _abi = [ }, { internalType: "uint256", - name: "amount", + name: "value", type: "uint256", }, ], @@ -156,54 +226,6 @@ const _abi = [ stateMutability: "view", type: "function", }, - { - 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", - }, - { - 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", - }, { inputs: [], name: "name", @@ -252,7 +274,7 @@ const _abi = [ }, { internalType: "uint256", - name: "amount", + name: "value", type: "uint256", }, ], @@ -281,7 +303,7 @@ const _abi = [ }, { internalType: "uint256", - name: "amount", + name: "value", type: "uint256", }, ], @@ -298,48 +320,7 @@ const _abi = [ }, ] as const; -const _bytecode = - "0x608060405234801561001057600080fd5b50604051611777380380611777833981810160405281019061003291906101ce565b81600390816100419190610467565b5080600490816100519190610467565b505050610539565b6000604051905090565b600080fd5b600080fd5b600080fd5b600080fd5b6000601f19601f8301169050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b6100c082610077565b810181811067ffffffffffffffff821117156100df576100de610088565b5b80604052505050565b60006100f2610059565b90506100fe82826100b7565b919050565b600067ffffffffffffffff82111561011e5761011d610088565b5b61012782610077565b9050602081019050919050565b60005b83811015610152578082015181840152602081019050610137565b60008484015250505050565b600061017161016c84610103565b6100e8565b90508281526020810184848401111561018d5761018c610072565b5b610198848285610134565b509392505050565b600082601f8301126101b5576101b461006d565b5b81516101c584826020860161015e565b91505092915050565b600080604083850312156101e5576101e4610063565b5b600083015167ffffffffffffffff81111561020357610202610068565b5b61020f858286016101a0565b925050602083015167ffffffffffffffff8111156102305761022f610068565b5b61023c858286016101a0565b9150509250929050565b600081519050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052602260045260246000fd5b6000600282049050600182168061029857607f821691505b6020821081036102ab576102aa610251565b5b50919050565b60008190508160005260206000209050919050565b60006020601f8301049050919050565b600082821b905092915050565b6000600883026103137fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff826102d6565b61031d86836102d6565b95508019841693508086168417925050509392505050565b6000819050919050565b6000819050919050565b600061036461035f61035a84610335565b61033f565b610335565b9050919050565b6000819050919050565b61037e83610349565b61039261038a8261036b565b8484546102e3565b825550505050565b600090565b6103a761039a565b6103b2818484610375565b505050565b5b818110156103d6576103cb60008261039f565b6001810190506103b8565b5050565b601f82111561041b576103ec816102b1565b6103f5846102c6565b81016020851015610404578190505b610418610410856102c6565b8301826103b7565b50505b505050565b600082821c905092915050565b600061043e60001984600802610420565b1980831691505092915050565b6000610457838361042d565b9150826002028217905092915050565b61047082610246565b67ffffffffffffffff81111561048957610488610088565b5b6104938254610280565b61049e8282856103da565b600060209050601f8311600181146104d157600084156104bf578287015190505b6104c9858261044b565b865550610531565b601f1984166104df866102b1565b60005b82811015610507578489015182556001820191506020850194506020810190506104e2565b868310156105245784890151610520601f89168261042d565b8355505b6001600288020188555050505b505050505050565b61122f806105486000396000f3fe608060405234801561001057600080fd5b50600436106100a95760003560e01c80633950935111610071578063395093511461016857806370a082311461019857806395d89b41146101c8578063a457c2d7146101e6578063a9059cbb14610216578063dd62ed3e14610246576100a9565b806306fdde03146100ae578063095ea7b3146100cc57806318160ddd146100fc57806323b872dd1461011a578063313ce5671461014a575b600080fd5b6100b6610276565b6040516100c39190610b0c565b60405180910390f35b6100e660048036038101906100e19190610bc7565b610308565b6040516100f39190610c22565b60405180910390f35b61010461032b565b6040516101119190610c4c565b60405180910390f35b610134600480360381019061012f9190610c67565b610335565b6040516101419190610c22565b60405180910390f35b610152610364565b60405161015f9190610cd6565b60405180910390f35b610182600480360381019061017d9190610bc7565b61036d565b60405161018f9190610c22565b60405180910390f35b6101b260048036038101906101ad9190610cf1565b6103a4565b6040516101bf9190610c4c565b60405180910390f35b6101d06103ec565b6040516101dd9190610b0c565b60405180910390f35b61020060048036038101906101fb9190610bc7565b61047e565b60405161020d9190610c22565b60405180910390f35b610230600480360381019061022b9190610bc7565b6104f5565b60405161023d9190610c22565b60405180910390f35b610260600480360381019061025b9190610d1e565b610518565b60405161026d9190610c4c565b60405180910390f35b60606003805461028590610d8d565b80601f01602080910402602001604051908101604052809291908181526020018280546102b190610d8d565b80156102fe5780601f106102d3576101008083540402835291602001916102fe565b820191906000526020600020905b8154815290600101906020018083116102e157829003601f168201915b5050505050905090565b60008061031361059f565b90506103208185856105a7565b600191505092915050565b6000600254905090565b60008061034061059f565b905061034d858285610770565b6103588585856107fc565b60019150509392505050565b60006012905090565b60008061037861059f565b905061039981858561038a8589610518565b6103949190610ded565b6105a7565b600191505092915050565b60008060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020549050919050565b6060600480546103fb90610d8d565b80601f016020809104026020016040519081016040528092919081815260200182805461042790610d8d565b80156104745780601f1061044957610100808354040283529160200191610474565b820191906000526020600020905b81548152906001019060200180831161045757829003601f168201915b5050505050905090565b60008061048961059f565b905060006104978286610518565b9050838110156104dc576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016104d390610e93565b60405180910390fd5b6104e982868684036105a7565b60019250505092915050565b60008061050061059f565b905061050d8185856107fc565b600191505092915050565b6000600160008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054905092915050565b600033905090565b600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1603610616576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161060d90610f25565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1603610685576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161067c90610fb7565b60405180910390fd5b80600160008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508173ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925836040516107639190610c4c565b60405180910390a3505050565b600061077c8484610518565b90507fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff81146107f657818110156107e8576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016107df90611023565b60405180910390fd5b6107f584848484036105a7565b5b50505050565b600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff160361086b576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610862906110b5565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff16036108da576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016108d190611147565b60405180910390fd5b6108e5838383610a72565b60008060008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205490508181101561096b576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610962906111d9565b60405180910390fd5b8181036000808673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002081905550816000808573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020600082825401925050819055508273ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef84604051610a599190610c4c565b60405180910390a3610a6c848484610a77565b50505050565b505050565b505050565b600081519050919050565b600082825260208201905092915050565b60005b83811015610ab6578082015181840152602081019050610a9b565b60008484015250505050565b6000601f19601f8301169050919050565b6000610ade82610a7c565b610ae88185610a87565b9350610af8818560208601610a98565b610b0181610ac2565b840191505092915050565b60006020820190508181036000830152610b268184610ad3565b905092915050565b600080fd5b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b6000610b5e82610b33565b9050919050565b610b6e81610b53565b8114610b7957600080fd5b50565b600081359050610b8b81610b65565b92915050565b6000819050919050565b610ba481610b91565b8114610baf57600080fd5b50565b600081359050610bc181610b9b565b92915050565b60008060408385031215610bde57610bdd610b2e565b5b6000610bec85828601610b7c565b9250506020610bfd85828601610bb2565b9150509250929050565b60008115159050919050565b610c1c81610c07565b82525050565b6000602082019050610c376000830184610c13565b92915050565b610c4681610b91565b82525050565b6000602082019050610c616000830184610c3d565b92915050565b600080600060608486031215610c8057610c7f610b2e565b5b6000610c8e86828701610b7c565b9350506020610c9f86828701610b7c565b9250506040610cb086828701610bb2565b9150509250925092565b600060ff82169050919050565b610cd081610cba565b82525050565b6000602082019050610ceb6000830184610cc7565b92915050565b600060208284031215610d0757610d06610b2e565b5b6000610d1584828501610b7c565b91505092915050565b60008060408385031215610d3557610d34610b2e565b5b6000610d4385828601610b7c565b9250506020610d5485828601610b7c565b9150509250929050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052602260045260246000fd5b60006002820490506001821680610da557607f821691505b602082108103610db857610db7610d5e565b5b50919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b6000610df882610b91565b9150610e0383610b91565b9250828201905080821115610e1b57610e1a610dbe565b5b92915050565b7f45524332303a2064656372656173656420616c6c6f77616e63652062656c6f7760008201527f207a65726f000000000000000000000000000000000000000000000000000000602082015250565b6000610e7d602583610a87565b9150610e8882610e21565b604082019050919050565b60006020820190508181036000830152610eac81610e70565b9050919050565b7f45524332303a20617070726f76652066726f6d20746865207a65726f2061646460008201527f7265737300000000000000000000000000000000000000000000000000000000602082015250565b6000610f0f602483610a87565b9150610f1a82610eb3565b604082019050919050565b60006020820190508181036000830152610f3e81610f02565b9050919050565b7f45524332303a20617070726f766520746f20746865207a65726f20616464726560008201527f7373000000000000000000000000000000000000000000000000000000000000602082015250565b6000610fa1602283610a87565b9150610fac82610f45565b604082019050919050565b60006020820190508181036000830152610fd081610f94565b9050919050565b7f45524332303a20696e73756666696369656e7420616c6c6f77616e6365000000600082015250565b600061100d601d83610a87565b915061101882610fd7565b602082019050919050565b6000602082019050818103600083015261103c81611000565b9050919050565b7f45524332303a207472616e736665722066726f6d20746865207a65726f20616460008201527f6472657373000000000000000000000000000000000000000000000000000000602082015250565b600061109f602583610a87565b91506110aa82611043565b604082019050919050565b600060208201905081810360008301526110ce81611092565b9050919050565b7f45524332303a207472616e7366657220746f20746865207a65726f206164647260008201527f6573730000000000000000000000000000000000000000000000000000000000602082015250565b6000611131602383610a87565b915061113c826110d5565b604082019050919050565b6000602082019050818103600083015261116081611124565b9050919050565b7f45524332303a207472616e7366657220616d6f756e742065786365656473206260008201527f616c616e63650000000000000000000000000000000000000000000000000000602082015250565b60006111c3602683610a87565b91506111ce82611167565b604082019050919050565b600060208201905081810360008301526111f2816111b6565b905091905056fea2646970667358221220c02b2a39acab76859bade0cecf97bf76856a692f704aac354de5a91a556a12b864736f6c634300081a0033"; - -type ERC20ConstructorParams = - | [signer?: Signer] - | ConstructorParameters; - -const isSuperArgs = ( - xs: ERC20ConstructorParams -): xs is ConstructorParameters => xs.length > 1; - -export class ERC20__factory extends ContractFactory { - constructor(...args: ERC20ConstructorParams) { - if (isSuperArgs(args)) { - super(...args); - } else { - super(_abi, _bytecode, args[0]); - } - } - - override deploy( - name_: PromiseOrValue, - symbol_: PromiseOrValue, - overrides?: Overrides & { from?: PromiseOrValue } - ): Promise { - return super.deploy(name_, symbol_, overrides || {}) as Promise; - } - override getDeployTransaction( - name_: PromiseOrValue, - symbol_: PromiseOrValue, - overrides?: Overrides & { from?: PromiseOrValue } - ): TransactionRequest { - return super.getDeployTransaction(name_, symbol_, overrides || {}); - } - override attach(address: string): ERC20 { - return super.attach(address) as ERC20; - } - override connect(signer: Signer): ERC20__factory { - return super.connect(signer) as ERC20__factory; - } - - static readonly bytecode = _bytecode; +export class ERC20__factory { static readonly abi = _abi; static createInterface(): ERC20Interface { return new utils.Interface(_abi) as ERC20Interface; diff --git a/typechain-types/factories/@openzeppelin/contracts/token/ERC20/IERC20__factory.ts b/typechain-types/factories/@openzeppelin/contracts/token/ERC20/IERC20__factory.ts index cd7fa8f3..2852323a 100644 --- a/typechain-types/factories/@openzeppelin/contracts/token/ERC20/IERC20__factory.ts +++ b/typechain-types/factories/@openzeppelin/contracts/token/ERC20/IERC20__factory.ts @@ -93,7 +93,7 @@ const _abi = [ }, { internalType: "uint256", - name: "amount", + name: "value", type: "uint256", }, ], @@ -149,7 +149,7 @@ const _abi = [ }, { internalType: "uint256", - name: "amount", + name: "value", type: "uint256", }, ], @@ -178,7 +178,7 @@ const _abi = [ }, { internalType: "uint256", - name: "amount", + name: "value", type: "uint256", }, ], diff --git a/typechain-types/factories/@openzeppelin/contracts/token/ERC20/extensions/IERC20Metadata__factory.ts b/typechain-types/factories/@openzeppelin/contracts/token/ERC20/extensions/IERC20Metadata__factory.ts index 47c292bf..12eebd22 100644 --- a/typechain-types/factories/@openzeppelin/contracts/token/ERC20/extensions/IERC20Metadata__factory.ts +++ b/typechain-types/factories/@openzeppelin/contracts/token/ERC20/extensions/IERC20Metadata__factory.ts @@ -93,7 +93,7 @@ const _abi = [ }, { internalType: "uint256", - name: "amount", + name: "value", type: "uint256", }, ], @@ -188,7 +188,7 @@ const _abi = [ }, { internalType: "uint256", - name: "amount", + name: "value", type: "uint256", }, ], @@ -217,7 +217,7 @@ const _abi = [ }, { internalType: "uint256", - name: "amount", + name: "value", type: "uint256", }, ], diff --git a/typechain-types/factories/@zetachain/protocol-contracts/contracts/Revert.sol/Revertable__factory.ts b/typechain-types/factories/@zetachain/protocol-contracts/contracts/Revert.sol/Revertable__factory.ts new file mode 100644 index 00000000..5c854cad --- /dev/null +++ b/typechain-types/factories/@zetachain/protocol-contracts/contracts/Revert.sol/Revertable__factory.ts @@ -0,0 +1,61 @@ +/* Autogenerated file. Do not edit manually. */ +/* tslint:disable */ +/* eslint-disable */ + +import { Contract, Signer, utils } from "ethers"; +import type { Provider } from "@ethersproject/providers"; +import type { + Revertable, + RevertableInterface, +} from "../../../../../@zetachain/protocol-contracts/contracts/Revert.sol/Revertable"; + +const _abi = [ + { + inputs: [ + { + components: [ + { + internalType: "address", + name: "sender", + type: "address", + }, + { + internalType: "address", + name: "asset", + type: "address", + }, + { + internalType: "uint256", + name: "amount", + type: "uint256", + }, + { + internalType: "bytes", + name: "revertMessage", + type: "bytes", + }, + ], + internalType: "struct RevertContext", + name: "revertContext", + type: "tuple", + }, + ], + name: "onRevert", + outputs: [], + stateMutability: "nonpayable", + type: "function", + }, +] as const; + +export class Revertable__factory { + static readonly abi = _abi; + static createInterface(): RevertableInterface { + return new utils.Interface(_abi) as RevertableInterface; + } + static connect( + address: string, + signerOrProvider: Signer | Provider + ): Revertable { + return new Contract(address, _abi, signerOrProvider) as Revertable; + } +} diff --git a/typechain-types/contracts/ZetaConnectorMock.sol/index.ts b/typechain-types/factories/@zetachain/protocol-contracts/contracts/Revert.sol/index.ts similarity index 55% rename from typechain-types/contracts/ZetaConnectorMock.sol/index.ts rename to typechain-types/factories/@zetachain/protocol-contracts/contracts/Revert.sol/index.ts index 94f29c77..eefdeed8 100644 --- a/typechain-types/contracts/ZetaConnectorMock.sol/index.ts +++ b/typechain-types/factories/@zetachain/protocol-contracts/contracts/Revert.sol/index.ts @@ -1,4 +1,4 @@ /* Autogenerated file. Do not edit manually. */ /* tslint:disable */ /* eslint-disable */ -export type { ZetaConnectorMockValue } from "./ZetaConnectorMockValue"; +export { Revertable__factory } from "./Revertable__factory"; diff --git a/typechain-types/factories/@zetachain/protocol-contracts/contracts/evm/interfaces/ZetaInterfaces.sol/ZetaCommonErrors__factory.ts b/typechain-types/factories/@zetachain/protocol-contracts/contracts/evm/interfaces/ZetaInterfaces.sol/ZetaCommonErrors__factory.ts deleted file mode 100644 index 54cb9c31..00000000 --- a/typechain-types/factories/@zetachain/protocol-contracts/contracts/evm/interfaces/ZetaInterfaces.sol/ZetaCommonErrors__factory.ts +++ /dev/null @@ -1,31 +0,0 @@ -/* Autogenerated file. Do not edit manually. */ -/* tslint:disable */ -/* eslint-disable */ - -import { Contract, Signer, utils } from "ethers"; -import type { Provider } from "@ethersproject/providers"; -import type { - ZetaCommonErrors, - ZetaCommonErrorsInterface, -} from "../../../../../../../@zetachain/protocol-contracts/contracts/evm/interfaces/ZetaInterfaces.sol/ZetaCommonErrors"; - -const _abi = [ - { - inputs: [], - name: "InvalidAddress", - type: "error", - }, -] as const; - -export class ZetaCommonErrors__factory { - static readonly abi = _abi; - static createInterface(): ZetaCommonErrorsInterface { - return new utils.Interface(_abi) as ZetaCommonErrorsInterface; - } - static connect( - address: string, - signerOrProvider: Signer | Provider - ): ZetaCommonErrors { - return new Contract(address, _abi, signerOrProvider) as ZetaCommonErrors; - } -} diff --git a/typechain-types/factories/@zetachain/protocol-contracts/contracts/evm/interfaces/ZetaInterfaces.sol/ZetaConnector__factory.ts b/typechain-types/factories/@zetachain/protocol-contracts/contracts/evm/interfaces/ZetaInterfaces.sol/ZetaConnector__factory.ts deleted file mode 100644 index f5a9f4f1..00000000 --- a/typechain-types/factories/@zetachain/protocol-contracts/contracts/evm/interfaces/ZetaInterfaces.sol/ZetaConnector__factory.ts +++ /dev/null @@ -1,71 +0,0 @@ -/* Autogenerated file. Do not edit manually. */ -/* tslint:disable */ -/* eslint-disable */ - -import { Contract, Signer, utils } from "ethers"; -import type { Provider } from "@ethersproject/providers"; -import type { - ZetaConnector, - ZetaConnectorInterface, -} from "../../../../../../../@zetachain/protocol-contracts/contracts/evm/interfaces/ZetaInterfaces.sol/ZetaConnector"; - -const _abi = [ - { - inputs: [ - { - components: [ - { - internalType: "uint256", - name: "destinationChainId", - type: "uint256", - }, - { - internalType: "bytes", - name: "destinationAddress", - type: "bytes", - }, - { - internalType: "uint256", - name: "destinationGasLimit", - type: "uint256", - }, - { - internalType: "bytes", - name: "message", - type: "bytes", - }, - { - internalType: "uint256", - name: "zetaValueAndGas", - type: "uint256", - }, - { - internalType: "bytes", - name: "zetaParams", - type: "bytes", - }, - ], - internalType: "struct ZetaInterfaces.SendInput", - name: "input", - type: "tuple", - }, - ], - name: "send", - outputs: [], - stateMutability: "nonpayable", - type: "function", - }, -] as const; - -export class ZetaConnector__factory { - static readonly abi = _abi; - static createInterface(): ZetaConnectorInterface { - return new utils.Interface(_abi) as ZetaConnectorInterface; - } - static connect( - address: string, - signerOrProvider: Signer | Provider - ): ZetaConnector { - return new Contract(address, _abi, signerOrProvider) as ZetaConnector; - } -} diff --git a/typechain-types/factories/@zetachain/protocol-contracts/contracts/evm/interfaces/ZetaInterfaces.sol/ZetaReceiver__factory.ts b/typechain-types/factories/@zetachain/protocol-contracts/contracts/evm/interfaces/ZetaInterfaces.sol/ZetaReceiver__factory.ts deleted file mode 100644 index b80f11ac..00000000 --- a/typechain-types/factories/@zetachain/protocol-contracts/contracts/evm/interfaces/ZetaInterfaces.sol/ZetaReceiver__factory.ts +++ /dev/null @@ -1,111 +0,0 @@ -/* Autogenerated file. Do not edit manually. */ -/* tslint:disable */ -/* eslint-disable */ - -import { Contract, Signer, utils } from "ethers"; -import type { Provider } from "@ethersproject/providers"; -import type { - ZetaReceiver, - ZetaReceiverInterface, -} from "../../../../../../../@zetachain/protocol-contracts/contracts/evm/interfaces/ZetaInterfaces.sol/ZetaReceiver"; - -const _abi = [ - { - inputs: [ - { - components: [ - { - internalType: "bytes", - name: "zetaTxSenderAddress", - type: "bytes", - }, - { - internalType: "uint256", - name: "sourceChainId", - type: "uint256", - }, - { - internalType: "address", - name: "destinationAddress", - type: "address", - }, - { - internalType: "uint256", - name: "zetaValue", - type: "uint256", - }, - { - internalType: "bytes", - name: "message", - type: "bytes", - }, - ], - internalType: "struct ZetaInterfaces.ZetaMessage", - name: "zetaMessage", - type: "tuple", - }, - ], - name: "onZetaMessage", - outputs: [], - stateMutability: "nonpayable", - type: "function", - }, - { - inputs: [ - { - components: [ - { - internalType: "address", - name: "zetaTxSenderAddress", - type: "address", - }, - { - internalType: "uint256", - name: "sourceChainId", - type: "uint256", - }, - { - internalType: "bytes", - name: "destinationAddress", - type: "bytes", - }, - { - internalType: "uint256", - name: "destinationChainId", - type: "uint256", - }, - { - internalType: "uint256", - name: "remainingZetaValue", - type: "uint256", - }, - { - internalType: "bytes", - name: "message", - type: "bytes", - }, - ], - internalType: "struct ZetaInterfaces.ZetaRevert", - name: "zetaRevert", - type: "tuple", - }, - ], - name: "onZetaRevert", - outputs: [], - stateMutability: "nonpayable", - type: "function", - }, -] as const; - -export class ZetaReceiver__factory { - static readonly abi = _abi; - static createInterface(): ZetaReceiverInterface { - return new utils.Interface(_abi) as ZetaReceiverInterface; - } - static connect( - address: string, - signerOrProvider: Signer | Provider - ): ZetaReceiver { - return new Contract(address, _abi, signerOrProvider) as ZetaReceiver; - } -} diff --git a/typechain-types/factories/@zetachain/protocol-contracts/contracts/evm/interfaces/ZetaInterfaces.sol/ZetaTokenConsumer__factory.ts b/typechain-types/factories/@zetachain/protocol-contracts/contracts/evm/interfaces/ZetaInterfaces.sol/ZetaTokenConsumer__factory.ts deleted file mode 100644 index 9085daa7..00000000 --- a/typechain-types/factories/@zetachain/protocol-contracts/contracts/evm/interfaces/ZetaInterfaces.sol/ZetaTokenConsumer__factory.ts +++ /dev/null @@ -1,248 +0,0 @@ -/* Autogenerated file. Do not edit manually. */ -/* tslint:disable */ -/* eslint-disable */ - -import { Contract, Signer, utils } from "ethers"; -import type { Provider } from "@ethersproject/providers"; -import type { - ZetaTokenConsumer, - ZetaTokenConsumerInterface, -} from "../../../../../../../@zetachain/protocol-contracts/contracts/evm/interfaces/ZetaInterfaces.sol/ZetaTokenConsumer"; - -const _abi = [ - { - anonymous: false, - inputs: [ - { - indexed: false, - internalType: "uint256", - name: "amountIn", - type: "uint256", - }, - { - indexed: false, - internalType: "uint256", - name: "amountOut", - type: "uint256", - }, - ], - name: "EthExchangedForZeta", - type: "event", - }, - { - anonymous: false, - inputs: [ - { - indexed: false, - internalType: "address", - name: "token", - type: "address", - }, - { - indexed: false, - internalType: "uint256", - name: "amountIn", - type: "uint256", - }, - { - indexed: false, - internalType: "uint256", - name: "amountOut", - type: "uint256", - }, - ], - name: "TokenExchangedForZeta", - type: "event", - }, - { - anonymous: false, - inputs: [ - { - indexed: false, - internalType: "uint256", - name: "amountIn", - type: "uint256", - }, - { - indexed: false, - internalType: "uint256", - name: "amountOut", - type: "uint256", - }, - ], - name: "ZetaExchangedForEth", - type: "event", - }, - { - anonymous: false, - inputs: [ - { - indexed: false, - internalType: "address", - name: "token", - type: "address", - }, - { - indexed: false, - internalType: "uint256", - name: "amountIn", - type: "uint256", - }, - { - indexed: false, - internalType: "uint256", - name: "amountOut", - type: "uint256", - }, - ], - name: "ZetaExchangedForToken", - type: "event", - }, - { - inputs: [ - { - internalType: "address", - name: "destinationAddress", - type: "address", - }, - { - internalType: "uint256", - name: "minAmountOut", - type: "uint256", - }, - { - internalType: "uint256", - name: "zetaTokenAmount", - type: "uint256", - }, - ], - name: "getEthFromZeta", - outputs: [ - { - internalType: "uint256", - name: "", - type: "uint256", - }, - ], - stateMutability: "nonpayable", - type: "function", - }, - { - inputs: [ - { - internalType: "address", - name: "destinationAddress", - type: "address", - }, - { - internalType: "uint256", - name: "minAmountOut", - type: "uint256", - }, - { - internalType: "address", - name: "outputToken", - type: "address", - }, - { - internalType: "uint256", - name: "zetaTokenAmount", - type: "uint256", - }, - ], - name: "getTokenFromZeta", - outputs: [ - { - internalType: "uint256", - name: "", - type: "uint256", - }, - ], - stateMutability: "nonpayable", - type: "function", - }, - { - inputs: [ - { - internalType: "address", - name: "destinationAddress", - type: "address", - }, - { - internalType: "uint256", - name: "minAmountOut", - type: "uint256", - }, - ], - name: "getZetaFromEth", - outputs: [ - { - internalType: "uint256", - name: "", - type: "uint256", - }, - ], - stateMutability: "payable", - type: "function", - }, - { - inputs: [ - { - internalType: "address", - name: "destinationAddress", - type: "address", - }, - { - internalType: "uint256", - name: "minAmountOut", - type: "uint256", - }, - { - internalType: "address", - name: "inputToken", - type: "address", - }, - { - internalType: "uint256", - name: "inputTokenAmount", - type: "uint256", - }, - ], - name: "getZetaFromToken", - outputs: [ - { - internalType: "uint256", - name: "", - type: "uint256", - }, - ], - stateMutability: "nonpayable", - type: "function", - }, - { - inputs: [], - name: "hasZetaLiquidity", - outputs: [ - { - internalType: "bool", - name: "", - type: "bool", - }, - ], - stateMutability: "view", - type: "function", - }, -] as const; - -export class ZetaTokenConsumer__factory { - static readonly abi = _abi; - static createInterface(): ZetaTokenConsumerInterface { - return new utils.Interface(_abi) as ZetaTokenConsumerInterface; - } - static connect( - address: string, - signerOrProvider: Signer | Provider - ): ZetaTokenConsumer { - return new Contract(address, _abi, signerOrProvider) as ZetaTokenConsumer; - } -} diff --git a/typechain-types/factories/@zetachain/protocol-contracts/contracts/evm/interfaces/ZetaInterfaces.sol/index.ts b/typechain-types/factories/@zetachain/protocol-contracts/contracts/evm/interfaces/ZetaInterfaces.sol/index.ts deleted file mode 100644 index 7dd58379..00000000 --- a/typechain-types/factories/@zetachain/protocol-contracts/contracts/evm/interfaces/ZetaInterfaces.sol/index.ts +++ /dev/null @@ -1,7 +0,0 @@ -/* Autogenerated file. Do not edit manually. */ -/* tslint:disable */ -/* eslint-disable */ -export { ZetaCommonErrors__factory } from "./ZetaCommonErrors__factory"; -export { ZetaConnector__factory } from "./ZetaConnector__factory"; -export { ZetaReceiver__factory } from "./ZetaReceiver__factory"; -export { ZetaTokenConsumer__factory } from "./ZetaTokenConsumer__factory"; diff --git a/typechain-types/factories/@zetachain/protocol-contracts/contracts/index.ts b/typechain-types/factories/@zetachain/protocol-contracts/contracts/index.ts index 33289123..dd98f78f 100644 --- a/typechain-types/factories/@zetachain/protocol-contracts/contracts/index.ts +++ b/typechain-types/factories/@zetachain/protocol-contracts/contracts/index.ts @@ -1,5 +1,5 @@ /* Autogenerated file. Do not edit manually. */ /* tslint:disable */ /* eslint-disable */ -export * as evm from "./evm"; +export * as revertSol from "./Revert.sol"; export * as zevm from "./zevm"; diff --git a/typechain-types/factories/@zetachain/protocol-contracts/contracts/zevm/SystemContract.sol/SystemContract__factory.ts b/typechain-types/factories/@zetachain/protocol-contracts/contracts/zevm/SystemContract.sol/SystemContract__factory.ts index 8355c03a..25b7d47d 100644 --- a/typechain-types/factories/@zetachain/protocol-contracts/contracts/zevm/SystemContract.sol/SystemContract__factory.ts +++ b/typechain-types/factories/@zetachain/protocol-contracts/contracts/zevm/SystemContract.sol/SystemContract__factory.ts @@ -429,7 +429,7 @@ const _abi = [ ] as const; const _bytecode = - "0x60c06040523480156200001157600080fd5b50604051620018aa380380620018aa8339818101604052810190620000379190620001ac565b73735b14bb79463307aacbed86daf3322b1e6226ab73ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff1614620000b1576040517f2b2add3d00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b82600360006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055508173ffffffffffffffffffffffffffffffffffffffff1660808173ffffffffffffffffffffffffffffffffffffffff1660601b815250508073ffffffffffffffffffffffffffffffffffffffff1660a08173ffffffffffffffffffffffffffffffffffffffff1660601b815250507f80699e81136d69cb8367ad52a994e25c722a86da654b561d0c14b61a777e7ac560405160405180910390a15050506200025b565b600081519050620001a68162000241565b92915050565b600080600060608486031215620001c857620001c76200023c565b5b6000620001d88682870162000195565b9350506020620001eb8682870162000195565b9250506040620001fe8682870162000195565b9150509250925092565b600062000215826200021c565b9050919050565b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b600080fd5b6200024c8162000208565b81146200025857600080fd5b50565b60805160601c60a05160601c61161c6200028e600039600061051b0152600081816105bd0152610bc5015261161c6000f3fe608060405234801561001057600080fd5b50600436106100f55760003560e01c806397770dff11610097578063c63585cc11610066578063c63585cc1461025e578063d7fd7afb1461028e578063d936a012146102be578063ee2815ba146102dc576100f5565b806397770dff146101ec578063a7cb050714610208578063c39aca3714610224578063c62178ac14610240576100f5565b8063513a9c05116100d3578063513a9c0514610164578063569541b914610194578063842da36d146101b257806391dd645f146101d0576100f5565b80630be15547146100fa5780631f0e251b1461012a5780633ce4a5bc14610146575b600080fd5b610114600480360381019061010f9190611022565b6102f8565b60405161012191906112b1565b60405180910390f35b610144600480360381019061013f9190610ebf565b61032b565b005b61014e6104a8565b60405161015b91906112b1565b60405180910390f35b61017e60048036038101906101799190611022565b6104c0565b60405161018b91906112b1565b60405180910390f35b61019c6104f3565b6040516101a991906112b1565b60405180910390f35b6101ba610519565b6040516101c791906112b1565b60405180910390f35b6101ea60048036038101906101e5919061104f565b61053d565b005b61020660048036038101906102019190610ebf565b610697565b005b610222600480360381019061021d919061108f565b610814565b005b61023e60048036038101906102399190610f6c565b6108e1565b005b610248610b13565b60405161025591906112b1565b60405180910390f35b61027860048036038101906102739190610eec565b610b39565b60405161028591906112b1565b60405180910390f35b6102a860048036038101906102a39190611022565b610bab565b6040516102b5919061134a565b60405180910390f35b6102c6610bc3565b6040516102d391906112b1565b60405180910390f35b6102f660048036038101906102f1919061104f565b610be7565b005b60016020528060005260406000206000915054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b73735b14bb79463307aacbed86daf3322b1e6226ab73ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff16146103a4576040517f2b2add3d00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff16141561040b576040517fd92e233d00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b80600460006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055507f3ade88e3922d64780e1bf4460d364c2970b69da813f9c0c07a1c187b5647636c600460009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1660405161049d91906112b1565b60405180910390a150565b73735b14bb79463307aacbed86daf3322b1e6226ab81565b60026020528060005260406000206000915054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b600360009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b7f000000000000000000000000000000000000000000000000000000000000000081565b73735b14bb79463307aacbed86daf3322b1e6226ab73ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff16146105b6576040517f2b2add3d00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b60006106057f0000000000000000000000000000000000000000000000000000000000000000600360009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1684610b39565b9050806002600085815260200190815260200160002060006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055507f0ecec485166da6139b13bb7e033e9446e2d35348e80ebf1180d4afe2dba1704e838260405161068a929190611365565b60405180910390a1505050565b73735b14bb79463307aacbed86daf3322b1e6226ab73ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff1614610710576040517f2b2add3d00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff161415610777576040517fd92e233d00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b80600360006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055507fdba79d534382d1a8ae108e4c8ecb27c6ae42ab8b91d44eedf88bd329f3868d5e600360009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1660405161080991906112b1565b60405180910390a150565b73735b14bb79463307aacbed86daf3322b1e6226ab73ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff161461088d576040517f2b2add3d00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b80600080848152602001908152602001600020819055507f49f492222906ac486c3c1401fa545626df1f0c0e5a77a05597ea2ed66af9850d82826040516108d592919061138e565b60405180910390a15050565b73735b14bb79463307aacbed86daf3322b1e6226ab73ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff161461095a576040517f2b2add3d00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b73735b14bb79463307aacbed86daf3322b1e6226ab73ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1614806109d357503073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff16145b15610a0a576040517f82d5d76a00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b8473ffffffffffffffffffffffffffffffffffffffff166347e7ef2484866040518363ffffffff1660e01b8152600401610a459291906112cc565b602060405180830381600087803b158015610a5f57600080fd5b505af1158015610a73573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610a979190610f3f565b508273ffffffffffffffffffffffffffffffffffffffff1663de43156e87878786866040518663ffffffff1660e01b8152600401610ad99594939291906112f5565b600060405180830381600087803b158015610af357600080fd5b505af1158015610b07573d6000803e3d6000fd5b50505050505050505050565b600460009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b6000806000610b488585610cef565b91509150858282604051602001610b60929190611243565b60405160208183030381529060405280519060200120604051602001610b8792919061126f565b6040516020818303038152906040528051906020012060001c925050509392505050565b60006020528060005260406000206000915090505481565b7f000000000000000000000000000000000000000000000000000000000000000081565b73735b14bb79463307aacbed86daf3322b1e6226ab73ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff1614610c60576040517f2b2add3d00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b806001600084815260200190815260200160002060006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055507fd1b36d30f6248e97c473b4d1348ca164a4ef6759022f54a58ec200326c39c45d8282604051610ce3929190611365565b60405180910390a15050565b6000808273ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff161415610d58576040517fcb1e7cfe00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b8273ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff1610610d92578284610d95565b83835b8092508193505050600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff161415610e04576040517f78b507da00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b9250929050565b600081359050610e1a816115a1565b92915050565b600081519050610e2f816115b8565b92915050565b60008083601f840112610e4b57610e4a61150e565b5b8235905067ffffffffffffffff811115610e6857610e67611509565b5b602083019150836001820283011115610e8457610e8361151d565b5b9250929050565b600060608284031215610ea157610ea0611513565b5b81905092915050565b600081359050610eb9816115cf565b92915050565b600060208284031215610ed557610ed461152c565b5b6000610ee384828501610e0b565b91505092915050565b600080600060608486031215610f0557610f0461152c565b5b6000610f1386828701610e0b565b9350506020610f2486828701610e0b565b9250506040610f3586828701610e0b565b9150509250925092565b600060208284031215610f5557610f5461152c565b5b6000610f6384828501610e20565b91505092915050565b60008060008060008060a08789031215610f8957610f8861152c565b5b600087013567ffffffffffffffff811115610fa757610fa6611522565b5b610fb389828a01610e8b565b9650506020610fc489828a01610e0b565b9550506040610fd589828a01610eaa565b9450506060610fe689828a01610e0b565b935050608087013567ffffffffffffffff81111561100757611006611522565b5b61101389828a01610e35565b92509250509295509295509295565b6000602082840312156110385761103761152c565b5b600061104684828501610eaa565b91505092915050565b600080604083850312156110665761106561152c565b5b600061107485828601610eaa565b925050602061108585828601610e0b565b9150509250929050565b600080604083850312156110a6576110a561152c565b5b60006110b485828601610eaa565b92505060206110c585828601610eaa565b9150509250929050565b6110d881611475565b82525050565b6110e781611475565b82525050565b6110fe6110f982611475565b6114d6565b82525050565b61111561111082611493565b6114e8565b82525050565b600061112783856113b7565b93506111348385846114c7565b61113d83611531565b840190509392505050565b600061115483856113c8565b93506111618385846114c7565b61116a83611531565b840190509392505050565b60006111826020836113d9565b915061118d8261154f565b602082019050919050565b60006111a56001836113d9565b91506111b082611578565b600182019050919050565b6000606083016111ce60008401846113fb565b85830360008701526111e183828461111b565b925050506111f260208401846113e4565b6111ff60208601826110cf565b5061120d604084018461145e565b61121a6040860182611225565b508091505092915050565b61122e816114bd565b82525050565b61123d816114bd565b82525050565b600061124f82856110ed565b60148201915061125f82846110ed565b6014820191508190509392505050565b600061127a82611198565b915061128682856110ed565b6014820191506112968284611104565b6020820191506112a582611175565b91508190509392505050565b60006020820190506112c660008301846110de565b92915050565b60006040820190506112e160008301856110de565b6112ee6020830184611234565b9392505050565b6000608082019050818103600083015261130f81886111bb565b905061131e60208301876110de565b61132b6040830186611234565b818103606083015261133e818486611148565b90509695505050505050565b600060208201905061135f6000830184611234565b92915050565b600060408201905061137a6000830185611234565b61138760208301846110de565b9392505050565b60006040820190506113a36000830185611234565b6113b06020830184611234565b9392505050565b600082825260208201905092915050565b600082825260208201905092915050565b600081905092915050565b60006113f36020840184610e0b565b905092915050565b6000808335600160200384360303811261141857611417611527565b5b83810192508235915060208301925067ffffffffffffffff8211156114405761143f611504565b5b60018202360384131561145657611455611518565b5b509250929050565b600061146d6020840184610eaa565b905092915050565b60006114808261149d565b9050919050565b60008115159050919050565b6000819050919050565b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b6000819050919050565b82818337600083830152505050565b60006114e1826114f2565b9050919050565b6000819050919050565b60006114fd82611542565b9050919050565b600080fd5b600080fd5b600080fd5b600080fd5b600080fd5b600080fd5b600080fd5b600080fd5b600080fd5b6000601f19601f8301169050919050565b60008160601b9050919050565b7f96e8ac4277198ff8b6f785478aa9a39f403cb768dd02cbee326c3e7da348845f600082015250565b7fff00000000000000000000000000000000000000000000000000000000000000600082015250565b6115aa81611475565b81146115b557600080fd5b50565b6115c181611487565b81146115cc57600080fd5b50565b6115d8816114bd565b81146115e357600080fd5b5056fea2646970667358221220ab79b5edb9ddbd6b63d2d42a2d9bbbc776467678663daf3e41a892ddffc4cba264736f6c63430008070033"; + "0x60c060405234801561001057600080fd5b50604051611873380380611873833981810160405281019061003291906101eb565b73735b14bb79463307aacbed86daf3322b1e6226ab73ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff16146100ab576040517f2b2add3d00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b82600360006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055508173ffffffffffffffffffffffffffffffffffffffff1660808173ffffffffffffffffffffffffffffffffffffffff16815250508073ffffffffffffffffffffffffffffffffffffffff1660a08173ffffffffffffffffffffffffffffffffffffffff16815250507f80699e81136d69cb8367ad52a994e25c722a86da654b561d0c14b61a777e7ac560405160405180910390a150505061023e565b600080fd5b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b60006101b88261018d565b9050919050565b6101c8816101ad565b81146101d357600080fd5b50565b6000815190506101e5816101bf565b92915050565b60008060006060848603121561020457610203610188565b5b6000610212868287016101d6565b9350506020610223868287016101d6565b9250506040610234868287016101d6565b9150509250925092565b60805160a05161160961026a600039600061051a0152600081816105bc0152610bb401526116096000f3fe608060405234801561001057600080fd5b50600436106100f55760003560e01c806397770dff11610097578063c63585cc11610066578063c63585cc1461025e578063d7fd7afb1461028e578063d936a012146102be578063ee2815ba146102dc576100f5565b806397770dff146101ec578063a7cb050714610208578063c39aca3714610224578063c62178ac14610240576100f5565b8063513a9c05116100d3578063513a9c0514610164578063569541b914610194578063842da36d146101b257806391dd645f146101d0576100f5565b80630be15547146100fa5780631f0e251b1461012a5780633ce4a5bc14610146575b600080fd5b610114600480360381019061010f9190610e38565b6102f8565b6040516101219190610ea6565b60405180910390f35b610144600480360381019061013f9190610eed565b61032b565b005b61014e6104a7565b60405161015b9190610ea6565b60405180910390f35b61017e60048036038101906101799190610e38565b6104bf565b60405161018b9190610ea6565b60405180910390f35b61019c6104f2565b6040516101a99190610ea6565b60405180910390f35b6101ba610518565b6040516101c79190610ea6565b60405180910390f35b6101ea60048036038101906101e59190610f1a565b61053c565b005b61020660048036038101906102019190610eed565b610696565b005b610222600480360381019061021d9190610f5a565b610812565b005b61023e60048036038101906102399190611023565b6108df565b005b610248610b02565b6040516102559190610ea6565b60405180910390f35b610278600480360381019061027391906110d9565b610b28565b6040516102859190610ea6565b60405180910390f35b6102a860048036038101906102a39190610e38565b610b9a565b6040516102b5919061113b565b60405180910390f35b6102c6610bb2565b6040516102d39190610ea6565b60405180910390f35b6102f660048036038101906102f19190610f1a565b610bd6565b005b60016020528060005260406000206000915054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b73735b14bb79463307aacbed86daf3322b1e6226ab73ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff16146103a4576040517f2b2add3d00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff160361040a576040517fd92e233d00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b80600460006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055507f3ade88e3922d64780e1bf4460d364c2970b69da813f9c0c07a1c187b5647636c600460009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1660405161049c9190610ea6565b60405180910390a150565b73735b14bb79463307aacbed86daf3322b1e6226ab81565b60026020528060005260406000206000915054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b600360009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b7f000000000000000000000000000000000000000000000000000000000000000081565b73735b14bb79463307aacbed86daf3322b1e6226ab73ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff16146105b5576040517f2b2add3d00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b60006106047f0000000000000000000000000000000000000000000000000000000000000000600360009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1684610b28565b9050806002600085815260200190815260200160002060006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055507f0ecec485166da6139b13bb7e033e9446e2d35348e80ebf1180d4afe2dba1704e8382604051610689929190611156565b60405180910390a1505050565b73735b14bb79463307aacbed86daf3322b1e6226ab73ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff161461070f576040517f2b2add3d00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff1603610775576040517fd92e233d00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b80600360006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055507fdba79d534382d1a8ae108e4c8ecb27c6ae42ab8b91d44eedf88bd329f3868d5e600360009054906101000a900473ffffffffffffffffffffffffffffffffffffffff166040516108079190610ea6565b60405180910390a150565b73735b14bb79463307aacbed86daf3322b1e6226ab73ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff161461088b576040517f2b2add3d00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b80600080848152602001908152602001600020819055507f49f492222906ac486c3c1401fa545626df1f0c0e5a77a05597ea2ed66af9850d82826040516108d392919061117f565b60405180910390a15050565b73735b14bb79463307aacbed86daf3322b1e6226ab73ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff1614610958576040517f2b2add3d00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b73735b14bb79463307aacbed86daf3322b1e6226ab73ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1614806109d157503073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff16145b15610a08576040517f82d5d76a00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b8473ffffffffffffffffffffffffffffffffffffffff166347e7ef2484866040518363ffffffff1660e01b8152600401610a439291906111a8565b6020604051808303816000875af1158015610a62573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610a869190611209565b508273ffffffffffffffffffffffffffffffffffffffff1663de43156e87878786866040518663ffffffff1660e01b8152600401610ac89594939291906113fa565b600060405180830381600087803b158015610ae257600080fd5b505af1158015610af6573d6000803e3d6000fd5b50505050505050505050565b600460009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b6000806000610b378585610cde565b91509150858282604051602001610b4f929190611497565b60405160208183030381529060405280519060200120604051602001610b76929190611591565b6040516020818303038152906040528051906020012060001c925050509392505050565b60006020528060005260406000206000915090505481565b7f000000000000000000000000000000000000000000000000000000000000000081565b73735b14bb79463307aacbed86daf3322b1e6226ab73ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff1614610c4f576040517f2b2add3d00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b806001600084815260200190815260200160002060006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055507fd1b36d30f6248e97c473b4d1348ca164a4ef6759022f54a58ec200326c39c45d8282604051610cd2929190611156565b60405180910390a15050565b6000808273ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff1603610d46576040517fcb1e7cfe00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b8273ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff1610610d80578284610d83565b83835b8092508193505050600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1603610df1576040517f78b507da00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b9250929050565b600080fd5b600080fd5b6000819050919050565b610e1581610e02565b8114610e2057600080fd5b50565b600081359050610e3281610e0c565b92915050565b600060208284031215610e4e57610e4d610df8565b5b6000610e5c84828501610e23565b91505092915050565b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b6000610e9082610e65565b9050919050565b610ea081610e85565b82525050565b6000602082019050610ebb6000830184610e97565b92915050565b610eca81610e85565b8114610ed557600080fd5b50565b600081359050610ee781610ec1565b92915050565b600060208284031215610f0357610f02610df8565b5b6000610f1184828501610ed8565b91505092915050565b60008060408385031215610f3157610f30610df8565b5b6000610f3f85828601610e23565b9250506020610f5085828601610ed8565b9150509250929050565b60008060408385031215610f7157610f70610df8565b5b6000610f7f85828601610e23565b9250506020610f9085828601610e23565b9150509250929050565b600080fd5b600060608284031215610fb557610fb4610f9a565b5b81905092915050565b600080fd5b600080fd5b600080fd5b60008083601f840112610fe357610fe2610fbe565b5b8235905067ffffffffffffffff81111561100057610fff610fc3565b5b60208301915083600182028301111561101c5761101b610fc8565b5b9250929050565b60008060008060008060a087890312156110405761103f610df8565b5b600087013567ffffffffffffffff81111561105e5761105d610dfd565b5b61106a89828a01610f9f565b965050602061107b89828a01610ed8565b955050604061108c89828a01610e23565b945050606061109d89828a01610ed8565b935050608087013567ffffffffffffffff8111156110be576110bd610dfd565b5b6110ca89828a01610fcd565b92509250509295509295509295565b6000806000606084860312156110f2576110f1610df8565b5b600061110086828701610ed8565b935050602061111186828701610ed8565b925050604061112286828701610ed8565b9150509250925092565b61113581610e02565b82525050565b6000602082019050611150600083018461112c565b92915050565b600060408201905061116b600083018561112c565b6111786020830184610e97565b9392505050565b6000604082019050611194600083018561112c565b6111a1602083018461112c565b9392505050565b60006040820190506111bd6000830185610e97565b6111ca602083018461112c565b9392505050565b60008115159050919050565b6111e6816111d1565b81146111f157600080fd5b50565b600081519050611203816111dd565b92915050565b60006020828403121561121f5761121e610df8565b5b600061122d848285016111f4565b91505092915050565b600080fd5b600080fd5b600080fd5b6000808335600160200384360303811261126257611261611240565b5b83810192508235915060208301925067ffffffffffffffff82111561128a57611289611236565b5b6001820236038313156112a05761129f61123b565b5b509250929050565b600082825260208201905092915050565b82818337600083830152505050565b6000601f19601f8301169050919050565b60006112e583856112a8565b93506112f28385846112b9565b6112fb836112c8565b840190509392505050565b60006113156020840184610ed8565b905092915050565b61132681610e85565b82525050565b600061133b6020840184610e23565b905092915050565b61134c81610e02565b82525050565b6000606083016113656000840184611245565b85830360008701526113788382846112d9565b925050506113896020840184611306565b611396602086018261131d565b506113a4604084018461132c565b6113b16040860182611343565b508091505092915050565b600082825260208201905092915050565b60006113d983856113bc565b93506113e68385846112b9565b6113ef836112c8565b840190509392505050565b600060808201905081810360008301526114148188611352565b90506114236020830187610e97565b611430604083018661112c565b81810360608301526114438184866113cd565b90509695505050505050565b60008160601b9050919050565b60006114678261144f565b9050919050565b60006114798261145c565b9050919050565b61149161148c82610e85565b61146e565b82525050565b60006114a38285611480565b6014820191506114b38284611480565b6014820191508190509392505050565b600081905092915050565b7fff00000000000000000000000000000000000000000000000000000000000000600082015250565b60006115046001836114c3565b915061150f826114ce565b600182019050919050565b6000819050919050565b6000819050919050565b61153f61153a8261151a565b611524565b82525050565b7f96e8ac4277198ff8b6f785478aa9a39f403cb768dd02cbee326c3e7da348845f600082015250565b600061157b6020836114c3565b915061158682611545565b602082019050919050565b600061159c826114f7565b91506115a88285611480565b6014820191506115b8828461152e565b6020820191506115c78261156e565b9150819050939250505056fea2646970667358221220663e074b8633357b9dc33774203248a7194ad0a08545a4f965472cde8bcefd8864736f6c634300081a0033"; type SystemContractConstructorParams = | [signer?: Signer] diff --git a/typechain-types/factories/@zetachain/protocol-contracts/contracts/zevm/interfaces/IZRC20.sol/IZRC20Metadata__factory.ts b/typechain-types/factories/@zetachain/protocol-contracts/contracts/zevm/interfaces/IZRC20.sol/IZRC20Metadata__factory.ts index 00883d9e..509f585a 100644 --- a/typechain-types/factories/@zetachain/protocol-contracts/contracts/zevm/interfaces/IZRC20.sol/IZRC20Metadata__factory.ts +++ b/typechain-types/factories/@zetachain/protocol-contracts/contracts/zevm/interfaces/IZRC20.sol/IZRC20Metadata__factory.ts @@ -10,6 +10,19 @@ import type { } from "../../../../../../../@zetachain/protocol-contracts/contracts/zevm/interfaces/IZRC20.sol/IZRC20Metadata"; const _abi = [ + { + inputs: [], + name: "GAS_LIMIT", + outputs: [ + { + internalType: "uint256", + name: "", + type: "uint256", + }, + ], + stateMutability: "view", + type: "function", + }, { inputs: [], name: "PROTOCOL_FLAT_FEE", @@ -159,6 +172,32 @@ const _abi = [ stateMutability: "view", type: "function", }, + { + inputs: [ + { + internalType: "string", + name: "newName", + type: "string", + }, + ], + name: "setName", + outputs: [], + stateMutability: "nonpayable", + type: "function", + }, + { + inputs: [ + { + internalType: "string", + name: "newSymbol", + type: "string", + }, + ], + name: "setSymbol", + outputs: [], + stateMutability: "nonpayable", + type: "function", + }, { inputs: [], name: "symbol", @@ -280,6 +319,30 @@ const _abi = [ stateMutability: "view", type: "function", }, + { + inputs: [ + { + internalType: "uint256", + name: "gasLimit", + type: "uint256", + }, + ], + name: "withdrawGasFeeWithGasLimit", + outputs: [ + { + internalType: "address", + name: "", + type: "address", + }, + { + internalType: "uint256", + name: "", + type: "uint256", + }, + ], + stateMutability: "view", + type: "function", + }, ] as const; export class IZRC20Metadata__factory { diff --git a/typechain-types/factories/@zetachain/protocol-contracts/contracts/zevm/interfaces/IZRC20.sol/IZRC20__factory.ts b/typechain-types/factories/@zetachain/protocol-contracts/contracts/zevm/interfaces/IZRC20.sol/IZRC20__factory.ts index af9bbdd4..bfdb7484 100644 --- a/typechain-types/factories/@zetachain/protocol-contracts/contracts/zevm/interfaces/IZRC20.sol/IZRC20__factory.ts +++ b/typechain-types/factories/@zetachain/protocol-contracts/contracts/zevm/interfaces/IZRC20.sol/IZRC20__factory.ts @@ -10,6 +10,19 @@ import type { } from "../../../../../../../@zetachain/protocol-contracts/contracts/zevm/interfaces/IZRC20.sol/IZRC20"; const _abi = [ + { + inputs: [], + name: "GAS_LIMIT", + outputs: [ + { + internalType: "uint256", + name: "", + type: "uint256", + }, + ], + stateMutability: "view", + type: "function", + }, { inputs: [], name: "PROTOCOL_FLAT_FEE", @@ -133,6 +146,32 @@ const _abi = [ stateMutability: "nonpayable", type: "function", }, + { + inputs: [ + { + internalType: "string", + name: "newName", + type: "string", + }, + ], + name: "setName", + outputs: [], + stateMutability: "nonpayable", + type: "function", + }, + { + inputs: [ + { + internalType: "string", + name: "newSymbol", + type: "string", + }, + ], + name: "setSymbol", + outputs: [], + stateMutability: "nonpayable", + type: "function", + }, { inputs: [], name: "totalSupply", @@ -241,6 +280,30 @@ const _abi = [ stateMutability: "view", type: "function", }, + { + inputs: [ + { + internalType: "uint256", + name: "gasLimit", + type: "uint256", + }, + ], + name: "withdrawGasFeeWithGasLimit", + outputs: [ + { + internalType: "address", + name: "", + type: "address", + }, + { + internalType: "uint256", + name: "", + type: "uint256", + }, + ], + stateMutability: "view", + type: "function", + }, ] as const; export class IZRC20__factory { diff --git a/typechain-types/factories/@zetachain/protocol-contracts/contracts/zevm/interfaces/IZRC20.sol/ZRC20Events__factory.ts b/typechain-types/factories/@zetachain/protocol-contracts/contracts/zevm/interfaces/IZRC20.sol/ZRC20Events__factory.ts index eef0389a..737bae62 100644 --- a/typechain-types/factories/@zetachain/protocol-contracts/contracts/zevm/interfaces/IZRC20.sol/ZRC20Events__factory.ts +++ b/typechain-types/factories/@zetachain/protocol-contracts/contracts/zevm/interfaces/IZRC20.sol/ZRC20Events__factory.ts @@ -98,6 +98,19 @@ const _abi = [ name: "UpdatedGasLimit", type: "event", }, + { + anonymous: false, + inputs: [ + { + indexed: false, + internalType: "address", + name: "gateway", + type: "address", + }, + ], + name: "UpdatedGateway", + type: "event", + }, { anonymous: false, inputs: [ diff --git a/typechain-types/factories/@zetachain/protocol-contracts/contracts/zevm/interfaces/zContract.sol/UniversalContract__factory.ts b/typechain-types/factories/@zetachain/protocol-contracts/contracts/zevm/interfaces/UniversalContract.sol/UniversalContract__factory.ts similarity index 60% rename from typechain-types/factories/@zetachain/protocol-contracts/contracts/zevm/interfaces/zContract.sol/UniversalContract__factory.ts rename to typechain-types/factories/@zetachain/protocol-contracts/contracts/zevm/interfaces/UniversalContract.sol/UniversalContract__factory.ts index 58d49678..70b1fb80 100644 --- a/typechain-types/factories/@zetachain/protocol-contracts/contracts/zevm/interfaces/zContract.sol/UniversalContract__factory.ts +++ b/typechain-types/factories/@zetachain/protocol-contracts/contracts/zevm/interfaces/UniversalContract.sol/UniversalContract__factory.ts @@ -7,7 +7,7 @@ import type { Provider } from "@ethersproject/providers"; import type { UniversalContract, UniversalContractInterface, -} from "../../../../../../../@zetachain/protocol-contracts/contracts/zevm/interfaces/zContract.sol/UniversalContract"; +} from "../../../../../../../@zetachain/protocol-contracts/contracts/zevm/interfaces/UniversalContract.sol/UniversalContract"; const _abi = [ { @@ -30,7 +30,7 @@ const _abi = [ type: "uint256", }, ], - internalType: "struct zContext", + internalType: "struct MessageContext", name: "context", type: "tuple", }, @@ -50,52 +50,7 @@ const _abi = [ type: "bytes", }, ], - name: "onCrossChainCall", - outputs: [], - stateMutability: "nonpayable", - type: "function", - }, - { - inputs: [ - { - components: [ - { - internalType: "bytes", - name: "origin", - type: "bytes", - }, - { - internalType: "address", - name: "sender", - type: "address", - }, - { - internalType: "uint256", - name: "chainID", - type: "uint256", - }, - ], - internalType: "struct revertContext", - name: "context", - type: "tuple", - }, - { - internalType: "address", - name: "zrc20", - type: "address", - }, - { - internalType: "uint256", - name: "amount", - type: "uint256", - }, - { - internalType: "bytes", - name: "message", - type: "bytes", - }, - ], - name: "onRevert", + name: "onCall", outputs: [], stateMutability: "nonpayable", type: "function", diff --git a/typechain-types/factories/@zetachain/protocol-contracts/contracts/zevm/interfaces/zContract.sol/ZContract__factory.ts b/typechain-types/factories/@zetachain/protocol-contracts/contracts/zevm/interfaces/UniversalContract.sol/ZContract__factory.ts similarity index 96% rename from typechain-types/factories/@zetachain/protocol-contracts/contracts/zevm/interfaces/zContract.sol/ZContract__factory.ts rename to typechain-types/factories/@zetachain/protocol-contracts/contracts/zevm/interfaces/UniversalContract.sol/ZContract__factory.ts index 0a0e5502..8645ba02 100644 --- a/typechain-types/factories/@zetachain/protocol-contracts/contracts/zevm/interfaces/zContract.sol/ZContract__factory.ts +++ b/typechain-types/factories/@zetachain/protocol-contracts/contracts/zevm/interfaces/UniversalContract.sol/ZContract__factory.ts @@ -7,7 +7,7 @@ import type { Provider } from "@ethersproject/providers"; import type { ZContract, ZContractInterface, -} from "../../../../../../../@zetachain/protocol-contracts/contracts/zevm/interfaces/zContract.sol/ZContract"; +} from "../../../../../../../@zetachain/protocol-contracts/contracts/zevm/interfaces/UniversalContract.sol/ZContract"; const _abi = [ { diff --git a/typechain-types/factories/@zetachain/protocol-contracts/contracts/zevm/interfaces/zContract.sol/index.ts b/typechain-types/factories/@zetachain/protocol-contracts/contracts/zevm/interfaces/UniversalContract.sol/index.ts similarity index 100% rename from typechain-types/factories/@zetachain/protocol-contracts/contracts/zevm/interfaces/zContract.sol/index.ts rename to typechain-types/factories/@zetachain/protocol-contracts/contracts/zevm/interfaces/UniversalContract.sol/index.ts diff --git a/typechain-types/factories/@zetachain/protocol-contracts/contracts/zevm/interfaces/index.ts b/typechain-types/factories/@zetachain/protocol-contracts/contracts/zevm/interfaces/index.ts index 920ccb83..00b0cbb9 100644 --- a/typechain-types/factories/@zetachain/protocol-contracts/contracts/zevm/interfaces/index.ts +++ b/typechain-types/factories/@zetachain/protocol-contracts/contracts/zevm/interfaces/index.ts @@ -2,4 +2,4 @@ /* tslint:disable */ /* eslint-disable */ export * as izrc20Sol from "./IZRC20.sol"; -export * as zContractSol from "./zContract.sol"; +export * as universalContractSol from "./UniversalContract.sol"; diff --git a/typechain-types/factories/contracts/EthZetaMock.sol/ZetaEthMock__factory.ts b/typechain-types/factories/contracts/EthZetaMock.sol/ZetaEthMock__factory.ts index 9dccd136..c014cfc4 100644 --- a/typechain-types/factories/contracts/EthZetaMock.sol/ZetaEthMock__factory.ts +++ b/typechain-types/factories/contracts/EthZetaMock.sol/ZetaEthMock__factory.ts @@ -33,6 +33,92 @@ const _abi = [ stateMutability: "nonpayable", type: "constructor", }, + { + inputs: [ + { + internalType: "address", + name: "spender", + type: "address", + }, + { + internalType: "uint256", + name: "allowance", + type: "uint256", + }, + { + internalType: "uint256", + name: "needed", + type: "uint256", + }, + ], + name: "ERC20InsufficientAllowance", + type: "error", + }, + { + inputs: [ + { + internalType: "address", + name: "sender", + type: "address", + }, + { + internalType: "uint256", + name: "balance", + type: "uint256", + }, + { + internalType: "uint256", + name: "needed", + type: "uint256", + }, + ], + name: "ERC20InsufficientBalance", + type: "error", + }, + { + inputs: [ + { + internalType: "address", + name: "approver", + type: "address", + }, + ], + name: "ERC20InvalidApprover", + type: "error", + }, + { + inputs: [ + { + internalType: "address", + name: "receiver", + type: "address", + }, + ], + name: "ERC20InvalidReceiver", + type: "error", + }, + { + inputs: [ + { + internalType: "address", + name: "sender", + type: "address", + }, + ], + name: "ERC20InvalidSender", + type: "error", + }, + { + inputs: [ + { + internalType: "address", + name: "spender", + type: "address", + }, + ], + name: "ERC20InvalidSpender", + type: "error", + }, { anonymous: false, inputs: [ @@ -116,7 +202,7 @@ const _abi = [ }, { internalType: "uint256", - name: "amount", + name: "value", type: "uint256", }, ], @@ -163,54 +249,6 @@ const _abi = [ stateMutability: "view", type: "function", }, - { - 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", - }, - { - 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", - }, { inputs: [], name: "name", @@ -259,7 +297,7 @@ const _abi = [ }, { internalType: "uint256", - name: "amount", + name: "value", type: "uint256", }, ], @@ -288,7 +326,7 @@ const _abi = [ }, { internalType: "uint256", - name: "amount", + name: "value", type: "uint256", }, ], @@ -306,7 +344,7 @@ const _abi = [ ] as const; const _bytecode = - "0x608060405234801561001057600080fd5b50604051611b6c380380611b6c8339818101604052810190610032919061030c565b6040518060400160405280600481526020017f5a657461000000000000000000000000000000000000000000000000000000008152506040518060400160405280600481526020017f5a4554410000000000000000000000000000000000000000000000000000000081525081600390816100ad9190610592565b5080600490816100bd9190610592565b5050506100f7826100d26100fe60201b60201c565b60ff16600a6100e191906107c6565b836100ec9190610811565b61010760201b60201c565b505061092e565b60006012905090565b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1603610176576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161016d906108b0565b60405180910390fd5b6101886000838361026960201b60201c565b806002600082825461019a91906108d0565b92505081905550806000808473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020600082825401925050819055508173ffffffffffffffffffffffffffffffffffffffff16600073ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef8360405161024b9190610913565b60405180910390a36102656000838361026e60201b60201c565b5050565b505050565b505050565b600080fd5b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b60006102a382610278565b9050919050565b6102b381610298565b81146102be57600080fd5b50565b6000815190506102d0816102aa565b92915050565b6000819050919050565b6102e9816102d6565b81146102f457600080fd5b50565b600081519050610306816102e0565b92915050565b6000806040838503121561032357610322610273565b5b6000610331858286016102c1565b9250506020610342858286016102f7565b9150509250929050565b600081519050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052602260045260246000fd5b600060028204905060018216806103cd57607f821691505b6020821081036103e0576103df610386565b5b50919050565b60008190508160005260206000209050919050565b60006020601f8301049050919050565b600082821b905092915050565b6000600883026104487fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff8261040b565b610452868361040b565b95508019841693508086168417925050509392505050565b6000819050919050565b600061048f61048a610485846102d6565b61046a565b6102d6565b9050919050565b6000819050919050565b6104a983610474565b6104bd6104b582610496565b848454610418565b825550505050565b600090565b6104d26104c5565b6104dd8184846104a0565b505050565b5b81811015610501576104f66000826104ca565b6001810190506104e3565b5050565b601f82111561054657610517816103e6565b610520846103fb565b8101602085101561052f578190505b61054361053b856103fb565b8301826104e2565b50505b505050565b600082821c905092915050565b60006105696000198460080261054b565b1980831691505092915050565b60006105828383610558565b9150826002028217905092915050565b61059b8261034c565b67ffffffffffffffff8111156105b4576105b3610357565b5b6105be82546103b5565b6105c9828285610505565b600060209050601f8311600181146105fc57600084156105ea578287015190505b6105f48582610576565b86555061065c565b601f19841661060a866103e6565b60005b828110156106325784890151825560018201915060208501945060208101905061060d565b8683101561064f578489015161064b601f891682610558565b8355505b6001600288020188555050505b505050505050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b60008160011c9050919050565b6000808291508390505b60018511156106ea578086048111156106c6576106c5610664565b5b60018516156106d55780820291505b80810290506106e385610693565b94506106aa565b94509492505050565b60008261070357600190506107bf565b8161071157600090506107bf565b8160018114610727576002811461073157610760565b60019150506107bf565b60ff84111561074357610742610664565b5b8360020a91508482111561075a57610759610664565b5b506107bf565b5060208310610133831016604e8410600b84101617156107955782820a9050838111156107905761078f610664565b5b6107bf565b6107a284848460016106a0565b925090508184048111156107b9576107b8610664565b5b81810290505b9392505050565b60006107d1826102d6565b91506107dc836102d6565b92506108097fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff84846106f3565b905092915050565b600061081c826102d6565b9150610827836102d6565b9250828202610835816102d6565b9150828204841483151761084c5761084b610664565b5b5092915050565b600082825260208201905092915050565b7f45524332303a206d696e7420746f20746865207a65726f206164647265737300600082015250565b600061089a601f83610853565b91506108a582610864565b602082019050919050565b600060208201905081810360008301526108c98161088d565b9050919050565b60006108db826102d6565b91506108e6836102d6565b92508282019050808211156108fe576108fd610664565b5b92915050565b61090d816102d6565b82525050565b60006020820190506109286000830184610904565b92915050565b61122f8061093d6000396000f3fe608060405234801561001057600080fd5b50600436106100a95760003560e01c80633950935111610071578063395093511461016857806370a082311461019857806395d89b41146101c8578063a457c2d7146101e6578063a9059cbb14610216578063dd62ed3e14610246576100a9565b806306fdde03146100ae578063095ea7b3146100cc57806318160ddd146100fc57806323b872dd1461011a578063313ce5671461014a575b600080fd5b6100b6610276565b6040516100c39190610b0c565b60405180910390f35b6100e660048036038101906100e19190610bc7565b610308565b6040516100f39190610c22565b60405180910390f35b61010461032b565b6040516101119190610c4c565b60405180910390f35b610134600480360381019061012f9190610c67565b610335565b6040516101419190610c22565b60405180910390f35b610152610364565b60405161015f9190610cd6565b60405180910390f35b610182600480360381019061017d9190610bc7565b61036d565b60405161018f9190610c22565b60405180910390f35b6101b260048036038101906101ad9190610cf1565b6103a4565b6040516101bf9190610c4c565b60405180910390f35b6101d06103ec565b6040516101dd9190610b0c565b60405180910390f35b61020060048036038101906101fb9190610bc7565b61047e565b60405161020d9190610c22565b60405180910390f35b610230600480360381019061022b9190610bc7565b6104f5565b60405161023d9190610c22565b60405180910390f35b610260600480360381019061025b9190610d1e565b610518565b60405161026d9190610c4c565b60405180910390f35b60606003805461028590610d8d565b80601f01602080910402602001604051908101604052809291908181526020018280546102b190610d8d565b80156102fe5780601f106102d3576101008083540402835291602001916102fe565b820191906000526020600020905b8154815290600101906020018083116102e157829003601f168201915b5050505050905090565b60008061031361059f565b90506103208185856105a7565b600191505092915050565b6000600254905090565b60008061034061059f565b905061034d858285610770565b6103588585856107fc565b60019150509392505050565b60006012905090565b60008061037861059f565b905061039981858561038a8589610518565b6103949190610ded565b6105a7565b600191505092915050565b60008060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020549050919050565b6060600480546103fb90610d8d565b80601f016020809104026020016040519081016040528092919081815260200182805461042790610d8d565b80156104745780601f1061044957610100808354040283529160200191610474565b820191906000526020600020905b81548152906001019060200180831161045757829003601f168201915b5050505050905090565b60008061048961059f565b905060006104978286610518565b9050838110156104dc576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016104d390610e93565b60405180910390fd5b6104e982868684036105a7565b60019250505092915050565b60008061050061059f565b905061050d8185856107fc565b600191505092915050565b6000600160008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054905092915050565b600033905090565b600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1603610616576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161060d90610f25565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1603610685576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161067c90610fb7565b60405180910390fd5b80600160008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508173ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925836040516107639190610c4c565b60405180910390a3505050565b600061077c8484610518565b90507fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff81146107f657818110156107e8576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016107df90611023565b60405180910390fd5b6107f584848484036105a7565b5b50505050565b600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff160361086b576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610862906110b5565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff16036108da576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016108d190611147565b60405180910390fd5b6108e5838383610a72565b60008060008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205490508181101561096b576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610962906111d9565b60405180910390fd5b8181036000808673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002081905550816000808573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020600082825401925050819055508273ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef84604051610a599190610c4c565b60405180910390a3610a6c848484610a77565b50505050565b505050565b505050565b600081519050919050565b600082825260208201905092915050565b60005b83811015610ab6578082015181840152602081019050610a9b565b60008484015250505050565b6000601f19601f8301169050919050565b6000610ade82610a7c565b610ae88185610a87565b9350610af8818560208601610a98565b610b0181610ac2565b840191505092915050565b60006020820190508181036000830152610b268184610ad3565b905092915050565b600080fd5b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b6000610b5e82610b33565b9050919050565b610b6e81610b53565b8114610b7957600080fd5b50565b600081359050610b8b81610b65565b92915050565b6000819050919050565b610ba481610b91565b8114610baf57600080fd5b50565b600081359050610bc181610b9b565b92915050565b60008060408385031215610bde57610bdd610b2e565b5b6000610bec85828601610b7c565b9250506020610bfd85828601610bb2565b9150509250929050565b60008115159050919050565b610c1c81610c07565b82525050565b6000602082019050610c376000830184610c13565b92915050565b610c4681610b91565b82525050565b6000602082019050610c616000830184610c3d565b92915050565b600080600060608486031215610c8057610c7f610b2e565b5b6000610c8e86828701610b7c565b9350506020610c9f86828701610b7c565b9250506040610cb086828701610bb2565b9150509250925092565b600060ff82169050919050565b610cd081610cba565b82525050565b6000602082019050610ceb6000830184610cc7565b92915050565b600060208284031215610d0757610d06610b2e565b5b6000610d1584828501610b7c565b91505092915050565b60008060408385031215610d3557610d34610b2e565b5b6000610d4385828601610b7c565b9250506020610d5485828601610b7c565b9150509250929050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052602260045260246000fd5b60006002820490506001821680610da557607f821691505b602082108103610db857610db7610d5e565b5b50919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b6000610df882610b91565b9150610e0383610b91565b9250828201905080821115610e1b57610e1a610dbe565b5b92915050565b7f45524332303a2064656372656173656420616c6c6f77616e63652062656c6f7760008201527f207a65726f000000000000000000000000000000000000000000000000000000602082015250565b6000610e7d602583610a87565b9150610e8882610e21565b604082019050919050565b60006020820190508181036000830152610eac81610e70565b9050919050565b7f45524332303a20617070726f76652066726f6d20746865207a65726f2061646460008201527f7265737300000000000000000000000000000000000000000000000000000000602082015250565b6000610f0f602483610a87565b9150610f1a82610eb3565b604082019050919050565b60006020820190508181036000830152610f3e81610f02565b9050919050565b7f45524332303a20617070726f766520746f20746865207a65726f20616464726560008201527f7373000000000000000000000000000000000000000000000000000000000000602082015250565b6000610fa1602283610a87565b9150610fac82610f45565b604082019050919050565b60006020820190508181036000830152610fd081610f94565b9050919050565b7f45524332303a20696e73756666696369656e7420616c6c6f77616e6365000000600082015250565b600061100d601d83610a87565b915061101882610fd7565b602082019050919050565b6000602082019050818103600083015261103c81611000565b9050919050565b7f45524332303a207472616e736665722066726f6d20746865207a65726f20616460008201527f6472657373000000000000000000000000000000000000000000000000000000602082015250565b600061109f602583610a87565b91506110aa82611043565b604082019050919050565b600060208201905081810360008301526110ce81611092565b9050919050565b7f45524332303a207472616e7366657220746f20746865207a65726f206164647260008201527f6573730000000000000000000000000000000000000000000000000000000000602082015250565b6000611131602383610a87565b915061113c826110d5565b604082019050919050565b6000602082019050818103600083015261116081611124565b9050919050565b7f45524332303a207472616e7366657220616d6f756e742065786365656473206260008201527f616c616e63650000000000000000000000000000000000000000000000000000602082015250565b60006111c3602683610a87565b91506111ce82611167565b604082019050919050565b600060208201905081810360008301526111f2816111b6565b905091905056fea26469706673582212206729f9c3d54744a258138456bea4c7e30a88115f37e813ec7627ab380156d73364736f6c634300081a0033"; + "0x608060405234801561001057600080fd5b506040516118b73803806118b78339818101604052810190610032919061044d565b6040518060400160405280600481526020017f5a657461000000000000000000000000000000000000000000000000000000008152506040518060400160405280600481526020017f5a4554410000000000000000000000000000000000000000000000000000000081525081600390816100ad91906106d3565b5080600490816100bd91906106d3565b5050506100f7826100d26100fe60201b60201c565b60ff16600a6100e19190610907565b836100ec9190610952565b61010760201b60201c565b5050610a53565b60006012905090565b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff16036101795760006040517fec442f0500000000000000000000000000000000000000000000000000000000815260040161017091906109a3565b60405180910390fd5b61018b6000838361018f60201b60201c565b5050565b600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff16036101e15780600260008282546101d591906109be565b925050819055506102b4565b60008060008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205490508181101561026d578381836040517fe450d38c00000000000000000000000000000000000000000000000000000000815260040161026493929190610a01565b60405180910390fd5b8181036000808673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002081905550505b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff16036102fd578060026000828254039250508190555061034a565b806000808473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020600082825401925050819055505b8173ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef836040516103a79190610a38565b60405180910390a3505050565b600080fd5b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b60006103e4826103b9565b9050919050565b6103f4816103d9565b81146103ff57600080fd5b50565b600081519050610411816103eb565b92915050565b6000819050919050565b61042a81610417565b811461043557600080fd5b50565b60008151905061044781610421565b92915050565b60008060408385031215610464576104636103b4565b5b600061047285828601610402565b925050602061048385828601610438565b9150509250929050565b600081519050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052602260045260246000fd5b6000600282049050600182168061050e57607f821691505b602082108103610521576105206104c7565b5b50919050565b60008190508160005260206000209050919050565b60006020601f8301049050919050565b600082821b905092915050565b6000600883026105897fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff8261054c565b610593868361054c565b95508019841693508086168417925050509392505050565b6000819050919050565b60006105d06105cb6105c684610417565b6105ab565b610417565b9050919050565b6000819050919050565b6105ea836105b5565b6105fe6105f6826105d7565b848454610559565b825550505050565b600090565b610613610606565b61061e8184846105e1565b505050565b5b818110156106425761063760008261060b565b600181019050610624565b5050565b601f8211156106875761065881610527565b6106618461053c565b81016020851015610670578190505b61068461067c8561053c565b830182610623565b50505b505050565b600082821c905092915050565b60006106aa6000198460080261068c565b1980831691505092915050565b60006106c38383610699565b9150826002028217905092915050565b6106dc8261048d565b67ffffffffffffffff8111156106f5576106f4610498565b5b6106ff82546104f6565b61070a828285610646565b600060209050601f83116001811461073d576000841561072b578287015190505b61073585826106b7565b86555061079d565b601f19841661074b86610527565b60005b828110156107735784890151825560018201915060208501945060208101905061074e565b86831015610790578489015161078c601f891682610699565b8355505b6001600288020188555050505b505050505050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b60008160011c9050919050565b6000808291508390505b600185111561082b57808604811115610807576108066107a5565b5b60018516156108165780820291505b8081029050610824856107d4565b94506107eb565b94509492505050565b6000826108445760019050610900565b816108525760009050610900565b81600181146108685760028114610872576108a1565b6001915050610900565b60ff841115610884576108836107a5565b5b8360020a91508482111561089b5761089a6107a5565b5b50610900565b5060208310610133831016604e8410600b84101617156108d65782820a9050838111156108d1576108d06107a5565b5b610900565b6108e384848460016107e1565b925090508184048111156108fa576108f96107a5565b5b81810290505b9392505050565b600061091282610417565b915061091d83610417565b925061094a7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff8484610834565b905092915050565b600061095d82610417565b915061096883610417565b925082820261097681610417565b9150828204841483151761098d5761098c6107a5565b5b5092915050565b61099d816103d9565b82525050565b60006020820190506109b86000830184610994565b92915050565b60006109c982610417565b91506109d483610417565b92508282019050808211156109ec576109eb6107a5565b5b92915050565b6109fb81610417565b82525050565b6000606082019050610a166000830186610994565b610a2360208301856109f2565b610a3060408301846109f2565b949350505050565b6000602082019050610a4d60008301846109f2565b92915050565b610e5580610a626000396000f3fe608060405234801561001057600080fd5b50600436106100935760003560e01c8063313ce56711610066578063313ce5671461013457806370a082311461015257806395d89b4114610182578063a9059cbb146101a0578063dd62ed3e146101d057610093565b806306fdde0314610098578063095ea7b3146100b657806318160ddd146100e657806323b872dd14610104575b600080fd5b6100a0610200565b6040516100ad9190610aa9565b60405180910390f35b6100d060048036038101906100cb9190610b64565b610292565b6040516100dd9190610bbf565b60405180910390f35b6100ee6102b5565b6040516100fb9190610be9565b60405180910390f35b61011e60048036038101906101199190610c04565b6102bf565b60405161012b9190610bbf565b60405180910390f35b61013c6102ee565b6040516101499190610c73565b60405180910390f35b61016c60048036038101906101679190610c8e565b6102f7565b6040516101799190610be9565b60405180910390f35b61018a61033f565b6040516101979190610aa9565b60405180910390f35b6101ba60048036038101906101b59190610b64565b6103d1565b6040516101c79190610bbf565b60405180910390f35b6101ea60048036038101906101e59190610cbb565b6103f4565b6040516101f79190610be9565b60405180910390f35b60606003805461020f90610d2a565b80601f016020809104026020016040519081016040528092919081815260200182805461023b90610d2a565b80156102885780601f1061025d57610100808354040283529160200191610288565b820191906000526020600020905b81548152906001019060200180831161026b57829003601f168201915b5050505050905090565b60008061029d61047b565b90506102aa818585610483565b600191505092915050565b6000600254905090565b6000806102ca61047b565b90506102d7858285610495565b6102e2858585610529565b60019150509392505050565b60006012905090565b60008060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020549050919050565b60606004805461034e90610d2a565b80601f016020809104026020016040519081016040528092919081815260200182805461037a90610d2a565b80156103c75780601f1061039c576101008083540402835291602001916103c7565b820191906000526020600020905b8154815290600101906020018083116103aa57829003601f168201915b5050505050905090565b6000806103dc61047b565b90506103e9818585610529565b600191505092915050565b6000600160008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054905092915050565b600033905090565b610490838383600161061d565b505050565b60006104a184846103f4565b90507fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff81146105235781811015610513578281836040517ffb8f41b200000000000000000000000000000000000000000000000000000000815260040161050a93929190610d6a565b60405180910390fd5b6105228484848403600061061d565b5b50505050565b600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff160361059b5760006040517f96c6fd1e0000000000000000000000000000000000000000000000000000000081526004016105929190610da1565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff160361060d5760006040517fec442f050000000000000000000000000000000000000000000000000000000081526004016106049190610da1565b60405180910390fd5b6106188383836107f4565b505050565b600073ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff160361068f5760006040517fe602df050000000000000000000000000000000000000000000000000000000081526004016106869190610da1565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff16036107015760006040517f94280d620000000000000000000000000000000000000000000000000000000081526004016106f89190610da1565b60405180910390fd5b81600160008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000208190555080156107ee578273ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925846040516107e59190610be9565b60405180910390a35b50505050565b600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff160361084657806002600082825461083a9190610deb565b92505081905550610919565b60008060008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020549050818110156108d2578381836040517fe450d38c0000000000000000000000000000000000000000000000000000000081526004016108c993929190610d6a565b60405180910390fd5b8181036000808673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002081905550505b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff160361096257806002600082825403925050819055506109af565b806000808473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020600082825401925050819055505b8173ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef83604051610a0c9190610be9565b60405180910390a3505050565b600081519050919050565b600082825260208201905092915050565b60005b83811015610a53578082015181840152602081019050610a38565b60008484015250505050565b6000601f19601f8301169050919050565b6000610a7b82610a19565b610a858185610a24565b9350610a95818560208601610a35565b610a9e81610a5f565b840191505092915050565b60006020820190508181036000830152610ac38184610a70565b905092915050565b600080fd5b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b6000610afb82610ad0565b9050919050565b610b0b81610af0565b8114610b1657600080fd5b50565b600081359050610b2881610b02565b92915050565b6000819050919050565b610b4181610b2e565b8114610b4c57600080fd5b50565b600081359050610b5e81610b38565b92915050565b60008060408385031215610b7b57610b7a610acb565b5b6000610b8985828601610b19565b9250506020610b9a85828601610b4f565b9150509250929050565b60008115159050919050565b610bb981610ba4565b82525050565b6000602082019050610bd46000830184610bb0565b92915050565b610be381610b2e565b82525050565b6000602082019050610bfe6000830184610bda565b92915050565b600080600060608486031215610c1d57610c1c610acb565b5b6000610c2b86828701610b19565b9350506020610c3c86828701610b19565b9250506040610c4d86828701610b4f565b9150509250925092565b600060ff82169050919050565b610c6d81610c57565b82525050565b6000602082019050610c886000830184610c64565b92915050565b600060208284031215610ca457610ca3610acb565b5b6000610cb284828501610b19565b91505092915050565b60008060408385031215610cd257610cd1610acb565b5b6000610ce085828601610b19565b9250506020610cf185828601610b19565b9150509250929050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052602260045260246000fd5b60006002820490506001821680610d4257607f821691505b602082108103610d5557610d54610cfb565b5b50919050565b610d6481610af0565b82525050565b6000606082019050610d7f6000830186610d5b565b610d8c6020830185610bda565b610d996040830184610bda565b949350505050565b6000602082019050610db66000830184610d5b565b92915050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b6000610df682610b2e565b9150610e0183610b2e565b9250828201905080821115610e1957610e18610dbc565b5b9291505056fea264697066735822122008695f557841ddad327472e0c2386bec8cf424c511e2eae6e9e8b208860ea1c264736f6c634300081a0033"; type ZetaEthMockConstructorParams = | [signer?: Signer] diff --git a/typechain-types/factories/contracts/OnlySystem__factory.ts b/typechain-types/factories/contracts/OnlySystem__factory.ts index 5bd5ee33..6cd10aff 100644 --- a/typechain-types/factories/contracts/OnlySystem__factory.ts +++ b/typechain-types/factories/contracts/OnlySystem__factory.ts @@ -24,7 +24,7 @@ const _abi = [ ] as const; const _bytecode = - "0x6080604052348015600f57600080fd5b50603f80601d6000396000f3fe6080604052600080fdfea2646970667358221220d2b569a909b7bd77fe51a46b4cde29532290efe882021440ba463a7fdc00c03164736f6c63430008070033"; + "0x6080604052348015600f57600080fd5b50603f80601d6000396000f3fe6080604052600080fdfea2646970667358221220772905ef431edc87fa675f7b01bb9d9d6ed5843b754964b1acc949ecef5993f664736f6c634300081a0033"; type OnlySystemConstructorParams = | [signer?: Signer] diff --git a/typechain-types/factories/contracts/TestSystemContract__factory.ts b/typechain-types/factories/contracts/TestSystemContract__factory.ts deleted file mode 100644 index a6741a52..00000000 --- a/typechain-types/factories/contracts/TestSystemContract__factory.ts +++ /dev/null @@ -1,341 +0,0 @@ -/* Autogenerated file. Do not edit manually. */ -/* tslint:disable */ -/* eslint-disable */ -import { Signer, utils, Contract, ContractFactory, Overrides } from "ethers"; -import type { Provider, TransactionRequest } from "@ethersproject/providers"; -import type { PromiseOrValue } from "../../common"; -import type { - TestSystemContract, - TestSystemContractInterface, -} from "../../contracts/TestSystemContract"; - -const _abi = [ - { - inputs: [ - { - internalType: "address", - name: "wzeta_", - type: "address", - }, - { - internalType: "address", - name: "uniswapv2Factory_", - type: "address", - }, - { - internalType: "address", - name: "uniswapv2Router02_", - type: "address", - }, - ], - stateMutability: "nonpayable", - type: "constructor", - }, - { - inputs: [], - name: "CallerIsNotFungibleModule", - type: "error", - }, - { - inputs: [], - name: "CantBeIdenticalAddresses", - type: "error", - }, - { - inputs: [], - name: "CantBeZeroAddress", - type: "error", - }, - { - inputs: [], - name: "InvalidTarget", - type: "error", - }, - { - anonymous: false, - inputs: [ - { - indexed: false, - internalType: "uint256", - name: "", - type: "uint256", - }, - { - indexed: false, - internalType: "address", - name: "", - type: "address", - }, - ], - name: "SetGasCoin", - type: "event", - }, - { - anonymous: false, - inputs: [ - { - indexed: false, - internalType: "uint256", - name: "", - type: "uint256", - }, - { - indexed: false, - internalType: "uint256", - name: "", - type: "uint256", - }, - ], - name: "SetGasPrice", - type: "event", - }, - { - anonymous: false, - inputs: [ - { - indexed: false, - internalType: "uint256", - name: "", - type: "uint256", - }, - { - indexed: false, - internalType: "address", - name: "", - type: "address", - }, - ], - name: "SetGasZetaPool", - type: "event", - }, - { - anonymous: false, - inputs: [ - { - indexed: false, - internalType: "address", - name: "", - type: "address", - }, - ], - name: "SetWZeta", - type: "event", - }, - { - anonymous: false, - inputs: [], - name: "SystemContractDeployed", - type: "event", - }, - { - inputs: [ - { - internalType: "uint256", - name: "", - type: "uint256", - }, - ], - name: "gasCoinZRC20ByChainId", - outputs: [ - { - internalType: "address", - name: "", - type: "address", - }, - ], - stateMutability: "view", - type: "function", - }, - { - inputs: [ - { - internalType: "uint256", - name: "", - type: "uint256", - }, - ], - name: "gasPriceByChainId", - outputs: [ - { - internalType: "uint256", - name: "", - type: "uint256", - }, - ], - stateMutability: "view", - type: "function", - }, - { - inputs: [ - { - internalType: "uint256", - name: "", - type: "uint256", - }, - ], - name: "gasZetaPoolByChainId", - outputs: [ - { - internalType: "address", - name: "", - type: "address", - }, - ], - stateMutability: "view", - type: "function", - }, - { - inputs: [ - { - internalType: "uint256", - name: "chainID", - type: "uint256", - }, - { - internalType: "address", - name: "zrc20", - type: "address", - }, - ], - name: "setGasCoinZRC20", - outputs: [], - stateMutability: "nonpayable", - type: "function", - }, - { - inputs: [ - { - internalType: "uint256", - name: "chainID", - type: "uint256", - }, - { - internalType: "uint256", - name: "price", - type: "uint256", - }, - ], - name: "setGasPrice", - outputs: [], - stateMutability: "nonpayable", - type: "function", - }, - { - inputs: [ - { - internalType: "address", - name: "addr", - type: "address", - }, - ], - name: "setWZETAContractAddress", - outputs: [], - stateMutability: "nonpayable", - type: "function", - }, - { - inputs: [], - name: "uniswapv2FactoryAddress", - outputs: [ - { - internalType: "address", - name: "", - type: "address", - }, - ], - stateMutability: "view", - type: "function", - }, - { - inputs: [], - name: "uniswapv2Router02Address", - outputs: [ - { - internalType: "address", - name: "", - type: "address", - }, - ], - stateMutability: "view", - type: "function", - }, - { - inputs: [], - name: "wZetaContractAddress", - outputs: [ - { - internalType: "address", - name: "", - type: "address", - }, - ], - stateMutability: "view", - type: "function", - }, -] as const; - -const _bytecode = - "0x608060405234801561001057600080fd5b506040516108833803806108838339818101604052810190610032919061013e565b82600360006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555081600460006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555080600560006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055507f80699e81136d69cb8367ad52a994e25c722a86da654b561d0c14b61a777e7ac560405160405180910390a15050506101df565b600081519050610138816101c8565b92915050565b600080600060608486031215610157576101566101c3565b5b600061016586828701610129565b935050602061017686828701610129565b925050604061018786828701610129565b9150509250925092565b600061019c826101a3565b9050919050565b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b600080fd5b6101d181610191565b81146101dc57600080fd5b50565b610695806101ee6000396000f3fe608060405234801561001057600080fd5b50600436106100935760003560e01c806397770dff1161006657806397770dff14610134578063a7cb050714610150578063d7fd7afb1461016c578063d936a0121461019c578063ee2815ba146101ba57610093565b80630be1554714610098578063513a9c05146100c8578063569541b9146100f8578063842da36d14610116575b600080fd5b6100b260048036038101906100ad919061049d565b6101d6565b6040516100bf9190610568565b60405180910390f35b6100e260048036038101906100dd919061049d565b610209565b6040516100ef9190610568565b60405180910390f35b61010061023c565b60405161010d9190610568565b60405180910390f35b61011e610262565b60405161012b9190610568565b60405180910390f35b61014e60048036038101906101499190610470565b610288565b005b61016a6004803603810190610165919061050a565b610325565b005b6101866004803603810190610181919061049d565b610379565b6040516101939190610583565b60405180910390f35b6101a4610391565b6040516101b19190610568565b60405180910390f35b6101d460048036038101906101cf91906104ca565b6103b7565b005b60016020528060005260406000206000915054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b60026020528060005260406000206000915054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b600360009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b80600360006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055507fdba79d534382d1a8ae108e4c8ecb27c6ae42ab8b91d44eedf88bd329f3868d5e600360009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1660405161031a9190610568565b60405180910390a150565b80600080848152602001908152602001600020819055507f49f492222906ac486c3c1401fa545626df1f0c0e5a77a05597ea2ed66af9850d828260405161036d9291906105c7565b60405180910390a15050565b60006020528060005260406000206000915090505481565b600460009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b806001600084815260200190815260200160002060006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055507fd1b36d30f6248e97c473b4d1348ca164a4ef6759022f54a58ec200326c39c45d828260405161043a92919061059e565b60405180910390a15050565b60008135905061045581610631565b92915050565b60008135905061046a81610648565b92915050565b6000602082840312156104865761048561062c565b5b600061049484828501610446565b91505092915050565b6000602082840312156104b3576104b261062c565b5b60006104c18482850161045b565b91505092915050565b600080604083850312156104e1576104e061062c565b5b60006104ef8582860161045b565b925050602061050085828601610446565b9150509250929050565b600080604083850312156105215761052061062c565b5b600061052f8582860161045b565b92505060206105408582860161045b565b9150509250929050565b610553816105f0565b82525050565b61056281610622565b82525050565b600060208201905061057d600083018461054a565b92915050565b60006020820190506105986000830184610559565b92915050565b60006040820190506105b36000830185610559565b6105c0602083018461054a565b9392505050565b60006040820190506105dc6000830185610559565b6105e96020830184610559565b9392505050565b60006105fb82610602565b9050919050565b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b6000819050919050565b600080fd5b61063a816105f0565b811461064557600080fd5b50565b61065181610622565b811461065c57600080fd5b5056fea2646970667358221220a1a8cb0b617405d12a7b7c247a427667c2183e2cbf33b3cb5d310d6116c7e40064736f6c63430008070033"; - -type TestSystemContractConstructorParams = - | [signer?: Signer] - | ConstructorParameters; - -const isSuperArgs = ( - xs: TestSystemContractConstructorParams -): xs is ConstructorParameters => xs.length > 1; - -export class TestSystemContract__factory extends ContractFactory { - constructor(...args: TestSystemContractConstructorParams) { - if (isSuperArgs(args)) { - super(...args); - } else { - super(_abi, _bytecode, args[0]); - } - } - - override deploy( - wzeta_: PromiseOrValue, - uniswapv2Factory_: PromiseOrValue, - uniswapv2Router02_: PromiseOrValue, - overrides?: Overrides & { from?: PromiseOrValue } - ): Promise { - return super.deploy( - wzeta_, - uniswapv2Factory_, - uniswapv2Router02_, - overrides || {} - ) as Promise; - } - override getDeployTransaction( - wzeta_: PromiseOrValue, - uniswapv2Factory_: PromiseOrValue, - uniswapv2Router02_: PromiseOrValue, - overrides?: Overrides & { from?: PromiseOrValue } - ): TransactionRequest { - return super.getDeployTransaction( - wzeta_, - uniswapv2Factory_, - uniswapv2Router02_, - overrides || {} - ); - } - override attach(address: string): TestSystemContract { - return super.attach(address) as TestSystemContract; - } - override connect(signer: Signer): TestSystemContract__factory { - return super.connect(signer) as TestSystemContract__factory; - } - - static readonly bytecode = _bytecode; - static readonly abi = _abi; - static createInterface(): TestSystemContractInterface { - return new utils.Interface(_abi) as TestSystemContractInterface; - } - static connect( - address: string, - signerOrProvider: Signer | Provider - ): TestSystemContract { - return new Contract(address, _abi, signerOrProvider) as TestSystemContract; - } -} diff --git a/typechain-types/factories/contracts/TestZRC20__factory.ts b/typechain-types/factories/contracts/TestZRC20__factory.ts index f624a4d8..e2f9f8f4 100644 --- a/typechain-types/factories/contracts/TestZRC20__factory.ts +++ b/typechain-types/factories/contracts/TestZRC20__factory.ts @@ -35,6 +35,92 @@ const _abi = [ stateMutability: "nonpayable", type: "constructor", }, + { + inputs: [ + { + internalType: "address", + name: "spender", + type: "address", + }, + { + internalType: "uint256", + name: "allowance", + type: "uint256", + }, + { + internalType: "uint256", + name: "needed", + type: "uint256", + }, + ], + name: "ERC20InsufficientAllowance", + type: "error", + }, + { + inputs: [ + { + internalType: "address", + name: "sender", + type: "address", + }, + { + internalType: "uint256", + name: "balance", + type: "uint256", + }, + { + internalType: "uint256", + name: "needed", + type: "uint256", + }, + ], + name: "ERC20InsufficientBalance", + type: "error", + }, + { + inputs: [ + { + internalType: "address", + name: "approver", + type: "address", + }, + ], + name: "ERC20InvalidApprover", + type: "error", + }, + { + inputs: [ + { + internalType: "address", + name: "receiver", + type: "address", + }, + ], + name: "ERC20InvalidReceiver", + type: "error", + }, + { + inputs: [ + { + internalType: "address", + name: "sender", + type: "address", + }, + ], + name: "ERC20InvalidSender", + type: "error", + }, + { + inputs: [ + { + internalType: "address", + name: "spender", + type: "address", + }, + ], + name: "ERC20InvalidSpender", + type: "error", + }, { anonymous: false, inputs: [ @@ -118,7 +204,7 @@ const _abi = [ }, { internalType: "uint256", - name: "amount", + name: "value", type: "uint256", }, ], @@ -194,30 +280,6 @@ const _abi = [ stateMutability: "view", type: "function", }, - { - 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", - }, { inputs: [ { @@ -242,30 +304,6 @@ const _abi = [ stateMutability: "nonpayable", type: "function", }, - { - 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", - }, { inputs: [], name: "name", @@ -314,7 +352,7 @@ const _abi = [ }, { internalType: "uint256", - name: "amount", + name: "value", type: "uint256", }, ], @@ -343,7 +381,7 @@ const _abi = [ }, { internalType: "uint256", - name: "amount", + name: "value", type: "uint256", }, ], @@ -403,7 +441,7 @@ const _abi = [ ] as const; const _bytecode = - "0x608060405234801561001057600080fd5b5060405161202a38038061202a833981810160405281019061003291906103b5565b818181600390816100439190610657565b5080600490816100539190610657565b50505061008d3361006861009560201b60201c565b60ff16600a610077919061088b565b8561008291906108d6565b61009e60201b60201c565b5050506109f3565b60006012905090565b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff160361010d576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161010490610975565b60405180910390fd5b61011f6000838361020060201b60201c565b80600260008282546101319190610995565b92505081905550806000808473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020600082825401925050819055508173ffffffffffffffffffffffffffffffffffffffff16600073ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef836040516101e291906109d8565b60405180910390a36101fc6000838361020560201b60201c565b5050565b505050565b505050565b6000604051905090565b600080fd5b600080fd5b6000819050919050565b6102318161021e565b811461023c57600080fd5b50565b60008151905061024e81610228565b92915050565b600080fd5b600080fd5b6000601f19601f8301169050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b6102a78261025e565b810181811067ffffffffffffffff821117156102c6576102c561026f565b5b80604052505050565b60006102d961020a565b90506102e5828261029e565b919050565b600067ffffffffffffffff8211156103055761030461026f565b5b61030e8261025e565b9050602081019050919050565b60005b8381101561033957808201518184015260208101905061031e565b60008484015250505050565b6000610358610353846102ea565b6102cf565b90508281526020810184848401111561037457610373610259565b5b61037f84828561031b565b509392505050565b600082601f83011261039c5761039b610254565b5b81516103ac848260208601610345565b91505092915050565b6000806000606084860312156103ce576103cd610214565b5b60006103dc8682870161023f565b935050602084015167ffffffffffffffff8111156103fd576103fc610219565b5b61040986828701610387565b925050604084015167ffffffffffffffff81111561042a57610429610219565b5b61043686828701610387565b9150509250925092565b600081519050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052602260045260246000fd5b6000600282049050600182168061049257607f821691505b6020821081036104a5576104a461044b565b5b50919050565b60008190508160005260206000209050919050565b60006020601f8301049050919050565b600082821b905092915050565b60006008830261050d7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff826104d0565b61051786836104d0565b95508019841693508086168417925050509392505050565b6000819050919050565b600061055461054f61054a8461021e565b61052f565b61021e565b9050919050565b6000819050919050565b61056e83610539565b61058261057a8261055b565b8484546104dd565b825550505050565b600090565b61059761058a565b6105a2818484610565565b505050565b5b818110156105c6576105bb60008261058f565b6001810190506105a8565b5050565b601f82111561060b576105dc816104ab565b6105e5846104c0565b810160208510156105f4578190505b610608610600856104c0565b8301826105a7565b50505b505050565b600082821c905092915050565b600061062e60001984600802610610565b1980831691505092915050565b6000610647838361061d565b9150826002028217905092915050565b61066082610440565b67ffffffffffffffff8111156106795761067861026f565b5b610683825461047a565b61068e8282856105ca565b600060209050601f8311600181146106c157600084156106af578287015190505b6106b9858261063b565b865550610721565b601f1984166106cf866104ab565b60005b828110156106f7578489015182556001820191506020850194506020810190506106d2565b868310156107145784890151610710601f89168261061d565b8355505b6001600288020188555050505b505050505050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b60008160011c9050919050565b6000808291508390505b60018511156107af5780860481111561078b5761078a610729565b5b600185161561079a5780820291505b80810290506107a885610758565b945061076f565b94509492505050565b6000826107c85760019050610884565b816107d65760009050610884565b81600181146107ec57600281146107f657610825565b6001915050610884565b60ff84111561080857610807610729565b5b8360020a91508482111561081f5761081e610729565b5b50610884565b5060208310610133831016604e8410600b841016171561085a5782820a90508381111561085557610854610729565b5b610884565b6108678484846001610765565b9250905081840481111561087e5761087d610729565b5b81810290505b9392505050565b60006108968261021e565b91506108a18361021e565b92506108ce7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff84846107b8565b905092915050565b60006108e18261021e565b91506108ec8361021e565b92508282026108fa8161021e565b9150828204841483151761091157610910610729565b5b5092915050565b600082825260208201905092915050565b7f45524332303a206d696e7420746f20746865207a65726f206164647265737300600082015250565b600061095f601f83610918565b915061096a82610929565b602082019050919050565b6000602082019050818103600083015261098e81610952565b9050919050565b60006109a08261021e565b91506109ab8361021e565b92508282019050808211156109c3576109c2610729565b5b92915050565b6109d28161021e565b82525050565b60006020820190506109ed60008301846109c9565b92915050565b61162880610a026000396000f3fe608060405234801561001057600080fd5b50600436106100f55760003560e01c806347e7ef2411610097578063a9059cbb11610066578063a9059cbb146102c2578063c7012626146102f2578063d9eeebed14610322578063dd62ed3e14610341576100f5565b806347e7ef241461021457806370a082311461024457806395d89b4114610274578063a457c2d714610292576100f5565b806323b872dd116100d357806323b872dd146101665780632c27d3ab14610196578063313ce567146101c657806339509351146101e4576100f5565b806306fdde03146100fa578063095ea7b31461011857806318160ddd14610148575b600080fd5b610102610371565b60405161010f9190610d2f565b60405180910390f35b610132600480360381019061012d9190610def565b610403565b60405161013f9190610e4a565b60405180910390f35b610150610426565b60405161015d9190610e74565b60405180910390f35b610180600480360381019061017b9190610e8f565b610430565b60405161018d9190610e4a565b60405180910390f35b6101b060048036038101906101ab9190610f47565b61045f565b6040516101bd9190610fca565b60405180910390f35b6101ce6104d3565b6040516101db9190611001565b60405180910390f35b6101fe60048036038101906101f99190610def565b6104dc565b60405161020b9190610e4a565b60405180910390f35b61022e60048036038101906102299190610def565b610513565b60405161023b9190610e4a565b60405180910390f35b61025e6004803603810190610259919061101c565b61051f565b60405161026b9190610e74565b60405180910390f35b61027c610567565b6040516102899190610d2f565b60405180910390f35b6102ac60048036038101906102a79190610def565b6105f9565b6040516102b99190610e4a565b60405180910390f35b6102dc60048036038101906102d79190610def565b610670565b6040516102e99190610e4a565b60405180910390f35b61030c60048036038101906103079190611049565b610693565b6040516103199190610e4a565b60405180910390f35b61032a6106b8565b6040516103389291906110a9565b60405180910390f35b61035b600480360381019061035691906110d2565b6106c6565b6040516103689190610e74565b60405180910390f35b60606003805461038090611141565b80601f01602080910402602001604051908101604052809291908181526020018280546103ac90611141565b80156103f95780601f106103ce576101008083540402835291602001916103f9565b820191906000526020600020905b8154815290600101906020018083116103dc57829003601f168201915b5050505050905090565b60008061040e61074d565b905061041b818585610755565b600191505092915050565b6000600254905090565b60008061043b61074d565b905061044885828561091e565b6104538585856109aa565b60019150509392505050565b60008085858590858761047291906111a1565b9261047f939291906111df565b8080601f016020809104026020016040519081016040528093929190818152602001838380828437600081840152601f19601f82011690508083019250505050505050905082810151915050949350505050565b60006012905090565b6000806104e761074d565b90506105088185856104f985896106c6565b61050391906111a1565b610755565b600191505092915050565b60006001905092915050565b60008060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020549050919050565b60606004805461057690611141565b80601f01602080910402602001604051908101604052809291908181526020018280546105a290611141565b80156105ef5780601f106105c4576101008083540402835291602001916105ef565b820191906000526020600020905b8154815290600101906020018083116105d257829003601f168201915b5050505050905090565b60008061060461074d565b9050600061061282866106c6565b905083811015610657576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161064e9061128c565b60405180910390fd5b6106648286868403610755565b60019250505092915050565b60008061067b61074d565b90506106888185856109aa565b600191505092915050565b6000806106a28585600c610c20565b90506106ae8184610670565b9150509392505050565b600080306000915091509091565b6000600160008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054905092915050565b600033905090565b600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff16036107c4576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016107bb9061131e565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1603610833576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161082a906113b0565b60405180910390fd5b80600160008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508173ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925836040516109119190610e74565b60405180910390a3505050565b600061092a84846106c6565b90507fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff81146109a45781811015610996576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161098d9061141c565b60405180910390fd5b6109a38484848403610755565b5b50505050565b600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1603610a19576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610a10906114ae565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1603610a88576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610a7f90611540565b60405180910390fd5b610a93838383610c95565b60008060008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054905081811015610b19576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610b10906115d2565b60405180910390fd5b8181036000808673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002081905550816000808573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020600082825401925050819055508273ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef84604051610c079190610e74565b60405180910390a3610c1a848484610c9a565b50505050565b60008084848490601486610c3491906111a1565b92610c41939291906111df565b8080601f016020809104026020016040519081016040528093929190818152602001838380828437600081840152601f19601f82011690508083019250505050505050905060148101519150509392505050565b505050565b505050565b600081519050919050565b600082825260208201905092915050565b60005b83811015610cd9578082015181840152602081019050610cbe565b60008484015250505050565b6000601f19601f8301169050919050565b6000610d0182610c9f565b610d0b8185610caa565b9350610d1b818560208601610cbb565b610d2481610ce5565b840191505092915050565b60006020820190508181036000830152610d498184610cf6565b905092915050565b600080fd5b600080fd5b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b6000610d8682610d5b565b9050919050565b610d9681610d7b565b8114610da157600080fd5b50565b600081359050610db381610d8d565b92915050565b6000819050919050565b610dcc81610db9565b8114610dd757600080fd5b50565b600081359050610de981610dc3565b92915050565b60008060408385031215610e0657610e05610d51565b5b6000610e1485828601610da4565b9250506020610e2585828601610dda565b9150509250929050565b60008115159050919050565b610e4481610e2f565b82525050565b6000602082019050610e5f6000830184610e3b565b92915050565b610e6e81610db9565b82525050565b6000602082019050610e896000830184610e65565b92915050565b600080600060608486031215610ea857610ea7610d51565b5b6000610eb686828701610da4565b9350506020610ec786828701610da4565b9250506040610ed886828701610dda565b9150509250925092565b600080fd5b600080fd5b600080fd5b60008083601f840112610f0757610f06610ee2565b5b8235905067ffffffffffffffff811115610f2457610f23610ee7565b5b602083019150836001820283011115610f4057610f3f610eec565b5b9250929050565b60008060008060608587031215610f6157610f60610d51565b5b600085013567ffffffffffffffff811115610f7f57610f7e610d56565b5b610f8b87828801610ef1565b94509450506020610f9e87828801610dda565b9250506040610faf87828801610dda565b91505092959194509250565b610fc481610d7b565b82525050565b6000602082019050610fdf6000830184610fbb565b92915050565b600060ff82169050919050565b610ffb81610fe5565b82525050565b60006020820190506110166000830184610ff2565b92915050565b60006020828403121561103257611031610d51565b5b600061104084828501610da4565b91505092915050565b60008060006040848603121561106257611061610d51565b5b600084013567ffffffffffffffff8111156110805761107f610d56565b5b61108c86828701610ef1565b9350935050602061109f86828701610dda565b9150509250925092565b60006040820190506110be6000830185610fbb565b6110cb6020830184610e65565b9392505050565b600080604083850312156110e9576110e8610d51565b5b60006110f785828601610da4565b925050602061110885828601610da4565b9150509250929050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052602260045260246000fd5b6000600282049050600182168061115957607f821691505b60208210810361116c5761116b611112565b5b50919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b60006111ac82610db9565b91506111b783610db9565b92508282019050808211156111cf576111ce611172565b5b92915050565b600080fd5b600080fd5b600080858511156111f3576111f26111d5565b5b83861115611204576112036111da565b5b6001850283019150848603905094509492505050565b7f45524332303a2064656372656173656420616c6c6f77616e63652062656c6f7760008201527f207a65726f000000000000000000000000000000000000000000000000000000602082015250565b6000611276602583610caa565b91506112818261121a565b604082019050919050565b600060208201905081810360008301526112a581611269565b9050919050565b7f45524332303a20617070726f76652066726f6d20746865207a65726f2061646460008201527f7265737300000000000000000000000000000000000000000000000000000000602082015250565b6000611308602483610caa565b9150611313826112ac565b604082019050919050565b60006020820190508181036000830152611337816112fb565b9050919050565b7f45524332303a20617070726f766520746f20746865207a65726f20616464726560008201527f7373000000000000000000000000000000000000000000000000000000000000602082015250565b600061139a602283610caa565b91506113a58261133e565b604082019050919050565b600060208201905081810360008301526113c98161138d565b9050919050565b7f45524332303a20696e73756666696369656e7420616c6c6f77616e6365000000600082015250565b6000611406601d83610caa565b9150611411826113d0565b602082019050919050565b60006020820190508181036000830152611435816113f9565b9050919050565b7f45524332303a207472616e736665722066726f6d20746865207a65726f20616460008201527f6472657373000000000000000000000000000000000000000000000000000000602082015250565b6000611498602583610caa565b91506114a38261143c565b604082019050919050565b600060208201905081810360008301526114c78161148b565b9050919050565b7f45524332303a207472616e7366657220746f20746865207a65726f206164647260008201527f6573730000000000000000000000000000000000000000000000000000000000602082015250565b600061152a602383610caa565b9150611535826114ce565b604082019050919050565b600060208201905081810360008301526115598161151d565b9050919050565b7f45524332303a207472616e7366657220616d6f756e742065786365656473206260008201527f616c616e63650000000000000000000000000000000000000000000000000000602082015250565b60006115bc602683610caa565b91506115c782611560565b604082019050919050565b600060208201905081810360008301526115eb816115af565b905091905056fea26469706673582212203ba3e0eadcbf3df23612df3719aa28c933428a38a60e6090ad646d9d8cd23d0264736f6c634300081a0033"; + "0x608060405234801561001057600080fd5b50604051611d6d380380611d6d833981810160405281019061003291906104f6565b818181600390816100439190610798565b5080600490816100539190610798565b50505061008d3361006861009560201b60201c565b60ff16600a61007791906109cc565b856100829190610a17565b61009e60201b60201c565b505050610b4a565b60006012905090565b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff16036101105760006040517fec442f050000000000000000000000000000000000000000000000000000000081526004016101079190610a9a565b60405180910390fd5b6101226000838361012660201b60201c565b5050565b600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff160361017857806002600082825461016c9190610ab5565b9250508190555061024b565b60008060008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054905081811015610204578381836040517fe450d38c0000000000000000000000000000000000000000000000000000000081526004016101fb93929190610af8565b60405180910390fd5b8181036000808673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002081905550505b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff160361029457806002600082825403925050819055506102e1565b806000808473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020600082825401925050819055505b8173ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef8360405161033e9190610b2f565b60405180910390a3505050565b6000604051905090565b600080fd5b600080fd5b6000819050919050565b6103728161035f565b811461037d57600080fd5b50565b60008151905061038f81610369565b92915050565b600080fd5b600080fd5b6000601f19601f8301169050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b6103e88261039f565b810181811067ffffffffffffffff82111715610407576104066103b0565b5b80604052505050565b600061041a61034b565b905061042682826103df565b919050565b600067ffffffffffffffff821115610446576104456103b0565b5b61044f8261039f565b9050602081019050919050565b60005b8381101561047a57808201518184015260208101905061045f565b60008484015250505050565b60006104996104948461042b565b610410565b9050828152602081018484840111156104b5576104b461039a565b5b6104c084828561045c565b509392505050565b600082601f8301126104dd576104dc610395565b5b81516104ed848260208601610486565b91505092915050565b60008060006060848603121561050f5761050e610355565b5b600061051d86828701610380565b935050602084015167ffffffffffffffff81111561053e5761053d61035a565b5b61054a868287016104c8565b925050604084015167ffffffffffffffff81111561056b5761056a61035a565b5b610577868287016104c8565b9150509250925092565b600081519050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052602260045260246000fd5b600060028204905060018216806105d357607f821691505b6020821081036105e6576105e561058c565b5b50919050565b60008190508160005260206000209050919050565b60006020601f8301049050919050565b600082821b905092915050565b60006008830261064e7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff82610611565b6106588683610611565b95508019841693508086168417925050509392505050565b6000819050919050565b600061069561069061068b8461035f565b610670565b61035f565b9050919050565b6000819050919050565b6106af8361067a565b6106c36106bb8261069c565b84845461061e565b825550505050565b600090565b6106d86106cb565b6106e38184846106a6565b505050565b5b81811015610707576106fc6000826106d0565b6001810190506106e9565b5050565b601f82111561074c5761071d816105ec565b61072684610601565b81016020851015610735578190505b61074961074185610601565b8301826106e8565b50505b505050565b600082821c905092915050565b600061076f60001984600802610751565b1980831691505092915050565b6000610788838361075e565b9150826002028217905092915050565b6107a182610581565b67ffffffffffffffff8111156107ba576107b96103b0565b5b6107c482546105bb565b6107cf82828561070b565b600060209050601f83116001811461080257600084156107f0578287015190505b6107fa858261077c565b865550610862565b601f198416610810866105ec565b60005b8281101561083857848901518255600182019150602085019450602081019050610813565b868310156108555784890151610851601f89168261075e565b8355505b6001600288020188555050505b505050505050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b60008160011c9050919050565b6000808291508390505b60018511156108f0578086048111156108cc576108cb61086a565b5b60018516156108db5780820291505b80810290506108e985610899565b94506108b0565b94509492505050565b60008261090957600190506109c5565b8161091757600090506109c5565b816001811461092d576002811461093757610966565b60019150506109c5565b60ff8411156109495761094861086a565b5b8360020a9150848211156109605761095f61086a565b5b506109c5565b5060208310610133831016604e8410600b841016171561099b5782820a9050838111156109965761099561086a565b5b6109c5565b6109a884848460016108a6565b925090508184048111156109bf576109be61086a565b5b81810290505b9392505050565b60006109d78261035f565b91506109e28361035f565b9250610a0f7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff84846108f9565b905092915050565b6000610a228261035f565b9150610a2d8361035f565b9250828202610a3b8161035f565b91508282048414831517610a5257610a5161086a565b5b5092915050565b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b6000610a8482610a59565b9050919050565b610a9481610a79565b82525050565b6000602082019050610aaf6000830184610a8b565b92915050565b6000610ac08261035f565b9150610acb8361035f565b9250828201905080821115610ae357610ae261086a565b5b92915050565b610af28161035f565b82525050565b6000606082019050610b0d6000830186610a8b565b610b1a6020830185610ae9565b610b276040830184610ae9565b949350505050565b6000602082019050610b446000830184610ae9565b92915050565b61121480610b596000396000f3fe608060405234801561001057600080fd5b50600436106100cf5760003560e01c806347e7ef241161008c578063a9059cbb11610066578063a9059cbb1461023c578063c70126261461026c578063d9eeebed1461029c578063dd62ed3e146102bb576100cf565b806347e7ef24146101be57806370a08231146101ee57806395d89b411461021e576100cf565b806306fdde03146100d4578063095ea7b3146100f257806318160ddd1461012257806323b872dd146101405780632c27d3ab14610170578063313ce567146101a0575b600080fd5b6100dc6102eb565b6040516100e99190610cbc565b60405180910390f35b61010c60048036038101906101079190610d7c565b61037d565b6040516101199190610dd7565b60405180910390f35b61012a6103a0565b6040516101379190610e01565b60405180910390f35b61015a60048036038101906101559190610e1c565b6103aa565b6040516101679190610dd7565b60405180910390f35b61018a60048036038101906101859190610ed4565b6103d9565b6040516101979190610f57565b60405180910390f35b6101a861044d565b6040516101b59190610f8e565b60405180910390f35b6101d860048036038101906101d39190610d7c565b610456565b6040516101e59190610dd7565b60405180910390f35b61020860048036038101906102039190610fa9565b610462565b6040516102159190610e01565b60405180910390f35b6102266104aa565b6040516102339190610cbc565b60405180910390f35b61025660048036038101906102519190610d7c565b61053c565b6040516102639190610dd7565b60405180910390f35b61028660048036038101906102819190610fd6565b61055f565b6040516102939190610dd7565b60405180910390f35b6102a4610584565b6040516102b2929190611036565b60405180910390f35b6102d560048036038101906102d0919061105f565b610592565b6040516102e29190610e01565b60405180910390f35b6060600380546102fa906110ce565b80601f0160208091040260200160405190810160405280929190818152602001828054610326906110ce565b80156103735780601f1061034857610100808354040283529160200191610373565b820191906000526020600020905b81548152906001019060200180831161035657829003601f168201915b5050505050905090565b600080610388610619565b9050610395818585610621565b600191505092915050565b6000600254905090565b6000806103b5610619565b90506103c2858285610633565b6103cd8585856106c7565b60019150509392505050565b6000808585859085876103ec919061112e565b926103f99392919061116c565b8080601f016020809104026020016040519081016040528093929190818152602001838380828437600081840152601f19601f82011690508083019250505050505050905082810151915050949350505050565b60006012905090565b60006001905092915050565b60008060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020549050919050565b6060600480546104b9906110ce565b80601f01602080910402602001604051908101604052809291908181526020018280546104e5906110ce565b80156105325780601f1061050757610100808354040283529160200191610532565b820191906000526020600020905b81548152906001019060200180831161051557829003601f168201915b5050505050905090565b600080610547610619565b90506105548185856106c7565b600191505092915050565b60008061056e8585600c6107bb565b905061057a818461053c565b9150509392505050565b600080306000915091509091565b6000600160008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054905092915050565b600033905090565b61062e8383836001610830565b505050565b600061063f8484610592565b90507fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff81146106c157818110156106b1578281836040517ffb8f41b20000000000000000000000000000000000000000000000000000000081526004016106a8939291906111a7565b60405180910390fd5b6106c084848484036000610830565b5b50505050565b600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff16036107395760006040517f96c6fd1e0000000000000000000000000000000000000000000000000000000081526004016107309190610f57565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff16036107ab5760006040517fec442f050000000000000000000000000000000000000000000000000000000081526004016107a29190610f57565b60405180910390fd5b6107b6838383610a07565b505050565b600080848484906014866107cf919061112e565b926107dc9392919061116c565b8080601f016020809104026020016040519081016040528093929190818152602001838380828437600081840152601f19601f82011690508083019250505050505050905060148101519150509392505050565b600073ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff16036108a25760006040517fe602df050000000000000000000000000000000000000000000000000000000081526004016108999190610f57565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff16036109145760006040517f94280d6200000000000000000000000000000000000000000000000000000000815260040161090b9190610f57565b60405180910390fd5b81600160008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508015610a01578273ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925846040516109f89190610e01565b60405180910390a35b50505050565b600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1603610a59578060026000828254610a4d919061112e565b92505081905550610b2c565b60008060008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054905081811015610ae5578381836040517fe450d38c000000000000000000000000000000000000000000000000000000008152600401610adc939291906111a7565b60405180910390fd5b8181036000808673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002081905550505b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1603610b755780600260008282540392505081905550610bc2565b806000808473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020600082825401925050819055505b8173ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef83604051610c1f9190610e01565b60405180910390a3505050565b600081519050919050565b600082825260208201905092915050565b60005b83811015610c66578082015181840152602081019050610c4b565b60008484015250505050565b6000601f19601f8301169050919050565b6000610c8e82610c2c565b610c988185610c37565b9350610ca8818560208601610c48565b610cb181610c72565b840191505092915050565b60006020820190508181036000830152610cd68184610c83565b905092915050565b600080fd5b600080fd5b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b6000610d1382610ce8565b9050919050565b610d2381610d08565b8114610d2e57600080fd5b50565b600081359050610d4081610d1a565b92915050565b6000819050919050565b610d5981610d46565b8114610d6457600080fd5b50565b600081359050610d7681610d50565b92915050565b60008060408385031215610d9357610d92610cde565b5b6000610da185828601610d31565b9250506020610db285828601610d67565b9150509250929050565b60008115159050919050565b610dd181610dbc565b82525050565b6000602082019050610dec6000830184610dc8565b92915050565b610dfb81610d46565b82525050565b6000602082019050610e166000830184610df2565b92915050565b600080600060608486031215610e3557610e34610cde565b5b6000610e4386828701610d31565b9350506020610e5486828701610d31565b9250506040610e6586828701610d67565b9150509250925092565b600080fd5b600080fd5b600080fd5b60008083601f840112610e9457610e93610e6f565b5b8235905067ffffffffffffffff811115610eb157610eb0610e74565b5b602083019150836001820283011115610ecd57610ecc610e79565b5b9250929050565b60008060008060608587031215610eee57610eed610cde565b5b600085013567ffffffffffffffff811115610f0c57610f0b610ce3565b5b610f1887828801610e7e565b94509450506020610f2b87828801610d67565b9250506040610f3c87828801610d67565b91505092959194509250565b610f5181610d08565b82525050565b6000602082019050610f6c6000830184610f48565b92915050565b600060ff82169050919050565b610f8881610f72565b82525050565b6000602082019050610fa36000830184610f7f565b92915050565b600060208284031215610fbf57610fbe610cde565b5b6000610fcd84828501610d31565b91505092915050565b600080600060408486031215610fef57610fee610cde565b5b600084013567ffffffffffffffff81111561100d5761100c610ce3565b5b61101986828701610e7e565b9350935050602061102c86828701610d67565b9150509250925092565b600060408201905061104b6000830185610f48565b6110586020830184610df2565b9392505050565b6000806040838503121561107657611075610cde565b5b600061108485828601610d31565b925050602061109585828601610d31565b9150509250929050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052602260045260246000fd5b600060028204905060018216806110e657607f821691505b6020821081036110f9576110f861109f565b5b50919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b600061113982610d46565b915061114483610d46565b925082820190508082111561115c5761115b6110ff565b5b92915050565b600080fd5b600080fd5b600080858511156111805761117f611162565b5b8386111561119157611190611167565b5b6001850283019150848603905094509492505050565b60006060820190506111bc6000830186610f48565b6111c96020830185610df2565b6111d66040830184610df2565b94935050505056fea264697066735822122062074f98320c38019bbeac1ec71cc040d7c4f7de4005577d6c256753db62984964736f6c634300081a0033"; type TestZRC20ConstructorParams = | [signer?: Signer] diff --git a/typechain-types/factories/contracts/ZetaConnectorMock.sol/ZetaConnectorMockValue__factory.ts b/typechain-types/factories/contracts/ZetaConnectorMock.sol/ZetaConnectorMockValue__factory.ts deleted file mode 100644 index 60bf9fb5..00000000 --- a/typechain-types/factories/contracts/ZetaConnectorMock.sol/ZetaConnectorMockValue__factory.ts +++ /dev/null @@ -1,112 +0,0 @@ -/* Autogenerated file. Do not edit manually. */ -/* tslint:disable */ -/* eslint-disable */ -import { Signer, utils, Contract, ContractFactory, Overrides } from "ethers"; -import type { Provider, TransactionRequest } from "@ethersproject/providers"; -import type { PromiseOrValue } from "../../../common"; -import type { - ZetaConnectorMockValue, - ZetaConnectorMockValueInterface, -} from "../../../contracts/ZetaConnectorMock.sol/ZetaConnectorMockValue"; - -const _abi = [ - { - inputs: [ - { - components: [ - { - internalType: "uint256", - name: "destinationChainId", - type: "uint256", - }, - { - internalType: "bytes", - name: "destinationAddress", - type: "bytes", - }, - { - internalType: "uint256", - name: "destinationGasLimit", - type: "uint256", - }, - { - internalType: "bytes", - name: "message", - type: "bytes", - }, - { - internalType: "uint256", - name: "zetaValueAndGas", - type: "uint256", - }, - { - internalType: "bytes", - name: "zetaParams", - type: "bytes", - }, - ], - internalType: "struct ZetaInterfaces.SendInput", - name: "input", - type: "tuple", - }, - ], - name: "send", - outputs: [], - stateMutability: "nonpayable", - type: "function", - }, -] as const; - -const _bytecode = - "0x608060405234801561001057600080fd5b5060ea8061001f6000396000f3fe6080604052348015600f57600080fd5b506004361060285760003560e01c8063ec02690114602d575b600080fd5b60436004803603810190603f91906064565b6045565b005b50565b600060c08284031215605b57605a60a5565b5b81905092915050565b600060208284031215607757607660af565b5b600082013567ffffffffffffffff811115609257609160aa565b5b609c848285016048565b91505092915050565b600080fd5b600080fd5b600080fdfea2646970667358221220a533791b73f798c1ed73790b673d2b747d6d63cb50bff753a5a44bf51784d42764736f6c63430008070033"; - -type ZetaConnectorMockValueConstructorParams = - | [signer?: Signer] - | ConstructorParameters; - -const isSuperArgs = ( - xs: ZetaConnectorMockValueConstructorParams -): xs is ConstructorParameters => xs.length > 1; - -export class ZetaConnectorMockValue__factory extends ContractFactory { - constructor(...args: ZetaConnectorMockValueConstructorParams) { - if (isSuperArgs(args)) { - super(...args); - } else { - super(_abi, _bytecode, args[0]); - } - } - - override deploy( - overrides?: Overrides & { from?: PromiseOrValue } - ): Promise { - return super.deploy(overrides || {}) as Promise; - } - override getDeployTransaction( - overrides?: Overrides & { from?: PromiseOrValue } - ): TransactionRequest { - return super.getDeployTransaction(overrides || {}); - } - override attach(address: string): ZetaConnectorMockValue { - return super.attach(address) as ZetaConnectorMockValue; - } - override connect(signer: Signer): ZetaConnectorMockValue__factory { - return super.connect(signer) as ZetaConnectorMockValue__factory; - } - - static readonly bytecode = _bytecode; - static readonly abi = _abi; - static createInterface(): ZetaConnectorMockValueInterface { - return new utils.Interface(_abi) as ZetaConnectorMockValueInterface; - } - static connect( - address: string, - signerOrProvider: Signer | Provider - ): ZetaConnectorMockValue { - return new Contract( - address, - _abi, - signerOrProvider - ) as ZetaConnectorMockValue; - } -} diff --git a/typechain-types/factories/contracts/ZetaConnectorMock.sol/index.ts b/typechain-types/factories/contracts/ZetaConnectorMock.sol/index.ts deleted file mode 100644 index 3d8f3db6..00000000 --- a/typechain-types/factories/contracts/ZetaConnectorMock.sol/index.ts +++ /dev/null @@ -1,4 +0,0 @@ -/* Autogenerated file. Do not edit manually. */ -/* tslint:disable */ -/* eslint-disable */ -export { ZetaConnectorMockValue__factory } from "./ZetaConnectorMockValue__factory"; diff --git a/typechain-types/factories/contracts/index.ts b/typechain-types/factories/contracts/index.ts index 13457c2d..9ea2b9b9 100644 --- a/typechain-types/factories/contracts/index.ts +++ b/typechain-types/factories/contracts/index.ts @@ -5,10 +5,8 @@ export * as ethZetaMockSol from "./EthZetaMock.sol"; export * as revertSol from "./Revert.sol"; export * as systemContractSol from "./SystemContract.sol"; export * as universalContractSol from "./UniversalContract.sol"; -export * as zetaConnectorMockSol from "./ZetaConnectorMock.sol"; export * as shared from "./shared"; export { BytesHelperLib__factory } from "./BytesHelperLib__factory"; export { OnlySystem__factory } from "./OnlySystem__factory"; export { SwapHelperLib__factory } from "./SwapHelperLib__factory"; -export { TestSystemContract__factory } from "./TestSystemContract__factory"; export { TestZRC20__factory } from "./TestZRC20__factory"; diff --git a/typechain-types/factories/contracts/shared/MockSystemContract.sol/MockSystemContract__factory.ts b/typechain-types/factories/contracts/shared/MockSystemContract.sol/MockSystemContract__factory.ts deleted file mode 100644 index 28c2c4fd..00000000 --- a/typechain-types/factories/contracts/shared/MockSystemContract.sol/MockSystemContract__factory.ts +++ /dev/null @@ -1,408 +0,0 @@ -/* Autogenerated file. Do not edit manually. */ -/* tslint:disable */ -/* eslint-disable */ -import { Signer, utils, Contract, ContractFactory, Overrides } from "ethers"; -import type { Provider, TransactionRequest } from "@ethersproject/providers"; -import type { PromiseOrValue } from "../../../../common"; -import type { - MockSystemContract, - MockSystemContractInterface, -} from "../../../../contracts/shared/MockSystemContract.sol/MockSystemContract"; - -const _abi = [ - { - inputs: [ - { - internalType: "address", - name: "wzeta_", - type: "address", - }, - { - internalType: "address", - name: "uniswapv2Factory_", - type: "address", - }, - { - internalType: "address", - name: "uniswapv2Router02_", - type: "address", - }, - ], - stateMutability: "nonpayable", - type: "constructor", - }, - { - inputs: [], - name: "CallerIsNotFungibleModule", - type: "error", - }, - { - inputs: [], - name: "CantBeIdenticalAddresses", - type: "error", - }, - { - inputs: [], - name: "CantBeZeroAddress", - type: "error", - }, - { - inputs: [], - name: "InvalidTarget", - type: "error", - }, - { - inputs: [], - name: "TransferFailed", - type: "error", - }, - { - anonymous: false, - inputs: [ - { - indexed: false, - internalType: "uint256", - name: "", - type: "uint256", - }, - { - indexed: false, - internalType: "address", - name: "", - type: "address", - }, - ], - name: "SetGasCoin", - type: "event", - }, - { - anonymous: false, - inputs: [ - { - indexed: false, - internalType: "uint256", - name: "", - type: "uint256", - }, - { - indexed: false, - internalType: "uint256", - name: "", - type: "uint256", - }, - ], - name: "SetGasPrice", - type: "event", - }, - { - anonymous: false, - inputs: [ - { - indexed: false, - internalType: "uint256", - name: "", - type: "uint256", - }, - { - indexed: false, - internalType: "address", - name: "", - type: "address", - }, - ], - name: "SetGasZetaPool", - type: "event", - }, - { - anonymous: false, - inputs: [ - { - indexed: false, - internalType: "address", - name: "", - type: "address", - }, - ], - name: "SetWZeta", - type: "event", - }, - { - anonymous: false, - inputs: [], - name: "SystemContractDeployed", - type: "event", - }, - { - inputs: [ - { - internalType: "uint256", - name: "", - type: "uint256", - }, - ], - name: "gasCoinZRC20ByChainId", - outputs: [ - { - internalType: "address", - name: "", - type: "address", - }, - ], - stateMutability: "view", - type: "function", - }, - { - inputs: [ - { - internalType: "uint256", - name: "", - type: "uint256", - }, - ], - name: "gasPriceByChainId", - outputs: [ - { - internalType: "uint256", - name: "", - type: "uint256", - }, - ], - stateMutability: "view", - type: "function", - }, - { - inputs: [ - { - internalType: "uint256", - name: "", - type: "uint256", - }, - ], - name: "gasZetaPoolByChainId", - outputs: [ - { - internalType: "address", - name: "", - type: "address", - }, - ], - stateMutability: "view", - type: "function", - }, - { - inputs: [ - { - internalType: "uint256", - name: "chainID", - type: "uint256", - }, - { - internalType: "address", - name: "target", - type: "address", - }, - { - internalType: "address", - name: "zrc20", - type: "address", - }, - { - internalType: "uint256", - name: "amount", - type: "uint256", - }, - { - internalType: "bytes", - name: "message", - type: "bytes", - }, - ], - name: "onCrossChainCall", - outputs: [], - stateMutability: "nonpayable", - type: "function", - }, - { - inputs: [ - { - internalType: "uint256", - name: "chainID", - type: "uint256", - }, - { - internalType: "address", - name: "zrc20", - type: "address", - }, - ], - name: "setGasCoinZRC20", - outputs: [], - stateMutability: "nonpayable", - type: "function", - }, - { - inputs: [ - { - internalType: "uint256", - name: "chainID", - type: "uint256", - }, - { - internalType: "uint256", - name: "price", - type: "uint256", - }, - ], - name: "setGasPrice", - outputs: [], - stateMutability: "nonpayable", - type: "function", - }, - { - inputs: [ - { - internalType: "address", - name: "addr", - type: "address", - }, - ], - name: "setWZETAContractAddress", - outputs: [], - stateMutability: "nonpayable", - type: "function", - }, - { - inputs: [], - name: "uniswapv2FactoryAddress", - outputs: [ - { - internalType: "address", - name: "", - type: "address", - }, - ], - stateMutability: "view", - type: "function", - }, - { - inputs: [ - { - internalType: "address", - name: "factory", - type: "address", - }, - { - internalType: "address", - name: "tokenA", - type: "address", - }, - { - internalType: "address", - name: "tokenB", - type: "address", - }, - ], - name: "uniswapv2PairFor", - outputs: [ - { - internalType: "address", - name: "pair", - type: "address", - }, - ], - stateMutability: "pure", - type: "function", - }, - { - inputs: [], - name: "uniswapv2Router02Address", - outputs: [ - { - internalType: "address", - name: "", - type: "address", - }, - ], - stateMutability: "view", - type: "function", - }, - { - inputs: [], - name: "wZetaContractAddress", - outputs: [ - { - internalType: "address", - name: "", - type: "address", - }, - ], - stateMutability: "view", - type: "function", - }, -] as const; - -const _bytecode = - "0x60c06040523480156200001157600080fd5b506040516200113f3803806200113f833981810160405281019062000037919062000132565b82600360006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055508173ffffffffffffffffffffffffffffffffffffffff1660808173ffffffffffffffffffffffffffffffffffffffff1660601b815250508073ffffffffffffffffffffffffffffffffffffffff1660a08173ffffffffffffffffffffffffffffffffffffffff1660601b815250507f80699e81136d69cb8367ad52a994e25c722a86da654b561d0c14b61a777e7ac560405160405180910390a1505050620001e1565b6000815190506200012c81620001c7565b92915050565b6000806000606084860312156200014e576200014d620001c2565b5b60006200015e868287016200011b565b935050602062000171868287016200011b565b925050604062000184868287016200011b565b9150509250925092565b60006200019b82620001a2565b9050919050565b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b600080fd5b620001d2816200018e565b8114620001de57600080fd5b50565b60805160601c60a05160601c610f326200020d6000396000610465015260006106040152610f326000f3fe608060405234801561001057600080fd5b50600436106100a95760003560e01c806397770dff1161007157806397770dff14610166578063a7cb050714610182578063c63585cc1461019e578063d7fd7afb146101ce578063d936a012146101fe578063ee2815ba1461021c576100a9565b80630be15547146100ae578063513a9c05146100de578063569541b91461010e578063762aa5ca1461012c578063842da36d14610148575b600080fd5b6100c860048036038101906100c39190610913565b610238565b6040516100d59190610c2e565b60405180910390f35b6100f860048036038101906100f39190610913565b61026b565b6040516101059190610c2e565b60405180910390f35b61011661029e565b6040516101239190610c2e565b60405180910390f35b61014660048036038101906101419190610980565b6102c4565b005b610150610463565b60405161015d9190610c2e565b60405180910390f35b610180600480360381019061017b9190610866565b610487565b005b61019c60048036038101906101979190610a1a565b610524565b005b6101b860048036038101906101b39190610893565b610578565b6040516101c59190610c2e565b60405180910390f35b6101e860048036038101906101e39190610913565b6105ea565b6040516101f59190610cc7565b60405180910390f35b610206610602565b6040516102139190610c2e565b60405180910390f35b61023660048036038101906102319190610940565b610626565b005b60016020528060005260406000206000915054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b60026020528060005260406000206000915054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b600360009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b6000336040516020016102d79190610c2e565b6040516020818303038152906040529050600060405180606001604052808381526020013373ffffffffffffffffffffffffffffffffffffffff16815260200189815250905060008673ffffffffffffffffffffffffffffffffffffffff1663a9059cbb89886040518363ffffffff1660e01b815260040161035a929190610c49565b602060405180830381600087803b15801561037457600080fd5b505af1158015610388573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906103ac91906108e6565b9050806103e5576040517f90b8ec1800000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b8773ffffffffffffffffffffffffffffffffffffffff1663de43156e83898989896040518663ffffffff1660e01b8152600401610426959493929190610c72565b600060405180830381600087803b15801561044057600080fd5b505af1158015610454573d6000803e3d6000fd5b50505050505050505050505050565b7f000000000000000000000000000000000000000000000000000000000000000081565b80600360006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055507fdba79d534382d1a8ae108e4c8ecb27c6ae42ab8b91d44eedf88bd329f3868d5e600360009054906101000a900473ffffffffffffffffffffffffffffffffffffffff166040516105199190610c2e565b60405180910390a150565b80600080848152602001908152602001600020819055507f49f492222906ac486c3c1401fa545626df1f0c0e5a77a05597ea2ed66af9850d828260405161056c929190610d0b565b60405180910390a15050565b600080600061058785856106b5565b9150915085828260405160200161059f929190610bc0565b604051602081830303815290604052805190602001206040516020016105c6929190610bec565b6040516020818303038152906040528051906020012060001c925050509392505050565b60006020528060005260406000206000915090505481565b7f000000000000000000000000000000000000000000000000000000000000000081565b806001600084815260200190815260200160002060006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055507fd1b36d30f6248e97c473b4d1348ca164a4ef6759022f54a58ec200326c39c45d82826040516106a9929190610ce2565b60405180910390a15050565b6000808273ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff16141561071e576040517fcb1e7cfe00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b8273ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff161061075857828461075b565b83835b8092508193505050600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1614156107ca576040517f78b507da00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b9250929050565b6000813590506107e081610eb7565b92915050565b6000815190506107f581610ece565b92915050565b60008083601f84011261081157610810610e33565b5b8235905067ffffffffffffffff81111561082e5761082d610e2e565b5b60208301915083600182028301111561084a57610849610e38565b5b9250929050565b60008135905061086081610ee5565b92915050565b60006020828403121561087c5761087b610e42565b5b600061088a848285016107d1565b91505092915050565b6000806000606084860312156108ac576108ab610e42565b5b60006108ba868287016107d1565b93505060206108cb868287016107d1565b92505060406108dc868287016107d1565b9150509250925092565b6000602082840312156108fc576108fb610e42565b5b600061090a848285016107e6565b91505092915050565b60006020828403121561092957610928610e42565b5b600061093784828501610851565b91505092915050565b6000806040838503121561095757610956610e42565b5b600061096585828601610851565b9250506020610976858286016107d1565b9150509250929050565b60008060008060008060a0878903121561099d5761099c610e42565b5b60006109ab89828a01610851565b96505060206109bc89828a016107d1565b95505060406109cd89828a016107d1565b94505060606109de89828a01610851565b935050608087013567ffffffffffffffff8111156109ff576109fe610e3d565b5b610a0b89828a016107fb565b92509250509295509295509295565b60008060408385031215610a3157610a30610e42565b5b6000610a3f85828601610851565b9250506020610a5085828601610851565b9150509250929050565b610a6381610d6c565b82525050565b610a7281610d6c565b82525050565b610a89610a8482610d6c565b610e00565b82525050565b610aa0610a9b82610d8a565b610e12565b82525050565b6000610ab28385610d50565b9350610abf838584610dbe565b610ac883610e47565b840190509392505050565b6000610ade82610d34565b610ae88185610d3f565b9350610af8818560208601610dcd565b610b0181610e47565b840191505092915050565b6000610b19602083610d61565b9150610b2482610e65565b602082019050919050565b6000610b3c600183610d61565b9150610b4782610e8e565b600182019050919050565b60006060830160008301518482036000860152610b6f8282610ad3565b9150506020830151610b846020860182610a5a565b506040830151610b976040860182610ba2565b508091505092915050565b610bab81610db4565b82525050565b610bba81610db4565b82525050565b6000610bcc8285610a78565b601482019150610bdc8284610a78565b6014820191508190509392505050565b6000610bf782610b2f565b9150610c038285610a78565b601482019150610c138284610a8f565b602082019150610c2282610b0c565b91508190509392505050565b6000602082019050610c436000830184610a69565b92915050565b6000604082019050610c5e6000830185610a69565b610c6b6020830184610bb1565b9392505050565b60006080820190508181036000830152610c8c8188610b52565b9050610c9b6020830187610a69565b610ca86040830186610bb1565b8181036060830152610cbb818486610aa6565b90509695505050505050565b6000602082019050610cdc6000830184610bb1565b92915050565b6000604082019050610cf76000830185610bb1565b610d046020830184610a69565b9392505050565b6000604082019050610d206000830185610bb1565b610d2d6020830184610bb1565b9392505050565b600081519050919050565b600082825260208201905092915050565b600082825260208201905092915050565b600081905092915050565b6000610d7782610d94565b9050919050565b60008115159050919050565b6000819050919050565b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b6000819050919050565b82818337600083830152505050565b60005b83811015610deb578082015181840152602081019050610dd0565b83811115610dfa576000848401525b50505050565b6000610e0b82610e1c565b9050919050565b6000819050919050565b6000610e2782610e58565b9050919050565b600080fd5b600080fd5b600080fd5b600080fd5b600080fd5b6000601f19601f8301169050919050565b60008160601b9050919050565b7f96e8ac4277198ff8b6f785478aa9a39f403cb768dd02cbee326c3e7da348845f600082015250565b7fff00000000000000000000000000000000000000000000000000000000000000600082015250565b610ec081610d6c565b8114610ecb57600080fd5b50565b610ed781610d7e565b8114610ee257600080fd5b50565b610eee81610db4565b8114610ef957600080fd5b5056fea2646970667358221220a2ac3540b1f1ed82c5a0f0f0820653355bf2f21b61e6ec081500d78cf85e5c3364736f6c63430008070033"; - -type MockSystemContractConstructorParams = - | [signer?: Signer] - | ConstructorParameters; - -const isSuperArgs = ( - xs: MockSystemContractConstructorParams -): xs is ConstructorParameters => xs.length > 1; - -export class MockSystemContract__factory extends ContractFactory { - constructor(...args: MockSystemContractConstructorParams) { - if (isSuperArgs(args)) { - super(...args); - } else { - super(_abi, _bytecode, args[0]); - } - } - - override deploy( - wzeta_: PromiseOrValue, - uniswapv2Factory_: PromiseOrValue, - uniswapv2Router02_: PromiseOrValue, - overrides?: Overrides & { from?: PromiseOrValue } - ): Promise { - return super.deploy( - wzeta_, - uniswapv2Factory_, - uniswapv2Router02_, - overrides || {} - ) as Promise; - } - override getDeployTransaction( - wzeta_: PromiseOrValue, - uniswapv2Factory_: PromiseOrValue, - uniswapv2Router02_: PromiseOrValue, - overrides?: Overrides & { from?: PromiseOrValue } - ): TransactionRequest { - return super.getDeployTransaction( - wzeta_, - uniswapv2Factory_, - uniswapv2Router02_, - overrides || {} - ); - } - override attach(address: string): MockSystemContract { - return super.attach(address) as MockSystemContract; - } - override connect(signer: Signer): MockSystemContract__factory { - return super.connect(signer) as MockSystemContract__factory; - } - - static readonly bytecode = _bytecode; - static readonly abi = _abi; - static createInterface(): MockSystemContractInterface { - return new utils.Interface(_abi) as MockSystemContractInterface; - } - static connect( - address: string, - signerOrProvider: Signer | Provider - ): MockSystemContract { - return new Contract(address, _abi, signerOrProvider) as MockSystemContract; - } -} diff --git a/typechain-types/factories/contracts/shared/MockSystemContract.sol/SystemContractErrors__factory.ts b/typechain-types/factories/contracts/shared/MockSystemContract.sol/SystemContractErrors__factory.ts deleted file mode 100644 index 296b09a0..00000000 --- a/typechain-types/factories/contracts/shared/MockSystemContract.sol/SystemContractErrors__factory.ts +++ /dev/null @@ -1,50 +0,0 @@ -/* Autogenerated file. Do not edit manually. */ -/* tslint:disable */ -/* eslint-disable */ - -import { Contract, Signer, utils } from "ethers"; -import type { Provider } from "@ethersproject/providers"; -import type { - SystemContractErrors, - SystemContractErrorsInterface, -} from "../../../../contracts/shared/MockSystemContract.sol/SystemContractErrors"; - -const _abi = [ - { - inputs: [], - name: "CallerIsNotFungibleModule", - type: "error", - }, - { - inputs: [], - name: "CantBeIdenticalAddresses", - type: "error", - }, - { - inputs: [], - name: "CantBeZeroAddress", - type: "error", - }, - { - inputs: [], - name: "InvalidTarget", - type: "error", - }, -] as const; - -export class SystemContractErrors__factory { - static readonly abi = _abi; - static createInterface(): SystemContractErrorsInterface { - return new utils.Interface(_abi) as SystemContractErrorsInterface; - } - static connect( - address: string, - signerOrProvider: Signer | Provider - ): SystemContractErrors { - return new Contract( - address, - _abi, - signerOrProvider - ) as SystemContractErrors; - } -} diff --git a/typechain-types/factories/contracts/shared/MockSystemContract.sol/index.ts b/typechain-types/factories/contracts/shared/MockSystemContract.sol/index.ts deleted file mode 100644 index 705440b4..00000000 --- a/typechain-types/factories/contracts/shared/MockSystemContract.sol/index.ts +++ /dev/null @@ -1,5 +0,0 @@ -/* Autogenerated file. Do not edit manually. */ -/* tslint:disable */ -/* eslint-disable */ -export { MockSystemContract__factory } from "./MockSystemContract__factory"; -export { SystemContractErrors__factory } from "./SystemContractErrors__factory"; diff --git a/typechain-types/factories/contracts/shared/MockZRC20__factory.ts b/typechain-types/factories/contracts/shared/MockZRC20__factory.ts index 8d625b48..daeb318c 100644 --- a/typechain-types/factories/contracts/shared/MockZRC20__factory.ts +++ b/typechain-types/factories/contracts/shared/MockZRC20__factory.ts @@ -38,6 +38,92 @@ const _abi = [ stateMutability: "nonpayable", type: "constructor", }, + { + inputs: [ + { + internalType: "address", + name: "spender", + type: "address", + }, + { + internalType: "uint256", + name: "allowance", + type: "uint256", + }, + { + internalType: "uint256", + name: "needed", + type: "uint256", + }, + ], + name: "ERC20InsufficientAllowance", + type: "error", + }, + { + inputs: [ + { + internalType: "address", + name: "sender", + type: "address", + }, + { + internalType: "uint256", + name: "balance", + type: "uint256", + }, + { + internalType: "uint256", + name: "needed", + type: "uint256", + }, + ], + name: "ERC20InsufficientBalance", + type: "error", + }, + { + inputs: [ + { + internalType: "address", + name: "approver", + type: "address", + }, + ], + name: "ERC20InvalidApprover", + type: "error", + }, + { + inputs: [ + { + internalType: "address", + name: "receiver", + type: "address", + }, + ], + name: "ERC20InvalidReceiver", + type: "error", + }, + { + inputs: [ + { + internalType: "address", + name: "sender", + type: "address", + }, + ], + name: "ERC20InvalidSender", + type: "error", + }, + { + inputs: [ + { + internalType: "address", + name: "spender", + type: "address", + }, + ], + name: "ERC20InvalidSpender", + type: "error", + }, { anonymous: false, inputs: [ @@ -158,7 +244,7 @@ const _abi = [ }, { internalType: "uint256", - name: "amount", + name: "value", type: "uint256", }, ], @@ -234,30 +320,6 @@ const _abi = [ stateMutability: "view", type: "function", }, - { - 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", - }, { inputs: [ { @@ -308,30 +370,6 @@ const _abi = [ stateMutability: "view", type: "function", }, - { - 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", - }, { inputs: [], name: "name", @@ -406,7 +444,7 @@ const _abi = [ }, { internalType: "uint256", - name: "amount", + name: "value", type: "uint256", }, ], @@ -435,7 +473,7 @@ const _abi = [ }, { internalType: "uint256", - name: "amount", + name: "value", type: "uint256", }, ], @@ -495,7 +533,7 @@ const _abi = [ ] as const; const _bytecode = - "0x608060405234801561001057600080fd5b5060405161232e38038061232e833981810160405281019061003291906103f6565b818181600390816100439190610698565b5080600490816100539190610698565b50505061008d336100686100d660201b60201c565b60ff16600a61007791906108cc565b856100829190610917565b6100df60201b60201c565b30600560006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550505050610a34565b60006012905090565b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff160361014e576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610145906109b6565b60405180910390fd5b6101606000838361024160201b60201c565b806002600082825461017291906109d6565b92505081905550806000808473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020600082825401925050819055508173ffffffffffffffffffffffffffffffffffffffff16600073ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef836040516102239190610a19565b60405180910390a361023d6000838361024660201b60201c565b5050565b505050565b505050565b6000604051905090565b600080fd5b600080fd5b6000819050919050565b6102728161025f565b811461027d57600080fd5b50565b60008151905061028f81610269565b92915050565b600080fd5b600080fd5b6000601f19601f8301169050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b6102e88261029f565b810181811067ffffffffffffffff82111715610307576103066102b0565b5b80604052505050565b600061031a61024b565b905061032682826102df565b919050565b600067ffffffffffffffff821115610346576103456102b0565b5b61034f8261029f565b9050602081019050919050565b60005b8381101561037a57808201518184015260208101905061035f565b60008484015250505050565b60006103996103948461032b565b610310565b9050828152602081018484840111156103b5576103b461029a565b5b6103c084828561035c565b509392505050565b600082601f8301126103dd576103dc610295565b5b81516103ed848260208601610386565b91505092915050565b60008060006060848603121561040f5761040e610255565b5b600061041d86828701610280565b935050602084015167ffffffffffffffff81111561043e5761043d61025a565b5b61044a868287016103c8565b925050604084015167ffffffffffffffff81111561046b5761046a61025a565b5b610477868287016103c8565b9150509250925092565b600081519050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052602260045260246000fd5b600060028204905060018216806104d357607f821691505b6020821081036104e6576104e561048c565b5b50919050565b60008190508160005260206000209050919050565b60006020601f8301049050919050565b600082821b905092915050565b60006008830261054e7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff82610511565b6105588683610511565b95508019841693508086168417925050509392505050565b6000819050919050565b600061059561059061058b8461025f565b610570565b61025f565b9050919050565b6000819050919050565b6105af8361057a565b6105c36105bb8261059c565b84845461051e565b825550505050565b600090565b6105d86105cb565b6105e38184846105a6565b505050565b5b81811015610607576105fc6000826105d0565b6001810190506105e9565b5050565b601f82111561064c5761061d816104ec565b61062684610501565b81016020851015610635578190505b61064961064185610501565b8301826105e8565b50505b505050565b600082821c905092915050565b600061066f60001984600802610651565b1980831691505092915050565b6000610688838361065e565b9150826002028217905092915050565b6106a182610481565b67ffffffffffffffff8111156106ba576106b96102b0565b5b6106c482546104bb565b6106cf82828561060b565b600060209050601f83116001811461070257600084156106f0578287015190505b6106fa858261067c565b865550610762565b601f198416610710866104ec565b60005b8281101561073857848901518255600182019150602085019450602081019050610713565b868310156107555784890151610751601f89168261065e565b8355505b6001600288020188555050505b505050505050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b60008160011c9050919050565b6000808291508390505b60018511156107f0578086048111156107cc576107cb61076a565b5b60018516156107db5780820291505b80810290506107e985610799565b94506107b0565b94509492505050565b60008261080957600190506108c5565b8161081757600090506108c5565b816001811461082d576002811461083757610866565b60019150506108c5565b60ff8411156108495761084861076a565b5b8360020a9150848211156108605761085f61076a565b5b506108c5565b5060208310610133831016604e8410600b841016171561089b5782820a9050838111156108965761089561076a565b5b6108c5565b6108a884848460016107a6565b925090508184048111156108bf576108be61076a565b5b81810290505b9392505050565b60006108d78261025f565b91506108e28361025f565b925061090f7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff84846107f9565b905092915050565b60006109228261025f565b915061092d8361025f565b925082820261093b8161025f565b915082820484148315176109525761095161076a565b5b5092915050565b600082825260208201905092915050565b7f45524332303a206d696e7420746f20746865207a65726f206164647265737300600082015250565b60006109a0601f83610959565b91506109ab8261096a565b602082019050919050565b600060208201905081810360008301526109cf81610993565b9050919050565b60006109e18261025f565b91506109ec8361025f565b9250828201905080821115610a0457610a0361076a565b5b92915050565b610a138161025f565b82525050565b6000602082019050610a2e6000830184610a0a565b92915050565b6118eb80610a436000396000f3fe608060405234801561001057600080fd5b50600436106101215760003560e01c8063658612e9116100ad578063a9059cbb11610071578063a9059cbb14610344578063c701262614610374578063d9eeebed146103a4578063dd62ed3e146103c3578063f7d8f616146103f357610121565b8063658612e91461028c578063678edca3146102aa57806370a08231146102c657806395d89b41146102f6578063a457c2d71461031457610121565b80632c27d3ab116100f45780632c27d3ab146101c2578063313ce567146101f257806339509351146102105780633e8a4ee11461024057806347e7ef241461025c57610121565b806306fdde0314610126578063095ea7b31461014457806318160ddd1461017457806323b872dd14610192575b600080fd5b61012e610411565b60405161013b9190610ee5565b60405180910390f35b61015e60048036038101906101599190610fa5565b6104a3565b60405161016b9190611000565b60405180910390f35b61017c6104c6565b604051610189919061102a565b60405180910390f35b6101ac60048036038101906101a79190611045565b6104d0565b6040516101b99190611000565b60405180910390f35b6101dc60048036038101906101d791906110fd565b6104ff565b6040516101e99190611180565b60405180910390f35b6101fa610573565b60405161020791906111b7565b60405180910390f35b61022a60048036038101906102259190610fa5565b61057c565b6040516102379190611000565b60405180910390f35b61025a600480360381019061025591906111d2565b6105b3565b005b61027660048036038101906102719190610fa5565b6105f7565b6040516102839190611000565b60405180910390f35b610294610603565b6040516102a1919061102a565b60405180910390f35b6102c460048036038101906102bf91906111ff565b610609565b005b6102e060048036038101906102db91906111d2565b610613565b6040516102ed919061102a565b60405180910390f35b6102fe61065b565b60405161030b9190610ee5565b60405180910390f35b61032e60048036038101906103299190610fa5565b6106ed565b60405161033b9190611000565b60405180910390f35b61035e60048036038101906103599190610fa5565b610764565b60405161036b9190611000565b60405180910390f35b61038e6004803603810190610389919061122c565b610787565b60405161039b9190611000565b60405180910390f35b6103ac610825565b6040516103ba92919061128c565b60405180910390f35b6103dd60048036038101906103d891906112b5565b610856565b6040516103ea919061102a565b60405180910390f35b6103fb6108dd565b6040516104089190611180565b60405180910390f35b60606003805461042090611324565b80601f016020809104026020016040519081016040528092919081815260200182805461044c90611324565b80156104995780601f1061046e57610100808354040283529160200191610499565b820191906000526020600020905b81548152906001019060200180831161047c57829003601f168201915b5050505050905090565b6000806104ae610903565b90506104bb81858561090b565b600191505092915050565b6000600254905090565b6000806104db610903565b90506104e8858285610ad4565b6104f3858585610b60565b60019150509392505050565b6000808585859085876105129190611384565b9261051f939291906113c2565b8080601f016020809104026020016040519081016040528093929190818152602001838380828437600081840152601f19601f82011690508083019250505050505050905082810151915050949350505050565b60006012905090565b600080610587610903565b90506105a88185856105998589610856565b6105a39190611384565b61090b565b600191505092915050565b80600560006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555050565b60006001905092915050565b60065481565b8060068190555050565b60008060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020549050919050565b60606004805461066a90611324565b80601f016020809104026020016040519081016040528092919081815260200182805461069690611324565b80156106e35780601f106106b8576101008083540402835291602001916106e3565b820191906000526020600020905b8154815290600101906020018083116106c657829003601f168201915b5050505050905090565b6000806106f8610903565b905060006107068286610856565b90508381101561074b576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016107429061146f565b60405180910390fd5b610758828686840361090b565b60019250505092915050565b60008061076f610903565b905061077c818585610b60565b600191505092915050565b60008060208585905010156107a9576107a285856000610dd6565b90506107b8565b6107b58585600c610dd6565b90505b3373ffffffffffffffffffffffffffffffffffffffff167f9ffbffc04a397460ee1dbe8c9503e098090567d6b7f4b3c02a8617d800b6d9558686866006546000604051610809959493929190611521565b60405180910390a261081b8184610764565b9150509392505050565b600080600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16600654915091509091565b6000600160008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054905092915050565b600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b600033905090565b600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff160361097a576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610971906115e1565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff16036109e9576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016109e090611673565b60405180910390fd5b80600160008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508173ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b92583604051610ac7919061102a565b60405180910390a3505050565b6000610ae08484610856565b90507fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff8114610b5a5781811015610b4c576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610b43906116df565b60405180910390fd5b610b59848484840361090b565b5b50505050565b600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1603610bcf576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610bc690611771565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1603610c3e576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610c3590611803565b60405180910390fd5b610c49838383610e4b565b60008060008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054905081811015610ccf576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610cc690611895565b60405180910390fd5b8181036000808673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002081905550816000808573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020600082825401925050819055508273ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef84604051610dbd919061102a565b60405180910390a3610dd0848484610e50565b50505050565b60008084848490601486610dea9190611384565b92610df7939291906113c2565b8080601f016020809104026020016040519081016040528093929190818152602001838380828437600081840152601f19601f82011690508083019250505050505050905060148101519150509392505050565b505050565b505050565b600081519050919050565b600082825260208201905092915050565b60005b83811015610e8f578082015181840152602081019050610e74565b60008484015250505050565b6000601f19601f8301169050919050565b6000610eb782610e55565b610ec18185610e60565b9350610ed1818560208601610e71565b610eda81610e9b565b840191505092915050565b60006020820190508181036000830152610eff8184610eac565b905092915050565b600080fd5b600080fd5b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b6000610f3c82610f11565b9050919050565b610f4c81610f31565b8114610f5757600080fd5b50565b600081359050610f6981610f43565b92915050565b6000819050919050565b610f8281610f6f565b8114610f8d57600080fd5b50565b600081359050610f9f81610f79565b92915050565b60008060408385031215610fbc57610fbb610f07565b5b6000610fca85828601610f5a565b9250506020610fdb85828601610f90565b9150509250929050565b60008115159050919050565b610ffa81610fe5565b82525050565b60006020820190506110156000830184610ff1565b92915050565b61102481610f6f565b82525050565b600060208201905061103f600083018461101b565b92915050565b60008060006060848603121561105e5761105d610f07565b5b600061106c86828701610f5a565b935050602061107d86828701610f5a565b925050604061108e86828701610f90565b9150509250925092565b600080fd5b600080fd5b600080fd5b60008083601f8401126110bd576110bc611098565b5b8235905067ffffffffffffffff8111156110da576110d961109d565b5b6020830191508360018202830111156110f6576110f56110a2565b5b9250929050565b6000806000806060858703121561111757611116610f07565b5b600085013567ffffffffffffffff81111561113557611134610f0c565b5b611141878288016110a7565b9450945050602061115487828801610f90565b925050604061116587828801610f90565b91505092959194509250565b61117a81610f31565b82525050565b60006020820190506111956000830184611171565b92915050565b600060ff82169050919050565b6111b18161119b565b82525050565b60006020820190506111cc60008301846111a8565b92915050565b6000602082840312156111e8576111e7610f07565b5b60006111f684828501610f5a565b91505092915050565b60006020828403121561121557611214610f07565b5b600061122384828501610f90565b91505092915050565b60008060006040848603121561124557611244610f07565b5b600084013567ffffffffffffffff81111561126357611262610f0c565b5b61126f868287016110a7565b9350935050602061128286828701610f90565b9150509250925092565b60006040820190506112a16000830185611171565b6112ae602083018461101b565b9392505050565b600080604083850312156112cc576112cb610f07565b5b60006112da85828601610f5a565b92505060206112eb85828601610f5a565b9150509250929050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052602260045260246000fd5b6000600282049050600182168061133c57607f821691505b60208210810361134f5761134e6112f5565b5b50919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b600061138f82610f6f565b915061139a83610f6f565b92508282019050808211156113b2576113b1611355565b5b92915050565b600080fd5b600080fd5b600080858511156113d6576113d56113b8565b5b838611156113e7576113e66113bd565b5b6001850283019150848603905094509492505050565b7f45524332303a2064656372656173656420616c6c6f77616e63652062656c6f7760008201527f207a65726f000000000000000000000000000000000000000000000000000000602082015250565b6000611459602583610e60565b9150611464826113fd565b604082019050919050565b600060208201905081810360008301526114888161144c565b9050919050565b600082825260208201905092915050565b82818337600083830152505050565b60006114bb838561148f565b93506114c88385846114a0565b6114d183610e9b565b840190509392505050565b6000819050919050565b6000819050919050565b600061150b611506611501846114dc565b6114e6565b610f6f565b9050919050565b61151b816114f0565b82525050565b6000608082019050818103600083015261153c8187896114af565b905061154b602083018661101b565b611558604083018561101b565b6115656060830184611512565b9695505050505050565b7f45524332303a20617070726f76652066726f6d20746865207a65726f2061646460008201527f7265737300000000000000000000000000000000000000000000000000000000602082015250565b60006115cb602483610e60565b91506115d68261156f565b604082019050919050565b600060208201905081810360008301526115fa816115be565b9050919050565b7f45524332303a20617070726f766520746f20746865207a65726f20616464726560008201527f7373000000000000000000000000000000000000000000000000000000000000602082015250565b600061165d602283610e60565b915061166882611601565b604082019050919050565b6000602082019050818103600083015261168c81611650565b9050919050565b7f45524332303a20696e73756666696369656e7420616c6c6f77616e6365000000600082015250565b60006116c9601d83610e60565b91506116d482611693565b602082019050919050565b600060208201905081810360008301526116f8816116bc565b9050919050565b7f45524332303a207472616e736665722066726f6d20746865207a65726f20616460008201527f6472657373000000000000000000000000000000000000000000000000000000602082015250565b600061175b602583610e60565b9150611766826116ff565b604082019050919050565b6000602082019050818103600083015261178a8161174e565b9050919050565b7f45524332303a207472616e7366657220746f20746865207a65726f206164647260008201527f6573730000000000000000000000000000000000000000000000000000000000602082015250565b60006117ed602383610e60565b91506117f882611791565b604082019050919050565b6000602082019050818103600083015261181c816117e0565b9050919050565b7f45524332303a207472616e7366657220616d6f756e742065786365656473206260008201527f616c616e63650000000000000000000000000000000000000000000000000000602082015250565b600061187f602683610e60565b915061188a82611823565b604082019050919050565b600060208201905081810360008301526118ae81611872565b905091905056fea2646970667358221220c86adff1e41c65306dd69ccdaa8bb5d5bfaa0708fc0084b93b9871b1e0ac601464736f6c634300081a0033"; + "0x608060405234801561001057600080fd5b5060405161208138038061208183398181016040528101906100329190610537565b8181816003908161004391906107d9565b50806004908161005391906107d9565b50505061008d336100686100d660201b60201c565b60ff16600a6100779190610a0d565b856100829190610a58565b6100df60201b60201c565b30600560006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550505050610b8b565b60006012905090565b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff16036101515760006040517fec442f050000000000000000000000000000000000000000000000000000000081526004016101489190610adb565b60405180910390fd5b6101636000838361016760201b60201c565b5050565b600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff16036101b95780600260008282546101ad9190610af6565b9250508190555061028c565b60008060008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054905081811015610245578381836040517fe450d38c00000000000000000000000000000000000000000000000000000000815260040161023c93929190610b39565b60405180910390fd5b8181036000808673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002081905550505b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff16036102d55780600260008282540392505081905550610322565b806000808473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020600082825401925050819055505b8173ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef8360405161037f9190610b70565b60405180910390a3505050565b6000604051905090565b600080fd5b600080fd5b6000819050919050565b6103b3816103a0565b81146103be57600080fd5b50565b6000815190506103d0816103aa565b92915050565b600080fd5b600080fd5b6000601f19601f8301169050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b610429826103e0565b810181811067ffffffffffffffff82111715610448576104476103f1565b5b80604052505050565b600061045b61038c565b90506104678282610420565b919050565b600067ffffffffffffffff821115610487576104866103f1565b5b610490826103e0565b9050602081019050919050565b60005b838110156104bb5780820151818401526020810190506104a0565b60008484015250505050565b60006104da6104d58461046c565b610451565b9050828152602081018484840111156104f6576104f56103db565b5b61050184828561049d565b509392505050565b600082601f83011261051e5761051d6103d6565b5b815161052e8482602086016104c7565b91505092915050565b6000806000606084860312156105505761054f610396565b5b600061055e868287016103c1565b935050602084015167ffffffffffffffff81111561057f5761057e61039b565b5b61058b86828701610509565b925050604084015167ffffffffffffffff8111156105ac576105ab61039b565b5b6105b886828701610509565b9150509250925092565b600081519050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052602260045260246000fd5b6000600282049050600182168061061457607f821691505b602082108103610627576106266105cd565b5b50919050565b60008190508160005260206000209050919050565b60006020601f8301049050919050565b600082821b905092915050565b60006008830261068f7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff82610652565b6106998683610652565b95508019841693508086168417925050509392505050565b6000819050919050565b60006106d66106d16106cc846103a0565b6106b1565b6103a0565b9050919050565b6000819050919050565b6106f0836106bb565b6107046106fc826106dd565b84845461065f565b825550505050565b600090565b61071961070c565b6107248184846106e7565b505050565b5b818110156107485761073d600082610711565b60018101905061072a565b5050565b601f82111561078d5761075e8161062d565b61076784610642565b81016020851015610776578190505b61078a61078285610642565b830182610729565b50505b505050565b600082821c905092915050565b60006107b060001984600802610792565b1980831691505092915050565b60006107c9838361079f565b9150826002028217905092915050565b6107e2826105c2565b67ffffffffffffffff8111156107fb576107fa6103f1565b5b61080582546105fc565b61081082828561074c565b600060209050601f8311600181146108435760008415610831578287015190505b61083b85826107bd565b8655506108a3565b601f1984166108518661062d565b60005b8281101561087957848901518255600182019150602085019450602081019050610854565b868310156108965784890151610892601f89168261079f565b8355505b6001600288020188555050505b505050505050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b60008160011c9050919050565b6000808291508390505b60018511156109315780860481111561090d5761090c6108ab565b5b600185161561091c5780820291505b808102905061092a856108da565b94506108f1565b94509492505050565b60008261094a5760019050610a06565b816109585760009050610a06565b816001811461096e5760028114610978576109a7565b6001915050610a06565b60ff84111561098a576109896108ab565b5b8360020a9150848211156109a1576109a06108ab565b5b50610a06565b5060208310610133831016604e8410600b84101617156109dc5782820a9050838111156109d7576109d66108ab565b5b610a06565b6109e984848460016108e7565b92509050818404811115610a00576109ff6108ab565b5b81810290505b9392505050565b6000610a18826103a0565b9150610a23836103a0565b9250610a507fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff848461093a565b905092915050565b6000610a63826103a0565b9150610a6e836103a0565b9250828202610a7c816103a0565b91508282048414831517610a9357610a926108ab565b5b5092915050565b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b6000610ac582610a9a565b9050919050565b610ad581610aba565b82525050565b6000602082019050610af06000830184610acc565b92915050565b6000610b01826103a0565b9150610b0c836103a0565b9250828201905080821115610b2457610b236108ab565b5b92915050565b610b33816103a0565b82525050565b6000606082019050610b4e6000830186610acc565b610b5b6020830185610b2a565b610b686040830184610b2a565b949350505050565b6000602082019050610b856000830184610b2a565b92915050565b6114e780610b9a6000396000f3fe608060405234801561001057600080fd5b506004361061010b5760003560e01c8063658612e9116100a2578063a9059cbb11610071578063a9059cbb146102ce578063c7012626146102fe578063d9eeebed1461032e578063dd62ed3e1461034d578063f7d8f6161461037d5761010b565b8063658612e914610246578063678edca31461026457806370a082311461028057806395d89b41146102b05761010b565b80632c27d3ab116100de5780632c27d3ab146101ac578063313ce567146101dc5780633e8a4ee1146101fa57806347e7ef24146102165761010b565b806306fdde0314610110578063095ea7b31461012e57806318160ddd1461015e57806323b872dd1461017c575b600080fd5b61011861039b565b6040516101259190610e82565b60405180910390f35b61014860048036038101906101439190610f42565b61042d565b6040516101559190610f9d565b60405180910390f35b610166610450565b6040516101739190610fc7565b60405180910390f35b61019660048036038101906101919190610fe2565b61045a565b6040516101a39190610f9d565b60405180910390f35b6101c660048036038101906101c1919061109a565b610489565b6040516101d3919061111d565b60405180910390f35b6101e46104fd565b6040516101f19190611154565b60405180910390f35b610214600480360381019061020f919061116f565b610506565b005b610230600480360381019061022b9190610f42565b61054a565b60405161023d9190610f9d565b60405180910390f35b61024e610556565b60405161025b9190610fc7565b60405180910390f35b61027e6004803603810190610279919061119c565b61055c565b005b61029a6004803603810190610295919061116f565b610566565b6040516102a79190610fc7565b60405180910390f35b6102b86105ae565b6040516102c59190610e82565b60405180910390f35b6102e860048036038101906102e39190610f42565b610640565b6040516102f59190610f9d565b60405180910390f35b610318600480360381019061031391906111c9565b610663565b6040516103259190610f9d565b60405180910390f35b610336610701565b604051610344929190611229565b60405180910390f35b61036760048036038101906103629190611252565b610732565b6040516103749190610fc7565b60405180910390f35b6103856107b9565b604051610392919061111d565b60405180910390f35b6060600380546103aa906112c1565b80601f01602080910402602001604051908101604052809291908181526020018280546103d6906112c1565b80156104235780601f106103f857610100808354040283529160200191610423565b820191906000526020600020905b81548152906001019060200180831161040657829003601f168201915b5050505050905090565b6000806104386107df565b90506104458185856107e7565b600191505092915050565b6000600254905090565b6000806104656107df565b90506104728582856107f9565b61047d85858561088d565b60019150509392505050565b60008085858590858761049c9190611321565b926104a99392919061135f565b8080601f016020809104026020016040519081016040528093929190818152602001838380828437600081840152601f19601f82011690508083019250505050505050905082810151915050949350505050565b60006012905090565b80600560006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555050565b60006001905092915050565b60065481565b8060068190555050565b60008060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020549050919050565b6060600480546105bd906112c1565b80601f01602080910402602001604051908101604052809291908181526020018280546105e9906112c1565b80156106365780601f1061060b57610100808354040283529160200191610636565b820191906000526020600020905b81548152906001019060200180831161061957829003601f168201915b5050505050905090565b60008061064b6107df565b905061065881858561088d565b600191505092915050565b60008060208585905010156106855761067e85856000610981565b9050610694565b6106918585600c610981565b90505b3373ffffffffffffffffffffffffffffffffffffffff167f9ffbffc04a397460ee1dbe8c9503e098090567d6b7f4b3c02a8617d800b6d95586868660065460006040516106e595949392919061142c565b60405180910390a26106f78184610640565b9150509392505050565b600080600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16600654915091509091565b6000600160008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054905092915050565b600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b600033905090565b6107f483838360016109f6565b505050565b60006108058484610732565b90507fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff81146108875781811015610877578281836040517ffb8f41b200000000000000000000000000000000000000000000000000000000815260040161086e9392919061147a565b60405180910390fd5b610886848484840360006109f6565b5b50505050565b600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff16036108ff5760006040517f96c6fd1e0000000000000000000000000000000000000000000000000000000081526004016108f6919061111d565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff16036109715760006040517fec442f05000000000000000000000000000000000000000000000000000000008152600401610968919061111d565b60405180910390fd5b61097c838383610bcd565b505050565b600080848484906014866109959190611321565b926109a29392919061135f565b8080601f016020809104026020016040519081016040528093929190818152602001838380828437600081840152601f19601f82011690508083019250505050505050905060148101519150509392505050565b600073ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff1603610a685760006040517fe602df05000000000000000000000000000000000000000000000000000000008152600401610a5f919061111d565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1603610ada5760006040517f94280d62000000000000000000000000000000000000000000000000000000008152600401610ad1919061111d565b60405180910390fd5b81600160008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508015610bc7578273ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b92584604051610bbe9190610fc7565b60405180910390a35b50505050565b600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1603610c1f578060026000828254610c139190611321565b92505081905550610cf2565b60008060008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054905081811015610cab578381836040517fe450d38c000000000000000000000000000000000000000000000000000000008152600401610ca29392919061147a565b60405180910390fd5b8181036000808673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002081905550505b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1603610d3b5780600260008282540392505081905550610d88565b806000808473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020600082825401925050819055505b8173ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef83604051610de59190610fc7565b60405180910390a3505050565b600081519050919050565b600082825260208201905092915050565b60005b83811015610e2c578082015181840152602081019050610e11565b60008484015250505050565b6000601f19601f8301169050919050565b6000610e5482610df2565b610e5e8185610dfd565b9350610e6e818560208601610e0e565b610e7781610e38565b840191505092915050565b60006020820190508181036000830152610e9c8184610e49565b905092915050565b600080fd5b600080fd5b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b6000610ed982610eae565b9050919050565b610ee981610ece565b8114610ef457600080fd5b50565b600081359050610f0681610ee0565b92915050565b6000819050919050565b610f1f81610f0c565b8114610f2a57600080fd5b50565b600081359050610f3c81610f16565b92915050565b60008060408385031215610f5957610f58610ea4565b5b6000610f6785828601610ef7565b9250506020610f7885828601610f2d565b9150509250929050565b60008115159050919050565b610f9781610f82565b82525050565b6000602082019050610fb26000830184610f8e565b92915050565b610fc181610f0c565b82525050565b6000602082019050610fdc6000830184610fb8565b92915050565b600080600060608486031215610ffb57610ffa610ea4565b5b600061100986828701610ef7565b935050602061101a86828701610ef7565b925050604061102b86828701610f2d565b9150509250925092565b600080fd5b600080fd5b600080fd5b60008083601f84011261105a57611059611035565b5b8235905067ffffffffffffffff8111156110775761107661103a565b5b6020830191508360018202830111156110935761109261103f565b5b9250929050565b600080600080606085870312156110b4576110b3610ea4565b5b600085013567ffffffffffffffff8111156110d2576110d1610ea9565b5b6110de87828801611044565b945094505060206110f187828801610f2d565b925050604061110287828801610f2d565b91505092959194509250565b61111781610ece565b82525050565b6000602082019050611132600083018461110e565b92915050565b600060ff82169050919050565b61114e81611138565b82525050565b60006020820190506111696000830184611145565b92915050565b60006020828403121561118557611184610ea4565b5b600061119384828501610ef7565b91505092915050565b6000602082840312156111b2576111b1610ea4565b5b60006111c084828501610f2d565b91505092915050565b6000806000604084860312156111e2576111e1610ea4565b5b600084013567ffffffffffffffff811115611200576111ff610ea9565b5b61120c86828701611044565b9350935050602061121f86828701610f2d565b9150509250925092565b600060408201905061123e600083018561110e565b61124b6020830184610fb8565b9392505050565b6000806040838503121561126957611268610ea4565b5b600061127785828601610ef7565b925050602061128885828601610ef7565b9150509250929050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052602260045260246000fd5b600060028204905060018216806112d957607f821691505b6020821081036112ec576112eb611292565b5b50919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b600061132c82610f0c565b915061133783610f0c565b925082820190508082111561134f5761134e6112f2565b5b92915050565b600080fd5b600080fd5b6000808585111561137357611372611355565b5b838611156113845761138361135a565b5b6001850283019150848603905094509492505050565b600082825260208201905092915050565b82818337600083830152505050565b60006113c6838561139a565b93506113d38385846113ab565b6113dc83610e38565b840190509392505050565b6000819050919050565b6000819050919050565b600061141661141161140c846113e7565b6113f1565b610f0c565b9050919050565b611426816113fb565b82525050565b600060808201905081810360008301526114478187896113ba565b90506114566020830186610fb8565b6114636040830185610fb8565b611470606083018461141d565b9695505050505050565b600060608201905061148f600083018661110e565b61149c6020830185610fb8565b6114a96040830184610fb8565b94935050505056fea2646970667358221220b30e975ea29aa7b9b48f86636a08e59e029f8753a0ca6d341b9ceaf8c0f0061464736f6c634300081a0033"; type MockZRC20ConstructorParams = | [signer?: Signer] diff --git a/typechain-types/factories/contracts/shared/index.ts b/typechain-types/factories/contracts/shared/index.ts index 2f5572e8..4fb59882 100644 --- a/typechain-types/factories/contracts/shared/index.ts +++ b/typechain-types/factories/contracts/shared/index.ts @@ -1,7 +1,6 @@ /* Autogenerated file. Do not edit manually. */ /* tslint:disable */ /* eslint-disable */ -export * as mockSystemContractSol from "./MockSystemContract.sol"; export * as interfaces from "./interfaces"; export * as libraries from "./libraries"; export { MockZRC20__factory } from "./MockZRC20__factory"; diff --git a/typechain-types/hardhat.d.ts b/typechain-types/hardhat.d.ts index 1e9cbde2..281ab0e9 100644 --- a/typechain-types/hardhat.d.ts +++ b/typechain-types/hardhat.d.ts @@ -12,6 +12,18 @@ import * as Contracts from "."; declare module "hardhat/types/runtime" { interface HardhatEthersHelpers extends HardhatEthersHelpersBase { + getContractFactory( + name: "IERC1155Errors", + signerOrOptions?: ethers.Signer | FactoryOptions + ): Promise; + getContractFactory( + name: "IERC20Errors", + signerOrOptions?: ethers.Signer | FactoryOptions + ): Promise; + getContractFactory( + name: "IERC721Errors", + signerOrOptions?: ethers.Signer | FactoryOptions + ): Promise; getContractFactory( name: "ERC20", signerOrOptions?: ethers.Signer | FactoryOptions @@ -77,21 +89,9 @@ declare module "hardhat/types/runtime" { signerOrOptions?: ethers.Signer | FactoryOptions ): Promise; getContractFactory( - name: "ZetaCommonErrors", - signerOrOptions?: ethers.Signer | FactoryOptions - ): Promise; - getContractFactory( - name: "ZetaConnector", - signerOrOptions?: ethers.Signer | FactoryOptions - ): Promise; - getContractFactory( - name: "ZetaReceiver", - signerOrOptions?: ethers.Signer | FactoryOptions - ): Promise; - getContractFactory( - name: "ZetaTokenConsumer", + name: "Revertable", signerOrOptions?: ethers.Signer | FactoryOptions - ): Promise; + ): Promise; getContractFactory( name: "IZRC20", signerOrOptions?: ethers.Signer | FactoryOptions @@ -164,14 +164,6 @@ declare module "hardhat/types/runtime" { name: "UniswapV2Library", signerOrOptions?: ethers.Signer | FactoryOptions ): Promise; - getContractFactory( - name: "MockSystemContract", - signerOrOptions?: ethers.Signer | FactoryOptions - ): Promise; - getContractFactory( - name: "SystemContractErrors", - signerOrOptions?: ethers.Signer | FactoryOptions - ): Promise; getContractFactory( name: "MockZRC20", signerOrOptions?: ethers.Signer | FactoryOptions @@ -196,10 +188,6 @@ declare module "hardhat/types/runtime" { name: "SystemContractErrors", signerOrOptions?: ethers.Signer | FactoryOptions ): Promise; - getContractFactory( - name: "TestSystemContract", - signerOrOptions?: ethers.Signer | FactoryOptions - ): Promise; getContractFactory( name: "TestZRC20", signerOrOptions?: ethers.Signer | FactoryOptions @@ -212,11 +200,22 @@ declare module "hardhat/types/runtime" { name: "ZContract", signerOrOptions?: ethers.Signer | FactoryOptions ): Promise; - getContractFactory( - name: "ZetaConnectorMockValue", - signerOrOptions?: ethers.Signer | FactoryOptions - ): Promise; + getContractAt( + name: "IERC1155Errors", + address: string, + signer?: ethers.Signer + ): Promise; + getContractAt( + name: "IERC20Errors", + address: string, + signer?: ethers.Signer + ): Promise; + getContractAt( + name: "IERC721Errors", + address: string, + signer?: ethers.Signer + ): Promise; getContractAt( name: "ERC20", address: string, @@ -298,25 +297,10 @@ declare module "hardhat/types/runtime" { signer?: ethers.Signer ): Promise; getContractAt( - name: "ZetaCommonErrors", - address: string, - signer?: ethers.Signer - ): Promise; - getContractAt( - name: "ZetaConnector", - address: string, - signer?: ethers.Signer - ): Promise; - getContractAt( - name: "ZetaReceiver", - address: string, - signer?: ethers.Signer - ): Promise; - getContractAt( - name: "ZetaTokenConsumer", + name: "Revertable", address: string, signer?: ethers.Signer - ): Promise; + ): Promise; getContractAt( name: "IZRC20", address: string, @@ -407,16 +391,6 @@ declare module "hardhat/types/runtime" { address: string, signer?: ethers.Signer ): Promise; - getContractAt( - name: "MockSystemContract", - address: string, - signer?: ethers.Signer - ): Promise; - getContractAt( - name: "SystemContractErrors", - address: string, - signer?: ethers.Signer - ): Promise; getContractAt( name: "MockZRC20", address: string, @@ -447,11 +421,6 @@ declare module "hardhat/types/runtime" { address: string, signer?: ethers.Signer ): Promise; - getContractAt( - name: "TestSystemContract", - address: string, - signer?: ethers.Signer - ): Promise; getContractAt( name: "TestZRC20", address: string, @@ -467,11 +436,6 @@ declare module "hardhat/types/runtime" { address: string, signer?: ethers.Signer ): Promise; - getContractAt( - name: "ZetaConnectorMockValue", - address: string, - signer?: ethers.Signer - ): Promise; // default types getContractFactory( diff --git a/typechain-types/index.ts b/typechain-types/index.ts index 88a5b554..717bb071 100644 --- a/typechain-types/index.ts +++ b/typechain-types/index.ts @@ -10,6 +10,12 @@ export type { zetachain }; import type * as contracts from "./contracts"; export type { contracts }; export * as factories from "./factories"; +export type { IERC1155Errors } from "./@openzeppelin/contracts/interfaces/draft-IERC6093.sol/IERC1155Errors"; +export { IERC1155Errors__factory } from "./factories/@openzeppelin/contracts/interfaces/draft-IERC6093.sol/IERC1155Errors__factory"; +export type { IERC20Errors } from "./@openzeppelin/contracts/interfaces/draft-IERC6093.sol/IERC20Errors"; +export { IERC20Errors__factory } from "./factories/@openzeppelin/contracts/interfaces/draft-IERC6093.sol/IERC20Errors__factory"; +export type { IERC721Errors } from "./@openzeppelin/contracts/interfaces/draft-IERC6093.sol/IERC721Errors"; +export { IERC721Errors__factory } from "./factories/@openzeppelin/contracts/interfaces/draft-IERC6093.sol/IERC721Errors__factory"; export type { ERC20 } from "./@openzeppelin/contracts/token/ERC20/ERC20"; export { ERC20__factory } from "./factories/@openzeppelin/contracts/token/ERC20/ERC20__factory"; export type { IERC20Metadata } from "./@openzeppelin/contracts/token/ERC20/extensions/IERC20Metadata"; @@ -38,24 +44,18 @@ export type { IWETH } from "./@uniswap/v2-periphery/contracts/interfaces/IWETH"; export { IWETH__factory } from "./factories/@uniswap/v2-periphery/contracts/interfaces/IWETH__factory"; export type { UniswapV2Router02 } from "./@uniswap/v2-periphery/contracts/UniswapV2Router02"; export { UniswapV2Router02__factory } from "./factories/@uniswap/v2-periphery/contracts/UniswapV2Router02__factory"; -export type { ZetaCommonErrors } from "./@zetachain/protocol-contracts/contracts/evm/interfaces/ZetaInterfaces.sol/ZetaCommonErrors"; -export { ZetaCommonErrors__factory } from "./factories/@zetachain/protocol-contracts/contracts/evm/interfaces/ZetaInterfaces.sol/ZetaCommonErrors__factory"; -export type { ZetaConnector } from "./@zetachain/protocol-contracts/contracts/evm/interfaces/ZetaInterfaces.sol/ZetaConnector"; -export { ZetaConnector__factory } from "./factories/@zetachain/protocol-contracts/contracts/evm/interfaces/ZetaInterfaces.sol/ZetaConnector__factory"; -export type { ZetaReceiver } from "./@zetachain/protocol-contracts/contracts/evm/interfaces/ZetaInterfaces.sol/ZetaReceiver"; -export { ZetaReceiver__factory } from "./factories/@zetachain/protocol-contracts/contracts/evm/interfaces/ZetaInterfaces.sol/ZetaReceiver__factory"; -export type { ZetaTokenConsumer } from "./@zetachain/protocol-contracts/contracts/evm/interfaces/ZetaInterfaces.sol/ZetaTokenConsumer"; -export { ZetaTokenConsumer__factory } from "./factories/@zetachain/protocol-contracts/contracts/evm/interfaces/ZetaInterfaces.sol/ZetaTokenConsumer__factory"; +export type { Revertable } from "./@zetachain/protocol-contracts/contracts/Revert.sol/Revertable"; +export { Revertable__factory } from "./factories/@zetachain/protocol-contracts/contracts/Revert.sol/Revertable__factory"; export type { IZRC20 } from "./@zetachain/protocol-contracts/contracts/zevm/interfaces/IZRC20.sol/IZRC20"; export { IZRC20__factory } from "./factories/@zetachain/protocol-contracts/contracts/zevm/interfaces/IZRC20.sol/IZRC20__factory"; export type { IZRC20Metadata } from "./@zetachain/protocol-contracts/contracts/zevm/interfaces/IZRC20.sol/IZRC20Metadata"; export { IZRC20Metadata__factory } from "./factories/@zetachain/protocol-contracts/contracts/zevm/interfaces/IZRC20.sol/IZRC20Metadata__factory"; export type { ZRC20Events } from "./@zetachain/protocol-contracts/contracts/zevm/interfaces/IZRC20.sol/ZRC20Events"; export { ZRC20Events__factory } from "./factories/@zetachain/protocol-contracts/contracts/zevm/interfaces/IZRC20.sol/ZRC20Events__factory"; -export type { UniversalContract } from "./@zetachain/protocol-contracts/contracts/zevm/interfaces/zContract.sol/UniversalContract"; -export { UniversalContract__factory } from "./factories/@zetachain/protocol-contracts/contracts/zevm/interfaces/zContract.sol/UniversalContract__factory"; -export type { ZContract } from "./@zetachain/protocol-contracts/contracts/zevm/interfaces/zContract.sol/ZContract"; -export { ZContract__factory } from "./factories/@zetachain/protocol-contracts/contracts/zevm/interfaces/zContract.sol/ZContract__factory"; +export type { UniversalContract } from "./@zetachain/protocol-contracts/contracts/zevm/interfaces/UniversalContract.sol/UniversalContract"; +export { UniversalContract__factory } from "./factories/@zetachain/protocol-contracts/contracts/zevm/interfaces/UniversalContract.sol/UniversalContract__factory"; +export type { ZContract } from "./@zetachain/protocol-contracts/contracts/zevm/interfaces/UniversalContract.sol/ZContract"; +export { ZContract__factory } from "./factories/@zetachain/protocol-contracts/contracts/zevm/interfaces/UniversalContract.sol/ZContract__factory"; export type { SystemContract } from "./@zetachain/protocol-contracts/contracts/zevm/SystemContract.sol/SystemContract"; export { SystemContract__factory } from "./factories/@zetachain/protocol-contracts/contracts/zevm/SystemContract.sol/SystemContract__factory"; export type { SystemContractErrors } from "./@zetachain/protocol-contracts/contracts/zevm/SystemContract.sol/SystemContractErrors"; @@ -66,14 +66,10 @@ export type { ZetaEthMock } from "./contracts/EthZetaMock.sol/ZetaEthMock"; export { ZetaEthMock__factory } from "./factories/contracts/EthZetaMock.sol/ZetaEthMock__factory"; export type { OnlySystem } from "./contracts/OnlySystem"; export { OnlySystem__factory } from "./factories/contracts/OnlySystem__factory"; -export type { Revertable } from "./contracts/Revert.sol/Revertable"; -export { Revertable__factory } from "./factories/contracts/Revert.sol/Revertable__factory"; export type { Math } from "./contracts/shared/libraries/SafeMath.sol/Math"; export { Math__factory } from "./factories/contracts/shared/libraries/SafeMath.sol/Math__factory"; export type { UniswapV2Library } from "./contracts/shared/libraries/UniswapV2Library"; export { UniswapV2Library__factory } from "./factories/contracts/shared/libraries/UniswapV2Library__factory"; -export type { MockSystemContract } from "./contracts/shared/MockSystemContract.sol/MockSystemContract"; -export { MockSystemContract__factory } from "./factories/contracts/shared/MockSystemContract.sol/MockSystemContract__factory"; export type { MockZRC20 } from "./contracts/shared/MockZRC20"; export { MockZRC20__factory } from "./factories/contracts/shared/MockZRC20__factory"; export type { TestUniswapRouter } from "./contracts/shared/TestUniswapRouter"; @@ -82,9 +78,5 @@ export type { WZETA } from "./contracts/shared/WZETA"; export { WZETA__factory } from "./factories/contracts/shared/WZETA__factory"; export type { SwapHelperLib } from "./contracts/SwapHelperLib"; export { SwapHelperLib__factory } from "./factories/contracts/SwapHelperLib__factory"; -export type { TestSystemContract } from "./contracts/TestSystemContract"; -export { TestSystemContract__factory } from "./factories/contracts/TestSystemContract__factory"; export type { TestZRC20 } from "./contracts/TestZRC20"; export { TestZRC20__factory } from "./factories/contracts/TestZRC20__factory"; -export type { ZetaConnectorMockValue } from "./contracts/ZetaConnectorMock.sol/ZetaConnectorMockValue"; -export { ZetaConnectorMockValue__factory } from "./factories/contracts/ZetaConnectorMock.sol/ZetaConnectorMockValue__factory"; diff --git a/yarn.lock b/yarn.lock index 29555aab..daa7d644 100644 --- a/yarn.lock +++ b/yarn.lock @@ -134,7 +134,22 @@ "@ethersproject/properties" "^5.4.0" "@ethersproject/strings" "^5.4.0" -"@ethersproject/abi@5.7.0", "@ethersproject/abi@^5.0.9", "@ethersproject/abi@^5.1.2", "@ethersproject/abi@^5.4.0", "@ethersproject/abi@^5.4.7", "@ethersproject/abi@^5.7.0": +"@ethersproject/abi@5.6.3": + version "5.6.3" + resolved "https://registry.yarnpkg.com/@ethersproject/abi/-/abi-5.6.3.tgz#2d643544abadf6e6b63150508af43475985c23db" + integrity sha512-CxKTdoZY4zDJLWXG6HzNH6znWK0M79WzzxHegDoecE3+K32pzfHOzuXg2/oGSTecZynFgpkjYXNPOqXVJlqClw== + dependencies: + "@ethersproject/address" "^5.6.1" + "@ethersproject/bignumber" "^5.6.2" + "@ethersproject/bytes" "^5.6.1" + "@ethersproject/constants" "^5.6.1" + "@ethersproject/hash" "^5.6.1" + "@ethersproject/keccak256" "^5.6.1" + "@ethersproject/logger" "^5.6.0" + "@ethersproject/properties" "^5.6.0" + "@ethersproject/strings" "^5.6.1" + +"@ethersproject/abi@5.7.0", "@ethersproject/abi@^5.0.9", "@ethersproject/abi@^5.1.2", "@ethersproject/abi@^5.4.0", "@ethersproject/abi@^5.4.7", "@ethersproject/abi@^5.6.3", "@ethersproject/abi@^5.7.0": version "5.7.0" resolved "https://registry.yarnpkg.com/@ethersproject/abi/-/abi-5.7.0.tgz#b3f3e045bbbeed1af3947335c247ad625a44e449" integrity sha512-351ktp42TiRcYB3H1OP8yajPeAQstMW/yCFokj/AthP9bLHzQFPlOrxOcwYEDkUAICmOHljvN4K39OMTMUa9RA== @@ -162,7 +177,20 @@ "@ethersproject/transactions" "^5.4.0" "@ethersproject/web" "^5.4.0" -"@ethersproject/abstract-provider@5.7.0", "@ethersproject/abstract-provider@^5.4.0", "@ethersproject/abstract-provider@^5.7.0": +"@ethersproject/abstract-provider@5.6.1": + version "5.6.1" + resolved "https://registry.yarnpkg.com/@ethersproject/abstract-provider/-/abstract-provider-5.6.1.tgz#02ddce150785caf0c77fe036a0ebfcee61878c59" + integrity sha512-BxlIgogYJtp1FS8Muvj8YfdClk3unZH0vRMVX791Z9INBNT/kuACZ9GzaY1Y4yFq+YSy6/w4gzj3HCRKrK9hsQ== + dependencies: + "@ethersproject/bignumber" "^5.6.2" + "@ethersproject/bytes" "^5.6.1" + "@ethersproject/logger" "^5.6.0" + "@ethersproject/networks" "^5.6.3" + "@ethersproject/properties" "^5.6.0" + "@ethersproject/transactions" "^5.6.2" + "@ethersproject/web" "^5.6.1" + +"@ethersproject/abstract-provider@5.7.0", "@ethersproject/abstract-provider@^5.4.0", "@ethersproject/abstract-provider@^5.6.1", "@ethersproject/abstract-provider@^5.7.0": version "5.7.0" resolved "https://registry.yarnpkg.com/@ethersproject/abstract-provider/-/abstract-provider-5.7.0.tgz#b0a8550f88b6bf9d51f90e4795d48294630cb9ef" integrity sha512-R41c9UkchKCpAqStMYUpdunjo3pkEvZC3FAwZn5S5MGbXoMQOHIdHItezTETxAO5bevtMApSyEhn9+CHcDsWBw== @@ -186,7 +214,18 @@ "@ethersproject/logger" "^5.4.0" "@ethersproject/properties" "^5.4.0" -"@ethersproject/abstract-signer@5.7.0", "@ethersproject/abstract-signer@^5.4.0", "@ethersproject/abstract-signer@^5.7.0": +"@ethersproject/abstract-signer@5.6.2": + version "5.6.2" + resolved "https://registry.yarnpkg.com/@ethersproject/abstract-signer/-/abstract-signer-5.6.2.tgz#491f07fc2cbd5da258f46ec539664713950b0b33" + integrity sha512-n1r6lttFBG0t2vNiI3HoWaS/KdOt8xyDjzlP2cuevlWLG6EX0OwcKLyG/Kp/cuwNxdy/ous+R/DEMdTUwWQIjQ== + dependencies: + "@ethersproject/abstract-provider" "^5.6.1" + "@ethersproject/bignumber" "^5.6.2" + "@ethersproject/bytes" "^5.6.1" + "@ethersproject/logger" "^5.6.0" + "@ethersproject/properties" "^5.6.0" + +"@ethersproject/abstract-signer@5.7.0", "@ethersproject/abstract-signer@^5.4.0", "@ethersproject/abstract-signer@^5.6.2", "@ethersproject/abstract-signer@^5.7.0": version "5.7.0" resolved "https://registry.yarnpkg.com/@ethersproject/abstract-signer/-/abstract-signer-5.7.0.tgz#13f4f32117868452191a4649723cb086d2b596b2" integrity sha512-a16V8bq1/Cz+TGCkE2OPMTOUDLS3grCpdjoJCYNnVBbdYEMSgKrU0+B90s8b6H+ByYTBZN7a3g76jdIJi7UfKQ== @@ -208,7 +247,18 @@ "@ethersproject/logger" "^5.4.0" "@ethersproject/rlp" "^5.4.0" -"@ethersproject/address@5.7.0", "@ethersproject/address@^5.0.2", "@ethersproject/address@^5.4.0", "@ethersproject/address@^5.7.0": +"@ethersproject/address@5.6.1": + version "5.6.1" + resolved "https://registry.yarnpkg.com/@ethersproject/address/-/address-5.6.1.tgz#ab57818d9aefee919c5721d28cd31fd95eff413d" + integrity sha512-uOgF0kS5MJv9ZvCz7x6T2EXJSzotiybApn4XlOgoTX0xdtyVIJ7pF+6cGPxiEq/dpBiTfMiw7Yc81JcwhSYA0Q== + dependencies: + "@ethersproject/bignumber" "^5.6.2" + "@ethersproject/bytes" "^5.6.1" + "@ethersproject/keccak256" "^5.6.1" + "@ethersproject/logger" "^5.6.0" + "@ethersproject/rlp" "^5.6.1" + +"@ethersproject/address@5.7.0", "@ethersproject/address@^5.0.2", "@ethersproject/address@^5.4.0", "@ethersproject/address@^5.6.1", "@ethersproject/address@^5.7.0": version "5.7.0" resolved "https://registry.yarnpkg.com/@ethersproject/address/-/address-5.7.0.tgz#19b56c4d74a3b0a46bfdbb6cfcc0a153fc697f37" integrity sha512-9wYhYt7aghVGo758POM5nqcOMaE168Q6aRLJZwUmiqSrAungkG74gSSeKEIR7ukixesdRZGPgVqme6vmxs1fkA== @@ -226,7 +276,14 @@ dependencies: "@ethersproject/bytes" "^5.4.0" -"@ethersproject/base64@5.7.0", "@ethersproject/base64@^5.4.0", "@ethersproject/base64@^5.7.0": +"@ethersproject/base64@5.6.1": + version "5.6.1" + resolved "https://registry.yarnpkg.com/@ethersproject/base64/-/base64-5.6.1.tgz#2c40d8a0310c9d1606c2c37ae3092634b41d87cb" + integrity sha512-qB76rjop6a0RIYYMiB4Eh/8n+Hxu2NIZm8S/Q7kNo5pmZfXhHGHmS4MinUainiBC54SCyRnwzL+KZjj8zbsSsw== + dependencies: + "@ethersproject/bytes" "^5.6.1" + +"@ethersproject/base64@5.7.0", "@ethersproject/base64@^5.4.0", "@ethersproject/base64@^5.6.1", "@ethersproject/base64@^5.7.0": version "5.7.0" resolved "https://registry.yarnpkg.com/@ethersproject/base64/-/base64-5.7.0.tgz#ac4ee92aa36c1628173e221d0d01f53692059e1c" integrity sha512-Dr8tcHt2mEbsZr/mwTPIQAf3Ai0Bks/7gTw9dSqk1mQvhW3XvRlmDJr/4n+wg1JmCl16NZue17CDh8xb/vZ0sQ== @@ -241,7 +298,15 @@ "@ethersproject/bytes" "^5.4.0" "@ethersproject/properties" "^5.4.0" -"@ethersproject/basex@5.7.0", "@ethersproject/basex@^5.4.0", "@ethersproject/basex@^5.7.0": +"@ethersproject/basex@5.6.1": + version "5.6.1" + resolved "https://registry.yarnpkg.com/@ethersproject/basex/-/basex-5.6.1.tgz#badbb2f1d4a6f52ce41c9064f01eab19cc4c5305" + integrity sha512-a52MkVz4vuBXR06nvflPMotld1FJWSj2QT0985v7P/emPZO00PucFAkbcmq2vpVU7Ts7umKiSI6SppiLykVWsA== + dependencies: + "@ethersproject/bytes" "^5.6.1" + "@ethersproject/properties" "^5.6.0" + +"@ethersproject/basex@5.7.0", "@ethersproject/basex@^5.4.0", "@ethersproject/basex@^5.6.1", "@ethersproject/basex@^5.7.0": version "5.7.0" resolved "https://registry.yarnpkg.com/@ethersproject/basex/-/basex-5.7.0.tgz#97034dc7e8938a8ca943ab20f8a5e492ece4020b" integrity sha512-ywlh43GwZLv2Voc2gQVTKBoVQ1mti3d8HK5aMxsfu/nRDnMmNqaSJ3r3n85HBByT8OpoY96SXM1FogC533T4zw== @@ -258,7 +323,16 @@ "@ethersproject/logger" "^5.4.0" bn.js "^4.11.9" -"@ethersproject/bignumber@5.7.0", "@ethersproject/bignumber@^5.4.0", "@ethersproject/bignumber@^5.7.0": +"@ethersproject/bignumber@5.6.2": + version "5.6.2" + resolved "https://registry.yarnpkg.com/@ethersproject/bignumber/-/bignumber-5.6.2.tgz#72a0717d6163fab44c47bcc82e0c550ac0315d66" + integrity sha512-v7+EEUbhGqT3XJ9LMPsKvXYHFc8eHxTowFCG/HgJErmq4XHJ2WR7aeyICg3uTOAQ7Icn0GFHAohXEhxQHq4Ubw== + dependencies: + "@ethersproject/bytes" "^5.6.1" + "@ethersproject/logger" "^5.6.0" + bn.js "^5.2.1" + +"@ethersproject/bignumber@5.7.0", "@ethersproject/bignumber@^5.4.0", "@ethersproject/bignumber@^5.6.2", "@ethersproject/bignumber@^5.7.0": version "5.7.0" resolved "https://registry.yarnpkg.com/@ethersproject/bignumber/-/bignumber-5.7.0.tgz#e2f03837f268ba655ffba03a57853e18a18dc9c2" integrity sha512-n1CAdIHRWjSucQO3MC1zPSVgV/6dy/fjL9pMrPP9peL+QxEg9wOsVqwD4+818B6LUEtaXzVHQiuivzRoxPxUGw== @@ -274,7 +348,14 @@ dependencies: "@ethersproject/logger" "^5.4.0" -"@ethersproject/bytes@5.7.0", "@ethersproject/bytes@^5.4.0", "@ethersproject/bytes@^5.7.0": +"@ethersproject/bytes@5.6.1": + version "5.6.1" + resolved "https://registry.yarnpkg.com/@ethersproject/bytes/-/bytes-5.6.1.tgz#24f916e411f82a8a60412344bf4a813b917eefe7" + integrity sha512-NwQt7cKn5+ZE4uDn+X5RAXLp46E1chXoaMmrxAyA0rblpxz8t58lVkrHXoRIn0lz1joQElQ8410GqhTqMOwc6g== + dependencies: + "@ethersproject/logger" "^5.6.0" + +"@ethersproject/bytes@5.7.0", "@ethersproject/bytes@^5.4.0", "@ethersproject/bytes@^5.6.1", "@ethersproject/bytes@^5.7.0": version "5.7.0" resolved "https://registry.yarnpkg.com/@ethersproject/bytes/-/bytes-5.7.0.tgz#a00f6ea8d7e7534d6d87f47188af1148d71f155d" integrity sha512-nsbxwgFXWh9NyYWo+U8atvmMsSdKJprTcICAkvbBffT75qDocbuggBU0SJiVK2MuTrp0q+xvLkTnGMPK1+uA9A== @@ -288,7 +369,14 @@ dependencies: "@ethersproject/bignumber" "^5.4.0" -"@ethersproject/constants@5.7.0", "@ethersproject/constants@^5.4.0", "@ethersproject/constants@^5.7.0": +"@ethersproject/constants@5.6.1": + version "5.6.1" + resolved "https://registry.yarnpkg.com/@ethersproject/constants/-/constants-5.6.1.tgz#e2e974cac160dd101cf79fdf879d7d18e8cb1370" + integrity sha512-QSq9WVnZbxXYFftrjSjZDUshp6/eKp6qrtdBtUCm0QxCV5z1fG/w3kdlcsjMCQuQHUnAclKoK7XpXMezhRDOLg== + dependencies: + "@ethersproject/bignumber" "^5.6.2" + +"@ethersproject/constants@5.7.0", "@ethersproject/constants@^5.4.0", "@ethersproject/constants@^5.6.1", "@ethersproject/constants@^5.7.0": version "5.7.0" resolved "https://registry.yarnpkg.com/@ethersproject/constants/-/constants-5.7.0.tgz#df80a9705a7e08984161f09014ea012d1c75295e" integrity sha512-DHI+y5dBNvkpYUMiRQyxRBYBefZkJfo70VUkUAsRjcPs47muV9evftfZ0PJVCXYbAiCgght0DtcF9srFQmIgWA== @@ -311,6 +399,22 @@ "@ethersproject/properties" "^5.4.0" "@ethersproject/transactions" "^5.4.0" +"@ethersproject/contracts@5.6.2": + version "5.6.2" + resolved "https://registry.yarnpkg.com/@ethersproject/contracts/-/contracts-5.6.2.tgz#20b52e69ebc1b74274ff8e3d4e508de971c287bc" + integrity sha512-hguUA57BIKi6WY0kHvZp6PwPlWF87MCeB4B7Z7AbUpTxfFXFdn/3b0GmjZPagIHS+3yhcBJDnuEfU4Xz+Ks/8g== + dependencies: + "@ethersproject/abi" "^5.6.3" + "@ethersproject/abstract-provider" "^5.6.1" + "@ethersproject/abstract-signer" "^5.6.2" + "@ethersproject/address" "^5.6.1" + "@ethersproject/bignumber" "^5.6.2" + "@ethersproject/bytes" "^5.6.1" + "@ethersproject/constants" "^5.6.1" + "@ethersproject/logger" "^5.6.0" + "@ethersproject/properties" "^5.6.0" + "@ethersproject/transactions" "^5.6.2" + "@ethersproject/contracts@5.7.0": version "5.7.0" resolved "https://registry.yarnpkg.com/@ethersproject/contracts/-/contracts-5.7.0.tgz#c305e775abd07e48aa590e1a877ed5c316f8bd1e" @@ -341,7 +445,21 @@ "@ethersproject/properties" "^5.4.0" "@ethersproject/strings" "^5.4.0" -"@ethersproject/hash@5.7.0", "@ethersproject/hash@^5.4.0", "@ethersproject/hash@^5.7.0": +"@ethersproject/hash@5.6.1": + version "5.6.1" + resolved "https://registry.yarnpkg.com/@ethersproject/hash/-/hash-5.6.1.tgz#224572ea4de257f05b4abf8ae58b03a67e99b0f4" + integrity sha512-L1xAHurbaxG8VVul4ankNX5HgQ8PNCTrnVXEiFnE9xoRnaUcgfD12tZINtDinSllxPLCtGwguQxJ5E6keE84pA== + dependencies: + "@ethersproject/abstract-signer" "^5.6.2" + "@ethersproject/address" "^5.6.1" + "@ethersproject/bignumber" "^5.6.2" + "@ethersproject/bytes" "^5.6.1" + "@ethersproject/keccak256" "^5.6.1" + "@ethersproject/logger" "^5.6.0" + "@ethersproject/properties" "^5.6.0" + "@ethersproject/strings" "^5.6.1" + +"@ethersproject/hash@5.7.0", "@ethersproject/hash@^5.4.0", "@ethersproject/hash@^5.6.1", "@ethersproject/hash@^5.7.0": version "5.7.0" resolved "https://registry.yarnpkg.com/@ethersproject/hash/-/hash-5.7.0.tgz#eb7aca84a588508369562e16e514b539ba5240a7" integrity sha512-qX5WrQfnah1EFnO5zJv1v46a8HW0+E5xuBBDTwMFZLuVTx0tbU2kkx15NqdjxecrLGatQN9FGQKpb1FKdHCt+g== @@ -374,7 +492,25 @@ "@ethersproject/transactions" "^5.4.0" "@ethersproject/wordlists" "^5.4.0" -"@ethersproject/hdnode@5.7.0", "@ethersproject/hdnode@^5.4.0", "@ethersproject/hdnode@^5.7.0": +"@ethersproject/hdnode@5.6.2": + version "5.6.2" + resolved "https://registry.yarnpkg.com/@ethersproject/hdnode/-/hdnode-5.6.2.tgz#26f3c83a3e8f1b7985c15d1db50dc2903418b2d2" + integrity sha512-tERxW8Ccf9CxW2db3WsN01Qao3wFeRsfYY9TCuhmG0xNpl2IO8wgXU3HtWIZ49gUWPggRy4Yg5axU0ACaEKf1Q== + dependencies: + "@ethersproject/abstract-signer" "^5.6.2" + "@ethersproject/basex" "^5.6.1" + "@ethersproject/bignumber" "^5.6.2" + "@ethersproject/bytes" "^5.6.1" + "@ethersproject/logger" "^5.6.0" + "@ethersproject/pbkdf2" "^5.6.1" + "@ethersproject/properties" "^5.6.0" + "@ethersproject/sha2" "^5.6.1" + "@ethersproject/signing-key" "^5.6.2" + "@ethersproject/strings" "^5.6.1" + "@ethersproject/transactions" "^5.6.2" + "@ethersproject/wordlists" "^5.6.1" + +"@ethersproject/hdnode@5.7.0", "@ethersproject/hdnode@^5.4.0", "@ethersproject/hdnode@^5.6.2", "@ethersproject/hdnode@^5.7.0": version "5.7.0" resolved "https://registry.yarnpkg.com/@ethersproject/hdnode/-/hdnode-5.7.0.tgz#e627ddc6b466bc77aebf1a6b9e47405ca5aef9cf" integrity sha512-OmyYo9EENBPPf4ERhR7oj6uAtUAhYGqOnIS+jE5pTXvdKBS99ikzq1E7Iv0ZQZ5V36Lqx1qZLeak0Ra16qpeOg== @@ -411,7 +547,26 @@ aes-js "3.0.0" scrypt-js "3.0.1" -"@ethersproject/json-wallets@5.7.0", "@ethersproject/json-wallets@^5.4.0", "@ethersproject/json-wallets@^5.7.0": +"@ethersproject/json-wallets@5.6.1": + version "5.6.1" + resolved "https://registry.yarnpkg.com/@ethersproject/json-wallets/-/json-wallets-5.6.1.tgz#3f06ba555c9c0d7da46756a12ac53483fe18dd91" + integrity sha512-KfyJ6Zwz3kGeX25nLihPwZYlDqamO6pfGKNnVMWWfEVVp42lTfCZVXXy5Ie8IZTN0HKwAngpIPi7gk4IJzgmqQ== + dependencies: + "@ethersproject/abstract-signer" "^5.6.2" + "@ethersproject/address" "^5.6.1" + "@ethersproject/bytes" "^5.6.1" + "@ethersproject/hdnode" "^5.6.2" + "@ethersproject/keccak256" "^5.6.1" + "@ethersproject/logger" "^5.6.0" + "@ethersproject/pbkdf2" "^5.6.1" + "@ethersproject/properties" "^5.6.0" + "@ethersproject/random" "^5.6.1" + "@ethersproject/strings" "^5.6.1" + "@ethersproject/transactions" "^5.6.2" + aes-js "3.0.0" + scrypt-js "3.0.1" + +"@ethersproject/json-wallets@5.7.0", "@ethersproject/json-wallets@^5.4.0", "@ethersproject/json-wallets@^5.6.1", "@ethersproject/json-wallets@^5.7.0": version "5.7.0" resolved "https://registry.yarnpkg.com/@ethersproject/json-wallets/-/json-wallets-5.7.0.tgz#5e3355287b548c32b368d91014919ebebddd5360" integrity sha512-8oee5Xgu6+RKgJTkvEMl2wDgSPSAQ9MB/3JYjFV9jlKvcYHUXZC+cQp0njgmxdHkYWn8s6/IqIZYm0YWCjO/0g== @@ -438,7 +593,15 @@ "@ethersproject/bytes" "^5.4.0" js-sha3 "0.5.7" -"@ethersproject/keccak256@5.7.0", "@ethersproject/keccak256@^5.4.0", "@ethersproject/keccak256@^5.7.0": +"@ethersproject/keccak256@5.6.1": + version "5.6.1" + resolved "https://registry.yarnpkg.com/@ethersproject/keccak256/-/keccak256-5.6.1.tgz#b867167c9b50ba1b1a92bccdd4f2d6bd168a91cc" + integrity sha512-bB7DQHCTRDooZZdL3lk9wpL0+XuG3XLGHLh3cePnybsO3V0rdCAOQGpn/0R3aODmnTOOkCATJiD2hnL+5bwthA== + dependencies: + "@ethersproject/bytes" "^5.6.1" + js-sha3 "0.8.0" + +"@ethersproject/keccak256@5.7.0", "@ethersproject/keccak256@^5.4.0", "@ethersproject/keccak256@^5.6.1", "@ethersproject/keccak256@^5.7.0": version "5.7.0" resolved "https://registry.yarnpkg.com/@ethersproject/keccak256/-/keccak256-5.7.0.tgz#3186350c6e1cd6aba7940384ec7d6d9db01f335a" integrity sha512-2UcPboeL/iW+pSg6vZ6ydF8tCnv3Iu/8tUmLLzWWGzxWKFFqOBQFLo6uLUv6BDrLgCDfN28RJ/wtByx+jZ4KBg== @@ -451,7 +614,12 @@ resolved "https://registry.yarnpkg.com/@ethersproject/logger/-/logger-5.4.1.tgz#503bd33683538b923c578c07d1c2c0dd18672054" integrity sha512-DZ+bRinnYLPw1yAC64oRl0QyVZj43QeHIhVKfD/+YwSz4wsv1pfwb5SOFjz+r710YEWzU6LrhuSjpSO+6PeE4A== -"@ethersproject/logger@5.7.0", "@ethersproject/logger@^5.4.0", "@ethersproject/logger@^5.7.0": +"@ethersproject/logger@5.6.0": + version "5.6.0" + resolved "https://registry.yarnpkg.com/@ethersproject/logger/-/logger-5.6.0.tgz#d7db1bfcc22fd2e4ab574cba0bb6ad779a9a3e7a" + integrity sha512-BiBWllUROH9w+P21RzoxJKzqoqpkyM1pRnEKG69bulE9TSQD8SAIvTQqIMZmmCO8pUNkgLP1wndX1gKghSpBmg== + +"@ethersproject/logger@5.7.0", "@ethersproject/logger@^5.4.0", "@ethersproject/logger@^5.6.0", "@ethersproject/logger@^5.7.0": version "5.7.0" resolved "https://registry.yarnpkg.com/@ethersproject/logger/-/logger-5.7.0.tgz#6ce9ae168e74fecf287be17062b590852c311892" integrity sha512-0odtFdXu/XHtjQXJYA3u9G0G8btm0ND5Cu8M7i5vhEcE8/HmF4Lbdqanwyv4uQTr2tx6b7fQRmgLrsnpQlmnig== @@ -463,7 +631,14 @@ dependencies: "@ethersproject/logger" "^5.4.0" -"@ethersproject/networks@5.7.1", "@ethersproject/networks@^5.4.0", "@ethersproject/networks@^5.7.0": +"@ethersproject/networks@5.6.3": + version "5.6.3" + resolved "https://registry.yarnpkg.com/@ethersproject/networks/-/networks-5.6.3.tgz#3ee3ab08f315b433b50c99702eb32e0cf31f899f" + integrity sha512-QZxRH7cA5Ut9TbXwZFiCyuPchdWi87ZtVNHWZd0R6YFgYtes2jQ3+bsslJ0WdyDe0i6QumqtoYqvY3rrQFRZOQ== + dependencies: + "@ethersproject/logger" "^5.6.0" + +"@ethersproject/networks@5.7.1", "@ethersproject/networks@^5.4.0", "@ethersproject/networks@^5.6.3", "@ethersproject/networks@^5.7.0": version "5.7.1" resolved "https://registry.yarnpkg.com/@ethersproject/networks/-/networks-5.7.1.tgz#118e1a981d757d45ccea6bb58d9fd3d9db14ead6" integrity sha512-n/MufjFYv3yFcUyfhnXotyDlNdFb7onmkSy8aQERi2PjNcnWQ66xXxa3XlS8nCcA8aJKJjIIMNJTC7tu80GwpQ== @@ -478,7 +653,15 @@ "@ethersproject/bytes" "^5.4.0" "@ethersproject/sha2" "^5.4.0" -"@ethersproject/pbkdf2@5.7.0", "@ethersproject/pbkdf2@^5.4.0", "@ethersproject/pbkdf2@^5.7.0": +"@ethersproject/pbkdf2@5.6.1": + version "5.6.1" + resolved "https://registry.yarnpkg.com/@ethersproject/pbkdf2/-/pbkdf2-5.6.1.tgz#f462fe320b22c0d6b1d72a9920a3963b09eb82d1" + integrity sha512-k4gRQ+D93zDRPNUfmduNKq065uadC2YjMP/CqwwX5qG6R05f47boq6pLZtV/RnC4NZAYOPH1Cyo54q0c9sshRQ== + dependencies: + "@ethersproject/bytes" "^5.6.1" + "@ethersproject/sha2" "^5.6.1" + +"@ethersproject/pbkdf2@5.7.0", "@ethersproject/pbkdf2@^5.4.0", "@ethersproject/pbkdf2@^5.6.1", "@ethersproject/pbkdf2@^5.7.0": version "5.7.0" resolved "https://registry.yarnpkg.com/@ethersproject/pbkdf2/-/pbkdf2-5.7.0.tgz#d2267d0a1f6e123f3771007338c47cccd83d3102" integrity sha512-oR/dBRZR6GTyaofd86DehG72hY6NpAjhabkhxgr3X2FpJtJuodEl2auADWBZfhDHgVCbu3/H/Ocq2uC6dpNjjw== @@ -493,7 +676,14 @@ dependencies: "@ethersproject/logger" "^5.4.0" -"@ethersproject/properties@5.7.0", "@ethersproject/properties@^5.4.0", "@ethersproject/properties@^5.7.0": +"@ethersproject/properties@5.6.0": + version "5.6.0" + resolved "https://registry.yarnpkg.com/@ethersproject/properties/-/properties-5.6.0.tgz#38904651713bc6bdd5bdd1b0a4287ecda920fa04" + integrity sha512-szoOkHskajKePTJSZ46uHUWWkbv7TzP2ypdEK6jGMqJaEt2sb0jCgfBo0gH0m2HBpRixMuJ6TBRaQCF7a9DoCg== + dependencies: + "@ethersproject/logger" "^5.6.0" + +"@ethersproject/properties@5.7.0", "@ethersproject/properties@^5.4.0", "@ethersproject/properties@^5.6.0", "@ethersproject/properties@^5.7.0": version "5.7.0" resolved "https://registry.yarnpkg.com/@ethersproject/properties/-/properties-5.7.0.tgz#a6e12cb0439b878aaf470f1902a176033067ed30" integrity sha512-J87jy8suntrAkIZtecpxEPxY//szqr1mlBaYlQ0r4RCaiD2hjheqF9s1LVE8vVuJCXisjIP+JgtK/Do54ej4Sw== @@ -525,6 +715,32 @@ bech32 "1.1.4" ws "7.4.6" +"@ethersproject/providers@5.6.8": + version "5.6.8" + resolved "https://registry.yarnpkg.com/@ethersproject/providers/-/providers-5.6.8.tgz#22e6c57be215ba5545d3a46cf759d265bb4e879d" + integrity sha512-Wf+CseT/iOJjrGtAOf3ck9zS7AgPmr2fZ3N97r4+YXN3mBePTG2/bJ8DApl9mVwYL+RpYbNxMEkEp4mPGdwG/w== + dependencies: + "@ethersproject/abstract-provider" "^5.6.1" + "@ethersproject/abstract-signer" "^5.6.2" + "@ethersproject/address" "^5.6.1" + "@ethersproject/base64" "^5.6.1" + "@ethersproject/basex" "^5.6.1" + "@ethersproject/bignumber" "^5.6.2" + "@ethersproject/bytes" "^5.6.1" + "@ethersproject/constants" "^5.6.1" + "@ethersproject/hash" "^5.6.1" + "@ethersproject/logger" "^5.6.0" + "@ethersproject/networks" "^5.6.3" + "@ethersproject/properties" "^5.6.0" + "@ethersproject/random" "^5.6.1" + "@ethersproject/rlp" "^5.6.1" + "@ethersproject/sha2" "^5.6.1" + "@ethersproject/strings" "^5.6.1" + "@ethersproject/transactions" "^5.6.2" + "@ethersproject/web" "^5.6.1" + bech32 "1.1.4" + ws "7.4.6" + "@ethersproject/providers@5.7.2", "@ethersproject/providers@^5.4.7": version "5.7.2" resolved "https://registry.yarnpkg.com/@ethersproject/providers/-/providers-5.7.2.tgz#f8b1a4f275d7ce58cf0a2eec222269a08beb18cb" @@ -559,7 +775,15 @@ "@ethersproject/bytes" "^5.4.0" "@ethersproject/logger" "^5.4.0" -"@ethersproject/random@5.7.0", "@ethersproject/random@^5.4.0", "@ethersproject/random@^5.7.0": +"@ethersproject/random@5.6.1": + version "5.6.1" + resolved "https://registry.yarnpkg.com/@ethersproject/random/-/random-5.6.1.tgz#66915943981bcd3e11bbd43733f5c3ba5a790255" + integrity sha512-/wtPNHwbmng+5yi3fkipA8YBT59DdkGRoC2vWk09Dci/q5DlgnMkhIycjHlavrvrjJBkFjO/ueLyT+aUDfc4lA== + dependencies: + "@ethersproject/bytes" "^5.6.1" + "@ethersproject/logger" "^5.6.0" + +"@ethersproject/random@5.7.0", "@ethersproject/random@^5.4.0", "@ethersproject/random@^5.6.1", "@ethersproject/random@^5.7.0": version "5.7.0" resolved "https://registry.yarnpkg.com/@ethersproject/random/-/random-5.7.0.tgz#af19dcbc2484aae078bb03656ec05df66253280c" integrity sha512-19WjScqRA8IIeWclFme75VMXSBvi4e6InrUNuaR4s5pTF2qNhcGdCUwdxUVGtDDqC00sDLCO93jPQoDUH4HVmQ== @@ -575,7 +799,15 @@ "@ethersproject/bytes" "^5.4.0" "@ethersproject/logger" "^5.4.0" -"@ethersproject/rlp@5.7.0", "@ethersproject/rlp@^5.4.0", "@ethersproject/rlp@^5.7.0": +"@ethersproject/rlp@5.6.1": + version "5.6.1" + resolved "https://registry.yarnpkg.com/@ethersproject/rlp/-/rlp-5.6.1.tgz#df8311e6f9f24dcb03d59a2bac457a28a4fe2bd8" + integrity sha512-uYjmcZx+DKlFUk7a5/W9aQVaoEC7+1MOBgNtvNg13+RnuUwT4F0zTovC0tmay5SmRslb29V1B7Y5KCri46WhuQ== + dependencies: + "@ethersproject/bytes" "^5.6.1" + "@ethersproject/logger" "^5.6.0" + +"@ethersproject/rlp@5.7.0", "@ethersproject/rlp@^5.4.0", "@ethersproject/rlp@^5.6.1", "@ethersproject/rlp@^5.7.0": version "5.7.0" resolved "https://registry.yarnpkg.com/@ethersproject/rlp/-/rlp-5.7.0.tgz#de39e4d5918b9d74d46de93af80b7685a9c21304" integrity sha512-rBxzX2vK8mVF7b0Tol44t5Tb8gomOHkj5guL+HhzQ1yBh/ydjGnpw6at+X6Iw0Kp3OzzzkcKp8N9r0W4kYSs9w== @@ -592,7 +824,16 @@ "@ethersproject/logger" "^5.4.0" hash.js "1.1.7" -"@ethersproject/sha2@5.7.0", "@ethersproject/sha2@^5.4.0", "@ethersproject/sha2@^5.7.0": +"@ethersproject/sha2@5.6.1": + version "5.6.1" + resolved "https://registry.yarnpkg.com/@ethersproject/sha2/-/sha2-5.6.1.tgz#211f14d3f5da5301c8972a8827770b6fd3e51656" + integrity sha512-5K2GyqcW7G4Yo3uenHegbXRPDgARpWUiXc6RiF7b6i/HXUoWlb7uCARh7BAHg7/qT/Q5ydofNwiZcim9qpjB6g== + dependencies: + "@ethersproject/bytes" "^5.6.1" + "@ethersproject/logger" "^5.6.0" + hash.js "1.1.7" + +"@ethersproject/sha2@5.7.0", "@ethersproject/sha2@^5.4.0", "@ethersproject/sha2@^5.6.1", "@ethersproject/sha2@^5.7.0": version "5.7.0" resolved "https://registry.yarnpkg.com/@ethersproject/sha2/-/sha2-5.7.0.tgz#9a5f7a7824ef784f7f7680984e593a800480c9fb" integrity sha512-gKlH42riwb3KYp0reLsFTokByAKoJdgFCwI+CCiX/k+Jm2mbNs6oOaCjYQSlI1+XBVejwH2KrmCbMAT/GnRDQw== @@ -613,7 +854,19 @@ elliptic "6.5.4" hash.js "1.1.7" -"@ethersproject/signing-key@5.7.0", "@ethersproject/signing-key@^5.4.0", "@ethersproject/signing-key@^5.7.0": +"@ethersproject/signing-key@5.6.2": + version "5.6.2" + resolved "https://registry.yarnpkg.com/@ethersproject/signing-key/-/signing-key-5.6.2.tgz#8a51b111e4d62e5a62aee1da1e088d12de0614a3" + integrity sha512-jVbu0RuP7EFpw82vHcL+GP35+KaNruVAZM90GxgQnGqB6crhBqW/ozBfFvdeImtmb4qPko0uxXjn8l9jpn0cwQ== + dependencies: + "@ethersproject/bytes" "^5.6.1" + "@ethersproject/logger" "^5.6.0" + "@ethersproject/properties" "^5.6.0" + bn.js "^5.2.1" + elliptic "6.5.4" + hash.js "1.1.7" + +"@ethersproject/signing-key@5.7.0", "@ethersproject/signing-key@^5.4.0", "@ethersproject/signing-key@^5.6.2", "@ethersproject/signing-key@^5.7.0": version "5.7.0" resolved "https://registry.yarnpkg.com/@ethersproject/signing-key/-/signing-key-5.7.0.tgz#06b2df39411b00bc57c7c09b01d1e41cf1b16ab3" integrity sha512-MZdy2nL3wO0u7gkB4nA/pEf8lu1TlFswPNmy8AiYkfKTdO6eXBJyUdmHO/ehm/htHw9K/qF8ujnTyUAD+Ry54Q== @@ -636,6 +889,18 @@ "@ethersproject/sha2" "^5.4.0" "@ethersproject/strings" "^5.4.0" +"@ethersproject/solidity@5.6.1": + version "5.6.1" + resolved "https://registry.yarnpkg.com/@ethersproject/solidity/-/solidity-5.6.1.tgz#5845e71182c66d32e6ec5eefd041fca091a473e2" + integrity sha512-KWqVLkUUoLBfL1iwdzUVlkNqAUIFMpbbeH0rgCfKmJp0vFtY4AsaN91gHKo9ZZLkC4UOm3cI3BmMV4N53BOq4g== + dependencies: + "@ethersproject/bignumber" "^5.6.2" + "@ethersproject/bytes" "^5.6.1" + "@ethersproject/keccak256" "^5.6.1" + "@ethersproject/logger" "^5.6.0" + "@ethersproject/sha2" "^5.6.1" + "@ethersproject/strings" "^5.6.1" + "@ethersproject/solidity@5.7.0": version "5.7.0" resolved "https://registry.yarnpkg.com/@ethersproject/solidity/-/solidity-5.7.0.tgz#5e9c911d8a2acce2a5ebb48a5e2e0af20b631cb8" @@ -657,7 +922,16 @@ "@ethersproject/constants" "^5.4.0" "@ethersproject/logger" "^5.4.0" -"@ethersproject/strings@5.7.0", "@ethersproject/strings@^5.4.0", "@ethersproject/strings@^5.7.0": +"@ethersproject/strings@5.6.1": + version "5.6.1" + resolved "https://registry.yarnpkg.com/@ethersproject/strings/-/strings-5.6.1.tgz#dbc1b7f901db822b5cafd4ebf01ca93c373f8952" + integrity sha512-2X1Lgk6Jyfg26MUnsHiT456U9ijxKUybz8IM1Vih+NJxYtXhmvKBcHOmvGqpFSVJ0nQ4ZCoIViR8XlRw1v/+Cw== + dependencies: + "@ethersproject/bytes" "^5.6.1" + "@ethersproject/constants" "^5.6.1" + "@ethersproject/logger" "^5.6.0" + +"@ethersproject/strings@5.7.0", "@ethersproject/strings@^5.4.0", "@ethersproject/strings@^5.6.1", "@ethersproject/strings@^5.7.0": version "5.7.0" resolved "https://registry.yarnpkg.com/@ethersproject/strings/-/strings-5.7.0.tgz#54c9d2a7c57ae8f1205c88a9d3a56471e14d5ed2" integrity sha512-/9nu+lj0YswRNSH0NXYqrh8775XNyEdUQAuf3f+SmOrnVewcJ5SBNAjF7lpgehKi4abvNNXyf+HX86czCdJ8Mg== @@ -681,7 +955,22 @@ "@ethersproject/rlp" "^5.4.0" "@ethersproject/signing-key" "^5.4.0" -"@ethersproject/transactions@5.7.0", "@ethersproject/transactions@^5.4.0", "@ethersproject/transactions@^5.7.0": +"@ethersproject/transactions@5.6.2": + version "5.6.2" + resolved "https://registry.yarnpkg.com/@ethersproject/transactions/-/transactions-5.6.2.tgz#793a774c01ced9fe7073985bb95a4b4e57a6370b" + integrity sha512-BuV63IRPHmJvthNkkt9G70Ullx6AcM+SDc+a8Aw/8Yew6YwT51TcBKEp1P4oOQ/bP25I18JJr7rcFRgFtU9B2Q== + dependencies: + "@ethersproject/address" "^5.6.1" + "@ethersproject/bignumber" "^5.6.2" + "@ethersproject/bytes" "^5.6.1" + "@ethersproject/constants" "^5.6.1" + "@ethersproject/keccak256" "^5.6.1" + "@ethersproject/logger" "^5.6.0" + "@ethersproject/properties" "^5.6.0" + "@ethersproject/rlp" "^5.6.1" + "@ethersproject/signing-key" "^5.6.2" + +"@ethersproject/transactions@5.7.0", "@ethersproject/transactions@^5.4.0", "@ethersproject/transactions@^5.6.2", "@ethersproject/transactions@^5.7.0": version "5.7.0" resolved "https://registry.yarnpkg.com/@ethersproject/transactions/-/transactions-5.7.0.tgz#91318fc24063e057885a6af13fdb703e1f993d3b" integrity sha512-kmcNicCp1lp8qanMTC3RIikGgoJ80ztTyvtsFvCYpSCfkjhD0jZ2LOrnbcuxuToLIUYYf+4XwD1rP+B/erDIhQ== @@ -705,6 +994,15 @@ "@ethersproject/constants" "^5.4.0" "@ethersproject/logger" "^5.4.0" +"@ethersproject/units@5.6.1": + version "5.6.1" + resolved "https://registry.yarnpkg.com/@ethersproject/units/-/units-5.6.1.tgz#ecc590d16d37c8f9ef4e89e2005bda7ddc6a4e6f" + integrity sha512-rEfSEvMQ7obcx3KWD5EWWx77gqv54K6BKiZzKxkQJqtpriVsICrktIQmKl8ReNToPeIYPnFHpXvKpi068YFZXw== + dependencies: + "@ethersproject/bignumber" "^5.6.2" + "@ethersproject/constants" "^5.6.1" + "@ethersproject/logger" "^5.6.0" + "@ethersproject/units@5.7.0": version "5.7.0" resolved "https://registry.yarnpkg.com/@ethersproject/units/-/units-5.7.0.tgz#637b563d7e14f42deeee39245275d477aae1d8b1" @@ -735,6 +1033,27 @@ "@ethersproject/transactions" "^5.4.0" "@ethersproject/wordlists" "^5.4.0" +"@ethersproject/wallet@5.6.2": + version "5.6.2" + resolved "https://registry.yarnpkg.com/@ethersproject/wallet/-/wallet-5.6.2.tgz#cd61429d1e934681e413f4bc847a5f2f87e3a03c" + integrity sha512-lrgh0FDQPuOnHcF80Q3gHYsSUODp6aJLAdDmDV0xKCN/T7D99ta1jGVhulg3PY8wiXEngD0DfM0I2XKXlrqJfg== + dependencies: + "@ethersproject/abstract-provider" "^5.6.1" + "@ethersproject/abstract-signer" "^5.6.2" + "@ethersproject/address" "^5.6.1" + "@ethersproject/bignumber" "^5.6.2" + "@ethersproject/bytes" "^5.6.1" + "@ethersproject/hash" "^5.6.1" + "@ethersproject/hdnode" "^5.6.2" + "@ethersproject/json-wallets" "^5.6.1" + "@ethersproject/keccak256" "^5.6.1" + "@ethersproject/logger" "^5.6.0" + "@ethersproject/properties" "^5.6.0" + "@ethersproject/random" "^5.6.1" + "@ethersproject/signing-key" "^5.6.2" + "@ethersproject/transactions" "^5.6.2" + "@ethersproject/wordlists" "^5.6.1" + "@ethersproject/wallet@5.7.0": version "5.7.0" resolved "https://registry.yarnpkg.com/@ethersproject/wallet/-/wallet-5.7.0.tgz#4e5d0790d96fe21d61d38fb40324e6c7ef350b2d" @@ -767,7 +1086,18 @@ "@ethersproject/properties" "^5.4.0" "@ethersproject/strings" "^5.4.0" -"@ethersproject/web@5.7.1", "@ethersproject/web@^5.4.0", "@ethersproject/web@^5.7.0": +"@ethersproject/web@5.6.1": + version "5.6.1" + resolved "https://registry.yarnpkg.com/@ethersproject/web/-/web-5.6.1.tgz#6e2bd3ebadd033e6fe57d072db2b69ad2c9bdf5d" + integrity sha512-/vSyzaQlNXkO1WV+RneYKqCJwualcUdx/Z3gseVovZP0wIlOFcCE1hkRhKBH8ImKbGQbMl9EAAyJFrJu7V0aqA== + dependencies: + "@ethersproject/base64" "^5.6.1" + "@ethersproject/bytes" "^5.6.1" + "@ethersproject/logger" "^5.6.0" + "@ethersproject/properties" "^5.6.0" + "@ethersproject/strings" "^5.6.1" + +"@ethersproject/web@5.7.1", "@ethersproject/web@^5.4.0", "@ethersproject/web@^5.6.1", "@ethersproject/web@^5.7.0": version "5.7.1" resolved "https://registry.yarnpkg.com/@ethersproject/web/-/web-5.7.1.tgz#de1f285b373149bee5928f4eb7bcb87ee5fbb4ae" integrity sha512-Gueu8lSvyjBWL4cYsWsjh6MtMwM0+H4HvqFPZfB6dV8ctbP9zFAO73VG1cMWae0FLPCtz0peKPpZY8/ugJJX2w== @@ -789,7 +1119,18 @@ "@ethersproject/properties" "^5.4.0" "@ethersproject/strings" "^5.4.0" -"@ethersproject/wordlists@5.7.0", "@ethersproject/wordlists@^5.4.0", "@ethersproject/wordlists@^5.7.0": +"@ethersproject/wordlists@5.6.1": + version "5.6.1" + resolved "https://registry.yarnpkg.com/@ethersproject/wordlists/-/wordlists-5.6.1.tgz#1e78e2740a8a21e9e99947e47979d72e130aeda1" + integrity sha512-wiPRgBpNbNwCQFoCr8bcWO8o5I810cqO6mkdtKfLKFlLxeCWcnzDi4Alu8iyNzlhYuS9npCwivMbRWF19dyblw== + dependencies: + "@ethersproject/bytes" "^5.6.1" + "@ethersproject/hash" "^5.6.1" + "@ethersproject/logger" "^5.6.0" + "@ethersproject/properties" "^5.6.0" + "@ethersproject/strings" "^5.6.1" + +"@ethersproject/wordlists@5.7.0", "@ethersproject/wordlists@^5.4.0", "@ethersproject/wordlists@^5.6.1", "@ethersproject/wordlists@^5.7.0": version "5.7.0" resolved "https://registry.yarnpkg.com/@ethersproject/wordlists/-/wordlists-5.7.0.tgz#8fb2c07185d68c3e09eb3bfd6e779ba2774627f5" integrity sha512-S2TFNJNfHWVHNE6cNDjbVlZ6MgE17MIxMbMg2zv3wn+3XSJGosL1m9ZVv3GXCf/2ymSsQ+hRI5IzoMJTG6aoVA== @@ -1871,17 +2212,22 @@ typescript "5.5.4" zod "3.22.4" -"@zetachain/networks@10.0.0": +"@zetachain/networks@10.0.0", "@zetachain/networks@^10.0.0": version "10.0.0" resolved "https://registry.yarnpkg.com/@zetachain/networks/-/networks-10.0.0.tgz#dd5d14a0870f6b658644aded8c96859f15531089" integrity sha512-FPolaO19oVkSLSPDUA/Hu+8AhG3lDEslRDpLnMzbMbnNSC669Fkah0/TEf+6egrQbAifBRfFLzwWidAGs8oxtA== dependencies: dotenv "^16.1.4" -"@zetachain/protocol-contracts@9.0.0": - version "9.0.0" - resolved "https://registry.yarnpkg.com/@zetachain/protocol-contracts/-/protocol-contracts-9.0.0.tgz#c20ad5da43f6f3676f31556b303d1cb4ea17357e" - integrity sha512-L4A8bddlyhjaBAsIv/x1Bvxc38RJz8U8rbbBtxK5oVyOAd5Zz04ZiT3HqzO4FuKq6RGGM1uiA8jvUfmRkKchXw== +"@zetachain/protocol-contracts@11.0.0-rc3": + version "11.0.0-rc3" + resolved "https://registry.yarnpkg.com/@zetachain/protocol-contracts/-/protocol-contracts-11.0.0-rc3.tgz#9b719391d0728fd1b4e046c5f496180a45ecf0d5" + integrity sha512-Q8lOFOi7S1wdOfOBZPTxsOoyV6kyWwYEhg4vk+HmB36n0Q6A2VvTI7qmw8rxCvq0a5BUASC8IYx0+HzsOPvNOw== + dependencies: + "@openzeppelin/contracts" "^5.0.2" + "@openzeppelin/contracts-upgradeable" "^5.0.2" + "@zetachain/networks" "^10.0.0" + ethers "5.6.8" JSONStream@^1.3.5: version "1.3.5" @@ -3806,6 +4152,42 @@ ethers@5.4.7: "@ethersproject/web" "5.4.0" "@ethersproject/wordlists" "5.4.0" +ethers@5.6.8: + version "5.6.8" + resolved "https://registry.yarnpkg.com/ethers/-/ethers-5.6.8.tgz#d36b816b4896341a80a8bbd2a44e8cb6e9b98dd4" + integrity sha512-YxIGaltAOdvBFPZwIkyHnXbW40f1r8mHUgapW6dxkO+6t7H6wY8POUn0Kbxrd/N7I4hHxyi7YCddMAH/wmho2w== + dependencies: + "@ethersproject/abi" "5.6.3" + "@ethersproject/abstract-provider" "5.6.1" + "@ethersproject/abstract-signer" "5.6.2" + "@ethersproject/address" "5.6.1" + "@ethersproject/base64" "5.6.1" + "@ethersproject/basex" "5.6.1" + "@ethersproject/bignumber" "5.6.2" + "@ethersproject/bytes" "5.6.1" + "@ethersproject/constants" "5.6.1" + "@ethersproject/contracts" "5.6.2" + "@ethersproject/hash" "5.6.1" + "@ethersproject/hdnode" "5.6.2" + "@ethersproject/json-wallets" "5.6.1" + "@ethersproject/keccak256" "5.6.1" + "@ethersproject/logger" "5.6.0" + "@ethersproject/networks" "5.6.3" + "@ethersproject/pbkdf2" "5.6.1" + "@ethersproject/properties" "5.6.0" + "@ethersproject/providers" "5.6.8" + "@ethersproject/random" "5.6.1" + "@ethersproject/rlp" "5.6.1" + "@ethersproject/sha2" "5.6.1" + "@ethersproject/signing-key" "5.6.2" + "@ethersproject/solidity" "5.6.1" + "@ethersproject/strings" "5.6.1" + "@ethersproject/transactions" "5.6.2" + "@ethersproject/units" "5.6.1" + "@ethersproject/wallet" "5.6.2" + "@ethersproject/web" "5.6.1" + "@ethersproject/wordlists" "5.6.1" + ethers@5.7.2, ethers@^5.7.2: version "5.7.2" resolved "https://registry.yarnpkg.com/ethers/-/ethers-5.7.2.tgz#3a7deeabbb8c030d4126b24f84e525466145872e" @@ -6999,7 +7381,7 @@ string-format@^2.0.0: resolved "https://registry.yarnpkg.com/string-format/-/string-format-2.0.0.tgz#f2df2e7097440d3b65de31b6d40d54c96eaffb9b" integrity sha512-bbEs3scLeYNXLecRRuk6uJxdXUSj6le/8rNPHChIJTn2V79aXVTR1EH2OH5zLKKoz0V02fOUKZZcw01pLUShZA== -"string-width-cjs@npm:string-width@^4.2.0": +"string-width-cjs@npm:string-width@^4.2.0", string-width@^4.0.0, string-width@^4.1.0, string-width@^4.2.0, string-width@^4.2.2, string-width@^4.2.3: version "4.2.3" resolved "https://registry.yarnpkg.com/string-width/-/string-width-4.2.3.tgz#269c7117d27b05ad2e536830a8ec895ef9c6d010" integrity sha512-wKyQRQpjJ0sIp62ErSZdGsjMJWsap5oRNihHhu6G7JVO/9jIB6UyevL+tXuOqrng8j/cxKTWyWUwvSTriiZz/g== @@ -7016,15 +7398,6 @@ string-width@^2.1.1: is-fullwidth-code-point "^2.0.0" strip-ansi "^4.0.0" -string-width@^4.0.0, string-width@^4.1.0, string-width@^4.2.0, string-width@^4.2.2, string-width@^4.2.3: - version "4.2.3" - resolved "https://registry.yarnpkg.com/string-width/-/string-width-4.2.3.tgz#269c7117d27b05ad2e536830a8ec895ef9c6d010" - integrity sha512-wKyQRQpjJ0sIp62ErSZdGsjMJWsap5oRNihHhu6G7JVO/9jIB6UyevL+tXuOqrng8j/cxKTWyWUwvSTriiZz/g== - dependencies: - emoji-regex "^8.0.0" - is-fullwidth-code-point "^3.0.0" - strip-ansi "^6.0.1" - string-width@^5.0.1, string-width@^5.1.2: version "5.1.2" resolved "https://registry.yarnpkg.com/string-width/-/string-width-5.1.2.tgz#14f8daec6d81e7221d2a357e668cab73bdbca794" @@ -7076,7 +7449,7 @@ string_decoder@~1.1.1: dependencies: safe-buffer "~5.1.0" -"strip-ansi-cjs@npm:strip-ansi@^6.0.1": +"strip-ansi-cjs@npm:strip-ansi@^6.0.1", strip-ansi@^6.0.0, strip-ansi@^6.0.1: version "6.0.1" resolved "https://registry.yarnpkg.com/strip-ansi/-/strip-ansi-6.0.1.tgz#9e26c63d30f53443e9489495b2105d37b67a85d9" integrity sha512-Y38VPSHcqkFrCpFnQ9vuSXmquuv5oXOKpGeT6aGrr3o3Gc9AlVa6JBfUSOCnbxGGZF+/0ooI7KrPuUSztUdU5A== @@ -7097,13 +7470,6 @@ strip-ansi@^5.2.0: dependencies: ansi-regex "^4.1.0" -strip-ansi@^6.0.0, strip-ansi@^6.0.1: - version "6.0.1" - resolved "https://registry.yarnpkg.com/strip-ansi/-/strip-ansi-6.0.1.tgz#9e26c63d30f53443e9489495b2105d37b67a85d9" - integrity sha512-Y38VPSHcqkFrCpFnQ9vuSXmquuv5oXOKpGeT6aGrr3o3Gc9AlVa6JBfUSOCnbxGGZF+/0ooI7KrPuUSztUdU5A== - dependencies: - ansi-regex "^5.0.1" - strip-ansi@^7.0.1: version "7.1.0" resolved "https://registry.yarnpkg.com/strip-ansi/-/strip-ansi-7.1.0.tgz#d5b6568ca689d8561370b0707685d22434faff45" @@ -7796,7 +8162,7 @@ workerpool@^6.5.1: resolved "https://registry.yarnpkg.com/workerpool/-/workerpool-6.5.1.tgz#060f73b39d0caf97c6db64da004cd01b4c099544" integrity sha512-Fs4dNYcsdpYSAfVxhnl1L5zTksjvOJxtC5hzMNl+1t9B8hTJTdKDyZ5ju7ztgPy+ft9tBFXoOlDNiOT9WUXZlA== -"wrap-ansi-cjs@npm:wrap-ansi@^7.0.0": +"wrap-ansi-cjs@npm:wrap-ansi@^7.0.0", wrap-ansi@^7.0.0: version "7.0.0" resolved "https://registry.yarnpkg.com/wrap-ansi/-/wrap-ansi-7.0.0.tgz#67e145cff510a6a6984bdf1152911d69d2eb9e43" integrity sha512-YVGIj2kamLSTxw6NsZjoBxfSwsn0ycdesmc4p+Q21c5zPuZ1pl+NfxVdxPtdHvmNVOQ6XSYG4AUtyt/Fi7D16Q== @@ -7814,15 +8180,6 @@ wrap-ansi@^6.0.1, wrap-ansi@^6.2.0: string-width "^4.1.0" strip-ansi "^6.0.0" -wrap-ansi@^7.0.0: - version "7.0.0" - resolved "https://registry.yarnpkg.com/wrap-ansi/-/wrap-ansi-7.0.0.tgz#67e145cff510a6a6984bdf1152911d69d2eb9e43" - integrity sha512-YVGIj2kamLSTxw6NsZjoBxfSwsn0ycdesmc4p+Q21c5zPuZ1pl+NfxVdxPtdHvmNVOQ6XSYG4AUtyt/Fi7D16Q== - dependencies: - ansi-styles "^4.0.0" - string-width "^4.1.0" - strip-ansi "^6.0.0" - wrap-ansi@^8.1.0: version "8.1.0" resolved "https://registry.yarnpkg.com/wrap-ansi/-/wrap-ansi-8.1.0.tgz#56dc22368ee570face1b49819975d9b9a5ead214"