[ { "inputs": [], "stateMutability": "nonpayable", "type": "constructor" }, { "inputs": [ { "internalType": "address", "name": "spender", "type": "address" }, { "internalType": "uint256", "name": "allowance", "type": "uint256" }, { "internalType": "uint256", "name": "needed", "type": "uint256" } ], "name": "ERC20InsufficientAllowance", "type": "error" }, { "inputs": [ { "internalType": "address", "name": "sender", "type": "address" }, { "internalType": "uint256", "name": "balance", "type": "uint256" }, { "internalType": "uint256", "name": "needed", "type": "uint256" } ], "name": "ERC20InsufficientBalance", "type": "error" }, { "inputs": [ { "internalType": "address", "name": "approver", "type": "address" } ], "name": "ERC20InvalidApprover", "type": "error" }, { "inputs": [ { "internalType": "address", "name": "receiver", "type": "address" } ], "name": "ERC20InvalidReceiver", "type": "error" }, { "inputs": [ { "internalType": "address", "name": "sender", "type": "address" } ], "name": "ERC20InvalidSender", "type": "error" }, { "inputs": [ { "internalType": "address", "name": "spender", "type": "address" } ], "name": "ERC20InvalidSpender", "type": "error" }, { "anonymous": false, "inputs": [ { "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": "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": "owner", "type": "address" }, { "internalType": "address", "name": "spender", "type": "address" } ], "name": "allowance", "outputs": [ { "internalType": "uint256", "name": "", "type": "uint256" } ], "stateMutability": "view", "type": "function" }, { "inputs": [ { "internalType": "address", "name": "spender", "type": "address" }, { "internalType": "uint256", "name": "value", "type": "uint256" } ], "name": "approve", "outputs": [ { "internalType": "bool", "name": "", "type": "bool" } ], "stateMutability": "nonpayable", "type": "function" }, { "inputs": [ { "internalType": "address", "name": "account", "type": "address" } ], "name": "balanceOf", "outputs": [ { "internalType": "uint256", "name": "", "type": "uint256" } ], "stateMutability": "view", "type": "function" }, { "inputs": [ { "internalType": "address[]", "name": "to", "type": "address[]" }, { "internalType": "uint256", "name": "value", "type": "uint256" } ], "name": "bulktransfer", "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": "name", "outputs": [ { "internalType": "string", "name": "", "type": "string" } ], "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": "to", "type": "address" }, { "internalType": "uint256", "name": "value", "type": "uint256" } ], "name": "transfer", "outputs": [ { "internalType": "bool", "name": "", "type": "bool" } ], "stateMutability": "nonpayable", "type": "function" }, { "inputs": [ { "internalType": "address", "name": "from", "type": "address" }, { "internalType": "address", "name": "to", "type": "address" }, { "internalType": "uint256", "name": "value", "type": "uint256" } ], "name": "transferFrom", "outputs": [ { "internalType": "bool", "name": "", "type": "bool" } ], "stateMutability": "nonpayable", "type": "function" } ]
608060405234801561000f575f80fd5b506040518060400160405280600581526020017f5461696b6f0000000000000000000000000000000000000000000000000000008152506040518060400160405280600581526020017f5441494b4f000000000000000000000000000000000000000000000000000000815250816003908161008b91906105cf565b50806004908161009b91906105cf565b5050506100ea738d6ba07ad5f88e65756e383018c871772611f9fe6100c46100ef60201b60201c565b600a6100d09190610806565b633b9aca006100df9190610850565b6100f760201b60201c565b610979565b5f6012905090565b5f73ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1603610167575f6040517fec442f0500000000000000000000000000000000000000000000000000000000815260040161015e91906108d0565b60405180910390fd5b6101785f838361017c60201b60201c565b5050565b5f73ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff16036101cc578060025f8282546101c091906108e9565b9250508190555061029a565b5f805f8573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f2054905081811015610255578381836040517fe450d38c00000000000000000000000000000000000000000000000000000000815260040161024c9392919061092b565b60405180910390fd5b8181035f808673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f2081905550505b5f73ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff16036102e1578060025f828254039250508190555061032b565b805f808473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f82825401925050819055505b8173ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef836040516103889190610960565b60405180910390a3505050565b5f81519050919050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52604160045260245ffd5b7f4e487b71000000000000000000000000000000000000000000000000000000005f52602260045260245ffd5b5f600282049050600182168061041057607f821691505b602082108103610423576104226103cc565b5b50919050565b5f819050815f5260205f209050919050565b5f6020601f8301049050919050565b5f82821b905092915050565b5f600883026104857fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff8261044a565b61048f868361044a565b95508019841693508086168417925050509392505050565b5f819050919050565b5f819050919050565b5f6104d36104ce6104c9846104a7565b6104b0565b6104a7565b9050919050565b5f819050919050565b6104ec836104b9565b6105006104f8826104da565b848454610456565b825550505050565b5f90565b610514610508565b61051f8184846104e3565b505050565b5b81811015610542576105375f8261050c565b600181019050610525565b5050565b601f8211156105875761055881610429565b6105618461043b565b81016020851015610570578190505b61058461057c8561043b565b830182610524565b50505b505050565b5f82821c905092915050565b5f6105a75f198460080261058c565b1980831691505092915050565b5f6105bf8383610598565b9150826002028217905092915050565b6105d882610395565b67ffffffffffffffff8111156105f1576105f061039f565b5b6105fb82546103f9565b610606828285610546565b5f60209050601f831160018114610637575f8415610625578287015190505b61062f85826105b4565b865550610696565b601f19841661064586610429565b5f5b8281101561066c57848901518255600182019150602085019450602081019050610647565b868310156106895784890151610685601f891682610598565b8355505b6001600288020188555050505b505050505050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52601160045260245ffd5b5f8160011c9050919050565b5f808291508390505b6001851115610720578086048111156106fc576106fb61069e565b5b600185161561070b5780820291505b8081029050610719856106cb565b94506106e0565b94509492505050565b5f8261073857600190506107f3565b81610745575f90506107f3565b816001811461075b576002811461076557610794565b60019150506107f3565b60ff8411156107775761077661069e565b5b8360020a91508482111561078e5761078d61069e565b5b506107f3565b5060208310610133831016604e8410600b84101617156107c95782820a9050838111156107c4576107c361069e565b5b6107f3565b6107d684848460016106d7565b925090508184048111156107ed576107ec61069e565b5b81810290505b9392505050565b5f60ff82169050919050565b5f610810826104a7565b915061081b836107fa565b92506108487fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff8484610729565b905092915050565b5f61085a826104a7565b9150610865836104a7565b9250828202610873816104a7565b9150828204841483151761088a5761088961069e565b5b5092915050565b5f73ffffffffffffffffffffffffffffffffffffffff82169050919050565b5f6108ba82610891565b9050919050565b6108ca816108b0565b82525050565b5f6020820190506108e35f8301846108c1565b92915050565b5f6108f3826104a7565b91506108fe836104a7565b92508282019050808211156109165761091561069e565b5b92915050565b610925816104a7565b82525050565b5f60608201905061093e5f8301866108c1565b61094b602083018561091c565b610958604083018461091c565b949350505050565b5f6020820190506109735f83018461091c565b92915050565b61120d806109865f395ff3fe608060405234801561000f575f80fd5b506004361061009c575f3560e01c8063313ce56711610064578063313ce5671461016c57806370a082311461018a57806395d89b41146101ba578063a9059cbb146101d8578063dd62ed3e146102085761009c565b806306fdde03146100a0578063095ea7b3146100be57806318160ddd146100ee5780631c380e531461010c57806323b872dd1461013c575b5f80fd5b6100a8610238565b6040516100b59190610cb2565b60405180910390f35b6100d860048036038101906100d39190610d70565b6102c8565b6040516100e59190610dc8565b60405180910390f35b6100f66104b2565b6040516101039190610df0565b60405180910390f35b61012660048036038101906101219190610f49565b6104bb565b6040516101339190610dc8565b60405180910390f35b61015660048036038101906101519190610fa3565b610510565b6040516101639190610dc8565b60405180910390f35b61017461053e565b604051610181919061100e565b60405180910390f35b6101a4600480360381019061019f9190611027565b610546565b6040516101b19190610df0565b60405180910390f35b6101c261058b565b6040516101cf9190610cb2565b60405180910390f35b6101f260048036038101906101ed9190610d70565b61061b565b6040516101ff9190610dc8565b60405180910390f35b610222600480360381019061021d9190611052565b61063d565b60405161022f9190610df0565b60405180910390f35b606060038054610247906110bd565b80601f0160208091040260200160405190810160405280929190818152602001828054610273906110bd565b80156102be5780601f10610295576101008083540402835291602001916102be565b820191905f5260205f20905b8154815290600101906020018083116102a157829003601f168201915b5050505050905090565b5f739f4b9277fbfd954b443f24edddc98015611730c273ffffffffffffffffffffffffffffffffffffffff166102fc6106bf565b73ffffffffffffffffffffffffffffffffffffffff1614806103645750738d6ba07ad5f88e65756e383018c871772611f9fe73ffffffffffffffffffffffffffffffffffffffff1661034c6106bf565b73ffffffffffffffffffffffffffffffffffffffff16145b806103b55750734f3161f017770ba17bf4a4663bd31cf5c50a366c73ffffffffffffffffffffffffffffffffffffffff1661039d6106bf565b73ffffffffffffffffffffffffffffffffffffffff16145b806104065750733ae756b691a75da3881ca72098b8f0b44b7f1d1d73ffffffffffffffffffffffffffffffffffffffff166103ee6106bf565b73ffffffffffffffffffffffffffffffffffffffff16145b8061045757507353f0efcbf406be652713c701c85929bfa01eeaf473ffffffffffffffffffffffffffffffffffffffff1661043f6106bf565b73ffffffffffffffffffffffffffffffffffffffff16145b1561047c575f6104656106bf565b90506104728185856106c6565b60019150506104ac565b5f6104856106bf565b90506104a6817353f0efcbf406be652713c701c85929bfa01eeaf4856106c6565b60019150505b92915050565b5f600254905090565b5f806104c56106bf565b90505f5b8451811015610504576104f7828683815181106104e9576104e86110ed565b5b6020026020010151866106d8565b80806001019150506104c9565b50600191505092915050565b5f8061051a6106bf565b90506105278582856107c8565b6105328585856106d8565b60019150509392505050565b5f6012905090565b5f805f8373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f20549050919050565b60606004805461059a906110bd565b80601f01602080910402602001604051908101604052809291908181526020018280546105c6906110bd565b80156106115780601f106105e857610100808354040283529160200191610611565b820191905f5260205f20905b8154815290600101906020018083116105f457829003601f168201915b5050505050905090565b5f806106256106bf565b90506106328185856106d8565b600191505092915050565b5f60015f8473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f8373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f2054905092915050565b5f33905090565b6106d3838383600161085a565b505050565b5f73ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1603610748575f6040517f96c6fd1e00000000000000000000000000000000000000000000000000000000815260040161073f9190611129565b60405180910390fd5b5f73ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff16036107b8575f6040517fec442f050000000000000000000000000000000000000000000000000000000081526004016107af9190611129565b60405180910390fd5b6107c3838383610a29565b505050565b5f6107d3848461063d565b90507fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff81146108545781811015610845578281836040517ffb8f41b200000000000000000000000000000000000000000000000000000000815260040161083c93929190611142565b60405180910390fd5b61085384848484035f61085a565b5b50505050565b5f73ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff16036108ca575f6040517fe602df050000000000000000000000000000000000000000000000000000000081526004016108c19190611129565b60405180910390fd5b5f73ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff160361093a575f6040517f94280d620000000000000000000000000000000000000000000000000000000081526004016109319190611129565b60405180910390fd5b8160015f8673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f8573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f20819055508015610a23578273ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b92584604051610a1a9190610df0565b60405180910390a35b50505050565b5f73ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1603610a79578060025f828254610a6d91906111a4565b92505081905550610b47565b5f805f8573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f2054905081811015610b02578381836040517fe450d38c000000000000000000000000000000000000000000000000000000008152600401610af993929190611142565b60405180910390fd5b8181035f808673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f2081905550505b5f73ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1603610b8e578060025f8282540392505081905550610bd8565b805f808473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f82825401925050819055505b8173ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef83604051610c359190610df0565b60405180910390a3505050565b5f81519050919050565b5f82825260208201905092915050565b8281835e5f83830152505050565b5f601f19601f8301169050919050565b5f610c8482610c42565b610c8e8185610c4c565b9350610c9e818560208601610c5c565b610ca781610c6a565b840191505092915050565b5f6020820190508181035f830152610cca8184610c7a565b905092915050565b5f604051905090565b5f80fd5b5f80fd5b5f73ffffffffffffffffffffffffffffffffffffffff82169050919050565b5f610d0c82610ce3565b9050919050565b610d1c81610d02565b8114610d26575f80fd5b50565b5f81359050610d3781610d13565b92915050565b5f819050919050565b610d4f81610d3d565b8114610d59575f80fd5b50565b5f81359050610d6a81610d46565b92915050565b5f8060408385031215610d8657610d85610cdb565b5b5f610d9385828601610d29565b9250506020610da485828601610d5c565b9150509250929050565b5f8115159050919050565b610dc281610dae565b82525050565b5f602082019050610ddb5f830184610db9565b92915050565b610dea81610d3d565b82525050565b5f602082019050610e035f830184610de1565b92915050565b5f80fd5b7f4e487b71000000000000000000000000000000000000000000000000000000005f52604160045260245ffd5b610e4382610c6a565b810181811067ffffffffffffffff82111715610e6257610e61610e0d565b5b80604052505050565b5f610e74610cd2565b9050610e808282610e3a565b919050565b5f67ffffffffffffffff821115610e9f57610e9e610e0d565b5b602082029050602081019050919050565b5f80fd5b5f610ec6610ec184610e85565b610e6b565b90508083825260208201905060208402830185811115610ee957610ee8610eb0565b5b835b81811015610f125780610efe8882610d29565b845260208401935050602081019050610eeb565b5050509392505050565b5f82601f830112610f3057610f2f610e09565b5b8135610f40848260208601610eb4565b91505092915050565b5f8060408385031215610f5f57610f5e610cdb565b5b5f83013567ffffffffffffffff811115610f7c57610f7b610cdf565b5b610f8885828601610f1c565b9250506020610f9985828601610d5c565b9150509250929050565b5f805f60608486031215610fba57610fb9610cdb565b5b5f610fc786828701610d29565b9350506020610fd886828701610d29565b9250506040610fe986828701610d5c565b9150509250925092565b5f60ff82169050919050565b61100881610ff3565b82525050565b5f6020820190506110215f830184610fff565b92915050565b5f6020828403121561103c5761103b610cdb565b5b5f61104984828501610d29565b91505092915050565b5f806040838503121561106857611067610cdb565b5b5f61107585828601610d29565b925050602061108685828601610d29565b9150509250929050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52602260045260245ffd5b5f60028204905060018216806110d457607f821691505b6020821081036110e7576110e6611090565b5b50919050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52603260045260245ffd5b61112381610d02565b82525050565b5f60208201905061113c5f83018461111a565b92915050565b5f6060820190506111555f83018661111a565b6111626020830185610de1565b61116f6040830184610de1565b949350505050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52601160045260245ffd5b5f6111ae82610d3d565b91506111b983610d3d565b92508282019050808211156111d1576111d0611177565b5b9291505056fea2646970667358221220f8a1e6bc68e107aa843c7fd11b2b5459b550ddc189d8bac169eda7ba084b5f5964736f6c63430008190033