From 552ecb85db94b42b7689c92f9c58d4ec160e996e Mon Sep 17 00:00:00 2001 From: beer-1 Date: Fri, 8 Nov 2024 21:40:07 +0900 Subject: [PATCH] fix upgrade --- x/evm/contracts/erc20/ERC20.go | 70 +++++++++---------- x/evm/contracts/erc20_factory/ERC20Factory.go | 2 +- x/evm/contracts/erc20_wrapper/ERC20Wrapper.go | 2 +- 3 files changed, 37 insertions(+), 37 deletions(-) diff --git a/x/evm/contracts/erc20/ERC20.go b/x/evm/contracts/erc20/ERC20.go index ee2741f..fd0f578 100644 --- a/x/evm/contracts/erc20/ERC20.go +++ b/x/evm/contracts/erc20/ERC20.go @@ -31,8 +31,8 @@ var ( // Erc20MetaData contains all meta data concerning the Erc20 contract. var Erc20MetaData = &bind.MetaData{ - ABI: "[{\"inputs\":[{\"internalType\":\"string\",\"name\":\"_name\",\"type\":\"string\"},{\"internalType\":\"string\",\"name\":\"_symbol\",\"type\":\"string\"},{\"internalType\":\"uint8\",\"name\":\"_decimals\",\"type\":\"uint8\"},{\"internalType\":\"bool\",\"name\":\"metadataSealed\",\"type\":\"bool\"}],\"stateMutability\":\"nonpayable\",\"type\":\"constructor\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"owner\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"spender\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"value\",\"type\":\"uint256\"}],\"name\":\"Approval\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"previousOwner\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"newOwner\",\"type\":\"address\"}],\"name\":\"OwnershipTransferred\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":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\"},{\"inputs\":[],\"name\":\"_metadataSealed\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"\",\"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\":\"\",\"type\":\"address\"}],\"name\":\"balanceOf\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"amount\",\"type\":\"uint256\"}],\"name\":\"burn\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"from\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"amount\",\"type\":\"uint256\"}],\"name\":\"burnFrom\",\"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\":\"mint\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"name\",\"outputs\":[{\"internalType\":\"string\",\"name\":\"\",\"type\":\"string\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"owner\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"from\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"amount\",\"type\":\"uint256\"}],\"name\":\"sudoBurn\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"to\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"amount\",\"type\":\"uint256\"}],\"name\":\"sudoMint\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"sender\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"recipient\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"amount\",\"type\":\"uint256\"}],\"name\":\"sudoTransfer\",\"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\":\"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\":\"address\",\"name\":\"newOwner\",\"type\":\"address\"}],\"name\":\"transferOwnership\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"string\",\"name\":\"_name\",\"type\":\"string\"},{\"internalType\":\"string\",\"name\":\"_symbol\",\"type\":\"string\"},{\"internalType\":\"uint8\",\"name\":\"_decimals\",\"type\":\"uint8\"}],\"name\":\"updateMetadata\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"}]", - Bin: "0x608060405234801561000f575f80fd5b50604051612c63380380612c6383398181016040528101906100319190610284565b335f806101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550836003908161007f919061052d565b50826004908161008f919061052d565b508160055f6101000a81548160ff021916908360ff1602179055508060075f6101000a81548160ff021916908315150217905550505050506105fc565b5f604051905090565b5f80fd5b5f80fd5b5f80fd5b5f80fd5b5f601f19601f8301169050919050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52604160045260245ffd5b61012b826100e5565b810181811067ffffffffffffffff8211171561014a576101496100f5565b5b80604052505050565b5f61015c6100cc565b90506101688282610122565b919050565b5f67ffffffffffffffff821115610187576101866100f5565b5b610190826100e5565b9050602081019050919050565b8281835e5f83830152505050565b5f6101bd6101b88461016d565b610153565b9050828152602081018484840111156101d9576101d86100e1565b5b6101e484828561019d565b509392505050565b5f82601f830112610200576101ff6100dd565b5b81516102108482602086016101ab565b91505092915050565b5f60ff82169050919050565b61022e81610219565b8114610238575f80fd5b50565b5f8151905061024981610225565b92915050565b5f8115159050919050565b6102638161024f565b811461026d575f80fd5b50565b5f8151905061027e8161025a565b92915050565b5f805f806080858703121561029c5761029b6100d5565b5b5f85015167ffffffffffffffff8111156102b9576102b86100d9565b5b6102c5878288016101ec565b945050602085015167ffffffffffffffff8111156102e6576102e56100d9565b5b6102f2878288016101ec565b93505060406103038782880161023b565b925050606061031487828801610270565b91505092959194509250565b5f81519050919050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52602260045260245ffd5b5f600282049050600182168061036e57607f821691505b6020821081036103815761038061032a565b5b50919050565b5f819050815f5260205f209050919050565b5f6020601f8301049050919050565b5f82821b905092915050565b5f600883026103e37fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff826103a8565b6103ed86836103a8565b95508019841693508086168417925050509392505050565b5f819050919050565b5f819050919050565b5f61043161042c61042784610405565b61040e565b610405565b9050919050565b5f819050919050565b61044a83610417565b61045e61045682610438565b8484546103b4565b825550505050565b5f90565b610472610466565b61047d818484610441565b505050565b5b818110156104a0576104955f8261046a565b600181019050610483565b5050565b601f8211156104e5576104b681610387565b6104bf84610399565b810160208510156104ce578190505b6104e26104da85610399565b830182610482565b50505b505050565b5f82821c905092915050565b5f6105055f19846008026104ea565b1980831691505092915050565b5f61051d83836104f6565b9150826002028217905092915050565b61053682610320565b67ffffffffffffffff81111561054f5761054e6100f5565b5b6105598254610357565b6105648282856104a4565b5f60209050601f831160018114610595575f8415610583578287015190505b61058d8582610512565b8655506105f4565b601f1984166105a386610387565b5f5b828110156105ca578489015182556001820191506020850194506020810190506105a5565b868310156105e757848901516105e3601f8916826104f6565b8355505b6001600288020188555050505b505050505050565b61265a806106095f395ff3fe608060405234801561000f575f80fd5b506004361061012a575f3560e01c80636312013f116100ab5780639f1914841161006f5780639f19148414610342578063a9059cbb1461035e578063dd62ed3e1461038e578063f2fde38b146103be578063fe1195ec146103da5761012a565b80636312013f1461028857806370a08231146102a657806379cc6790146102d65780638da5cb5b1461030657806395d89b41146103245761012a565b806323b872dd116100f257806323b872dd146101e65780632d688ca814610216578063313ce5671461023257806340c10f191461025057806342966c681461026c5761012a565b806301ffc9a71461012e57806306fdde031461015e578063095ea7b31461017c57806318160ddd146101ac5780631988513b146101ca575b5f80fd5b61014860048036038101906101439190611880565b6103f6565b60405161015591906118c5565b60405180910390f35b61016661046f565b604051610173919061194e565b60405180910390f35b610196600480360381019061019191906119fb565b6104fb565b6040516101a391906118c5565b60405180910390f35b6101b46105e8565b6040516101c19190611a48565b60405180910390f35b6101e460048036038101906101df9190611a61565b6105ee565b005b61020060048036038101906101fb9190611a61565b61066d565b60405161020d91906118c5565b60405180910390f35b610230600480360381019061022b91906119fb565b610888565b005b61023a610905565b6040516102479190611acc565b60405180910390f35b61026a600480360381019061026591906119fb565b610917565b005b61028660048036038101906102819190611ae5565b610a36565b005b610290610afe565b60405161029d91906118c5565b60405180910390f35b6102c060048036038101906102bb9190611b10565b610b10565b6040516102cd9190611a48565b60405180910390f35b6102f060048036038101906102eb91906119fb565b610b25565b6040516102fd91906118c5565b60405180910390f35b61030e610d3e565b60405161031b9190611b4a565b60405180910390f35b61032c610d61565b604051610339919061194e565b60405180910390f35b61035c60048036038101906103579190611cb9565b610ded565b005b610378600480360381019061037391906119fb565b610f4d565b60405161038591906118c5565b60405180910390f35b6103a860048036038101906103a39190611d41565b61101e565b6040516103b59190611a48565b60405180910390f35b6103d860048036038101906103d39190611b10565b61103e565b005b6103f460048036038101906103ef91906119fb565b611186565b005b5f7f8da6da19000000000000000000000000000000000000000000000000000000007bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916827bffffffffffffffffffffffffffffffffffffffffffffffffffffffff19161480610468575061046782611203565b5b9050919050565b6003805461047c90611dac565b80601f01602080910402602001604051908101604052809291908181526020018280546104a890611dac565b80156104f35780601f106104ca576101008083540402835291602001916104f3565b820191905f5260205f20905b8154815290600101906020018083116104d657829003601f168201915b505050505081565b5f8160025f3373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f8573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f20819055508273ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925846040516105d69190611a48565b60405180910390a36001905092915050565b60065481565b600173ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff161461065d576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161065490611e26565b60405180910390fd5b61066883838361126c565b505050565b5f8260f173ffffffffffffffffffffffffffffffffffffffff1663f2af9ac9826040518263ffffffff1660e01b81526004016106a99190611b4a565b602060405180830381865afa1580156106c4573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906106e89190611e6e565b15610728576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161071f90611f09565b60405180910390fd5b8260025f8773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f3373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205410156107e3576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016107da90611f97565b60405180910390fd5b8260025f8773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f3373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f82825461086a9190611fe2565b9250508190555061087c85858561126c565b60019150509392505050565b600173ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff16146108f7576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016108ee90611e26565b60405180910390fd5b61090182826114f7565b5050565b60055f9054906101000a900460ff1681565b8160f173ffffffffffffffffffffffffffffffffffffffff1663f2af9ac9826040518263ffffffff1660e01b81526004016109529190611b4a565b602060405180830381865afa15801561096d573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906109919190611e6e565b156109d1576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016109c89061205f565b60405180910390fd5b5f8054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff1614610a27575f80fd5b610a3183836114f7565b505050565b3360f173ffffffffffffffffffffffffffffffffffffffff166360dc402f826040518263ffffffff1660e01b8152600401610a719190611b4a565b602060405180830381865afa158015610a8c573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190610ab09190611e6e565b15610af0576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610ae7906120c7565b60405180910390fd5b610afa33836116c6565b5050565b60075f9054906101000a900460ff1681565b6001602052805f5260405f205f915090505481565b5f8260f173ffffffffffffffffffffffffffffffffffffffff166360dc402f826040518263ffffffff1660e01b8152600401610b619190611b4a565b602060405180830381865afa158015610b7c573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190610ba09190611e6e565b15610be0576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610bd7906120c7565b60405180910390fd5b8260025f8673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f3373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f20541015610c9b576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610c9290612155565b60405180910390fd5b8260025f8673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f3373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f828254610d229190611fe2565b92505081905550610d3384846116c6565b600191505092915050565b5f8054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b60048054610d6e90611dac565b80601f0160208091040260200160405190810160405280929190818152602001828054610d9a90611dac565b8015610de55780601f10610dbc57610100808354040283529160200191610de5565b820191905f5260205f20905b815481529060010190602001808311610dc857829003601f168201915b505050505081565b60f173ffffffffffffffffffffffffffffffffffffffff166301116078336040518263ffffffff1660e01b8152600401610e279190611b4a565b602060405180830381865afa158015610e42573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190610e669190611e6e565b610ea5576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610e9c906121e3565b60405180910390fd5b60075f9054906101000a900460ff1615610ef4576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610eeb9061224b565b60405180910390fd5b8260039081610f039190612406565b508160049081610f139190612406565b508060055f6101000a81548160ff021916908360ff160217905550600160075f6101000a81548160ff021916908315150217905550505050565b5f8260f173ffffffffffffffffffffffffffffffffffffffff1663f2af9ac9826040518263ffffffff1660e01b8152600401610f899190611b4a565b602060405180830381865afa158015610fa4573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190610fc89190611e6e565b15611008576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610fff90611f09565b60405180910390fd5b61101333858561126c565b600191505092915050565b6002602052815f5260405f20602052805f5260405f205f91509150505481565b5f8054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff1614611094575f80fd5b5f73ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff16036110cb575f80fd5b8073ffffffffffffffffffffffffffffffffffffffff165f8054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a3805f806101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555050565b600173ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff16146111f5576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016111ec90611e26565b60405180910390fd5b6111ff82826116c6565b5050565b5f7f01ffc9a7000000000000000000000000000000000000000000000000000000007bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916827bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916149050919050565b8160f273ffffffffffffffffffffffffffffffffffffffff16634e25ab64826040518263ffffffff1660e01b81526004016112a79190611b4a565b602060405180830381865afa1580156112c2573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906112e69190611e6e565b6113665760f273ffffffffffffffffffffffffffffffffffffffff1663ceeae52a826040518263ffffffff1660e01b81526004016113249190611b4a565b6020604051808303815f875af1158015611340573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906113649190611e6e565b505b8160015f8673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205410156113e6576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016113dd90612545565b60405180910390fd5b8160015f8673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f8282546114329190611fe2565b925050819055508160015f8573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f8282546114859190612563565b925050819055508273ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef846040516114e99190611a48565b60405180910390a350505050565b8160f273ffffffffffffffffffffffffffffffffffffffff16634e25ab64826040518263ffffffff1660e01b81526004016115329190611b4a565b602060405180830381865afa15801561154d573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906115719190611e6e565b6115f15760f273ffffffffffffffffffffffffffffffffffffffff1663ceeae52a826040518263ffffffff1660e01b81526004016115af9190611b4a565b6020604051808303815f875af11580156115cb573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906115ef9190611e6e565b505b8160015f8573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f82825461163d9190612563565b925050819055508160065f8282546116559190612563565b925050819055508273ffffffffffffffffffffffffffffffffffffffff165f73ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef846040516116b99190611a48565b60405180910390a3505050565b8060015f8473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f20541015611746576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161173d90612606565b60405180910390fd5b8060015f8473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f8282546117929190611fe2565b925050819055508060065f8282546117aa9190611fe2565b925050819055505f73ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef8360405161180e9190611a48565b60405180910390a35050565b5f604051905090565b5f80fd5b5f80fd5b5f7fffffffff0000000000000000000000000000000000000000000000000000000082169050919050565b61185f8161182b565b8114611869575f80fd5b50565b5f8135905061187a81611856565b92915050565b5f6020828403121561189557611894611823565b5b5f6118a28482850161186c565b91505092915050565b5f8115159050919050565b6118bf816118ab565b82525050565b5f6020820190506118d85f8301846118b6565b92915050565b5f81519050919050565b5f82825260208201905092915050565b8281835e5f83830152505050565b5f601f19601f8301169050919050565b5f611920826118de565b61192a81856118e8565b935061193a8185602086016118f8565b61194381611906565b840191505092915050565b5f6020820190508181035f8301526119668184611916565b905092915050565b5f73ffffffffffffffffffffffffffffffffffffffff82169050919050565b5f6119978261196e565b9050919050565b6119a78161198d565b81146119b1575f80fd5b50565b5f813590506119c28161199e565b92915050565b5f819050919050565b6119da816119c8565b81146119e4575f80fd5b50565b5f813590506119f5816119d1565b92915050565b5f8060408385031215611a1157611a10611823565b5b5f611a1e858286016119b4565b9250506020611a2f858286016119e7565b9150509250929050565b611a42816119c8565b82525050565b5f602082019050611a5b5f830184611a39565b92915050565b5f805f60608486031215611a7857611a77611823565b5b5f611a85868287016119b4565b9350506020611a96868287016119b4565b9250506040611aa7868287016119e7565b9150509250925092565b5f60ff82169050919050565b611ac681611ab1565b82525050565b5f602082019050611adf5f830184611abd565b92915050565b5f60208284031215611afa57611af9611823565b5b5f611b07848285016119e7565b91505092915050565b5f60208284031215611b2557611b24611823565b5b5f611b32848285016119b4565b91505092915050565b611b448161198d565b82525050565b5f602082019050611b5d5f830184611b3b565b92915050565b5f80fd5b5f80fd5b7f4e487b71000000000000000000000000000000000000000000000000000000005f52604160045260245ffd5b611ba182611906565b810181811067ffffffffffffffff82111715611bc057611bbf611b6b565b5b80604052505050565b5f611bd261181a565b9050611bde8282611b98565b919050565b5f67ffffffffffffffff821115611bfd57611bfc611b6b565b5b611c0682611906565b9050602081019050919050565b828183375f83830152505050565b5f611c33611c2e84611be3565b611bc9565b905082815260208101848484011115611c4f57611c4e611b67565b5b611c5a848285611c13565b509392505050565b5f82601f830112611c7657611c75611b63565b5b8135611c86848260208601611c21565b91505092915050565b611c9881611ab1565b8114611ca2575f80fd5b50565b5f81359050611cb381611c8f565b92915050565b5f805f60608486031215611cd057611ccf611823565b5b5f84013567ffffffffffffffff811115611ced57611cec611827565b5b611cf986828701611c62565b935050602084013567ffffffffffffffff811115611d1a57611d19611827565b5b611d2686828701611c62565b9250506040611d3786828701611ca5565b9150509250925092565b5f8060408385031215611d5757611d56611823565b5b5f611d64858286016119b4565b9250506020611d75858286016119b4565b9150509250929050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52602260045260245ffd5b5f6002820490506001821680611dc357607f821691505b602082108103611dd657611dd5611d7f565b5b50919050565b7f45524332303a2063616c6c6572206973206e6f742074686520636861696e00005f82015250565b5f611e10601e836118e8565b9150611e1b82611ddc565b602082019050919050565b5f6020820190508181035f830152611e3d81611e04565b9050919050565b611e4d816118ab565b8114611e57575f80fd5b50565b5f81519050611e6881611e44565b92915050565b5f60208284031215611e8357611e82611823565b5b5f611e9084828501611e5a565b91505092915050565b7f45524332303a207472616e7366657220746f20626c6f636b65642061646472655f8201527f7373000000000000000000000000000000000000000000000000000000000000602082015250565b5f611ef36022836118e8565b9150611efe82611e99565b604082019050919050565b5f6020820190508181035f830152611f2081611ee7565b9050919050565b7f45524332303a207472616e7366657220616d6f756e74206578636565647320615f8201527f6c6c6f77616e6365000000000000000000000000000000000000000000000000602082015250565b5f611f816028836118e8565b9150611f8c82611f27565b604082019050919050565b5f6020820190508181035f830152611fae81611f75565b9050919050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52601160045260245ffd5b5f611fec826119c8565b9150611ff7836119c8565b925082820390508181111561200f5761200e611fb5565b5b92915050565b7f45524332303a206d696e7420746f20626c6f636b6564206164647265737300005f82015250565b5f612049601e836118e8565b915061205482612015565b602082019050919050565b5f6020820190508181035f8301526120768161203d565b9050919050565b7f45524332303a206275726e2066726f6d206d6f64756c652061646472657373005f82015250565b5f6120b1601f836118e8565b91506120bc8261207d565b602082019050919050565b5f6020820190508181035f8301526120de816120a5565b9050919050565b7f45524332303a206275726e20616d6f756e74206578636565647320616c6c6f775f8201527f616e636500000000000000000000000000000000000000000000000000000000602082015250565b5f61213f6024836118e8565b915061214a826120e5565b604082019050919050565b5f6020820190508181035f83015261216c81612133565b9050919050565b7f45524332303a2063616c6c6572206973206e6f742074686520617574686f72695f8201527f7479000000000000000000000000000000000000000000000000000000000000602082015250565b5f6121cd6022836118e8565b91506121d882612173565b604082019050919050565b5f6020820190508181035f8301526121fa816121c1565b9050919050565b7f45524332303a206d65746164617461207365616c6564000000000000000000005f82015250565b5f6122356016836118e8565b915061224082612201565b602082019050919050565b5f6020820190508181035f83015261226281612229565b9050919050565b5f819050815f5260205f209050919050565b5f6020601f8301049050919050565b5f82821b905092915050565b5f600883026122c57fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff8261228a565b6122cf868361228a565b95508019841693508086168417925050509392505050565b5f819050919050565b5f61230a612305612300846119c8565b6122e7565b6119c8565b9050919050565b5f819050919050565b612323836122f0565b61233761232f82612311565b848454612296565b825550505050565b5f90565b61234b61233f565b61235681848461231a565b505050565b5b818110156123795761236e5f82612343565b60018101905061235c565b5050565b601f8211156123be5761238f81612269565b6123988461227b565b810160208510156123a7578190505b6123bb6123b38561227b565b83018261235b565b50505b505050565b5f82821c905092915050565b5f6123de5f19846008026123c3565b1980831691505092915050565b5f6123f683836123cf565b9150826002028217905092915050565b61240f826118de565b67ffffffffffffffff81111561242857612427611b6b565b5b6124328254611dac565b61243d82828561237d565b5f60209050601f83116001811461246e575f841561245c578287015190505b61246685826123eb565b8655506124cd565b601f19841661247c86612269565b5f5b828110156124a35784890151825560018201915060208501945060208101905061247e565b868310156124c057848901516124bc601f8916826123cf565b8355505b6001600288020188555050505b505050505050565b7f45524332303a207472616e7366657220616d6f756e74206578636565647320625f8201527f616c616e63650000000000000000000000000000000000000000000000000000602082015250565b5f61252f6026836118e8565b915061253a826124d5565b604082019050919050565b5f6020820190508181035f83015261255c81612523565b9050919050565b5f61256d826119c8565b9150612578836119c8565b92508282019050808211156125905761258f611fb5565b5b92915050565b7f45524332303a206275726e20616d6f756e7420657863656564732062616c616e5f8201527f6365000000000000000000000000000000000000000000000000000000000000602082015250565b5f6125f06022836118e8565b91506125fb82612596565b604082019050919050565b5f6020820190508181035f83015261261d816125e4565b905091905056fea264697066735822122052cf15d32a984b09e97731db92fec90f8955cbb2a6d66c568f7e9f5043fdfa8864736f6c63430008190033", + ABI: "[{\"inputs\":[{\"internalType\":\"string\",\"name\":\"_name\",\"type\":\"string\"},{\"internalType\":\"string\",\"name\":\"_symbol\",\"type\":\"string\"},{\"internalType\":\"uint8\",\"name\":\"_decimals\",\"type\":\"uint8\"},{\"internalType\":\"bool\",\"name\":\"_metadataSealed\",\"type\":\"bool\"}],\"stateMutability\":\"nonpayable\",\"type\":\"constructor\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"owner\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"spender\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"value\",\"type\":\"uint256\"}],\"name\":\"Approval\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"previousOwner\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"newOwner\",\"type\":\"address\"}],\"name\":\"OwnershipTransferred\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":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\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"\",\"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\":\"\",\"type\":\"address\"}],\"name\":\"balanceOf\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"amount\",\"type\":\"uint256\"}],\"name\":\"burn\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"from\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"amount\",\"type\":\"uint256\"}],\"name\":\"burnFrom\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"decimals\",\"outputs\":[{\"internalType\":\"uint8\",\"name\":\"\",\"type\":\"uint8\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"metadataSealed\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"to\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"amount\",\"type\":\"uint256\"}],\"name\":\"mint\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"name\",\"outputs\":[{\"internalType\":\"string\",\"name\":\"\",\"type\":\"string\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"owner\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"from\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"amount\",\"type\":\"uint256\"}],\"name\":\"sudoBurn\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"to\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"amount\",\"type\":\"uint256\"}],\"name\":\"sudoMint\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"sender\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"recipient\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"amount\",\"type\":\"uint256\"}],\"name\":\"sudoTransfer\",\"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\":\"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\":\"address\",\"name\":\"newOwner\",\"type\":\"address\"}],\"name\":\"transferOwnership\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"string\",\"name\":\"_name\",\"type\":\"string\"},{\"internalType\":\"string\",\"name\":\"_symbol\",\"type\":\"string\"},{\"internalType\":\"uint8\",\"name\":\"_decimals\",\"type\":\"uint8\"}],\"name\":\"updateMetadata\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"}]", + Bin: "0x608060405234801561000f575f80fd5b50604051612c63380380612c6383398181016040528101906100319190610284565b335f806101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550836003908161007f919061052d565b50826004908161008f919061052d565b508160055f6101000a81548160ff021916908360ff1602179055508060075f6101000a81548160ff021916908315150217905550505050506105fc565b5f604051905090565b5f80fd5b5f80fd5b5f80fd5b5f80fd5b5f601f19601f8301169050919050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52604160045260245ffd5b61012b826100e5565b810181811067ffffffffffffffff8211171561014a576101496100f5565b5b80604052505050565b5f61015c6100cc565b90506101688282610122565b919050565b5f67ffffffffffffffff821115610187576101866100f5565b5b610190826100e5565b9050602081019050919050565b8281835e5f83830152505050565b5f6101bd6101b88461016d565b610153565b9050828152602081018484840111156101d9576101d86100e1565b5b6101e484828561019d565b509392505050565b5f82601f830112610200576101ff6100dd565b5b81516102108482602086016101ab565b91505092915050565b5f60ff82169050919050565b61022e81610219565b8114610238575f80fd5b50565b5f8151905061024981610225565b92915050565b5f8115159050919050565b6102638161024f565b811461026d575f80fd5b50565b5f8151905061027e8161025a565b92915050565b5f805f806080858703121561029c5761029b6100d5565b5b5f85015167ffffffffffffffff8111156102b9576102b86100d9565b5b6102c5878288016101ec565b945050602085015167ffffffffffffffff8111156102e6576102e56100d9565b5b6102f2878288016101ec565b93505060406103038782880161023b565b925050606061031487828801610270565b91505092959194509250565b5f81519050919050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52602260045260245ffd5b5f600282049050600182168061036e57607f821691505b6020821081036103815761038061032a565b5b50919050565b5f819050815f5260205f209050919050565b5f6020601f8301049050919050565b5f82821b905092915050565b5f600883026103e37fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff826103a8565b6103ed86836103a8565b95508019841693508086168417925050509392505050565b5f819050919050565b5f819050919050565b5f61043161042c61042784610405565b61040e565b610405565b9050919050565b5f819050919050565b61044a83610417565b61045e61045682610438565b8484546103b4565b825550505050565b5f90565b610472610466565b61047d818484610441565b505050565b5b818110156104a0576104955f8261046a565b600181019050610483565b5050565b601f8211156104e5576104b681610387565b6104bf84610399565b810160208510156104ce578190505b6104e26104da85610399565b830182610482565b50505b505050565b5f82821c905092915050565b5f6105055f19846008026104ea565b1980831691505092915050565b5f61051d83836104f6565b9150826002028217905092915050565b61053682610320565b67ffffffffffffffff81111561054f5761054e6100f5565b5b6105598254610357565b6105648282856104a4565b5f60209050601f831160018114610595575f8415610583578287015190505b61058d8582610512565b8655506105f4565b601f1984166105a386610387565b5f5b828110156105ca578489015182556001820191506020850194506020810190506105a5565b868310156105e757848901516105e3601f8916826104f6565b8355505b6001600288020188555050505b505050505050565b61265a806106095f395ff3fe608060405234801561000f575f80fd5b506004361061012a575f3560e01c806370a08231116100ab578063a9059cbb1161006f578063a9059cbb14610340578063dd62ed3e14610370578063f2fde38b146103a0578063f5daf8ff146103bc578063fe1195ec146103da5761012a565b806370a082311461028857806379cc6790146102b85780638da5cb5b146102e857806395d89b41146103065780639f191484146103245761012a565b806323b872dd116100f257806323b872dd146101e65780632d688ca814610216578063313ce5671461023257806340c10f191461025057806342966c681461026c5761012a565b806301ffc9a71461012e57806306fdde031461015e578063095ea7b31461017c57806318160ddd146101ac5780631988513b146101ca575b5f80fd5b61014860048036038101906101439190611880565b6103f6565b60405161015591906118c5565b60405180910390f35b61016661046f565b604051610173919061194e565b60405180910390f35b610196600480360381019061019191906119fb565b6104fb565b6040516101a391906118c5565b60405180910390f35b6101b46105e8565b6040516101c19190611a48565b60405180910390f35b6101e460048036038101906101df9190611a61565b6105ee565b005b61020060048036038101906101fb9190611a61565b61066d565b60405161020d91906118c5565b60405180910390f35b610230600480360381019061022b91906119fb565b610888565b005b61023a610905565b6040516102479190611acc565b60405180910390f35b61026a600480360381019061026591906119fb565b610917565b005b61028660048036038101906102819190611ae5565b610a36565b005b6102a2600480360381019061029d9190611b10565b610afe565b6040516102af9190611a48565b60405180910390f35b6102d260048036038101906102cd91906119fb565b610b13565b6040516102df91906118c5565b60405180910390f35b6102f0610d2c565b6040516102fd9190611b4a565b60405180910390f35b61030e610d4f565b60405161031b919061194e565b60405180910390f35b61033e60048036038101906103399190611cb9565b610ddb565b005b61035a600480360381019061035591906119fb565b610f3b565b60405161036791906118c5565b60405180910390f35b61038a60048036038101906103859190611d41565b61100c565b6040516103979190611a48565b60405180910390f35b6103ba60048036038101906103b59190611b10565b61102c565b005b6103c4611174565b6040516103d191906118c5565b60405180910390f35b6103f460048036038101906103ef91906119fb565b611186565b005b5f7f8da6da19000000000000000000000000000000000000000000000000000000007bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916827bffffffffffffffffffffffffffffffffffffffffffffffffffffffff19161480610468575061046782611203565b5b9050919050565b6003805461047c90611dac565b80601f01602080910402602001604051908101604052809291908181526020018280546104a890611dac565b80156104f35780601f106104ca576101008083540402835291602001916104f3565b820191905f5260205f20905b8154815290600101906020018083116104d657829003601f168201915b505050505081565b5f8160025f3373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f8573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f20819055508273ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925846040516105d69190611a48565b60405180910390a36001905092915050565b60065481565b600173ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff161461065d576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161065490611e26565b60405180910390fd5b61066883838361126c565b505050565b5f8260f173ffffffffffffffffffffffffffffffffffffffff1663f2af9ac9826040518263ffffffff1660e01b81526004016106a99190611b4a565b602060405180830381865afa1580156106c4573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906106e89190611e6e565b15610728576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161071f90611f09565b60405180910390fd5b8260025f8773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f3373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205410156107e3576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016107da90611f97565b60405180910390fd5b8260025f8773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f3373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f82825461086a9190611fe2565b9250508190555061087c85858561126c565b60019150509392505050565b600173ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff16146108f7576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016108ee90611e26565b60405180910390fd5b61090182826114f7565b5050565b60055f9054906101000a900460ff1681565b8160f173ffffffffffffffffffffffffffffffffffffffff1663f2af9ac9826040518263ffffffff1660e01b81526004016109529190611b4a565b602060405180830381865afa15801561096d573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906109919190611e6e565b156109d1576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016109c89061205f565b60405180910390fd5b5f8054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff1614610a27575f80fd5b610a3183836114f7565b505050565b3360f173ffffffffffffffffffffffffffffffffffffffff166360dc402f826040518263ffffffff1660e01b8152600401610a719190611b4a565b602060405180830381865afa158015610a8c573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190610ab09190611e6e565b15610af0576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610ae7906120c7565b60405180910390fd5b610afa33836116c6565b5050565b6001602052805f5260405f205f915090505481565b5f8260f173ffffffffffffffffffffffffffffffffffffffff166360dc402f826040518263ffffffff1660e01b8152600401610b4f9190611b4a565b602060405180830381865afa158015610b6a573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190610b8e9190611e6e565b15610bce576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610bc5906120c7565b60405180910390fd5b8260025f8673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f3373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f20541015610c89576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610c8090612155565b60405180910390fd5b8260025f8673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f3373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f828254610d109190611fe2565b92505081905550610d2184846116c6565b600191505092915050565b5f8054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b60048054610d5c90611dac565b80601f0160208091040260200160405190810160405280929190818152602001828054610d8890611dac565b8015610dd35780601f10610daa57610100808354040283529160200191610dd3565b820191905f5260205f20905b815481529060010190602001808311610db657829003601f168201915b505050505081565b60f173ffffffffffffffffffffffffffffffffffffffff166301116078336040518263ffffffff1660e01b8152600401610e159190611b4a565b602060405180830381865afa158015610e30573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190610e549190611e6e565b610e93576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610e8a906121e3565b60405180910390fd5b60075f9054906101000a900460ff1615610ee2576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610ed99061224b565b60405180910390fd5b8260039081610ef19190612406565b508160049081610f019190612406565b508060055f6101000a81548160ff021916908360ff160217905550600160075f6101000a81548160ff021916908315150217905550505050565b5f8260f173ffffffffffffffffffffffffffffffffffffffff1663f2af9ac9826040518263ffffffff1660e01b8152600401610f779190611b4a565b602060405180830381865afa158015610f92573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190610fb69190611e6e565b15610ff6576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610fed90611f09565b60405180910390fd5b61100133858561126c565b600191505092915050565b6002602052815f5260405f20602052805f5260405f205f91509150505481565b5f8054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff1614611082575f80fd5b5f73ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff16036110b9575f80fd5b8073ffffffffffffffffffffffffffffffffffffffff165f8054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a3805f806101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555050565b60075f9054906101000a900460ff1681565b600173ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff16146111f5576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016111ec90611e26565b60405180910390fd5b6111ff82826116c6565b5050565b5f7f01ffc9a7000000000000000000000000000000000000000000000000000000007bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916827bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916149050919050565b8160f273ffffffffffffffffffffffffffffffffffffffff16634e25ab64826040518263ffffffff1660e01b81526004016112a79190611b4a565b602060405180830381865afa1580156112c2573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906112e69190611e6e565b6113665760f273ffffffffffffffffffffffffffffffffffffffff1663ceeae52a826040518263ffffffff1660e01b81526004016113249190611b4a565b6020604051808303815f875af1158015611340573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906113649190611e6e565b505b8160015f8673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205410156113e6576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016113dd90612545565b60405180910390fd5b8160015f8673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f8282546114329190611fe2565b925050819055508160015f8573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f8282546114859190612563565b925050819055508273ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef846040516114e99190611a48565b60405180910390a350505050565b8160f273ffffffffffffffffffffffffffffffffffffffff16634e25ab64826040518263ffffffff1660e01b81526004016115329190611b4a565b602060405180830381865afa15801561154d573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906115719190611e6e565b6115f15760f273ffffffffffffffffffffffffffffffffffffffff1663ceeae52a826040518263ffffffff1660e01b81526004016115af9190611b4a565b6020604051808303815f875af11580156115cb573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906115ef9190611e6e565b505b8160015f8573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f82825461163d9190612563565b925050819055508160065f8282546116559190612563565b925050819055508273ffffffffffffffffffffffffffffffffffffffff165f73ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef846040516116b99190611a48565b60405180910390a3505050565b8060015f8473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f20541015611746576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161173d90612606565b60405180910390fd5b8060015f8473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f8282546117929190611fe2565b925050819055508060065f8282546117aa9190611fe2565b925050819055505f73ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef8360405161180e9190611a48565b60405180910390a35050565b5f604051905090565b5f80fd5b5f80fd5b5f7fffffffff0000000000000000000000000000000000000000000000000000000082169050919050565b61185f8161182b565b8114611869575f80fd5b50565b5f8135905061187a81611856565b92915050565b5f6020828403121561189557611894611823565b5b5f6118a28482850161186c565b91505092915050565b5f8115159050919050565b6118bf816118ab565b82525050565b5f6020820190506118d85f8301846118b6565b92915050565b5f81519050919050565b5f82825260208201905092915050565b8281835e5f83830152505050565b5f601f19601f8301169050919050565b5f611920826118de565b61192a81856118e8565b935061193a8185602086016118f8565b61194381611906565b840191505092915050565b5f6020820190508181035f8301526119668184611916565b905092915050565b5f73ffffffffffffffffffffffffffffffffffffffff82169050919050565b5f6119978261196e565b9050919050565b6119a78161198d565b81146119b1575f80fd5b50565b5f813590506119c28161199e565b92915050565b5f819050919050565b6119da816119c8565b81146119e4575f80fd5b50565b5f813590506119f5816119d1565b92915050565b5f8060408385031215611a1157611a10611823565b5b5f611a1e858286016119b4565b9250506020611a2f858286016119e7565b9150509250929050565b611a42816119c8565b82525050565b5f602082019050611a5b5f830184611a39565b92915050565b5f805f60608486031215611a7857611a77611823565b5b5f611a85868287016119b4565b9350506020611a96868287016119b4565b9250506040611aa7868287016119e7565b9150509250925092565b5f60ff82169050919050565b611ac681611ab1565b82525050565b5f602082019050611adf5f830184611abd565b92915050565b5f60208284031215611afa57611af9611823565b5b5f611b07848285016119e7565b91505092915050565b5f60208284031215611b2557611b24611823565b5b5f611b32848285016119b4565b91505092915050565b611b448161198d565b82525050565b5f602082019050611b5d5f830184611b3b565b92915050565b5f80fd5b5f80fd5b7f4e487b71000000000000000000000000000000000000000000000000000000005f52604160045260245ffd5b611ba182611906565b810181811067ffffffffffffffff82111715611bc057611bbf611b6b565b5b80604052505050565b5f611bd261181a565b9050611bde8282611b98565b919050565b5f67ffffffffffffffff821115611bfd57611bfc611b6b565b5b611c0682611906565b9050602081019050919050565b828183375f83830152505050565b5f611c33611c2e84611be3565b611bc9565b905082815260208101848484011115611c4f57611c4e611b67565b5b611c5a848285611c13565b509392505050565b5f82601f830112611c7657611c75611b63565b5b8135611c86848260208601611c21565b91505092915050565b611c9881611ab1565b8114611ca2575f80fd5b50565b5f81359050611cb381611c8f565b92915050565b5f805f60608486031215611cd057611ccf611823565b5b5f84013567ffffffffffffffff811115611ced57611cec611827565b5b611cf986828701611c62565b935050602084013567ffffffffffffffff811115611d1a57611d19611827565b5b611d2686828701611c62565b9250506040611d3786828701611ca5565b9150509250925092565b5f8060408385031215611d5757611d56611823565b5b5f611d64858286016119b4565b9250506020611d75858286016119b4565b9150509250929050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52602260045260245ffd5b5f6002820490506001821680611dc357607f821691505b602082108103611dd657611dd5611d7f565b5b50919050565b7f45524332303a2063616c6c6572206973206e6f742074686520636861696e00005f82015250565b5f611e10601e836118e8565b9150611e1b82611ddc565b602082019050919050565b5f6020820190508181035f830152611e3d81611e04565b9050919050565b611e4d816118ab565b8114611e57575f80fd5b50565b5f81519050611e6881611e44565b92915050565b5f60208284031215611e8357611e82611823565b5b5f611e9084828501611e5a565b91505092915050565b7f45524332303a207472616e7366657220746f20626c6f636b65642061646472655f8201527f7373000000000000000000000000000000000000000000000000000000000000602082015250565b5f611ef36022836118e8565b9150611efe82611e99565b604082019050919050565b5f6020820190508181035f830152611f2081611ee7565b9050919050565b7f45524332303a207472616e7366657220616d6f756e74206578636565647320615f8201527f6c6c6f77616e6365000000000000000000000000000000000000000000000000602082015250565b5f611f816028836118e8565b9150611f8c82611f27565b604082019050919050565b5f6020820190508181035f830152611fae81611f75565b9050919050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52601160045260245ffd5b5f611fec826119c8565b9150611ff7836119c8565b925082820390508181111561200f5761200e611fb5565b5b92915050565b7f45524332303a206d696e7420746f20626c6f636b6564206164647265737300005f82015250565b5f612049601e836118e8565b915061205482612015565b602082019050919050565b5f6020820190508181035f8301526120768161203d565b9050919050565b7f45524332303a206275726e2066726f6d206d6f64756c652061646472657373005f82015250565b5f6120b1601f836118e8565b91506120bc8261207d565b602082019050919050565b5f6020820190508181035f8301526120de816120a5565b9050919050565b7f45524332303a206275726e20616d6f756e74206578636565647320616c6c6f775f8201527f616e636500000000000000000000000000000000000000000000000000000000602082015250565b5f61213f6024836118e8565b915061214a826120e5565b604082019050919050565b5f6020820190508181035f83015261216c81612133565b9050919050565b7f45524332303a2063616c6c6572206973206e6f742074686520617574686f72695f8201527f7479000000000000000000000000000000000000000000000000000000000000602082015250565b5f6121cd6022836118e8565b91506121d882612173565b604082019050919050565b5f6020820190508181035f8301526121fa816121c1565b9050919050565b7f45524332303a206d65746164617461207365616c6564000000000000000000005f82015250565b5f6122356016836118e8565b915061224082612201565b602082019050919050565b5f6020820190508181035f83015261226281612229565b9050919050565b5f819050815f5260205f209050919050565b5f6020601f8301049050919050565b5f82821b905092915050565b5f600883026122c57fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff8261228a565b6122cf868361228a565b95508019841693508086168417925050509392505050565b5f819050919050565b5f61230a612305612300846119c8565b6122e7565b6119c8565b9050919050565b5f819050919050565b612323836122f0565b61233761232f82612311565b848454612296565b825550505050565b5f90565b61234b61233f565b61235681848461231a565b505050565b5b818110156123795761236e5f82612343565b60018101905061235c565b5050565b601f8211156123be5761238f81612269565b6123988461227b565b810160208510156123a7578190505b6123bb6123b38561227b565b83018261235b565b50505b505050565b5f82821c905092915050565b5f6123de5f19846008026123c3565b1980831691505092915050565b5f6123f683836123cf565b9150826002028217905092915050565b61240f826118de565b67ffffffffffffffff81111561242857612427611b6b565b5b6124328254611dac565b61243d82828561237d565b5f60209050601f83116001811461246e575f841561245c578287015190505b61246685826123eb565b8655506124cd565b601f19841661247c86612269565b5f5b828110156124a35784890151825560018201915060208501945060208101905061247e565b868310156124c057848901516124bc601f8916826123cf565b8355505b6001600288020188555050505b505050505050565b7f45524332303a207472616e7366657220616d6f756e74206578636565647320625f8201527f616c616e63650000000000000000000000000000000000000000000000000000602082015250565b5f61252f6026836118e8565b915061253a826124d5565b604082019050919050565b5f6020820190508181035f83015261255c81612523565b9050919050565b5f61256d826119c8565b9150612578836119c8565b92508282019050808211156125905761258f611fb5565b5b92915050565b7f45524332303a206275726e20616d6f756e7420657863656564732062616c616e5f8201527f6365000000000000000000000000000000000000000000000000000000000000602082015250565b5f6125f06022836118e8565b91506125fb82612596565b604082019050919050565b5f6020820190508181035f83015261261d816125e4565b905091905056fea2646970667358221220a8c6f2a48c1cd1f65560869388d6004ad6733f5d21b0ba53ca1e18211043321b64736f6c63430008190033", } // Erc20ABI is the input ABI used to generate the binding from. @@ -44,7 +44,7 @@ var Erc20ABI = Erc20MetaData.ABI var Erc20Bin = Erc20MetaData.Bin // DeployErc20 deploys a new Ethereum contract, binding an instance of Erc20 to it. -func DeployErc20(auth *bind.TransactOpts, backend bind.ContractBackend, _name string, _symbol string, _decimals uint8, metadataSealed bool) (common.Address, *types.Transaction, *Erc20, error) { +func DeployErc20(auth *bind.TransactOpts, backend bind.ContractBackend, _name string, _symbol string, _decimals uint8, _metadataSealed bool) (common.Address, *types.Transaction, *Erc20, error) { parsed, err := Erc20MetaData.GetAbi() if err != nil { return common.Address{}, nil, nil, err @@ -53,7 +53,7 @@ func DeployErc20(auth *bind.TransactOpts, backend bind.ContractBackend, _name st return common.Address{}, nil, nil, errors.New("GetABI returned nil") } - address, tx, contract, err := bind.DeployContract(auth, *parsed, common.FromHex(Erc20Bin), backend, _name, _symbol, _decimals, metadataSealed) + address, tx, contract, err := bind.DeployContract(auth, *parsed, common.FromHex(Erc20Bin), backend, _name, _symbol, _decimals, _metadataSealed) if err != nil { return common.Address{}, nil, nil, err } @@ -202,37 +202,6 @@ func (_Erc20 *Erc20TransactorRaw) Transact(opts *bind.TransactOpts, method strin return _Erc20.Contract.contract.Transact(opts, method, params...) } -// MetadataSealed is a free data retrieval call binding the contract method 0x6312013f. -// -// Solidity: function _metadataSealed() view returns(bool) -func (_Erc20 *Erc20Caller) MetadataSealed(opts *bind.CallOpts) (bool, error) { - var out []interface{} - err := _Erc20.contract.Call(opts, &out, "_metadataSealed") - - if err != nil { - return *new(bool), err - } - - out0 := *abi.ConvertType(out[0], new(bool)).(*bool) - - return out0, err - -} - -// MetadataSealed is a free data retrieval call binding the contract method 0x6312013f. -// -// Solidity: function _metadataSealed() view returns(bool) -func (_Erc20 *Erc20Session) MetadataSealed() (bool, error) { - return _Erc20.Contract.MetadataSealed(&_Erc20.CallOpts) -} - -// MetadataSealed is a free data retrieval call binding the contract method 0x6312013f. -// -// Solidity: function _metadataSealed() view returns(bool) -func (_Erc20 *Erc20CallerSession) MetadataSealed() (bool, error) { - return _Erc20.Contract.MetadataSealed(&_Erc20.CallOpts) -} - // Allowance is a free data retrieval call binding the contract method 0xdd62ed3e. // // Solidity: function allowance(address , address ) view returns(uint256) @@ -326,6 +295,37 @@ func (_Erc20 *Erc20CallerSession) Decimals() (uint8, error) { return _Erc20.Contract.Decimals(&_Erc20.CallOpts) } +// MetadataSealed is a free data retrieval call binding the contract method 0xf5daf8ff. +// +// Solidity: function metadataSealed() view returns(bool) +func (_Erc20 *Erc20Caller) MetadataSealed(opts *bind.CallOpts) (bool, error) { + var out []interface{} + err := _Erc20.contract.Call(opts, &out, "metadataSealed") + + if err != nil { + return *new(bool), err + } + + out0 := *abi.ConvertType(out[0], new(bool)).(*bool) + + return out0, err + +} + +// MetadataSealed is a free data retrieval call binding the contract method 0xf5daf8ff. +// +// Solidity: function metadataSealed() view returns(bool) +func (_Erc20 *Erc20Session) MetadataSealed() (bool, error) { + return _Erc20.Contract.MetadataSealed(&_Erc20.CallOpts) +} + +// MetadataSealed is a free data retrieval call binding the contract method 0xf5daf8ff. +// +// Solidity: function metadataSealed() view returns(bool) +func (_Erc20 *Erc20CallerSession) MetadataSealed() (bool, error) { + return _Erc20.Contract.MetadataSealed(&_Erc20.CallOpts) +} + // Name is a free data retrieval call binding the contract method 0x06fdde03. // // Solidity: function name() view returns(string) diff --git a/x/evm/contracts/erc20_factory/ERC20Factory.go b/x/evm/contracts/erc20_factory/ERC20Factory.go index 52275ad..2516d7e 100644 --- a/x/evm/contracts/erc20_factory/ERC20Factory.go +++ b/x/evm/contracts/erc20_factory/ERC20Factory.go @@ -32,7 +32,7 @@ var ( // Erc20FactoryMetaData contains all meta data concerning the Erc20Factory contract. var Erc20FactoryMetaData = &bind.MetaData{ ABI: "[{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"erc20\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"owner\",\"type\":\"address\"}],\"name\":\"ERC20Created\",\"type\":\"event\"},{\"inputs\":[{\"internalType\":\"string\",\"name\":\"name\",\"type\":\"string\"},{\"internalType\":\"string\",\"name\":\"symbol\",\"type\":\"string\"},{\"internalType\":\"uint8\",\"name\":\"decimals\",\"type\":\"uint8\"}],\"name\":\"createERC20\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"}]", - Bin: "0x6080604052348015600e575f80fd5b506132468061001c5f395ff3fe608060405234801561000f575f80fd5b5060043610610029575f3560e01c806306ef1a861461002d575b5f80fd5b6100476004803603810190610042919061039e565b61005d565b6040516100549190610465565b60405180910390f35b5f80848484600173ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff16141560405161009f9061020e565b6100ac9493929190610507565b604051809103905ff0801580156100c5573d5f803e3d5ffd5b50905060f273ffffffffffffffffffffffffffffffffffffffff1663d126274a826040518263ffffffff1660e01b81526004016101029190610465565b6020604051808303815f875af115801561011e573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906101429190610582565b508073ffffffffffffffffffffffffffffffffffffffff1663f2fde38b336040518263ffffffff1660e01b815260040161017c9190610465565b5f604051808303815f87803b158015610193575f80fd5b505af11580156101a5573d5f803e3d5ffd5b505050503373ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff167f85e892981b234101136bc30081e0a5c44345bebc0940193230c20a43b279e2d160405160405180910390a3809150509392505050565b612c63806105ae83390190565b5f604051905090565b5f80fd5b5f80fd5b5f80fd5b5f80fd5b5f601f19601f8301169050919050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52604160045260245ffd5b61027a82610234565b810181811067ffffffffffffffff8211171561029957610298610244565b5b80604052505050565b5f6102ab61021b565b90506102b78282610271565b919050565b5f67ffffffffffffffff8211156102d6576102d5610244565b5b6102df82610234565b9050602081019050919050565b828183375f83830152505050565b5f61030c610307846102bc565b6102a2565b90508281526020810184848401111561032857610327610230565b5b6103338482856102ec565b509392505050565b5f82601f83011261034f5761034e61022c565b5b813561035f8482602086016102fa565b91505092915050565b5f60ff82169050919050565b61037d81610368565b8114610387575f80fd5b50565b5f8135905061039881610374565b92915050565b5f805f606084860312156103b5576103b4610224565b5b5f84013567ffffffffffffffff8111156103d2576103d1610228565b5b6103de8682870161033b565b935050602084013567ffffffffffffffff8111156103ff576103fe610228565b5b61040b8682870161033b565b925050604061041c8682870161038a565b9150509250925092565b5f73ffffffffffffffffffffffffffffffffffffffff82169050919050565b5f61044f82610426565b9050919050565b61045f81610445565b82525050565b5f6020820190506104785f830184610456565b92915050565b5f81519050919050565b5f82825260208201905092915050565b8281835e5f83830152505050565b5f6104b08261047e565b6104ba8185610488565b93506104ca818560208601610498565b6104d381610234565b840191505092915050565b6104e781610368565b82525050565b5f8115159050919050565b610501816104ed565b82525050565b5f6080820190508181035f83015261051f81876104a6565b9050818103602083015261053381866104a6565b905061054260408301856104de565b61054f60608301846104f8565b95945050505050565b610561816104ed565b811461056b575f80fd5b50565b5f8151905061057c81610558565b92915050565b5f6020828403121561059757610596610224565b5b5f6105a48482850161056e565b9150509291505056fe608060405234801561000f575f80fd5b50604051612c63380380612c6383398181016040528101906100319190610284565b335f806101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550836003908161007f919061052d565b50826004908161008f919061052d565b508160055f6101000a81548160ff021916908360ff1602179055508060075f6101000a81548160ff021916908315150217905550505050506105fc565b5f604051905090565b5f80fd5b5f80fd5b5f80fd5b5f80fd5b5f601f19601f8301169050919050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52604160045260245ffd5b61012b826100e5565b810181811067ffffffffffffffff8211171561014a576101496100f5565b5b80604052505050565b5f61015c6100cc565b90506101688282610122565b919050565b5f67ffffffffffffffff821115610187576101866100f5565b5b610190826100e5565b9050602081019050919050565b8281835e5f83830152505050565b5f6101bd6101b88461016d565b610153565b9050828152602081018484840111156101d9576101d86100e1565b5b6101e484828561019d565b509392505050565b5f82601f830112610200576101ff6100dd565b5b81516102108482602086016101ab565b91505092915050565b5f60ff82169050919050565b61022e81610219565b8114610238575f80fd5b50565b5f8151905061024981610225565b92915050565b5f8115159050919050565b6102638161024f565b811461026d575f80fd5b50565b5f8151905061027e8161025a565b92915050565b5f805f806080858703121561029c5761029b6100d5565b5b5f85015167ffffffffffffffff8111156102b9576102b86100d9565b5b6102c5878288016101ec565b945050602085015167ffffffffffffffff8111156102e6576102e56100d9565b5b6102f2878288016101ec565b93505060406103038782880161023b565b925050606061031487828801610270565b91505092959194509250565b5f81519050919050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52602260045260245ffd5b5f600282049050600182168061036e57607f821691505b6020821081036103815761038061032a565b5b50919050565b5f819050815f5260205f209050919050565b5f6020601f8301049050919050565b5f82821b905092915050565b5f600883026103e37fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff826103a8565b6103ed86836103a8565b95508019841693508086168417925050509392505050565b5f819050919050565b5f819050919050565b5f61043161042c61042784610405565b61040e565b610405565b9050919050565b5f819050919050565b61044a83610417565b61045e61045682610438565b8484546103b4565b825550505050565b5f90565b610472610466565b61047d818484610441565b505050565b5b818110156104a0576104955f8261046a565b600181019050610483565b5050565b601f8211156104e5576104b681610387565b6104bf84610399565b810160208510156104ce578190505b6104e26104da85610399565b830182610482565b50505b505050565b5f82821c905092915050565b5f6105055f19846008026104ea565b1980831691505092915050565b5f61051d83836104f6565b9150826002028217905092915050565b61053682610320565b67ffffffffffffffff81111561054f5761054e6100f5565b5b6105598254610357565b6105648282856104a4565b5f60209050601f831160018114610595575f8415610583578287015190505b61058d8582610512565b8655506105f4565b601f1984166105a386610387565b5f5b828110156105ca578489015182556001820191506020850194506020810190506105a5565b868310156105e757848901516105e3601f8916826104f6565b8355505b6001600288020188555050505b505050505050565b61265a806106095f395ff3fe608060405234801561000f575f80fd5b506004361061012a575f3560e01c80636312013f116100ab5780639f1914841161006f5780639f19148414610342578063a9059cbb1461035e578063dd62ed3e1461038e578063f2fde38b146103be578063fe1195ec146103da5761012a565b80636312013f1461028857806370a08231146102a657806379cc6790146102d65780638da5cb5b1461030657806395d89b41146103245761012a565b806323b872dd116100f257806323b872dd146101e65780632d688ca814610216578063313ce5671461023257806340c10f191461025057806342966c681461026c5761012a565b806301ffc9a71461012e57806306fdde031461015e578063095ea7b31461017c57806318160ddd146101ac5780631988513b146101ca575b5f80fd5b61014860048036038101906101439190611880565b6103f6565b60405161015591906118c5565b60405180910390f35b61016661046f565b604051610173919061194e565b60405180910390f35b610196600480360381019061019191906119fb565b6104fb565b6040516101a391906118c5565b60405180910390f35b6101b46105e8565b6040516101c19190611a48565b60405180910390f35b6101e460048036038101906101df9190611a61565b6105ee565b005b61020060048036038101906101fb9190611a61565b61066d565b60405161020d91906118c5565b60405180910390f35b610230600480360381019061022b91906119fb565b610888565b005b61023a610905565b6040516102479190611acc565b60405180910390f35b61026a600480360381019061026591906119fb565b610917565b005b61028660048036038101906102819190611ae5565b610a36565b005b610290610afe565b60405161029d91906118c5565b60405180910390f35b6102c060048036038101906102bb9190611b10565b610b10565b6040516102cd9190611a48565b60405180910390f35b6102f060048036038101906102eb91906119fb565b610b25565b6040516102fd91906118c5565b60405180910390f35b61030e610d3e565b60405161031b9190611b4a565b60405180910390f35b61032c610d61565b604051610339919061194e565b60405180910390f35b61035c60048036038101906103579190611cb9565b610ded565b005b610378600480360381019061037391906119fb565b610f4d565b60405161038591906118c5565b60405180910390f35b6103a860048036038101906103a39190611d41565b61101e565b6040516103b59190611a48565b60405180910390f35b6103d860048036038101906103d39190611b10565b61103e565b005b6103f460048036038101906103ef91906119fb565b611186565b005b5f7f8da6da19000000000000000000000000000000000000000000000000000000007bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916827bffffffffffffffffffffffffffffffffffffffffffffffffffffffff19161480610468575061046782611203565b5b9050919050565b6003805461047c90611dac565b80601f01602080910402602001604051908101604052809291908181526020018280546104a890611dac565b80156104f35780601f106104ca576101008083540402835291602001916104f3565b820191905f5260205f20905b8154815290600101906020018083116104d657829003601f168201915b505050505081565b5f8160025f3373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f8573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f20819055508273ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925846040516105d69190611a48565b60405180910390a36001905092915050565b60065481565b600173ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff161461065d576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161065490611e26565b60405180910390fd5b61066883838361126c565b505050565b5f8260f173ffffffffffffffffffffffffffffffffffffffff1663f2af9ac9826040518263ffffffff1660e01b81526004016106a99190611b4a565b602060405180830381865afa1580156106c4573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906106e89190611e6e565b15610728576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161071f90611f09565b60405180910390fd5b8260025f8773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f3373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205410156107e3576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016107da90611f97565b60405180910390fd5b8260025f8773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f3373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f82825461086a9190611fe2565b9250508190555061087c85858561126c565b60019150509392505050565b600173ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff16146108f7576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016108ee90611e26565b60405180910390fd5b61090182826114f7565b5050565b60055f9054906101000a900460ff1681565b8160f173ffffffffffffffffffffffffffffffffffffffff1663f2af9ac9826040518263ffffffff1660e01b81526004016109529190611b4a565b602060405180830381865afa15801561096d573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906109919190611e6e565b156109d1576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016109c89061205f565b60405180910390fd5b5f8054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff1614610a27575f80fd5b610a3183836114f7565b505050565b3360f173ffffffffffffffffffffffffffffffffffffffff166360dc402f826040518263ffffffff1660e01b8152600401610a719190611b4a565b602060405180830381865afa158015610a8c573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190610ab09190611e6e565b15610af0576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610ae7906120c7565b60405180910390fd5b610afa33836116c6565b5050565b60075f9054906101000a900460ff1681565b6001602052805f5260405f205f915090505481565b5f8260f173ffffffffffffffffffffffffffffffffffffffff166360dc402f826040518263ffffffff1660e01b8152600401610b619190611b4a565b602060405180830381865afa158015610b7c573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190610ba09190611e6e565b15610be0576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610bd7906120c7565b60405180910390fd5b8260025f8673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f3373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f20541015610c9b576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610c9290612155565b60405180910390fd5b8260025f8673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f3373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f828254610d229190611fe2565b92505081905550610d3384846116c6565b600191505092915050565b5f8054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b60048054610d6e90611dac565b80601f0160208091040260200160405190810160405280929190818152602001828054610d9a90611dac565b8015610de55780601f10610dbc57610100808354040283529160200191610de5565b820191905f5260205f20905b815481529060010190602001808311610dc857829003601f168201915b505050505081565b60f173ffffffffffffffffffffffffffffffffffffffff166301116078336040518263ffffffff1660e01b8152600401610e279190611b4a565b602060405180830381865afa158015610e42573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190610e669190611e6e565b610ea5576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610e9c906121e3565b60405180910390fd5b60075f9054906101000a900460ff1615610ef4576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610eeb9061224b565b60405180910390fd5b8260039081610f039190612406565b508160049081610f139190612406565b508060055f6101000a81548160ff021916908360ff160217905550600160075f6101000a81548160ff021916908315150217905550505050565b5f8260f173ffffffffffffffffffffffffffffffffffffffff1663f2af9ac9826040518263ffffffff1660e01b8152600401610f899190611b4a565b602060405180830381865afa158015610fa4573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190610fc89190611e6e565b15611008576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610fff90611f09565b60405180910390fd5b61101333858561126c565b600191505092915050565b6002602052815f5260405f20602052805f5260405f205f91509150505481565b5f8054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff1614611094575f80fd5b5f73ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff16036110cb575f80fd5b8073ffffffffffffffffffffffffffffffffffffffff165f8054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a3805f806101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555050565b600173ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff16146111f5576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016111ec90611e26565b60405180910390fd5b6111ff82826116c6565b5050565b5f7f01ffc9a7000000000000000000000000000000000000000000000000000000007bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916827bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916149050919050565b8160f273ffffffffffffffffffffffffffffffffffffffff16634e25ab64826040518263ffffffff1660e01b81526004016112a79190611b4a565b602060405180830381865afa1580156112c2573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906112e69190611e6e565b6113665760f273ffffffffffffffffffffffffffffffffffffffff1663ceeae52a826040518263ffffffff1660e01b81526004016113249190611b4a565b6020604051808303815f875af1158015611340573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906113649190611e6e565b505b8160015f8673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205410156113e6576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016113dd90612545565b60405180910390fd5b8160015f8673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f8282546114329190611fe2565b925050819055508160015f8573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f8282546114859190612563565b925050819055508273ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef846040516114e99190611a48565b60405180910390a350505050565b8160f273ffffffffffffffffffffffffffffffffffffffff16634e25ab64826040518263ffffffff1660e01b81526004016115329190611b4a565b602060405180830381865afa15801561154d573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906115719190611e6e565b6115f15760f273ffffffffffffffffffffffffffffffffffffffff1663ceeae52a826040518263ffffffff1660e01b81526004016115af9190611b4a565b6020604051808303815f875af11580156115cb573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906115ef9190611e6e565b505b8160015f8573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f82825461163d9190612563565b925050819055508160065f8282546116559190612563565b925050819055508273ffffffffffffffffffffffffffffffffffffffff165f73ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef846040516116b99190611a48565b60405180910390a3505050565b8060015f8473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f20541015611746576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161173d90612606565b60405180910390fd5b8060015f8473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f8282546117929190611fe2565b925050819055508060065f8282546117aa9190611fe2565b925050819055505f73ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef8360405161180e9190611a48565b60405180910390a35050565b5f604051905090565b5f80fd5b5f80fd5b5f7fffffffff0000000000000000000000000000000000000000000000000000000082169050919050565b61185f8161182b565b8114611869575f80fd5b50565b5f8135905061187a81611856565b92915050565b5f6020828403121561189557611894611823565b5b5f6118a28482850161186c565b91505092915050565b5f8115159050919050565b6118bf816118ab565b82525050565b5f6020820190506118d85f8301846118b6565b92915050565b5f81519050919050565b5f82825260208201905092915050565b8281835e5f83830152505050565b5f601f19601f8301169050919050565b5f611920826118de565b61192a81856118e8565b935061193a8185602086016118f8565b61194381611906565b840191505092915050565b5f6020820190508181035f8301526119668184611916565b905092915050565b5f73ffffffffffffffffffffffffffffffffffffffff82169050919050565b5f6119978261196e565b9050919050565b6119a78161198d565b81146119b1575f80fd5b50565b5f813590506119c28161199e565b92915050565b5f819050919050565b6119da816119c8565b81146119e4575f80fd5b50565b5f813590506119f5816119d1565b92915050565b5f8060408385031215611a1157611a10611823565b5b5f611a1e858286016119b4565b9250506020611a2f858286016119e7565b9150509250929050565b611a42816119c8565b82525050565b5f602082019050611a5b5f830184611a39565b92915050565b5f805f60608486031215611a7857611a77611823565b5b5f611a85868287016119b4565b9350506020611a96868287016119b4565b9250506040611aa7868287016119e7565b9150509250925092565b5f60ff82169050919050565b611ac681611ab1565b82525050565b5f602082019050611adf5f830184611abd565b92915050565b5f60208284031215611afa57611af9611823565b5b5f611b07848285016119e7565b91505092915050565b5f60208284031215611b2557611b24611823565b5b5f611b32848285016119b4565b91505092915050565b611b448161198d565b82525050565b5f602082019050611b5d5f830184611b3b565b92915050565b5f80fd5b5f80fd5b7f4e487b71000000000000000000000000000000000000000000000000000000005f52604160045260245ffd5b611ba182611906565b810181811067ffffffffffffffff82111715611bc057611bbf611b6b565b5b80604052505050565b5f611bd261181a565b9050611bde8282611b98565b919050565b5f67ffffffffffffffff821115611bfd57611bfc611b6b565b5b611c0682611906565b9050602081019050919050565b828183375f83830152505050565b5f611c33611c2e84611be3565b611bc9565b905082815260208101848484011115611c4f57611c4e611b67565b5b611c5a848285611c13565b509392505050565b5f82601f830112611c7657611c75611b63565b5b8135611c86848260208601611c21565b91505092915050565b611c9881611ab1565b8114611ca2575f80fd5b50565b5f81359050611cb381611c8f565b92915050565b5f805f60608486031215611cd057611ccf611823565b5b5f84013567ffffffffffffffff811115611ced57611cec611827565b5b611cf986828701611c62565b935050602084013567ffffffffffffffff811115611d1a57611d19611827565b5b611d2686828701611c62565b9250506040611d3786828701611ca5565b9150509250925092565b5f8060408385031215611d5757611d56611823565b5b5f611d64858286016119b4565b9250506020611d75858286016119b4565b9150509250929050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52602260045260245ffd5b5f6002820490506001821680611dc357607f821691505b602082108103611dd657611dd5611d7f565b5b50919050565b7f45524332303a2063616c6c6572206973206e6f742074686520636861696e00005f82015250565b5f611e10601e836118e8565b9150611e1b82611ddc565b602082019050919050565b5f6020820190508181035f830152611e3d81611e04565b9050919050565b611e4d816118ab565b8114611e57575f80fd5b50565b5f81519050611e6881611e44565b92915050565b5f60208284031215611e8357611e82611823565b5b5f611e9084828501611e5a565b91505092915050565b7f45524332303a207472616e7366657220746f20626c6f636b65642061646472655f8201527f7373000000000000000000000000000000000000000000000000000000000000602082015250565b5f611ef36022836118e8565b9150611efe82611e99565b604082019050919050565b5f6020820190508181035f830152611f2081611ee7565b9050919050565b7f45524332303a207472616e7366657220616d6f756e74206578636565647320615f8201527f6c6c6f77616e6365000000000000000000000000000000000000000000000000602082015250565b5f611f816028836118e8565b9150611f8c82611f27565b604082019050919050565b5f6020820190508181035f830152611fae81611f75565b9050919050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52601160045260245ffd5b5f611fec826119c8565b9150611ff7836119c8565b925082820390508181111561200f5761200e611fb5565b5b92915050565b7f45524332303a206d696e7420746f20626c6f636b6564206164647265737300005f82015250565b5f612049601e836118e8565b915061205482612015565b602082019050919050565b5f6020820190508181035f8301526120768161203d565b9050919050565b7f45524332303a206275726e2066726f6d206d6f64756c652061646472657373005f82015250565b5f6120b1601f836118e8565b91506120bc8261207d565b602082019050919050565b5f6020820190508181035f8301526120de816120a5565b9050919050565b7f45524332303a206275726e20616d6f756e74206578636565647320616c6c6f775f8201527f616e636500000000000000000000000000000000000000000000000000000000602082015250565b5f61213f6024836118e8565b915061214a826120e5565b604082019050919050565b5f6020820190508181035f83015261216c81612133565b9050919050565b7f45524332303a2063616c6c6572206973206e6f742074686520617574686f72695f8201527f7479000000000000000000000000000000000000000000000000000000000000602082015250565b5f6121cd6022836118e8565b91506121d882612173565b604082019050919050565b5f6020820190508181035f8301526121fa816121c1565b9050919050565b7f45524332303a206d65746164617461207365616c6564000000000000000000005f82015250565b5f6122356016836118e8565b915061224082612201565b602082019050919050565b5f6020820190508181035f83015261226281612229565b9050919050565b5f819050815f5260205f209050919050565b5f6020601f8301049050919050565b5f82821b905092915050565b5f600883026122c57fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff8261228a565b6122cf868361228a565b95508019841693508086168417925050509392505050565b5f819050919050565b5f61230a612305612300846119c8565b6122e7565b6119c8565b9050919050565b5f819050919050565b612323836122f0565b61233761232f82612311565b848454612296565b825550505050565b5f90565b61234b61233f565b61235681848461231a565b505050565b5b818110156123795761236e5f82612343565b60018101905061235c565b5050565b601f8211156123be5761238f81612269565b6123988461227b565b810160208510156123a7578190505b6123bb6123b38561227b565b83018261235b565b50505b505050565b5f82821c905092915050565b5f6123de5f19846008026123c3565b1980831691505092915050565b5f6123f683836123cf565b9150826002028217905092915050565b61240f826118de565b67ffffffffffffffff81111561242857612427611b6b565b5b6124328254611dac565b61243d82828561237d565b5f60209050601f83116001811461246e575f841561245c578287015190505b61246685826123eb565b8655506124cd565b601f19841661247c86612269565b5f5b828110156124a35784890151825560018201915060208501945060208101905061247e565b868310156124c057848901516124bc601f8916826123cf565b8355505b6001600288020188555050505b505050505050565b7f45524332303a207472616e7366657220616d6f756e74206578636565647320625f8201527f616c616e63650000000000000000000000000000000000000000000000000000602082015250565b5f61252f6026836118e8565b915061253a826124d5565b604082019050919050565b5f6020820190508181035f83015261255c81612523565b9050919050565b5f61256d826119c8565b9150612578836119c8565b92508282019050808211156125905761258f611fb5565b5b92915050565b7f45524332303a206275726e20616d6f756e7420657863656564732062616c616e5f8201527f6365000000000000000000000000000000000000000000000000000000000000602082015250565b5f6125f06022836118e8565b91506125fb82612596565b604082019050919050565b5f6020820190508181035f83015261261d816125e4565b905091905056fea264697066735822122052cf15d32a984b09e97731db92fec90f8955cbb2a6d66c568f7e9f5043fdfa8864736f6c63430008190033a264697066735822122028aa0fe676dbb2c596a0a4d1f043737bc03c04e744345c2088575c50ad9a74e464736f6c63430008190033", + Bin: "0x6080604052348015600e575f80fd5b506132468061001c5f395ff3fe608060405234801561000f575f80fd5b5060043610610029575f3560e01c806306ef1a861461002d575b5f80fd5b6100476004803603810190610042919061039e565b61005d565b6040516100549190610465565b60405180910390f35b5f80848484600173ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff16141560405161009f9061020e565b6100ac9493929190610507565b604051809103905ff0801580156100c5573d5f803e3d5ffd5b50905060f273ffffffffffffffffffffffffffffffffffffffff1663d126274a826040518263ffffffff1660e01b81526004016101029190610465565b6020604051808303815f875af115801561011e573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906101429190610582565b508073ffffffffffffffffffffffffffffffffffffffff1663f2fde38b336040518263ffffffff1660e01b815260040161017c9190610465565b5f604051808303815f87803b158015610193575f80fd5b505af11580156101a5573d5f803e3d5ffd5b505050503373ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff167f85e892981b234101136bc30081e0a5c44345bebc0940193230c20a43b279e2d160405160405180910390a3809150509392505050565b612c63806105ae83390190565b5f604051905090565b5f80fd5b5f80fd5b5f80fd5b5f80fd5b5f601f19601f8301169050919050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52604160045260245ffd5b61027a82610234565b810181811067ffffffffffffffff8211171561029957610298610244565b5b80604052505050565b5f6102ab61021b565b90506102b78282610271565b919050565b5f67ffffffffffffffff8211156102d6576102d5610244565b5b6102df82610234565b9050602081019050919050565b828183375f83830152505050565b5f61030c610307846102bc565b6102a2565b90508281526020810184848401111561032857610327610230565b5b6103338482856102ec565b509392505050565b5f82601f83011261034f5761034e61022c565b5b813561035f8482602086016102fa565b91505092915050565b5f60ff82169050919050565b61037d81610368565b8114610387575f80fd5b50565b5f8135905061039881610374565b92915050565b5f805f606084860312156103b5576103b4610224565b5b5f84013567ffffffffffffffff8111156103d2576103d1610228565b5b6103de8682870161033b565b935050602084013567ffffffffffffffff8111156103ff576103fe610228565b5b61040b8682870161033b565b925050604061041c8682870161038a565b9150509250925092565b5f73ffffffffffffffffffffffffffffffffffffffff82169050919050565b5f61044f82610426565b9050919050565b61045f81610445565b82525050565b5f6020820190506104785f830184610456565b92915050565b5f81519050919050565b5f82825260208201905092915050565b8281835e5f83830152505050565b5f6104b08261047e565b6104ba8185610488565b93506104ca818560208601610498565b6104d381610234565b840191505092915050565b6104e781610368565b82525050565b5f8115159050919050565b610501816104ed565b82525050565b5f6080820190508181035f83015261051f81876104a6565b9050818103602083015261053381866104a6565b905061054260408301856104de565b61054f60608301846104f8565b95945050505050565b610561816104ed565b811461056b575f80fd5b50565b5f8151905061057c81610558565b92915050565b5f6020828403121561059757610596610224565b5b5f6105a48482850161056e565b9150509291505056fe608060405234801561000f575f80fd5b50604051612c63380380612c6383398181016040528101906100319190610284565b335f806101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550836003908161007f919061052d565b50826004908161008f919061052d565b508160055f6101000a81548160ff021916908360ff1602179055508060075f6101000a81548160ff021916908315150217905550505050506105fc565b5f604051905090565b5f80fd5b5f80fd5b5f80fd5b5f80fd5b5f601f19601f8301169050919050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52604160045260245ffd5b61012b826100e5565b810181811067ffffffffffffffff8211171561014a576101496100f5565b5b80604052505050565b5f61015c6100cc565b90506101688282610122565b919050565b5f67ffffffffffffffff821115610187576101866100f5565b5b610190826100e5565b9050602081019050919050565b8281835e5f83830152505050565b5f6101bd6101b88461016d565b610153565b9050828152602081018484840111156101d9576101d86100e1565b5b6101e484828561019d565b509392505050565b5f82601f830112610200576101ff6100dd565b5b81516102108482602086016101ab565b91505092915050565b5f60ff82169050919050565b61022e81610219565b8114610238575f80fd5b50565b5f8151905061024981610225565b92915050565b5f8115159050919050565b6102638161024f565b811461026d575f80fd5b50565b5f8151905061027e8161025a565b92915050565b5f805f806080858703121561029c5761029b6100d5565b5b5f85015167ffffffffffffffff8111156102b9576102b86100d9565b5b6102c5878288016101ec565b945050602085015167ffffffffffffffff8111156102e6576102e56100d9565b5b6102f2878288016101ec565b93505060406103038782880161023b565b925050606061031487828801610270565b91505092959194509250565b5f81519050919050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52602260045260245ffd5b5f600282049050600182168061036e57607f821691505b6020821081036103815761038061032a565b5b50919050565b5f819050815f5260205f209050919050565b5f6020601f8301049050919050565b5f82821b905092915050565b5f600883026103e37fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff826103a8565b6103ed86836103a8565b95508019841693508086168417925050509392505050565b5f819050919050565b5f819050919050565b5f61043161042c61042784610405565b61040e565b610405565b9050919050565b5f819050919050565b61044a83610417565b61045e61045682610438565b8484546103b4565b825550505050565b5f90565b610472610466565b61047d818484610441565b505050565b5b818110156104a0576104955f8261046a565b600181019050610483565b5050565b601f8211156104e5576104b681610387565b6104bf84610399565b810160208510156104ce578190505b6104e26104da85610399565b830182610482565b50505b505050565b5f82821c905092915050565b5f6105055f19846008026104ea565b1980831691505092915050565b5f61051d83836104f6565b9150826002028217905092915050565b61053682610320565b67ffffffffffffffff81111561054f5761054e6100f5565b5b6105598254610357565b6105648282856104a4565b5f60209050601f831160018114610595575f8415610583578287015190505b61058d8582610512565b8655506105f4565b601f1984166105a386610387565b5f5b828110156105ca578489015182556001820191506020850194506020810190506105a5565b868310156105e757848901516105e3601f8916826104f6565b8355505b6001600288020188555050505b505050505050565b61265a806106095f395ff3fe608060405234801561000f575f80fd5b506004361061012a575f3560e01c806370a08231116100ab578063a9059cbb1161006f578063a9059cbb14610340578063dd62ed3e14610370578063f2fde38b146103a0578063f5daf8ff146103bc578063fe1195ec146103da5761012a565b806370a082311461028857806379cc6790146102b85780638da5cb5b146102e857806395d89b41146103065780639f191484146103245761012a565b806323b872dd116100f257806323b872dd146101e65780632d688ca814610216578063313ce5671461023257806340c10f191461025057806342966c681461026c5761012a565b806301ffc9a71461012e57806306fdde031461015e578063095ea7b31461017c57806318160ddd146101ac5780631988513b146101ca575b5f80fd5b61014860048036038101906101439190611880565b6103f6565b60405161015591906118c5565b60405180910390f35b61016661046f565b604051610173919061194e565b60405180910390f35b610196600480360381019061019191906119fb565b6104fb565b6040516101a391906118c5565b60405180910390f35b6101b46105e8565b6040516101c19190611a48565b60405180910390f35b6101e460048036038101906101df9190611a61565b6105ee565b005b61020060048036038101906101fb9190611a61565b61066d565b60405161020d91906118c5565b60405180910390f35b610230600480360381019061022b91906119fb565b610888565b005b61023a610905565b6040516102479190611acc565b60405180910390f35b61026a600480360381019061026591906119fb565b610917565b005b61028660048036038101906102819190611ae5565b610a36565b005b6102a2600480360381019061029d9190611b10565b610afe565b6040516102af9190611a48565b60405180910390f35b6102d260048036038101906102cd91906119fb565b610b13565b6040516102df91906118c5565b60405180910390f35b6102f0610d2c565b6040516102fd9190611b4a565b60405180910390f35b61030e610d4f565b60405161031b919061194e565b60405180910390f35b61033e60048036038101906103399190611cb9565b610ddb565b005b61035a600480360381019061035591906119fb565b610f3b565b60405161036791906118c5565b60405180910390f35b61038a60048036038101906103859190611d41565b61100c565b6040516103979190611a48565b60405180910390f35b6103ba60048036038101906103b59190611b10565b61102c565b005b6103c4611174565b6040516103d191906118c5565b60405180910390f35b6103f460048036038101906103ef91906119fb565b611186565b005b5f7f8da6da19000000000000000000000000000000000000000000000000000000007bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916827bffffffffffffffffffffffffffffffffffffffffffffffffffffffff19161480610468575061046782611203565b5b9050919050565b6003805461047c90611dac565b80601f01602080910402602001604051908101604052809291908181526020018280546104a890611dac565b80156104f35780601f106104ca576101008083540402835291602001916104f3565b820191905f5260205f20905b8154815290600101906020018083116104d657829003601f168201915b505050505081565b5f8160025f3373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f8573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f20819055508273ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925846040516105d69190611a48565b60405180910390a36001905092915050565b60065481565b600173ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff161461065d576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161065490611e26565b60405180910390fd5b61066883838361126c565b505050565b5f8260f173ffffffffffffffffffffffffffffffffffffffff1663f2af9ac9826040518263ffffffff1660e01b81526004016106a99190611b4a565b602060405180830381865afa1580156106c4573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906106e89190611e6e565b15610728576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161071f90611f09565b60405180910390fd5b8260025f8773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f3373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205410156107e3576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016107da90611f97565b60405180910390fd5b8260025f8773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f3373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f82825461086a9190611fe2565b9250508190555061087c85858561126c565b60019150509392505050565b600173ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff16146108f7576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016108ee90611e26565b60405180910390fd5b61090182826114f7565b5050565b60055f9054906101000a900460ff1681565b8160f173ffffffffffffffffffffffffffffffffffffffff1663f2af9ac9826040518263ffffffff1660e01b81526004016109529190611b4a565b602060405180830381865afa15801561096d573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906109919190611e6e565b156109d1576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016109c89061205f565b60405180910390fd5b5f8054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff1614610a27575f80fd5b610a3183836114f7565b505050565b3360f173ffffffffffffffffffffffffffffffffffffffff166360dc402f826040518263ffffffff1660e01b8152600401610a719190611b4a565b602060405180830381865afa158015610a8c573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190610ab09190611e6e565b15610af0576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610ae7906120c7565b60405180910390fd5b610afa33836116c6565b5050565b6001602052805f5260405f205f915090505481565b5f8260f173ffffffffffffffffffffffffffffffffffffffff166360dc402f826040518263ffffffff1660e01b8152600401610b4f9190611b4a565b602060405180830381865afa158015610b6a573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190610b8e9190611e6e565b15610bce576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610bc5906120c7565b60405180910390fd5b8260025f8673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f3373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f20541015610c89576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610c8090612155565b60405180910390fd5b8260025f8673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f3373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f828254610d109190611fe2565b92505081905550610d2184846116c6565b600191505092915050565b5f8054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b60048054610d5c90611dac565b80601f0160208091040260200160405190810160405280929190818152602001828054610d8890611dac565b8015610dd35780601f10610daa57610100808354040283529160200191610dd3565b820191905f5260205f20905b815481529060010190602001808311610db657829003601f168201915b505050505081565b60f173ffffffffffffffffffffffffffffffffffffffff166301116078336040518263ffffffff1660e01b8152600401610e159190611b4a565b602060405180830381865afa158015610e30573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190610e549190611e6e565b610e93576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610e8a906121e3565b60405180910390fd5b60075f9054906101000a900460ff1615610ee2576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610ed99061224b565b60405180910390fd5b8260039081610ef19190612406565b508160049081610f019190612406565b508060055f6101000a81548160ff021916908360ff160217905550600160075f6101000a81548160ff021916908315150217905550505050565b5f8260f173ffffffffffffffffffffffffffffffffffffffff1663f2af9ac9826040518263ffffffff1660e01b8152600401610f779190611b4a565b602060405180830381865afa158015610f92573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190610fb69190611e6e565b15610ff6576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610fed90611f09565b60405180910390fd5b61100133858561126c565b600191505092915050565b6002602052815f5260405f20602052805f5260405f205f91509150505481565b5f8054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff1614611082575f80fd5b5f73ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff16036110b9575f80fd5b8073ffffffffffffffffffffffffffffffffffffffff165f8054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a3805f806101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555050565b60075f9054906101000a900460ff1681565b600173ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff16146111f5576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016111ec90611e26565b60405180910390fd5b6111ff82826116c6565b5050565b5f7f01ffc9a7000000000000000000000000000000000000000000000000000000007bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916827bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916149050919050565b8160f273ffffffffffffffffffffffffffffffffffffffff16634e25ab64826040518263ffffffff1660e01b81526004016112a79190611b4a565b602060405180830381865afa1580156112c2573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906112e69190611e6e565b6113665760f273ffffffffffffffffffffffffffffffffffffffff1663ceeae52a826040518263ffffffff1660e01b81526004016113249190611b4a565b6020604051808303815f875af1158015611340573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906113649190611e6e565b505b8160015f8673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205410156113e6576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016113dd90612545565b60405180910390fd5b8160015f8673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f8282546114329190611fe2565b925050819055508160015f8573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f8282546114859190612563565b925050819055508273ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef846040516114e99190611a48565b60405180910390a350505050565b8160f273ffffffffffffffffffffffffffffffffffffffff16634e25ab64826040518263ffffffff1660e01b81526004016115329190611b4a565b602060405180830381865afa15801561154d573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906115719190611e6e565b6115f15760f273ffffffffffffffffffffffffffffffffffffffff1663ceeae52a826040518263ffffffff1660e01b81526004016115af9190611b4a565b6020604051808303815f875af11580156115cb573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906115ef9190611e6e565b505b8160015f8573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f82825461163d9190612563565b925050819055508160065f8282546116559190612563565b925050819055508273ffffffffffffffffffffffffffffffffffffffff165f73ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef846040516116b99190611a48565b60405180910390a3505050565b8060015f8473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f20541015611746576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161173d90612606565b60405180910390fd5b8060015f8473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f8282546117929190611fe2565b925050819055508060065f8282546117aa9190611fe2565b925050819055505f73ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef8360405161180e9190611a48565b60405180910390a35050565b5f604051905090565b5f80fd5b5f80fd5b5f7fffffffff0000000000000000000000000000000000000000000000000000000082169050919050565b61185f8161182b565b8114611869575f80fd5b50565b5f8135905061187a81611856565b92915050565b5f6020828403121561189557611894611823565b5b5f6118a28482850161186c565b91505092915050565b5f8115159050919050565b6118bf816118ab565b82525050565b5f6020820190506118d85f8301846118b6565b92915050565b5f81519050919050565b5f82825260208201905092915050565b8281835e5f83830152505050565b5f601f19601f8301169050919050565b5f611920826118de565b61192a81856118e8565b935061193a8185602086016118f8565b61194381611906565b840191505092915050565b5f6020820190508181035f8301526119668184611916565b905092915050565b5f73ffffffffffffffffffffffffffffffffffffffff82169050919050565b5f6119978261196e565b9050919050565b6119a78161198d565b81146119b1575f80fd5b50565b5f813590506119c28161199e565b92915050565b5f819050919050565b6119da816119c8565b81146119e4575f80fd5b50565b5f813590506119f5816119d1565b92915050565b5f8060408385031215611a1157611a10611823565b5b5f611a1e858286016119b4565b9250506020611a2f858286016119e7565b9150509250929050565b611a42816119c8565b82525050565b5f602082019050611a5b5f830184611a39565b92915050565b5f805f60608486031215611a7857611a77611823565b5b5f611a85868287016119b4565b9350506020611a96868287016119b4565b9250506040611aa7868287016119e7565b9150509250925092565b5f60ff82169050919050565b611ac681611ab1565b82525050565b5f602082019050611adf5f830184611abd565b92915050565b5f60208284031215611afa57611af9611823565b5b5f611b07848285016119e7565b91505092915050565b5f60208284031215611b2557611b24611823565b5b5f611b32848285016119b4565b91505092915050565b611b448161198d565b82525050565b5f602082019050611b5d5f830184611b3b565b92915050565b5f80fd5b5f80fd5b7f4e487b71000000000000000000000000000000000000000000000000000000005f52604160045260245ffd5b611ba182611906565b810181811067ffffffffffffffff82111715611bc057611bbf611b6b565b5b80604052505050565b5f611bd261181a565b9050611bde8282611b98565b919050565b5f67ffffffffffffffff821115611bfd57611bfc611b6b565b5b611c0682611906565b9050602081019050919050565b828183375f83830152505050565b5f611c33611c2e84611be3565b611bc9565b905082815260208101848484011115611c4f57611c4e611b67565b5b611c5a848285611c13565b509392505050565b5f82601f830112611c7657611c75611b63565b5b8135611c86848260208601611c21565b91505092915050565b611c9881611ab1565b8114611ca2575f80fd5b50565b5f81359050611cb381611c8f565b92915050565b5f805f60608486031215611cd057611ccf611823565b5b5f84013567ffffffffffffffff811115611ced57611cec611827565b5b611cf986828701611c62565b935050602084013567ffffffffffffffff811115611d1a57611d19611827565b5b611d2686828701611c62565b9250506040611d3786828701611ca5565b9150509250925092565b5f8060408385031215611d5757611d56611823565b5b5f611d64858286016119b4565b9250506020611d75858286016119b4565b9150509250929050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52602260045260245ffd5b5f6002820490506001821680611dc357607f821691505b602082108103611dd657611dd5611d7f565b5b50919050565b7f45524332303a2063616c6c6572206973206e6f742074686520636861696e00005f82015250565b5f611e10601e836118e8565b9150611e1b82611ddc565b602082019050919050565b5f6020820190508181035f830152611e3d81611e04565b9050919050565b611e4d816118ab565b8114611e57575f80fd5b50565b5f81519050611e6881611e44565b92915050565b5f60208284031215611e8357611e82611823565b5b5f611e9084828501611e5a565b91505092915050565b7f45524332303a207472616e7366657220746f20626c6f636b65642061646472655f8201527f7373000000000000000000000000000000000000000000000000000000000000602082015250565b5f611ef36022836118e8565b9150611efe82611e99565b604082019050919050565b5f6020820190508181035f830152611f2081611ee7565b9050919050565b7f45524332303a207472616e7366657220616d6f756e74206578636565647320615f8201527f6c6c6f77616e6365000000000000000000000000000000000000000000000000602082015250565b5f611f816028836118e8565b9150611f8c82611f27565b604082019050919050565b5f6020820190508181035f830152611fae81611f75565b9050919050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52601160045260245ffd5b5f611fec826119c8565b9150611ff7836119c8565b925082820390508181111561200f5761200e611fb5565b5b92915050565b7f45524332303a206d696e7420746f20626c6f636b6564206164647265737300005f82015250565b5f612049601e836118e8565b915061205482612015565b602082019050919050565b5f6020820190508181035f8301526120768161203d565b9050919050565b7f45524332303a206275726e2066726f6d206d6f64756c652061646472657373005f82015250565b5f6120b1601f836118e8565b91506120bc8261207d565b602082019050919050565b5f6020820190508181035f8301526120de816120a5565b9050919050565b7f45524332303a206275726e20616d6f756e74206578636565647320616c6c6f775f8201527f616e636500000000000000000000000000000000000000000000000000000000602082015250565b5f61213f6024836118e8565b915061214a826120e5565b604082019050919050565b5f6020820190508181035f83015261216c81612133565b9050919050565b7f45524332303a2063616c6c6572206973206e6f742074686520617574686f72695f8201527f7479000000000000000000000000000000000000000000000000000000000000602082015250565b5f6121cd6022836118e8565b91506121d882612173565b604082019050919050565b5f6020820190508181035f8301526121fa816121c1565b9050919050565b7f45524332303a206d65746164617461207365616c6564000000000000000000005f82015250565b5f6122356016836118e8565b915061224082612201565b602082019050919050565b5f6020820190508181035f83015261226281612229565b9050919050565b5f819050815f5260205f209050919050565b5f6020601f8301049050919050565b5f82821b905092915050565b5f600883026122c57fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff8261228a565b6122cf868361228a565b95508019841693508086168417925050509392505050565b5f819050919050565b5f61230a612305612300846119c8565b6122e7565b6119c8565b9050919050565b5f819050919050565b612323836122f0565b61233761232f82612311565b848454612296565b825550505050565b5f90565b61234b61233f565b61235681848461231a565b505050565b5b818110156123795761236e5f82612343565b60018101905061235c565b5050565b601f8211156123be5761238f81612269565b6123988461227b565b810160208510156123a7578190505b6123bb6123b38561227b565b83018261235b565b50505b505050565b5f82821c905092915050565b5f6123de5f19846008026123c3565b1980831691505092915050565b5f6123f683836123cf565b9150826002028217905092915050565b61240f826118de565b67ffffffffffffffff81111561242857612427611b6b565b5b6124328254611dac565b61243d82828561237d565b5f60209050601f83116001811461246e575f841561245c578287015190505b61246685826123eb565b8655506124cd565b601f19841661247c86612269565b5f5b828110156124a35784890151825560018201915060208501945060208101905061247e565b868310156124c057848901516124bc601f8916826123cf565b8355505b6001600288020188555050505b505050505050565b7f45524332303a207472616e7366657220616d6f756e74206578636565647320625f8201527f616c616e63650000000000000000000000000000000000000000000000000000602082015250565b5f61252f6026836118e8565b915061253a826124d5565b604082019050919050565b5f6020820190508181035f83015261255c81612523565b9050919050565b5f61256d826119c8565b9150612578836119c8565b92508282019050808211156125905761258f611fb5565b5b92915050565b7f45524332303a206275726e20616d6f756e7420657863656564732062616c616e5f8201527f6365000000000000000000000000000000000000000000000000000000000000602082015250565b5f6125f06022836118e8565b91506125fb82612596565b604082019050919050565b5f6020820190508181035f83015261261d816125e4565b905091905056fea2646970667358221220a8c6f2a48c1cd1f65560869388d6004ad6733f5d21b0ba53ca1e18211043321b64736f6c63430008190033a264697066735822122063b20a0ed96d729ed2493dd3d39e577251ffee68dcb1ca1dbc5413dcb3c5006e64736f6c63430008190033", } // Erc20FactoryABI is the input ABI used to generate the binding from. diff --git a/x/evm/contracts/erc20_wrapper/ERC20Wrapper.go b/x/evm/contracts/erc20_wrapper/ERC20Wrapper.go index a4c3951..6e68493 100644 --- a/x/evm/contracts/erc20_wrapper/ERC20Wrapper.go +++ b/x/evm/contracts/erc20_wrapper/ERC20Wrapper.go @@ -32,7 +32,7 @@ var ( // Erc20WrapperMetaData contains all meta data concerning the Erc20Wrapper contract. var Erc20WrapperMetaData = &bind.MetaData{ ABI: "[{\"inputs\":[{\"internalType\":\"address\",\"name\":\"erc20Factory\",\"type\":\"address\"}],\"stateMutability\":\"nonpayable\",\"type\":\"constructor\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"value\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"length\",\"type\":\"uint256\"}],\"name\":\"StringsInsufficientHexLength\",\"type\":\"error\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"previousOwner\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"newOwner\",\"type\":\"address\"}],\"name\":\"OwnershipTransferred\",\"type\":\"event\"},{\"inputs\":[],\"name\":\"factory\",\"outputs\":[{\"internalType\":\"contractERC20Factory\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint64\",\"name\":\"callback_id\",\"type\":\"uint64\"},{\"internalType\":\"bool\",\"name\":\"success\",\"type\":\"bool\"}],\"name\":\"ibc_ack\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint64\",\"name\":\"callback_id\",\"type\":\"uint64\"}],\"name\":\"ibc_timeout\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"owner\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes4\",\"name\":\"interfaceId\",\"type\":\"bytes4\"}],\"name\":\"supportsInterface\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"newOwner\",\"type\":\"address\"}],\"name\":\"transferOwnership\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"originToken\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"receiver\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"wrappedAmt\",\"type\":\"uint256\"}],\"name\":\"unwrap\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"string\",\"name\":\"channel\",\"type\":\"string\"},{\"internalType\":\"address\",\"name\":\"token\",\"type\":\"address\"},{\"internalType\":\"string\",\"name\":\"receiver\",\"type\":\"string\"},{\"internalType\":\"uint256\",\"name\":\"amount\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"timeout\",\"type\":\"uint256\"}],\"name\":\"wrap\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"name\":\"wrappedTokens\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"}]", - Bin: "0x60a06040525f8060146101000a81548167ffffffffffffffff021916908367ffffffffffffffff160217905550348015610037575f80fd5b50604051612d24380380612d2483398181016040528101906100599190610130565b335f806101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055508073ffffffffffffffffffffffffffffffffffffffff1660808173ffffffffffffffffffffffffffffffffffffffff16815250505061015b565b5f80fd5b5f73ffffffffffffffffffffffffffffffffffffffff82169050919050565b5f6100ff826100d6565b9050919050565b61010f816100f5565b8114610119575f80fd5b50565b5f8151905061012a81610106565b92915050565b5f60208284031215610145576101446100d2565b5b5f6101528482850161011c565b91505092915050565b608051612baa61017a5f395f81816109a70152610fd00152612baa5ff3fe608060405234801561000f575f80fd5b5060043610610091575f3560e01c80638da5cb5b116100645780638da5cb5b146101195780639a11143214610137578063c45a015514610153578063d5c6b50414610171578063f2fde38b146101a157610091565b806301ffc9a7146100955780630d4f1f9d146100c557806331a503f0146100e15780638cc7104f146100fd575b5f80fd5b6100af60048036038101906100aa91906118d6565b6101bd565b6040516100bc919061191b565b60405180910390f35b6100df60048036038101906100da919061199b565b610226565b005b6100fb60048036038101906100f691906119d9565b6102a7565b005b61011760048036038101906101129190611a91565b610321565b005b610121610569565b60405161012e9190611af0565b60405180910390f35b610151600480360381019061014c9190611c45565b61058c565b005b61015b6109a5565b6040516101689190611d4f565b60405180910390f35b61018b60048036038101906101869190611d68565b6109c9565b6040516101989190611af0565b60405180910390f35b6101bb60048036038101906101b69190611d68565b6109f9565b005b5f7f01ffc9a7000000000000000000000000000000000000000000000000000000007bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916827bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916149050919050565b3073ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff1614610294576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161028b90611e13565b60405180910390fd5b806102a3576102a282610b41565b5b5050565b3073ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff1614610315576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161030c90611e13565b60405180910390fd5b61031e81610b41565b50565b5f60015f8573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1690505f73ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff16036103ef576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016103e690611e7b565b60405180910390fd5b8073ffffffffffffffffffffffffffffffffffffffff166379cc679033846040518363ffffffff1660e01b815260040161042a929190611ea8565b6020604051808303815f875af1158015610446573d5f803e3d5ffd5b505050506040513d601f19601f8201168201806040525081019061046a9190611ee3565b505f6104e48360068773ffffffffffffffffffffffffffffffffffffffff1663313ce5676040518163ffffffff1660e01b8152600401602060405180830381865afa1580156104bb573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906104df9190611f44565b610e6f565b90508473ffffffffffffffffffffffffffffffffffffffff1663a9059cbb85836040518363ffffffff1660e01b8152600401610521929190611ea8565b6020604051808303815f875af115801561053d573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906105619190611ee3565b505050505050565b5f8054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b61059584610f3e565b8373ffffffffffffffffffffffffffffffffffffffff166323b872dd3330856040518463ffffffff1660e01b81526004016105d293929190611f6f565b6020604051808303815f875af11580156105ee573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906106129190611ee3565b505f61068c838673ffffffffffffffffffffffffffffffffffffffff1663313ce5676040518163ffffffff1660e01b8152600401602060405180830381865afa158015610661573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906106859190611f44565b6006610e6f565b905060015f8673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166340c10f1930836040518363ffffffff1660e01b8152600401610725929190611ea8565b5f604051808303815f87803b15801561073c575f80fd5b505af115801561074e573d5f803e3d5ffd5b5050505060015f60148282829054906101000a900467ffffffffffffffff166107779190611fd1565b92506101000a81548167ffffffffffffffff021916908367ffffffffffffffff16021790555060405180606001604052803373ffffffffffffffffffffffffffffffffffffffff1681526020018673ffffffffffffffffffffffffffffffffffffffff1681526020018281525060025f8060149054906101000a900467ffffffffffffffff1667ffffffffffffffff1667ffffffffffffffff1681526020019081526020015f205f820151815f015f6101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055506020820151816001015f6101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550604082015181600201559050505f61091f8760015f8973ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff16848689611278565b905060f173ffffffffffffffffffffffffffffffffffffffff1663d46f64e6826040518263ffffffff1660e01b815260040161095b919061205c565b6020604051808303815f875af1158015610977573d5f803e3d5ffd5b505050506040513d601f19601f8201168201806040525081019061099b9190611ee3565b5050505050505050565b7f000000000000000000000000000000000000000000000000000000000000000081565b6001602052805f5260405f205f915054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b5f8054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff1614610a4f575f80fd5b5f73ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff1603610a86575f80fd5b8073ffffffffffffffffffffffffffffffffffffffff165f8054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a3805f806101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555050565b5f60025f8367ffffffffffffffff1667ffffffffffffffff1681526020019081526020015f206040518060600160405290815f82015f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001600182015f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200160028201548152505090505f60015f836020015173ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1690505f73ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff1603610cf9576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610cf090611e7b565b60405180910390fd5b8073ffffffffffffffffffffffffffffffffffffffff166342966c6883604001516040518263ffffffff1660e01b8152600401610d36919061207c565b5f604051808303815f87803b158015610d4d575f80fd5b505af1158015610d5f573d5f803e3d5ffd5b505050505f610de483604001516006856020015173ffffffffffffffffffffffffffffffffffffffff1663313ce5676040518163ffffffff1660e01b8152600401602060405180830381865afa158015610dbb573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190610ddf9190611f44565b610e6f565b9050826020015173ffffffffffffffffffffffffffffffffffffffff1663a9059cbb845f0151836040518363ffffffff1660e01b8152600401610e28929190611ea8565b6020604051808303815f875af1158015610e44573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190610e689190611ee3565b5050505050565b5f8160ff168360ff161115610eb0575f8284610e8b9190612095565b60ff16600a610e9a91906121f8565b90508085610ea8919061226f565b915050610ef5565b8160ff168360ff161015610ef0575f8383610ecb9190612095565b60ff16600a610eda91906121f8565b90508085610ee8919061229f565b915050610ef4565b8390505b5b5f8103610f37576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610f2e9061232a565b60405180910390fd5b9392505050565b5f73ffffffffffffffffffffffffffffffffffffffff1660015f8373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1603611275575f7f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff166306ef1a866040518060400160405280600781526020017f57726170706564000000000000000000000000000000000000000000000000008152508473ffffffffffffffffffffffffffffffffffffffff166306fdde036040518163ffffffff1660e01b81526004015f60405180830381865afa158015611088573d5f803e3d5ffd5b505050506040513d5f823e3d601f19601f820116820180604052508101906110b091906123b6565b6040516020016110c1929190612437565b6040516020818303038152906040526040518060400160405280600181526020017f57000000000000000000000000000000000000000000000000000000000000008152508573ffffffffffffffffffffffffffffffffffffffff166395d89b416040518163ffffffff1660e01b81526004015f60405180830381865afa15801561114e573d5f803e3d5ffd5b505050506040513d5f823e3d601f19601f8201168201806040525081019061117691906123b6565b604051602001611187929190612437565b60405160208183030381529060405260066040518463ffffffff1660e01b81526004016111b693929190612469565b6020604051808303815f875af11580156111d2573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906111f691906124c0565b90508060015f8473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f6101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550505b50565b60608560f173ffffffffffffffffffffffffffffffffffffffff166381cf0f6a876040518263ffffffff1660e01b81526004016112b59190611af0565b5f604051808303815f875af11580156112d0573d5f803e3d5ffd5b505050506040513d5f823e3d601f19601f820116820180604052508101906112f891906123b6565b611301866113ea565b60f173ffffffffffffffffffffffffffffffffffffffff16636af32a55306040518263ffffffff1660e01b815260040161133b9190611af0565b5f604051808303815f875af1158015611356573d5f803e3d5ffd5b505050506040513d5f823e3d601f19601f8201168201806040525081019061137e91906123b6565b85611388886113ea565b6113b05f60149054906101000a900467ffffffffffffffff1667ffffffffffffffff166113ea565b6113b9306114b4565b6040516020016113d098979695949392919061298f565b604051602081830303815290604052905095945050505050565b60605f60016113f8846114e1565b0190505f8167ffffffffffffffff81111561141657611415611b21565b5b6040519080825280601f01601f1916602001820160405280156114485781602001600182028036833780820191505090505b5090505f82602001820190505b6001156114a9578080600190039150507f3031323334353637383961626364656600000000000000000000000000000000600a86061a8153600a858161149e5761149d612242565b5b0494505f8503611455575b819350505050919050565b60606114da8273ffffffffffffffffffffffffffffffffffffffff16601460ff16611632565b9050919050565b5f805f90507a184f03e93ff9f4daa797ed6e38ed64bf6a1f010000000000000000831061153d577a184f03e93ff9f4daa797ed6e38ed64bf6a1f010000000000000000838161153357611532612242565b5b0492506040810190505b6d04ee2d6d415b85acef8100000000831061157a576d04ee2d6d415b85acef810000000083816115705761156f612242565b5b0492506020810190505b662386f26fc1000083106115a957662386f26fc10000838161159f5761159e612242565b5b0492506010810190505b6305f5e10083106115d2576305f5e10083816115c8576115c7612242565b5b0492506008810190505b61271083106115f75761271083816115ed576115ec612242565b5b0492506004810190505b6064831061161a57606483816116105761160f612242565b5b0492506002810190505b600a8310611629576001810190505b80915050919050565b60605f8390505f6002846002611648919061229f565b6116529190612ac6565b67ffffffffffffffff81111561166b5761166a611b21565b5b6040519080825280601f01601f19166020018201604052801561169d5781602001600182028036833780820191505090505b5090507f3000000000000000000000000000000000000000000000000000000000000000815f815181106116d4576116d3612af9565b5b60200101907effffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff191690815f1a9053507f78000000000000000000000000000000000000000000000000000000000000008160018151811061173757611736612af9565b5b60200101907effffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff191690815f1a9053505f6001856002611775919061229f565b61177f9190612ac6565b90505b600181111561181e577f3031323334353637383961626364656600000000000000000000000000000000600f8416601081106117c1576117c0612af9565b5b1a60f81b8282815181106117d8576117d7612af9565b5b60200101907effffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff191690815f1a905350600483901c92508061181790612b26565b9050611782565b505f82146118655784846040517fe22e27eb00000000000000000000000000000000000000000000000000000000815260040161185c929190612b4d565b60405180910390fd5b809250505092915050565b5f604051905090565b5f80fd5b5f80fd5b5f7fffffffff0000000000000000000000000000000000000000000000000000000082169050919050565b6118b581611881565b81146118bf575f80fd5b50565b5f813590506118d0816118ac565b92915050565b5f602082840312156118eb576118ea611879565b5b5f6118f8848285016118c2565b91505092915050565b5f8115159050919050565b61191581611901565b82525050565b5f60208201905061192e5f83018461190c565b92915050565b5f67ffffffffffffffff82169050919050565b61195081611934565b811461195a575f80fd5b50565b5f8135905061196b81611947565b92915050565b61197a81611901565b8114611984575f80fd5b50565b5f8135905061199581611971565b92915050565b5f80604083850312156119b1576119b0611879565b5b5f6119be8582860161195d565b92505060206119cf85828601611987565b9150509250929050565b5f602082840312156119ee576119ed611879565b5b5f6119fb8482850161195d565b91505092915050565b5f73ffffffffffffffffffffffffffffffffffffffff82169050919050565b5f611a2d82611a04565b9050919050565b611a3d81611a23565b8114611a47575f80fd5b50565b5f81359050611a5881611a34565b92915050565b5f819050919050565b611a7081611a5e565b8114611a7a575f80fd5b50565b5f81359050611a8b81611a67565b92915050565b5f805f60608486031215611aa857611aa7611879565b5b5f611ab586828701611a4a565b9350506020611ac686828701611a4a565b9250506040611ad786828701611a7d565b9150509250925092565b611aea81611a23565b82525050565b5f602082019050611b035f830184611ae1565b92915050565b5f80fd5b5f80fd5b5f601f19601f8301169050919050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52604160045260245ffd5b611b5782611b11565b810181811067ffffffffffffffff82111715611b7657611b75611b21565b5b80604052505050565b5f611b88611870565b9050611b948282611b4e565b919050565b5f67ffffffffffffffff821115611bb357611bb2611b21565b5b611bbc82611b11565b9050602081019050919050565b828183375f83830152505050565b5f611be9611be484611b99565b611b7f565b905082815260208101848484011115611c0557611c04611b0d565b5b611c10848285611bc9565b509392505050565b5f82601f830112611c2c57611c2b611b09565b5b8135611c3c848260208601611bd7565b91505092915050565b5f805f805f60a08688031215611c5e57611c5d611879565b5b5f86013567ffffffffffffffff811115611c7b57611c7a61187d565b5b611c8788828901611c18565b9550506020611c9888828901611a4a565b945050604086013567ffffffffffffffff811115611cb957611cb861187d565b5b611cc588828901611c18565b9350506060611cd688828901611a7d565b9250506080611ce788828901611a7d565b9150509295509295909350565b5f819050919050565b5f611d17611d12611d0d84611a04565b611cf4565b611a04565b9050919050565b5f611d2882611cfd565b9050919050565b5f611d3982611d1e565b9050919050565b611d4981611d2f565b82525050565b5f602082019050611d625f830184611d40565b92915050565b5f60208284031215611d7d57611d7c611879565b5b5f611d8a84828501611a4a565b91505092915050565b5f82825260208201905092915050565b7f6f6e6c792074686520636f6e747261637420697473656c662063616e2063616c5f8201527f6c20746869732066756e6374696f6e0000000000000000000000000000000000602082015250565b5f611dfd602f83611d93565b9150611e0882611da3565b604082019050919050565b5f6020820190508181035f830152611e2a81611df1565b9050919050565b7f7772617070656420746f6b656e20646f65736e277420657869737400000000005f82015250565b5f611e65601b83611d93565b9150611e7082611e31565b602082019050919050565b5f6020820190508181035f830152611e9281611e59565b9050919050565b611ea281611a5e565b82525050565b5f604082019050611ebb5f830185611ae1565b611ec86020830184611e99565b9392505050565b5f81519050611edd81611971565b92915050565b5f60208284031215611ef857611ef7611879565b5b5f611f0584828501611ecf565b91505092915050565b5f60ff82169050919050565b611f2381611f0e565b8114611f2d575f80fd5b50565b5f81519050611f3e81611f1a565b92915050565b5f60208284031215611f5957611f58611879565b5b5f611f6684828501611f30565b91505092915050565b5f606082019050611f825f830186611ae1565b611f8f6020830185611ae1565b611f9c6040830184611e99565b949350505050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52601160045260245ffd5b5f611fdb82611934565b9150611fe683611934565b9250828201905067ffffffffffffffff81111561200657612005611fa4565b5b92915050565b5f81519050919050565b8281835e5f83830152505050565b5f61202e8261200c565b6120388185611d93565b9350612048818560208601612016565b61205181611b11565b840191505092915050565b5f6020820190508181035f8301526120748184612024565b905092915050565b5f60208201905061208f5f830184611e99565b92915050565b5f61209f82611f0e565b91506120aa83611f0e565b9250828203905060ff8111156120c3576120c2611fa4565b5b92915050565b5f8160011c9050919050565b5f808291508390505b600185111561211e578086048111156120fa576120f9611fa4565b5b60018516156121095780820291505b8081029050612117856120c9565b94506120de565b94509492505050565b5f8261213657600190506121f1565b81612143575f90506121f1565b8160018114612159576002811461216357612192565b60019150506121f1565b60ff84111561217557612174611fa4565b5b8360020a91508482111561218c5761218b611fa4565b5b506121f1565b5060208310610133831016604e8410600b84101617156121c75782820a9050838111156121c2576121c1611fa4565b5b6121f1565b6121d484848460016120d5565b925090508184048111156121eb576121ea611fa4565b5b81810290505b9392505050565b5f61220282611a5e565b915061220d83611a5e565b925061223a7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff8484612127565b905092915050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52601260045260245ffd5b5f61227982611a5e565b915061228483611a5e565b92508261229457612293612242565b5b828204905092915050565b5f6122a982611a5e565b91506122b483611a5e565b92508282026122c281611a5e565b915082820484148315176122d9576122d8611fa4565b5b5092915050565b7f636f6e76657274656420616d6f756e74206973207a65726f00000000000000005f82015250565b5f612314601883611d93565b915061231f826122e0565b602082019050919050565b5f6020820190508181035f83015261234181612308565b9050919050565b5f61235a61235584611b99565b611b7f565b90508281526020810184848401111561237657612375611b0d565b5b612381848285612016565b509392505050565b5f82601f83011261239d5761239c611b09565b5b81516123ad848260208601612348565b91505092915050565b5f602082840312156123cb576123ca611879565b5b5f82015167ffffffffffffffff8111156123e8576123e761187d565b5b6123f484828501612389565b91505092915050565b5f81905092915050565b5f6124118261200c565b61241b81856123fd565b935061242b818560208601612016565b80840191505092915050565b5f6124428285612407565b915061244e8284612407565b91508190509392505050565b61246381611f0e565b82525050565b5f6060820190508181035f8301526124818186612024565b905081810360208301526124958185612024565b90506124a4604083018461245a565b949350505050565b5f815190506124ba81611a34565b92915050565b5f602082840312156124d5576124d4611879565b5b5f6124e2848285016124ac565b91505092915050565b7f7b224074797065223a20222f6962632e6170706c69636174696f6e732e7472615f8201527f6e736665722e76312e4d73675472616e73666572222c00000000000000000000602082015250565b5f6125456036836123fd565b9150612550826124eb565b603682019050919050565b7f22736f757263655f706f7274223a20227472616e73666572222c0000000000005f82015250565b5f61258f601a836123fd565b915061259a8261255b565b601a82019050919050565b7f22736f757263655f6368616e6e656c223a2022000000000000000000000000005f82015250565b5f6125d96013836123fd565b91506125e4826125a5565b601382019050919050565b7f222c0000000000000000000000000000000000000000000000000000000000005f82015250565b5f6126236002836123fd565b915061262e826125ef565b600282019050919050565b7f22746f6b656e223a207b202264656e6f6d223a202200000000000000000000005f82015250565b5f61266d6015836123fd565b915061267882612639565b601582019050919050565b7f22616d6f756e74223a20220000000000000000000000000000000000000000005f82015250565b5f6126b7600b836123fd565b91506126c282612683565b600b82019050919050565b7f227d2c00000000000000000000000000000000000000000000000000000000005f82015250565b5f6127016003836123fd565b915061270c826126cd565b600382019050919050565b7f2273656e646572223a20220000000000000000000000000000000000000000005f82015250565b5f61274b600b836123fd565b915061275682612717565b600b82019050919050565b7f227265636569766572223a2022000000000000000000000000000000000000005f82015250565b5f612795600d836123fd565b91506127a082612761565b600d82019050919050565b7f2274696d656f75745f686569676874223a207b227265766973696f6e5f6e756d5f8201527f626572223a202230222c227265766973696f6e5f686569676874223a2022302260208201527f7d2c000000000000000000000000000000000000000000000000000000000000604082015250565b5f61282b6042836123fd565b9150612836826127ab565b604282019050919050565b7f2274696d656f75745f74696d657374616d70223a2022000000000000000000005f82015250565b5f6128756016836123fd565b915061288082612841565b601682019050919050565b7f226d656d6f223a20227b5c2265766d5c223a207b5c226173796e635f63616c6c5f8201527f6261636b5c223a207b5c2269645c223a20000000000000000000000000000000602082015250565b5f6128e56031836123fd565b91506128f08261288b565b603182019050919050565b7f2c5c22636f6e74726163745f616464726573735c223a5c2200000000000000005f82015250565b5f61292f6018836123fd565b915061293a826128fb565b601882019050919050565b7f5c227d7d7d227d000000000000000000000000000000000000000000000000005f82015250565b5f6129796007836123fd565b915061298482612945565b600782019050919050565b5f61299982612539565b91506129a482612583565b91506129af826125cd565b91506129bb828b612407565b91506129c682612617565b91506129d182612661565b91506129dd828a612407565b91506129e882612617565b91506129f3826126ab565b91506129ff8289612407565b9150612a0a826126f5565b9150612a158261273f565b9150612a218288612407565b9150612a2c82612617565b9150612a3782612789565b9150612a438287612407565b9150612a4e82612617565b9150612a598261281f565b9150612a6482612869565b9150612a708286612407565b9150612a7b82612617565b9150612a86826128d9565b9150612a928285612407565b9150612a9d82612923565b9150612aa98284612407565b9150612ab48261296d565b91508190509998505050505050505050565b5f612ad082611a5e565b9150612adb83611a5e565b9250828201905080821115612af357612af2611fa4565b5b92915050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52603260045260245ffd5b5f612b3082611a5e565b91505f8203612b4257612b41611fa4565b5b600182039050919050565b5f604082019050612b605f830185611e99565b612b6d6020830184611e99565b939250505056fea264697066735822122074041009f25a7a7bd90773db2908687563d68664e74bcdb3ddaa3f6db64e1c5564736f6c63430008190033", + Bin: "0x60a06040525f8060146101000a81548167ffffffffffffffff021916908367ffffffffffffffff160217905550348015610037575f80fd5b50604051612d24380380612d2483398181016040528101906100599190610130565b335f806101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055508073ffffffffffffffffffffffffffffffffffffffff1660808173ffffffffffffffffffffffffffffffffffffffff16815250505061015b565b5f80fd5b5f73ffffffffffffffffffffffffffffffffffffffff82169050919050565b5f6100ff826100d6565b9050919050565b61010f816100f5565b8114610119575f80fd5b50565b5f8151905061012a81610106565b92915050565b5f60208284031215610145576101446100d2565b5b5f6101528482850161011c565b91505092915050565b608051612baa61017a5f395f81816109a70152610fd00152612baa5ff3fe608060405234801561000f575f80fd5b5060043610610091575f3560e01c80638da5cb5b116100645780638da5cb5b146101195780639a11143214610137578063c45a015514610153578063d5c6b50414610171578063f2fde38b146101a157610091565b806301ffc9a7146100955780630d4f1f9d146100c557806331a503f0146100e15780638cc7104f146100fd575b5f80fd5b6100af60048036038101906100aa91906118d6565b6101bd565b6040516100bc919061191b565b60405180910390f35b6100df60048036038101906100da919061199b565b610226565b005b6100fb60048036038101906100f691906119d9565b6102a7565b005b61011760048036038101906101129190611a91565b610321565b005b610121610569565b60405161012e9190611af0565b60405180910390f35b610151600480360381019061014c9190611c45565b61058c565b005b61015b6109a5565b6040516101689190611d4f565b60405180910390f35b61018b60048036038101906101869190611d68565b6109c9565b6040516101989190611af0565b60405180910390f35b6101bb60048036038101906101b69190611d68565b6109f9565b005b5f7f01ffc9a7000000000000000000000000000000000000000000000000000000007bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916827bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916149050919050565b3073ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff1614610294576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161028b90611e13565b60405180910390fd5b806102a3576102a282610b41565b5b5050565b3073ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff1614610315576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161030c90611e13565b60405180910390fd5b61031e81610b41565b50565b5f60015f8573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1690505f73ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff16036103ef576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016103e690611e7b565b60405180910390fd5b8073ffffffffffffffffffffffffffffffffffffffff166379cc679033846040518363ffffffff1660e01b815260040161042a929190611ea8565b6020604051808303815f875af1158015610446573d5f803e3d5ffd5b505050506040513d601f19601f8201168201806040525081019061046a9190611ee3565b505f6104e48360068773ffffffffffffffffffffffffffffffffffffffff1663313ce5676040518163ffffffff1660e01b8152600401602060405180830381865afa1580156104bb573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906104df9190611f44565b610e6f565b90508473ffffffffffffffffffffffffffffffffffffffff1663a9059cbb85836040518363ffffffff1660e01b8152600401610521929190611ea8565b6020604051808303815f875af115801561053d573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906105619190611ee3565b505050505050565b5f8054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b61059584610f3e565b8373ffffffffffffffffffffffffffffffffffffffff166323b872dd3330856040518463ffffffff1660e01b81526004016105d293929190611f6f565b6020604051808303815f875af11580156105ee573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906106129190611ee3565b505f61068c838673ffffffffffffffffffffffffffffffffffffffff1663313ce5676040518163ffffffff1660e01b8152600401602060405180830381865afa158015610661573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906106859190611f44565b6006610e6f565b905060015f8673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166340c10f1930836040518363ffffffff1660e01b8152600401610725929190611ea8565b5f604051808303815f87803b15801561073c575f80fd5b505af115801561074e573d5f803e3d5ffd5b5050505060015f60148282829054906101000a900467ffffffffffffffff166107779190611fd1565b92506101000a81548167ffffffffffffffff021916908367ffffffffffffffff16021790555060405180606001604052803373ffffffffffffffffffffffffffffffffffffffff1681526020018673ffffffffffffffffffffffffffffffffffffffff1681526020018281525060025f8060149054906101000a900467ffffffffffffffff1667ffffffffffffffff1667ffffffffffffffff1681526020019081526020015f205f820151815f015f6101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055506020820151816001015f6101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550604082015181600201559050505f61091f8760015f8973ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff16848689611278565b905060f173ffffffffffffffffffffffffffffffffffffffff1663d46f64e6826040518263ffffffff1660e01b815260040161095b919061205c565b6020604051808303815f875af1158015610977573d5f803e3d5ffd5b505050506040513d601f19601f8201168201806040525081019061099b9190611ee3565b5050505050505050565b7f000000000000000000000000000000000000000000000000000000000000000081565b6001602052805f5260405f205f915054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b5f8054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff1614610a4f575f80fd5b5f73ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff1603610a86575f80fd5b8073ffffffffffffffffffffffffffffffffffffffff165f8054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a3805f806101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555050565b5f60025f8367ffffffffffffffff1667ffffffffffffffff1681526020019081526020015f206040518060600160405290815f82015f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001600182015f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200160028201548152505090505f60015f836020015173ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1690505f73ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff1603610cf9576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610cf090611e7b565b60405180910390fd5b8073ffffffffffffffffffffffffffffffffffffffff166342966c6883604001516040518263ffffffff1660e01b8152600401610d36919061207c565b5f604051808303815f87803b158015610d4d575f80fd5b505af1158015610d5f573d5f803e3d5ffd5b505050505f610de483604001516006856020015173ffffffffffffffffffffffffffffffffffffffff1663313ce5676040518163ffffffff1660e01b8152600401602060405180830381865afa158015610dbb573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190610ddf9190611f44565b610e6f565b9050826020015173ffffffffffffffffffffffffffffffffffffffff1663a9059cbb845f0151836040518363ffffffff1660e01b8152600401610e28929190611ea8565b6020604051808303815f875af1158015610e44573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190610e689190611ee3565b5050505050565b5f8160ff168360ff161115610eb0575f8284610e8b9190612095565b60ff16600a610e9a91906121f8565b90508085610ea8919061226f565b915050610ef5565b8160ff168360ff161015610ef0575f8383610ecb9190612095565b60ff16600a610eda91906121f8565b90508085610ee8919061229f565b915050610ef4565b8390505b5b5f8103610f37576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610f2e9061232a565b60405180910390fd5b9392505050565b5f73ffffffffffffffffffffffffffffffffffffffff1660015f8373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1603611275575f7f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff166306ef1a866040518060400160405280600781526020017f57726170706564000000000000000000000000000000000000000000000000008152508473ffffffffffffffffffffffffffffffffffffffff166306fdde036040518163ffffffff1660e01b81526004015f60405180830381865afa158015611088573d5f803e3d5ffd5b505050506040513d5f823e3d601f19601f820116820180604052508101906110b091906123b6565b6040516020016110c1929190612437565b6040516020818303038152906040526040518060400160405280600181526020017f57000000000000000000000000000000000000000000000000000000000000008152508573ffffffffffffffffffffffffffffffffffffffff166395d89b416040518163ffffffff1660e01b81526004015f60405180830381865afa15801561114e573d5f803e3d5ffd5b505050506040513d5f823e3d601f19601f8201168201806040525081019061117691906123b6565b604051602001611187929190612437565b60405160208183030381529060405260066040518463ffffffff1660e01b81526004016111b693929190612469565b6020604051808303815f875af11580156111d2573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906111f691906124c0565b90508060015f8473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f6101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550505b50565b60608560f173ffffffffffffffffffffffffffffffffffffffff166381cf0f6a876040518263ffffffff1660e01b81526004016112b59190611af0565b5f604051808303815f875af11580156112d0573d5f803e3d5ffd5b505050506040513d5f823e3d601f19601f820116820180604052508101906112f891906123b6565b611301866113ea565b60f173ffffffffffffffffffffffffffffffffffffffff16636af32a55306040518263ffffffff1660e01b815260040161133b9190611af0565b5f604051808303815f875af1158015611356573d5f803e3d5ffd5b505050506040513d5f823e3d601f19601f8201168201806040525081019061137e91906123b6565b85611388886113ea565b6113b05f60149054906101000a900467ffffffffffffffff1667ffffffffffffffff166113ea565b6113b9306114b4565b6040516020016113d098979695949392919061298f565b604051602081830303815290604052905095945050505050565b60605f60016113f8846114e1565b0190505f8167ffffffffffffffff81111561141657611415611b21565b5b6040519080825280601f01601f1916602001820160405280156114485781602001600182028036833780820191505090505b5090505f82602001820190505b6001156114a9578080600190039150507f3031323334353637383961626364656600000000000000000000000000000000600a86061a8153600a858161149e5761149d612242565b5b0494505f8503611455575b819350505050919050565b60606114da8273ffffffffffffffffffffffffffffffffffffffff16601460ff16611632565b9050919050565b5f805f90507a184f03e93ff9f4daa797ed6e38ed64bf6a1f010000000000000000831061153d577a184f03e93ff9f4daa797ed6e38ed64bf6a1f010000000000000000838161153357611532612242565b5b0492506040810190505b6d04ee2d6d415b85acef8100000000831061157a576d04ee2d6d415b85acef810000000083816115705761156f612242565b5b0492506020810190505b662386f26fc1000083106115a957662386f26fc10000838161159f5761159e612242565b5b0492506010810190505b6305f5e10083106115d2576305f5e10083816115c8576115c7612242565b5b0492506008810190505b61271083106115f75761271083816115ed576115ec612242565b5b0492506004810190505b6064831061161a57606483816116105761160f612242565b5b0492506002810190505b600a8310611629576001810190505b80915050919050565b60605f8390505f6002846002611648919061229f565b6116529190612ac6565b67ffffffffffffffff81111561166b5761166a611b21565b5b6040519080825280601f01601f19166020018201604052801561169d5781602001600182028036833780820191505090505b5090507f3000000000000000000000000000000000000000000000000000000000000000815f815181106116d4576116d3612af9565b5b60200101907effffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff191690815f1a9053507f78000000000000000000000000000000000000000000000000000000000000008160018151811061173757611736612af9565b5b60200101907effffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff191690815f1a9053505f6001856002611775919061229f565b61177f9190612ac6565b90505b600181111561181e577f3031323334353637383961626364656600000000000000000000000000000000600f8416601081106117c1576117c0612af9565b5b1a60f81b8282815181106117d8576117d7612af9565b5b60200101907effffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff191690815f1a905350600483901c92508061181790612b26565b9050611782565b505f82146118655784846040517fe22e27eb00000000000000000000000000000000000000000000000000000000815260040161185c929190612b4d565b60405180910390fd5b809250505092915050565b5f604051905090565b5f80fd5b5f80fd5b5f7fffffffff0000000000000000000000000000000000000000000000000000000082169050919050565b6118b581611881565b81146118bf575f80fd5b50565b5f813590506118d0816118ac565b92915050565b5f602082840312156118eb576118ea611879565b5b5f6118f8848285016118c2565b91505092915050565b5f8115159050919050565b61191581611901565b82525050565b5f60208201905061192e5f83018461190c565b92915050565b5f67ffffffffffffffff82169050919050565b61195081611934565b811461195a575f80fd5b50565b5f8135905061196b81611947565b92915050565b61197a81611901565b8114611984575f80fd5b50565b5f8135905061199581611971565b92915050565b5f80604083850312156119b1576119b0611879565b5b5f6119be8582860161195d565b92505060206119cf85828601611987565b9150509250929050565b5f602082840312156119ee576119ed611879565b5b5f6119fb8482850161195d565b91505092915050565b5f73ffffffffffffffffffffffffffffffffffffffff82169050919050565b5f611a2d82611a04565b9050919050565b611a3d81611a23565b8114611a47575f80fd5b50565b5f81359050611a5881611a34565b92915050565b5f819050919050565b611a7081611a5e565b8114611a7a575f80fd5b50565b5f81359050611a8b81611a67565b92915050565b5f805f60608486031215611aa857611aa7611879565b5b5f611ab586828701611a4a565b9350506020611ac686828701611a4a565b9250506040611ad786828701611a7d565b9150509250925092565b611aea81611a23565b82525050565b5f602082019050611b035f830184611ae1565b92915050565b5f80fd5b5f80fd5b5f601f19601f8301169050919050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52604160045260245ffd5b611b5782611b11565b810181811067ffffffffffffffff82111715611b7657611b75611b21565b5b80604052505050565b5f611b88611870565b9050611b948282611b4e565b919050565b5f67ffffffffffffffff821115611bb357611bb2611b21565b5b611bbc82611b11565b9050602081019050919050565b828183375f83830152505050565b5f611be9611be484611b99565b611b7f565b905082815260208101848484011115611c0557611c04611b0d565b5b611c10848285611bc9565b509392505050565b5f82601f830112611c2c57611c2b611b09565b5b8135611c3c848260208601611bd7565b91505092915050565b5f805f805f60a08688031215611c5e57611c5d611879565b5b5f86013567ffffffffffffffff811115611c7b57611c7a61187d565b5b611c8788828901611c18565b9550506020611c9888828901611a4a565b945050604086013567ffffffffffffffff811115611cb957611cb861187d565b5b611cc588828901611c18565b9350506060611cd688828901611a7d565b9250506080611ce788828901611a7d565b9150509295509295909350565b5f819050919050565b5f611d17611d12611d0d84611a04565b611cf4565b611a04565b9050919050565b5f611d2882611cfd565b9050919050565b5f611d3982611d1e565b9050919050565b611d4981611d2f565b82525050565b5f602082019050611d625f830184611d40565b92915050565b5f60208284031215611d7d57611d7c611879565b5b5f611d8a84828501611a4a565b91505092915050565b5f82825260208201905092915050565b7f6f6e6c792074686520636f6e747261637420697473656c662063616e2063616c5f8201527f6c20746869732066756e6374696f6e0000000000000000000000000000000000602082015250565b5f611dfd602f83611d93565b9150611e0882611da3565b604082019050919050565b5f6020820190508181035f830152611e2a81611df1565b9050919050565b7f7772617070656420746f6b656e20646f65736e277420657869737400000000005f82015250565b5f611e65601b83611d93565b9150611e7082611e31565b602082019050919050565b5f6020820190508181035f830152611e9281611e59565b9050919050565b611ea281611a5e565b82525050565b5f604082019050611ebb5f830185611ae1565b611ec86020830184611e99565b9392505050565b5f81519050611edd81611971565b92915050565b5f60208284031215611ef857611ef7611879565b5b5f611f0584828501611ecf565b91505092915050565b5f60ff82169050919050565b611f2381611f0e565b8114611f2d575f80fd5b50565b5f81519050611f3e81611f1a565b92915050565b5f60208284031215611f5957611f58611879565b5b5f611f6684828501611f30565b91505092915050565b5f606082019050611f825f830186611ae1565b611f8f6020830185611ae1565b611f9c6040830184611e99565b949350505050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52601160045260245ffd5b5f611fdb82611934565b9150611fe683611934565b9250828201905067ffffffffffffffff81111561200657612005611fa4565b5b92915050565b5f81519050919050565b8281835e5f83830152505050565b5f61202e8261200c565b6120388185611d93565b9350612048818560208601612016565b61205181611b11565b840191505092915050565b5f6020820190508181035f8301526120748184612024565b905092915050565b5f60208201905061208f5f830184611e99565b92915050565b5f61209f82611f0e565b91506120aa83611f0e565b9250828203905060ff8111156120c3576120c2611fa4565b5b92915050565b5f8160011c9050919050565b5f808291508390505b600185111561211e578086048111156120fa576120f9611fa4565b5b60018516156121095780820291505b8081029050612117856120c9565b94506120de565b94509492505050565b5f8261213657600190506121f1565b81612143575f90506121f1565b8160018114612159576002811461216357612192565b60019150506121f1565b60ff84111561217557612174611fa4565b5b8360020a91508482111561218c5761218b611fa4565b5b506121f1565b5060208310610133831016604e8410600b84101617156121c75782820a9050838111156121c2576121c1611fa4565b5b6121f1565b6121d484848460016120d5565b925090508184048111156121eb576121ea611fa4565b5b81810290505b9392505050565b5f61220282611a5e565b915061220d83611a5e565b925061223a7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff8484612127565b905092915050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52601260045260245ffd5b5f61227982611a5e565b915061228483611a5e565b92508261229457612293612242565b5b828204905092915050565b5f6122a982611a5e565b91506122b483611a5e565b92508282026122c281611a5e565b915082820484148315176122d9576122d8611fa4565b5b5092915050565b7f636f6e76657274656420616d6f756e74206973207a65726f00000000000000005f82015250565b5f612314601883611d93565b915061231f826122e0565b602082019050919050565b5f6020820190508181035f83015261234181612308565b9050919050565b5f61235a61235584611b99565b611b7f565b90508281526020810184848401111561237657612375611b0d565b5b612381848285612016565b509392505050565b5f82601f83011261239d5761239c611b09565b5b81516123ad848260208601612348565b91505092915050565b5f602082840312156123cb576123ca611879565b5b5f82015167ffffffffffffffff8111156123e8576123e761187d565b5b6123f484828501612389565b91505092915050565b5f81905092915050565b5f6124118261200c565b61241b81856123fd565b935061242b818560208601612016565b80840191505092915050565b5f6124428285612407565b915061244e8284612407565b91508190509392505050565b61246381611f0e565b82525050565b5f6060820190508181035f8301526124818186612024565b905081810360208301526124958185612024565b90506124a4604083018461245a565b949350505050565b5f815190506124ba81611a34565b92915050565b5f602082840312156124d5576124d4611879565b5b5f6124e2848285016124ac565b91505092915050565b7f7b224074797065223a20222f6962632e6170706c69636174696f6e732e7472615f8201527f6e736665722e76312e4d73675472616e73666572222c00000000000000000000602082015250565b5f6125456036836123fd565b9150612550826124eb565b603682019050919050565b7f22736f757263655f706f7274223a20227472616e73666572222c0000000000005f82015250565b5f61258f601a836123fd565b915061259a8261255b565b601a82019050919050565b7f22736f757263655f6368616e6e656c223a2022000000000000000000000000005f82015250565b5f6125d96013836123fd565b91506125e4826125a5565b601382019050919050565b7f222c0000000000000000000000000000000000000000000000000000000000005f82015250565b5f6126236002836123fd565b915061262e826125ef565b600282019050919050565b7f22746f6b656e223a207b202264656e6f6d223a202200000000000000000000005f82015250565b5f61266d6015836123fd565b915061267882612639565b601582019050919050565b7f22616d6f756e74223a20220000000000000000000000000000000000000000005f82015250565b5f6126b7600b836123fd565b91506126c282612683565b600b82019050919050565b7f227d2c00000000000000000000000000000000000000000000000000000000005f82015250565b5f6127016003836123fd565b915061270c826126cd565b600382019050919050565b7f2273656e646572223a20220000000000000000000000000000000000000000005f82015250565b5f61274b600b836123fd565b915061275682612717565b600b82019050919050565b7f227265636569766572223a2022000000000000000000000000000000000000005f82015250565b5f612795600d836123fd565b91506127a082612761565b600d82019050919050565b7f2274696d656f75745f686569676874223a207b227265766973696f6e5f6e756d5f8201527f626572223a202230222c227265766973696f6e5f686569676874223a2022302260208201527f7d2c000000000000000000000000000000000000000000000000000000000000604082015250565b5f61282b6042836123fd565b9150612836826127ab565b604282019050919050565b7f2274696d656f75745f74696d657374616d70223a2022000000000000000000005f82015250565b5f6128756016836123fd565b915061288082612841565b601682019050919050565b7f226d656d6f223a20227b5c2265766d5c223a207b5c226173796e635f63616c6c5f8201527f6261636b5c223a207b5c2269645c223a20000000000000000000000000000000602082015250565b5f6128e56031836123fd565b91506128f08261288b565b603182019050919050565b7f2c5c22636f6e74726163745f616464726573735c223a5c2200000000000000005f82015250565b5f61292f6018836123fd565b915061293a826128fb565b601882019050919050565b7f5c227d7d7d227d000000000000000000000000000000000000000000000000005f82015250565b5f6129796007836123fd565b915061298482612945565b600782019050919050565b5f61299982612539565b91506129a482612583565b91506129af826125cd565b91506129bb828b612407565b91506129c682612617565b91506129d182612661565b91506129dd828a612407565b91506129e882612617565b91506129f3826126ab565b91506129ff8289612407565b9150612a0a826126f5565b9150612a158261273f565b9150612a218288612407565b9150612a2c82612617565b9150612a3782612789565b9150612a438287612407565b9150612a4e82612617565b9150612a598261281f565b9150612a6482612869565b9150612a708286612407565b9150612a7b82612617565b9150612a86826128d9565b9150612a928285612407565b9150612a9d82612923565b9150612aa98284612407565b9150612ab48261296d565b91508190509998505050505050505050565b5f612ad082611a5e565b9150612adb83611a5e565b9250828201905080821115612af357612af2611fa4565b5b92915050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52603260045260245ffd5b5f612b3082611a5e565b91505f8203612b4257612b41611fa4565b5b600182039050919050565b5f604082019050612b605f830185611e99565b612b6d6020830184611e99565b939250505056fea2646970667358221220d103039d204e43b370e928a286653a17efd833afe3cacd01f6f8b918b0be85e764736f6c63430008190033", } // Erc20WrapperABI is the input ABI used to generate the binding from.